]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/macros/AddTask_GammaConvFlow_PbPb2.C
added task for Photon Flow via Skalarproduct by Andrea Dubla
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvFlow_PbPb2.C
CommitLineData
3ccbcfa7 1class AliAnalysisDataContainer;
2class AliFlowTrackCuts;
3class AliFlowTrackSimpleCuts;
4class AliFlowEventCuts;
5class AliFlowEventSimpleCuts;
6class AliAnalysisDataContainer;
7
8
9
10//===================from here Flow pakage================
11void AddSPmethod(char *name, char *Qvector, int harmonic, AliAnalysisDataContainer *flowEvent, bool shrink = false, bool debug, TString uniqueID,/*Bool_t VZERO_SP = kFALSE,*/ AliFlowTrackSimpleCuts* POIfilter, int trainConfig)
12{
13 // add sp task and invm filter tasks
14 if(debug) (bEP) ? cout << " ****** Reveived request for EP task ****** " << endl : cout << " ******* Switching to SP task ******* " << endl;
15 TString fileName = Form("GammaConvFlow_%i.root",trainConfig);
16 // (bEP) ? fileName+=":EP_tpctof" : fileName+=":SP_tpctof";
17 // if(etagap) {
18 // fileName+="_SUBEVENTS";
19 // if(debug) cout << " --> Setting up subevent analysis <-- " << endl;
20 // }
21 if(debug) cout << " --> fileName " << fileName << endl;
22 TString myFolder = fileName;
23 if(debug) cout << " --> myFolder " << myFolder << endl;
24 TString myNameSP;
25 //(bEP) ? myNameSP = Form("%sEPv%d%s", name, harmonic, Qvector): myNameSP = Form("%sSPv%d%s", name, harmonic, Qvector);
26 myNameSP = Form("%sSPv%d%s", name, harmonic, Qvector);
27
28 if(debug) cout << " myNameSP " << myNameSP << endl;
29 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
30 AliAnalysisDataContainer *flowEventOut = mgr->CreateContainer(Form("Filter_%s",myNameSP.Data()),AliFlowEventSimple::Class(),AliAnalysisManager::kExchangeContainer);
31 AliAnalysisTaskFilterFE *tskFilter = new AliAnalysisTaskFilterFE(Form("TaskFilter_%s", myNameSP.Data()), NULL, POIfilter);
32 // tskFilter->SetSubeventEtaRange(minEtaA, maxEtaA, minEtaB, maxEtaB);
33 //if(VZERO_SP) tskFilter->SetSubeventEtaRange(-10, 0, 0, 10);
34 tskFilter->SetSubeventEtaRange(-10, -1, 1, 10);
35 mgr->AddTask(tskFilter);
36 mgr->ConnectInput(tskFilter, 0, flowEvent);
37 mgr->ConnectOutput(tskFilter, 1, flowEventOut);
38 AliAnalysisDataContainer *outSP = mgr->CreateContainer(myNameSP.Data(), TList::Class(), AliAnalysisManager::kOutputContainer, fileName);
39 AliAnalysisTaskScalarProduct *tskSP = new AliAnalysisTaskScalarProduct(Form("TaskScalarProduct_%s", myNameSP.Data()), kFALSE);
40 tskSP->SetApplyCorrectionForNUA(kTRUE);
41 tskSP->SetHarmonic(harmonic);
42 tskSP->SetTotalQvector(Qvector);
43 // if (bEP) tskSP->SetBehaveAsEP();
44 if (shrink) tskSP->SetBookOnlyBasicCCH(kTRUE);
45 mgr->AddTask(tskSP);
46 mgr->ConnectInput(tskSP, 0, flowEventOut);
47 mgr->ConnectOutput(tskSP, 1, outSP);
48}
49//_____________________________________________________________________________
50
51
52
53void AddTask_GammaConvFlow_PbPb2(
54 TString uniqueID = "",
55 Int_t harmonic=2,
56 Int_t trainConfig = 1, //change different set of cuts
57 //Bool_t isMC = kFALSE, //run MC
58 Int_t enableQAMesonTask = 0, //enable QA in AddTask_GammaConvFlow_PbPb2
59 Int_t enableQAPhotonTask = 0, // enable additional QA task
60 //TString fileNameInputForWeighting = "MCSpectraInput.root", // path to file for weigting input
61 Bool_t doWeighting = kFALSE, //enable Weighting
62 TString cutnumberAODBranch = "1000000060084000001500000",
63 Bool_t shrinkSP = kTRUE,
64 Bool_t debug = kFALSE
65 ) {
66
67 // ================= Load Librariers =================================
68 gSystem->Load("libCore.so");
69 gSystem->Load("libTree.so");
70 gSystem->Load("libGeom.so");
71 gSystem->Load("libVMC.so");
72 gSystem->Load("libPhysics.so");
73 gSystem->Load("libMinuit");
74 gSystem->Load("libSTEERBase");
75 gSystem->Load("libESD");
76 gSystem->Load("libAOD");
77 gSystem->Load("libANALYSIS");
78 gSystem->Load("libANALYSISalice");
79 gSystem->Load("libCDB.so");
80 gSystem->Load("libSTEER.so");
81 gSystem->Load("libSTEERBase.so");
82 gSystem->Load("libTENDER.so");
83 gSystem->Load("libTENDERSupplies.so");
84 gSystem->Load("libPWGflowBase.so");
85 gSystem->Load("libPWGflowTasks.so");
86 gSystem->Load("libPWGGAGammaConv.so");
87
88 Int_t isHeavyIon = 1;
89
90 // ================== GetAnalysisManager ===============================
91 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
92 if (!mgr) {
93 Error(Form("AddTask_GammaConvV1_%i",trainConfig), "No analysis manager found.");
94 return ;
95 }
96
97 // ================== GetInputEventHandler =============================
98 AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
99
100 //========= Add PID Reponse to ANALYSIS manager ====
101 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
102 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
103 AddTaskPIDResponse(isMC);
104 }
105
106 //========= Set Cutnumber for V0Reader ================================
107 TString cutnumberPhoton = "000084001001500000000";
108 TString cutnumberEvent = "1000000";
109 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
110 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
111 if( !(AliV0ReaderV1*)mgr->GetTask("V0ReaderV1") ){
112 AliV0ReaderV1 *fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
113
114 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
115 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
116 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
117
118 if (!mgr) {
119 Error("AddTask_V0ReaderV1", "No analysis manager found.");
120 return;
121 }
122
123 AliConvEventCuts *fEventCuts=NULL;
124 if(cutnumberEvent!=""){
125 fEventCuts= new AliConvEventCuts(cutnumberEvent.Data(),cutnumberEvent.Data());
126 fEventCuts->SetPreSelectionCutFlag(kTRUE);
127 if(fEventCuts->InitializeCutsFromCutString(cutnumberEvent.Data())){
128 fV0ReaderV1->SetEventCuts(fEventCuts);
129 fEventCuts->SetFillCutHistograms("",kTRUE);
130 }
131 }
132
133 // Set AnalysisCut Number
134 AliConversionPhotonCuts *fCuts=NULL;
135 if(cutnumberPhoton!=""){
136 fCuts= new AliConversionPhotonCuts(cutnumberPhoton.Data(),cutnumberPhoton.Data());
137 fCuts->SetPreSelectionCutFlag(kTRUE);
138 fCuts->SetIsHeavyIon(isHeavyIon);
139 if(fCuts->InitializeCutsFromCutString(cutnumberPhoton.Data())){
140 fV0ReaderV1->SetConversionCuts(fCuts);
141 fCuts->SetFillCutHistograms("",kTRUE);
142 }
143 }
144
145 if(inputHandler->IsA()==AliAODInputHandler::Class()){
146 // AOD mode
147 fV0ReaderV1->SetDeltaAODBranchName(Form("GammaConv_%s_gamma",cutnumberAODBranch.Data()));
148 }
149 fV0ReaderV1->Init();
150
151 AliLog::SetGlobalLogLevel(AliLog::kInfo);
152
153 //connect input V0Reader
154 mgr->AddTask(fV0ReaderV1);
155 mgr->ConnectInput(fV0ReaderV1,0,cinput);
156
157 }
158
159 //================================================
160 //========= Add task to the ANALYSIS manager =====
161 //================================================
162 AliAnalysisTaskGammaConvFlow *task=NULL;
163 task= new AliAnalysisTaskGammaConvFlow(Form("GammaConvV1_%i",trainConfig));
164 task->SetIsHeavyIon(isHeavyIon);
165 //task->SetIsMC(isMC);
166
167
168//=====================from here call/book the flow package stuff==============
169 //set RP cuts for flow package analysis
170 cutsRP = new AliFlowTrackCuts(Form("RFPcuts%s",uniqueID));
171 if(!cutsRP) {
172 if(debug) cout << " Fatal error: no RP cuts found, could be a library problem! " << endl;
173 return 0x0;
174 }
175 cutsRP = cutsRP->GetStandardVZEROOnlyTrackCuts(); // select vzero tracks
176 cutsRP->SetVZEROgainEqualizationPerRing(kFALSE);
177 cutsRP->SetApplyRecentering(kTRUE);
178 if(debug) cout << " --> VZERO RP's " << cutsRP << endl;
179
180 task->SetRPCuts(cutsRP);
181
182 AliFlowTrackSimpleCuts *POIfilterVZERO = new AliFlowTrackSimpleCuts();
183 POIfilterVZERO->SetEtaMin(-0.8);
184 POIfilterVZERO->SetEtaMax(0.8);
185 // POIfilterVZERO->SetMassMin(263731); POIfilterVZERO->SetMassMax(263733);
186
187
188 if(debug) cout << " === RECEIVED REQUEST FOR FLOW ANALYSIS === " << endl;
189 AliAnalysisDataContainer *flowEvent = mgr->CreateContainer(Form("FlowContainer_%s",uniqueID.Data()), AliFlowEventSimple::Class(), AliAnalysisManager::kExchangeContainer);
190 mgr->ConnectOutput(task, 2, flowEvent);
191 if(debug) cout << " --> Created IO containers " << flowEvent << endl;
192
193 AddSPmethod(Form("SPVZEROQa_in_%s", uniqueID.Data()), "Qa", harmonic, flowEvent, shrinkSP, debug, uniqueID, POIfilterVZERO, trainConfig);
194 if(debug) cout << " --> Hanging SP Qa task ... succes!" << endl;
195 AddSPmethod(Form("SPVZEROQb_in_%s", uniqueID.Data()), "Qb", harmonic, flowEvent, shrinkSP, debug, uniqueID, POIfilterVZERO, trainConfig);
196 if(debug) cout << " --> Hanging SP Qb task ... succes!"<< endl;
197//================================END flow stuff===========================================
198
199
200
201
202
203
204 // Cut Numbers to use in Analysis
205 Int_t numberOfCuts = 1;
206
207 TString *eventCutArray = new TString[numberOfCuts];
208 TString *photonCutArray = new TString[numberOfCuts];
209 TString *mesonCutArray = new TString[numberOfCuts];
210
211 if (trainConfig == 1){
212 eventCutArray[ 0] = "6010001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522045009000";
213 } else if (trainConfig == 2) {
214 eventCutArray[ 0] = "6120001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522045009000";
215 } else if (trainConfig == 3) {
216 eventCutArray[ 0] = "5010001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522045009000";
217 } else if (trainConfig == 4) {
218 eventCutArray[ 0] = "5020001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522045009000";
219 } else if (trainConfig == 5) {
220 eventCutArray[ 0] = "5120001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522045009000";
221 } else if (trainConfig == 6) {
222 eventCutArray[ 0] = "5240001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522045009000";
223 } else if (trainConfig == 7) {
224 eventCutArray[ 0] = "5460001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
225 } else if (trainConfig == 8) {
226 eventCutArray[ 0] = "5480001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
227 } else if (trainConfig == 9) {
228 eventCutArray[ 0] = "5450001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
229 } else if (trainConfig == 10) {
230 eventCutArray[ 0] = "5560001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
231 } else if (trainConfig == 11) {
232 eventCutArray[ 0] = "5680001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
233 } else if (trainConfig == 12) {
234 eventCutArray[ 0] = "5670001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
235 } else if (trainConfig == 13) {
236 eventCutArray[ 0] = "5780001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
237 } else if (trainConfig == 14) {
238 eventCutArray[ 0] = "4690001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
239 } else if (trainConfig == 15) {
240 eventCutArray[ 0] = "5890001"; photonCutArray[ 0] = "042092970023220000000"; mesonCutArray[ 0] = "01522065009000";
241 } else if (trainConfig == 16){
242 eventCutArray[ 0] = "6010001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
243 } else if (trainConfig == 17) {
244 eventCutArray[ 0] = "6120001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
245 } else if (trainConfig == 18) {
246 eventCutArray[ 0] = "5010001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
247 } else if (trainConfig == 19) {
248 eventCutArray[ 0] = "5020001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
249 } else if (trainConfig == 20) {
250 eventCutArray[ 0] = "5120001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
251 } else if (trainConfig == 21) {
252 eventCutArray[ 0] = "5240001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
253 } else if (trainConfig == 22) {
254 eventCutArray[ 0] = "5460001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
255 } else if (trainConfig == 23) {
256 eventCutArray[ 0] = "5480001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
257 } else if (trainConfig == 24) {
258 eventCutArray[ 0] = "5450001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
259 } else if (trainConfig == 25) {
260 eventCutArray[ 0] = "5560001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
261 } else if (trainConfig == 26) {
262 eventCutArray[ 0] = "5680001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
263 } else if (trainConfig == 27) {
264 eventCutArray[ 0] = "5670001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
265 } else if (trainConfig == 28) {
266 eventCutArray[ 0] = "5780001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
267 } else if (trainConfig == 29) {
268 eventCutArray[ 0] = "4690001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
269 } else if (trainConfig == 30) {
270 eventCutArray[ 0] = "5890001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
271 } else if (trainConfig == 31) {
272 eventCutArray[ 0] = "5080001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
273 } else if (trainConfig == 32) {
274 eventCutArray[ 0] = "5250001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
275 } else if (trainConfig == 33) {
276 eventCutArray[ 0] = "5350001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
277 } else if (trainConfig == 34) {
278 eventCutArray[ 0] = "5450001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
279 } else if (trainConfig == 35) {
280 eventCutArray[ 0] = "5340001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
281 } else if (trainConfig == 36) {
282 eventCutArray[ 0] = "5230001"; photonCutArray[ 0] = "002092970028250400000"; mesonCutArray[ 0] = "01525065000000";
283 } else {
284 Error(Form("GammaConvV1_%i",trainConfig), "wrong trainConfig variable no cuts have been specified for the configuration");
285 return;
286 }
287
288 TList *EventCutList = new TList();
289 TList *ConvCutList = new TList();
290 TList *MesonCutList = new TList();
291
292 TList *HeaderList = new TList();
293 TObjString *Header1 = new TObjString("BOX");
294 HeaderList->Add(Header1);
295 // TObjString *Header3 = new TObjString("eta_2");
296 // HeaderList->Add(Header3);
297
298 EventCutList->SetOwner(kTRUE);
299 AliConvEventCuts **analysisEventCuts = new AliConvEventCuts*[numberOfCuts];
300 ConvCutList->SetOwner(kTRUE);
301 AliConversionPhotonCuts **analysisCuts = new AliConversionPhotonCuts*[numberOfCuts];
302 MesonCutList->SetOwner(kTRUE);
303 AliConversionMesonCuts **analysisMesonCuts = new AliConversionMesonCuts*[numberOfCuts];
304
305 for(Int_t i = 0; i<numberOfCuts; i++){
306 analysisEventCuts[i] = new AliConvEventCuts();
307 analysisEventCuts[i]->InitializeCutsFromCutString(eventCutArray[i].Data());
308 EventCutList->Add(analysisEventCuts[i]);
309 analysisEventCuts[i]->SetFillCutHistograms("",kFALSE);
310
311 analysisCuts[i] = new AliConversionPhotonCuts();
312 analysisCuts[i]->InitializeCutsFromCutString(photonCutArray[i].Data());
313 ConvCutList->Add(analysisCuts[i]);
314 analysisCuts[i]->SetFillCutHistograms("",kFALSE);
315
316 analysisMesonCuts[i] = new AliConversionMesonCuts();
317 analysisMesonCuts[i]->InitializeCutsFromCutString(mesonCutArray[i].Data());
318 MesonCutList->Add(analysisMesonCuts[i]);
319 analysisMesonCuts[i]->SetFillCutHistograms("");
320
321 analysisEventCuts[i]->SetAcceptedHeader(HeaderList);
322 }
323
324 task->SetEventCutList(numberOfCuts,EventCutList);
325 task->SetConversionCutList(numberOfCuts,ConvCutList);
326// task->SetMesonCutList(numberOfCuts,MesonCutList);
327// task->SetMoveParticleAccordingToVertex(kTRUE);
328 task->SetDoMesonAnalysis(kFALSE);
329 task->SetDoMesonQA(enableQAMesonTask); //Attention new switch for Pi0 QA
330 task->SetDoPhotonQA(enableQAPhotonTask); //Attention new switch small for Photon QA
331
332 //connect containers
333 AliAnalysisDataContainer *coutput =
334 mgr->CreateContainer(Form("GammaConvV1_%i",trainConfig), TList::Class(),
335 AliAnalysisManager::kOutputContainer,Form("GammaConvFlow_%i.root",trainConfig));
336
337 mgr->AddTask(task);
338 mgr->ConnectInput(task,0,cinput);
339 mgr->ConnectOutput(task,1,coutput);
340
341 return;
342
343}
344
345
346