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 hESDEposEnegInvMassPi0MotherPt(NULL),
143 hESDMotherInvMassOpeningAngleGammaElectron(NULL),
144 sESDMotherInvMassPtZM(NULL),
145 hESDMotherBackInvMassPt(NULL),
146 sESDMotherBackInvMassPtZM(NULL),
147 hESDMotherPi0PtY(NULL),
148 hESDMotherPi0PtAlpha(NULL),
149 hESDMotherPi0PtOpenAngle(NULL),
150 sESDMotherDalitzPlot(NULL),
152 hMCAllGammaPi0Pt(NULL),
153 hMCConvGammaPt(NULL),
154 hMCConvGammaPtR(NULL),
155 hMCConvGammaRSPt(NULL),
156 hMCConvGammaPi0Pt(NULL),
157 hMCAllPositronsPt(NULL),
158 hMCDecayPositronPi0Pt(NULL),
159 hMCAllElectronsPt(NULL),
160 hMCDecayElectronPi0Pt(NULL),
161 hMCConvGammaEta(NULL),
163 hMCAllPositronsEta(NULL),
164 hMCAllElectronsEta(NULL),
165 hMCPi0DalitzGammaPt(NULL),
166 hMCPi0DalitzElectronPt(NULL),
167 hMCPi0DalitzPositronPt(NULL),
169 hMCPi0WOWeightPt(NULL),
174 hMCPi0WOWeightInAccPt(NULL),
175 hMCPi0InAccOpeningAngleGammaElectron(NULL),
176 sMCPi0DalitzPlot(NULL),
179 hMCChiCInAccPt(NULL),
180 hMCPi0EposEnegInvMassPt(NULL),
181 hMCEtaEposEnegInvMassPt(NULL),
182 hESDEposEnegTruePi0DalitzInvMassPt(NULL),
183 hESDEposEnegTruePrimPi0DalitzInvMass(NULL),
184 hESDEposEnegTruePi0DalitzPsiPairDPhi(NULL),
185 hESDEposEnegTruePi0DalitzPsiPairMC(NULL),
186 hESDEposEnegTruePi0DalitzPsiPairEta(NULL),
187 hESDEposEnegTruePi0DalitzDPhiEta(NULL),
188 hESDEposEnegTrueEtaDalitzInvMassPt(NULL),
189 hESDEposEnegTruePrimEtaDalitzInvMass(NULL),
190 hESDEposEnegTrueEtaDalitzPsiPairDPhi(NULL),
191 hESDEposEnegTruePhotonInvMassPt(NULL),
192 hESDEposEnegTrueInvMassPt(NULL),
193 hESDEposEnegTrueMotherInvMassPt(NULL),
194 hESDEposEnegTruePhotonPsiPairDPhi(NULL),
195 hESDEposEnegTruePhotonPsiPairDPhiPtCut(NULL),
196 hESDEposEnegTrueJPsiInvMassPt(NULL),
197 hESDTrueMotherChiCInvMassPt(NULL),
198 hESDTrueMotherChiCDiffInvMassPt(NULL),
199 hESDTrueMotherInvMassPt(NULL),
200 hESDTrueMotherW0WeightsInvMassPt(NULL),
201 hESDTrueMotherDalitzInvMassPt(NULL),
202 hESDTrueMotherPi0GGInvMassPt(NULL),
203 hESDTrueMotherPi0GGW0WeightsInvMassPt(NULL),
204 hESDTruePi0PtY(NULL),
205 hESDTruePi0PtAlpha(NULL),
206 hESDTruePi0PtOpenAngle(NULL),
207 sESDTruePi0DalitzPlot(NULL),
208 hESDTruePrimaryMotherPi0GGInvMassPt(NULL),
209 hESDTrueSecondaryMotherPi0GGInvMassPt(NULL),
210 hESDTruePrimaryMotherInvMassMCPt(NULL),
211 hESDTruePrimaryMotherInvMassPt(NULL),
212 hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
213 hESDTruePrimaryPi0DalitzESDPtMCPt(NULL),
214 hESDTrueSecondaryMotherInvMassPt(NULL),
215 hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
216 hESDTrueBckGGInvMassPt(NULL),
217 hESDTrueBckContInvMassPt(NULL),
218 hESDTrueMotherGGInvMassPt(NULL),
219 hESDTrueConvGammaPt(NULL),
220 hESDTrueConvGammaPtMC(NULL),
221 hESDTrueConvGammaR(NULL),
222 hESDTrueConvGammaRMC(NULL),
223 hESDTruePositronPt(NULL),
224 hESDTrueElectronPt(NULL),
225 hESDTrueSecConvGammaPt(NULL),
226 hESDTrueSecPositronPt(NULL),
227 hESDTrueSecElectronPt(NULL),
228 hESDTruePi0DalitzConvGammaPt(NULL),
229 hESDTruePi0DalitzConvGammaR(NULL),
230 hESDTruePi0DalitzPositronPt(NULL),
231 hESDTruePi0DalitzPositronPtMB(NULL),
232 hESDTruePi0DalitzElectronPt(NULL),
233 hESDTruePi0DalitzElectronPtMB(NULL),
234 hESDTruePi0DalitzSecConvGammaPt(NULL),
235 hESDTruePi0DalitzSecPositronPt(NULL),
236 hESDTruePi0DalitzSecElectronPt(NULL),
238 hNGoodESDTracks(NULL),
239 hNGoodESDTracksVsNGoodGammas(NULL),
240 hNGoodESDTracksVsNGoodVGammas(NULL),
241 fHistoSPDClusterTrackletBackground(NULL),
244 fHistoDoubleCountTruePi0InvMassPt(NULL),
245 fHistoDoubleCountTrueEtaInvMassPt(NULL),
246 fHistoDoubleCountTrueConvGammaRPt(NULL),
247 fVectorDoubleCountTruePi0s(0),
248 fVectorDoubleCountTrueEtas(0),
249 fVectorDoubleCountTrueConvGammas(0),
251 fEventPlaneAngle(-100),
262 fNumberOfESDTracks(0),
263 fNumberOfESDTrackskBoth(0),
265 fMoveParticleAccordingToVertex(kFALSE),
267 fDoMesonAnalysis(kTRUE),
268 fDoChicAnalysis(kFALSE),
270 fSetProductionVertextoVGamma(kTRUE),
271 fIsFromMBHeader(kTRUE),
274 fDoHistoDalitzMassLog(kFALSE),
275 fDoMaterialBudgetWeightingOfGammasForTrueMesons(kFALSE)
284 fV0ReaderName(
"V0ReaderV1"),
298 fSelectorElectronIndex(0),
299 fSelectorPositronIndex(0),
301 fGoodVirtualGammas(NULL),
302 fGoodElectrons(NULL),
303 fGoodPositrons(NULL),
304 fCutEventArray(NULL),
305 fCutGammaArray(NULL),
306 fCutElectronArray(NULL),
307 fCutMesonArray(NULL),
309 fConversionCuts(NULL),
310 hESDConvGammaPt(NULL),
311 hESDConvGammaEta(NULL),
313 sESDConvGammaZR(NULL),
314 sESDConvGammaXY(NULL),
315 hESDDalitzElectronPt(NULL),
316 hESDDalitzPositronPt(NULL),
317 hESDDalitzElectronPhi(NULL),
318 hESDDalitzPositronPhi(NULL),
319 hESDDalitzElectronAfterPt(NULL),
320 hESDDalitzPositronAfterPt(NULL),
321 hESDDalitzElectronAfterEta(NULL),
322 hESDDalitzElectronAfterEtaPCut(NULL),
323 hESDDalitzPositronAfterEta(NULL),
324 hESDDalitzPositronAfterEtaPCut(NULL),
325 hESDDalitzElectronAfterPhi(NULL),
326 hESDDalitzPositronAfterPhi(NULL),
327 hESDDalitzElectronAfterNClsITS(NULL),
328 hESDDalitzElectronAfterNClsITSPCut(NULL),
329 hESDDalitzPositronAfterNClsITS(NULL),
330 hESDDalitzPositronAfterNClsITSPCut(NULL),
331 hESDDalitzElectronAfterNFindClsTPC(NULL),
332 hESDDalitzElectronAfterNFindClsTPCPCut(NULL),
333 hESDDalitzPositronAfterNFindClsTPC(NULL),
334 hESDDalitzPositronAfterNFindClsTPCPCut(NULL),
335 hESDDalitzElectronAfterNClsTPC(NULL),
336 hESDDalitzElectronAfterNClsTPCPCut(NULL),
337 hESDDalitzPositronAfterNClsTPC(NULL),
338 hESDDalitzPositronAfterNClsTPCPCut(NULL),
339 hESDDalitzElectronAfterNCrossedRowsTPC(NULL),
340 hESDDalitzElectronAfterNCrossedRowsTPCPCut(NULL),
341 hESDDalitzPositronAfterNCrossedRowsTPC(NULL),
342 hESDDalitzPositronAfterNCrossedRowsTPCPCut(NULL),
343 hESDDalitzPosEleAfterDCAxy(NULL),
344 hESDDalitzPosEleAfterDCAz(NULL),
345 hESDDalitzElectronAfterTPCdEdxVsP(NULL),
346 hESDDalitzPositronAfterTPCdEdxVsP(NULL),
347 hESDDalitzElectronAfterTPCdEdxSignalVsP(NULL),
348 hESDDalitzPositronAfterTPCdEdxSignalVsP(NULL),
349 hESDDalitzElectronAfterTPCdEdxVsEta(NULL),
350 hESDDalitzPositronAfterTPCdEdxVsEta(NULL),
351 hESDDalitzElectronAfterTPCdEdxVsPhi(NULL),
352 hESDDalitzPositronAfterTPCdEdxVsPhi(NULL),
353 hESDEposEnegPsiPairDPhi(NULL),
354 hESDEposEnegPsiPairEta(NULL),
355 hESDEposEnegDPhiEta(NULL),
356 hESDEposEnegInvMassPt(NULL),
357 hESDTruePi0EposEnegInvMassPi0Pt(NULL),
358 hESDEposEnegLikeSignBackInvMassPt(NULL),
359 hESDMotherInvMassPt(NULL),
360 hESDPi0MotherInvMassPt(NULL),
361 hESDPi0MotherDiffInvMassPt(NULL),
362 hESDPi0MotherDiffLimInvMassPt(NULL),
363 hESDEposEnegInvMassPi0MotherPt(NULL),
364 hESDMotherInvMassOpeningAngleGammaElectron(NULL),
365 sESDMotherInvMassPtZM(NULL),
366 hESDMotherBackInvMassPt(NULL),
367 sESDMotherBackInvMassPtZM(NULL),
368 hESDMotherPi0PtY(NULL),
369 hESDMotherPi0PtAlpha(NULL),
370 hESDMotherPi0PtOpenAngle(NULL),
371 sESDMotherDalitzPlot(NULL),
373 hMCAllGammaPi0Pt(NULL),
374 hMCConvGammaPt(NULL),
375 hMCConvGammaPtR(NULL),
376 hMCConvGammaRSPt(NULL),
377 hMCConvGammaPi0Pt(NULL),
378 hMCAllPositronsPt(NULL),
379 hMCDecayPositronPi0Pt(NULL),
380 hMCAllElectronsPt(NULL),
381 hMCDecayElectronPi0Pt(NULL),
382 hMCConvGammaEta(NULL),
384 hMCAllPositronsEta(NULL),
385 hMCAllElectronsEta(NULL),
386 hMCPi0DalitzGammaPt(NULL),
387 hMCPi0DalitzElectronPt(NULL),
388 hMCPi0DalitzPositronPt(NULL),
390 hMCPi0WOWeightPt(NULL),
395 hMCPi0WOWeightInAccPt(NULL),
396 hMCPi0InAccOpeningAngleGammaElectron(NULL),
397 sMCPi0DalitzPlot(NULL),
400 hMCChiCInAccPt(NULL),
401 hMCPi0EposEnegInvMassPt(NULL),
402 hMCEtaEposEnegInvMassPt(NULL),
403 hESDEposEnegTruePi0DalitzInvMassPt(NULL),
404 hESDEposEnegTruePrimPi0DalitzInvMass(NULL),
405 hESDEposEnegTruePi0DalitzPsiPairDPhi(NULL),
406 hESDEposEnegTruePi0DalitzPsiPairMC(NULL),
407 hESDEposEnegTruePi0DalitzPsiPairEta(NULL),
408 hESDEposEnegTruePi0DalitzDPhiEta(NULL),
409 hESDEposEnegTrueEtaDalitzInvMassPt(NULL),
410 hESDEposEnegTruePrimEtaDalitzInvMass(NULL),
411 hESDEposEnegTrueEtaDalitzPsiPairDPhi(NULL),
412 hESDEposEnegTruePhotonInvMassPt(NULL),
413 hESDEposEnegTrueInvMassPt(NULL),
414 hESDEposEnegTrueMotherInvMassPt(NULL),
415 hESDEposEnegTruePhotonPsiPairDPhi(NULL),
416 hESDEposEnegTruePhotonPsiPairDPhiPtCut(NULL),
417 hESDEposEnegTrueJPsiInvMassPt(NULL),
418 hESDTrueMotherChiCInvMassPt(NULL),
419 hESDTrueMotherChiCDiffInvMassPt(NULL),
420 hESDTrueMotherInvMassPt(NULL),
421 hESDTrueMotherW0WeightsInvMassPt(NULL),
422 hESDTrueMotherDalitzInvMassPt(NULL),
423 hESDTrueMotherPi0GGInvMassPt(NULL),
424 hESDTrueMotherPi0GGW0WeightsInvMassPt(NULL),
425 hESDTruePi0PtY(NULL),
426 hESDTruePi0PtAlpha(NULL),
427 hESDTruePi0PtOpenAngle(NULL),
428 sESDTruePi0DalitzPlot(NULL),
429 hESDTruePrimaryMotherPi0GGInvMassPt(NULL),
430 hESDTrueSecondaryMotherPi0GGInvMassPt(NULL),
431 hESDTruePrimaryMotherInvMassMCPt(NULL),
432 hESDTruePrimaryMotherInvMassPt(NULL),
433 hESDTruePrimaryMotherW0WeightingInvMassPt(NULL),
434 hESDTruePrimaryPi0DalitzESDPtMCPt(NULL),
435 hESDTrueSecondaryMotherInvMassPt(NULL),
436 hESDTrueSecondaryMotherFromK0sInvMassPt(NULL),
437 hESDTrueBckGGInvMassPt(NULL),
438 hESDTrueBckContInvMassPt(NULL),
439 hESDTrueMotherGGInvMassPt(NULL),
440 hESDTrueConvGammaPt(NULL),
441 hESDTrueConvGammaPtMC(NULL),
442 hESDTrueConvGammaR(NULL),
443 hESDTrueConvGammaRMC(NULL),
444 hESDTruePositronPt(NULL),
445 hESDTrueElectronPt(NULL),
446 hESDTrueSecConvGammaPt(NULL),
447 hESDTrueSecPositronPt(NULL),
448 hESDTrueSecElectronPt(NULL),
449 hESDTruePi0DalitzConvGammaPt(NULL),
450 hESDTruePi0DalitzConvGammaR(NULL),
451 hESDTruePi0DalitzPositronPt(NULL),
452 hESDTruePi0DalitzPositronPtMB(NULL),
453 hESDTruePi0DalitzElectronPt(NULL),
454 hESDTruePi0DalitzElectronPtMB(NULL),
455 hESDTruePi0DalitzSecConvGammaPt(NULL),
456 hESDTruePi0DalitzSecPositronPt(NULL),
457 hESDTruePi0DalitzSecElectronPt(NULL),
459 hNGoodESDTracks(NULL),
460 hNGoodESDTracksVsNGoodGammas(NULL),
461 hNGoodESDTracksVsNGoodVGammas(NULL),
462 fHistoSPDClusterTrackletBackground(NULL),
465 fHistoDoubleCountTruePi0InvMassPt(NULL),
466 fHistoDoubleCountTrueEtaInvMassPt(NULL),
467 fHistoDoubleCountTrueConvGammaRPt(NULL),
468 fVectorDoubleCountTruePi0s(0),
469 fVectorDoubleCountTrueEtas(0),
470 fVectorDoubleCountTrueConvGammas(0),
472 fEventPlaneAngle(-100),
483 fNumberOfESDTracks(0),
484 fNumberOfESDTrackskBoth(0),
486 fMoveParticleAccordingToVertex(kFALSE),
488 fDoMesonAnalysis(kTRUE),
489 fDoChicAnalysis(kFALSE),
491 fSetProductionVertextoVGamma(kTRUE),
492 fIsFromMBHeader(kTRUE),
495 fDoHistoDalitzMassLog(kFALSE),
496 fDoMaterialBudgetWeightingOfGammasForTrueMesons(kFALSE)
498 DefineOutput(1, TList::Class());
508 cout<<
"Destructor"<<endl;
536 const Int_t nDim = 4;
537 Int_t nBins[nDim] = {800,250,7,4};
559 if(collisionSystem == 1 || collisionSystem == 2 ||
560 collisionSystem == 5 || collisionSystem == 8 ||
561 collisionSystem == 9){
562 centMin = centMin*10;
563 centMax = centMax*10;
564 if(centMax ==0 && centMax!=centMin) centMax=100;
566 else if(collisionSystem == 3 || collisionSystem == 6){
570 else if(collisionSystem == 4 || collisionSystem == 7){
571 centMin = ((centMin*5)+45);
572 centMax = ((centMax*5)+45);
577 fBackList[iCut]->SetName(Form(
"%s_%s_%s_%s Back histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
581 sESDMotherBackInvMassPtZM[iCut] =
new THnSparseF(
"Back_Back_InvMass_Pt_z_m",
"Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
585 fMotherList[iCut]->SetName(Form(
"%s_%s_%s_%s Mother histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
589 sESDMotherInvMassPtZM[iCut] =
new THnSparseF(
"Back_Mother_InvMass_Pt_z_m",
"Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax);
597 collisionSystem,centMin,centMax,
650 const Int_t nBinsMassPair = 800;
714 xMinMassPair = 0.001;
715 xMaxMassPair = 0.801;
743 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
748 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
751 hNEvents[iCut] =
new TH1I(
"NEvents",
"NEvents",13,-0.5,12.5);
752 hNEvents[iCut]->GetXaxis()->SetBinLabel(1,
"Accepted");
753 hNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
754 hNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Missing MC");
755 hNEvents[iCut]->GetXaxis()->SetBinLabel(4,
"Trigger");
756 hNEvents[iCut]->GetXaxis()->SetBinLabel(5,
"Vertex Z");
757 hNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
758 hNEvents[iCut]->GetXaxis()->SetBinLabel(7,
"Pile-Up");
759 hNEvents[iCut]->GetXaxis()->SetBinLabel(8,
"no SDD");
760 hNEvents[iCut]->GetXaxis()->SetBinLabel(9,
"no V0AND");
761 hNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problem");
762 hNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
763 hNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
773 else hNV0Tracks[iCut] =
new TH1I(
"V0 Multiplicity",
"V0 Multiplicity",1500,0,1500);
776 hEtaShift[iCut] =
new TProfile(
"Eta Shift",
"Eta Shift",1, -0.5,0.5);
779 hESDConvGammaPt[iCut] =
new TH1F(
"ESD_ConvGamma_Pt",
"ESD_ConvGamma_Pt",250,0,25);
782 hESDConvGammaEta[iCut] =
new TH1F(
"ESD_ConvGamma_Eta",
"ESD_ConvGamma_Eta",600,-1.5,1.5);
785 hESDDalitzElectronPt[iCut] =
new TH1F(
"ESD_DalitzElectron_Pt",
"ESD_DalitzElectron_Pt",1000,0,25);
788 hESDDalitzPositronPt[iCut] =
new TH1F(
"ESD_DalitzPositron_Pt",
"ESD_DalitzPositron_Pt",1000,0,25);
792 hESDDalitzElectronPhi[iCut] =
new TH1F(
"ESD_DalitzElectron_Phi",
"ESD_DalitzElectron_Phi",360,0,2*TMath::Pi());
795 hESDDalitzPositronPhi[iCut] =
new TH1F(
"ESD_DalitzPositron_Phi",
"ESD_DalitzPositron_Phi",360,0,2*TMath::Pi());
803 fQAFolder[iCut]->SetName(Form(
"%s_%s_%s_%s QA histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
806 const Int_t kPtBins=110;
808 const Int_t kPBins = 109;
817 for(
Int_t i=1;i<kPtBins+1;i++){
818 if(binsPtDummy[i-1]+0.05<1.01)
819 binsPtDummy[i]=binsPtDummy[i-1]+0.05;
821 binsPtDummy[i]=binsPtDummy[i-1]+0.1;
823 for(
Int_t i=1; i<kPBins+1;i++){
824 if( binsPDummy[i-1]+0.05<1.01)
825 binsPDummy[i] = binsPDummy[i-1]+0.05;
827 binsPDummy[i] = binsPDummy[i-1]+0.1;
858 hESDDalitzElectronAfterPhi[iCut] =
new TH1F(
"ESD_DalitzElectron_After_Phi",
"ESD_DalitzElectron_After_Phi",360,0,2*TMath::Pi());
861 hESDDalitzPositronAfterPhi[iCut] =
new TH1F(
"ESD_DalitzPositron_After_Phi",
"ESD_DalitzPositron_After_Phi",360,0,2*TMath::Pi());
954 hESDEposEnegDPhiEta[iCut] =
new TH2F(
"ESD_EposEneg_DPhi_Eta",
"ESD_EposEneg_DPhi_Eta",100,-1.0,1.0,600,-1.5,1.5);
958 hESDEposEnegInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_InvMassPt",
"ESD_EposEneg_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
969 const Int_t nDimRZ = 2;
970 Int_t nBinsRZ[nDimRZ] = { 1200, 800};
971 Double_t xMinRZ[nDimRZ] = { -150, 0};
972 Double_t xMaxRZ[nDimRZ] = { 150, 200};
974 const Int_t nDimXY = 2;
975 Int_t nBinsXY[nDimXY] = { 1200, 1200};
976 Double_t xMinXY[nDimXY] = { -150, -150};
977 Double_t xMaxXY[nDimXY] = { 150, 150};
979 sESDConvGammaZR[iCut] =
new THnSparseF(
"ESD_ConvGamma_ZR",
"ESD_ConvGamma_ZR",nDimRZ,nBinsRZ,xMinRZ,xMaxRZ);
982 sESDConvGammaXY[iCut] =
new THnSparseF(
"ESD_ConvGamma_XY",
"ESD_ConvGamma_XY",nDimXY,nBinsXY,xMinXY,xMaxXY);
986 const Int_t nDimDalPlot = 2;
987 Int_t nBinsDalPlot[nDimDalPlot] = { 4000, 4000};
988 Double_t xMinDalPlot[nDimDalPlot] = { 0, 0};
989 Double_t xMaxDalPlot[nDimDalPlot] = { 4.0, 4.0};
992 sESDMotherDalitzPlot[iCut] =
new THnSparseF(
"ESD_Mother_DalitzPlot",
"ESD_Mother_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
999 hESDMotherInvMassPt[iCut] =
new TH2F(
"ESD_DalitzMother_InvMass_Pt",
"ESD_DalitzMother_InvMass_Pt",800,0,0.8,250,0,25);
1007 hESDMotherPi0PtY[iCut] =
new TH2F(
"ESD_MotherPi0_Pt_Y",
"ESD_MotherPi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1168 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
1169 fMCList[iCut]->SetOwner(kTRUE);
1172 hMCAllGammaPt[iCut] =
new TH1F(
"MC_AllGamma_Pt",
"MC_AllGamma_Pt",250,0,25);
1175 hMCAllGammaPi0Pt[iCut] =
new TH1F(
"MC_AllGammaPi0_Pt",
"MC_AllGammaPi0_Pt",250,0,25);
1178 hMCConvGammaPt[iCut] =
new TH1F(
"MC_ConvGamma_Pt",
"MC_ConvGamma_Pt",250,0,25);
1181 hMCConvGammaRSPt[iCut] =
new TH1F(
"MC_ConvGamma_RS_Pt",
"MC_ConvGamma_RS_Pt",250,0,25);
1184 hMCConvGammaPi0Pt[iCut] =
new TH1F(
"MC_ConvGammaPi0_Pt",
"MC_ConvGammaPi0_Pt",250,0,25);
1187 hMCAllPositronsPt[iCut] =
new TH1F(
"MC_AllPositrons_Pt",
"MC_AllPositrons_Pt",1000,0,25);
1190 hMCDecayPositronPi0Pt[iCut] =
new TH1F(
"MC_DecayPositronPi0_Pt",
"MC_DecayPositronPi0_Pt",1000,0,25);
1193 hMCAllElectronsPt[iCut] =
new TH1F(
"MC_AllElectrons_Pt",
"MC_AllElectrons_Pt",1000,0,25);
1196 hMCDecayElectronPi0Pt[iCut] =
new TH1F(
"MC_DecayElectronPi0_Pt",
"MC_DecayElectronPi0_Pt",1000,0,25);
1199 hMCPi0DalitzGammaPt[iCut] =
new TH1F(
"MC_Pi0DalitzGamma_Pt",
"MC_Pi0DalitzGamma_Pt",250,0,25);
1204 hMCConvGammaEta[iCut] =
new TH1F(
"MC_ConvGamma_Eta",
"MC_ConvGamma_Eta",600,-1.5,1.5);
1206 hMCConvGammaR[iCut] =
new TH1F(
"MC_ConvGamma_R",
"MC_ConvGamma_R",800,0,200);
1208 hMCAllPositronsEta[iCut] =
new TH1F(
"MC_AllPositrons_Eta",
"MC_AllPositrons_Eta",600,-1.5,1.5);
1210 hMCAllElectronsEta[iCut] =
new TH1F(
"MC_AllElectrons_Eta",
"MC_AllElectrons_Eta",600,-1.5,1.5);
1212 hMCConvGammaPtR[iCut] =
new TH2F(
"MC_ConvGamma_Pt_R",
"MC_ConvGamma_Pt_R",250,0,25,180,0.,180.0);
1225 hMCPi0Pt[iCut] =
new TH1F(
"MC_Pi0_Pt",
"MC_Pi0_Pt",250,0,25);
1229 hMCPi0WOWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOWeights_Pt",
"MC_Pi0_WOWeights_Pt",250,0,25);
1233 hMCPi0GGPt[iCut] =
new TH1F(
"MC_Pi0_GG_Pt",
"MC_Pi0_GG_Pt",250,0,25);
1237 hMCEtaPt[iCut] =
new TH1F(
"MC_Eta_Pt",
"MC_Eta_Pt",250,0,25);
1241 hMCEtaGGPt[iCut] =
new TH1F(
"MC_Eta_GG_Pt",
"MC_Eta_GG_Pt",250,0,25);
1245 hMCPi0InAccPt[iCut] =
new TH1F(
"MC_Pi0DalitzInAcc_Pt",
"MC_Pi0DalitzInAcc_Pt",250,0,25);
1258 hMCEtaInAccPt[iCut] =
new TH1F(
"MC_EtaDalitzInAcc_Pt",
"MC_EtaDalitzInAcc_Pt",250,0,25);
1262 hMCChiCPt[iCut] =
new TH1F(
"MC_ChiC_Pt",
"MC_ChiC_Pt",250,0,25);
1265 hMCChiCInAccPt[iCut] =
new TH1F(
"MC_ChiCInAcc_Pt",
"MC_ChiCInAcc_Pt",250,0,25);
1276 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
1286 hESDEposEnegTruePrimPi0DalitzInvMass[iCut] =
new TH1F(
"ESD_EposEneg_TruePrimPi0Dalitz_InvMass",
"ESD_EposEneg_TruePrimPi0Dalitz_InvMass",nBinsMassPair,xMinMassPair,xMaxMassPair);
1289 hESDEposEnegTrueInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_True_InvMassPt",
"ESD_EposEneg_True_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1293 hESDEposEnegTrueMotherInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_TrueMother_InvMassPt",
"ESD_EposEneg_TrueMother_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1301 hESDEposEnegTruePrimEtaDalitzInvMass[iCut] =
new TH1F(
"ESD_EposEneg_TruePrimEtaDalitz_InvMass",
"ESD_EposEneg_TruePrimEtaDalitz_InvMass",nBinsMassPair,xMinMassPair,xMaxMassPair);
1305 hESDEposEnegTruePhotonInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_TruePhoton_InvMassPt",
"ESD_EposEneg_TruePhoton_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1337 hESDTrueConvGammaR[iCut] =
new TH1F(
"ESD_TrueConvGamma_R",
"ESD_TrueConvGamma_R",800,0,200);
1340 hESDTrueConvGammaRMC[iCut] =
new TH1F(
"ESD_TrueConvGamma_R_MC",
"ESD_TrueConvGamma_R_MC",800,0,200);
1343 hESDTrueConvGammaPtMC[iCut] =
new TH1F(
"ESD_TrueConvGamma_Pt_MC",
"ESD_TrueConvGamma_Pt_MC",250,0,25);
1350 hESDTruePi0PtY[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Y",
"ESD_TruePi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1358 hESDTruePi0PtOpenAngle[iCut] =
new TH2F(
"ESD_TruePi0_Pt_OpenAngle",
"ESD_TruePi0_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
1367 const Int_t nDimDalPlot = 2;
1368 Int_t nBinsDalPlot[nDimDalPlot] = { 4000, 4000};
1369 Double_t xMinDalPlot[nDimDalPlot] = { 0, 0};
1370 Double_t xMaxDalPlot[nDimDalPlot] = { 4.0, 4.0};
1373 sESDTruePi0DalitzPlot[iCut] =
new THnSparseF(
"ESD_TruePi0Dalitz_DalitzPlot",
"ESD_TruePi0Dalitz_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
1376 sMCPi0DalitzPlot[iCut] =
new THnSparseF(
"MC_Pi0Dalitz_DalitzPlot",
"MC_Pi0Dalitz_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
1383 hESDTruePositronPt[iCut] =
new TH1F(
"ESD_TruePositron_Pt",
"ESD_TruePositron_Pt",1000,0,25);
1386 hESDTrueElectronPt[iCut] =
new TH1F(
"ESD_TrueElectron_Pt",
"ESD_TrueElectron_Pt",1000,0,25);
1389 hESDTrueSecPositronPt[iCut] =
new TH1F(
"ESD_TrueSecPositron_Pt",
"ESD_TrueSecPositron_Pt",1000,0,25);
1392 hESDTrueSecElectronPt[iCut] =
new TH1F(
"ESD_TrueSecElectron_Pt",
"ESD_TrueSecElectron_Pt",1000,0,25);
1395 hESDTrueConvGammaPt[iCut] =
new TH1F(
"ESD_TrueConvGamma_Pt",
"ESD_TrueConvGamma_Pt",250,0,25);
1495 hESDTrueBckGGInvMassPt[iCut] =
new TH2F(
"ESD_TrueDalitzBckGG_InvMass_Pt",
"ESD_TrueDalitzBckGG_InvMass_Pt",800,0,0.8,250,0,25);
1510 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
1532 if(!
fElecSelector){printf(
"Error: No ElectronSelector");
return;}
1579 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
1585 if(eventQuality == 2 || eventQuality == 3){
1587 hNEvents[iCut]->Fill(eventQuality);
1593 if(!
fElecSelector){printf(
"Error: No ElectronSelector");
return;}
1600 AliEventplane *EventPlane = fInputEvent->GetEventplane();
1616 Int_t eventNotAccepted =
1623 if(eventNotAccepted){
1625 hNEvents[iCut]->Fill(eventNotAccepted);
1629 if(eventQuality != 0){
1631 hNEvents[iCut]->Fill(eventQuality);
1635 hNEvents[iCut]->Fill(eventQuality);
1639 else hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C());
1702 fHistoSPDClusterTrackletBackground[iCut]->Fill(fInputEvent->GetMultiplicity()->GetNumberOfTracklets(),(fInputEvent->GetNumberOfITSClusters(0)+fInputEvent->GetNumberOfITSClusters(1)));
1769 printf(
" Gamma Conversion Dalitz Task %s :: Eta Shift Manually Set to %f \n\n",
1795 if(!PhotonCandidate)
continue;
1802 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1831 GoodGammasStepOne->Add(PhotonCandidate);
1834 GoodGammasStepTwo->Add(PhotonCandidate);
1840 for(
Int_t i = 0;i<GoodGammasStepOne->GetEntries();i++){
1842 if(!PhotonCandidate)
continue;
1847 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1868 }
else GoodGammasStepTwo->Add(PhotonCandidate);
1872 for(
Int_t i = 0;i<GoodGammasStepTwo->GetEntries();i++){
1874 if(!PhotonCandidate)
continue;
1878 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1900 delete GoodGammasStepOne;
1901 GoodGammasStepOne = 0x0;
1902 delete GoodGammasStepTwo;
1903 GoodGammasStepTwo = 0x0;
1913 if(posDaughter == NULL || negDaughter == NULL)
return;
1914 if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
1916 }
else if (posDaughter->GetMother(0) == -1){
1920 if(TMath::Abs(posDaughter->GetPdgCode())!=11 || TMath::Abs(negDaughter->GetPdgCode())!=11)
return;
1921 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode())
return;
1922 if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5)
return;
1925 if(Photon->GetPdgCode() != 22)
return;
1931 if( labelGamma < fMCEvent->GetNumberOfPrimaries() ){
1948 if( labelGamma < fMCEvent->GetNumberOfPrimaries() ) {
1967 Double_t magField = fInputEvent->GetMagneticField();
1970 if( magField < 0.0 ){
1984 Bool_t isPhoton = kFALSE;
1985 Bool_t isPi0Dalitz = kFALSE;
1986 Bool_t isEtaDalitz = kFALSE;
1988 Bool_t isTrueEposENeg = kFALSE;
1989 Bool_t isMotherPrimary = kFALSE;
1995 Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronVgamma->GetConstrainedParam()->Phi()-positronVgamma->GetConstrainedParam()->Phi());
2008 TParticle * negativeMC = 0x0;
2009 TParticle * positiveMC = 0x0;
2010 TParticle * mcVgamma = 0x0;
2012 if( virtualGammaMCLabel != -1 ){
2013 mcVgamma = (TParticle*)
fMCEvent->Particle(virtualGammaMCLabel);
2020 if( negativeMC && positiveMC ) {
2021 if( positiveMC->GetPdgCode() == ::kPositron && negativeMC->GetPdgCode() == ::kElectron )
2022 isTrueEposENeg = kTRUE;
2023 if( positiveMC->GetMother(0) > -1 && positiveMC->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() )
2024 isMotherPrimary = kTRUE;
2028 if(mcVgamma->GetPdgCode() == 22){
2030 }
else if(mcVgamma->GetPdgCode() == 443){
2033 if ( mcVgamma->GetPdgCode() == 111 ) isPi0Dalitz = kTRUE;
2034 else if( mcVgamma->GetPdgCode() == 221 ) isEtaDalitz = kTRUE;
2041 if( Vgamma->Pt() > 1.5 ){
2046 }
else if(isPi0Dalitz){
2056 }
else if(isEtaDalitz){
2060 }
else if ( isTrueEposENeg && mcVgamma ){
2075 Double_t magField = fInputEvent->GetMagneticField();
2077 if( magField < 0.0 ){
2083 vector<Int_t> lGoodElectronIndexPrev(0);
2084 vector<Int_t> lGoodPositronIndexPrev(0);
2090 Bool_t IsMCFromMBHeader = kTRUE;
2094 Int_t isMCFromMBHeader = -1;
2095 Int_t labelelectron = TMath::Abs( electronCandidate->GetLabel() );
2102 if( isMCFromMBHeader != 2 ) IsMCFromMBHeader = kFALSE;
2114 Int_t labelelectron = TMath::Abs( electronCandidate->GetLabel() );
2115 if( labelelectron < fMCEvent->GetNumberOfTracks() ){
2116 TParticle* electron =
fMCEvent->Particle(labelelectron);
2117 if( electron->GetPdgCode() == 11 ){
2118 if( labelelectron < fMCEvent->GetNumberOfPrimaries() ){
2124 if( electron->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
2140 Bool_t IsMCFromMBHeader = kTRUE;
2144 Int_t isMCFromMBHeader = -1;
2145 Int_t labelpositron = TMath::Abs( positronCandidate->GetLabel() );
2153 if( isMCFromMBHeader != 2 ) IsMCFromMBHeader = kFALSE;
2163 Int_t labelpositron = TMath::Abs( positronCandidate->GetLabel() );
2165 if( labelpositron < fMCEvent->GetNumberOfTracks() ) {
2166 TParticle* positron =
fMCEvent->Particle(labelpositron);
2167 if( positron->GetPdgCode() == -11 ){
2168 if( labelpositron < fMCEvent->GetNumberOfPrimaries() ){
2174 if( positron->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ){
2186 vector<Bool_t> lElectronPsiIndex(lGoodElectronIndexPrev.size(), kTRUE);
2187 vector<Bool_t> lPositronPsiIndex(lGoodPositronIndexPrev.size(), kTRUE);
2190 for(
UInt_t i = 0; i < lGoodElectronIndexPrev.size(); i++ ) {
2191 AliESDtrack *electronCandidate =
fESDEvent->GetTrack(lGoodElectronIndexPrev[i]);
2192 for(
UInt_t j = 0; j < lGoodPositronIndexPrev.size(); j++){
2193 AliESDtrack *positronCandidate =
fESDEvent->GetTrack(lGoodPositronIndexPrev[j]);
2195 Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->GetConstrainedParam()->Phi()-positronCandidate->GetConstrainedParam()->Phi());
2198 lElectronPsiIndex[i] = kFALSE;
2199 lPositronPsiIndex[j] = kFALSE;
2205 vector<Int_t> lGoodElectronIndex(0);
2206 vector<Int_t> lGoodPositronIndex(0);
2208 for(
UInt_t i = 0; i < lGoodElectronIndexPrev.size(); i++ ) {
2209 if( lElectronPsiIndex[i] == kTRUE )
2210 lGoodElectronIndex.push_back( lGoodElectronIndexPrev[i] );
2213 for(
UInt_t i = 0; i < lGoodPositronIndexPrev.size(); i++ ) {
2214 if( lPositronPsiIndex[i] == kTRUE )
2215 lGoodPositronIndex.push_back( lGoodPositronIndexPrev[i] );
2218 for(
UInt_t i = 0; i < lGoodElectronIndex.size(); i++){
2219 AliESDtrack *electronCandidate =
fESDEvent->GetTrack(lGoodElectronIndex[i]);
2220 AliKFParticle electronCandidateKF( *electronCandidate->GetConstrainedParam(), ::kElectron );
2221 TLorentzVector electronCandidateTLV;
2222 electronCandidateTLV.SetXYZM(electronCandidate->GetConstrainedParam()->Px(),electronCandidate->GetConstrainedParam()->Py(),electronCandidate->GetConstrainedParam()->Pz(),TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2225 for(
UInt_t j = 0; j < lGoodPositronIndex.size(); j++){
2227 AliESDtrack *positronCandidate =
fESDEvent->GetTrack(lGoodPositronIndex[j]);
2228 AliKFParticle positronCandidateKF( *positronCandidate->GetConstrainedParam(), ::kPositron );
2229 TLorentzVector positronCandidateTLV;
2231 positronCandidateTLV.SetXYZM(positronCandidate->GetConstrainedParam()->Px(),positronCandidate->GetConstrainedParam()->Py(),positronCandidate->GetConstrainedParam()->Pz(),TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2232 TLorentzVector *virtualPhotonTLV = 0;
2239 virtualPhotonTLV =
new TLorentzVector( smearelectronCandidateTLV + smearpositronCandidateTLV );
2243 vphoton->
SetMass(virtualPhotonTLV->M());
2247 AliKFVertex primaryVertexImproved(*fInputEvent->GetPrimaryVertex());
2248 primaryVertexImproved+=*virtualPhoton;
2249 virtualPhoton->SetProductionVertex(primaryVertexImproved);
2255 vphoton->
SetTrackLabels( lGoodPositronIndex[j], lGoodElectronIndex[i]);
2258 Int_t labeln=TMath::Abs(electronCandidate->GetLabel());
2259 Int_t labelp=TMath::Abs(positronCandidate->GetLabel());
2260 TParticle *fNegativeMCParticle =
fMCEvent->Particle(labeln);
2261 TParticle *fPositiveMCParticle =
fMCEvent->Particle(labelp);
2262 if( fPositiveMCParticle && fNegativeMCParticle) {
2274 if( virtualPhoton ){
2275 delete virtualPhoton;
2278 if ( virtualPhotonTLV ){
2279 delete virtualPhotonTLV;
2280 virtualPhotonTLV=NULL;
2288 for(
UInt_t i = 0; i < lGoodElectronIndex.size(); i++){
2289 AliESDtrack *electronCandidate1 =
fESDEvent->GetTrack(lGoodElectronIndex[i]);
2290 AliKFParticle electronCandidate1KF( *electronCandidate1->GetConstrainedParam(), ::kElectron );
2292 for(
UInt_t j = i+1; j < lGoodElectronIndex.size(); j++){
2294 AliESDtrack *electronCandidate2 =
fESDEvent->GetTrack(lGoodElectronIndex[j]);
2295 AliKFParticle electronCandidate2KF( *electronCandidate2->GetConstrainedParam(), ::kElectron );
2305 delete virtualPhoton;
2307 virtualPhoton = 0x0;
2312 for(
UInt_t i = 0; i < lGoodPositronIndex.size(); i++){
2313 AliESDtrack *positronCandidate1 =
fESDEvent->GetTrack(lGoodPositronIndex[i]);
2314 AliKFParticle positronCandidate1KF( *positronCandidate1->GetConstrainedParam(), ::kPositron );
2316 for(
UInt_t j = i+1; j < lGoodPositronIndex.size(); j++){
2318 AliESDtrack *positronCandidate2 =
fESDEvent->GetTrack(lGoodPositronIndex[j]);
2319 AliKFParticle positronCandidate2KF( *positronCandidate2->GetConstrainedParam(), ::kPositron );
2328 delete virtualPhoton;
2330 virtualPhoton = 0x0;
2344 for(
Int_t GammaIndex=0; GammaIndex<
fGoodGammas->GetEntries(); GammaIndex++){
2346 if (gamma==NULL)
continue;
2349 if (Vgamma==NULL)
continue;
2357 pi0cand->
SetLabels(GammaIndex,virtualGammaIndex);
2385 if( virtualGammaMCLabel > -1 ) {
2391 if( negativeMC->GetPdgCode() == 11 && positiveMC->GetPdgCode() == -11) {
2431 positronVgamma->GetConstrainedPxPyPz(momPositron);
2435 electronVgamma->GetConstrainedPxPyPz(momElectron);
2438 TVector3 vPositron(momPositron[0],momPositron[1],momPositron[2]);
2439 TVector3 vElectron(momElectron[0],momElectron[1],momElectron[2]);
2447 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2450 TLorentzVector electronCandidateTLV(vElectron,TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2451 TLorentzVector positronCandidateTLV(vPositron,TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2452 TLorentzVector gammaTLV(vGamma,0);
2453 TLorentzVector GammaElectronCandidateTLV = gammaTLV + electronCandidateTLV;
2454 TLorentzVector GammaPositronCandidateTLV = gammaTLV + positronCandidateTLV;
2455 Double_t sparesDalitzPlot[2] = {GammaElectronCandidateTLV.M()*GammaElectronCandidateTLV.M(),GammaPositronCandidateTLV.M()*GammaPositronCandidateTLV.M()};
2469 if( lGoodVirtualGamma[virtualGammaIndex] == kFALSE ) {
2472 if( pi0cand->M() > 0.1 && pi0cand->M() < 0.145 ){
2475 lGoodVirtualGamma[virtualGammaIndex] = kTRUE;
2495 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2504 if( lGoodVirtualGamma[virtualGammaIndex] == kFALSE ) {
2506 if( pi0cand->M() > 0.1 && pi0cand->M() < 0.145 ){
2509 lGoodVirtualGamma[virtualGammaIndex] = kTRUE;
2522 Double_t diffMass = pi0cand->M() - Vgamma->M();
2525 if( Vgamma->M() > 2.5 && Vgamma->M() < 3.4){
2572 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2605 delete backgroundCandidate;
2606 backgroundCandidate = 0x0;
2613 if(previousEventV0s){
2619 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2649 delete backgroundCandidate;
2650 backgroundCandidate = 0x0;
2683 Bool_t isTruePi0 = kFALSE;
2684 Bool_t isTrueEta = kFALSE;
2687 Int_t gammaMotherLabel = -1;
2696 if(gammaMCLabel != -1){
2700 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
2702 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2703 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
2704 if(gammaMC->GetPdgCode() == 22){
2705 gammaMotherLabel=gammaMC->GetFirstMother();
2716 Int_t virtualGammaMotherLabel = -1;
2717 Int_t virtualGamma = -1;
2721 if( virtualGammaMCLabel != -1 ){
2725 TParticle * virtualGammaMotherMC = (TParticle*)
fMCEvent->Particle(virtualGammaMCLabel);
2727 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2729 if( virtualGammaMotherMC->GetPdgCode() != 22 ){
2730 virtualGammaMotherLabel=virtualGammaMCLabel;
2733 }
else if (negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
2734 virtualGammaMotherLabel=virtualGammaMotherMC->GetFirstMother();
2744 if( gammaMotherLabel >= 0 && ( gammaMotherLabel == virtualGammaMotherLabel) ){
2745 if(((TParticle*)
fMCEvent->Particle(virtualGammaMotherLabel))->GetPdgCode() == 111){
2749 if(((TParticle*)
fMCEvent->Particle(virtualGammaMotherLabel))->GetPdgCode() == 221){
2757 if( isTruePi0 || isTrueEta ){
2760 if ( virtualGamma == 1 ) {
2771 if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
2782 positronVgamma->GetConstrainedPxPyPz(momPositron);
2786 electronVgamma->GetConstrainedPxPyPz(momElectron);
2788 TVector3 vGamma(TrueGammaCandidate->
GetPx(),TrueGammaCandidate->
GetPy(),TrueGammaCandidate->
GetPz());;
2789 TVector3 vPositron(momPositron[0],momPositron[1],momPositron[2]);
2790 TVector3 vElectron(momElectron[0],momElectron[1],momElectron[2]);
2792 TLorentzVector electronCandidateTLV(vElectron,TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2793 TLorentzVector positronCandidateTLV(vPositron,TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2794 TLorentzVector gammaTLV(vGamma,0);
2795 TLorentzVector GammaElectronCandidateTLV = gammaTLV + electronCandidateTLV;
2796 TLorentzVector GammaPositronCandidateTLV = gammaTLV + positronCandidateTLV;
2797 Double_t sparesDalitzPlot[2] = {GammaElectronCandidateTLV.M()*GammaElectronCandidateTLV.M(),GammaPositronCandidateTLV.M()*GammaPositronCandidateTLV.M()};
2808 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
2818 if(gammaMotherLabel < fMCEvent->GetNumberOfPrimaries()){
2829 Int_t secMotherLabel = ((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->GetMother(0);
2836 }
else if ( virtualGamma == 0 ){
2846 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
2854 if( gammaMotherLabel < fMCEvent->GetNumberOfPrimaries() ){
2859 Int_t secMotherLabel = ((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->GetMother(0);
2869 if( !isTruePi0 && !isTrueEta ){
2870 if( gammaMotherLabel > -1 && virtualGammaMotherLabel > -1 && virtualGamma == 0 ){
2892 Int_t gammaMotherLabel = -1;
2896 if( gammaMCLabel != -1){
2901 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
2903 if( TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11 ){
2904 if( negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() == 5 ){
2905 if(gammaMC->GetPdgCode() == 22){
2906 gammaMotherLabel=gammaMC->GetFirstMother();
2917 Int_t jpsiMotherLabel = -1;
2921 if( jpsiMCLabel != -1 ){
2925 TParticle * jpsiMC = (TParticle*)
fMCEvent->Particle(jpsiMCLabel);
2927 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2930 if(jpsiMC->GetPdgCode() == 443){
2932 jpsiMotherLabel=jpsiMC->GetFirstMother();
2941 if( gammaMotherLabel>=0 && ( gammaMotherLabel == jpsiMotherLabel) ){
2942 if( ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 445 ||
2943 ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 10443 ||
2944 ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 20443 ){
2959 previousEventEP=previousEventEP+TMath::Pi();
2960 thisEventEP=thisEventEP+TMath::Pi();
2961 Double_t rotationValue= thisEventEP-previousEventEP;
2962 gamma->RotateZ(rotationValue);
2983 Bool_t selectPrimaries=kTRUE;
2984 AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
2985 EsdTrackCuts->SetMaxDCAToVertexZ(2);
2986 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
2987 EsdTrackCuts->SetPtRange(0.15);
2991 for(
Int_t iTracks = 0; iTracks <
fESDEvent->GetNumberOfTracks(); iTracks++){
2992 AliESDtrack* curTrack =
fESDEvent->GetTrack(iTracks);
2993 if(!curTrack)
continue;
2996 delete EsdTrackCuts;
3008 for(
Int_t i = 0; i <
fMCEvent->GetNumberOfPrimaries(); i++) {
3010 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
3011 if (!particle)
continue;
3013 Bool_t mcIsFromMB = kTRUE;
3014 Int_t isMCFromMBHeader = -1;
3019 if(isMCFromMBHeader != 2) mcIsFromMB = kFALSE;
3062 if( particle->GetPdgCode() == -11) {
3066 if ( particle->GetMother(0) > -1 && particle->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
3074 if( particle->GetPdgCode() == 11){
3078 if ( particle->GetMother(0) > -1 && particle->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
3093 if (particle->Pt()>0.005){
3098 if(particle->GetPdgCode() == 111)
hMCPi0GGPt[
fiCut]->Fill( particle->Pt() , weighted);
3099 if(particle->GetPdgCode() == 221)
hMCEtaGGPt[
fiCut]->Fill( particle->Pt() , weighted);
3103 Int_t labelgamma = -1;
3104 Int_t labelelectron = -1;
3105 Int_t labelpositron = -1;
3112 if (particle->Pt()>0.005){
3117 if(particle->GetPdgCode() == 111){
3122 if(particle->GetPdgCode() == 221)
hMCEtaPt[
fiCut]->Fill(particle->Pt(), weighted);
3126 TParticle *gamma =
fMCEvent->Particle(labelgamma);
3127 TParticle *electron =
fMCEvent->Particle(labelelectron);
3128 TParticle *positron =
fMCEvent->Particle(labelpositron);
3143 TLorentzVector TLVEpos,TLVEneg,TLVgamma,TLVDalitz,TLVGammaEpos,TLVGammaEneg;
3144 Double_t electronMass = TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass();
3145 TLVEpos.SetXYZM(positron->Px(),positron->Py(),positron->Pz(),electronMass);
3146 TLVEneg.SetXYZM(electron->Px(),electron->Py(),electron->Pz(),electronMass);
3147 TLVgamma.SetXYZM(gamma->Px(),gamma->Py(),gamma->Pz(),0);
3149 TVector3 V3gamma(gamma->Px(),gamma->Py(),gamma->Pz());
3150 angleGammaEpos = V3gamma.Angle(TLVEpos.Vect());
3151 angleGammaEneg = V3gamma.Angle(TLVEneg.Vect());
3153 TLVDalitz = TLVEpos + TLVEneg ;
3154 massDalitz = TLVDalitz.M();
3155 TLVGammaEpos = TLVEpos + TLVgamma;
3156 TLVGammaEneg = TLVEneg + TLVgamma;
3158 massGammaEpos = TLVGammaEpos.M();
3159 massGammaEneg = TLVGammaEneg.M();
3165 if(particle->GetPdgCode() == 111){
3183 Double_t sMCDalitzPlot[2] = {massGammaEneg*massGammaEneg,massGammaEpos*massGammaEpos};
3191 if(particle->GetPdgCode() == 221){
3198 Int_t labelgammaChiC=-1;
3199 Int_t labelpositronChiC=-1;
3200 Int_t labelelectronChiC=-1;
3205 TParticle * gammaChiC =
fMCEvent->Particle(labelgammaChiC);
3220 if( fMCMother->GetNDaughters() != 3 )
return kFALSE;
3221 if( fMCMother->GetPdgCode() != 111 && fMCMother->GetPdgCode() != 221 )
return kFALSE;
3224 TParticle *positron = 0x0;
3225 TParticle *electron = 0x0;
3226 TParticle *gamma = 0x0;
3228 for(
Int_t index= fMCMother->GetFirstDaughter();index<= fMCMother->GetLastDaughter();index++){
3229 TParticle* temp = (TParticle*)
fMCEvent->Particle( index );
3230 switch( temp->GetPdgCode() ) {
3243 if( positron && electron && gamma)
return kTRUE;
3254 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
3256 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
3258 TParticle* mother =
fMCEvent->Particle( motherLabel );
3260 if( mother->GetPdgCode() != 111 )
return kFALSE;
3262 if(
IsDalitz( mother ) )
return kTRUE;
3271 AliESDtrack *positronVgamma = 0;
3272 AliESDtrack *electronVgamma = 0;
3281 Double_t nCrossedRowsTPCPos = -1.0;
3282 Double_t nCrossedRowsTPCNeg = -1.0;
3284 Float_t dcaToVertexXYPos = -1.0;
3285 Float_t dcaToVertexZPos = -1.0;
3286 Float_t dcaToVertexXYNeg = -1.0;
3287 Float_t dcaToVertexZNeg = -1.0;
3300 NumClsITSPos = positronVgamma->GetNcls(0);
3301 NumClsITSNeg = electronVgamma->GetNcls(0);
3302 NumClsTPCPos = positronVgamma->GetNcls(1);
3303 NumClsTPCNeg = electronVgamma->GetNcls(1);
3305 nCrossedRowsTPCPos = positronVgamma->GetTPCCrossedRows();
3306 nCrossedRowsTPCNeg = electronVgamma->GetTPCCrossedRows();
3310 positronVgamma->GetImpactParameters(bPos,bCovPos);
3312 if (bCovPos[0]<=0 || bCovPos[2]<=0) {
3313 AliDebug(1,
"Estimated b resolution lower or equal zero!");
3314 bCovPos[0]=0; bCovPos[2]=0;
3319 positronVgamma->GetImpactParameters(bNeg,bCovNeg);
3321 if (bCovNeg[0]<=0 || bCovNeg[2]<=0) {
3322 AliDebug(1,
"Estimated b resolution lower or equal zero!");
3323 bCovNeg[0]=0; bCovNeg[2]=0;
3326 dcaToVertexXYPos = bPos[0];
3327 dcaToVertexZPos = bPos[1];
3328 dcaToVertexXYNeg = bNeg[0];
3329 dcaToVertexZNeg = bNeg[1];
3331 if( electronVgamma->P() > 0.3 && electronVgamma->P() < 0.45 ){
3339 if( positronVgamma->P() > 0.3 && positronVgamma->P() < 0.45 ){
3394 TVector3 posDaughter;
3395 TVector3 negDaughter;
3397 posDaughter.SetXYZ( fMCPosParticle->Px(), fMCPosParticle->Py(), fMCPosParticle->Pz() );
3398 negDaughter.SetXYZ( fMCNegParticle->Px(), fMCNegParticle->Py(), fMCNegParticle->Pz() );
3400 Double_t deltaTheta = negDaughter.Theta() - posDaughter.Theta();
3401 Double_t openingAngle = posDaughter.Angle( negDaughter );
3403 if( openingAngle < 1e-20 )
return 0.;
3405 Double_t psiAngle = TMath::ASin( deltaTheta/openingAngle );
3427 if( trackPos->GetConstrainedPxPyPz(momPos) == 0 ) trackPos->GetPxPyPz( momPos );
3428 if( trackNeg->GetConstrainedPxPyPz(momNeg) == 0 ) trackNeg->GetPxPyPz( momNeg );
3430 TVector3 posDaughter;
3431 TVector3 negDaughter;
3433 posDaughter.SetXYZ( momPos[0], momPos[1], momPos[2] );
3434 negDaughter.SetXYZ( momNeg[0], momNeg[1], momNeg[2] );
3436 Double_t deltaTheta = negDaughter.Theta() - posDaughter.Theta();
3437 Double_t openingAngle = posDaughter.Angle( negDaughter );
3439 if( openingAngle < 1e-20 )
return 0.;
3441 Double_t psiAngle = TMath::ASin( deltaTheta/openingAngle );
3448 TAxis *axisafter = histoRebin->GetXaxis();
3449 Int_t bins = axisafter->GetNbins();
3450 Double_t from = axisafter->GetXmin();
3451 Double_t to = axisafter->GetXmax();
3454 Double_t factor = TMath::Power(to/from, 1./bins);
3455 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
3456 axisafter->Set(bins, newbins);
3464 if(tobechecked > -1)
3466 vector<Int_t>::iterator it;
3467 it = find (vec.begin(), vec.end(), tobechecked);
3468 if (it != vec.end())
return true;
3470 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
TH2F ** hESDEposEnegInvMassPi0MotherPt
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