23 #include "TClonesArray.h"
24 #include "TObjString.h"
25 #include "TDatabasePDG.h"
33 #include "TParticle.h"
34 #include "AliVEvent.h"
35 #include "AliESDCaloCluster.h"
36 #include "AliESDEvent.h"
37 #include "AliAODEvent.h"
39 #include "AliMixedEvent.h"
40 #include "AliAODMCParticle.h"
43 #include "AliPHOSGeoUtils.h"
44 #include "AliEMCALGeometry.h"
56 fUseAngleCut(kFALSE), fUseAngleEDepCut(kFALSE), fAngleCut(0), fAngleMaxCut(7.),
57 fMultiCutAna(kFALSE), fMultiCutAnaSim(kFALSE),
58 fNPtCuts(0), fNAsymCuts(0), fNCellNCuts(0), fNPIDBits(0),
59 fMakeInvPtPlots(kFALSE), fSameSM(kFALSE),
60 fFillSMCombinations(kFALSE), fCheckConversion(kFALSE),
61 fFillBadDistHisto(kFALSE), fFillSSCombinations(kFALSE),
62 fFillAngleHisto(kFALSE), fFillAsymmetryHisto(kFALSE), fFillOriginHisto(0),
63 fFillArmenterosThetaStar(0), fFillOnlyMCAcceptanceHisto(0),
64 fCheckAccInSector(kFALSE),
65 fPhotonMom1(), fPhotonMom1Boost(), fPhotonMom2(), fPi0Mom(),
69 fhAverTotECluster(0), fhAverTotECell(0), fhAverTotECellvsCluster(0),
70 fhEDensityCluster(0), fhEDensityCell(0), fhEDensityCellvsCluster(0),
71 fhReMod(0x0), fhReSameSideEMCALMod(0x0), fhReSameSectorEMCALMod(0x0), fhReDiffPHOSMod(0x0),
72 fhMiMod(0x0), fhMiSameSideEMCALMod(0x0), fhMiSameSectorEMCALMod(0x0), fhMiDiffPHOSMod(0x0),
73 fhReConv(0x0), fhMiConv(0x0), fhReConv2(0x0), fhMiConv2(0x0),
74 fhRe1(0x0), fhMi1(0x0), fhRe2(0x0), fhMi2(0x0),
75 fhRe3(0x0), fhMi3(0x0), fhReInvPt1(0x0), fhMiInvPt1(0x0),
76 fhReInvPt2(0x0), fhMiInvPt2(0x0), fhReInvPt3(0x0), fhMiInvPt3(0x0),
77 fhRePtNCellAsymCuts(0x0), fhMiPtNCellAsymCuts(0x0), fhRePtNCellAsymCutsSM(),
78 fhRePIDBits(0x0), fhRePtMult(0x0), fhReSS(),
79 fhRePtAsym(0x0), fhRePtAsymPi0(0x0), fhRePtAsymEta(0x0),
80 fhEventBin(0), fhEventMixBin(0),
81 fhCentrality(0x0), fhCentralityNoPair(0x0),
82 fhEventPlaneResolution(0x0),
83 fhRealOpeningAngle(0x0), fhRealCosOpeningAngle(0x0), fhMixedOpeningAngle(0x0), fhMixedCosOpeningAngle(0x0),
86 fhPrimPi0E(0x0), fhPrimPi0Pt(0x0),
87 fhPrimPi0AccE(0x0), fhPrimPi0AccPt(0x0),
88 fhPrimPi0Y(0x0), fhPrimPi0AccY(0x0),
89 fhPrimPi0Yeta(0x0), fhPrimPi0YetaYcut(0x0), fhPrimPi0AccYeta(0x0),
90 fhPrimPi0Phi(0x0), fhPrimPi0AccPhi(0x0),
91 fhPrimPi0OpeningAngle(0x0), fhPrimPi0OpeningAngleAsym(0x0),fhPrimPi0CosOpeningAngle(0x0),
92 fhPrimPi0PtCentrality(0), fhPrimPi0PtEventPlane(0),
93 fhPrimPi0AccPtCentrality(0), fhPrimPi0AccPtEventPlane(0),
94 fhPrimEtaE(0x0), fhPrimEtaPt(0x0),
95 fhPrimEtaAccE(0x0), fhPrimEtaAccPt(0x0),
96 fhPrimEtaY(0x0), fhPrimEtaAccY(0x0),
97 fhPrimEtaYeta(0x0), fhPrimEtaYetaYcut(0x0), fhPrimEtaAccYeta(0x0),
98 fhPrimEtaPhi(0x0), fhPrimEtaAccPhi(0x0),
99 fhPrimEtaOpeningAngle(0x0), fhPrimEtaOpeningAngleAsym(0x0),fhPrimEtaCosOpeningAngle(0x0),
100 fhPrimEtaPtCentrality(0), fhPrimEtaPtEventPlane(0),
101 fhPrimEtaAccPtCentrality(0), fhPrimEtaAccPtEventPlane(0),
102 fhPrimPi0PtOrigin(0x0), fhPrimEtaPtOrigin(0x0),
103 fhPrimNotResonancePi0PtOrigin(0x0), fhPrimPi0PtStatus(0x0),
104 fhMCOrgMass(), fhMCOrgAsym(), fhMCOrgDeltaEta(), fhMCOrgDeltaPhi(),
105 fhMCPi0MassPtRec(), fhMCPi0MassPtTrue(), fhMCPi0PtTruePtRec(),
106 fhMCEtaMassPtRec(), fhMCEtaMassPtTrue(), fhMCEtaPtTruePtRec(),
107 fhMCPi0PtOrigin(0x0), fhMCEtaPtOrigin(0x0),
108 fhMCNotResonancePi0PtOrigin(0),fhMCPi0PtStatus(0x0),
109 fhMCPi0ProdVertex(0), fhMCEtaProdVertex(0),
110 fhPrimPi0ProdVertex(0), fhPrimEtaProdVertex(0),
111 fhReMCFromConversion(0), fhReMCFromNotConversion(0), fhReMCFromMixConversion(0),
112 fhCosThStarPrimPi0(0), fhCosThStarPrimEta(0),
117 for(Int_t i = 0; i < 4; i++)
189 const Int_t buffersize = 255;
190 char onePar[buffersize] ;
191 snprintf(onePar,buffersize,
"--- AliAnaPi0 ---:") ;
193 snprintf(onePar,buffersize,
"Number of bins in Centrality: %d;",
GetNCentrBin()) ;
195 snprintf(onePar,buffersize,
"Number of bins in Z vert. pos: %d;",
GetNZvertBin()) ;
197 snprintf(onePar,buffersize,
"Number of bins in Reac. Plain: %d;",
GetNRPBin()) ;
199 snprintf(onePar,buffersize,
"Depth of event buffer: %d;",
GetNMaxEvMix()) ;
203 snprintf(onePar,buffersize,
" Asymmetry cuts: n = %d, asymmetry < ",
fNAsymCuts) ;
204 for(Int_t i = 0; i <
fNAsymCuts; i++) snprintf(onePar,buffersize,
"%s %2.2f;",onePar,
fAsymCuts[i]);
206 snprintf(onePar,buffersize,
" PID selection bits: n = %d, PID bit =",
fNPIDBits) ;
207 for(Int_t i = 0; i <
fNPIDBits; i++) snprintf(onePar,buffersize,
"%s %d;",onePar,
fPIDBits[i]);
209 snprintf(onePar,buffersize,
"Cuts:") ;
215 snprintf(onePar,buffersize,
"Number of modules: %d:",
fNModules) ;
219 snprintf(onePar, buffersize,
" pT cuts: n = %d, pt > ",
fNPtCuts) ;
220 for(Int_t i = 0; i <
fNPtCuts; i++) snprintf(onePar,buffersize,
"%s %2.2f;",onePar,
fPtCuts[i]);
222 snprintf(onePar,buffersize,
" N cell in cluster cuts: n = %d, nCell > ",
fNCellNCuts) ;
227 return new TObjString(parList) ;
236 TList * outputContainer =
new TList() ;
237 outputContainer->SetName(GetName());
240 const Int_t buffersize = 255;
241 char key[buffersize] ;
242 char title[buffersize] ;
273 fhPrimPi0E =
new TH1F(
"hPrimPi0E",
"Primary #pi^{0} E, |#it{Y}|<1",nptbins,ptmin,ptmax) ;
274 fhPrimPi0AccE =
new TH1F(
"hPrimPi0AccE",
"Primary #pi^{0} #it{E} with both photons in acceptance",nptbins,ptmin,ptmax) ;
280 fhPrimPi0Pt =
new TH1F(
"hPrimPi0Pt",
"Primary #pi^{0} #it{p}_{T} , |#it{Y}|<1",nptbins,ptmin,ptmax) ;
281 fhPrimPi0AccPt =
new TH1F(
"hPrimPi0AccPt",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
282 fhPrimPi0Pt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
287 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
288 fhPrimPi0Y =
new TH2F(
"hPrimPi0Rapidity",
"Rapidity of primary #pi^{0}",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
290 fhPrimPi0Y ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
293 fhPrimPi0Yeta =
new TH2F(
"hPrimPi0PseudoRapidity",
"PseudoRapidity of primary #pi^{0}",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
298 fhPrimPi0YetaYcut =
new TH2F(
"hPrimPi0PseudoRapidityYcut",
"PseudoRapidity of primary #pi^{0}, |#it{Y}|<1",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
303 fhPrimPi0AccY =
new TH2F(
"hPrimPi0AccRapidity",
"Rapidity of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
308 fhPrimPi0AccYeta =
new TH2F(
"hPrimPi0AccPseudoRapidity",
"PseudoRapidity of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
313 Int_t nphibinsopen = TMath::Nint(nphibins*TMath::TwoPi()/(phimax-phimin));
314 fhPrimPi0Phi =
new TH2F(
"hPrimPi0Phi",
"#phi of primary #pi^{0}, |#it{Y}|<1",nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
319 fhPrimPi0AccPhi =
new TH2F(
"hPrimPi0AccPhi",
"#phi of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,
320 nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
327 fhPrimEtaE =
new TH1F(
"hPrimEtaE",
"Primary eta E",nptbins,ptmin,ptmax) ;
328 fhPrimEtaAccE =
new TH1F(
"hPrimEtaAccE",
"Primary #eta #it{E} with both photons in acceptance",nptbins,ptmin,ptmax) ;
334 fhPrimEtaPt =
new TH1F(
"hPrimEtaPt",
"Primary #eta #it{p}_{T}",nptbins,ptmin,ptmax) ;
335 fhPrimEtaAccPt =
new TH1F(
"hPrimEtaAccPt",
"Primary eta #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
336 fhPrimEtaPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
341 fhPrimEtaY =
new TH2F(
"hPrimEtaRapidity",
"Rapidity of primary #eta",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
343 fhPrimEtaY->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
346 fhPrimEtaYeta =
new TH2F(
"hPrimEtaPseudoRapidityEta",
"PseudoRapidity of primary #eta",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
351 fhPrimEtaYetaYcut =
new TH2F(
"hPrimEtaPseudoRapidityEtaYcut",
"PseudoRapidity of primary #eta, |#it{Y}|<1",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
356 fhPrimEtaAccY =
new TH2F(
"hPrimEtaAccRapidity",
"Rapidity of primary #eta",nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
361 fhPrimEtaAccYeta =
new TH2F(
"hPrimEtaAccPseudoRapidity",
"PseudoRapidity of primary #eta",nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
366 fhPrimEtaPhi =
new TH2F(
"hPrimEtaPhi",
"Azimuthal of primary #eta",nptbins,ptmin,ptmax, nphibinsopen,0,360) ;
371 fhPrimEtaAccPhi =
new TH2F(
"hPrimEtaAccPhi",
"Azimuthal of primary #eta with accepted daughters",nptbins,ptmin,ptmax, nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
379 fhPrimPi0PtCentrality =
new TH2F(
"hPrimPi0PtCentrality",
"Primary #pi^{0} #it{p}_{T} vs reco centrality, |#it{Y}|<1",
380 nptbins,ptmin,ptmax, 100, 0, 100) ;
381 fhPrimPi0AccPtCentrality =
new TH2F(
"hPrimPi0AccPtCentrality",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco centrality",
382 nptbins,ptmin,ptmax, 100, 0, 100) ;
390 fhPrimEtaPtCentrality =
new TH2F(
"hPrimEtaPtCentrality",
"Primary #eta #it{p}_{T} vs reco centrality, |#it{Y}|<1",nptbins,ptmin,ptmax, 100, 0, 100) ;
391 fhPrimEtaAccPtCentrality =
new TH2F(
"hPrimEtaAccPtCentrality",
"Primary #eta with both photons in acceptance #it{p}_{T} vs reco centrality",nptbins,ptmin,ptmax, 100, 0, 100) ;
399 fhPrimPi0PtEventPlane =
new TH2F(
"hPrimPi0PtEventPlane",
"Primary #pi^{0} #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",
400 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
401 fhPrimPi0AccPtEventPlane =
new TH2F(
"hPrimPi0AccPtEventPlane",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco event plane angle",
402 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
410 fhPrimEtaPtEventPlane =
new TH2F(
"hPrimEtaPtEventPlane",
"Primary #eta #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
411 fhPrimEtaAccPtEventPlane =
new TH2F(
"hPrimEtaAccPtEventPlane",
"Primary #eta with both #gamma_{decay} in acceptance #it{p}_{T} vs reco event plane angle",nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
423 (
"hPrimPi0OpeningAngle",
"Angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,0.5);
429 (
"hPrimPi0OpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}",100,0,1,100,0,0.5);
435 (
"hPrimPi0CosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,-1,1);
441 (
"hPrimEtaOpeningAngle",
"Angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,100,0,0.5);
447 (
"hPrimEtaOpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}",100,0,1,100,0,0.5);
454 (
"hPrimEtaCosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,100,-1,1);
464 fhPrimPi0PtOrigin =
new TH2F(
"hPrimPi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
479 fhPrimNotResonancePi0PtOrigin =
new TH2F(
"hPrimNotResonancePi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
494 fhPrimPi0PtStatus =
new TH2F(
"hPrimPi0PtStatus",
"Primary #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
500 fhPrimEtaPtOrigin =
new TH2F(
"hPrimEtaPtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
512 fhPrimPi0ProdVertex =
new TH2F(
"hPrimPi0ProdVertex",
"generated #pi^{0} #it{p}_{T} vs production vertex",
513 200,0.,20.,5000,0,500) ;
518 fhPrimEtaProdVertex =
new TH2F(
"hPrimEtaProdVertex",
"generated #eta #it{p}_{T} vs production vertex",
519 200,0.,20.,5000,0,500) ;
527 TString ebin[] = {
"8 < E < 12 GeV",
"12 < E < 16 GeV",
"16 < E < 20 GeV",
"E > 20 GeV" };
528 Int_t narmbins = 400;
530 Float_t armmax = 0.4;
532 for(Int_t i = 0; i < 4; i++)
534 fhArmPrimPi0[i] =
new TH2F(Form(
"hArmenterosPrimPi0EBin%d",i),
535 Form(
"Armenteros of primary #pi^{0}, %s",ebin[i].Data()),
536 200, -1, 1, narmbins,armmin,armmax);
541 fhArmPrimEta[i] =
new TH2F(Form(
"hArmenterosPrimEtaEBin%d",i),
542 Form(
"Armenteros of primary #eta, %s",ebin[i].Data()),
543 200, -1, 1, narmbins,armmin,armmax);
551 (
"hCosThStarPrimPi0",
"cos(#theta *) for primary #pi^{0}",nptbins,ptmin,ptmax,200,-1,1);
557 (
"hCosThStarPrimEta",
"cos(#theta *) for primary #eta",nptbins,ptmin,ptmax,200,-1,1);
628 fhReConv =
new TH2F(
"hReConv",
"Real Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
629 fhReConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
630 fhReConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
633 fhReConv2 =
new TH2F(
"hReConv2",
"Real Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
634 fhReConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
635 fhReConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
640 fhMiConv =
new TH2F(
"hMiConv",
"Mixed Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
641 fhMiConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
642 fhMiConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
645 fhMiConv2 =
new TH2F(
"hMiConv2",
"Mixed Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
646 fhMiConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
647 fhMiConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
654 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
658 Int_t index = ((ic*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
661 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
662 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
664 fhRe1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
665 fhRe1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
666 fhRe1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
668 outputContainer->Add(
fhRe1[index]) ;
673 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
674 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
676 fhRe2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
677 fhRe2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
678 fhRe2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
679 outputContainer->Add(
fhRe2[index]) ;
682 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
683 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
685 fhRe3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
686 fhRe3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
687 fhRe3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
688 outputContainer->Add(
fhRe3[index]) ;
695 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
696 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
698 fhReInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
699 fhReInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
700 fhReInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
705 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
706 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
708 fhReInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
709 fhReInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
710 fhReInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
714 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
715 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
717 fhReInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
718 fhReInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
719 fhReInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
727 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
728 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
730 fhMi1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
731 fhMi1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
732 fhMi1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
733 outputContainer->Add(
fhMi1[index]) ;
736 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
737 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
739 fhMi2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
740 fhMi2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
741 fhMi2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
742 outputContainer->Add(
fhMi2[index]) ;
745 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
746 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
748 fhMi3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
749 fhMi3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
750 fhMi3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
751 outputContainer->Add(
fhMi3[index]) ;
758 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
759 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
761 fhMiInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
762 fhMiInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
763 fhMiInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
767 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
768 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
770 fhMiInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
771 fhMiInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
772 fhMiInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
776 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
777 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f,dist bad 3",
779 fhMiInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
780 fhMiInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
781 fhMiInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
790 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs #it{p}_{T}",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
797 fhRePtAsym =
new TH2F(
"hRePtAsym",
"#it{Asymmetry} vs #it{p}_{T} , for pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
798 fhRePtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
802 fhRePtAsymPi0 =
new TH2F(
"hRePtAsymPi0",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
807 fhRePtAsymEta =
new TH2F(
"hRePtAsymEta",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
816 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++){
817 snprintf(key, buffersize,
"hRe_pidbit%d",ipid) ;
818 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for PIDBit=%d",
fPIDBits[ipid]) ;
819 fhRePIDBits[ipid] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
820 fhRePIDBits[ipid]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
821 fhRePIDBits[ipid]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
832 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
838 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
839 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f ",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]) ;
840 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
842 fhRePtNCellAsymCuts[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
847 snprintf(key, buffersize,
"hMi_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
848 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]) ;
849 fhMiPtNCellAsymCuts[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
856 for(Int_t iSM = 0; iSM <
fNModules; iSM++)
858 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
859 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f, SM %d ",
861 fhRePtNCellAsymCutsSM[iSM][index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
874 for(Int_t iasym = 0; iasym<
fNAsymCuts; iasym++)
876 fhRePtMult[iasym] =
new TH3F(Form(
"hRePtMult_asym%d",iasym),Form(
"(#it{p}_{T},C,M)_{#gamma#gamma}, A<%1.2f",
fAsymCuts[iasym]),
877 nptbins,ptmin,ptmax,ntrmbins,ntrmmin,ntrmmax,nmassbins,massmin,massmax);
878 fhRePtMult[iasym]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
879 fhRePtMult[iasym]->SetYTitle(
"Track multiplicity");
880 fhRePtMult[iasym]->SetZTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
888 fhReSS[0] =
new TH2F(
"hRe_SS_Tight",
" 0.01 < #lambda_{0}^{2} < 0.4",
889 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
890 fhReSS[0]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
891 fhReSS[0]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
892 outputContainer->Add(
fhReSS[0]) ;
895 fhReSS[1] =
new TH2F(
"hRe_SS_Loose",
" #lambda_{0}^{2} > 0.4",
896 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
897 fhReSS[1]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
898 fhReSS[1]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
899 outputContainer->Add(
fhReSS[1]) ;
902 fhReSS[2] =
new TH2F(
"hRe_SS_Both",
" cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
903 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
904 fhReSS[2]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
905 fhReSS[2]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
906 outputContainer->Add(
fhReSS[2]) ;
911 fhEventBin=
new TH1I(
"hEventBin",
"Number of real pairs per bin(cen,vz,rp)",
918 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of mixed pairs per bin(cen,vz,rp)",
944 (
"hRealOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,300,0,TMath::Pi());
950 (
"hRealCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1);
958 (
"hMixedOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,300,0,TMath::Pi());
964 (
"hMixedCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1);
974 fhReMCFromConversion =
new TH2F(
"hReMCFromConversion",
"Invariant mass of 2 clusters originated in conversions",
975 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
980 fhReMCFromNotConversion =
new TH2F(
"hReMCNotFromConversion",
"Invariant mass of 2 clusters not originated in conversions",
981 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
986 fhReMCFromMixConversion =
new TH2F(
"hReMCFromMixConversion",
"Invariant mass of 2 clusters one from conversion and the other not",
987 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
995 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1010 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1025 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1032 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1043 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",
1044 200,0.,20.,5000,0,500) ;
1049 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",
1050 200,0.,20.,5000,0,500) ;
1055 for(Int_t i = 0; i<13; i++)
1057 fhMCOrgMass[i] =
new TH2F(Form(
"hMCOrgMass_%d",i),Form(
"#it{M} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1058 fhMCOrgMass[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1059 fhMCOrgMass[i]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1062 fhMCOrgAsym[i]=
new TH2F(Form(
"hMCOrgAsym_%d",i),Form(
"#it{Asymmetry} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1063 fhMCOrgAsym[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1067 fhMCOrgDeltaEta[i] =
new TH2F(Form(
"hMCOrgDeltaEta_%d",i),Form(
"#Delta #eta of pair vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,netabins,-1.4,1.4) ;
1072 fhMCOrgDeltaPhi[i]=
new TH2F(Form(
"hMCOrgDeltaPhi_%d",i),Form(
"#Delta #phi of pair vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nphibins,-0.7,0.7) ;
1087 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1091 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1093 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1095 fhMCPi0MassPtRec[index] =
new TH2F(Form(
"hMCPi0MassPtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1096 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1097 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1098 fhMCPi0MassPtRec[index]->SetXTitle(
"#it{p}_{T, reconstructed} (GeV/#it{c})");
1099 fhMCPi0MassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1102 fhMCPi0MassPtTrue[index] =
new TH2F(Form(
"hMCPi0MassPtTrue_pt%d_cell%d_asym%d",ipt,icell,iasym),
1103 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #pi^{0} cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1104 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1109 fhMCPi0PtTruePtRec[index] =
new TH2F(Form(
"hMCPi0PtTruePtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1110 Form(
"Generated vs reconstructed #it{p}_{T} of true #pi^{0} cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2} for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1111 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1116 fhMCEtaMassPtRec[index] =
new TH2F(Form(
"hMCEtaMassPtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1117 Form(
"Reconstructed #it{M} vs reconstructed #it{p}_{T} of true #eta cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1118 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1120 fhMCEtaMassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1123 fhMCEtaMassPtTrue[index] =
new TH2F(Form(
"hMCEtaMassPtTrue_pt%d_cell%d_asym%d",ipt,icell,iasym),
1124 Form(
"Reconstructed #it{M} vs generated #it{p}_{T} of true #eta cluster pairs for #it{p}_{T} >%2.2f, #it{N}^{cluster}_{cell}>%d and |#it{A}|>%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1125 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1130 fhMCEtaPtTruePtRec[index] =
new TH2F(Form(
"hMCEtaPtTruePtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1131 Form(
"Generated vs reconstructed #it{p}_{T} of true #eta cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2} for #it{p}_{T} >%2.2f, ncell>%d and asym >%1.2f",
fPtCuts[ipt],
fCellNCuts[icell],
fAsymCuts[iasym]),
1132 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1147 fhMCPi0MassPtTrue[0] =
new TH2F(
"hMCPi0MassPtTrue",
"Reconstructed Mass vs generated p_T of true #pi^{0} cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1152 fhMCPi0PtTruePtRec[0]=
new TH2F(
"hMCPi0PtTruePtRec",
"Generated vs reconstructed p_T of true #pi^{0} cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1157 fhMCEtaMassPtTrue[0] =
new TH2F(
"hMCEtaMassPtTrue",
"Reconstructed Mass vs generated p_T of true #eta cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1162 fhMCEtaPtTruePtRec[0]=
new TH2F(
"hMCEtaPtTruePtRec",
"Generated vs reconstructed p_T of true #eta cluster pairs, 0.01 < rec. mass < 0.17 MeV/#it{c}^{2}",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1172 TString pairnamePHOS[] = {
"(0-1)",
"(0-2)",
"(1-2)",
"(0-3)",
"(0-4)",
"(1-3)",
"(1-4)",
"(2-3)",
"(2-4)",
"(3-4)"};
1173 for(Int_t imod=0; imod<
fNModules; imod++)
1176 snprintf(key, buffersize,
"hReMod_%d",imod) ;
1177 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1178 fhReMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1179 fhReMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1180 fhReMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1181 outputContainer->Add(
fhReMod[imod]) ;
1184 snprintf(key, buffersize,
"hReDiffPHOSMod_%d",imod) ;
1185 snprintf(title, buffersize,
"Real pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).Data()) ;
1186 fhReDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1188 fhReDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1193 if(imod<fNModules/2)
1195 snprintf(key, buffersize,
"hReSameSectorEMCAL_%d",imod) ;
1196 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1202 if(imod<fNModules-2)
1204 snprintf(key, buffersize,
"hReSameSideEMCAL_%d",imod) ;
1205 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1206 fhReSameSideEMCALMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1215 snprintf(key, buffersize,
"hMiMod_%d",imod) ;
1216 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1217 fhMiMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1218 fhMiMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1219 fhMiMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1220 outputContainer->Add(
fhMiMod[imod]) ;
1224 snprintf(key, buffersize,
"hMiDiffPHOSMod_%d",imod) ;
1225 snprintf(title, buffersize,
"Mixed pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).Data()) ;
1226 fhMiDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1228 fhMiDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1233 if(imod<fNModules/2)
1235 snprintf(key, buffersize,
"hMiSameSectorEMCALMod_%d",imod) ;
1236 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1242 if(imod<fNModules-2){
1244 snprintf(key, buffersize,
"hMiSameSideEMCALMod_%d",imod) ;
1245 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1246 fhMiSameSideEMCALMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1262 return outputContainer;
1270 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1273 printf(
"Number of bins in Centrality: %d \n",
GetNCentrBin()) ;
1274 printf(
"Number of bins in Z vert. pos: %d \n",
GetNZvertBin()) ;
1275 printf(
"Number of bins in Reac. Plain: %d \n",
GetNRPBin()) ;
1276 printf(
"Depth of event buffer: %d \n",
GetNMaxEvMix()) ;
1277 printf(
"Pair in same Module: %d \n",
fSameSM) ;
1278 printf(
"Cuts: \n") ;
1280 printf(
"Number of modules: %d \n",
fNModules) ;
1282 printf(
"Asymmetry cuts: n = %d, \n",
fNAsymCuts) ;
1283 printf(
"\tasymmetry < ");
1287 printf(
"PID selection bits: n = %d, \n",
fNPIDBits) ;
1288 printf(
"\tPID bit = ");
1294 printf(
"pT cuts: n = %d, \n",
fNPtCuts) ;
1299 printf(
"N cell in cluster cuts: n = %d, \n",
fNCellNCuts) ;
1300 printf(
"\tnCell > ");
1305 printf(
"------------------------------------------------------\n") ;
1313 Double_t mesonY = -100 ;
1314 Double_t mesonE = -1 ;
1315 Double_t mesonPt = -1 ;
1316 Double_t mesonPhi = 100 ;
1317 Double_t mesonYeta= -1 ;
1328 TParticle * primStack = 0;
1329 AliAODMCParticle * primAOD = 0;
1332 AliStack * stack = 0;
1337 nprim = stack->GetNtrack();
1341 TClonesArray * mcparticles = 0;
1345 if( !mcparticles )
return;
1346 nprim = mcparticles->GetEntriesFast();
1349 for(Int_t i=0 ; i < nprim; i++)
1351 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
1355 primStack = stack->Particle(i) ;
1358 AliWarning(
"ESD primaries pointer not available!!");
1363 if( primStack->Energy() < 0.4 )
continue;
1365 pdg = primStack->GetPdgCode();
1366 nDaught = primStack->GetNDaughters();
1367 iphot1 = primStack->GetDaughter(0) ;
1368 iphot2 = primStack->GetDaughter(1) ;
1369 if(primStack->Energy() == TMath::Abs(primStack->Pz())) continue ;
1377 mesonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
1381 primAOD = (AliAODMCParticle *) mcparticles->At(i);
1384 AliWarning(
"AOD primaries pointer not available!!");
1389 if( primAOD->E() < 0.4 )
continue;
1391 pdg = primAOD->GetPdgCode();
1392 nDaught = primAOD->GetNDaughters();
1393 iphot1 = primAOD->GetFirstDaughter() ;
1394 iphot2 = primAOD->GetLastDaughter() ;
1396 if(primAOD->E() == TMath::Abs(primAOD->Pz())) continue ;
1399 fPi0Mom.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
1401 mesonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
1405 if( pdg != 111 && pdg != 221) continue ;
1411 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
1412 mesonPhi *= TMath::RadToDeg();
1416 if(TMath::Abs(mesonY) < 1.0)
1436 if(TMath::Abs(mesonY) < 1.0)
1458 Int_t momindex = -1;
1460 Int_t momstatus = -1;
1463 if(
GetReader()->ReadStack()) momindex = primStack->GetFirstMother();
1464 if(
GetReader()->ReadAODMCParticles()) momindex = primAOD ->GetMother();
1466 if(momindex >= 0 && momindex < nprim)
1470 status = primStack->GetStatusCode();
1471 TParticle* mother = stack->Particle(momindex);
1472 mompdg = TMath::Abs(mother->GetPdgCode());
1473 momstatus = mother->GetStatusCode();
1479 status = primAOD->GetStatus();
1480 AliAODMCParticle* mother = (AliAODMCParticle*) mcparticles->At(momindex);
1481 mompdg = TMath::Abs(mother->GetPdgCode());
1482 momstatus = mother->GetStatus();
1483 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1494 else if(mompdg > 2100 && mompdg < 2210)
1500 else if(mompdg >= 310 && mompdg <= 323)
1503 else if(momstatus == 11 || momstatus == 12 )
1514 else if(mompdg > 2100 && mompdg < 2210)
1520 else if(mompdg >= 310 && mompdg <= 323)
1523 else if(momstatus == 11 || momstatus == 12 )
1533 else if(mompdg > 2100 && mompdg < 2210)
1536 else if(momstatus == 11 || momstatus == 12 )
1547 if(nDaught != 2 )
continue;
1549 if(iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim) continue ;
1553 Bool_t inacceptance1 = kTRUE;
1554 Bool_t inacceptance2 = kTRUE;
1558 TParticle * phot1 = stack->Particle(iphot1) ;
1559 TParticle * phot2 = stack->Particle(iphot2) ;
1561 if(!phot1 || !phot2) continue ;
1563 pdg1 = phot1->GetPdgCode();
1564 pdg2 = phot2->GetPdgCode();
1579 AliAODMCParticle * phot1 = (AliAODMCParticle *) mcparticles->At(iphot1) ;
1580 AliAODMCParticle * phot2 = (AliAODMCParticle *) mcparticles->At(iphot2) ;
1582 if(!phot1 || !phot2) continue ;
1584 pdg1 = phot1->GetPdgCode();
1585 pdg2 = phot2->GetPdgCode();
1587 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
1588 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
1598 if( pdg1 != 22 || pdg2 !=22) continue ;
1617 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
1618 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
1627 Bool_t sameSector = kFALSE;
1628 for(Int_t isector = 0; isector <
fNModules/2; isector++)
1631 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
1634 if(sm1!=sm2 && !sameSector)
1636 inacceptance1 = kFALSE;
1637 inacceptance2 = kFALSE;
1644 AliDebug(2,Form(
"Accepted in %s?: m (%2.2f,%2.2f,%2.2f), p1 (%2.2f,%2.2f,%2.2f), p2 (%2.2f,%2.2f,%2.2f) : in1 %d, in2 %d",
1646 mesonPt,mesonYeta,mesonPhi,
1649 inacceptance1, inacceptance2));
1651 if(inacceptance1 && inacceptance2)
1656 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
1711 Float_t momentumDaughter1AlongMother = 0.;
1712 Float_t momentumDaughter2AlongMother = 0.;
1714 if (momentumSquaredMother > 0.)
1721 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1724 if (ptArmSquared > 0.)
1725 pTArm = sqrt(ptArmSquared);
1727 Float_t alphaArm = 0.;
1728 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
1729 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1735 Float_t en =
fPi0Mom.Energy();
1737 if(en > 8 && en <= 12) ebin = 0;
1738 if(en > 12 && en <= 16) ebin = 1;
1739 if(en > 16 && en <= 20) ebin = 2;
1740 if(en > 20) ebin = 3;
1741 if(ebin < 0 || ebin > 3) return ;
1771 Float_t pt1, Float_t pt2,
1772 Int_t ncell1, Int_t ncell2,
1773 Double_t mass, Double_t pt, Double_t asym,
1774 Double_t deta, Double_t dphi)
1777 Int_t ancStatus = 0;
1781 Int_t momindex = -1;
1783 Int_t momstatus = -1;
1790 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
1791 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
1797 else if(TMath::Abs(ancPDG)==11)
1801 else if(ancPDG==111)
1806 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1810 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1812 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1819 if(mass < 0.17 && mass > 0.1)
1830 if(mass < 0.17 && mass > 0.1)
1837 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
1838 status = ancestor->GetStatusCode();
1839 momindex = ancestor->GetFirstMother();
1840 if(momindex < 0)
return;
1841 TParticle* mother =
GetMCStack()->Particle(momindex);
1842 mompdg = TMath::Abs(mother->GetPdgCode());
1843 momstatus = mother->GetStatusCode();
1844 prodR = mother->R();
1850 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
1851 status = ancestor->GetStatus();
1852 momindex = ancestor->GetMother();
1853 if(momindex < 0)
return;
1854 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
1855 mompdg = TMath::Abs(mother->GetPdgCode());
1856 momstatus = mother->GetStatus();
1857 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1869 else if(mompdg > 2100 && mompdg < 2210)
1875 else if(mompdg >= 310 && mompdg <= 323)
1878 else if(momstatus == 11 || momstatus == 12 )
1886 else if(mompdg > 2100 && mompdg < 2210)
1892 else if(mompdg >= 310 && mompdg <= 323)
1895 else if(momstatus == 11 || momstatus == 12 )
1902 else if(ancPDG==221)
1907 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1911 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1913 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1920 if(mass < 0.65 && mass > 0.45)
1934 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
1935 momindex = ancestor->GetFirstMother();
1936 if(momindex < 0)
return;
1937 TParticle* mother =
GetMCStack()->Particle(momindex);
1938 mompdg = TMath::Abs(mother->GetPdgCode());
1939 momstatus = mother->GetStatusCode();
1940 prodR = mother->R();
1945 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
1946 momindex = ancestor->GetMother();
1947 if(momindex < 0)
return;
1948 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
1949 mompdg = TMath::Abs(mother->GetPdgCode());
1950 momstatus = mother->GetStatus();
1951 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1958 else if(mompdg > 2100 && mompdg < 2210)
1961 else if(momstatus == 11 || momstatus == 12 )
1968 else if(ancPDG==-2212)
1972 else if(ancPDG==-2112)
1976 else if(TMath::Abs(ancPDG)==13)
1980 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
1993 if(ancStatus==11 || ancStatus==12)
1997 else if (ancStatus==21){
2002 else if(ancLabel < 6)
2006 else if(ancLabel < 8)
2024 AliDebug(1,
"Common ancestor not found");
2029 if(mcIndex >= 0 && mcIndex < 13)
2058 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().Data()));
2065 AliDebug(1,Form(
"Photon entries %d", nPhot));
2070 AliDebug(1,Form(
"nPhotons %d, cent bin %d continue to next event",nPhot,
GetEventCentrality()));
2084 Double_t vert[] = {0.0, 0.0, 0.0} ;
2085 Int_t evtIndex1 = 0 ;
2086 Int_t currentEvtIndex = -1;
2094 AliWarning(Form(
"Mix Bin not expected: cen bin %d, z bin %d, rp bin %d, total bin %d, Event Centrality %d, z vertex %2.3f, Reaction Plane %2.3f",
2107 for(Int_t i1=0; i1<nPhot-1; i1++)
2119 if ( evtIndex1 == -1 )
2121 if ( evtIndex1 == -2 )
2127 if (evtIndex1 != currentEvtIndex)
2140 currentEvtIndex = evtIndex1 ;
2146 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2149 module1 = p1->GetSModNumber();
2160 for(Int_t i2=i1+1; i2<nPhot; i2++)
2171 if ( evtIndex2 == -1 )
2173 if ( evtIndex2 == -2 )
2218 Float_t tof1 = p1->GetTime();
2219 Float_t l01 = p1->GetM02();
2220 Int_t ncell1 = p1->GetNCells();
2223 Float_t tof2 = p2->GetTime();
2224 Float_t l02 = p2->GetM02();
2225 Int_t ncell2 = p2->GetNCells();
2228 Double_t t12diff = tof1-tof2;
2237 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2240 module2 = p2->GetSModNumber();
2249 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2251 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
2266 AliDebug(2,Form(
"Real pair cut %f < angle %f < cut %f",
fAngleCut, angle, fAngleMaxCut));
2275 if(module1==module2 && module1 >=0 && module1<
fNModules)
2304 if(
fSameSM && module1!=module2) ok=kFALSE;
2318 if ( l01 > 0.01 && l01 < 0.4 &&
2326 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2330 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2334 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2337 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2344 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2349 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2398 FillMCVersusRecDataHistograms(p1->GetLabel(), p2->GetLabel(),p1->Pt(), p2->Pt(),ncell1, ncell2, m, pt, a,deta, dphi);
2407 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2416 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2420 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2422 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2440 for(Int_t iasym = 0; iasym <
fNAsymCuts; iasym++)
2458 if(eventbin < 0) return ;
2464 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
2468 Int_t nMixed = evMixList->GetSize() ;
2469 for(Int_t ii=0; ii<nMixed; ii++)
2471 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
2472 Int_t nPhot2=ev2->GetEntriesFast() ;
2474 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
2481 for(Int_t i1=0; i1<nPhot; i1++)
2488 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2494 for(Int_t i2=0; i2<nPhot2; i2++)
2496 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
2499 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2502 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2514 AliDebug(2,Form(
"Mix pair angle %f < cut %f",angle,
fAngleCut));
2518 AliDebug(2,Form(
"Mixed Event: pT: fPhotonMom1 %2.2f, fPhotonMom2 %2.2f; Pair: pT %2.2f, mass %2.3f, a %2.3f",p1->Pt(), p2->Pt(), pt,m,a));
2528 if(module1==module2 && module1 >=0 && module1<
fNModules)
2556 if(
fSameSM && module1!=module2) ok=kFALSE;
2567 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2571 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2575 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2577 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2585 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2590 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2609 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2613 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2615 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2646 if( currentEvent->GetEntriesFast() > 0 )
2648 evMixList->AddFirst(currentEvent) ;
2652 TClonesArray * tmp = (TClonesArray*) (evMixList->Last()) ;
2653 evMixList->RemoveLast() ;
2659 delete currentEvent ;
2664 AliDebug(1,
"End fill histograms");
2674 Int_t evtIndex = -1 ;
2680 evtIndex =
GetMixedEvent()->EventIndexForCaloCluster(part->GetCaloLabel(0)) ;
virtual Bool_t IsFiducialCutOn() const
TH2F * fhPrimEtaY
! Rapidity distribution of primary particles vs pT
Float_t GetHistoPtMax() const
TH2F ** fhRe3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhPrimEtaAccPtCentrality
! primary eta with accepted daughters reconstructed centrality vs pT
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
TH2F * fhPrimPi0Y
! Rapidity distribution of primary particles vs pT
TLorentzVector fPhotonMom1Boost
! Photon cluster momentum, temporary array
Int_t fNModules
[GetNCentrBin()*GetNZvertBin()*GetNRPBin()]
TH2F * fhPrimEtaYetaYcut
! PseudoRapidity distribution of primary particles vs pT, Y<1
virtual Bool_t DoOwnMix() const
TH1F * fhPrimPi0AccPt
! Spectrum of primary with accepted daughters
Float_t GetHistoPtMin() const
virtual Float_t GetMaxPt() const
TH2F * fhPrimEtaAccPhi
! Azimutal distribution of primary with accepted daughters vs pT
virtual Int_t GetTrackMultiplicity() const
TLorentzVector fPi0Mom
! Pi0 cluster momentum, temporary array
TH2F * fhReMCFromMixConversion
! Invariant mass of 2 clusters one from conversion and the other not
Int_t fPIDBits[10]
Array with different PID bits.
virtual Int_t GetCalorimeter() const
virtual void AddToHistogramsName(TString add)
TH2F * fhReConv
[fNModules-1]
Bool_t fFillArmenterosThetaStar
Fill armenteros histograms.
Int_t fNPIDBits
Number of possible PID bit combinations.
TLorentzVector fPhotonMom2
! Photon cluster momentum, temporary array
virtual Bool_t IsDataMC() const
Int_t fCellNCuts[10]
Array with different cell number cluster cuts.
TH2F * fhMCOrgDeltaEta[13]
! Delta Eta vs pt of real pairs, check common origin of pair
TH2F * fhReSS[3]
[fNAsymCuts]
TH2F * fhPrimEtaCosOpeningAngle
! Cosinus of opening angle of pair version pair energy, eta primaries
TH2F * fhPrimPi0PtStatus
! Spectrum of generated pi0 vs pi0 status
Bool_t fCheckConversion
Fill histograms with tagged photons as conversion.
virtual Float_t GetPairTimeCut() const
Time cut in ns.
virtual AliStack * GetMCStack() const
virtual void GetVertex(Double_t vertex[3]) const
Int_t GetHistoTrackMultiplicityMax() const
TH1F * fhPrimPi0E
! Spectrum of Primary
virtual TString GetInputAODName() const
Bool_t fUseAngleEDepCut
Select pairs depending on their opening angle.
TH2F ** fhMiSameSectorEMCALMod
[fNModules-2]
Selected photon clusters invariant mass analysis.
TH1F * fhCentrality
! Histogram with centrality bins with at least one pare
virtual void SetInputAODName(TString name)
TH2F * fhPrimPi0PtCentrality
! primary pi0 reconstructed centrality vs pT
TH2F * fhPrimEtaPtCentrality
! primary eta reconstructed centrality vs pT
virtual Float_t GetZvertexCut() const
Maximal number of events for mixin.
virtual Double_t GetEventPlaneAngle() const
TH2F * fhReMCFromConversion
! Invariant mass of 2 clusters originated in conversions
TH2F ** fhReSameSideEMCALMod
[fNModules]
TH2F * fhPrimPi0OpeningAngle
! Opening angle of pair versus pair energy, primaries
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
TH2F * fhRealOpeningAngle
! Opening angle of pair versus pair energy
TH2F * fhMCOrgMass[13]
! Mass vs pt of real pairs, check common origin of pair
Int_t GetHistoMassBins() const
Int_t GetHistoPhiBins() const
TH2F * fhRePtAsymPi0
! REAL two-photon pt vs asymmetry, close to pi0 mass
TLorentzVector fPhotonMom1
! Photon cluster momentum, temporary array
TH2F * fhRealCosOpeningAngle
! Cosinus of opening angle of pair version pair energy
TH2F ** fhRe1
REAL two-photon invariant mass distribution for different centralities and Asymmetry.
Float_t GetHistoMassMin() const
TH2F * fhPrimPi0ProdVertex
! Spectrum of primary pi0 vs production vertex
TH2F ** fhReDiffPHOSMod
[fNModules/2]
TH2F * fhMiConv
! MIXED two-photon invariant mass distribution one of the pair was 2 clusters with small mass ...
Int_t GetHistoTrackMultiplicityMin() const
Float_t fAsymCuts[10]
Array with different assymetry cuts.
Float_t fPtCuts[10]
Array with different pt cuts.
TH2F * fhMCOrgAsym[13]
! Asymmetry vs pt of real pairs, check common origin of pair
virtual Int_t GetEventCentrality() const
TH2F ** fhRePtNCellAsymCuts
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhPrimPi0PtOrigin
! Spectrum of generated pi0 vs mother
Float_t GetHistoDiffTimeMin() const
virtual Int_t GetEventVzBin() const
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle *particle)
TH2F ** fhMCPi0MassPtRec
Real pi0 pairs, reconstructed mass vs reconstructed pt of original pair.
TH2F * fhPrimPi0AccPtCentrality
! primary pi0 with accepted daughters reconstructed centrality vs pT
Float_t GetHistoPhiMin() const
Int_t fNAsymCuts
Number of assymmetry cuts.
Float_t GetHistoDiffTimeMax() const
TH2F * fhMixedCosOpeningAngle
! Cosinus of opening angle of pair version pair energy
TVector3 fProdVertex
! Production vertex, temporary array
TH2F ** fhReInvPt2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F ** fhMiDiffPHOSMod
[fNModules/2]
TH2F ** fhMi2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TList * GetCreateOutputObjects()
TH2F ** fhReInvPt3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Bool_t fFillOriginHisto
Fill histograms depending on their origin.
TH2F * fhPrimPi0Phi
! Azimutal distribution of primary particles vs pT
Bool_t IsAngleInWindow(Float_t angle, Float_t e) const
Float_t GetHistoAsymmetryMax() const
Float_t GetHistoMassMax() const
Base class for CaloTrackCorr analysis algorithms.
Bool_t fFillAngleHisto
Fill histograms with pair opening angle.
virtual TString GetCalorimeterString() const
Bool_t fFillBadDistHisto
Do plots for different distances to bad channels.
virtual Bool_t IsRealCaloAcceptanceOn() const
virtual AliFiducialCut * GetFiducialCut()
virtual TClonesArray * GetInputAODBranch() const
TH2F ** fhMCEtaPtTruePtRec
[fNPtCuts*fNAsymCuts*fNCellNCuts]
Bool_t fMultiCutAna
Do analysis with several or fixed cut.
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F ** fhReMod
REAL two-photon invariant mass distribution for different calorimeter modules.
TH1F * fhCentralityNoPair
! Histogram with centrality bins with no pair
Bool_t fFillAsymmetryHisto
Fill histograms with asymmetry vs pt.
Int_t GetHistoDiffTimeBins() const
virtual Int_t GetEventCentralityBin() const
Int_t GetEventIndex(AliAODPWG4Particle *part, Double_t *vert)
void FillAcceptanceHistograms()
Fill acceptance histograms if MC data is available.
virtual Int_t GetEventRPBin() const
TH2F ** fhReSameSectorEMCALMod
[fNModules-2]
TH2F ** fhMCEtaMassPtTrue
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F ** fhReInvPt1
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Int_t fNCellNCuts
Number of cuts with number of cells in cluster.
TH2F ** fhMiInvPt1
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Int_t GetHistoAsymmetryBins() const
TH2F * fhPrimEtaAccYeta
! PseudoRapidity distribution of primary with accepted daughters vs pT
Int_t CheckCommonAncestor(Int_t index1, Int_t index2, const AliCaloTrackReader *reader, Int_t &ancPDG, Int_t &ancStatus, TLorentzVector &momentum, TVector3 &v)
Float_t fAngleMaxCut
Select pairs with opening angle smaller than a threshold.
TH1I * fhEventMixBin
! Number of mixed pairs in a particular bin (cen,vz,rp)
void FillArmenterosThetaStar(Int_t pdg)
Fill armenteros plots.
virtual AliEMCALGeometry * GetEMCALGeometry() const
TH2F * fhPrimPi0CosOpeningAngle
! Cosinus of opening angle of pair version pair energy, pi0 primaries
TH2F * fhMCPi0PtOrigin
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F ** fhMiSameSideEMCALMod
[fNModules]
Bool_t fFillOnlyMCAcceptanceHisto
Do analysis only of MC kinematics input.
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
Bool_t fMakeInvPtPlots
Do plots with inverse pt weight.
TH2F * fhPrimEtaPtEventPlane
! primary eta reconstructed event plane vs pT
TH1F * fhPrimPi0AccE
! Spectrum of primary with accepted daughters
Int_t fNPtCuts
Number of pt cuts.
TH1F * fhPrimEtaE
! Spectrum of Primary
TH2F * fhPrimEtaAccPtEventPlane
! primary eta with accepted daughters reconstructed event plane vs pT
virtual AliCalorimeterUtils * GetCaloUtils() const
TH2F * fhPrimNotResonancePi0PtOrigin
! Spectrum of generated pi0 vs mother
TH2F * fhPrimEtaAccY
! Rapidity distribution of primary with accepted daughters vs pT
TH1F * fhPrimEtaPt
! Spectrum of Primary
Bool_t fMultiCutAnaSim
Do analysis with several or fixed cut, in the simulation related part.
TH1F * fhPrimEtaAccPt
! Spectrum of primary with accepted daughters
TH2F * fhArmPrimPi0[4]
! Armenteros plots for primary pi0 in 6 energy bins
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH2F * fhPrimPi0AccPtEventPlane
! primary pi0 with accepted daughters reconstructed event plane vs pT
virtual AliEventplane * GetEventPlane() const
Int_t GetNumberOfSuperModulesUsed() const
virtual Bool_t IsHighMultiplicityAnalysisOn() const
TH2F * fhPrimEtaOpeningAngle
! Opening angle of pair versus pair energy, eta primaries
TH2F ** fhMiPtNCellAsymCuts
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F * fhPrimPi0OpeningAngleAsym
! Opening angle of pair versus pair E asymmetry, pi0 primaries
TH2F * fhPrimPi0AccY
! Rapidity distribution of primary with accepted daughters vs pT
TH2F * fhPrimPi0AccPhi
! Azimutal distribution of primary with accepted daughters vs pT
Float_t fAngleCut
Select pairs with opening angle larger than a threshold.
virtual Double_t GetEventWeight() const
TH2F * fhPrimPi0AccYeta
! PseudoRapidity distribution of primary with accepted daughters vs pT
virtual Int_t GetNCentrBin() const
Number of bins in reaction plain.
Int_t GetHistoTrackMultiplicityBins() const
TH2F ** fhMi1
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhCosThStarPrimEta
! cos(theta*) plots vs E for primary eta, same as asymmetry ...
TObjString * GetAnalysisCuts()
Save parameters used for analysis.
void MakeAnalysisFillHistograms()
Float_t GetHistoEtaMin() const
Bool_t fFillSMCombinations
Fill histograms with different cluster pairs in SM combinations.
TH2F * fhReMCFromNotConversion
! Invariant mass of 2 clusters not originated in conversions
TH2F * fhPrimPi0YetaYcut
! PseudoRapidity distribution of primary particles vs pT, Y<1
virtual Int_t GetNMaxEvMix() const
Number of bins in track multiplicity.
TH2F * fhPrimPi0Yeta
! PseudoRapidity distribution of primary particles vs pT
TH3F ** fhRePtMult
[fNPIDBits]
virtual Int_t GetModuleNumber(AliAODPWG4Particle *part) const
TH2F * fhMCNotResonancePi0PtOrigin
! Mass of reconstructed pi0 pairs in calorimeter vs mother origin ID, pi0 status 1.
TH2F * fhRePtAsym
! REAL two-photon pt vs asymmetry
Float_t GetHistoEtaMax() const
TH2F * fhEPairDiffTime
! E pair vs Pair of clusters time difference vs E
TH2F * fhMCEtaPtOrigin
! Mass of reconstructed eta pairs in calorimeter vs mother origin ID.
TH2F * fhMCPi0PtStatus
! Mass of reconstructed pi0 pairs in calorimeter vs mother status.
Int_t GetHistoPtBins() const
TH2F * fhMiConv2
! MIXED two-photon invariant mass distribution both pair photons recombined from 2 clusters with smal...
virtual ~AliAnaPi0()
Destructor.
TH2F * fhPrimEtaProdVertex
! Spectrum of primary eta vs production vertex
Bool_t fSameSM
Select only pairs in same SM;.
Bool_t fCheckAccInSector
Check that the decay pi0 falls in the same SM or sector.
TH1I * fhEventBin
! Number of real pairs in a particular bin (cen,vz,rp)
TH1F * fhPrimPi0Pt
! Spectrum of Primary
TH2F ** fhRe2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH1F * fhPrimEtaAccE
! Spectrum of primary with accepted daughters
TH2F ** fhMCEtaMassPtRec
[fNPtCuts*fNAsymCuts*fNCellNCuts]
Bool_t fUseAngleCut
Select pairs depending on their opening angle.
TH2F * fhRePtAsymEta
! REAL two-photon pt vs asymmetry, close to eta mass
virtual Int_t GetNRPBin() const
Number of bins in vertex.
TH2F * fhEventPlaneResolution
! Histogram with Event plane resolution vs centrality
TH2F * fhMixedOpeningAngle
! Opening angle of pair versus pair energy
void FillMCVersusRecDataHistograms(Int_t index1, Int_t index2, Float_t pt1, Float_t pt2, Int_t ncells1, Int_t ncells2, Double_t mass, Double_t pt, Double_t asym, Double_t deta, Double_t dphi)
TH2F ** fhMCPi0PtTruePtRec
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TH2F * fhPrimEtaYeta
! PseudoRapidity distribution of primary particles vs pT
virtual AliMCAnalysisUtils * GetMCAnalysisUtils()
Float_t GetHistoAsymmetryMin() const
virtual Float_t GetMinPt() const
TH2F * fhCosThStarPrimPi0
! cos(theta*) plots vs E for primary pi0, same as asymmetry ...
virtual void Print(const Option_t *) const
Print some relevant parameters set for the analysis.
TH2F ** fhRePIDBits
[fNPtCuts*fNAsymCuts*fNCellNCutsfNModules]
TH2F * fhMCPi0ProdVertex
! Spectrum of selected pi0 vs production vertex
TH2F * fhPrimPi0PtEventPlane
! primary pi0 reconstructed event plane vs pT
TH2F ** fhRePtNCellAsymCutsSM[12]
[fNPtCuts*fNAsymCuts*fNCellNCuts]
TList ** fEventsList
Containers for photons in stored events.
TH2F * fhMCEtaProdVertex
! Spectrum of selected eta vs production vertex
TH2F * fhPrimEtaOpeningAngleAsym
! Opening angle of pair versus pair E asymmetry, eta primaries
Float_t GetHistoPhiMax() const
virtual AliCaloTrackReader * GetReader() const
virtual Int_t GetEventMixBin() const
TH2F ** fhMiInvPt3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
AliAnaPi0()
Default Constructor. Initialized parameters with default values.
Int_t GetHistoEtaBins() const
TH2F ** fhMi3
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
TH2F * fhArmPrimEta[4]
! Armenteros plots for primary eta in 6 energy bins
Bool_t fFillSSCombinations
Do invariant mass for different combination of shower shape clusters.
virtual Int_t GetNZvertBin() const
TH2F * fhPrimEtaPtOrigin
! Spectrum of generated eta vs mother
TH2F ** fhMiInvPt2
[GetNCentrBin()*fNPIDBits*fNAsymCuts]
Bool_t CheckTagBit(Int_t tag, UInt_t test) const
TH2F * fhMCOrgDeltaPhi[13]
! Delta Phi vs pt of real pairs, check common origin of pair
TH2F ** fhMiMod
[fNModules]
virtual AliMixedEvent * GetMixedEvent() const
TH2F * fhReConv2
! REAL two-photon invariant mass distribution both pair photons recombined from 2 clusters with small...
TH2F * fhPrimEtaPhi
! Azimutal distribution of primary particles vs pT
TH2F ** fhMCPi0MassPtTrue
[fNPtCuts*fNAsymCuts*fNCellNCuts]