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(0.),
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++)
190 const Int_t buffersize = 255;
191 char onePar[buffersize] ;
192 snprintf(onePar,buffersize,
"--- AliAnaPi0 ---:") ;
194 snprintf(onePar,buffersize,
"Number of bins in Centrality: %d;",
GetNCentrBin()) ;
196 snprintf(onePar,buffersize,
"Number of bins in Z vert. pos: %d;",
GetNZvertBin()) ;
198 snprintf(onePar,buffersize,
"Number of bins in Reac. Plain: %d;",
GetNRPBin()) ;
200 snprintf(onePar,buffersize,
"Depth of event buffer: %d;",
GetNMaxEvMix()) ;
204 snprintf(onePar,buffersize,
" Asymmetry cuts: n = %d, asymmetry < ",
fNAsymCuts) ;
205 for(Int_t i = 0; i <
fNAsymCuts; i++) snprintf(onePar,buffersize,
"%s %2.2f;",onePar,
fAsymCuts[i]);
207 snprintf(onePar,buffersize,
" PID selection bits: n = %d, PID bit =",
fNPIDBits) ;
208 for(Int_t i = 0; i <
fNPIDBits; i++) snprintf(onePar,buffersize,
"%s %d;",onePar,
fPIDBits[i]);
210 snprintf(onePar,buffersize,
"Cuts:") ;
216 snprintf(onePar,buffersize,
"Number of modules: %d:",
fNModules) ;
220 snprintf(onePar, buffersize,
" pT cuts: n = %d, pt > ",
fNPtCuts) ;
221 for(Int_t i = 0; i <
fNPtCuts; i++) snprintf(onePar,buffersize,
"%s %2.2f;",onePar,
fPtCuts[i]);
223 snprintf(onePar,buffersize,
" N cell in cluster cuts: n = %d, nCell > ",
fNCellNCuts) ;
228 return new TObjString(parList) ;
237 TList * outputContainer =
new TList() ;
238 outputContainer->SetName(GetName());
241 const Int_t buffersize = 255;
242 char key[buffersize] ;
243 char title[buffersize] ;
274 fhPrimPi0E =
new TH1F(
"hPrimPi0E",
"Primary #pi^{0} E, |#it{Y}|<1",nptbins,ptmin,ptmax) ;
275 fhPrimPi0AccE =
new TH1F(
"hPrimPi0AccE",
"Primary #pi^{0} #it{E} with both photons in acceptance",nptbins,ptmin,ptmax) ;
281 fhPrimPi0Pt =
new TH1F(
"hPrimPi0Pt",
"Primary #pi^{0} #it{p}_{T} , |#it{Y}|<1",nptbins,ptmin,ptmax) ;
282 fhPrimPi0AccPt =
new TH1F(
"hPrimPi0AccPt",
"Primary #pi^{0} #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
283 fhPrimPi0Pt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
288 Int_t netabinsopen = TMath::Nint(netabins*4/(etamax-etamin));
289 fhPrimPi0Y =
new TH2F(
"hPrimPi0Rapidity",
"Rapidity of primary #pi^{0}",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
291 fhPrimPi0Y ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
294 fhPrimPi0Yeta =
new TH2F(
"hPrimPi0PseudoRapidity",
"PseudoRapidity of primary #pi^{0}",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
299 fhPrimPi0YetaYcut =
new TH2F(
"hPrimPi0PseudoRapidityYcut",
"PseudoRapidity of primary #pi^{0}, |#it{Y}|<1",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
304 fhPrimPi0AccY =
new TH2F(
"hPrimPi0AccRapidity",
"Rapidity of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
309 fhPrimPi0AccYeta =
new TH2F(
"hPrimPi0AccPseudoRapidity",
"PseudoRapidity of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,netabins,etamin,etamax) ;
314 Int_t nphibinsopen = TMath::Nint(nphibins*TMath::TwoPi()/(phimax-phimin));
315 fhPrimPi0Phi =
new TH2F(
"hPrimPi0Phi",
"#phi of primary #pi^{0}, |#it{Y}|<1",nptbins,ptmin,ptmax,nphibinsopen,0,360) ;
320 fhPrimPi0AccPhi =
new TH2F(
"hPrimPi0AccPhi",
"#phi of primary #pi^{0} with accepted daughters",nptbins,ptmin,ptmax,
321 nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
328 fhPrimEtaE =
new TH1F(
"hPrimEtaE",
"Primary eta E",nptbins,ptmin,ptmax) ;
329 fhPrimEtaAccE =
new TH1F(
"hPrimEtaAccE",
"Primary #eta #it{E} with both photons in acceptance",nptbins,ptmin,ptmax) ;
335 fhPrimEtaPt =
new TH1F(
"hPrimEtaPt",
"Primary #eta #it{p}_{T}",nptbins,ptmin,ptmax) ;
336 fhPrimEtaAccPt =
new TH1F(
"hPrimEtaAccPt",
"Primary eta #it{p}_{T} with both photons in acceptance",nptbins,ptmin,ptmax) ;
337 fhPrimEtaPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
342 fhPrimEtaY =
new TH2F(
"hPrimEtaRapidity",
"Rapidity of primary #eta",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
344 fhPrimEtaY->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
347 fhPrimEtaYeta =
new TH2F(
"hPrimEtaPseudoRapidityEta",
"PseudoRapidity of primary #eta",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
352 fhPrimEtaYetaYcut =
new TH2F(
"hPrimEtaPseudoRapidityEtaYcut",
"PseudoRapidity of primary #eta, |#it{Y}|<1",nptbins,ptmin,ptmax,netabinsopen,-2, 2) ;
357 fhPrimEtaAccY =
new TH2F(
"hPrimEtaAccRapidity",
"Rapidity of primary #eta",nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
362 fhPrimEtaAccYeta =
new TH2F(
"hPrimEtaAccPseudoRapidity",
"PseudoRapidity of primary #eta",nptbins,ptmin,ptmax, netabins,etamin,etamax) ;
367 fhPrimEtaPhi =
new TH2F(
"hPrimEtaPhi",
"Azimuthal of primary #eta",nptbins,ptmin,ptmax, nphibinsopen,0,360) ;
372 fhPrimEtaAccPhi =
new TH2F(
"hPrimEtaAccPhi",
"Azimuthal of primary #eta with accepted daughters",nptbins,ptmin,ptmax, nphibins,phimin*TMath::RadToDeg(),phimax*TMath::RadToDeg()) ;
380 fhPrimPi0PtCentrality =
new TH2F(
"hPrimPi0PtCentrality",
"Primary #pi^{0} #it{p}_{T} vs reco centrality, |#it{Y}|<1",
381 nptbins,ptmin,ptmax, 100, 0, 100) ;
382 fhPrimPi0AccPtCentrality =
new TH2F(
"hPrimPi0AccPtCentrality",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco centrality",
383 nptbins,ptmin,ptmax, 100, 0, 100) ;
391 fhPrimEtaPtCentrality =
new TH2F(
"hPrimEtaPtCentrality",
"Primary #eta #it{p}_{T} vs reco centrality, |#it{Y}|<1",nptbins,ptmin,ptmax, 100, 0, 100) ;
392 fhPrimEtaAccPtCentrality =
new TH2F(
"hPrimEtaAccPtCentrality",
"Primary #eta with both photons in acceptance #it{p}_{T} vs reco centrality",nptbins,ptmin,ptmax, 100, 0, 100) ;
400 fhPrimPi0PtEventPlane =
new TH2F(
"hPrimPi0PtEventPlane",
"Primary #pi^{0} #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",
401 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
402 fhPrimPi0AccPtEventPlane =
new TH2F(
"hPrimPi0AccPtEventPlane",
"Primary #pi^{0} with both photons in acceptance #it{p}_{T} vs reco event plane angle",
403 nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
411 fhPrimEtaPtEventPlane =
new TH2F(
"hPrimEtaPtEventPlane",
"Primary #eta #it{p}_{T} vs reco event plane angle, |#it{Y}|<1",nptbins,ptmin,ptmax, 100, 0, TMath::Pi()) ;
412 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()) ;
424 (
"hPrimPi0OpeningAngle",
"Angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,0.5);
430 (
"hPrimPi0OpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}",100,0,1,100,0,0.5);
436 (
"hPrimPi0CosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,-1,1);
442 (
"hPrimEtaOpeningAngle",
"Angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,100,0,0.5);
448 (
"hPrimEtaOpeningAngleAsym",
"Angle between all primary #gamma pair vs #it{Asymmetry}, #it{p}_{T}>5 GeV/#it{c}",100,0,1,100,0,0.5);
455 (
"hPrimEtaCosOpeningAngle",
"Cosinus of angle between all primary #gamma pair vs E_{#eta}",nptbins,ptmin,ptmax,100,-1,1);
465 fhPrimPi0PtOrigin =
new TH2F(
"hPrimPi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
480 fhPrimNotResonancePi0PtOrigin =
new TH2F(
"hPrimNotResonancePi0PtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
495 fhPrimPi0PtStatus =
new TH2F(
"hPrimPi0PtStatus",
"Primary #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
501 fhPrimEtaPtOrigin =
new TH2F(
"hPrimEtaPtOrigin",
"Primary #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
513 fhPrimPi0ProdVertex =
new TH2F(
"hPrimPi0ProdVertex",
"generated #pi^{0} #it{p}_{T} vs production vertex",
514 200,0.,20.,5000,0,500) ;
519 fhPrimEtaProdVertex =
new TH2F(
"hPrimEtaProdVertex",
"generated #eta #it{p}_{T} vs production vertex",
520 200,0.,20.,5000,0,500) ;
528 TString ebin[] = {
"8 < E < 12 GeV",
"12 < E < 16 GeV",
"16 < E < 20 GeV",
"E > 20 GeV" };
529 Int_t narmbins = 400;
531 Float_t armmax = 0.4;
533 for(Int_t i = 0; i < 4; i++)
535 fhArmPrimPi0[i] =
new TH2F(Form(
"hArmenterosPrimPi0EBin%d",i),
536 Form(
"Armenteros of primary #pi^{0}, %s",ebin[i].
Data()),
537 200, -1, 1, narmbins,armmin,armmax);
542 fhArmPrimEta[i] =
new TH2F(Form(
"hArmenterosPrimEtaEBin%d",i),
543 Form(
"Armenteros of primary #eta, %s",ebin[i].
Data()),
544 200, -1, 1, narmbins,armmin,armmax);
552 (
"hCosThStarPrimPi0",
"cos(#theta *) for primary #pi^{0}",nptbins,ptmin,ptmax,200,-1,1);
558 (
"hCosThStarPrimEta",
"cos(#theta *) for primary #eta",nptbins,ptmin,ptmax,200,-1,1);
629 fhReConv =
new TH2F(
"hReConv",
"Real Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
630 fhReConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
631 fhReConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
634 fhReConv2 =
new TH2F(
"hReConv2",
"Real Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
635 fhReConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
636 fhReConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
641 fhMiConv =
new TH2F(
"hMiConv",
"Mixed Pair with one recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
642 fhMiConv->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
643 fhMiConv->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
646 fhMiConv2 =
new TH2F(
"hMiConv2",
"Mixed Pair with 2 recombined conversion ",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
647 fhMiConv2->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
648 fhMiConv2->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
655 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
659 Int_t index = ((ic*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
662 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
663 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
665 fhRe1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
666 fhRe1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
667 fhRe1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
669 outputContainer->Add(
fhRe1[index]) ;
674 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
675 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
677 fhRe2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
678 fhRe2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
679 fhRe2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
680 outputContainer->Add(
fhRe2[index]) ;
683 snprintf(key, buffersize,
"hRe_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
684 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
686 fhRe3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
687 fhRe3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
688 fhRe3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
689 outputContainer->Add(
fhRe3[index]) ;
696 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
697 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
699 fhReInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
700 fhReInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
701 fhReInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
706 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
707 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
709 fhReInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
710 fhReInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
711 fhReInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
715 snprintf(key, buffersize,
"hReInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
716 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
718 fhReInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
719 fhReInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
720 fhReInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
728 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
729 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
731 fhMi1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
732 fhMi1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
733 fhMi1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
734 outputContainer->Add(
fhMi1[index]) ;
737 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
738 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
740 fhMi2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
741 fhMi2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
742 fhMi2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
743 outputContainer->Add(
fhMi2[index]) ;
746 snprintf(key, buffersize,
"hMi_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
747 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 3",
749 fhMi3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
750 fhMi3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
751 fhMi3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
752 outputContainer->Add(
fhMi3[index]) ;
759 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist1",ic,ipid,iasym) ;
760 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 1",
762 fhMiInvPt1[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
763 fhMiInvPt1[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
764 fhMiInvPt1[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
768 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist2",ic,ipid,iasym) ;
769 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f, dist bad 2",
771 fhMiInvPt2[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
772 fhMiInvPt2[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
773 fhMiInvPt2[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
777 snprintf(key, buffersize,
"hMiInvPt_cen%d_pidbit%d_asy%d_dist3",ic,ipid,iasym) ;
778 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for centrality=%d, PID bit=%d and asymmetry %1.2f,dist bad 3",
780 fhMiInvPt3[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
781 fhMiInvPt3[index]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
782 fhMiInvPt3[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
791 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs #it{p}_{T}",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
798 fhRePtAsym =
new TH2F(
"hRePtAsym",
"#it{Asymmetry} vs #it{p}_{T} , for pairs",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
799 fhRePtAsym->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
803 fhRePtAsymPi0 =
new TH2F(
"hRePtAsymPi0",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #pi^{0} mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
808 fhRePtAsymEta =
new TH2F(
"hRePtAsymEta",
"#it{Asymmetry} vs #it{p}_{T} , for pairs close to #eta mass",nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
817 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++){
818 snprintf(key, buffersize,
"hRe_pidbit%d",ipid) ;
819 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for PIDBit=%d",
fPIDBits[ipid]) ;
820 fhRePIDBits[ipid] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
821 fhRePIDBits[ipid]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
822 fhRePIDBits[ipid]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
833 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
839 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
840 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]) ;
841 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
843 fhRePtNCellAsymCuts[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
848 snprintf(key, buffersize,
"hMi_pt%d_cell%d_asym%d",ipt,icell,iasym) ;
849 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]) ;
850 fhMiPtNCellAsymCuts[index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
857 for(Int_t iSM = 0; iSM <
fNModules; iSM++)
859 snprintf(key, buffersize,
"hRe_pt%d_cell%d_asym%d_SM%d",ipt,icell,iasym,iSM) ;
860 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for pt >%2.2f, ncell>%d and asym >%1.2f, SM %d ",
862 fhRePtNCellAsymCutsSM[iSM][index] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
875 for(Int_t iasym = 0; iasym<
fNAsymCuts; iasym++)
877 fhRePtMult[iasym] =
new TH3F(Form(
"hRePtMult_asym%d",iasym),Form(
"(#it{p}_{T},C,M)_{#gamma#gamma}, A<%1.2f",
fAsymCuts[iasym]),
878 nptbins,ptmin,ptmax,ntrmbins,ntrmmin,ntrmmax,nmassbins,massmin,massmax);
879 fhRePtMult[iasym]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
880 fhRePtMult[iasym]->SetYTitle(
"Track multiplicity");
881 fhRePtMult[iasym]->SetZTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
889 fhReSS[0] =
new TH2F(
"hRe_SS_Tight",
" 0.01 < #lambda_{0}^{2} < 0.4",
890 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
891 fhReSS[0]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
892 fhReSS[0]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
893 outputContainer->Add(
fhReSS[0]) ;
896 fhReSS[1] =
new TH2F(
"hRe_SS_Loose",
" #lambda_{0}^{2} > 0.4",
897 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
898 fhReSS[1]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
899 fhReSS[1]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
900 outputContainer->Add(
fhReSS[1]) ;
903 fhReSS[2] =
new TH2F(
"hRe_SS_Both",
" cluster_{1} #lambda_{0}^{2} > 0.4; cluster_{2} 0.01 < #lambda_{0}^{2} < 0.4",
904 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
905 fhReSS[2]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
906 fhReSS[2]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
907 outputContainer->Add(
fhReSS[2]) ;
912 fhEventBin=
new TH1I(
"hEventBin",
"Number of real pairs per bin(cen,vz,rp)",
919 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of mixed pairs per bin(cen,vz,rp)",
945 (
"hRealOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,300,0,TMath::Pi());
951 (
"hRealCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}",nptbins,ptmin,ptmax,100,0,1);
959 (
"hMixedOpeningAngle",
"Angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,300,0,TMath::Pi());
965 (
"hMixedCosOpeningAngle",
"Cosinus of angle between all #gamma pair vs E_{#pi^{0}}, Mixed pairs",nptbins,ptmin,ptmax,100,0,1);
975 fhReMCFromConversion =
new TH2F(
"hReMCFromConversion",
"Invariant mass of 2 clusters originated in conversions",
976 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
981 fhReMCFromNotConversion =
new TH2F(
"hReMCNotFromConversion",
"Invariant mass of 2 clusters not originated in conversions",
982 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
987 fhReMCFromMixConversion =
new TH2F(
"hReMCFromMixConversion",
"Invariant mass of 2 clusters one from conversion and the other not",
988 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
996 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1011 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1026 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1033 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1044 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",
1045 200,0.,20.,5000,0,500) ;
1050 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",
1051 200,0.,20.,5000,0,500) ;
1056 for(Int_t i = 0; i<13; i++)
1058 fhMCOrgMass[i] =
new TH2F(Form(
"hMCOrgMass_%d",i),Form(
"#it{M} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1059 fhMCOrgMass[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1060 fhMCOrgMass[i]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1063 fhMCOrgAsym[i]=
new TH2F(Form(
"hMCOrgAsym_%d",i),Form(
"#it{Asymmetry} vs #it{p}_{T}, origin %d",i),nptbins,ptmin,ptmax,nasymbins,asymmin,asymmax) ;
1064 fhMCOrgAsym[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1068 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) ;
1073 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) ;
1088 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1092 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1094 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1096 fhMCPi0MassPtRec[index] =
new TH2F(Form(
"hMCPi0MassPtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1097 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]),
1098 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1099 fhMCPi0MassPtRec[index]->SetXTitle(
"#it{p}_{T, reconstructed} (GeV/#it{c})");
1100 fhMCPi0MassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1103 fhMCPi0MassPtTrue[index] =
new TH2F(Form(
"hMCPi0MassPtTrue_pt%d_cell%d_asym%d",ipt,icell,iasym),
1104 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]),
1105 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1110 fhMCPi0PtTruePtRec[index] =
new TH2F(Form(
"hMCPi0PtTruePtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1111 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]),
1112 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1117 fhMCEtaMassPtRec[index] =
new TH2F(Form(
"hMCEtaMassPtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1118 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]),
1119 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1121 fhMCEtaMassPtRec[index]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1124 fhMCEtaMassPtTrue[index] =
new TH2F(Form(
"hMCEtaMassPtTrue_pt%d_cell%d_asym%d",ipt,icell,iasym),
1125 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]),
1126 nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1131 fhMCEtaPtTruePtRec[index] =
new TH2F(Form(
"hMCEtaPtTruePtRec_pt%d_cell%d_asym%d",ipt,icell,iasym),
1132 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]),
1133 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax) ;
1148 fhMCPi0MassPtTrue[0] =
new TH2F(
"hMCPi0MassPtTrue",
"Reconstructed Mass vs generated p_T of true #pi^{0} cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1153 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) ;
1158 fhMCEtaMassPtTrue[0] =
new TH2F(
"hMCEtaMassPtTrue",
"Reconstructed Mass vs generated p_T of true #eta cluster pairs",nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1163 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) ;
1173 TString pairnamePHOS[] = {
"(0-1)",
"(0-2)",
"(1-2)",
"(0-3)",
"(0-4)",
"(1-3)",
"(1-4)",
"(2-3)",
"(2-4)",
"(3-4)"};
1174 for(Int_t imod=0; imod<
fNModules; imod++)
1177 snprintf(key, buffersize,
"hReMod_%d",imod) ;
1178 snprintf(title, buffersize,
"Real #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1179 fhReMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1180 fhReMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1181 fhReMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1182 outputContainer->Add(
fhReMod[imod]) ;
1185 snprintf(key, buffersize,
"hReDiffPHOSMod_%d",imod) ;
1186 snprintf(title, buffersize,
"Real pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1187 fhReDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1189 fhReDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1194 if(imod<fNModules/2)
1196 snprintf(key, buffersize,
"hReSameSectorEMCAL_%d",imod) ;
1197 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1203 if(imod<fNModules-2)
1205 snprintf(key, buffersize,
"hReSameSideEMCAL_%d",imod) ;
1206 snprintf(title, buffersize,
"Real pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1207 fhReSameSideEMCALMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1216 snprintf(key, buffersize,
"hMiMod_%d",imod) ;
1217 snprintf(title, buffersize,
"Mixed #it{M}_{#gamma#gamma} distr. for Module %d",imod) ;
1218 fhMiMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1219 fhMiMod[imod]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1220 fhMiMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1221 outputContainer->Add(
fhMiMod[imod]) ;
1225 snprintf(key, buffersize,
"hMiDiffPHOSMod_%d",imod) ;
1226 snprintf(title, buffersize,
"Mixed pairs PHOS, clusters in different Modules: %s",(pairnamePHOS[imod]).
Data()) ;
1227 fhMiDiffPHOSMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1229 fhMiDiffPHOSMod[imod]->SetYTitle(
"#it{M}_{#gamma,#gamma} (GeV/#it{c}^{2})");
1234 if(imod<fNModules/2)
1236 snprintf(key, buffersize,
"hMiSameSectorEMCALMod_%d",imod) ;
1237 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same sector, SM(%d,%d)",imod*2,imod*2+1) ;
1243 if(imod<fNModules-2){
1245 snprintf(key, buffersize,
"hMiSameSideEMCALMod_%d",imod) ;
1246 snprintf(title, buffersize,
"Mixed pairs EMCAL, clusters in same side SM(%d,%d)",imod, imod+2) ;
1247 fhMiSameSideEMCALMod[imod] =
new TH2F(key,title,nptbins,ptmin,ptmax,nmassbins,massmin,massmax) ;
1263 return outputContainer;
1271 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
1274 printf(
"Number of bins in Centrality: %d \n",
GetNCentrBin()) ;
1275 printf(
"Number of bins in Z vert. pos: %d \n",
GetNZvertBin()) ;
1276 printf(
"Number of bins in Reac. Plain: %d \n",
GetNRPBin()) ;
1277 printf(
"Depth of event buffer: %d \n",
GetNMaxEvMix()) ;
1278 printf(
"Pair in same Module: %d \n",
fSameSM) ;
1279 printf(
"Cuts: \n") ;
1281 printf(
"Number of modules: %d \n",
fNModules) ;
1283 printf(
"Asymmetry cuts: n = %d, \n",
fNAsymCuts) ;
1284 printf(
"\tasymmetry < ");
1288 printf(
"PID selection bits: n = %d, \n",
fNPIDBits) ;
1289 printf(
"\tPID bit = ");
1295 printf(
"pT cuts: n = %d, \n",
fNPtCuts) ;
1300 printf(
"N cell in cluster cuts: n = %d, \n",
fNCellNCuts) ;
1301 printf(
"\tnCell > ");
1306 printf(
"------------------------------------------------------\n") ;
1314 Double_t mesonY = -100 ;
1315 Double_t mesonE = -1 ;
1316 Double_t mesonPt = -1 ;
1317 Double_t mesonPhi = 100 ;
1318 Double_t mesonYeta= -1 ;
1329 TParticle * primStack = 0;
1330 AliAODMCParticle * primAOD = 0;
1333 AliStack * stack = 0;
1338 nprim = stack->GetNtrack();
1342 TClonesArray * mcparticles = 0;
1346 if( !mcparticles )
return;
1347 nprim = mcparticles->GetEntriesFast();
1350 for(Int_t i=0 ; i < nprim; i++)
1352 if(
GetReader()->AcceptOnlyHIJINGLabels() && !
GetReader()->IsHIJINGLabel(i)) continue ;
1356 primStack = stack->Particle(i) ;
1359 AliWarning(
"ESD primaries pointer not available!!");
1364 if( primStack->Energy() < 0.4 )
continue;
1366 pdg = primStack->GetPdgCode();
1367 nDaught = primStack->GetNDaughters();
1368 iphot1 = primStack->GetDaughter(0) ;
1369 iphot2 = primStack->GetDaughter(1) ;
1370 if(primStack->Energy() == TMath::Abs(primStack->Pz())) continue ;
1378 mesonY = 0.5*TMath::Log((primStack->Energy()+primStack->Pz())/(primStack->Energy()-primStack->Pz())) ;
1382 primAOD = (AliAODMCParticle *) mcparticles->At(i);
1385 AliWarning(
"AOD primaries pointer not available!!");
1390 if( primAOD->E() < 0.4 )
continue;
1392 pdg = primAOD->GetPdgCode();
1393 nDaught = primAOD->GetNDaughters();
1394 iphot1 = primAOD->GetFirstDaughter() ;
1395 iphot2 = primAOD->GetLastDaughter() ;
1397 if(primAOD->E() == TMath::Abs(primAOD->Pz())) continue ;
1400 fPi0Mom.SetPxPyPzE(primAOD->Px(),primAOD->Py(),primAOD->Pz(),primAOD->E());
1402 mesonY = 0.5*TMath::Log((primAOD->E()+primAOD->Pz())/(primAOD->E()-primAOD->Pz())) ;
1406 if( pdg != 111 && pdg != 221) continue ;
1412 if( mesonPhi < 0 ) mesonPhi+=TMath::TwoPi();
1413 mesonPhi *= TMath::RadToDeg();
1417 if(TMath::Abs(mesonY) < 1.0)
1437 if(TMath::Abs(mesonY) < 1.0)
1459 Int_t momindex = -1;
1461 Int_t momstatus = -1;
1464 if(
GetReader()->ReadStack()) momindex = primStack->GetFirstMother();
1465 if(
GetReader()->ReadAODMCParticles()) momindex = primAOD ->GetMother();
1467 if(momindex >= 0 && momindex < nprim)
1471 status = primStack->GetStatusCode();
1472 TParticle* mother = stack->Particle(momindex);
1473 mompdg = TMath::Abs(mother->GetPdgCode());
1474 momstatus = mother->GetStatusCode();
1480 status = primAOD->GetStatus();
1481 AliAODMCParticle* mother = (AliAODMCParticle*) mcparticles->At(momindex);
1482 mompdg = TMath::Abs(mother->GetPdgCode());
1483 momstatus = mother->GetStatus();
1484 momR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1495 else if(mompdg > 2100 && mompdg < 2210)
1501 else if(mompdg >= 310 && mompdg <= 323)
1504 else if(momstatus == 11 || momstatus == 12 )
1515 else if(mompdg > 2100 && mompdg < 2210)
1521 else if(mompdg >= 310 && mompdg <= 323)
1524 else if(momstatus == 11 || momstatus == 12 )
1534 else if(mompdg > 2100 && mompdg < 2210)
1537 else if(momstatus == 11 || momstatus == 12 )
1548 if(nDaught != 2 )
continue;
1550 if(iphot1 < 0 || iphot1 >= nprim || iphot2 < 0 || iphot2 >= nprim) continue ;
1554 Bool_t inacceptance1 = kTRUE;
1555 Bool_t inacceptance2 = kTRUE;
1559 TParticle * phot1 = stack->Particle(iphot1) ;
1560 TParticle * phot2 = stack->Particle(iphot2) ;
1562 if(!phot1 || !phot2) continue ;
1564 pdg1 = phot1->GetPdgCode();
1565 pdg2 = phot2->GetPdgCode();
1580 AliAODMCParticle * phot1 = (AliAODMCParticle *) mcparticles->At(iphot1) ;
1581 AliAODMCParticle * phot2 = (AliAODMCParticle *) mcparticles->At(iphot2) ;
1583 if(!phot1 || !phot2) continue ;
1585 pdg1 = phot1->GetPdgCode();
1586 pdg2 = phot2->GetPdgCode();
1588 fPhotonMom1.SetPxPyPzE(phot1->Px(),phot1->Py(),phot1->Pz(),phot1->E());
1589 fPhotonMom2.SetPxPyPzE(phot2->Px(),phot2->Py(),phot2->Pz(),phot2->E());
1599 if( pdg1 != 22 || pdg2 !=22) continue ;
1618 if(photonPhi1 < 0) photonPhi1+=TMath::TwoPi();
1619 if(photonPhi2 < 0) photonPhi2+=TMath::TwoPi();
1628 Bool_t sameSector = kFALSE;
1629 for(Int_t isector = 0; isector <
fNModules/2; isector++)
1632 if((sm1==j && sm2==j+1) || (sm1==j+1 && sm2==j)) sameSector = kTRUE;
1635 if(sm1!=sm2 && !sameSector)
1637 inacceptance1 = kFALSE;
1638 inacceptance2 = kFALSE;
1645 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",
1647 mesonPt,mesonYeta,mesonPhi,
1650 inacceptance1, inacceptance2));
1652 if(inacceptance1 && inacceptance2)
1657 AliDebug(2,Form(
"\t ACCEPTED pdg %d: pt %2.2f, phi %2.2f, eta %2.2f",pdg,mesonPt,mesonPhi,mesonYeta));
1712 Float_t momentumDaughter1AlongMother = 0.;
1713 Float_t momentumDaughter2AlongMother = 0.;
1715 if (momentumSquaredMother > 0.)
1722 Float_t ptArmSquared = momentumSquaredDaughter1 - momentumDaughter1AlongMother*momentumDaughter1AlongMother;
1725 if (ptArmSquared > 0.)
1726 pTArm = sqrt(ptArmSquared);
1728 Float_t alphaArm = 0.;
1729 if(momentumDaughter1AlongMother + momentumDaughter2AlongMother > 0)
1730 alphaArm = (momentumDaughter1AlongMother -momentumDaughter2AlongMother) / (momentumDaughter1AlongMother + momentumDaughter2AlongMother);
1736 Float_t en =
fPi0Mom.Energy();
1738 if(en > 8 && en <= 12) ebin = 0;
1739 if(en > 12 && en <= 16) ebin = 1;
1740 if(en > 16 && en <= 20) ebin = 2;
1741 if(en > 20) ebin = 3;
1742 if(ebin < 0 || ebin > 3) return ;
1772 Float_t pt1, Float_t pt2,
1773 Int_t ncell1, Int_t ncell2,
1774 Double_t
mass, Double_t pt, Double_t asym,
1775 Double_t deta, Double_t dphi)
1778 Int_t ancStatus = 0;
1782 Int_t momindex = -1;
1784 Int_t momstatus = -1;
1791 AliDebug(1,Form(
"Common ancestor label %d, pdg %d, name %s, status %d",
1792 ancLabel,ancPDG,TDatabasePDG::Instance()->GetParticle(ancPDG)->GetName(),ancStatus));
1798 else if(TMath::Abs(ancPDG)==11)
1802 else if(ancPDG==111)
1807 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1811 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1813 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1820 if(mass < 0.17 && mass > 0.1)
1831 if(mass < 0.17 && mass > 0.1)
1838 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
1839 status = ancestor->GetStatusCode();
1840 momindex = ancestor->GetFirstMother();
1841 if(momindex < 0)
return;
1842 TParticle* mother =
GetMCStack()->Particle(momindex);
1843 mompdg = TMath::Abs(mother->GetPdgCode());
1844 momstatus = mother->GetStatusCode();
1845 prodR = mother->R();
1851 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
1852 status = ancestor->GetStatus();
1853 momindex = ancestor->GetMother();
1854 if(momindex < 0)
return;
1855 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
1856 mompdg = TMath::Abs(mother->GetPdgCode());
1857 momstatus = mother->GetStatus();
1858 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1870 else if(mompdg > 2100 && mompdg < 2210)
1876 else if(mompdg >= 310 && mompdg <= 323)
1879 else if(momstatus == 11 || momstatus == 12 )
1887 else if(mompdg > 2100 && mompdg < 2210)
1893 else if(mompdg >= 310 && mompdg <= 323)
1896 else if(momstatus == 11 || momstatus == 12 )
1903 else if(ancPDG==221)
1908 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
1912 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
1914 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
1921 if(mass < 0.65 && mass > 0.45)
1935 TParticle* ancestor =
GetMCStack()->Particle(ancLabel);
1936 momindex = ancestor->GetFirstMother();
1937 if(momindex < 0)
return;
1938 TParticle* mother =
GetMCStack()->Particle(momindex);
1939 mompdg = TMath::Abs(mother->GetPdgCode());
1940 momstatus = mother->GetStatusCode();
1941 prodR = mother->R();
1946 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(ancLabel);
1947 momindex = ancestor->GetMother();
1948 if(momindex < 0)
return;
1949 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
1950 mompdg = TMath::Abs(mother->GetPdgCode());
1951 momstatus = mother->GetStatus();
1952 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
1959 else if(mompdg > 2100 && mompdg < 2210)
1962 else if(momstatus == 11 || momstatus == 12 )
1969 else if(ancPDG==-2212)
1973 else if(ancPDG==-2112)
1977 else if(TMath::Abs(ancPDG)==13)
1981 else if (TMath::Abs(ancPDG) > 100 && ancLabel > 7)
1994 if(ancStatus==11 || ancStatus==12)
1998 else if (ancStatus==21){
2003 else if(ancLabel < 6)
2007 else if(ancLabel < 8)
2025 AliDebug(1,
"Common ancestor not found");
2030 if(mcIndex >= 0 && mcIndex < 13)
2059 AliFatal(Form(
"No input aod photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
2066 AliDebug(1,Form(
"Photon entries %d", nPhot));
2085 Double_t vert[] = {0.0, 0.0, 0.0} ;
2086 Int_t evtIndex1 = 0 ;
2087 Int_t currentEvtIndex = -1;
2095 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",
2108 for(Int_t i1=0; i1<nPhot-1; i1++)
2120 if ( evtIndex1 == -1 )
2122 if ( evtIndex1 == -2 )
2128 if (evtIndex1 != currentEvtIndex)
2141 currentEvtIndex = evtIndex1 ;
2147 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2150 module1 = p1->GetSModNumber();
2161 for(Int_t i2=i1+1; i2<nPhot; i2++)
2172 if ( evtIndex2 == -1 )
2174 if ( evtIndex2 == -2 )
2219 Float_t tof1 = p1->GetTime();
2220 Float_t l01 = p1->GetM02();
2221 Int_t ncell1 = p1->GetNCells();
2224 Float_t tof2 = p2->GetTime();
2225 Float_t l02 = p2->GetM02();
2226 Int_t ncell2 = p2->GetNCells();
2229 Double_t t12diff = tof1-tof2;
2238 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2241 module2 = p2->GetSModNumber();
2250 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2252 AliDebug(2,Form(
"E: fPhotonMom1 %f, fPhotonMom2 %f; Pair: pT %f, mass %f, a %f", p1->E(), p2->E(), (
fPhotonMom1 +
fPhotonMom2).E(),m,a));
2276 if(module1==module2 && module1 >=0 && module1<
fNModules)
2305 if(
fSameSM && module1!=module2) ok=kFALSE;
2319 if ( l01 > 0.01 && l01 < 0.4 &&
2327 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2331 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2335 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2338 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2345 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2350 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2399 FillMCVersusRecDataHistograms(p1->GetLabel(), p2->GetLabel(),p1->Pt(), p2->Pt(),ncell1, ncell2, m, pt, a,deta, dphi);
2408 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2417 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2421 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2423 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2441 for(Int_t iasym = 0; iasym <
fNAsymCuts; iasym++)
2459 if(eventbin < 0) return ;
2465 AliWarning(Form(
"Mix event list not available, bin %d",eventbin));
2469 Int_t nMixed = evMixList->GetSize() ;
2470 for(Int_t ii=0; ii<nMixed; ii++)
2472 TClonesArray* ev2= (TClonesArray*) (evMixList->At(ii));
2473 Int_t nPhot2=ev2->GetEntriesFast() ;
2475 AliDebug(1,Form(
"Mixed event %d photon entries %d, centrality bin %d",ii, nPhot2,
GetEventCentralityBin()));
2482 for(Int_t i1=0; i1<nPhot; i1++)
2489 fPhotonMom1.SetPxPyPzE(p1->Px(),p1->Py(),p1->Pz(),p1->E());
2495 for(Int_t i2=0; i2<nPhot2; i2++)
2497 AliAODPWG4Particle * p2 = (AliAODPWG4Particle*) (ev2->At(i2)) ;
2500 fPhotonMom2.SetPxPyPzE(p2->Px(),p2->Py(),p2->Pz(),p2->E());
2503 Double_t a = TMath::Abs(p1->E()-p2->E())/(p1->E()+p2->E()) ;
2519 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));
2529 if(module1==module2 && module1 >=0 && module1<
fNModules)
2557 if(
fSameSM && module1!=module2) ok=kFALSE;
2568 for(Int_t ipid=0; ipid<
fNPIDBits; ipid++)
2572 for(Int_t iasym=0; iasym <
fNAsymCuts; iasym++)
2576 Int_t index = ((curCentrBin*
fNPIDBits)+ipid)*fNAsymCuts + iasym;
2578 if(index < 0 || index >= ncentr*fNPIDBits*fNAsymCuts) continue ;
2586 if(p1->DistToBad()>0 && p2->DistToBad()>0)
2591 if(p1->DistToBad()>1 && p2->DistToBad()>1)
2610 for(Int_t ipt=0; ipt<
fNPtCuts; ipt++)
2614 for(Int_t iasym=0; iasym<
fNAsymCuts; iasym++)
2616 Int_t index = ((ipt*
fNCellNCuts)+icell)*fNAsymCuts + iasym;
2647 if( currentEvent->GetEntriesFast() > 0 )
2649 evMixList->AddFirst(currentEvent) ;
2653 TClonesArray * tmp = (TClonesArray*) (evMixList->Last()) ;
2654 evMixList->RemoveLast() ;
2660 delete currentEvent ;
2665 AliDebug(1,
"End fill histograms");
2675 Int_t evtIndex = -1 ;
2681 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)
Float_t DegToRad(Float_t deg) const
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]
Float_t RadToDeg(Float_t rad) const
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
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.
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 * 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]
Int_t CheckCommonAncestor(Int_t index1, Int_t index2, const AliCaloTrackReader *reader, Int_t &ancPDG, Int_t &ancStatus, TLorentzVector &momentum, TVector3 &prodVertex)
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]