]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/GammaConv/macros/AddTask_GammaConvdPhi_pp.C
bugfixes + extended track matching histograms
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / macros / AddTask_GammaConvdPhi_pp.C
CommitLineData
ae4f2cfb 1AliAnalysisTask *AddTask_GammaConvdPhi_pp(TString v0Cut = "0000011002093663003800000000",
99d49b30 2 TString pionCut = "01631031009000",
3 Bool_t pbpb = kFALSE) {
4
344100c4 5 ////////////////////CURRENTLY NOT WORKING ///////////////////////////////
6
99d49b30 7 // standard with task
8 printf("========================================================================================\n");
9 printf("dPhiAnalysis: Initialising AliAnalysisTaskdPhi\n");
10 printf("========================================================================================\n");
11
12 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
13 if (!mgr) {
14 Error("AddTask_slindal_dPhi", "No analysis manager found.");
15 return 0;
16 }
17
18 AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();
19 Bool_t isAOD=man->GetInputEventHandler()->IsA()==AliAODInputHandler::Class();
20
21 AliAnalysisTaskdPhi *task = new AliAnalysisTaskdPhi((TString("slindalTask_dPhi")+"_" + v0Cut));
22
23 ///Axes for histrograms
24 Double_t cptbins[9] = {0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 10};
25 task->GetAxiscPt().Set(8, cptbins);
26
27 Double_t tptbins[3] = {3.0, 5.0, 10.0};
28 task->GetAxistPt().Set(2, tptbins);
29
30 if(pbpb) {
31 Double_t centBins[6] = {0, 5, 10, 30, 50, 60, 90};
32 task->GetAxisCent().Set(5, centBins);
33 } else {
34 Double_t centBins[2] = {-9999, 9999};
35 task->GetAxisCent().Set(1, centBins);
36 }
37
38 Double_t zbins[6] = { -10, -5, -1.5, 1.5, 5, 10};
39 task->GetAxisZ().Set(5, zbins);
40
41 Double_t mbins[17] = {0.07, 0.09, 0.1, 0.11, 0.12, 0.125, 0.1275, 0.13, 0.14, 0.1425, 0.145, 0.15, 0.16, 0.18, 0.2, 0.24, 0.26};
42 task->GetAxisPiMass().Set(16, mbins);
43
44
45 AliESDtrackCuts * trackCuts = new AliESDtrackCuts();
46 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
47 trackCuts->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
48 trackCuts->SetMaxChi2PerClusterTPC(4);
49 trackCuts->SetRequireTPCStandAlone(kTRUE);
50 trackCuts->SetAcceptKinkDaughters(kFALSE);
51 trackCuts->SetRequireTPCRefit(kTRUE);
52 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
53
54 trackCuts->SetMaxDCAToVertexXY(2.4);
55 trackCuts->SetMaxDCAToVertexZ(3.2);
56 trackCuts->SetDCAToVertex2D(kTRUE);
57
58 trackCuts->SetMaxChi2PerClusterITS(36);
59 trackCuts->SetMaxChi2TPCConstrainedGlobal(36);
60
61 trackCuts->SetRequireSigmaToVertex(kFALSE);
62
63 trackCuts->SetEtaRange(-0.9, 0.9);
64 trackCuts->SetPtRange(cptbins[0], 1000000.0);
65
66 trackCuts->SetRequireITSRefit(kFALSE);
67
68 AliConversionTrackCuts* tc = new AliConversionTrackCuts();
69 tc->SetEsdTrackCuts(trackCuts);
70 task->SetTrackFilter(tc);
71
72
73 ///open side nclusters graph
74 AliESDtrackCuts * trackCuts2 = new AliESDtrackCuts();
75 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","65.+30./20.*x");
76 trackCuts2->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
77 trackCuts2->SetMaxChi2PerClusterTPC(4);
78 trackCuts2->SetRequireTPCStandAlone(kTRUE);
79 trackCuts2->SetAcceptKinkDaughters(kFALSE);
80 trackCuts2->SetRequireTPCRefit(kTRUE);
81 trackCuts2->SetMaxFractionSharedTPCClusters(0.4);
82
83 trackCuts2->SetMaxDCAToVertexXY(2.4);
84 trackCuts2->SetMaxDCAToVertexZ(3.2);
85 trackCuts2->SetDCAToVertex2D(kTRUE);
86
87 trackCuts2->SetMaxChi2PerClusterITS(36);
88 trackCuts2->SetMaxChi2TPCConstrainedGlobal(36);
89
90 trackCuts2->SetRequireSigmaToVertex(kFALSE);
91
92 trackCuts2->SetEtaRange(-0.9, 0.9);
93 trackCuts2->SetPtRange(cptbins[0], 1000000.0);
94
95 trackCuts2->SetRequireITSRefit(kFALSE);
96 //task->AddTrackFilter(trackCuts2, kTRUE);
97
98 AliConversionTrackCuts tc2 = new AliConversionTrackCuts();
99 tc2->SetEsdTrackCuts(trackCuts2);
100 task->AddTrackFilter(tc2, kTRUE);
101
102
103 ///Tight side nclusters graphs
104 AliESDtrackCuts * trackCuts3 = new AliESDtrackCuts();
105 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","75.+30./20.*x");
106 trackCuts3->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
107 trackCuts3->SetMaxChi2PerClusterTPC(4);
108 trackCuts3->SetRequireTPCStandAlone(kTRUE);
109 trackCuts3->SetAcceptKinkDaughters(kFALSE);
110 trackCuts3->SetRequireTPCRefit(kTRUE);
111 trackCuts3->SetMaxFractionSharedTPCClusters(0.4);
112
113 trackCuts3->SetMaxDCAToVertexXY(2.4);
114 trackCuts3->SetMaxDCAToVertexZ(3.2);
115 trackCuts3->SetDCAToVertex2D(kTRUE);
116
117 trackCuts3->SetMaxChi2PerClusterITS(36);
118 trackCuts3->SetMaxChi2TPCConstrainedGlobal(36);
119
120 trackCuts3->SetRequireSigmaToVertex(kFALSE);
121
122 trackCuts3->SetEtaRange(-0.9, 0.9);
123 trackCuts3->SetPtRange(cptbins[0], 1000000.0);
124
125 trackCuts3->SetRequireITSRefit(kFALSE);
126 //task->AddTrackFilter(trackCuts3, kFALSE);
127
128 AliConversionTrackCuts tc3 = new AliConversionTrackCuts();
129 tc3->SetEsdTrackCuts(trackCuts3);
130 task->AddTrackFilter(tc3, kFALSE);
131
132
133
134 ////Tight xyz track cuts
135 AliESDtrackCuts * trackCuts4 = new AliESDtrackCuts();
136 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
137 trackCuts4->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
138 trackCuts4->SetMaxChi2PerClusterTPC(4);
139 trackCuts4->SetRequireTPCStandAlone(kTRUE);
140 trackCuts4->SetAcceptKinkDaughters(kFALSE);
141 trackCuts4->SetRequireTPCRefit(kTRUE);
142 trackCuts4->SetMaxFractionSharedTPCClusters(0.4);
143
144 trackCuts4->SetMaxDCAToVertexXY(2.2);
145 trackCuts4->SetMaxDCAToVertexZ(3.0);
146 trackCuts4->SetDCAToVertex2D(kTRUE);
147
148 trackCuts4->SetMaxChi2PerClusterITS(36);
149 trackCuts4->SetMaxChi2TPCConstrainedGlobal(36);
150
151 trackCuts4->SetRequireSigmaToVertex(kFALSE);
152
153 trackCuts4->SetEtaRange(-0.9, 0.9);
154 trackCuts4->SetPtRange(cptbins[0], 1000000.0);
155
156 trackCuts4->SetRequireITSRefit(kFALSE);
157 //task->AddTrackFilter(trackCuts4, kFALSE);
158
159 AliConversionTrackCuts tc4 = new AliConversionTrackCuts();
160 tc4->SetEsdTrackCuts(trackCuts4);
161 task->AddTrackFilter(tc4, kFALSE);
162
163
164 ////lose xyz track cuts
165 AliESDtrackCuts * trackCuts5 = new AliESDtrackCuts();
166 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
167 trackCuts5->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
168 trackCuts5->SetMaxChi2PerClusterTPC(4);
169 trackCuts5->SetRequireTPCStandAlone(kTRUE);
170 trackCuts5->SetAcceptKinkDaughters(kFALSE);
171 trackCuts5->SetRequireTPCRefit(kTRUE);
172 trackCuts5->SetMaxFractionSharedTPCClusters(0.4);
173
174 trackCuts5->SetMaxDCAToVertexXY(2.6);
175 trackCuts5->SetMaxDCAToVertexZ(3.6);
176 trackCuts5->SetDCAToVertex2D(kTRUE);
177
178 trackCuts5->SetMaxChi2PerClusterITS(36);
179 trackCuts5->SetMaxChi2TPCConstrainedGlobal(36);
180
181 trackCuts5->SetRequireSigmaToVertex(kFALSE);
182
183 trackCuts5->SetEtaRange(-0.9, 0.9);
184 trackCuts5->SetPtRange(cptbins[0], 1000000.0);
185
186 trackCuts5->SetRequireITSRefit(kFALSE);
187 //task->AddTrackFilter(trackCuts5);
188
189 AliConversionTrackCuts tc5 = new AliConversionTrackCuts();
190 tc5->SetEsdTrackCuts(trackCuts5);
191 task->AddTrackFilter(tc5, kTRUE);
192
193
194 ///open side shared tpt clusters
195 AliESDtrackCuts * trackCuts6 = new AliESDtrackCuts();
196 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
197 trackCuts6->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
198 trackCuts6->SetMaxChi2PerClusterTPC(4);
199 trackCuts6->SetRequireTPCStandAlone(kTRUE);
200 trackCuts6->SetAcceptKinkDaughters(kFALSE);
201 trackCuts6->SetRequireTPCRefit(kTRUE);
202 trackCuts6->SetMaxFractionSharedTPCClusters(0.44);
203
204 trackCuts6->SetMaxDCAToVertexXY(2.4);
205 trackCuts6->SetMaxDCAToVertexZ(3.2);
206 trackCuts6->SetDCAToVertex2D(kTRUE);
207
208 trackCuts6->SetMaxChi2PerClusterITS(36);
209 trackCuts6->SetMaxChi2TPCConstrainedGlobal(36);
210
211 trackCuts6->SetRequireSigmaToVertex(kFALSE);
212
213 trackCuts6->SetEtaRange(-0.9, 0.9);
214 trackCuts6->SetPtRange(cptbins[0], 1000000.0);
215
216 trackCuts6->SetRequireITSRefit(kFALSE);
217 //task->AddTrackFilter(trackCuts6, kTRUE);
218
219 AliConversionTrackCuts tc6 = new AliConversionTrackCuts();
220 tc6->SetEsdTrackCuts(trackCuts6);
221 task->AddTrackFilter(tc6, kTRUE);
222
223
224 ///tight side shared tpt clusters
225 AliESDtrackCuts * trackCuts7 = new AliESDtrackCuts();
226 TFormula *f1NClustersTPCLinearPtDep = new TFormula("f1NClustersTPCLinearPtDep","70.+30./20.*x");
227 trackCuts7->SetMinNClustersTPCPtDep(f1NClustersTPCLinearPtDep, 100);
228 trackCuts7->SetMaxChi2PerClusterTPC(4);
229 trackCuts7->SetRequireTPCStandAlone(kTRUE);
230 trackCuts7->SetAcceptKinkDaughters(kFALSE);
231 trackCuts7->SetRequireTPCRefit(kTRUE);
232 trackCuts7->SetMaxFractionSharedTPCClusters(0.36);
233
234 trackCuts7->SetMaxDCAToVertexXY(2.4);
235 trackCuts7->SetMaxDCAToVertexZ(3.2);
236 trackCuts7->SetDCAToVertex2D(kTRUE);
237
238 trackCuts7->SetMaxChi2PerClusterITS(36);
239 trackCuts7->SetMaxChi2TPCConstrainedGlobal(36);
240
241 trackCuts7->SetRequireSigmaToVertex(kFALSE);
242
243 trackCuts7->SetEtaRange(-0.9, 0.9);
244 trackCuts7->SetPtRange(cptbins[0], 1000000.0);
245
246 trackCuts7->SetRequireITSRefit(kFALSE);
247 //task->AddTrackFilter(trackCuts7, kFALSE);
248
249 AliConversionTrackCuts tc7 = new AliConversionTrackCuts();
250 tc7->SetEsdTrackCuts(trackCuts7);
251 task->AddTrackFilter(tc7, kFALSE);
252
253
254 ///Pion cuts
255 AliConversionMesonCuts * picuts = new AliConversionMesonCuts("dphi_pioncuts");
256 picuts->InitializeCutsFromCutString(pionCut);
257 task->SetMesonFilter(picuts);
258
259
260 //================================================
261 // data containers
262 //================================================
263 // find input container
264 //below the trunk version
265 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
266 TString baseString("slindal_dPhi_");
267 baseString += v0Cut + pionCut;
268
269 //dumm output container
270 AliAnalysisDataContainer *coutput0 =
271 mgr->CreateContainer(baseString+"tree",
272 TTree::Class(),
273 AliAnalysisManager::kExchangeContainer,
274 "slindal_default");
275
276 //define output containers, please use 'username'_'somename'
277 AliAnalysisDataContainer *coutput1 =
278 mgr->CreateContainer(baseString+"me", TList::Class(),
279 AliAnalysisManager::kOutputContainer,baseString+"me.root");
280
281 //define output containers, please use 'username'_'somename'
282
283
284 //========= Add PID Reponse to ANALYSIS manager ====
285 Bool_t isMC = kFALSE;
286 if(!(AliPIDResponse*)mgr->GetTask("PIDResponseTask")){
287 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
288 AddTaskPIDResponse(isMC);
289 }
290
291 //========= Set Cutnumber for V0Reader ================================
292 TString cutnumber = "000000000208400000220000000";
293
294 //========= Add V0 Reader to ANALYSIS manager if not yet existent =====
295 AliV0ReaderV1 * fV0ReaderV1 = (AliV0ReaderV1*)mgr->GetTask("V0ReaderV1");
296 if( !fV0ReaderV1 ){
297 fV0ReaderV1 = new AliV0ReaderV1("V0ReaderV1");
298
299 fV0ReaderV1->SetUseOwnXYZCalculation(kTRUE);
300 fV0ReaderV1->SetCreateAODs(kFALSE);// AOD Output
301 fV0ReaderV1->SetUseAODConversionPhoton(kTRUE);
302
303 if (!mgr) {
304 Error("AddTask_V0ReaderV1", "No analysis manager found.");
305 return;
306 }
307
308 // Set AnalysisCut Number
309 AliConversionCuts *fCuts=NULL;
310 if(cutnumber!=""){
311 fCuts= new AliConversionCuts(cutnumber.Data(),cutnumber.Data());
312 fCuts->SetPreSelectionCutFlag(kTRUE);
313 }
314 if(fCuts->InitializeCutsFromCutString(cutnumber)){
315 fV0ReaderV1->SetConversionCuts(fCuts);
316 }
317
318 fV0ReaderV1->Init();
319 mgr->AddTask(fV0ReaderV1);
320 mgr->ConnectInput(fV0ReaderV1,0,cinput);
321 task->SaveReaderHists();
322 }
323
324 task->SetV0Reader(fV0ReaderV1);
325
326 AliConversionCuts * v0cuts = new AliConversionCuts();
327 v0cuts->InitializeCutsFromCutString(v0Cut);
328 task->SetV0Filter(v0cuts);
329
330 Int_t numberOfCuts = 7;
331 TString *tcutarray =new TString[7];
332 TString *wcutarray = new TString[7];
333
ae4f2cfb 334 //"0000011002093663003800000000",
335 // "0000011002093663003800000000"; // -4 5 sigma electron line
336 tcutarray[0] = "0000011002092663003800000000"; // -3 5 sigma
337 wcutarray[0] = "0000011002091663003800000000"; //dedex -5 -5 sigma
99d49b30 338
ae4f2cfb 339 // "0000011002093663003800000000"; // 663: 2 sigma low pt (0.25) 0.5 sigma: high pt (3.5)
340 tcutarray[1] = "0000011002093863003800000000"; // 863 2 1
341 wcutarray[1] = "0000011002093563003800000000"; // 563 2 -10
99d49b30 342
ae4f2cfb 343 tcutarray[2] = "0000011002093663003800000000";
344 wcutarray[2] = "0000011002093663003800000000";
99d49b30 345
ae4f2cfb 346 tcutarray[3] = "0000011002693663003800000000"; // single pt 6: 0.04 tight
347 wcutarray[3] = "0000011002493663003800000000"; // single pt 4: 0.075 loose
99d49b30 348
349 // //tpc cluster cut 9 : 0.6 default
ae4f2cfb 350 tcutarray[4] = "0000011002063663003800000000"; //6 : > 0.7 tight
351 wcutarray[4] = "0000011002083663003800000000"; //8 : > 0.35 loose
99d49b30 352
353 // // qt max 3: 0.05 default
ae4f2cfb 354 tcutarray[5] = "0000011002093663004800000000"; //4 : < 0.03 tight
355 wcutarray[5] = "0000011002093663002800000000"; //2 : < 0.07 loose
99d49b30 356
357 // // chi2 8 default <20
ae4f2cfb 358 tcutarray[6] = "0000011002093663003900000000"; //9 : < 15 tight
359 wcutarray[6] = "0000011002093663003200000000"; //2 : < 30 loose
99d49b30 360
361
362 ///Add the tight cuts
363 for(Int_t i = 0; i < numberOfCuts; i++) {
364 AliConversionCuts * v0cuts = new AliConversionCuts("aaa","aaa");
365 v0cuts->SetPreSelectionCutFlag(kTRUE);
366 if(v0cuts->InitializeCutsFromCutString(tcutarray[i].Data())){
367 task->AddV0Filter(v0cuts, kFALSE);
368 v0cuts->SetFillCutHistograms("aaa",kFALSE);
369 }
370 }
371
372 ///Add the tight cuts
373 for(Int_t i = 0; i < numberOfCuts; i++) {
374 AliConversionCuts * v0cuts = new AliConversionCuts("aaa","aaa");
375 v0cuts->SetPreSelectionCutFlag(kTRUE);
376 if(v0cuts->InitializeCutsFromCutString(wcutarray[i].Data())){
377 task->AddV0Filter(v0cuts, kTRUE);
378 v0cuts->SetFillCutHistograms("aaa",kFALSE);
379 }
380 }
381
382 mgr->AddTask(task);
383 task->SelectCollisionCandidates(AliVEvent::kMB);
384 mgr->ConnectInput (task, 0, cinput );
385 mgr->ConnectOutput (task, 0, coutput0);
386 mgr->ConnectOutput (task, 1, coutput1);
387
388 return task;
389}
390
391