1 void AddTask_GammaConvEtaPiPlPiMiGamma_pPb(
3 Bool_t isMC = kFALSE, //run MC
4 Bool_t enableQAMesonTask = kTRUE, //enable QA in AliAnalysisTaskEtaToPiPlPiMiGamma
5 TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
6 Bool_t doWeighting = kFALSE, //enable Weighting
7 TString generatorName = "HIJING",
8 TString cutnumberAODBranch = "0000000060084001001500000"
12 // ================= Load Librariers =================================
13 gSystem->Load("libCore.so");
14 gSystem->Load("libTree.so");
15 gSystem->Load("libGeom.so");
16 gSystem->Load("libVMC.so");
17 gSystem->Load("libPhysics.so");
18 gSystem->Load("libMinuit");
19 gSystem->Load("libSTEERBase");
20 gSystem->Load("libESD");
21 gSystem->Load("libAOD");
22 gSystem->Load("libANALYSIS");
23 gSystem->Load("libANALYSISalice");
24 gSystem->Load("libPWGGAGammaConv.so");
25 gSystem->Load("libCDB.so");
26 gSystem->Load("libSTEER.so");
27 gSystem->Load("libSTEERBase.so");
28 gSystem->Load("libTENDER.so");
29 gSystem->Load("libTENDERSupplies.so");
31 // ================== GetAnalysisManager ===============================
32 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
34 Error(Form("AddTask_GammaConvEtaPiPlPiMiGamma_pPb_%i",trainConfig), "No analysis manager found.");
38 // ================== GetInputEventHandler =============================
39 AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
41 //========= Add PID Reponse to ANALYSIS manager ====
42 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
43 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
44 AddTaskPIDResponse(isMC);
47 //========= Set Cutnumber for V0Reader ================================
48 TString ConvCutnumber = "8000000060081001001500000000"; //Online V0 finder
49 TString PionCuts = "000000200"; //Electron Cuts
51 Bool_t doEtaShift = kFALSE;
53 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
55 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
56 if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
57 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
59 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
60 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
61 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
64 Error("AddTask_V0ReaderV1", "No analysis manager found.");
68 // Set AnalysisCut Number
69 AliConversionCuts *fCuts=NULL;
70 if( ConvCutnumber !=""){
71 fCuts= new AliConversionCuts(ConvCutnumber.Data(),ConvCutnumber.Data());
72 fCuts->SetPreSelectionCutFlag(kTRUE);
73 if(fCuts->InitializeCutsFromCutString(ConvCutnumber.Data())){
74 fCuts->DoEtaShift(doEtaShift);
75 fV0ReaderV1->SetConversionCuts(fCuts);
76 fCuts->SetFillCutHistograms("",kTRUE);
79 if(inputHandler->IsA()==AliAODInputHandler::Class()){
81 fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
85 AliLog::SetGlobalLogLevel(AliLog::kInfo);
87 //connect input V0Reader
88 mgr->AddTask(fV0ReaderV1);
89 mgr->ConnectInput(fV0ReaderV1,0,cinput);
92 //================================================
93 //========= Add Electron Selector ================
96 if( !(AliPrimaryPionSelector*)mgr->GetTask("PionSelector") ){
98 AliPrimaryPionSelector *fPionSelector = new AliPrimaryPionSelector("PionSelector");
99 // Set AnalysisCut Number
101 AliPrimaryPionCuts *fPionCuts=0;
103 fPionCuts= new AliPrimaryPionCuts(PionCuts.Data(),PionCuts.Data());
104 if(fPionCuts->InitializeCutsFromCutString(PionCuts.Data())){
105 fPionSelector->SetPrimaryPionCuts(fPionCuts);
106 fPionCuts->SetFillCutHistograms("",kTRUE);
111 fPionSelector->Init();
112 mgr->AddTask(fPionSelector);
114 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
116 //connect input V0Reader
117 mgr->ConnectInput (fPionSelector,0,cinput1);
123 AliAnalysisTaskEtaToPiPlPiMiGamma *task=NULL;
125 task= new AliAnalysisTaskEtaToPiPlPiMiGamma(Form("GammaConvEtaPiPlPiMiGamma_%i",trainConfig));
127 task->SetIsHeavyIon(2);
130 // Cut Numbers to use in Analysis
131 Int_t numberOfCuts = 1;
132 TString *ConvCutarray = new TString[numberOfCuts];
133 TString *PionCutarray = new TString[numberOfCuts];
135 TString *MesonCutarray = new TString[numberOfCuts];
137 Bool_t doEtaShiftIndCuts = kFALSE;
138 TString stringShift = "";
140 // Shifting in pPb direction
142 doEtaShiftIndCuts = kTRUE;
145 if( trainConfig == 1 ) {
146 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000400"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
147 } else if( trainConfig == 1 ) {
148 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000403"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
149 } else if( trainConfig == 1 ) {
150 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000404"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
151 } else if( trainConfig == 1 ) {
152 ConvCutarray[0] = "8000011002091170008260400000"; PionCutarray[0] = "000000405"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
155 TList *ConvCutList = new TList();
156 TList *MesonCutList = new TList();
157 TList *PionCutList = new TList();
159 TList *HeaderList = new TList();
160 TObjString *Header1 = new TObjString("pi0_1");
161 HeaderList->Add(Header1);
162 TObjString *Header3 = new TObjString("eta_2");
163 HeaderList->Add(Header3);
165 ConvCutList->SetOwner(kTRUE);
166 AliConversionCuts **analysisCuts = new AliConversionCuts*[numberOfCuts];
167 MesonCutList->SetOwner(kTRUE);
168 AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
169 PionCutList->SetOwner(kTRUE);
170 AliPrimaryPionCuts **analysisPionCuts = new AliPrimaryPionCuts*[numberOfCuts];
172 for(Int_t i = 0; i<numberOfCuts; i++){
174 analysisCuts[i] = new AliConversionCuts();
175 if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
176 cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
179 ConvCutList->Add(analysisCuts[i]);
180 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
181 analysisCuts[i]->SetAcceptedHeader(HeaderList);
184 analysisMesonCuts[i] = new AliConversionMesonCuts();
186 if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
187 cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
190 MesonCutList->Add(analysisMesonCuts[i]);
191 analysisMesonCuts[i]->SetFillCutHistograms("");
195 TString cutName( Form("%s_%s_%s",ConvCutarray[i].Data(),PionCutarray[i].Data(),MesonCutarray[i].Data() ) );
196 analysisPionCuts[i] = new AliPrimaryPionCuts();
197 if( !analysisPionCuts[i]->InitializeCutsFromCutString(PionCutarray[i].Data())) {
198 cout<< "ERROR: analysisPionCuts [ " <<i<<" ] "<<endl;
201 PionCutList->Add(analysisPionCuts[i]);
202 analysisPionCuts[i]->SetFillCutHistograms("",kFALSE,cutName);
209 task->SetConversionCutList(numberOfCuts,ConvCutList);
210 task->SetMesonCutList(MesonCutList);
211 task->SetPionCutList(PionCutList);
213 task->SetMoveParticleAccordingToVertex(kTRUE);
215 if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
218 AliAnalysisDataContainer *coutput =
219 mgr->CreateContainer(Form("GammaConvEtaPiPlPiMiGamma_%i",trainConfig), TList::Class(),
220 AliAnalysisManager::kOutputContainer,Form("GammaConvEtaPiPlPiMiGamma_%i.root",trainConfig));
223 mgr->ConnectInput(task,0,cinput);
224 mgr->ConnectOutput(task,1,coutput);