22 #include "TParticle.h" 24 #include "TMCProcess.h" 25 #include "TDatabasePDG.h" 28 #include "TDirectory.h" 32 #include "THnSparse.h" 34 #include "AliAnalysisManager.h" 35 #include "AliESDInputHandler.h" 36 #include "AliESDtrack.h" 37 #include "AliMCEvent.h" 38 #include "AliMCEventHandler.h" 41 #include "AliESDtrackCuts.h" 42 #include "AliESDpidCuts.h" 43 #include "AliMCEvent.h" 45 #include "AliESDEvent.h" 46 #include "AliESDpid.h" 47 #include "AliKFParticle.h" 48 #include "AliMCEventHandler.h" 49 #include "AliKFVertex.h" 50 #include "AliTriggerAnalysis.h" 51 #include "AliCentrality.h" 52 #include "AliMultiplicity.h" 54 #include "AliEventplane.h" 63 fV0ReaderName("V0ReaderV1"),
77 fSelectorElectronIndex(0),
78 fSelectorPositronIndex(0),
80 fGoodVirtualGammas(NULL),
85 fCutElectronArray(NULL),
88 fConversionCuts(NULL),
89 hESDConvGammaPt(NULL),
90 hESDConvGammaEta(NULL),
92 sESDConvGammaZR(NULL),
93 sESDConvGammaXY(NULL),
94 hESDDalitzElectronPt(NULL),
95 hESDDalitzPositronPt(NULL),
96 hESDDalitzElectronPhi(NULL),
97 hESDDalitzPositronPhi(NULL),
98 hESDDalitzElectronAfterPt(NULL),
99 hESDDalitzPositronAfterPt(NULL),
100 hESDDalitzElectronAfterEta(NULL),
101 hESDDalitzElectronAfterEtaPCut(NULL),
102 hESDDalitzPositronAfterEta(NULL),
103 hESDDalitzPositronAfterEtaPCut(NULL),
104 hESDDalitzElectronAfterPhi(NULL),
105 hESDDalitzPositronAfterPhi(NULL),
106 hESDDalitzElectronAfterNClsITS(NULL),
107 hESDDalitzElectronAfterNClsITSPCut(NULL),
108 hESDDalitzPositronAfterNClsITS(NULL),
109 hESDDalitzPositronAfterNClsITSPCut(NULL),
110 hESDDalitzElectronAfterNFindClsTPC(NULL),
111 hESDDalitzElectronAfterNFindClsTPCPCut(NULL),
112 hESDDalitzPositronAfterNFindClsTPC(NULL),
113 hESDDalitzPositronAfterNFindClsTPCPCut(NULL),
114 hESDDalitzElectronAfterNClsTPC(NULL),
115 hESDDalitzElectronAfterNClsTPCPCut(NULL),
116 hESDDalitzPositronAfterNClsTPC(NULL),
117 hESDDalitzPositronAfterNClsTPCPCut(NULL),
118 hESDDalitzElectronAfterNCrossedRowsTPC(NULL),
119 hESDDalitzElectronAfterNCrossedRowsTPCPCut(NULL),
120 hESDDalitzPositronAfterNCrossedRowsTPC(NULL),
121 hESDDalitzPositronAfterNCrossedRowsTPCPCut(NULL),
122 hESDDalitzPosEleAfterDCAxy(NULL),
123 hESDDalitzPosEleAfterDCAz(NULL),
124 hESDDalitzElectronAfterTPCdEdxVsP(NULL),
125 hESDDalitzPositronAfterTPCdEdxVsP(NULL),
126 hESDDalitzElectronAfterTPCdEdxSignalVsP(NULL),
127 hESDDalitzPositronAfterTPCdEdxSignalVsP(NULL),
128 hESDDalitzElectronAfterTPCdEdxVsEta(NULL),
129 hESDDalitzPositronAfterTPCdEdxVsEta(NULL),
130 hESDDalitzElectronAfterTPCdEdxVsPhi(NULL),
131 hESDDalitzPositronAfterTPCdEdxVsPhi(NULL),
132 hESDEposEnegPsiPairDPhi(NULL),
133 hESDEposEnegPsiPairEta(NULL),
134 hESDEposEnegDPhiEta(NULL),
135 hESDEposEnegInvMassPt(NULL),
136 hESDTruePi0EposEnegInvMassPi0Pt(NULL),
137 hESDEposEnegLikeSignBackInvMassPt(NULL),
138 hESDMotherInvMassPt(NULL),
139 hESDPi0MotherInvMassPt(NULL),
140 hESDPi0MotherDiffInvMassPt(NULL),
141 hESDPi0MotherDiffLimInvMassPt(NULL),
142 hESDMotherInvMassOpeningAngleGammaElectron(NULL),
143 sESDMotherInvMassPtZM(NULL),
144 hESDMotherBackInvMassPt(NULL),
145 sESDMotherBackInvMassPtZM(NULL),
146 hESDMotherPi0PtY(NULL),
147 hESDMotherPi0PtAlpha(NULL),
148 hESDMotherPi0PtOpenAngle(NULL),
149 sESDMotherDalitzPlot(NULL),
151 hMCAllGammaPi0Pt(NULL),
152 hMCConvGammaPt(NULL),
153 hMCConvGammaPtR(NULL),
154 hMCConvGammaRSPt(NULL),
155 hMCConvGammaPi0Pt(NULL),
156 hMCAllPositronsPt(NULL),
157 hMCDecayPositronPi0Pt(NULL),
158 hMCAllElectronsPt(NULL),
159 hMCDecayElectronPi0Pt(NULL),
160 hMCConvGammaEta(NULL),
162 hMCAllPositronsEta(NULL),
163 hMCAllElectronsEta(NULL),
164 hMCPi0DalitzGammaPt(NULL),
165 hMCPi0DalitzElectronPt(NULL),
166 hMCPi0DalitzPositronPt(NULL),
168 hMCPi0WOWeightPt(NULL),
173 hMCPi0WOWeightInAccPt(NULL),
174 hMCPi0InAccOpeningAngleGammaElectron(NULL),
175 sMCPi0DalitzPlot(NULL),
178 hMCChiCInAccPt(NULL),
179 hMCPi0EposEnegInvMassPt(NULL),
180 hMCEtaEposEnegInvMassPt(NULL),
181 hESDEposEnegTruePi0DalitzInvMassPt(NULL),
182 hESDEposEnegTruePrimPi0DalitzInvMass(NULL),
183 hESDEposEnegTruePi0DalitzPsiPairDPhi(NULL),
184 hESDEposEnegTruePi0DalitzPsiPairMC(NULL),
185 hESDEposEnegTruePi0DalitzPsiPairEta(NULL),
186 hESDEposEnegTruePi0DalitzDPhiEta(NULL),
187 hESDEposEnegTrueEtaDalitzInvMassPt(NULL),
188 hESDEposEnegTruePrimEtaDalitzInvMass(NULL),
189 hESDEposEnegTrueEtaDalitzPsiPairDPhi(NULL),
190 hESDEposEnegTruePhotonInvMassPt(NULL),
191 hESDEposEnegTrueInvMassPt(NULL),
192 hESDEposEnegTrueMotherInvMassPt(NULL),
193 hESDEposEnegTruePhotonPsiPairDPhi(NULL),
194 hESDEposEnegTruePhotonPsiPairDPhiPtCut(NULL),
195 hESDEposEnegTrueJPsiInvMassPt(NULL),
196 hESDTrueMotherChiCInvMassPt(NULL),
197 hESDTrueMotherChiCDiffInvMassPt(NULL),
198 hESDTrueMotherInvMassPt(NULL),
199 hESDTrueMotherW0WeightsInvMassPt(NULL),
200 hESDTrueMotherDalitzInvMassPt(NULL),
201 hESDTrueMotherPi0GGInvMassPt(NULL),
202 hESDTrueMotherPi0GGW0WeightsInvMassPt(NULL),
203 hESDTruePi0PtY(NULL),
204 hESDTruePi0PtAlpha(NULL),
205 hESDTruePi0PtOpenAngle(NULL),
206 sESDTruePi0DalitzPlot(NULL),
207 hESDTruePrimaryMotherPi0GGInvMassPt(NULL),
208 hESDTrueSecondaryMotherPi0GGInvMassPt(NULL),
209 hESDTruePrimaryMotherInvMassMCPt(NULL),
210 hESDTruePrimaryMotherInvMassPt(NULL),
211 hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
212 hESDTruePrimaryPi0DalitzESDPtMCPt(NULL),
213 hESDTrueSecondaryMotherInvMassPt(NULL),
214 hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
215 hESDTrueBckGGInvMassPt(NULL),
216 hESDTrueBckContInvMassPt(NULL),
217 hESDTrueMotherGGInvMassPt(NULL),
218 hESDTrueConvGammaPt(NULL),
219 hESDTrueConvGammaPtMC(NULL),
220 hESDTrueConvGammaR(NULL),
221 hESDTrueConvGammaRMC(NULL),
222 hESDTruePositronPt(NULL),
223 hESDTrueElectronPt(NULL),
224 hESDTrueSecConvGammaPt(NULL),
225 hESDTrueSecPositronPt(NULL),
226 hESDTrueSecElectronPt(NULL),
227 hESDTruePi0DalitzConvGammaPt(NULL),
228 hESDTruePi0DalitzConvGammaR(NULL),
229 hESDTruePi0DalitzPositronPt(NULL),
230 hESDTruePi0DalitzPositronPtMB(NULL),
231 hESDTruePi0DalitzElectronPt(NULL),
232 hESDTruePi0DalitzElectronPtMB(NULL),
233 hESDTruePi0DalitzSecConvGammaPt(NULL),
234 hESDTruePi0DalitzSecPositronPt(NULL),
235 hESDTruePi0DalitzSecElectronPt(NULL),
237 hNGoodESDTracks(NULL),
238 hNGoodESDTracksVsNGoodGammas(NULL),
239 hNGoodESDTracksVsNGoodVGammas(NULL),
240 fHistoSPDClusterTrackletBackground(NULL),
243 fHistoDoubleCountTruePi0InvMassPt(NULL),
244 fHistoDoubleCountTrueEtaInvMassPt(NULL),
245 fHistoDoubleCountTrueConvGammaRPt(NULL),
246 fVectorDoubleCountTruePi0s(0),
247 fVectorDoubleCountTrueEtas(0),
248 fVectorDoubleCountTrueConvGammas(0),
250 fEventPlaneAngle(-100),
261 fNumberOfESDTracks(0),
262 fNumberOfESDTrackskBoth(0),
264 fMoveParticleAccordingToVertex(kFALSE),
266 fDoMesonAnalysis(kTRUE),
267 fDoChicAnalysis(kFALSE),
269 fSetProductionVertextoVGamma(kTRUE),
270 fIsFromMBHeader(kTRUE),
273 fDoHistoDalitzMassLog(kFALSE),
274 fDoMaterialBudgetWeightingOfGammasForTrueMesons(kFALSE)
283 fV0ReaderName(
"V0ReaderV1"),
297 fSelectorElectronIndex(0),
298 fSelectorPositronIndex(0),
300 fGoodVirtualGammas(NULL),
301 fGoodElectrons(NULL),
302 fGoodPositrons(NULL),
303 fCutEventArray(NULL),
304 fCutGammaArray(NULL),
305 fCutElectronArray(NULL),
306 fCutMesonArray(NULL),
308 fConversionCuts(NULL),
309 hESDConvGammaPt(NULL),
310 hESDConvGammaEta(NULL),
312 sESDConvGammaZR(NULL),
313 sESDConvGammaXY(NULL),
314 hESDDalitzElectronPt(NULL),
315 hESDDalitzPositronPt(NULL),
316 hESDDalitzElectronPhi(NULL),
317 hESDDalitzPositronPhi(NULL),
318 hESDDalitzElectronAfterPt(NULL),
319 hESDDalitzPositronAfterPt(NULL),
320 hESDDalitzElectronAfterEta(NULL),
321 hESDDalitzElectronAfterEtaPCut(NULL),
322 hESDDalitzPositronAfterEta(NULL),
323 hESDDalitzPositronAfterEtaPCut(NULL),
324 hESDDalitzElectronAfterPhi(NULL),
325 hESDDalitzPositronAfterPhi(NULL),
326 hESDDalitzElectronAfterNClsITS(NULL),
327 hESDDalitzElectronAfterNClsITSPCut(NULL),
328 hESDDalitzPositronAfterNClsITS(NULL),
329 hESDDalitzPositronAfterNClsITSPCut(NULL),
330 hESDDalitzElectronAfterNFindClsTPC(NULL),
331 hESDDalitzElectronAfterNFindClsTPCPCut(NULL),
332 hESDDalitzPositronAfterNFindClsTPC(NULL),
333 hESDDalitzPositronAfterNFindClsTPCPCut(NULL),
334 hESDDalitzElectronAfterNClsTPC(NULL),
335 hESDDalitzElectronAfterNClsTPCPCut(NULL),
336 hESDDalitzPositronAfterNClsTPC(NULL),
337 hESDDalitzPositronAfterNClsTPCPCut(NULL),
338 hESDDalitzElectronAfterNCrossedRowsTPC(NULL),
339 hESDDalitzElectronAfterNCrossedRowsTPCPCut(NULL),
340 hESDDalitzPositronAfterNCrossedRowsTPC(NULL),
341 hESDDalitzPositronAfterNCrossedRowsTPCPCut(NULL),
342 hESDDalitzPosEleAfterDCAxy(NULL),
343 hESDDalitzPosEleAfterDCAz(NULL),
344 hESDDalitzElectronAfterTPCdEdxVsP(NULL),
345 hESDDalitzPositronAfterTPCdEdxVsP(NULL),
346 hESDDalitzElectronAfterTPCdEdxSignalVsP(NULL),
347 hESDDalitzPositronAfterTPCdEdxSignalVsP(NULL),
348 hESDDalitzElectronAfterTPCdEdxVsEta(NULL),
349 hESDDalitzPositronAfterTPCdEdxVsEta(NULL),
350 hESDDalitzElectronAfterTPCdEdxVsPhi(NULL),
351 hESDDalitzPositronAfterTPCdEdxVsPhi(NULL),
352 hESDEposEnegPsiPairDPhi(NULL),
353 hESDEposEnegPsiPairEta(NULL),
354 hESDEposEnegDPhiEta(NULL),
355 hESDEposEnegInvMassPt(NULL),
356 hESDTruePi0EposEnegInvMassPi0Pt(NULL),
357 hESDEposEnegLikeSignBackInvMassPt(NULL),
358 hESDMotherInvMassPt(NULL),
359 hESDPi0MotherInvMassPt(NULL),
360 hESDPi0MotherDiffInvMassPt(NULL),
361 hESDPi0MotherDiffLimInvMassPt(NULL),
362 hESDMotherInvMassOpeningAngleGammaElectron(NULL),
363 sESDMotherInvMassPtZM(NULL),
364 hESDMotherBackInvMassPt(NULL),
365 sESDMotherBackInvMassPtZM(NULL),
366 hESDMotherPi0PtY(NULL),
367 hESDMotherPi0PtAlpha(NULL),
368 hESDMotherPi0PtOpenAngle(NULL),
369 sESDMotherDalitzPlot(NULL),
371 hMCAllGammaPi0Pt(NULL),
372 hMCConvGammaPt(NULL),
373 hMCConvGammaPtR(NULL),
374 hMCConvGammaRSPt(NULL),
375 hMCConvGammaPi0Pt(NULL),
376 hMCAllPositronsPt(NULL),
377 hMCDecayPositronPi0Pt(NULL),
378 hMCAllElectronsPt(NULL),
379 hMCDecayElectronPi0Pt(NULL),
380 hMCConvGammaEta(NULL),
382 hMCAllPositronsEta(NULL),
383 hMCAllElectronsEta(NULL),
384 hMCPi0DalitzGammaPt(NULL),
385 hMCPi0DalitzElectronPt(NULL),
386 hMCPi0DalitzPositronPt(NULL),
388 hMCPi0WOWeightPt(NULL),
393 hMCPi0WOWeightInAccPt(NULL),
394 hMCPi0InAccOpeningAngleGammaElectron(NULL),
395 sMCPi0DalitzPlot(NULL),
398 hMCChiCInAccPt(NULL),
399 hMCPi0EposEnegInvMassPt(NULL),
400 hMCEtaEposEnegInvMassPt(NULL),
401 hESDEposEnegTruePi0DalitzInvMassPt(NULL),
402 hESDEposEnegTruePrimPi0DalitzInvMass(NULL),
403 hESDEposEnegTruePi0DalitzPsiPairDPhi(NULL),
404 hESDEposEnegTruePi0DalitzPsiPairMC(NULL),
405 hESDEposEnegTruePi0DalitzPsiPairEta(NULL),
406 hESDEposEnegTruePi0DalitzDPhiEta(NULL),
407 hESDEposEnegTrueEtaDalitzInvMassPt(NULL),
408 hESDEposEnegTruePrimEtaDalitzInvMass(NULL),
409 hESDEposEnegTrueEtaDalitzPsiPairDPhi(NULL),
410 hESDEposEnegTruePhotonInvMassPt(NULL),
411 hESDEposEnegTrueInvMassPt(NULL),
412 hESDEposEnegTrueMotherInvMassPt(NULL),
413 hESDEposEnegTruePhotonPsiPairDPhi(NULL),
414 hESDEposEnegTruePhotonPsiPairDPhiPtCut(NULL),
415 hESDEposEnegTrueJPsiInvMassPt(NULL),
416 hESDTrueMotherChiCInvMassPt(NULL),
417 hESDTrueMotherChiCDiffInvMassPt(NULL),
418 hESDTrueMotherInvMassPt(NULL),
419 hESDTrueMotherW0WeightsInvMassPt(NULL),
420 hESDTrueMotherDalitzInvMassPt(NULL),
421 hESDTrueMotherPi0GGInvMassPt(NULL),
422 hESDTrueMotherPi0GGW0WeightsInvMassPt(NULL),
423 hESDTruePi0PtY(NULL),
424 hESDTruePi0PtAlpha(NULL),
425 hESDTruePi0PtOpenAngle(NULL),
426 sESDTruePi0DalitzPlot(NULL),
427 hESDTruePrimaryMotherPi0GGInvMassPt(NULL),
428 hESDTrueSecondaryMotherPi0GGInvMassPt(NULL),
429 hESDTruePrimaryMotherInvMassMCPt(NULL),
430 hESDTruePrimaryMotherInvMassPt(NULL),
431 hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
432 hESDTruePrimaryPi0DalitzESDPtMCPt(NULL),
433 hESDTrueSecondaryMotherInvMassPt(NULL),
434 hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
435 hESDTrueBckGGInvMassPt(NULL),
436 hESDTrueBckContInvMassPt(NULL),
437 hESDTrueMotherGGInvMassPt(NULL),
438 hESDTrueConvGammaPt(NULL),
439 hESDTrueConvGammaPtMC(NULL),
440 hESDTrueConvGammaR(NULL),
441 hESDTrueConvGammaRMC(NULL),
442 hESDTruePositronPt(NULL),
443 hESDTrueElectronPt(NULL),
444 hESDTrueSecConvGammaPt(NULL),
445 hESDTrueSecPositronPt(NULL),
446 hESDTrueSecElectronPt(NULL),
447 hESDTruePi0DalitzConvGammaPt(NULL),
448 hESDTruePi0DalitzConvGammaR(NULL),
449 hESDTruePi0DalitzPositronPt(NULL),
450 hESDTruePi0DalitzPositronPtMB(NULL),
451 hESDTruePi0DalitzElectronPt(NULL),
452 hESDTruePi0DalitzElectronPtMB(NULL),
453 hESDTruePi0DalitzSecConvGammaPt(NULL),
454 hESDTruePi0DalitzSecPositronPt(NULL),
455 hESDTruePi0DalitzSecElectronPt(NULL),
457 hNGoodESDTracks(NULL),
458 hNGoodESDTracksVsNGoodGammas(NULL),
459 hNGoodESDTracksVsNGoodVGammas(NULL),
460 fHistoSPDClusterTrackletBackground(NULL),
463 fHistoDoubleCountTruePi0InvMassPt(NULL),
464 fHistoDoubleCountTrueEtaInvMassPt(NULL),
465 fHistoDoubleCountTrueConvGammaRPt(NULL),
466 fVectorDoubleCountTruePi0s(0),
467 fVectorDoubleCountTrueEtas(0),
468 fVectorDoubleCountTrueConvGammas(0),
470 fEventPlaneAngle(-100),
481 fNumberOfESDTracks(0),
482 fNumberOfESDTrackskBoth(0),
484 fMoveParticleAccordingToVertex(kFALSE),
486 fDoMesonAnalysis(kTRUE),
487 fDoChicAnalysis(kFALSE),
489 fSetProductionVertextoVGamma(kTRUE),
490 fIsFromMBHeader(kTRUE),
493 fDoHistoDalitzMassLog(kFALSE),
494 fDoMaterialBudgetWeightingOfGammasForTrueMesons(kFALSE)
496 DefineOutput(1, TList::Class());
506 cout<<
"Destructor"<<endl;
534 const Int_t nDim = 4;
535 Int_t nBins[nDim] = {800,250,7,4};
557 if(collisionSystem == 1 || collisionSystem == 2 ||
558 collisionSystem == 5 || collisionSystem == 8 ||
559 collisionSystem == 9){
560 centMin = centMin*10;
561 centMax = centMax*10;
562 if(centMax ==0 && centMax!=centMin) centMax=100;
564 else if(collisionSystem == 3 || collisionSystem == 6){
568 else if(collisionSystem == 4 || collisionSystem == 7){
569 centMin = ((centMin*5)+45);
570 centMax = ((centMax*5)+45);
575 fBackList[iCut]->SetName(Form(
"%s_%s_%s_%s Back histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
579 sESDMotherBackInvMassPtZM[iCut] =
new THnSparseF(
"Back_Back_InvMass_Pt_z_m",
"Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
583 fMotherList[iCut]->SetName(Form(
"%s_%s_%s_%s Mother histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
587 sESDMotherInvMassPtZM[iCut] =
new THnSparseF(
"Back_Mother_InvMass_Pt_z_m",
"Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
595 collisionSystem,centMin,centMax,
648 const Int_t nBinsMassPair = 800;
712 xMinMassPair = 0.001;
713 xMaxMassPair = 0.801;
740 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
745 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
748 hNEvents[iCut] =
new TH1I(
"NEvents",
"NEvents",13,-0.5,12.5);
749 hNEvents[iCut]->GetXaxis()->SetBinLabel(1,
"Accepted");
750 hNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
751 hNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Missing MC");
752 hNEvents[iCut]->GetXaxis()->SetBinLabel(4,
"Trigger");
753 hNEvents[iCut]->GetXaxis()->SetBinLabel(5,
"Vertex Z");
754 hNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
755 hNEvents[iCut]->GetXaxis()->SetBinLabel(7,
"Pile-Up");
756 hNEvents[iCut]->GetXaxis()->SetBinLabel(8,
"no SDD");
757 hNEvents[iCut]->GetXaxis()->SetBinLabel(9,
"no V0AND");
758 hNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problem");
759 hNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
760 hNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
770 else hNV0Tracks[iCut] =
new TH1I(
"V0 Multiplicity",
"V0 Multiplicity",1500,0,1500);
773 hEtaShift[iCut] =
new TProfile(
"Eta Shift",
"Eta Shift",1, -0.5,0.5);
776 hESDConvGammaPt[iCut] =
new TH1F(
"ESD_ConvGamma_Pt",
"ESD_ConvGamma_Pt",250,0,25);
779 hESDConvGammaEta[iCut] =
new TH1F(
"ESD_ConvGamma_Eta",
"ESD_ConvGamma_Eta",600,-1.5,1.5);
782 hESDDalitzElectronPt[iCut] =
new TH1F(
"ESD_DalitzElectron_Pt",
"ESD_DalitzElectron_Pt",1000,0,25);
785 hESDDalitzPositronPt[iCut] =
new TH1F(
"ESD_DalitzPositron_Pt",
"ESD_DalitzPositron_Pt",1000,0,25);
789 hESDDalitzElectronPhi[iCut] =
new TH1F(
"ESD_DalitzElectron_Phi",
"ESD_DalitzElectron_Phi",360,0,2*TMath::Pi());
792 hESDDalitzPositronPhi[iCut] =
new TH1F(
"ESD_DalitzPositron_Phi",
"ESD_DalitzPositron_Phi",360,0,2*TMath::Pi());
800 fQAFolder[iCut]->SetName(Form(
"%s_%s_%s_%s QA histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
803 const Int_t kPtBins=110;
805 const Int_t kPBins = 109;
814 for(
Int_t i=1;i<kPtBins+1;i++){
815 if(binsPtDummy[i-1]+0.05<1.01)
816 binsPtDummy[i]=binsPtDummy[i-1]+0.05;
818 binsPtDummy[i]=binsPtDummy[i-1]+0.1;
820 for(
Int_t i=1; i<kPBins+1;i++){
821 if( binsPDummy[i-1]+0.05<1.01)
822 binsPDummy[i] = binsPDummy[i-1]+0.05;
824 binsPDummy[i] = binsPDummy[i-1]+0.1;
855 hESDDalitzElectronAfterPhi[iCut] =
new TH1F(
"ESD_DalitzElectron_After_Phi",
"ESD_DalitzElectron_After_Phi",360,0,2*TMath::Pi());
858 hESDDalitzPositronAfterPhi[iCut] =
new TH1F(
"ESD_DalitzPositron_After_Phi",
"ESD_DalitzPositron_After_Phi",360,0,2*TMath::Pi());
951 hESDEposEnegDPhiEta[iCut] =
new TH2F(
"ESD_EposEneg_DPhi_Eta",
"ESD_EposEneg_DPhi_Eta",100,-1.0,1.0,600,-1.5,1.5);
955 hESDEposEnegInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_InvMassPt",
"ESD_EposEneg_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
966 const Int_t nDimRZ = 2;
967 Int_t nBinsRZ[nDimRZ] = { 1200, 800};
968 Double_t xMinRZ[nDimRZ] = { -150, 0};
969 Double_t xMaxRZ[nDimRZ] = { 150, 200};
971 const Int_t nDimXY = 2;
972 Int_t nBinsXY[nDimXY] = { 1200, 1200};
973 Double_t xMinXY[nDimXY] = { -150, -150};
974 Double_t xMaxXY[nDimXY] = { 150, 150};
976 sESDConvGammaZR[iCut] =
new THnSparseF(
"ESD_ConvGamma_ZR",
"ESD_ConvGamma_ZR",nDimRZ,nBinsRZ,xMinRZ,xMaxRZ);
979 sESDConvGammaXY[iCut] =
new THnSparseF(
"ESD_ConvGamma_XY",
"ESD_ConvGamma_XY",nDimXY,nBinsXY,xMinXY,xMaxXY);
983 const Int_t nDimDalPlot = 2;
984 Int_t nBinsDalPlot[nDimDalPlot] = { 4000, 4000};
985 Double_t xMinDalPlot[nDimDalPlot] = { 0, 0};
986 Double_t xMaxDalPlot[nDimDalPlot] = { 4.0, 4.0};
989 sESDMotherDalitzPlot[iCut] =
new THnSparseF(
"ESD_Mother_DalitzPlot",
"ESD_Mother_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
996 hESDMotherInvMassPt[iCut] =
new TH2F(
"ESD_DalitzMother_InvMass_Pt",
"ESD_DalitzMother_InvMass_Pt",800,0,0.8,250,0,25);
1004 hESDMotherPi0PtY[iCut] =
new TH2F(
"ESD_MotherPi0_Pt_Y",
"ESD_MotherPi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1163 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
1164 fMCList[iCut]->SetOwner(kTRUE);
1167 hMCAllGammaPt[iCut] =
new TH1F(
"MC_AllGamma_Pt",
"MC_AllGamma_Pt",250,0,25);
1170 hMCAllGammaPi0Pt[iCut] =
new TH1F(
"MC_AllGammaPi0_Pt",
"MC_AllGammaPi0_Pt",250,0,25);
1173 hMCConvGammaPt[iCut] =
new TH1F(
"MC_ConvGamma_Pt",
"MC_ConvGamma_Pt",250,0,25);
1176 hMCConvGammaRSPt[iCut] =
new TH1F(
"MC_ConvGamma_RS_Pt",
"MC_ConvGamma_RS_Pt",250,0,25);
1179 hMCConvGammaPi0Pt[iCut] =
new TH1F(
"MC_ConvGammaPi0_Pt",
"MC_ConvGammaPi0_Pt",250,0,25);
1182 hMCAllPositronsPt[iCut] =
new TH1F(
"MC_AllPositrons_Pt",
"MC_AllPositrons_Pt",1000,0,25);
1185 hMCDecayPositronPi0Pt[iCut] =
new TH1F(
"MC_DecayPositronPi0_Pt",
"MC_DecayPositronPi0_Pt",1000,0,25);
1188 hMCAllElectronsPt[iCut] =
new TH1F(
"MC_AllElectrons_Pt",
"MC_AllElectrons_Pt",1000,0,25);
1191 hMCDecayElectronPi0Pt[iCut] =
new TH1F(
"MC_DecayElectronPi0_Pt",
"MC_DecayElectronPi0_Pt",1000,0,25);
1194 hMCPi0DalitzGammaPt[iCut] =
new TH1F(
"MC_Pi0DalitzGamma_Pt",
"MC_Pi0DalitzGamma_Pt",250,0,25);
1199 hMCConvGammaEta[iCut] =
new TH1F(
"MC_ConvGamma_Eta",
"MC_ConvGamma_Eta",600,-1.5,1.5);
1201 hMCConvGammaR[iCut] =
new TH1F(
"MC_ConvGamma_R",
"MC_ConvGamma_R",800,0,200);
1203 hMCAllPositronsEta[iCut] =
new TH1F(
"MC_AllPositrons_Eta",
"MC_AllPositrons_Eta",600,-1.5,1.5);
1205 hMCAllElectronsEta[iCut] =
new TH1F(
"MC_AllElectrons_Eta",
"MC_AllElectrons_Eta",600,-1.5,1.5);
1207 hMCConvGammaPtR[iCut] =
new TH2F(
"MC_ConvGamma_Pt_R",
"MC_ConvGamma_Pt_R",250,0,25,180,0.,180.0);
1220 hMCPi0Pt[iCut] =
new TH1F(
"MC_Pi0_Pt",
"MC_Pi0_Pt",250,0,25);
1224 hMCPi0WOWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOWeights_Pt",
"MC_Pi0_WOWeights_Pt",250,0,25);
1228 hMCPi0GGPt[iCut] =
new TH1F(
"MC_Pi0_GG_Pt",
"MC_Pi0_GG_Pt",250,0,25);
1232 hMCEtaPt[iCut] =
new TH1F(
"MC_Eta_Pt",
"MC_Eta_Pt",250,0,25);
1236 hMCEtaGGPt[iCut] =
new TH1F(
"MC_Eta_GG_Pt",
"MC_Eta_GG_Pt",250,0,25);
1240 hMCPi0InAccPt[iCut] =
new TH1F(
"MC_Pi0DalitzInAcc_Pt",
"MC_Pi0DalitzInAcc_Pt",250,0,25);
1253 hMCEtaInAccPt[iCut] =
new TH1F(
"MC_EtaDalitzInAcc_Pt",
"MC_EtaDalitzInAcc_Pt",250,0,25);
1257 hMCChiCPt[iCut] =
new TH1F(
"MC_ChiC_Pt",
"MC_ChiC_Pt",250,0,25);
1260 hMCChiCInAccPt[iCut] =
new TH1F(
"MC_ChiCInAcc_Pt",
"MC_ChiCInAcc_Pt",250,0,25);
1271 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
1281 hESDEposEnegTruePrimPi0DalitzInvMass[iCut] =
new TH1F(
"ESD_EposEneg_TruePrimPi0Dalitz_InvMass",
"ESD_EposEneg_TruePrimPi0Dalitz_InvMass",nBinsMassPair,xMinMassPair,xMaxMassPair);
1284 hESDEposEnegTrueInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_True_InvMassPt",
"ESD_EposEneg_True_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1288 hESDEposEnegTrueMotherInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_TrueMother_InvMassPt",
"ESD_EposEneg_TrueMother_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1296 hESDEposEnegTruePrimEtaDalitzInvMass[iCut] =
new TH1F(
"ESD_EposEneg_TruePrimEtaDalitz_InvMass",
"ESD_EposEneg_TruePrimEtaDalitz_InvMass",nBinsMassPair,xMinMassPair,xMaxMassPair);
1300 hESDEposEnegTruePhotonInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_TruePhoton_InvMassPt",
"ESD_EposEneg_TruePhoton_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1332 hESDTrueConvGammaR[iCut] =
new TH1F(
"ESD_TrueConvGamma_R",
"ESD_TrueConvGamma_R",800,0,200);
1335 hESDTrueConvGammaRMC[iCut] =
new TH1F(
"ESD_TrueConvGamma_R_MC",
"ESD_TrueConvGamma_R_MC",800,0,200);
1338 hESDTrueConvGammaPtMC[iCut] =
new TH1F(
"ESD_TrueConvGamma_Pt_MC",
"ESD_TrueConvGamma_Pt_MC",250,0,25);
1345 hESDTruePi0PtY[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Y",
"ESD_TruePi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1353 hESDTruePi0PtOpenAngle[iCut] =
new TH2F(
"ESD_TruePi0_Pt_OpenAngle",
"ESD_TruePi0_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
1362 const Int_t nDimDalPlot = 2;
1363 Int_t nBinsDalPlot[nDimDalPlot] = { 4000, 4000};
1364 Double_t xMinDalPlot[nDimDalPlot] = { 0, 0};
1365 Double_t xMaxDalPlot[nDimDalPlot] = { 4.0, 4.0};
1368 sESDTruePi0DalitzPlot[iCut] =
new THnSparseF(
"ESD_TruePi0Dalitz_DalitzPlot",
"ESD_TruePi0Dalitz_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
1371 sMCPi0DalitzPlot[iCut] =
new THnSparseF(
"MC_Pi0Dalitz_DalitzPlot",
"MC_Pi0Dalitz_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
1378 hESDTruePositronPt[iCut] =
new TH1F(
"ESD_TruePositron_Pt",
"ESD_TruePositron_Pt",1000,0,25);
1381 hESDTrueElectronPt[iCut] =
new TH1F(
"ESD_TrueElectron_Pt",
"ESD_TrueElectron_Pt",1000,0,25);
1384 hESDTrueSecPositronPt[iCut] =
new TH1F(
"ESD_TrueSecPositron_Pt",
"ESD_TrueSecPositron_Pt",1000,0,25);
1387 hESDTrueSecElectronPt[iCut] =
new TH1F(
"ESD_TrueSecElectron_Pt",
"ESD_TrueSecElectron_Pt",1000,0,25);
1390 hESDTrueConvGammaPt[iCut] =
new TH1F(
"ESD_TrueConvGamma_Pt",
"ESD_TrueConvGamma_Pt",250,0,25);
1490 hESDTrueBckGGInvMassPt[iCut] =
new TH2F(
"ESD_TrueDalitzBckGG_InvMass_Pt",
"ESD_TrueDalitzBckGG_InvMass_Pt",800,0,0.8,250,0,25);
1505 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
1527 if(!
fElecSelector){printf(
"Error: No ElectronSelector");
return;}
1574 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
1580 if(eventQuality == 2 || eventQuality == 3){
1582 hNEvents[iCut]->Fill(eventQuality);
1588 if(!
fElecSelector){printf(
"Error: No ElectronSelector");
return;}
1595 AliEventplane *EventPlane = fInputEvent->GetEventplane();
1611 Int_t eventNotAccepted =
1618 if(eventNotAccepted){
1620 hNEvents[iCut]->Fill(eventNotAccepted);
1624 if(eventQuality != 0){
1626 hNEvents[iCut]->Fill(eventQuality);
1630 hNEvents[iCut]->Fill(eventQuality);
1634 else hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C());
1697 fHistoSPDClusterTrackletBackground[iCut]->Fill(fInputEvent->GetMultiplicity()->GetNumberOfTracklets(),(fInputEvent->GetNumberOfITSClusters(0)+fInputEvent->GetNumberOfITSClusters(1)));
1764 printf(
" Gamma Conversion Dalitz Task %s :: Eta Shift Manually Set to %f \n\n",
1790 if(!PhotonCandidate)
continue;
1797 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1826 GoodGammasStepOne->Add(PhotonCandidate);
1829 GoodGammasStepTwo->Add(PhotonCandidate);
1835 for(
Int_t i = 0;i<GoodGammasStepOne->GetEntries();i++){
1837 if(!PhotonCandidate)
continue;
1842 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1863 }
else GoodGammasStepTwo->Add(PhotonCandidate);
1867 for(
Int_t i = 0;i<GoodGammasStepTwo->GetEntries();i++){
1869 if(!PhotonCandidate)
continue;
1873 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1895 delete GoodGammasStepOne;
1896 GoodGammasStepOne = 0x0;
1897 delete GoodGammasStepTwo;
1898 GoodGammasStepTwo = 0x0;
1908 if(posDaughter == NULL || negDaughter == NULL)
return;
1909 if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
1911 }
else if (posDaughter->GetMother(0) == -1){
1915 if(TMath::Abs(posDaughter->GetPdgCode())!=11 || TMath::Abs(negDaughter->GetPdgCode())!=11)
return;
1916 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode())
return;
1917 if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5)
return;
1920 if(Photon->GetPdgCode() != 22)
return;
1926 if( labelGamma < fMCEvent->GetNumberOfPrimaries() ){
1943 if( labelGamma < fMCEvent->GetNumberOfPrimaries() ) {
1962 Double_t magField = fInputEvent->GetMagneticField();
1965 if( magField < 0.0 ){
1979 Bool_t isPhoton = kFALSE;
1980 Bool_t isPi0Dalitz = kFALSE;
1981 Bool_t isEtaDalitz = kFALSE;
1983 Bool_t isTrueEposENeg = kFALSE;
1984 Bool_t isMotherPrimary = kFALSE;
1990 Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronVgamma->GetConstrainedParam()->Phi()-positronVgamma->GetConstrainedParam()->Phi());
2003 TParticle * negativeMC = 0x0;
2004 TParticle * positiveMC = 0x0;
2005 TParticle * mcVgamma = 0x0;
2007 if( virtualGammaMCLabel != -1 ){
2008 mcVgamma = (TParticle*)
fMCEvent->Particle(virtualGammaMCLabel);
2015 if( negativeMC && positiveMC ) {
2016 if( positiveMC->GetPdgCode() == ::kPositron && negativeMC->GetPdgCode() == ::kElectron )
2017 isTrueEposENeg = kTRUE;
2018 if( positiveMC->GetMother(0) > -1 && positiveMC->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() )
2019 isMotherPrimary = kTRUE;
2023 if(mcVgamma->GetPdgCode() == 22){
2025 }
else if(mcVgamma->GetPdgCode() == 443){
2028 if ( mcVgamma->GetPdgCode() == 111 ) isPi0Dalitz = kTRUE;
2029 else if( mcVgamma->GetPdgCode() == 221 ) isEtaDalitz = kTRUE;
2036 if( Vgamma->Pt() > 1.5 ){
2041 }
else if(isPi0Dalitz){
2051 }
else if(isEtaDalitz){
2055 }
else if ( isTrueEposENeg && mcVgamma ){
2070 Double_t magField = fInputEvent->GetMagneticField();
2072 if( magField < 0.0 ){
2078 vector<Int_t> lGoodElectronIndexPrev(0);
2079 vector<Int_t> lGoodPositronIndexPrev(0);
2085 Bool_t IsMCFromMBHeader = kTRUE;
2089 Int_t isMCFromMBHeader = -1;
2090 Int_t labelelectron = TMath::Abs( electronCandidate->GetLabel() );
2097 if( isMCFromMBHeader != 2 ) IsMCFromMBHeader = kFALSE;
2109 Int_t labelelectron = TMath::Abs( electronCandidate->GetLabel() );
2110 if( labelelectron < fMCEvent->GetNumberOfTracks() ){
2111 TParticle* electron =
fMCEvent->Particle(labelelectron);
2112 if( electron->GetPdgCode() == 11 ){
2113 if( labelelectron < fMCEvent->GetNumberOfPrimaries() ){
2119 if( electron->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
2135 Bool_t IsMCFromMBHeader = kTRUE;
2139 Int_t isMCFromMBHeader = -1;
2140 Int_t labelpositron = TMath::Abs( positronCandidate->GetLabel() );
2148 if( isMCFromMBHeader != 2 ) IsMCFromMBHeader = kFALSE;
2158 Int_t labelpositron = TMath::Abs( positronCandidate->GetLabel() );
2160 if( labelpositron < fMCEvent->GetNumberOfTracks() ) {
2161 TParticle* positron =
fMCEvent->Particle(labelpositron);
2162 if( positron->GetPdgCode() == -11 ){
2163 if( labelpositron < fMCEvent->GetNumberOfPrimaries() ){
2169 if( positron->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ){
2181 vector<Bool_t> lElectronPsiIndex(lGoodElectronIndexPrev.size(), kTRUE);
2182 vector<Bool_t> lPositronPsiIndex(lGoodPositronIndexPrev.size(), kTRUE);
2185 for(
UInt_t i = 0; i < lGoodElectronIndexPrev.size(); i++ ) {
2186 AliESDtrack *electronCandidate =
fESDEvent->GetTrack(lGoodElectronIndexPrev[i]);
2187 for(
UInt_t j = 0; j < lGoodPositronIndexPrev.size(); j++){
2188 AliESDtrack *positronCandidate =
fESDEvent->GetTrack(lGoodPositronIndexPrev[j]);
2190 Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->GetConstrainedParam()->Phi()-positronCandidate->GetConstrainedParam()->Phi());
2193 lElectronPsiIndex[i] = kFALSE;
2194 lPositronPsiIndex[j] = kFALSE;
2200 vector<Int_t> lGoodElectronIndex(0);
2201 vector<Int_t> lGoodPositronIndex(0);
2203 for(
UInt_t i = 0; i < lGoodElectronIndexPrev.size(); i++ ) {
2204 if( lElectronPsiIndex[i] == kTRUE )
2205 lGoodElectronIndex.push_back( lGoodElectronIndexPrev[i] );
2208 for(
UInt_t i = 0; i < lGoodPositronIndexPrev.size(); i++ ) {
2209 if( lPositronPsiIndex[i] == kTRUE )
2210 lGoodPositronIndex.push_back( lGoodPositronIndexPrev[i] );
2213 for(
UInt_t i = 0; i < lGoodElectronIndex.size(); i++){
2214 AliESDtrack *electronCandidate =
fESDEvent->GetTrack(lGoodElectronIndex[i]);
2215 AliKFParticle electronCandidateKF( *electronCandidate->GetConstrainedParam(), ::kElectron );
2216 TLorentzVector electronCandidateTLV;
2217 electronCandidateTLV.SetXYZM(electronCandidate->GetConstrainedParam()->Px(),electronCandidate->GetConstrainedParam()->Py(),electronCandidate->GetConstrainedParam()->Pz(),TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2220 for(
UInt_t j = 0; j < lGoodPositronIndex.size(); j++){
2222 AliESDtrack *positronCandidate =
fESDEvent->GetTrack(lGoodPositronIndex[j]);
2223 AliKFParticle positronCandidateKF( *positronCandidate->GetConstrainedParam(), ::kPositron );
2224 TLorentzVector positronCandidateTLV;
2226 positronCandidateTLV.SetXYZM(positronCandidate->GetConstrainedParam()->Px(),positronCandidate->GetConstrainedParam()->Py(),positronCandidate->GetConstrainedParam()->Pz(),TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2227 TLorentzVector *virtualPhotonTLV = 0;
2234 virtualPhotonTLV =
new TLorentzVector( smearelectronCandidateTLV + smearpositronCandidateTLV );
2238 vphoton->
SetMass(virtualPhotonTLV->M());
2242 AliKFVertex primaryVertexImproved(*fInputEvent->GetPrimaryVertex());
2243 primaryVertexImproved+=*virtualPhoton;
2244 virtualPhoton->SetProductionVertex(primaryVertexImproved);
2250 vphoton->
SetTrackLabels( lGoodPositronIndex[j], lGoodElectronIndex[i]);
2253 Int_t labeln=TMath::Abs(electronCandidate->GetLabel());
2254 Int_t labelp=TMath::Abs(positronCandidate->GetLabel());
2255 TParticle *fNegativeMCParticle =
fMCEvent->Particle(labeln);
2256 TParticle *fPositiveMCParticle =
fMCEvent->Particle(labelp);
2257 if( fPositiveMCParticle && fNegativeMCParticle) {
2269 if( virtualPhoton ){
2270 delete virtualPhoton;
2273 if ( virtualPhotonTLV ){
2274 delete virtualPhotonTLV;
2275 virtualPhotonTLV=NULL;
2283 for(
UInt_t i = 0; i < lGoodElectronIndex.size(); i++){
2284 AliESDtrack *electronCandidate1 =
fESDEvent->GetTrack(lGoodElectronIndex[i]);
2285 AliKFParticle electronCandidate1KF( *electronCandidate1->GetConstrainedParam(), ::kElectron );
2287 for(
UInt_t j = i+1; j < lGoodElectronIndex.size(); j++){
2289 AliESDtrack *electronCandidate2 =
fESDEvent->GetTrack(lGoodElectronIndex[j]);
2290 AliKFParticle electronCandidate2KF( *electronCandidate2->GetConstrainedParam(), ::kElectron );
2300 delete virtualPhoton;
2302 virtualPhoton = 0x0;
2307 for(
UInt_t i = 0; i < lGoodPositronIndex.size(); i++){
2308 AliESDtrack *positronCandidate1 =
fESDEvent->GetTrack(lGoodPositronIndex[i]);
2309 AliKFParticle positronCandidate1KF( *positronCandidate1->GetConstrainedParam(), ::kPositron );
2311 for(
UInt_t j = i+1; j < lGoodPositronIndex.size(); j++){
2313 AliESDtrack *positronCandidate2 =
fESDEvent->GetTrack(lGoodPositronIndex[j]);
2314 AliKFParticle positronCandidate2KF( *positronCandidate2->GetConstrainedParam(), ::kPositron );
2323 delete virtualPhoton;
2325 virtualPhoton = 0x0;
2339 for(
Int_t GammaIndex=0; GammaIndex<
fGoodGammas->GetEntries(); GammaIndex++){
2341 if (gamma==NULL)
continue;
2344 if (Vgamma==NULL)
continue;
2352 pi0cand->
SetLabels(GammaIndex,virtualGammaIndex);
2380 if( virtualGammaMCLabel > -1 ) {
2386 if( negativeMC->GetPdgCode() == 11 && positiveMC->GetPdgCode() == -11) {
2426 positronVgamma->GetConstrainedPxPyPz(momPositron);
2430 electronVgamma->GetConstrainedPxPyPz(momElectron);
2433 TVector3 vPositron(momPositron[0],momPositron[1],momPositron[2]);
2434 TVector3 vElectron(momElectron[0],momElectron[1],momElectron[2]);
2442 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2445 TLorentzVector electronCandidateTLV(vElectron,TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2446 TLorentzVector positronCandidateTLV(vPositron,TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2447 TLorentzVector gammaTLV(vGamma,0);
2448 TLorentzVector GammaElectronCandidateTLV = gammaTLV + electronCandidateTLV;
2449 TLorentzVector GammaPositronCandidateTLV = gammaTLV + positronCandidateTLV;
2450 Double_t sparesDalitzPlot[2] = {GammaElectronCandidateTLV.M()*GammaElectronCandidateTLV.M(),GammaPositronCandidateTLV.M()*GammaPositronCandidateTLV.M()};
2464 if( lGoodVirtualGamma[virtualGammaIndex] == kFALSE ) {
2467 if( pi0cand->M() > 0.1 && pi0cand->M() < 0.145 ){
2470 lGoodVirtualGamma[virtualGammaIndex] = kTRUE;
2490 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2499 if( lGoodVirtualGamma[virtualGammaIndex] == kFALSE ) {
2501 if( pi0cand->M() > 0.1 && pi0cand->M() < 0.145 ){
2504 lGoodVirtualGamma[virtualGammaIndex] = kTRUE;
2515 Double_t diffMass = pi0cand->M() - Vgamma->M();
2518 if( Vgamma->M() > 2.5 && Vgamma->M() < 3.4){
2565 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2598 delete backgroundCandidate;
2599 backgroundCandidate = 0x0;
2606 if(previousEventV0s){
2612 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2642 delete backgroundCandidate;
2643 backgroundCandidate = 0x0;
2676 Bool_t isTruePi0 = kFALSE;
2677 Bool_t isTrueEta = kFALSE;
2680 Int_t gammaMotherLabel = -1;
2689 if(gammaMCLabel != -1){
2693 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
2695 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2696 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
2697 if(gammaMC->GetPdgCode() == 22){
2698 gammaMotherLabel=gammaMC->GetFirstMother();
2709 Int_t virtualGammaMotherLabel = -1;
2710 Int_t virtualGamma = -1;
2714 if( virtualGammaMCLabel != -1 ){
2718 TParticle * virtualGammaMotherMC = (TParticle*)
fMCEvent->Particle(virtualGammaMCLabel);
2720 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2722 if( virtualGammaMotherMC->GetPdgCode() != 22 ){
2723 virtualGammaMotherLabel=virtualGammaMCLabel;
2726 }
else if (negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
2727 virtualGammaMotherLabel=virtualGammaMotherMC->GetFirstMother();
2737 if( gammaMotherLabel >= 0 && ( gammaMotherLabel == virtualGammaMotherLabel) ){
2738 if(((TParticle*)
fMCEvent->Particle(virtualGammaMotherLabel))->GetPdgCode() == 111){
2742 if(((TParticle*)
fMCEvent->Particle(virtualGammaMotherLabel))->GetPdgCode() == 221){
2750 if( isTruePi0 || isTrueEta ){
2753 if ( virtualGamma == 1 ) {
2764 if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
2775 positronVgamma->GetConstrainedPxPyPz(momPositron);
2779 electronVgamma->GetConstrainedPxPyPz(momElectron);
2781 TVector3 vGamma(TrueGammaCandidate->
GetPx(),TrueGammaCandidate->
GetPy(),TrueGammaCandidate->
GetPz());;
2782 TVector3 vPositron(momPositron[0],momPositron[1],momPositron[2]);
2783 TVector3 vElectron(momElectron[0],momElectron[1],momElectron[2]);
2785 TLorentzVector electronCandidateTLV(vElectron,TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2786 TLorentzVector positronCandidateTLV(vPositron,TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2787 TLorentzVector gammaTLV(vGamma,0);
2788 TLorentzVector GammaElectronCandidateTLV = gammaTLV + electronCandidateTLV;
2789 TLorentzVector GammaPositronCandidateTLV = gammaTLV + positronCandidateTLV;
2790 Double_t sparesDalitzPlot[2] = {GammaElectronCandidateTLV.M()*GammaElectronCandidateTLV.M(),GammaPositronCandidateTLV.M()*GammaPositronCandidateTLV.M()};
2801 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
2811 if(gammaMotherLabel < fMCEvent->GetNumberOfPrimaries()){
2822 Int_t secMotherLabel = ((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->GetMother(0);
2829 }
else if ( virtualGamma == 0 ){
2839 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
2847 if( gammaMotherLabel < fMCEvent->GetNumberOfPrimaries() ){
2852 Int_t secMotherLabel = ((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->GetMother(0);
2862 if( !isTruePi0 && !isTrueEta ){
2863 if( gammaMotherLabel > -1 && virtualGammaMotherLabel > -1 && virtualGamma == 0 ){
2885 Int_t gammaMotherLabel = -1;
2889 if( gammaMCLabel != -1){
2894 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
2896 if( TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11 ){
2897 if( negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() == 5 ){
2898 if(gammaMC->GetPdgCode() == 22){
2899 gammaMotherLabel=gammaMC->GetFirstMother();
2910 Int_t jpsiMotherLabel = -1;
2914 if( jpsiMCLabel != -1 ){
2918 TParticle * jpsiMC = (TParticle*)
fMCEvent->Particle(jpsiMCLabel);
2920 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2923 if(jpsiMC->GetPdgCode() == 443){
2925 jpsiMotherLabel=jpsiMC->GetFirstMother();
2934 if( gammaMotherLabel>=0 && ( gammaMotherLabel == jpsiMotherLabel) ){
2935 if( ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 445 ||
2936 ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 10443 ||
2937 ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 20443 ){
2952 previousEventEP=previousEventEP+TMath::Pi();
2953 thisEventEP=thisEventEP+TMath::Pi();
2954 Double_t rotationValue= thisEventEP-previousEventEP;
2955 gamma->RotateZ(rotationValue);
2976 Bool_t selectPrimaries=kTRUE;
2977 AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
2978 EsdTrackCuts->SetMaxDCAToVertexZ(2);
2979 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
2980 EsdTrackCuts->SetPtRange(0.15);
2984 for(
Int_t iTracks = 0; iTracks <
fESDEvent->GetNumberOfTracks(); iTracks++){
2985 AliESDtrack* curTrack =
fESDEvent->GetTrack(iTracks);
2986 if(!curTrack)
continue;
2989 delete EsdTrackCuts;
3001 for(
Int_t i = 0; i <
fMCEvent->GetNumberOfPrimaries(); i++) {
3003 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
3004 if (!particle)
continue;
3006 Bool_t mcIsFromMB = kTRUE;
3007 Int_t isMCFromMBHeader = -1;
3012 if(isMCFromMBHeader != 2) mcIsFromMB = kFALSE;
3055 if( particle->GetPdgCode() == -11) {
3059 if ( particle->GetMother(0) > -1 && particle->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
3067 if( particle->GetPdgCode() == 11){
3071 if ( particle->GetMother(0) > -1 && particle->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
3086 if (particle->Pt()>0.005){
3091 if(particle->GetPdgCode() == 111)
hMCPi0GGPt[
fiCut]->Fill( particle->Pt() , weighted);
3092 if(particle->GetPdgCode() == 221)
hMCEtaGGPt[
fiCut]->Fill( particle->Pt() , weighted);
3096 Int_t labelgamma = -1;
3097 Int_t labelelectron = -1;
3098 Int_t labelpositron = -1;
3105 if (particle->Pt()>0.005){
3110 if(particle->GetPdgCode() == 111){
3115 if(particle->GetPdgCode() == 221)
hMCEtaPt[
fiCut]->Fill(particle->Pt(), weighted);
3119 TParticle *gamma =
fMCEvent->Particle(labelgamma);
3120 TParticle *electron =
fMCEvent->Particle(labelelectron);
3121 TParticle *positron =
fMCEvent->Particle(labelpositron);
3136 TLorentzVector TLVEpos,TLVEneg,TLVgamma,TLVDalitz,TLVGammaEpos,TLVGammaEneg;
3137 Double_t electronMass = TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass();
3138 TLVEpos.SetXYZM(positron->Px(),positron->Py(),positron->Pz(),electronMass);
3139 TLVEneg.SetXYZM(electron->Px(),electron->Py(),electron->Pz(),electronMass);
3140 TLVgamma.SetXYZM(gamma->Px(),gamma->Py(),gamma->Pz(),0);
3142 TVector3 V3gamma(gamma->Px(),gamma->Py(),gamma->Pz());
3143 angleGammaEpos = V3gamma.Angle(TLVEpos.Vect());
3144 angleGammaEneg = V3gamma.Angle(TLVEneg.Vect());
3146 TLVDalitz = TLVEpos + TLVEneg ;
3147 massDalitz = TLVDalitz.M();
3148 TLVGammaEpos = TLVEpos + TLVgamma;
3149 TLVGammaEneg = TLVEneg + TLVgamma;
3151 massGammaEpos = TLVGammaEpos.M();
3152 massGammaEneg = TLVGammaEneg.M();
3158 if(particle->GetPdgCode() == 111){
3176 Double_t sMCDalitzPlot[2] = {massGammaEneg*massGammaEneg,massGammaEpos*massGammaEpos};
3184 if(particle->GetPdgCode() == 221){
3191 Int_t labelgammaChiC=-1;
3192 Int_t labelpositronChiC=-1;
3193 Int_t labelelectronChiC=-1;
3198 TParticle * gammaChiC =
fMCEvent->Particle(labelgammaChiC);
3213 if( fMCMother->GetNDaughters() != 3 )
return kFALSE;
3214 if( fMCMother->GetPdgCode() != 111 && fMCMother->GetPdgCode() != 221 )
return kFALSE;
3217 TParticle *positron = 0x0;
3218 TParticle *electron = 0x0;
3219 TParticle *gamma = 0x0;
3221 for(
Int_t index= fMCMother->GetFirstDaughter();index<= fMCMother->GetLastDaughter();index++){
3222 TParticle* temp = (TParticle*)
fMCEvent->Particle( index );
3223 switch( temp->GetPdgCode() ) {
3236 if( positron && electron && gamma)
return kTRUE;
3247 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
3249 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
3251 TParticle* mother =
fMCEvent->Particle( motherLabel );
3253 if( mother->GetPdgCode() != 111 )
return kFALSE;
3255 if(
IsDalitz( mother ) )
return kTRUE;
3264 AliESDtrack *positronVgamma = 0;
3265 AliESDtrack *electronVgamma = 0;
3274 Double_t nCrossedRowsTPCPos = -1.0;
3275 Double_t nCrossedRowsTPCNeg = -1.0;
3277 Float_t dcaToVertexXYPos = -1.0;
3278 Float_t dcaToVertexZPos = -1.0;
3279 Float_t dcaToVertexXYNeg = -1.0;
3280 Float_t dcaToVertexZNeg = -1.0;
3293 NumClsITSPos = positronVgamma->GetNcls(0);
3294 NumClsITSNeg = electronVgamma->GetNcls(0);
3295 NumClsTPCPos = positronVgamma->GetNcls(1);
3296 NumClsTPCNeg = electronVgamma->GetNcls(1);
3298 nCrossedRowsTPCPos = positronVgamma->GetTPCCrossedRows();
3299 nCrossedRowsTPCNeg = electronVgamma->GetTPCCrossedRows();
3303 positronVgamma->GetImpactParameters(bPos,bCovPos);
3305 if (bCovPos[0]<=0 || bCovPos[2]<=0) {
3306 AliDebug(1,
"Estimated b resolution lower or equal zero!");
3307 bCovPos[0]=0; bCovPos[2]=0;
3312 positronVgamma->GetImpactParameters(bNeg,bCovNeg);
3314 if (bCovNeg[0]<=0 || bCovNeg[2]<=0) {
3315 AliDebug(1,
"Estimated b resolution lower or equal zero!");
3316 bCovNeg[0]=0; bCovNeg[2]=0;
3319 dcaToVertexXYPos = bPos[0];
3320 dcaToVertexZPos = bPos[1];
3321 dcaToVertexXYNeg = bNeg[0];
3322 dcaToVertexZNeg = bNeg[1];
3324 if( electronVgamma->P() > 0.3 && electronVgamma->P() < 0.45 ){
3332 if( positronVgamma->P() > 0.3 && positronVgamma->P() < 0.45 ){
3387 TVector3 posDaughter;
3388 TVector3 negDaughter;
3390 posDaughter.SetXYZ( fMCPosParticle->Px(), fMCPosParticle->Py(), fMCPosParticle->Pz() );
3391 negDaughter.SetXYZ( fMCNegParticle->Px(), fMCNegParticle->Py(), fMCNegParticle->Pz() );
3393 Double_t deltaTheta = negDaughter.Theta() - posDaughter.Theta();
3394 Double_t openingAngle = posDaughter.Angle( negDaughter );
3396 if( openingAngle < 1e-20 )
return 0.;
3398 Double_t psiAngle = TMath::ASin( deltaTheta/openingAngle );
3420 if( trackPos->GetConstrainedPxPyPz(momPos) == 0 ) trackPos->GetPxPyPz( momPos );
3421 if( trackNeg->GetConstrainedPxPyPz(momNeg) == 0 ) trackNeg->GetPxPyPz( momNeg );
3423 TVector3 posDaughter;
3424 TVector3 negDaughter;
3426 posDaughter.SetXYZ( momPos[0], momPos[1], momPos[2] );
3427 negDaughter.SetXYZ( momNeg[0], momNeg[1], momNeg[2] );
3429 Double_t deltaTheta = negDaughter.Theta() - posDaughter.Theta();
3430 Double_t openingAngle = posDaughter.Angle( negDaughter );
3432 if( openingAngle < 1e-20 )
return 0.;
3434 Double_t psiAngle = TMath::ASin( deltaTheta/openingAngle );
3441 TAxis *axisafter = histoRebin->GetXaxis();
3442 Int_t bins = axisafter->GetNbins();
3443 Double_t from = axisafter->GetXmin();
3444 Double_t to = axisafter->GetXmax();
3447 Double_t factor = TMath::Power(to/from, 1./bins);
3448 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
3449 axisafter->Set(bins, newbins);
3457 if(tobechecked > -1)
3459 vector<Int_t>::iterator it;
3460 it = find (vec.begin(), vec.end(), tobechecked);
3461 if (it != vec.end())
return true;
3463 vec.push_back(tobechecked);
TParticle * GetMCParticle(AliMCEvent *mcEvent)
virtual Double_t GetPy() const
TH2F ** hESDTruePi0PtOpenAngle
void ProcessTruePhotonCandidates(AliAODConversionPhoton *)
void SetLogBinningXTH2(TH2 *histoRebin)
Int_t GetMCLabelPositive() const
TH2F ** hNGoodESDTracksVsNGoodVGammas
TH1F ** hESDDalitzElectronAfterPt
Bool_t fMoveParticleAccordingToVertex
TH1F ** hMCPi0DalitzPositronPt
vector< Int_t > fVectorDoubleCountTruePi0s
array of histos with double counted photons, R, pT
void SetLabels(Int_t label1, Int_t label2, Int_t label3=0)
TH1F ** hESDTruePi0DalitzConvGammaR
TH2F ** hESDTruePi0PtAlpha
TH2F ** hMCPi0EposEnegInvMassPt
GammaConversionVertex * GetBGEventVertex(Int_t zbin, Int_t mbin, Int_t event)
TH1F ** hESDDalitzElectronAfterNCrossedRowsTPCPCut
vector< Int_t > fSelectorElectronIndex
TH2F ** fHistoDoubleCountTruePi0InvMassPt
Double_t GetPsiPair(const AliESDtrack *trackPos, const AliESDtrack *trackNeg) const
void SetConversionPoint(Double_t convpoint[3])
vector< Int_t > GetReconstructedPositronsIndex()
TH2F ** hESDTrueSecondaryMotherInvMassPt
virtual Double_t GetPz() const
TH1F ** hESDEposEnegTruePrimPi0DalitzInvMass
TH2F ** hESDDalitzPosEleAfterDCAxy
TH2F ** hESDDalitzElectronAfterNFindClsTPC
void SetMCLabelNegative(Int_t label)
TH2F ** hESDDalitzElectronAfterNClsTPC
TH1F ** hMCPi0DalitzGammaPt
void MoveParticleAccordingToVertex(AliAODConversionPhoton *particle, const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex)
TH1F ** hESDDalitzPositronAfterNClsITSPCut
TH2F ** hESDDalitzPosEleAfterDCAz
THnSparseF ** sMCPi0DalitzPlot
TH2F ** hESDDalitzPositronAfterNFindClsTPC
Int_t fNumberOfESDTrackskBoth
TH1F ** hESDDalitzElectronAfterEta
TH2F ** hESDEposEnegLikeSignBackInvMassPt
Int_t GetNumberOfPrimaryTracks()
TH1F ** hMCDecayElectronPi0Pt
TH2F ** hESDMotherPi0PtAlpha
TH2F ** fHistoDoubleCountTrueEtaInvMassPt
array of histos with double counted pi0s, invMass, pT
void RotateParticleAccordingToEP(AliAODConversionPhoton *gamma, Double_t previousEventEP, Double_t thisEventEP)
THnSparseF ** sESDTruePi0DalitzPlot
TH1F ** hESDDalitzElectronAfterPhi
TH2F ** hESDTruePrimaryPi0DalitzESDPtMCPt
TH2F ** hESDEposEnegTruePi0DalitzPsiPairDPhi
TH2F ** hESDDalitzPositronAfterTPCdEdxSignalVsP
void CalculatePi0DalitzCandidates()
TH1F ** hESDTruePi0DalitzConvGammaPt
Double_t GetConversionZ() const
TH1F ** hESDDalitzElectronAfterNFindClsTPCPCut
TH2F ** hESDDalitzPositronAfterTPCdEdxVsP
virtual ~AliAnalysisTaskGammaConvDalitzV1()
void ProcessElectronCandidates()
TH2F ** hESDTrueMotherChiCDiffInvMassPt
TH1F ** hESDTrueConvGammaPt
TH2F ** hESDMotherPi0PtOpenAngle
TH1F ** hESDTrueConvGammaRMC
TParticle * GetPositiveMCDaughter(AliMCEvent *mcEvent)
TH1F ** hESDDalitzPositronAfterPt
Bool_t fDoHistoDalitzMassLog
THnSparseF ** sESDMotherDalitzPlot
TH1F ** hESDDalitzElectronPhi
vector< Int_t > fSelectorPositronIndex
TH1F ** hMCAllPositronsPt
TH1F ** hESDDalitzElectronPt
TH1F ** hESDEposEnegTruePi0DalitzPsiPairMC
TList * fCutElectronArray
TH1F ** hMCAllPositronsEta
TH2F ** hESDTrueBckContInvMassPt
TH2F ** hESDTruePrimaryMotherInvMassMCPt
void FillElectronQAHistos(AliAODConversionPhoton *Vgamma) const
TH1F ** hESDDalitzElectronAfterNClsTPCPCut
THnSparseF ** sESDConvGammaZR
void ProcessVirtualGammasCandidates()
TH1F ** hESDDalitzPositronPhi
TClonesArray * fReaderGammas
TH2F ** hESDEposEnegTrueEtaDalitzInvMassPt
Bool_t fSetProductionVertextoVGamma
TH2F ** hESDEposEnegPsiPairDPhi
TH2F ** hESDTrueMotherInvMassPt
Bool_t GetProduceV0FindingEfficiency()
TParticle * GetNegativeMCDaughter(AliMCEvent *mcEvent)
virtual void Terminate(const Option_t *)
TH1F ** hESDTruePositronPt
TH1F ** hMCPi0DalitzElectronPt
std::vector< AliAODConversionPhoton * > AliGammaConversionAODVector
vector< Int_t > fVectorDoubleCountTrueEtas
vector containing labels of validated pi0
TH1F ** hESDDalitzPositronPt
TH1F ** hMCAllElectronsEta
TH2F ** hESDDalitzElectronAfterTPCdEdxVsPhi
void ProcessPhotonCandidates()
TH2F ** hESDEposEnegTrueInvMassPt
TH2F ** hESDEposEnegInvMassPt
TH1F ** hESDEposEnegTruePrimEtaDalitzInvMass
vector< Int_t > GetReconstructedElectronsIndex()
void SetMCLabelPositive(Int_t label)
TH1F ** hESDTrueConvGammaR
TH2F ** hMCEtaEposEnegInvMassPt
void AddEvent(TList *const eventGammas, Double_t xvalue, Double_t yvalue, Double_t zvalue, Int_t multiplicity, Double_t epvalue=-100)
Int_t GetTrackLabelNegative() const
TH1F ** hESDDalitzElectronAfterNClsITS
TH1F ** hMCPi0WOWeightInAccPt
TH1F ** hESDTrueElectronPt
TH1F ** hESDTrueConvGammaPtMC
TH2F ** hESDPi0MotherDiffInvMassPt
TH2F ** hESDEposEnegTruePi0DalitzDPhiEta
TH2F ** hESDTruePrimaryMotherW0WeightingInvMassPt
TH1F ** hESDDalitzElectronAfterNClsITSPCut
TH2F ** fHistoDoubleCountTrueConvGammaRPt
array of histos with double counted etas, invMass, pT
TH1I ** hNV0Tracks
array of histos with SPD tracklets vs SPD clusters for background rejection
TH2F ** hESDEposEnegTruePhotonInvMassPt
Int_t GetTrackLabelPositive() const
TH1F ** hESDTruePi0DalitzElectronPt
AliConversionPhotonCuts * GetConversionCuts()
TH1F ** hESDDalitzPositronAfterNClsTPCPCut
TH2F ** hESDEposEnegDPhiEta
TH1F ** hMCPi0InAccOpeningAngleGammaElectron
AliAnalysisTaskGammaConvDalitzV1()
vector< Int_t > fVectorDoubleCountTrueConvGammas
vector containing labels of validated eta
TH2F ** hESDPi0MotherDiffLimInvMassPt
TH2F ** hESDPi0MotherInvMassPt
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** hESDTrueBckGGInvMassPt
TH2F ** hESDEposEnegTruePi0DalitzPsiPairEta
TH2F ** hESDDalitzPositronAfterNClsTPC
TH1F ** hMCConvGammaPi0Pt
TH2F ** hESDEposEnegTrueMotherInvMassPt
Int_t GetMCParticleLabel(AliMCEvent *mcEvent)
TH1F ** hESDTruePi0DalitzSecConvGammaPt
TH2F ** hESDEposEnegTrueJPsiInvMassPt
THnSparseF ** sESDMotherInvMassPtZM
Double_t GetOpeningAngle() const
TH1F ** hESDDalitzElectronAfterEtaPCut
TH1F ** hESDDalitzPositronAfterNClsITS
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
TH2F ** hESDEposEnegTruePhotonPsiPairDPhi
THnSparseF ** sESDMotherBackInvMassPtZM
TH2F ** hESDMotherBackInvMassPt
TH1F ** hESDTruePi0DalitzSecPositronPt
TH2F ** hESDTruePrimaryMotherPi0GGInvMassPt
AliDalitzElectronCuts * GetDalitzElectronCuts()
Int_t GetMCLabelNegative() const
TH2F ** hESDEposEnegTruePhotonPsiPairDPhiPtCut
Int_t GetNBGEvents() const
void UpdateEventByEventData()
TH2F ** hESDDalitzElectronAfterNCrossedRowsTPC
void SetMass(Float_t mass)
TH2F ** hNGoodESDTracksVsNGoodGammas
TH2F ** hESDDalitzElectronAfterTPCdEdxSignalVsP
TH2F ** hESDEposEnegTrueEtaDalitzPsiPairDPhi
Double_t GetConversionY() const
Int_t GetZBinIndex(Double_t z) const
TH2F ** fHistoSPDClusterTrackletBackground
void SetTrackLabels(Int_t label1, Int_t label2)
AliGammaConversionAODVector * GetBGGoodV0s(Int_t zbin, Int_t mbin, Int_t event)
TH2F ** hESDTrueMotherChiCInvMassPt
virtual Double_t GetPx() const
TH1F ** hESDDalitzPositronAfterEta
TH2F ** hESDTrueMotherDalitzInvMassPt
TH1F ** hESDDalitzPositronAfterEtaPCut
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH2F ** hESDDalitzPositronAfterTPCdEdxVsPhi
Double_t GetAlpha() const
TClonesArray * GetReconstructedGammas() const
TH2F ** hESDTrueMotherPi0GGInvMassPt
TH2F ** hESDEposEnegTruePi0DalitzInvMassPt
THnSparseF ** sESDConvGammaXY
Bool_t fDoMaterialBudgetWeightingOfGammasForTrueMesons
TH2F ** hESDTrueMotherPi0GGW0WeightsInvMassPt
TH1F ** hESDTruePi0DalitzSecElectronPt
TH1F ** hESDTrueSecConvGammaPt
Bool_t IsPi0DalitzDaughter(Int_t label) const
Class handling all kinds of selection cuts for Gamma Conversion analysis.
TH1F ** hESDTruePi0DalitzPositronPtMB
TH2F ** hESDMotherInvMassPt
Bool_t IsDalitz(TParticle *fMCMother) const
virtual void UserExec(Option_t *)
TH1F ** hMCDecayPositronPi0Pt
AliConvEventCuts * GetEventCuts()
Int_t GetMultiplicityBinIndex(Int_t mult) const
TList * fGoodVirtualGammas
AliDalitzElectronSelector * fElecSelector
void ProcessTrueChicCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate, AliAODConversionPhoton *TruejpsiCandidate)
TH1F ** hMCAllElectronsPt
AliV0ReaderV1 * fV0Reader
Double_t fEventPlaneAngle
Bool_t CheckVectorForDoubleCount(vector< Int_t > &vec, Int_t tobechecked)
TH2F ** hESDDalitzPositronAfterNCrossedRowsTPC
void CalculateBackground()
TH1F ** hESDMotherInvMassOpeningAngleGammaElectron
void ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate, AliAODConversionPhoton *TrueVirtualGammaCandidate)
void ProcessMCParticles()
Double_t GetPsiPairMC(const TParticle *fMCPosParticle, const TParticle *fMCNegParticle) const
TH1F ** hESDTrueSecPositronPt
TH1F ** hESDTruePi0DalitzElectronPtMB
TH2F ** hESDDalitzElectronAfterTPCdEdxVsP
void CalculateDistanceOfClossetApproachToPrimVtx(const AliVVertex *primVertex)
AliGammaConversionAODBGHandler ** fBGHandler
TH2F ** hESDTruePrimaryMotherInvMassPt
TH2F ** hESDTrueSecondaryMotherFromK0sInvMassPt
TH1F ** hESDDalitzPositronAfterPhi
TH1F ** hESDTrueSecElectronPt
TH1F ** hESDTruePi0DalitzPositronPt
Double_t GetConversionRadius() const
TH2F ** hESDDalitzPositronAfterTPCdEdxVsEta
Double_t GetConversionX() const
TH1F ** hESDDalitzPositronAfterNFindClsTPCPCut
virtual void UserCreateOutputObjects()
TH2F ** hESDTrueSecondaryMotherPi0GGInvMassPt
TH2F ** hESDDalitzElectronAfterTPCdEdxVsEta
TH2F ** hESDTrueMotherGGInvMassPt
TList * GetV0FindingEfficiencyHistograms()
TH2F ** hESDTrueMotherW0WeightsInvMassPt
TH2F ** hESDTruePi0EposEnegInvMassPi0Pt
TH2F ** hESDEposEnegPsiPairEta
TH1F ** hESDDalitzPositronAfterNCrossedRowsTPCPCut