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;
565 }
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;
711 xMinMassPair = 0.001;
712 xMaxMassPair = 0.801;
735 fCutFolder[iCut]->SetName(Form(
"Cut Number %s_%s_%s_%s",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
740 fESDList[iCut]->SetName(Form(
"%s_%s_%s_%s ESD histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
743 hNEvents[iCut] =
new TH1I(
"NEvents",
"NEvents",13,-0.5,12.5);
744 hNEvents[iCut]->GetXaxis()->SetBinLabel(1,
"Accepted");
745 hNEvents[iCut]->GetXaxis()->SetBinLabel(2,
"Centrality");
746 hNEvents[iCut]->GetXaxis()->SetBinLabel(3,
"Missing MC");
747 hNEvents[iCut]->GetXaxis()->SetBinLabel(4,
"Trigger");
748 hNEvents[iCut]->GetXaxis()->SetBinLabel(5,
"Vertex Z");
749 hNEvents[iCut]->GetXaxis()->SetBinLabel(6,
"Cont. Vertex");
750 hNEvents[iCut]->GetXaxis()->SetBinLabel(7,
"Pile-Up");
751 hNEvents[iCut]->GetXaxis()->SetBinLabel(8,
"no SDD");
752 hNEvents[iCut]->GetXaxis()->SetBinLabel(9,
"no V0AND");
753 hNEvents[iCut]->GetXaxis()->SetBinLabel(10,
"EMCAL problem");
754 hNEvents[iCut]->GetXaxis()->SetBinLabel(12,
"SPD hits vs tracklet");
755 hNEvents[iCut]->GetXaxis()->SetBinLabel(13,
"Out-of-Bunch pileup Past-Future");
765 else hNV0Tracks[iCut] =
new TH1I(
"V0 Multiplicity",
"V0 Multiplicity",1500,0,1500);
768 hEtaShift[iCut] =
new TProfile(
"Eta Shift",
"Eta Shift",1, -0.5,0.5);
771 hESDConvGammaPt[iCut] =
new TH1F(
"ESD_ConvGamma_Pt",
"ESD_ConvGamma_Pt",250,0,25);
774 hESDConvGammaEta[iCut] =
new TH1F(
"ESD_ConvGamma_Eta",
"ESD_ConvGamma_Eta",600,-1.5,1.5);
777 hESDDalitzElectronPt[iCut] =
new TH1F(
"ESD_DalitzElectron_Pt",
"ESD_DalitzElectron_Pt",1000,0,25);
780 hESDDalitzPositronPt[iCut] =
new TH1F(
"ESD_DalitzPositron_Pt",
"ESD_DalitzPositron_Pt",1000,0,25);
784 hESDDalitzElectronPhi[iCut] =
new TH1F(
"ESD_DalitzElectron_Phi",
"ESD_DalitzElectron_Phi",360,0,2*TMath::Pi());
787 hESDDalitzPositronPhi[iCut] =
new TH1F(
"ESD_DalitzPositron_Phi",
"ESD_DalitzPositron_Phi",360,0,2*TMath::Pi());
793 fQAFolder[iCut]->SetName(Form(
"%s_%s_%s_%s QA histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
796 const Int_t kPtBins=110;
798 const Int_t kPBins = 109;
803 for(
Int_t i=1;i<kPtBins+1;i++){
804 if(binsPtDummy[i-1]+0.05<1.01)
805 binsPtDummy[i]=binsPtDummy[i-1]+0.05;
807 binsPtDummy[i]=binsPtDummy[i-1]+0.1;
809 for(
Int_t i=1; i<kPBins+1;i++){
810 if( binsPDummy[i-1]+0.05<1.01)
811 binsPDummy[i] = binsPDummy[i-1]+0.05;
813 binsPDummy[i] = binsPDummy[i-1]+0.1;
843 hESDDalitzElectronAfterPhi[iCut] =
new TH1F(
"ESD_DalitzElectron_After_Phi",
"ESD_DalitzElectron_After_Phi",360,0,2*TMath::Pi());
846 hESDDalitzPositronAfterPhi[iCut] =
new TH1F(
"ESD_DalitzPositron_After_Phi",
"ESD_DalitzPositron_After_Phi",360,0,2*TMath::Pi());
938 hESDEposEnegDPhiEta[iCut] =
new TH2F(
"ESD_EposEneg_DPhi_Eta",
"ESD_EposEneg_DPhi_Eta",100,-1.0,1.0,600,-1.5,1.5);
941 hESDEposEnegInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_InvMassPt",
"ESD_EposEneg_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
949 const Int_t nDimRZ = 2;
950 Int_t nBinsRZ[nDimRZ] = { 1200, 800};
951 Double_t xMinRZ[nDimRZ] = { -150, 0};
952 Double_t xMaxRZ[nDimRZ] = { 150, 200};
954 const Int_t nDimXY = 2;
955 Int_t nBinsXY[nDimXY] = { 1200, 1200};
956 Double_t xMinXY[nDimXY] = { -150, -150};
957 Double_t xMaxXY[nDimXY] = { 150, 150};
959 sESDConvGammaZR[iCut] =
new THnSparseF(
"ESD_ConvGamma_ZR",
"ESD_ConvGamma_ZR",nDimRZ,nBinsRZ,xMinRZ,xMaxRZ);
962 sESDConvGammaXY[iCut] =
new THnSparseF(
"ESD_ConvGamma_XY",
"ESD_ConvGamma_XY",nDimXY,nBinsXY,xMinXY,xMaxXY);
965 const Int_t nDimDalPlot = 2;
966 Int_t nBinsDalPlot[nDimDalPlot] = { 4000, 4000};
967 Double_t xMinDalPlot[nDimDalPlot] = { 0, 0};
968 Double_t xMaxDalPlot[nDimDalPlot] = { 4.0, 4.0};
970 sESDMotherDalitzPlot[iCut] =
new THnSparseF(
"ESD_Mother_DalitzPlot",
"ESD_Mother_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
976 hESDMotherInvMassPt[iCut] =
new TH2F(
"ESD_DalitzMother_InvMass_Pt",
"ESD_DalitzMother_InvMass_Pt",800,0,0.8,250,0,25);
983 hESDMotherPi0PtY[iCut] =
new TH2F(
"ESD_MotherPi0_Pt_Y",
"ESD_MotherPi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1134 fMCList[iCut]->SetName(Form(
"%s_%s_%s_%s MC histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
1135 fMCList[iCut]->SetOwner(kTRUE);
1138 hMCAllGammaPt[iCut] =
new TH1F(
"MC_AllGamma_Pt",
"MC_AllGamma_Pt",250,0,25);
1141 hMCAllGammaPi0Pt[iCut] =
new TH1F(
"MC_AllGammaPi0_Pt",
"MC_AllGammaPi0_Pt",250,0,25);
1144 hMCConvGammaPt[iCut] =
new TH1F(
"MC_ConvGamma_Pt",
"MC_ConvGamma_Pt",250,0,25);
1147 hMCConvGammaRSPt[iCut] =
new TH1F(
"MC_ConvGamma_RS_Pt",
"MC_ConvGamma_RS_Pt",250,0,25);
1150 hMCConvGammaPi0Pt[iCut] =
new TH1F(
"MC_ConvGammaPi0_Pt",
"MC_ConvGammaPi0_Pt",250,0,25);
1153 hMCAllPositronsPt[iCut] =
new TH1F(
"MC_AllPositrons_Pt",
"MC_AllPositrons_Pt",1000,0,25);
1156 hMCDecayPositronPi0Pt[iCut] =
new TH1F(
"MC_DecayPositronPi0_Pt",
"MC_DecayPositronPi0_Pt",1000,0,25);
1159 hMCAllElectronsPt[iCut] =
new TH1F(
"MC_AllElectrons_Pt",
"MC_AllElectrons_Pt",1000,0,25);
1162 hMCDecayElectronPi0Pt[iCut] =
new TH1F(
"MC_DecayElectronPi0_Pt",
"MC_DecayElectronPi0_Pt",1000,0,25);
1165 hMCPi0DalitzGammaPt[iCut] =
new TH1F(
"MC_Pi0DalitzGamma_Pt",
"MC_Pi0DalitzGamma_Pt",250,0,25);
1170 hMCConvGammaEta[iCut] =
new TH1F(
"MC_ConvGamma_Eta",
"MC_ConvGamma_Eta",600,-1.5,1.5);
1172 hMCConvGammaR[iCut] =
new TH1F(
"MC_ConvGamma_R",
"MC_ConvGamma_R",800,0,200);
1174 hMCAllPositronsEta[iCut] =
new TH1F(
"MC_AllPositrons_Eta",
"MC_AllPositrons_Eta",600,-1.5,1.5);
1176 hMCAllElectronsEta[iCut] =
new TH1F(
"MC_AllElectrons_Eta",
"MC_AllElectrons_Eta",600,-1.5,1.5);
1178 hMCConvGammaPtR[iCut] =
new TH2F(
"MC_ConvGamma_Pt_R",
"MC_ConvGamma_Pt_R",250,0,25,180,0.,180.0);
1191 hMCPi0Pt[iCut] =
new TH1F(
"MC_Pi0_Pt",
"MC_Pi0_Pt",250,0,25);
1195 hMCPi0WOWeightPt[iCut] =
new TH1F(
"MC_Pi0_WOWeights_Pt",
"MC_Pi0_WOWeights_Pt",250,0,25);
1199 hMCPi0GGPt[iCut] =
new TH1F(
"MC_Pi0_GG_Pt",
"MC_Pi0_GG_Pt",250,0,25);
1203 hMCEtaPt[iCut] =
new TH1F(
"MC_Eta_Pt",
"MC_Eta_Pt",250,0,25);
1207 hMCEtaGGPt[iCut] =
new TH1F(
"MC_Eta_GG_Pt",
"MC_Eta_GG_Pt",250,0,25);
1211 hMCPi0InAccPt[iCut] =
new TH1F(
"MC_Pi0DalitzInAcc_Pt",
"MC_Pi0DalitzInAcc_Pt",250,0,25);
1222 hMCEtaInAccPt[iCut] =
new TH1F(
"MC_EtaDalitzInAcc_Pt",
"MC_EtaDalitzInAcc_Pt",250,0,25);
1226 hMCChiCPt[iCut] =
new TH1F(
"MC_ChiC_Pt",
"MC_ChiC_Pt",250,0,25);
1229 hMCChiCInAccPt[iCut] =
new TH1F(
"MC_ChiCInAcc_Pt",
"MC_ChiCInAcc_Pt",250,0,25);
1240 fTrueList[iCut]->SetName(Form(
"%s_%s_%s_%s True histograms",cutstringEvent.Data(),cutstringGamma.Data(),cutstringElectron.Data(),cutstringMeson.Data()));
1249 hESDEposEnegTruePrimPi0DalitzInvMass[iCut] =
new TH1F(
"ESD_EposEneg_TruePrimPi0Dalitz_InvMass",
"ESD_EposEneg_TruePrimPi0Dalitz_InvMass",nBinsMassPair,xMinMassPair,xMaxMassPair);
1252 hESDEposEnegTrueInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_True_InvMassPt",
"ESD_EposEneg_True_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1256 hESDEposEnegTrueMotherInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_TrueMother_InvMassPt",
"ESD_EposEneg_TrueMother_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1264 hESDEposEnegTruePrimEtaDalitzInvMass[iCut] =
new TH1F(
"ESD_EposEneg_TruePrimEtaDalitz_InvMass",
"ESD_EposEneg_TruePrimEtaDalitz_InvMass",nBinsMassPair,xMinMassPair,xMaxMassPair);
1268 hESDEposEnegTruePhotonInvMassPt[iCut] =
new TH2F(
"ESD_EposEneg_TruePhoton_InvMassPt",
"ESD_EposEneg_TruePhoton_InvMassPt",nBinsMassPair,xMinMassPair,xMaxMassPair,100,0.,10.);
1296 hESDTrueConvGammaR[iCut] =
new TH1F(
"ESD_TrueConvGamma_R",
"ESD_TrueConvGamma_R",800,0,200);
1299 hESDTrueConvGammaRMC[iCut] =
new TH1F(
"ESD_TrueConvGamma_R_MC",
"ESD_TrueConvGamma_R_MC",800,0,200);
1302 hESDTrueConvGammaPtMC[iCut] =
new TH1F(
"ESD_TrueConvGamma_Pt_MC",
"ESD_TrueConvGamma_Pt_MC",250,0,25);
1308 hESDTruePi0PtY[iCut] =
new TH2F(
"ESD_TruePi0_Pt_Y",
"ESD_TruePi0_Pt_Y",150,0.03,15.,150,-1.5,1.5);
1316 hESDTruePi0PtOpenAngle[iCut] =
new TH2F(
"ESD_TruePi0_Pt_OpenAngle",
"ESD_TruePi0_Pt_OpenAngle",150,0.03,15.,200,0,2*TMath::Pi());
1324 const Int_t nDimDalPlot = 2;
1325 Int_t nBinsDalPlot[nDimDalPlot] = { 4000, 4000};
1326 Double_t xMinDalPlot[nDimDalPlot] = { 0, 0};
1327 Double_t xMaxDalPlot[nDimDalPlot] = { 4.0, 4.0};
1329 sESDTruePi0DalitzPlot[iCut] =
new THnSparseF(
"ESD_TruePi0Dalitz_DalitzPlot",
"ESD_TruePi0Dalitz_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
1332 sMCPi0DalitzPlot[iCut] =
new THnSparseF(
"MC_Pi0Dalitz_DalitzPlot",
"MC_Pi0Dalitz_DalitzPlot",nDimDalPlot,nBinsDalPlot,xMinDalPlot,xMaxDalPlot);
1337 hESDTruePositronPt[iCut] =
new TH1F(
"ESD_TruePositron_Pt",
"ESD_TruePositron_Pt",1000,0,25);
1340 hESDTrueElectronPt[iCut] =
new TH1F(
"ESD_TrueElectron_Pt",
"ESD_TrueElectron_Pt",1000,0,25);
1343 hESDTrueSecPositronPt[iCut] =
new TH1F(
"ESD_TrueSecPositron_Pt",
"ESD_TrueSecPositron_Pt",1000,0,25);
1346 hESDTrueSecElectronPt[iCut] =
new TH1F(
"ESD_TrueSecElectron_Pt",
"ESD_TrueSecElectron_Pt",1000,0,25);
1349 hESDTrueConvGammaPt[iCut] =
new TH1F(
"ESD_TrueConvGamma_Pt",
"ESD_TrueConvGamma_Pt",250,0,25);
1440 hESDTrueBckGGInvMassPt[iCut] =
new TH2F(
"ESD_TrueDalitzBckGG_InvMass_Pt",
"ESD_TrueDalitzBckGG_InvMass_Pt",800,0,0.8,250,0,25);
1455 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
1472 if(!
fElecSelector){printf(
"Error: No ElectronSelector");
return;}
1517 if(!
fV0Reader){printf(
"Error: No V0 Reader");
return;}
1520 if(eventQuality == 2 || eventQuality == 3){
1522 hNEvents[iCut]->Fill(eventQuality);
1528 if(!
fElecSelector){printf(
"Error: No ElectronSelector");
return;}
1535 AliEventplane *EventPlane = fInputEvent->GetEventplane();
1552 if(eventNotAccepted){
1553 hNEvents[iCut]->Fill(eventNotAccepted);
1557 if(eventQuality != 0){
1558 hNEvents[iCut]->Fill(eventQuality);
1562 hNEvents[iCut]->Fill(eventQuality);
1566 else hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C());
1624 fHistoSPDClusterTrackletBackground[iCut]->Fill(fInputEvent->GetMultiplicity()->GetNumberOfTracklets(),(fInputEvent->GetNumberOfITSClusters(0)+fInputEvent->GetNumberOfITSClusters(1)));
1686 printf(
" Gamma Conversion Dalitz Task %s :: Eta Shift Manually Set to %f \n\n",
1712 if(!PhotonCandidate)
continue;
1719 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1744 GoodGammasStepOne->Add(PhotonCandidate);
1747 GoodGammasStepTwo->Add(PhotonCandidate);
1753 for(
Int_t i = 0;i<GoodGammasStepOne->GetEntries();i++){
1755 if(!PhotonCandidate)
continue;
1760 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1780 }
else GoodGammasStepTwo->Add(PhotonCandidate);
1784 for(
Int_t i = 0;i<GoodGammasStepTwo->GetEntries();i++){
1786 if(!PhotonCandidate)
continue;
1790 if( (isNegFromMBHeader+isPosFromMBHeader) != 4)
fIsFromMBHeader = kFALSE;
1812 delete GoodGammasStepOne;
1813 GoodGammasStepOne = 0x0;
1814 delete GoodGammasStepTwo;
1815 GoodGammasStepTwo = 0x0;
1825 if(posDaughter == NULL || negDaughter == NULL)
return;
1826 if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){
1828 }
else if (posDaughter->GetMother(0) == -1){
1832 if(TMath::Abs(posDaughter->GetPdgCode())!=11 || TMath::Abs(negDaughter->GetPdgCode())!=11)
return;
1833 if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode())
return;
1834 if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5)
return;
1837 if(Photon->GetPdgCode() != 22)
return;
1843 if( labelGamma < fMCEvent->GetNumberOfPrimaries() ){
1860 if( labelGamma < fMCEvent->GetNumberOfPrimaries() ) {
1878 Double_t magField = fInputEvent->GetMagneticField();
1879 if( magField < 0.0 ){
1891 Bool_t isPhoton = kFALSE;
1892 Bool_t isPi0Dalitz = kFALSE;
1893 Bool_t isEtaDalitz = kFALSE;
1895 Bool_t isTrueEposENeg = kFALSE;
1896 Bool_t isMotherPrimary = kFALSE;
1900 Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronVgamma->GetConstrainedParam()->Phi()-positronVgamma->GetConstrainedParam()->Phi());
1909 TParticle * negativeMC = 0x0;
1910 TParticle * positiveMC = 0x0;
1911 TParticle * mcVgamma = 0x0;
1913 if( virtualGammaMCLabel != -1 ){
1914 mcVgamma = (TParticle*)
fMCEvent->Particle(virtualGammaMCLabel);
1920 if( negativeMC && positiveMC ) {
1921 if( positiveMC->GetPdgCode() == ::kPositron && negativeMC->GetPdgCode() == ::kElectron )
1922 isTrueEposENeg = kTRUE;
1923 if( positiveMC->GetMother(0) > -1 && positiveMC->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() )
1924 isMotherPrimary = kTRUE;
1928 if(mcVgamma->GetPdgCode() == 22){
1930 }
else if(mcVgamma->GetPdgCode() == 443){
1933 if ( mcVgamma->GetPdgCode() == 111 ) isPi0Dalitz = kTRUE;
1934 else if( mcVgamma->GetPdgCode() == 221 ) isEtaDalitz = kTRUE;
1941 if( Vgamma->Pt() > 1.5 ){
1946 }
else if(isPi0Dalitz){
1955 }
else if(isEtaDalitz){
1959 }
else if ( isTrueEposENeg && mcVgamma ){
1973 Double_t magField = fInputEvent->GetMagneticField();
1975 if( magField < 0.0 ){
1981 vector<Int_t> lGoodElectronIndexPrev(0);
1982 vector<Int_t> lGoodPositronIndexPrev(0);
1986 Bool_t IsMCFromMBHeader = kTRUE;
1989 Int_t isMCFromMBHeader = -1;
1990 Int_t labelelectron = TMath::Abs( electronCandidate->GetLabel() );
1997 if( isMCFromMBHeader != 2 ) IsMCFromMBHeader = kFALSE;
2007 Int_t labelelectron = TMath::Abs( electronCandidate->GetLabel() );
2008 if( labelelectron < fMCEvent->GetNumberOfTracks() ){
2009 TParticle* electron =
fMCEvent->Particle(labelelectron);
2010 if( electron->GetPdgCode() == 11 ){
2011 if( labelelectron < fMCEvent->GetNumberOfPrimaries() ){
2017 if( electron->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
2032 Bool_t IsMCFromMBHeader = kTRUE;
2035 Int_t isMCFromMBHeader = -1;
2036 Int_t labelpositron = TMath::Abs( positronCandidate->GetLabel() );
2042 if( isMCFromMBHeader != 2 ) IsMCFromMBHeader = kFALSE;
2052 Int_t labelpositron = TMath::Abs( positronCandidate->GetLabel() );
2053 if( labelpositron < fMCEvent->GetNumberOfTracks() ) {
2054 TParticle* positron =
fMCEvent->Particle(labelpositron);
2055 if( positron->GetPdgCode() == -11 ){
2056 if( labelpositron < fMCEvent->GetNumberOfPrimaries() ){
2062 if( positron->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ){
2074 vector<Bool_t> lElectronPsiIndex(lGoodElectronIndexPrev.size(), kTRUE);
2075 vector<Bool_t> lPositronPsiIndex(lGoodPositronIndexPrev.size(), kTRUE);
2078 for(
UInt_t i = 0; i < lGoodElectronIndexPrev.size(); i++ ) {
2079 AliESDtrack *electronCandidate =
fESDEvent->GetTrack(lGoodElectronIndexPrev[i]);
2080 for(
UInt_t j = 0; j < lGoodPositronIndexPrev.size(); j++){
2081 AliESDtrack *positronCandidate =
fESDEvent->GetTrack(lGoodPositronIndexPrev[j]);
2083 Double_t deltaPhi = magField * TVector2::Phi_mpi_pi( electronCandidate->GetConstrainedParam()->Phi()-positronCandidate->GetConstrainedParam()->Phi());
2086 lElectronPsiIndex[i] = kFALSE;
2087 lPositronPsiIndex[j] = kFALSE;
2093 vector<Int_t> lGoodElectronIndex(0);
2094 vector<Int_t> lGoodPositronIndex(0);
2096 for(
UInt_t i = 0; i < lGoodElectronIndexPrev.size(); i++ ) {
2097 if( lElectronPsiIndex[i] == kTRUE )
2098 lGoodElectronIndex.push_back( lGoodElectronIndexPrev[i] );
2101 for(
UInt_t i = 0; i < lGoodPositronIndexPrev.size(); i++ ) {
2102 if( lPositronPsiIndex[i] == kTRUE )
2103 lGoodPositronIndex.push_back( lGoodPositronIndexPrev[i] );
2106 for(
UInt_t i = 0; i < lGoodElectronIndex.size(); i++){
2107 AliESDtrack *electronCandidate =
fESDEvent->GetTrack(lGoodElectronIndex[i]);
2108 AliKFParticle electronCandidateKF( *electronCandidate->GetConstrainedParam(), ::kElectron );
2109 TLorentzVector electronCandidateTLV;
2110 electronCandidateTLV.SetXYZM(electronCandidate->GetConstrainedParam()->Px(),electronCandidate->GetConstrainedParam()->Py(),electronCandidate->GetConstrainedParam()->Pz(),TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2112 for(
UInt_t j = 0; j < lGoodPositronIndex.size(); j++){
2114 AliESDtrack *positronCandidate =
fESDEvent->GetTrack(lGoodPositronIndex[j]);
2115 AliKFParticle positronCandidateKF( *positronCandidate->GetConstrainedParam(), ::kPositron );
2116 TLorentzVector positronCandidateTLV;
2118 positronCandidateTLV.SetXYZM(positronCandidate->GetConstrainedParam()->Px(),positronCandidate->GetConstrainedParam()->Py(),positronCandidate->GetConstrainedParam()->Pz(),TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2119 TLorentzVector *virtualPhotonTLV = 0;
2126 virtualPhotonTLV =
new TLorentzVector( smearelectronCandidateTLV + smearpositronCandidateTLV );
2130 vphoton->
SetMass(virtualPhotonTLV->M());
2134 AliKFVertex primaryVertexImproved(*fInputEvent->GetPrimaryVertex());
2135 primaryVertexImproved+=*virtualPhoton;
2136 virtualPhoton->SetProductionVertex(primaryVertexImproved);
2141 vphoton->
SetTrackLabels( lGoodPositronIndex[j], lGoodElectronIndex[i]);
2144 Int_t labeln=TMath::Abs(electronCandidate->GetLabel());
2145 Int_t labelp=TMath::Abs(positronCandidate->GetLabel());
2146 TParticle *fNegativeMCParticle =
fMCEvent->Particle(labeln);
2147 TParticle *fPositiveMCParticle =
fMCEvent->Particle(labelp);
2148 if( fPositiveMCParticle && fNegativeMCParticle) {
2159 if( virtualPhoton ){
2160 delete virtualPhoton;
2163 if ( virtualPhotonTLV ){
2164 delete virtualPhotonTLV;
2165 virtualPhotonTLV=NULL;
2172 for(
UInt_t i = 0; i < lGoodElectronIndex.size(); i++){
2173 AliESDtrack *electronCandidate1 =
fESDEvent->GetTrack(lGoodElectronIndex[i]);
2174 AliKFParticle electronCandidate1KF( *electronCandidate1->GetConstrainedParam(), ::kElectron );
2176 for(
UInt_t j = i+1; j < lGoodElectronIndex.size(); j++){
2178 AliESDtrack *electronCandidate2 =
fESDEvent->GetTrack(lGoodElectronIndex[j]);
2179 AliKFParticle electronCandidate2KF( *electronCandidate2->GetConstrainedParam(), ::kElectron );
2189 delete virtualPhoton;
2191 virtualPhoton = 0x0;
2195 for(
UInt_t i = 0; i < lGoodPositronIndex.size(); i++){
2196 AliESDtrack *positronCandidate1 =
fESDEvent->GetTrack(lGoodPositronIndex[i]);
2197 AliKFParticle positronCandidate1KF( *positronCandidate1->GetConstrainedParam(), ::kPositron );
2199 for(
UInt_t j = i+1; j < lGoodPositronIndex.size(); j++){
2201 AliESDtrack *positronCandidate2 =
fESDEvent->GetTrack(lGoodPositronIndex[j]);
2202 AliKFParticle positronCandidate2KF( *positronCandidate2->GetConstrainedParam(), ::kPositron );
2211 delete virtualPhoton;
2213 virtualPhoton = 0x0;
2228 for(
Int_t GammaIndex=0; GammaIndex<
fGoodGammas->GetEntries(); GammaIndex++){
2230 if (gamma==NULL)
continue;
2233 if (Vgamma==NULL)
continue;
2241 pi0cand->
SetLabels(GammaIndex,virtualGammaIndex);
2261 if( virtualGammaMCLabel > -1 ) {
2267 if( negativeMC->GetPdgCode() == 11 && positiveMC->GetPdgCode() == -11) {
2291 positronVgamma->GetConstrainedPxPyPz(momPositron);
2295 electronVgamma->GetConstrainedPxPyPz(momElectron);
2298 TVector3 vPositron(momPositron[0],momPositron[1],momPositron[2]);
2299 TVector3 vElectron(momElectron[0],momElectron[1],momElectron[2]);
2304 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2307 TLorentzVector electronCandidateTLV(vElectron,TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2308 TLorentzVector positronCandidateTLV(vPositron,TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2309 TLorentzVector gammaTLV(vGamma,0);
2310 TLorentzVector GammaElectronCandidateTLV = gammaTLV + electronCandidateTLV;
2311 TLorentzVector GammaPositronCandidateTLV = gammaTLV + positronCandidateTLV;
2312 Double_t sparesDalitzPlot[2] = {GammaElectronCandidateTLV.M()*GammaElectronCandidateTLV.M(),GammaPositronCandidateTLV.M()*GammaPositronCandidateTLV.M()};
2320 if( lGoodVirtualGamma[virtualGammaIndex] == kFALSE ) {
2321 if( pi0cand->M() > 0.1 && pi0cand->M() < 0.145 ){
2323 lGoodVirtualGamma[virtualGammaIndex] = kTRUE;
2341 if ( pi0cand->M() > 0.05 && pi0cand->M() < 0.17){
2346 if( lGoodVirtualGamma[virtualGammaIndex] == kFALSE ) {
2347 if( pi0cand->M() > 0.1 && pi0cand->M() < 0.145 ){
2349 lGoodVirtualGamma[virtualGammaIndex] = kTRUE;
2359 Double_t diffMass = pi0cand->M() - Vgamma->M();
2362 if( Vgamma->M() > 2.5 && Vgamma->M() < 3.4){
2404 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2437 delete backgroundCandidate;
2438 backgroundCandidate = 0x0;
2445 if(previousEventV0s){
2451 for(
UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){
2481 delete backgroundCandidate;
2482 backgroundCandidate = 0x0;
2512 Bool_t isTruePi0 = kFALSE;
2513 Bool_t isTrueEta = kFALSE;
2515 Int_t gammaMotherLabel = -1;
2518 if(gammaMCLabel != -1){
2522 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
2524 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2525 if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
2526 if(gammaMC->GetPdgCode() == 22){
2527 gammaMotherLabel=gammaMC->GetFirstMother();
2535 Int_t virtualGammaMotherLabel = -1;
2536 Int_t virtualGamma = -1;
2538 if( virtualGammaMCLabel != -1 ){
2542 TParticle * virtualGammaMotherMC = (TParticle*)
fMCEvent->Particle(virtualGammaMCLabel);
2544 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2545 if( virtualGammaMotherMC->GetPdgCode() != 22 ){
2546 virtualGammaMotherLabel=virtualGammaMCLabel;
2548 }
else if (negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){
2549 virtualGammaMotherLabel=virtualGammaMotherMC->GetFirstMother();
2556 if( gammaMotherLabel >= 0 && ( gammaMotherLabel == virtualGammaMotherLabel) ){
2557 if(((TParticle*)
fMCEvent->Particle(virtualGammaMotherLabel))->GetPdgCode() == 111){
2561 if(((TParticle*)
fMCEvent->Particle(virtualGammaMotherLabel))->GetPdgCode() == 221){
2567 if( isTruePi0 || isTrueEta ){
2568 if ( virtualGamma == 1 ) {
2575 if ( Pi0Candidate->M() > 0.05 && Pi0Candidate->M() < 0.17){
2583 positronVgamma->GetConstrainedPxPyPz(momPositron);
2587 electronVgamma->GetConstrainedPxPyPz(momElectron);
2589 TVector3 vGamma(TrueGammaCandidate->
GetPx(),TrueGammaCandidate->
GetPy(),TrueGammaCandidate->
GetPz());;
2590 TVector3 vPositron(momPositron[0],momPositron[1],momPositron[2]);
2591 TVector3 vElectron(momElectron[0],momElectron[1],momElectron[2]);
2593 TLorentzVector electronCandidateTLV(vElectron,TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass());
2594 TLorentzVector positronCandidateTLV(vPositron,TDatabasePDG::Instance()->GetParticle( ::kPositron )->Mass());
2595 TLorentzVector gammaTLV(vGamma,0);
2596 TLorentzVector GammaElectronCandidateTLV = gammaTLV + electronCandidateTLV;
2597 TLorentzVector GammaPositronCandidateTLV = gammaTLV + positronCandidateTLV;
2598 Double_t sparesDalitzPlot[2] = {GammaElectronCandidateTLV.M()*GammaElectronCandidateTLV.M(),GammaPositronCandidateTLV.M()*GammaPositronCandidateTLV.M()};
2608 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
2618 if(gammaMotherLabel < fMCEvent->GetNumberOfPrimaries()){
2628 Int_t secMotherLabel = ((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->GetMother(0);
2635 }
else if ( virtualGamma == 0 ){
2643 if (((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->Pt()>0.005){
2651 if( gammaMotherLabel < fMCEvent->GetNumberOfPrimaries() ){
2656 Int_t secMotherLabel = ((TParticle*)
fMCEvent->Particle(gammaMotherLabel))->GetMother(0);
2666 if( !isTruePi0 && !isTrueEta ){
2667 if( gammaMotherLabel > -1 && virtualGammaMotherLabel > -1 && virtualGamma == 0 ){
2682 Int_t gammaMotherLabel = -1;
2684 if( gammaMCLabel != -1){
2688 TParticle * gammaMC = (TParticle*)
fMCEvent->Particle(gammaMCLabel);
2690 if( TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11 ){
2691 if( negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() == 5 ){
2692 if(gammaMC->GetPdgCode() == 22){
2693 gammaMotherLabel=gammaMC->GetFirstMother();
2701 Int_t jpsiMotherLabel = -1;
2703 if( jpsiMCLabel != -1 ){
2706 TParticle * jpsiMC = (TParticle*)
fMCEvent->Particle(jpsiMCLabel);
2707 if(TMath::Abs(negativeMC->GetPdgCode())==11 && TMath::Abs(positiveMC->GetPdgCode())==11){
2708 if(jpsiMC->GetPdgCode() == 443){
2709 jpsiMotherLabel=jpsiMC->GetFirstMother();
2714 if( gammaMotherLabel>=0 && ( gammaMotherLabel == jpsiMotherLabel) ){
2715 if( ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 445 ||
2716 ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 10443 ||
2717 ((TParticle*)
fMCEvent->Particle(jpsiMotherLabel))->GetPdgCode() == 20443 ){
2728 previousEventEP=previousEventEP+TMath::Pi();
2729 thisEventEP=thisEventEP+TMath::Pi();
2730 Double_t rotationValue= thisEventEP-previousEventEP;
2731 gamma->RotateZ(rotationValue);
2748 Bool_t selectPrimaries = kTRUE;
2749 static AliESDtrackCuts *EsdTrackCuts = 0x0;
2750 static int prevRun = -1;
2752 Int_t runNumber = fInputEvent->GetRunNumber();
2753 if (prevRun!=runNumber) {
2754 delete EsdTrackCuts;
2756 prevRun = runNumber;
2759 if (!EsdTrackCuts) {
2761 if( (runNumber<=146860) || (runNumber>=197470 && runNumber<=197692) || (runNumber>=172440 && runNumber<=193766) ){
2762 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
2764 }
else if (runNumber>=209122){
2767 EsdTrackCuts =
new AliESDtrackCuts();
2769 EsdTrackCuts->AliESDtrackCuts::SetMinNCrossedRowsTPC(70);
2770 EsdTrackCuts->AliESDtrackCuts::SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
2771 EsdTrackCuts->SetCutGeoNcrNcl(2., 130., 1.5, 0.0, 0.0);
2773 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterTPC(4);
2774 EsdTrackCuts->AliESDtrackCuts::SetAcceptKinkDaughters(kFALSE);
2775 EsdTrackCuts->AliESDtrackCuts::SetRequireTPCRefit(kTRUE);
2777 EsdTrackCuts->AliESDtrackCuts::SetRequireITSRefit(kTRUE);
2778 EsdTrackCuts->AliESDtrackCuts::SetClusterRequirementITS(AliESDtrackCuts::kSPD,
2779 AliESDtrackCuts::kAny);
2780 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexXYPtDep(
"0.0105+0.0350/pt^1.1");
2781 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2TPCConstrainedGlobal(36);
2782 EsdTrackCuts->AliESDtrackCuts::SetMaxDCAToVertexZ(2);
2783 EsdTrackCuts->AliESDtrackCuts::SetDCAToVertex2D(kFALSE);
2784 EsdTrackCuts->AliESDtrackCuts::SetRequireSigmaToVertex(kFALSE);
2785 EsdTrackCuts->AliESDtrackCuts::SetMaxChi2PerClusterITS(36);
2788 EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
2790 EsdTrackCuts->SetMaxDCAToVertexZ(2);
2791 EsdTrackCuts->SetEtaRange(-0.8, 0.8);
2792 EsdTrackCuts->SetPtRange(0.15);
2797 for(
Int_t iTracks = 0; iTracks <
fESDEvent->GetNumberOfTracks(); iTracks++){
2798 AliESDtrack* curTrack =
fESDEvent->GetTrack(iTracks);
2799 if(!curTrack)
continue;
2809 for(
Int_t i = 0; i <
fMCEvent->GetNumberOfPrimaries(); i++) {
2810 TParticle* particle = (TParticle *)
fMCEvent->Particle(i);
2811 if (!particle)
continue;
2813 Bool_t mcIsFromMB = kTRUE;
2814 Int_t isMCFromMBHeader = -1;
2819 if(isMCFromMBHeader != 2) mcIsFromMB = kFALSE;
2850 if( particle->GetPdgCode() == -11) {
2853 if ( particle->GetMother(0) > -1 && particle->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
2859 if( particle->GetPdgCode() == 11){
2862 if ( particle->GetMother(0) > -1 && particle->GetMother(0) <
fMCEvent->GetNumberOfPrimaries() ) {
2874 if (particle->Pt()>0.005){
2879 if(particle->GetPdgCode() == 111)
hMCPi0GGPt[
fiCut]->Fill( particle->Pt() , weighted);
2880 if(particle->GetPdgCode() == 221)
hMCEtaGGPt[
fiCut]->Fill( particle->Pt() , weighted);
2883 Int_t labelgamma = -1;
2884 Int_t labelelectron = -1;
2885 Int_t labelpositron = -1;
2892 if (particle->Pt()>0.005){
2897 if(particle->GetPdgCode() == 111){
2902 if(particle->GetPdgCode() == 221)
hMCEtaPt[
fiCut]->Fill(particle->Pt(), weighted);
2904 TParticle *gamma =
fMCEvent->Particle(labelgamma);
2905 TParticle *electron =
fMCEvent->Particle(labelelectron);
2906 TParticle *positron =
fMCEvent->Particle(labelpositron);
2919 TLorentzVector TLVEpos,TLVEneg,TLVgamma,TLVDalitz,TLVGammaEpos,TLVGammaEneg;
2920 Double_t electronMass = TDatabasePDG::Instance()->GetParticle( ::kElectron )->Mass();
2921 TLVEpos.SetXYZM(positron->Px(),positron->Py(),positron->Pz(),electronMass);
2922 TLVEneg.SetXYZM(electron->Px(),electron->Py(),electron->Pz(),electronMass);
2923 TLVgamma.SetXYZM(gamma->Px(),gamma->Py(),gamma->Pz(),0);
2925 TVector3 V3gamma(gamma->Px(),gamma->Py(),gamma->Pz());
2926 angleGammaEpos = V3gamma.Angle(TLVEpos.Vect());
2927 angleGammaEneg = V3gamma.Angle(TLVEneg.Vect());
2929 TLVDalitz = TLVEpos + TLVEneg ;
2930 massDalitz = TLVDalitz.M();
2931 TLVGammaEpos = TLVEpos + TLVgamma;
2932 TLVGammaEneg = TLVEneg + TLVgamma;
2934 massGammaEpos = TLVGammaEpos.M();
2935 massGammaEneg = TLVGammaEneg.M();
2938 if(particle->GetPdgCode() == 111){
2952 Double_t sMCDalitzPlot[2] = {massGammaEneg*massGammaEneg,massGammaEpos*massGammaEpos};
2957 if(particle->GetPdgCode() == 221){
2964 Int_t labelgammaChiC=-1;
2965 Int_t labelpositronChiC=-1;
2966 Int_t labelelectronChiC=-1;
2971 TParticle * gammaChiC =
fMCEvent->Particle(labelgammaChiC);
2984 if( fMCMother->GetNDaughters() != 3 )
return kFALSE;
2985 if( fMCMother->GetPdgCode() != 111 && fMCMother->GetPdgCode() != 221 )
return kFALSE;
2987 TParticle *positron = 0x0;
2988 TParticle *electron = 0x0;
2989 TParticle *gamma = 0x0;
2991 for(
Int_t index= fMCMother->GetFirstDaughter();index<= fMCMother->GetLastDaughter();index++){
2992 TParticle* temp = (TParticle*)
fMCEvent->Particle( index );
2993 switch( temp->GetPdgCode() ) {
3006 if( positron && electron && gamma)
return kTRUE;
3015 Int_t motherLabel =
fMCEvent->Particle( label )->GetMother(0);
3016 if( motherLabel < 0 || motherLabel >=
fMCEvent->GetNumberOfTracks() )
return kFALSE;
3017 TParticle* mother =
fMCEvent->Particle( motherLabel );
3018 if( mother->GetPdgCode() != 111 )
return kFALSE;
3019 if(
IsDalitz( mother ) )
return kTRUE;
3025 AliESDtrack *positronVgamma = 0;
3026 AliESDtrack *electronVgamma = 0;
3035 Double_t nCrossedRowsTPCPos = -1.0;
3036 Double_t nCrossedRowsTPCNeg = -1.0;
3038 Float_t dcaToVertexXYPos = -1.0;
3039 Float_t dcaToVertexZPos = -1.0;
3040 Float_t dcaToVertexXYNeg = -1.0;
3041 Float_t dcaToVertexZNeg = -1.0;
3054 NumClsITSPos = positronVgamma->GetNcls(0);
3055 NumClsITSNeg = electronVgamma->GetNcls(0);
3056 NumClsTPCPos = positronVgamma->GetNcls(1);
3057 NumClsTPCNeg = electronVgamma->GetNcls(1);
3059 nCrossedRowsTPCPos = positronVgamma->GetTPCCrossedRows();
3060 nCrossedRowsTPCNeg = electronVgamma->GetTPCCrossedRows();
3064 positronVgamma->GetImpactParameters(bPos,bCovPos);
3066 if (bCovPos[0]<=0 || bCovPos[2]<=0) {
3067 AliDebug(1,
"Estimated b resolution lower or equal zero!");
3068 bCovPos[0]=0; bCovPos[2]=0;
3073 positronVgamma->GetImpactParameters(bNeg,bCovNeg);
3075 if (bCovNeg[0]<=0 || bCovNeg[2]<=0) {
3076 AliDebug(1,
"Estimated b resolution lower or equal zero!");
3077 bCovNeg[0]=0; bCovNeg[2]=0;
3080 dcaToVertexXYPos = bPos[0];
3081 dcaToVertexZPos = bPos[1];
3082 dcaToVertexXYNeg = bNeg[0];
3083 dcaToVertexZNeg = bNeg[1];
3085 if( electronVgamma->P() > 0.3 && electronVgamma->P() < 0.45 ){
3092 if( positronVgamma->P() > 0.3 && positronVgamma->P() < 0.45 ){
3143 TVector3 posDaughter;
3144 TVector3 negDaughter;
3146 posDaughter.SetXYZ( fMCPosParticle->Px(), fMCPosParticle->Py(), fMCPosParticle->Pz() );
3147 negDaughter.SetXYZ( fMCNegParticle->Px(), fMCNegParticle->Py(), fMCNegParticle->Pz() );
3148 Double_t deltaTheta = negDaughter.Theta() - posDaughter.Theta();
3149 Double_t openingAngle = posDaughter.Angle( negDaughter );
3150 if( openingAngle < 1e-20 )
return 0.;
3151 Double_t psiAngle = TMath::ASin( deltaTheta/openingAngle );
3169 if( trackPos->GetConstrainedPxPyPz(momPos) == 0 ) trackPos->GetPxPyPz( momPos );
3170 if( trackNeg->GetConstrainedPxPyPz(momNeg) == 0 ) trackNeg->GetPxPyPz( momNeg );
3172 TVector3 posDaughter;
3173 TVector3 negDaughter;
3175 posDaughter.SetXYZ( momPos[0], momPos[1], momPos[2] );
3176 negDaughter.SetXYZ( momNeg[0], momNeg[1], momNeg[2] );
3178 Double_t deltaTheta = negDaughter.Theta() - posDaughter.Theta();
3179 Double_t openingAngle = posDaughter.Angle( negDaughter );
3181 if( openingAngle < 1e-20 )
return 0.;
3183 Double_t psiAngle = TMath::ASin( deltaTheta/openingAngle );
3190 TAxis *axisafter = histoRebin->GetXaxis();
3191 Int_t bins = axisafter->GetNbins();
3192 Double_t from = axisafter->GetXmin();
3193 Double_t to = axisafter->GetXmax();
3196 Double_t factor = TMath::Power(to/from, 1./bins);
3197 for(
Int_t i=1; i<=bins; ++i) newbins[i] = factor * newbins[i-1];
3198 axisafter->Set(bins, newbins);
3205 if(tobechecked > -1){
3206 vector<Int_t>::iterator it;
3207 it = find (vec.begin(), vec.end(), tobechecked);
3208 if (it != vec.end())
return true;
3210 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