]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/macros/AddTask_GammaConvNeutralMesonPiPlPiMiPiZero_pPb.C
technical fix: removed extra semicolon
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvNeutralMesonPiPlPiMiPiZero_pPb.C
CommitLineData
cb287740 1void AddTask_GammaConvNeutralMesonPiPlPiMiPiZero_pPb(
2 Int_t trainConfig = 1,
3 Bool_t isMC = kFALSE, //run MC
4 Bool_t enableQAMesonTask = kTRUE, //enable QA in AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero
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"
9 ) {
10
11 // ================= Load Librariers =================================
12 gSystem->Load("libCore.so");
13 gSystem->Load("libTree.so");
14 gSystem->Load("libGeom.so");
15 gSystem->Load("libVMC.so");
16 gSystem->Load("libPhysics.so");
17 gSystem->Load("libMinuit");
18 gSystem->Load("libSTEERBase");
19 gSystem->Load("libESD");
20 gSystem->Load("libAOD");
21 gSystem->Load("libANALYSIS");
22 gSystem->Load("libANALYSISalice");
23 gSystem->Load("libPWGGAGammaConv.so");
24 gSystem->Load("libCDB.so");
25 gSystem->Load("libSTEER.so");
26 gSystem->Load("libSTEERBase.so");
27 gSystem->Load("libTENDER.so");
28 gSystem->Load("libTENDERSupplies.so");
29
30 Int_t isHeavyIon = 2;
31
32 // ================== GetAnalysisManager ===============================
33 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
34 if (!mgr) {
35 Error(Form("AddTask_GammaConvNeutralMesonPiPlPiMiPiZero_pPb_%i",trainConfig), "No analysis manager found.");
36 return ;
37 }
38
39 // ================== GetInputEventHandler =============================
40 AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
41
42 //========= Add PID Reponse to ANALYSIS manager ====
43 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
44 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
45 AddTaskPIDResponse(isMC);
46 }
47
48 //========= Set Cutnumber for V0Reader ================================
49 TString cutnumberPhoton = "060084001001500000000";
50 TString cutnumberEvent = "8000000";
51 TString PionCuts = "000000200"; //Electron Cuts
52
53 Bool_t doEtaShift = kFALSE;
54
55 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
56
57 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
58 if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
59 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
60
61 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
62 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
63 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
64
65 if (!mgr) {
66 Error("AddTask_V0ReaderV1", "No analysis manager found.");
67 return;
68 }
69
70 AliConvEventCuts *fEventCuts=NULL;
71 if(cutnumberEvent!=""){
72 fEventCuts= new AliConvEventCuts(cutnumberEvent.Data(),cutnumberEvent.Data());
73 fEventCuts->SetPreSelectionCutFlag(kTRUE);
74 if(fEventCuts->InitializeCutsFromCutString(cutnumberEvent.Data())){
75 fEventCuts->DoEtaShift(doEtaShift);
76 fV0ReaderV1->SetEventCuts(fEventCuts);
77 fEventCuts->SetFillCutHistograms("",kTRUE);
78 }
79 }
80
81 // Set AnalysisCut Number
82 AliConversionPhotonCuts *fCuts=NULL;
83 if(cutnumberPhoton!=""){
84 fCuts= new AliConversionPhotonCuts(cutnumberPhoton.Data(),cutnumberPhoton.Data());
85 fCuts->SetPreSelectionCutFlag(kTRUE);
86 fCuts->SetIsHeavyIon(isHeavyIon);
87 if(fCuts->InitializeCutsFromCutString(cutnumberPhoton.Data())){
88 fV0ReaderV1->SetConversionCuts(fCuts);
89 fCuts->SetFillCutHistograms("",kTRUE);
90 }
91 }
92
93 if(inputHandler->IsA()==AliAODInputHandler::Class()){
94 // AOD mode
95 fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
96 }
97 fV0ReaderV1->Init();
98
99 AliLog::SetGlobalLogLevel(AliLog::kInfo);
100
101 //connect input V0Reader
102 mgr->AddTask(fV0ReaderV1);
103 mgr->ConnectInput(fV0ReaderV1,0,cinput);
104 }
105
106 //================================================
107 //========= Add Electron Selector ================
108
109
110 if( !(AliPrimaryPionSelector*)mgr->GetTask("PionSelector") ){
111
112 AliPrimaryPionSelector *fPionSelector = new AliPrimaryPionSelector("PionSelector");
113 // Set AnalysisCut Number
114
115 AliPrimaryPionCuts *fPionCuts=0;
116 if( PionCuts!=""){
117 fPionCuts= new AliPrimaryPionCuts(PionCuts.Data(),PionCuts.Data());
118 if(fPionCuts->InitializeCutsFromCutString(PionCuts.Data())){
119 fPionSelector->SetPrimaryPionCuts(fPionCuts);
120 fPionCuts->SetFillCutHistograms("",kTRUE);
121
122 }
123 }
124
125 fPionSelector->Init();
126 mgr->AddTask(fPionSelector);
127
128 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
129
130 //connect input V0Reader
131 mgr->ConnectInput (fPionSelector,0,cinput1);
132
133 }
134
135
136
137 AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero *task=NULL;
138
139 task= new AliAnalysisTaskNeutralMesonToPiPlPiMiPiZero(Form("GammaConvNeutralMesonPiPlPiMiPiZero_%i",trainConfig));
140
141 task->SetIsHeavyIon(2);
142 task->SetIsMC(isMC);
143
144 // Cut Numbers to use in Analysis
145 Int_t numberOfCuts = 1;
146
147 TString *eventCutArray = new TString[numberOfCuts];
148 TString *ConvCutarray = new TString[numberOfCuts];
149 TString *PionCutarray = new TString[numberOfCuts];
150 TString *NeutralPionCutarray = new TString[numberOfCuts];
151 TString *MesonCutarray = new TString[numberOfCuts];
152
153 Bool_t doEtaShiftIndCuts = kFALSE;
154 TString stringShift = "";
155
156 // Shifting in pPb direction
157
158 doEtaShiftIndCuts = kTRUE;
159 stringShift = "pPb";
160
161 if( trainConfig == 1 ) {
162 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000400"; NeutralPionCutarray[0] = "01035035000000"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
163 } else if( trainConfig == 1 ) {
164 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000403"; NeutralPionCutarray[0] = "01035035000000"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
165 } else if( trainConfig == 1 ) {
166 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000404"; NeutralPionCutarray[0] = "01035035000000"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
167 } else if( trainConfig == 1 ) {
168 eventCutArray[ 0] = "8000011"; ConvCutarray[0] = "002091170008260400000"; PionCutarray[0] = "000000405"; NeutralPionCutarray[0] = "01035035000000"; MesonCutarray[0] = "01035035000000"; //standard cut Pi0 PbPb 00-100
169 }
170
171 TList *EventCutList = new TList();
172 TList *ConvCutList = new TList();
173 TList *NeutralPionCutList = new TList();
174 TList *MesonCutList = new TList();
175 TList *PionCutList = new TList();
176
177 TList *HeaderList = new TList();
178 TObjString *Header1 = new TObjString("pi0_1");
179 HeaderList->Add(Header1);
180 TObjString *Header3 = new TObjString("eta_2");
181 HeaderList->Add(Header3);
182
183 EventCutList->SetOwner(kTRUE);
184 AliConvEventCuts **analysisEventCuts = new AliConvEventCuts*[numberOfCuts];
185 ConvCutList->SetOwner(kTRUE);
186 AliConversionPhotonCuts **analysisCuts = new AliConversionPhotonCuts*[numberOfCuts];
187 NeutralPionCutList->SetOwner(kTRUE);
188 AliConversionMesonCuts **analysisNeutralPionCuts = new AliConversionMesonCuts*[numberOfCuts];
189 MesonCutList->SetOwner(kTRUE);
190 AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
191 PionCutList->SetOwner(kTRUE);
192 AliPrimaryPionCuts **analysisPionCuts = new AliPrimaryPionCuts*[numberOfCuts];
193
194 for(Int_t i = 0; i<numberOfCuts; i++){
195 analysisEventCuts[i] = new AliConvEventCuts();
196 analysisEventCuts[i]->InitializeCutsFromCutString(eventCutArray[i].Data());
197 EventCutList->Add(analysisEventCuts[i]);
198 analysisEventCuts[i]->SetFillCutHistograms("",kFALSE);
199
200 analysisCuts[i] = new AliConversionPhotonCuts();
201 if( ! analysisCuts[i]->InitializeCutsFromCutString(ConvCutarray[i].Data()) ) {
202 cout<<"ERROR: analysisCuts [" <<i<<"]"<<endl;
203 return 0;
204 } else {
205 ConvCutList->Add(analysisCuts[i]);
206 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
207
208 }
209
210 analysisNeutralPionCuts[i] = new AliConversionMesonCuts();
211 if( ! analysisNeutralPionCuts[i]->InitializeCutsFromCutString(NeutralPionCutarray[i].Data()) ) {
212 cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
213 return 0;
214 } else {
215 NeutralPionCutList->Add(analysisNeutralPionCuts[i]);
216 analysisNeutralPionCuts[i]->SetFillCutHistograms("");
217 }
218
219 analysisMesonCuts[i] = new AliConversionMesonCuts();
220 if( ! analysisMesonCuts[i]->InitializeCutsFromCutString(MesonCutarray[i].Data()) ) {
221 cout<<"ERROR: analysisMesonCuts [ " <<i<<" ] "<<endl;
222 return 0;
223 } else {
224 MesonCutList->Add(analysisMesonCuts[i]);
225 analysisMesonCuts[i]->SetFillCutHistograms("");
226 }
227 analysisEventCuts[i]->SetAcceptedHeader(HeaderList);
228
229 TString cutName( Form("%s_%s_%s_%s_%s",eventCutArray[i].Data(), ConvCutarray[i].Data(),PionCutarray[i].Data(),NeutralPionCutarray[i].Data(), MesonCutarray[i].Data() ) );
230 analysisPionCuts[i] = new AliPrimaryPionCuts();
231 if( !analysisPionCuts[i]->InitializeCutsFromCutString(PionCutarray[i].Data())) {
232 cout<< "ERROR: analysisPionCuts [ " <<i<<" ] "<<endl;
233 return 0;
234 } else {
235 PionCutList->Add(analysisPionCuts[i]);
236 analysisPionCuts[i]->SetFillCutHistograms("",kFALSE,cutName);
237 }
238 }
239
240 task->SetEventCutList(numberOfCuts,EventCutList);
241 task->SetConversionCutList(numberOfCuts,ConvCutList);
242 task->SetNeutralPionCutList(NeutralPionCutList);
243 task->SetMesonCutList(MesonCutList);
244 task->SetPionCutList(PionCutList);
245
246 task->SetMoveParticleAccordingToVertex(kTRUE);
247
248 if(enableQAMesonTask) task->SetDoMesonQA(kTRUE);
249
250 //connect containers
251 AliAnalysisDataContainer *coutput =
252 mgr->CreateContainer(Form("GammaConvNeutralMesonPiPlPiMiPiZero_%i",trainConfig), TList::Class(),
253 AliAnalysisManager::kOutputContainer,Form("GammaConvNeutralMesonPiPlPiMiPiZero_%i.root",trainConfig));
254
255 mgr->AddTask(task);
256 mgr->ConnectInput(task,0,cinput);
257 mgr->ConnectOutput(task,1,coutput);
258
259 return;
260
261}