18 #include <TClonesArray.h>
19 #include <TObjString.h>
30 #include "TParticle.h"
31 #include "AliVCluster.h"
32 #include "AliESDEvent.h"
33 #include "AliAODEvent.h"
34 #include "AliAODMCParticle.h"
47 fNLMCutMin(-1), fNLMCutMax(10),
48 fFillAllNLMHistograms(0), fFillTMHisto(0),
49 fFillSelectClHisto(0),
50 fM02MaxCutForIM(0), fM02MinCutForIM(0),
51 fSelectIsolatedDecay(kFALSE), fSelectPairInIsoCone(0),
52 fR(0), fIsoCandMinPt(0),
53 fMinDist(0.), fMinDist2(0.), fMinDist3(0.),
54 fTimeCutMin(-10000), fTimeCutMax(10000),
55 fRejectTrackMatch(kTRUE), fCheckSplitDistToBad(0),
56 fFillWeightHistograms(kFALSE), fFillOnlySimpleSSHisto(1),
57 fFillEMCALBCHistograms(0),
58 fInputAODGammaConvName(
""),
59 fMomentum(), fMomentum1(), fMomentum2(),
60 fMomentum12(),fPrimaryMom(), fGrandMotherMom(),
63 fhPtEta(0), fhPtPhi(0), fhEtaPhi(0),
64 fhEtaPhiEMCALBC0(0), fhEtaPhiEMCALBC1(0), fhEtaPhiEMCALBCN(0),
65 fhTimeTriggerEMCALBC0UMReMatchOpenTime(0),
66 fhTimeTriggerEMCALBC0UMReMatchCheckNeigh(0),
67 fhTimeTriggerEMCALBC0UMReMatchBoth(0),
68 fhPtCentrality(), fhPtEventPlane(0), fhMCPtCentrality(),
69 fhPtReject(0), fhEReject(0),
70 fhPtEtaReject(0), fhPtPhiReject(0), fhEtaPhiReject(0),
71 fhMass(0), fhMassPt(0),
72 fhMassPtMaxPair(0), fhMassPtMinPair(0), fhMassSplitPt(0),
73 fhSelectedMass(0), fhSelectedMassPt(0), fhSelectedMassSplitPt(0),
75 fhMassNoOverlap(0), fhMassPtNoOverlap(0), fhMassSplitPtNoOverlap(0),
76 fhSelectedMassNoOverlap(0), fhSelectedMassPtNoOverlap(0), fhSelectedMassSplitPtNoOverlap(0),
77 fhMCPi0PtRecoPtPrim(0), fhMCEtaPtRecoPtPrim(0),
78 fhMCPi0PtRecoPtPrimNoOverlap(0), fhMCEtaPtRecoPtPrimNoOverlap(0),
79 fhMCPi0SplitPtRecoPtPrim(0), fhMCEtaSplitPtRecoPtPrim(0),
80 fhMCPi0SplitPtRecoPtPrimNoOverlap(0), fhMCEtaSplitPtRecoPtPrimNoOverlap(0),
81 fhMCPi0SelectedPtRecoPtPrim(0), fhMCEtaSelectedPtRecoPtPrim(0),
82 fhMCPi0SelectedPtRecoPtPrimNoOverlap(0), fhMCEtaSelectedPtRecoPtPrimNoOverlap(0),
83 fhMCPi0SelectedSplitPtRecoPtPrim(0), fhMCEtaSelectedSplitPtRecoPtPrim(0),
84 fhMCPi0SelectedSplitPtRecoPtPrimNoOverlap(0), fhMCEtaSelectedSplitPtRecoPtPrimNoOverlap(0),
85 fhAsymmetry(0), fhSelectedAsymmetry(0),
86 fhSplitE(0), fhSplitPt(0),
87 fhSplitPtEta(0), fhSplitPtPhi(0),
92 fhPtDispersion(0), fhPtLambda0(0), fhPtLambda0NoSplitCut(0),
93 fhPtLambda1(0), fhPtLambda0NoTRD(0), fhPtLambda0FracMaxCellCut(0),
94 fhPtFracMaxCell(0), fhPtFracMaxCellNoTRD(0),
95 fhPtNCells(0), fhPtTime(0), fhEPairDiffTime(0),
96 fhPtDispEta(0), fhPtDispPhi(0),
97 fhPtSumEta(0), fhPtSumPhi(0), fhPtSumEtaPhi(0),
98 fhPtDispEtaPhiDiff(0), fhPtSphericity(0),
101 fhMCPtDecayLostPairPi0(0), fhMCPtDecayLostPairEta(0),
103 fhMCPtPhi(), fhMCPtEta(),
104 fhMCEReject(), fhMCPtReject(),
105 fhMCPi0PtGenRecoFraction(0), fhMCEtaPtGenRecoFraction(0),
106 fhMCPi0DecayPt(0), fhMCPi0DecayPtFraction(0),
107 fhMCEtaDecayPt(0), fhMCEtaDecayPtFraction(0),
109 fhMassPairMCPi0(0), fhMassPairMCEta(0),
110 fhAnglePairMCPi0(0), fhAnglePairMCEta(0),
111 fhMCPi0PtOrigin(0x0), fhMCEtaPtOrigin(0x0),
112 fhMCNotResonancePi0PtOrigin(0), fhMCPi0PtStatus(0x0),
113 fhMCPi0ProdVertex(0), fhMCEtaProdVertex(0),
116 fhECellClusterRatio(0), fhECellClusterLogRatio(0),
117 fhEMaxCellClusterRatio(0), fhEMaxCellClusterLogRatio(0),
118 fhTrackMatchedDEta(0), fhTrackMatchedDPhi(0), fhTrackMatchedDEtaDPhi(0),
119 fhTrackMatchedDEtaPos(0), fhTrackMatchedDPhiPos(0), fhTrackMatchedDEtaDPhiPos(0),
120 fhTrackMatchedDEtaNeg(0), fhTrackMatchedDPhiNeg(0), fhTrackMatchedDEtaDPhiNeg(0),
121 fhTrackMatchedMCParticlePt(0),
122 fhTrackMatchedMCParticleDEta(0), fhTrackMatchedMCParticleDPhi(0),
123 fhdEdx(0), fhEOverP(0), fhEOverPNoTRD(0),
125 fhNLocMaxPt(0), fhNLocMaxPtReject(0),
127 fhTimePtNoCut(0), fhTimePtSPD(0), fhTimePtSPDMulti(0),
128 fhTimeNPileUpVertSPD(0), fhTimeNPileUpVertTrack(0),
129 fhTimeNPileUpVertContributors(0),
130 fhTimePileUpMainVertexZDistance(0), fhTimePileUpMainVertexZDiamond(0),
131 fhPtNPileUpSPDVtx(0), fhPtNPileUpTrkVtx(0),
132 fhPtNPileUpSPDVtxTimeCut(0), fhPtNPileUpTrkVtxTimeCut(0),
133 fhPtNPileUpSPDVtxTimeCut2(0), fhPtNPileUpTrkVtxTimeCut2(0)
177 for(
Int_t j = 0; j < 7; j++)
188 for(
Int_t j = 0; j < 7; j++)
200 for(
Int_t i = 0; i < 3; i++)
232 for(
Int_t i =0; i < 14; i++){
238 for(
Int_t i = 0; i < 11; i++)
249 for(
Int_t iSM = 0; iSM < 22; iSM++)
252 for(
Int_t inlm = 0; inlm < 3; inlm++)
276 if(TMath::Abs(bc) >= 6) AliInfo(Form(
"Trigger BC not expected = %d",bc));
278 if(phi < 0) phi+=TMath::TwoPi();
289 if(TMath::Abs(bc) >= 6) return ;
312 if(
GetReader()->IsTriggerMatchedOpenCuts(0))
315 if(
GetReader()->IsTriggerMatchedOpenCuts(1))
318 if(
GetReader()->IsTriggerMatchedOpenCuts(2))
347 AliVCaloCells* cells = 0;
354 Double_t tmax = cells->GetCellTime(absIdMax);
359 if(cells->GetCellAmplitude(absIdMax) > 0.1 && TMath::Abs(tmax) < 30)
361 for (
Int_t ipos = 0; ipos < calo->GetNCells(); ipos++)
363 Int_t absId = calo->GetCellsAbsId()[ipos];
365 if( absId == absIdMax ) continue ;
367 Double_t timecell = cells->GetCellTime(absId);
368 Float_t amp = cells->GetCellAmplitude(absId);
373 Float_t diff = (tmax-timecell);
375 if( cells->GetCellAmplitude(absIdMax) < 0.1 )
continue ;
389 if(
GetReader()->IsPileUpFromSPDOrEMCal())
395 if(
GetReader()->IsPileUpFromSPDAndEMCal())
401 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
407 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
413 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
432 nVtxSPD = esdEv->GetNumberOfPileupVerticesSPD();
433 nVtxTrk = esdEv->GetNumberOfPileupVerticesTracks();
438 nVtxSPD = aodEv->GetNumberOfPileupVerticesSPD();
439 nVtxTrk = aodEv->GetNumberOfPileupVerticesTracks();
448 if(TMath::Abs(time) < 25)
454 if(time < 75 && time > -25)
466 for(
Int_t iVert=0; iVert<nVtxSPD;iVert++)
470 const AliESDVertex* pv=esdEv->GetPileupVertexSPD(iVert);
471 ncont=pv->GetNContributors();
472 z1 = esdEv->GetPrimaryVertexSPD()->GetZ();
474 diamZ = esdEv->GetDiamondZ();
478 AliAODVertex *pv=aodEv->GetVertex(iVert);
479 if(pv->GetType()!=AliAODVertex::kPileupSPD)
continue;
480 ncont=pv->GetNContributors();
481 z1=aodEv->GetPrimaryVertexSPD()->GetZ();
483 diamZ = aodEv->GetDiamondZ();
487 diamZ = TMath::Abs(z2-diamZ);
506 if(phi < 0) phi+=TMath::TwoPi();
536 Float_t disp = cluster->GetDispersion()*cluster->GetDispersion();
537 Float_t l0 = cluster->GetM02();
538 Float_t l1 = cluster->GetM20();
542 if (pt < 2 ) ptbin = 0;
543 else if (pt < 4 ) ptbin = 1;
544 else if (pt < 6 ) ptbin = 2;
545 else if (pt < 10) ptbin = 3;
546 else if (pt < 15) ptbin = 4;
547 else if (pt < 20) ptbin = 5;
551 if (nMaxima==1) indexMax = 0 ;
552 else if(nMaxima==2) indexMax = 1 ;
564 if(nSM <
GetCaloUtils()->GetNumberOfSuperModulesUsed() && nSM >=0)
572 Float_t dispp= 0., dEta = 0., dPhi = 0.;
573 Float_t sEta = 0., sPhi = 0., sEtaPhi = 0.;
574 AliVCaloCells * cell = 0x0;
584 if(maxCellFraction < 0.5)
589 ll0, ll1, dispp, dEta, dPhi,
590 sEta, sPhi, sEtaPhi);
641 Float_t dZ = cluster->GetTrackDz();
642 Float_t dR = cluster->GetTrackDx();
654 if(track) positive = (track->Charge()>0);
684 if(TMath::Abs(dZ) < 0.05 && TMath::Abs(dR) < 0.05)
688 Float_t dEdx = track->GetTPCsignal();
691 Float_t eOverp = cluster->E()/track->P();
748 if(maxCellFraction < 0.5)
782 AliVCaloCells* cells = 0;
789 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
792 Int_t id = clus->GetCellsAbsId()[ipos];
795 Float_t amp = cells->GetCellAmplitude(
id);
807 AliInfo(Form(
"Wrong calculated energy %f",energy));
815 for (
Int_t ipos = 0; ipos < clus->GetNCells(); ipos++)
817 Int_t id = clus->GetCellsAbsId()[ipos];
820 Float_t amp = cells->GetCellAmplitude(
id);
830 Float_t l0org = clus->GetM02();
831 Float_t l1org = clus->GetM20();
832 Float_t dorg = clus->GetDispersion();
834 for(
Int_t iw = 0; iw < 14; iw++)
847 clus->SetDispersion(dorg);
858 const Int_t buffersize = 255;
859 char onePar[buffersize] ;
861 snprintf(onePar,buffersize,
"--- AliAnaPi0EbE ---\n") ;
863 snprintf(onePar,buffersize,
"fAnaType=%d (selection type) \n",
fAnaType) ;
874 snprintf(onePar,buffersize,
"N cell cut: N > %d;",
GetCaloPID()->GetClusterSplittingMinNCells()) ;
876 snprintf(onePar,buffersize,
"Min Dist to Bad channel: fMinDist =%2.2f; fMinDist2=%2.2f, fMinDist3=%2.2f;",
fMinDist,
fMinDist2,
fMinDist3) ;
882 snprintf(onePar,buffersize,
"Reject split cluster close to border or bad?: %d;",
fCheckSplitDistToBad) ;
904 snprintf(onePar,buffersize,
"Time Diff: %2.2f;",
GetPairTimeCut()) ;
911 return new TObjString(parList) ;
921 outputContainer->SetName(
"Pi0EbEHistos") ;
953 TString nlm[] = {
"1 Local Maxima",
"2 Local Maxima",
"NLM > 2"};
955 TString ptype [] = {
"#pi^{0}",
"#eta",
"#gamma (direct)",
"#gamma (#pi^{0})",
"#gamma (#eta)",
"#gamma (other)",
"e^{#pm}" ,
"hadron/other combinations"};
956 TString pname [] = {
"Pi0" ,
"Eta" ,
"Photon" ,
"Pi0Decay" ,
"EtaDecay" ,
"OtherDecay" ,
"Electron",
"Hadron"};
958 Int_t bin[] = {0,2,4,6,10,15,20,100};
960 fhPt =
new TH1F(
"hPt",
"Number of identified #pi^{0} (#eta) decay",nptbins,ptmin,ptmax);
961 fhPt->SetYTitle(
"#it{N}");
962 fhPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
963 outputContainer->Add(
fhPt) ;
965 fhE =
new TH1F(
"hE",
"Number of identified #pi^{0} (#eta) decay pairs",nptbins,ptmin,ptmax);
966 fhE->SetYTitle(
"#it{N}");
967 fhE->SetXTitle(
"#it{E} (GeV)");
968 outputContainer->Add(
fhE) ;
971 (
"hPtPhi",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
972 fhPtPhi->SetYTitle(
"#phi (rad)");
973 fhPtPhi->SetXTitle(
"#it{E} (GeV)");
974 outputContainer->Add(
fhPtPhi) ;
977 (
"hPtEta",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax);
979 fhPtEta->SetXTitle(
"#it{E} (GeV)");
980 outputContainer->Add(
fhPtEta) ;
983 (
"hEtaPhi",
"Selected #pi^{0} (#eta) pairs: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
991 (
"hEtaPhiEMCALBC0",
"cluster, #it{E} > 2 GeV, #eta vs #phi, for clusters with |#it{t}| < 25 ns, EMCAL-BC=0",netabins,etamin,etamax,nphibins,phimin,phimax);
997 (
"hEtaPhiEMCALBC1",
"cluster, #it{E} > 2 GeV, #eta vs #phi, for clusters with 25 < |#it{t}| < 75 ns, EMCAL-BC=1",netabins,etamin,etamax,nphibins,phimin,phimax);
1003 (
"hEtaPhiEMCALBCN",
"cluster, #it{E} > 2 GeV, #eta vs #phi, for clusters with |#it{t}| > 75 ns, EMCAL-BC>1",netabins,etamin,etamax,nphibins,phimin,phimax);
1008 for(
Int_t i = 0; i < 11; i++)
1011 (Form(
"hEtaPhiTriggerEMCALBC%d",i-5),
1012 Form(
"meson #it{E} > 2 GeV, #eta vs #phi, Trigger EMCAL-BC=%d",i-5),
1013 netabins,etamin,etamax,nphibins,phimin,phimax);
1019 (Form(
"hTimeTriggerEMCALBC%d",i-5),
1020 Form(
"meson #it{t} vs #it{E}, Trigger EMCAL-BC=%d",i-5),
1021 nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
1027 (Form(
"hTimeTriggerEMCALBC%dPileUpSPD",i-5),
1028 Form(
"meson #it{t} vs #it{E}, Trigger EMCAL-BC=%d",i-5),
1029 nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
1035 (Form(
"hEtaPhiTriggerEMCALBC%d_UnMatch",i-5),
1036 Form(
"meson #it{E} > 2 GeV, #eta vs #phi, unmatched trigger EMCAL-BC=%d",i-5),
1037 netabins,etamin,etamax,nphibins,phimin,phimax);
1043 (Form(
"hTimeTriggerEMCALBC%d_UnMatch",i-5),
1044 Form(
"meson #it{t} vs #it{E}, unmatched trigger EMCAL-BC=%d",i-5),
1045 nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
1053 "cluster #it{t} vs #it{E} of clusters, no match, rematch open time",
1054 nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
1061 "cluster #it{t} vs #it{E} of clusters, no match, rematch with neigbour parches",
1062 nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
1068 "cluster #it{t} vs #it{E} of clusters, no match, rematch open time and neigbour",
1069 nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
1078 fhPtCentrality =
new TH2F(
"hPtCentrality",
"centrality vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,100);
1083 fhPtEventPlane =
new TH2F(
"hPtEventPlane",
"event plane angle vs #it{p}_{T}",nptbins,ptmin,ptmax, 100,0,TMath::Pi());
1091 fhPtReject =
new TH1F(
"hPtReject",
"Number of rejected as #pi^{0} (#eta) decay",nptbins,ptmin,ptmax);
1093 fhPtReject->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1096 fhEReject =
new TH1F(
"hEReject",
"Number of rejected as #pi^{0} (#eta) decay pairs",nptbins,ptmin,ptmax);
1102 (
"hPtPhiReject",
"Rejected #pi^{0} (#eta) cluster: #it{p}_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
1108 (
"hPtEtaReject",
"Rejected #pi^{0} (#eta) cluster: #it{p}_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax);
1114 (
"hEtaPhiReject",
"Rejected #pi^{0} (#eta) cluster: #eta vs #phi",netabins,etamin,etamax, nphibins,phimin,phimax);
1119 fhNLocMaxPtReject =
new TH2F(
"hNLocMaxPtReject",
"Number of local maxima in cluster, rejected clusters",
1120 nptbins,ptmin,ptmax,20,0,20);
1127 (
"hMass",
"all pairs #it{M}: #it{E} vs #it{M}",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1128 fhMass->SetYTitle(
"#it{M} (GeV/#it{c}^{2})");
1129 fhMass->SetXTitle(
"#it{E} (GeV)");
1130 outputContainer->Add(
fhMass) ;
1133 (
"hSelectedMass",
"Selected #pi^{0} (#eta) pairs #it{M}: E vs #it{M}",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1139 (
"hMassPt",
"all pairs #it{M}: #it{p}_{T} vs #it{M}",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1140 fhMassPt->SetYTitle(
"#it{M} (GeV/#it{c}^{2})");
1141 fhMassPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1145 (
"hMassPtMaxPair",
"all pairs #it{M}: #it{p}_{T}^{max} vs #it{M}",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1151 (
"hMassPtMinPair",
"all pairs #it{M}: #it{p}_{T}^{min} vs #it{M}",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1157 (
"hSelectedMassPt",
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M}",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1165 (
"hMassPtIsoRCut",Form(
"#it{M}: #it{p}_{T} vs #it{M}, for R = %1.1f, #it{p}_{T,1} < %2.2f",
fR,
fIsoCandMinPt),
1166 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1175 (
"hPtLambda0NoSplitCut",
"all clusters: #it{p}_{T} vs #lambda_{0}^{2}",nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1180 for(
Int_t inlm = 0; inlm < 3; inlm++)
1183 (Form(
"hMassPtNLocMax%d",inlm+1),Form(
"all pairs #it{M}: #it{p}_{T} vs #it{M} and NLM=%s",nlm[inlm].
Data()),nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1189 (Form(
"hSelectedMassPtLocMax%d",inlm+1),Form(
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M}, NLM=%s",nlm[inlm].
Data()),nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1199 (Form(
"hSelectedMassPtLocMax%d_SM%d",inlm+1,iSM),Form(
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M}, NLM=%s for SM=%d",nlm[inlm].
Data(),iSM),nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1205 (Form(
"hSelectedLambda0PtLocMax%d_SM%d",inlm+1,iSM),Form(
"Selected #pi^{0} (#eta) pairs #lambda_{0}^{2}: #it{p}_{T} vs #it{M}, NLM=%s for SM=%d",nlm[inlm].
Data(),iSM),nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1217 (Form(
"hSelectedMassPtLocMax%d_MC%s",inlm+1,pname[ipart].
Data()),
1218 Form(
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M}, NLM=%s, from MC %s",nlm[inlm].
Data(),ptype[ipart].
Data()),
1219 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1230 (
"hMassNoOverlap",
"all pairs #it{M}: #it{E} vs #it{M}, no overlap",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1236 (
"hSelectedMassNoOverlap",
"Selected #pi^{0} (#eta) pairs #it{M}: #it{E} vs #it{M}, no overlap",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1242 (
"hMassPtNoOverlap",
"all pairs #it{M}: #it{p}_{T} vs #it{M}, no overlap",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1248 (
"hSelectedMassPtNoOverlap",
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M}, no overlap",nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1257 fhPtDecay =
new TH1F(
"hPtDecay",
"Selected #pi^{0} (#eta) decay photons",nptbins,ptmin,ptmax);
1259 fhPtDecay->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1264 fhMCPtDecayLostPairPi0 =
new TH1F(
"hPtDecay_MCPi0DecayLostPair",
"Selected #pi^{0} (#eta) decay photons, from MC #gamma #pi^{0} decay, companion lost",
1265 nptbins,ptmin,ptmax);
1270 fhMCPtDecayLostPairEta =
new TH1F(
"hPtDecay_MCEtaDecayLostPair",
"Selected #pi^{0} (#eta) decay photons, from MC #gamma #eta decay, companion lost",
1271 nptbins,ptmin,ptmax);
1278 fhMCPtDecay[ipart] =
new TH1F(Form(
"hPtDecay_MC%s",pname[ipart].
Data()),
1279 Form(
"Selected #pi^{0} (#eta) decay photons, from MC %s",ptype[ipart].
Data()),
1280 nptbins,ptmin,ptmax);
1282 fhMCPtDecay[ipart]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1293 (
"hPtLambda0",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1295 fhPtLambda0->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1299 (
"hPtLambda1",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{1}",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1301 fhPtLambda1->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1307 (
"hPtLambda0NoTRD",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}, not behind TRD",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1315 (
"hPtFracMaxCellNoTRD",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}, Max cell fraction of energy, not behind TRD",nptbins,ptmin,ptmax,100,0,1);
1325 (
"hPtDispersion",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs dispersion",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1331 (
"hPtLambda0FracMaxCellCut",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}, Max cell fraction of energy < 0.5",nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1337 (
"hPtFracMaxCell",
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}, Max cell fraction of energy",nptbins,ptmin,ptmax,100,0,1);
1342 fhPtDispEta =
new TH2F (
"hPtDispEta",
"#sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs #it{p}_{T}", nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1343 fhPtDispEta->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1347 fhPtDispPhi =
new TH2F (
"hPtDispPhi",
"#sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs #it{p}_{T}", nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1348 fhPtDispPhi->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1352 fhPtSumEta =
new TH2F (
"hPtSumEta",
"#sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i})^{2} / #Sigma w_{i} - <#eta>^{2} vs #it{p}_{T}", nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1353 fhPtSumEta->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1354 fhPtSumEta->SetYTitle(
"#delta^{2}_{#eta #eta}");
1357 fhPtSumPhi =
new TH2F (
"hPtSumPhi",
"#sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i})^{2}/ #Sigma w_{i} - <#phi>^{2} vs #it{p}_{T}",
1358 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
1359 fhPtSumPhi->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1360 fhPtSumPhi->SetYTitle(
"#delta^{2}_{#phi #phi}");
1363 fhPtSumEtaPhi =
new TH2F (
"hPtSumEtaPhi",
"#delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs #it{p}_{T}",
1364 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
1369 fhPtDispEtaPhiDiff =
new TH2F (
"hPtDispEtaPhiDiff",
"#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs #it{p}_{T}",
1370 nptbins,ptmin,ptmax,200, -10,10);
1375 fhPtSphericity =
new TH2F (
"hPtSphericity",
"(#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs #it{p}_{T} (GeV/#it{c})",
1376 nptbins,ptmin,ptmax, 200, -1,1);
1378 fhPtSphericity->SetYTitle(
"s = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
1381 for(
Int_t i = 0; i < 7; i++)
1383 fhDispEtaDispPhi[i] =
new TH2F (Form(
"hDispEtaDispPhi_EBin%d",i),Form(
"#sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]),
1384 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1389 fhLambda0DispEta[i] =
new TH2F (Form(
"hLambda0DispEta_EBin%d",i),Form(
"#lambda^{2}_{0} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",bin[i],bin[i+1]),
1390 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1395 fhLambda0DispPhi[i] =
new TH2F (Form(
"hLambda0DispPhi_EBin%d",i),Form(
"#lambda^{2}_{0}} vs #sigma^{2}_{#phi #phi} for %d < E < %d GeV",bin[i],bin[i+1]),
1396 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
1403 fhNLocMaxPt =
new TH2F(
"hNLocMaxPt",
"Number of local maxima in cluster, selected clusters",
1404 nptbins,ptmin,ptmax,20,0,20);
1406 fhNLocMaxPt ->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1413 fhNLocMaxPtSM[iSM] =
new TH2F(Form(
"hNLocMaxPt_SM%d",iSM),Form(
"Number of local maxima in cluster, selected clusters in SM %d",iSM),
1414 nptbins,ptmin,ptmax,20,0,20);
1420 for (
Int_t i = 0; i < 3; i++)
1423 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}, NLM=%s",nlm[i].
Data()),
1424 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1434 (Form(
"hPtLambda0LocMax%d_MC%s",i+1,pname[ipart].
Data()),
1435 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{0}, NLM=%s, MC %s",nlm[i].
Data(),ptype[ipart].
Data()),
1436 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1444 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #lambda_{1}, %s",nlm[i].
Data()),
1445 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1453 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs dispersion^{2}, %s",nlm[i].
Data()),
1454 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1460 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #sigma_{#eta #eta}, %s",nlm[i].
Data()),
1461 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1467 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #sigma_{#phi #phi}, %s",nlm[i].
Data()),
1468 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1474 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #sigma_{#eta #phi}, %s",nlm[i].
Data()),
1475 nptbins,ptmin,ptmax,2*ssbins,-ssmax,ssmax);
1481 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #sigma_{#phi #phi} - #sigma_{#eta #eta}, %s",nlm[i].
Data()),
1482 nptbins,ptmin,ptmax,200, -10,10);
1488 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #sigma_{#phi #phi} - #sigma_{#eta #eta} / (#sigma_{#phi #phi} + #sigma_{#eta #eta}), %s",nlm[i].
Data()),
1489 nptbins,ptmin,ptmax,200, -1,1);
1490 fhPtSphericityLocMax[i]->SetYTitle(
"#sigma_{#phi #phi} - #sigma_{#eta #eta} / (#sigma_{#phi #phi} + #sigma_{#eta #eta})");
1497 fhPtNCells =
new TH2F (
"hPtNCells",
"N cells in cluster vs E ", nptbins,ptmin,ptmax, nbins,nmin,nmax);
1498 fhPtNCells->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1499 fhPtNCells->SetYTitle(
"# of cells in cluster");
1502 fhPtTime =
new TH2F(
"hPtTime",
"cluster time vs pair E",nptbins,ptmin,ptmax, tbins,tmin,tmax);
1503 fhPtTime->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1511 fhEPairDiffTime =
new TH2F(
"hEPairDiffTime",
"cluster pair time difference vs E",nptbins,ptmin,ptmax, tdbins,tdmin,tdmax);
1519 TString combiName [] = {
"1LocMax",
"2LocMax",
"NLocMax",
"1LocMax2LocMax",
"1LocMaxNLocMax",
"2LocMaxNLocMax",
"1LocMaxSSBad",
"NLocMaxSSGood"};
1520 TString combiTitle[] = {
"1 Local Maxima in both clusters",
"2 Local Maxima in both clusters",
"more than 2 Local Maxima in both clusters",
1521 "1 Local Maxima paired with 2 Local Maxima",
"1 Local Maxima paired with more than 2 Local Maxima",
1522 "2 Local Maxima paired with more than 2 Local Maxima",
1523 "1 Local Maxima paired with #lambda_{0}^{2}>0.3",
"N Local Maxima paired with 0.1<#lambda_{0}^{2}<0.3"};
1527 for (
Int_t i = 0; i < 8 ; i++)
1532 (Form(
"MassPairLocMax%s",combiName[i].
Data()),
1533 Form(
"#it{M} for decay #gamma pair vs #it{E}_{pair}, origin #pi^{0}, %s", combiTitle[i].
Data()),
1534 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1545 (
"hTrackMatchedDEta",
1546 "d#eta of cluster-track vs cluster #it{p}_{T}",
1547 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1552 (
"hTrackMatchedDPhi",
1553 "d#phi of cluster-track vs cluster #it{p}_{T}",
1554 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1559 (
"hTrackMatchedDEtaDPhi",
1560 "d#eta vs d#phi of cluster-track",
1561 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1570 (
"hTrackMatchedDEtaPos",
1571 "d#eta of cluster-track vs cluster #it{p}_{T}",
1572 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1577 (
"hTrackMatchedDPhiPos",
1578 "d#phi of cluster-track vs cluster #it{p}_{T}",
1579 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1584 (
"hTrackMatchedDEtaDPhiPos",
1585 "d#eta vs d#phi of cluster-track",
1586 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1595 (
"hTrackMatchedDEtaNeg",
1596 "d#eta of cluster-track vs cluster #it{p}_{T}",
1597 nptbins,ptmin,ptmax,nresetabins,resetamin,resetamax);
1602 (
"hTrackMatchedDPhiNeg",
1603 "d#phi of cluster-track vs cluster #it{p}_{T}",
1604 nptbins,ptmin,ptmax,nresphibins,resphimin,resphimax);
1609 (
"hTrackMatchedDEtaDPhiNeg",
1610 "d#eta vs d#phi of cluster-track",
1611 nresetabins,resetamin,resetamax,nresphibins,resphimin,resphimax);
1619 fhdEdx =
new TH2F (
"hdEdx",
"matched track <dE/dx> vs cluster #it{p}_{T}", nptbins,ptmin,ptmax,ndedxbins, dedxmin, dedxmax);
1620 fhdEdx->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1621 fhdEdx->SetYTitle(
"<#it{dE}/#it{dx}>");
1622 outputContainer->Add(
fhdEdx);
1624 fhEOverP =
new TH2F (
"hEOverP",
"matched track E/p vs cluster #it{p}_{T}", nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1625 fhEOverP->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1626 fhEOverP->SetYTitle(
"#it{E}/#it{p}");
1631 fhEOverPNoTRD =
new TH2F (
"hEOverPNoTRD",
"matched track E/p vs cluster E, SM not behind TRD ", nptbins,ptmin,ptmax,nPoverEbins,pOverEmin,pOverEmax);
1640 (
"hTrackMatchedMCParticlePt",
1641 "Origin of particle vs energy",
1642 nptbins,ptmin,ptmax,8,0,8);
1658 (
"hTrackMatchedMCParticleDEta",
1659 "Origin of particle vs #eta residual",
1660 nresetabins,resetamin,resetamax,8,0,8);
1676 (
"hTrackMatchedMCParticleDPhi",
1677 "Origin of particle vs #phi residual",
1678 nresphibins,resphimin,resphimax,8,0,8);
1697 fhECellClusterRatio =
new TH2F (
"hECellClusterRatio",
" cell energy / cluster energy vs cluster energy, for selected decay photons from neutral meson",
1698 nptbins,ptmin,ptmax, 100,0,1.);
1703 fhECellClusterLogRatio =
new TH2F (
"hECellClusterLogRatio",
" Log(cell energy / cluster energy) vs cluster energy, for selected decay photons from neutral meson",
1704 nptbins,ptmin,ptmax, 100,-10,0);
1709 fhEMaxCellClusterRatio =
new TH2F (
"hEMaxCellClusterRatio",
" max cell energy / cluster energy vs cluster energy, for selected decay photons from neutral meson",
1710 nptbins,ptmin,ptmax, 100,0,1.);
1715 fhEMaxCellClusterLogRatio =
new TH2F (
"hEMaxCellClusterLogRatio",
" Log(max cell energy / cluster energy) vs cluster energy, for selected decay photons from neutral meson",
1716 nptbins,ptmin,ptmax, 100,-10,0);
1721 for(
Int_t iw = 0; iw < 14; iw++)
1723 fhLambda0ForW0[iw] =
new TH2F (Form(
"hLambda0ForW0%d",iw),Form(
"shower shape, #lambda^{2}_{0} vs E, w0 = %1.1f, for selected decay photons from neutral meson",1+0.5*iw),
1724 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
1741 fhMCPi0PtOrigin =
new TH2F(
"hMCPi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1756 fhMCNotResonancePi0PtOrigin =
new TH2F(
"hMCNotResonancePi0PtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,11,0,11) ;
1771 fhMCPi0PtStatus =
new TH2F(
"hMCPi0PtStatus",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs status",nptbins,ptmin,ptmax,101,-50,50) ;
1776 fhMCEtaPtOrigin =
new TH2F(
"hMCEtaPtOrigin",
"Reconstructed pair from generated #pi^{0} #it{p}_{T} vs origin",nptbins,ptmin,ptmax,7,0,7) ;
1787 fhMCPi0ProdVertex =
new TH2F(
"hMCPi0ProdVertex",
"Selected reco pair from generated #pi^{0} #it{p}_{T} vs production vertex",200,ptmin,20+ptmin,5000,0,500) ;
1792 fhMCEtaProdVertex =
new TH2F(
"hMCEtaProdVertex",
"Selected reco pair from generated #eta #it{p}_{T} vs production vertex",200,ptmin,20+ptmin,5000,0,500) ;
1799 fhMCPi0PtGenRecoFraction =
new TH2F(
"hMCPi0PtGenRecoFraction",
"Number of clusters from #pi^{0} (2 #gamma) identified as #pi^{0} (#eta), #it{p}_{T} versus E primary #pi^{0} / E reco",
1800 nptbins,ptmin,ptmax,200,0,2);
1805 fhMCEtaPtGenRecoFraction =
new TH2F(
"hMCEtaPtGenRecoFraction",
"Number of clusters from #eta (2 #gamma) identified as #pi^{0} (#eta),#it{p}_{T} versus E primary #eta / E reco",
1806 nptbins,ptmin,ptmax,200,0,2);
1811 fhMCPi0DecayPt =
new TH1F(
"hMCPi0DecayPt",
"Number of #gamma from #pi^{0} decay identified as #pi^{0} (#eta)",nptbins,ptmin,ptmax);
1816 fhMCPi0DecayPtFraction =
new TH2F(
"hMCPi0DecayPtFraction",
"Number of #gamma from #pi^{0} decay identified as #pi^{0} (#eta), #it{p}_{T} versus E primary #gamma / #it{E} primary #pi^{0}",
1817 nptbins,ptmin,ptmax,100,0,1);
1822 fhMCEtaDecayPt =
new TH1F(
"hMCEtaDecayPt",
"Number of #gamma from #eta decay identified as #pi^{0} (#eta)",nptbins,ptmin,ptmax);
1827 fhMCEtaDecayPtFraction =
new TH2F(
"hMCEtaDecayPtFraction",
"Number of #gamma from #eta decay identified as #pi^{0} (#eta), #it{p}_{T} versus E primary #gamma / E primary #eta",
1828 nptbins,ptmin,ptmax,100,0,1);
1833 fhMCOtherDecayPt =
new TH1F(
"hMCOtherDecayPt",
"Number of #gamma decay (not #eta or #pi^{0}) identified as #pi^{0} (#eta)",nptbins,ptmin,ptmax);
1843 "Angle between decay #gamma pair vs #it{E}_{pair}, origin #pi^{0}",nptbins,ptmin,ptmax,250,0,0.5);
1850 "Angle between decay #gamma pair vs #it{E}_{pair}, origin #eta",nptbins,ptmin,ptmax,250,0,0.5);
1857 "#it{M} for decay #gamma pair vs #it{E}_{pair}, origin #pi^{0}",nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1864 "#it{M} for decay #gamma pair vs #it{E}_{pair}, origin #eta",nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1873 for(
Int_t i = 0; i < ntypes; i++)
1876 (Form(
"hE_MC%s",pname[i].
Data()),
1877 Form(
"Identified as #pi^{0} (#eta), cluster from %s",
1879 nptbins,ptmin,ptmax);
1880 fhMCE[i]->SetYTitle(
"#it{N}");
1881 fhMCE[i]->SetXTitle(
"#it{E} (GeV)");
1882 outputContainer->Add(
fhMCE[i]) ;
1885 (Form(
"hPt_MC%s",pname[i].
Data()),
1886 Form(
"Identified as #pi^{0} (#eta), cluster from %s",
1888 nptbins,ptmin,ptmax);
1889 fhMCPt[i]->SetYTitle(
"#it{N}");
1890 fhMCPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1891 outputContainer->Add(
fhMCPt[i]) ;
1896 (Form(
"hPtCentrality_MC%s",pname[i].
Data()),
1897 Form(
"Identified as #pi^{0} (#eta), cluster from %s",
1899 nptbins,ptmin,ptmax, 100,0,100);
1908 (Form(
"hNLocMaxPt_MC%s",pname[i].
Data()),
1909 Form(
"cluster from %s, #it{p}_{T} of cluster vs NLM, accepted",ptype[i].
Data()),
1910 nptbins,ptmin,ptmax,20,0,20);
1916 (Form(
"hNLocMaxPtReject_MC%s",pname[i].
Data()),
1917 Form(
"cluster from %s, #it{p}_{T} of cluster vs NLM, rejected",ptype[i].
Data()),
1918 nptbins,ptmin,ptmax,20,0,20);
1924 (Form(
"hEReject_MC%s",pname[i].
Data()),
1925 Form(
"Rejected as #pi^{0} (#eta), cluster from %s",
1927 nptbins,ptmin,ptmax);
1933 (Form(
"hPtReject_MC%s",pname[i].
Data()),
1934 Form(
"Rejected as #pi^{0} (#eta), cluster from %s",
1936 nptbins,ptmin,ptmax);
1943 (Form(
"hPtPhi_MC%s",pname[i].
Data()),
1944 Form(
"Identified as #pi^{0} (#eta), cluster from %s",ptype[i].
Data()),
1945 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
1947 fhMCPtPhi[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1951 (Form(
"hPtEta_MC%s",pname[i].
Data()),
1952 Form(
"Identified as #pi^{0} (#eta), cluster from %s",
1953 ptype[i].
Data()),nptbins,ptmin,ptmax,netabins,etamin,etamax);
1955 fhMCPtEta[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1959 (Form(
"hMassPt_MC%s",pname[i].
Data()),
1960 Form(
"all pairs #it{M}: #it{p}_{T} vs #it{M} from %s",ptype[i].
Data()),
1961 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1962 fhMCMassPt[i]->SetYTitle(
"#it{M} (GeV/#it{c}^{2})");
1963 fhMCMassPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1967 (Form(
"hSelectedMassPt_MC%s",pname[i].
Data()),
1968 Form(
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M} from %s",ptype[i].
Data()),
1969 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1977 (Form(
"hMassPtNoOverlap_MC%s",pname[i].
Data()),
1978 Form(
"all pairs #it{M}: #it{p}_{T} vs #it{M} from %s, no overlap",ptype[i].
Data()),
1979 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1980 fhMCMassPt[i]->SetYTitle(
"#it{M} (GeV/#it{c}^{2})");
1981 fhMCMassPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
1985 (Form(
"hSelectedMassPtNoOverlap_MC%s",pname[i].
Data()),
1986 Form(
"Selected #pi^{0} (#eta) pairs #it{M}: #it{p}_{T} vs #it{M} from %s, no overlap",ptype[i].
Data()),
1987 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
1996 Form(
"Selected pair, cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}",ptype[i].
Data()),
1997 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2003 Form(
"Selected pair, cluster from %s : #it{p}_{T} vs #lambda_{1}^{2}",ptype[i].
Data()),
2004 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2012 Form(
"Selected pair, cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}, NoTRD",ptype[i].
Data()),
2013 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2022 Form(
"Selected pair, cluster from %s : #it{p}_{T} vs dispersion^{2}",ptype[i].
Data()),
2023 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2029 Form(
"cluster from %s : #sigma^{2}_{#eta #eta} = #Sigma w_{i}(#eta_{i} - <#eta>)^{2}/ #Sigma w_{i} vs #it{p}_{T}",ptype[i].
Data()),
2030 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2036 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} = #Sigma w_{i}(#phi_{i} - <#phi>)^{2} / #Sigma w_{i} vs #it{p}_{T}",ptype[i].
Data()),
2037 nptbins,ptmin,ptmax, ssbins,ssmin,ssmax);
2043 Form(
"cluster from %s : #delta^{2}_{#eta #phi} = #Sigma w_{i}(#phi_{i} #eta_{i} ) / #Sigma w_{i} - <#phi><#eta> vs #it{p}_{T}",ptype[i].
Data()),
2044 nptbins,ptmin,ptmax, 2*ssbins,-ssmax,ssmax);
2050 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta} vs #it{p}_{T}",ptype[i].
Data()),
2051 nptbins,ptmin,ptmax,200,-10,10);
2057 Form(
"cluster from %s : (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi}) vs E",ptype[i].
Data()),
2058 nptbins,ptmin,ptmax, 200,-1,1);
2060 fhMCPtSphericity[i]->SetYTitle(
"#it{s} = (#sigma^{2}_{#phi #phi} - #sigma^{2}_{#eta #eta}) / (#sigma^{2}_{#eta #eta} + #sigma^{2}_{#phi #phi})");
2063 for(
Int_t ie = 0; ie < 7; ie++)
2066 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",ptype[i].
Data(),bin[ie],bin[ie+1]),
2067 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2073 Form(
"cluster from %s : #lambda^{2}_{0} vs #sigma^{2}_{#eta #eta} for %d < E < %d GeV",ptype[i].
Data(),bin[ie],bin[ie+1]),
2074 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2080 Form(
"cluster from %s :#lambda^{2}_{0} vs #sigma^{2}_{#phi #phi} for %d < E < %d GeV",ptype[i].
Data(),bin[ie],bin[ie+1]),
2081 ssbins,ssmin,ssmax , ssbins,ssmin,ssmax);
2088 Form(
"Selected pair, cluster from %s : #it{p}_{T} vs #lambda_{0}^{2}, Max cell fraction of energy < 0.5 ",ptype[i].
Data()),
2089 nptbins,ptmin,ptmax,ssbins,ssmin,ssmax);
2095 Form(
"Selected pair, cluster from %s : #it{p}_{T} vs Max cell fraction of energy",ptype[i].
Data()),
2096 nptbins,ptmin,ptmax,100,0,1);
2107 fhAsymmetry =
new TH2F (
"hAsymmetry",
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} ) vs #it{E}",
2108 nptbins,ptmin,ptmax, 200, -1,1);
2110 fhAsymmetry->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2113 fhSelectedAsymmetry =
new TH2F (
"hSelectedAsymmetry",
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} ) vs #it{E}",
2114 nptbins,ptmin,ptmax, 200, -1,1);
2116 fhSelectedAsymmetry->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2120 (
"hSplitE",
"Selected #pi^{0} (#eta) pairs energy sum of split sub-clusters",nptbins,ptmin,ptmax);
2122 fhSplitE->SetXTitle(
"#it{E} (GeV)");
2126 (
"hSplitPt",
"Selected #pi^{0} (#eta) pairs #it{p}_{T} sum of split sub-clusters",nptbins,ptmin,ptmax);
2128 fhSplitPt->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2133 (
"hSplitPtPhi",
"Selected #pi^{0} (#eta) pairs: sum split sub-cluster #it{p}_{T} vs #phi",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2139 (
"hSplitPtEta",
"Selected #pi^{0} (#eta) pairs: sum split sub-cluster #it{p}_{T} vs #eta",nptbins,ptmin,ptmax,netabins,etamin,etamax);
2146 nptbins,ptmin,ptmax,20,0,20);
2153 (
"hMassSplitPt",
"all pairs #it{M}: sum split sub-cluster #it{p}_{T} vs #it{M}",
2154 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2160 (
"hSelectedMassSplitPt",
"Selected #pi^{0} (#eta) pairs #it{M}: sum split sub-cluster #it{p}_{T} vs #it{M}",
2161 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2169 (
"hMassSplitPtNoOverlap",
"all pairs #it{M}: sum split sub-cluster #it{p}_{T} vs #it{M}, no overlap",
2170 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2176 (
"hSelectedMassSplitPtNoOverlap",
"Selected #pi^{0} (#eta) pairs #it{M}: sum split sub-cluster #it{p}_{T} vs #it{M}, no overlap",
2177 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2184 (
"hMCPi0PtRecoPtPrim",
"#it{p}_{T,reco} vs #it{p}_{T,gen}",
2185 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2191 (
"hMCPi0PtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} vs #it{p}_{T,gen}, no overlap",
2192 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2198 (
"hMCPi0SelectedPtRecoPtPrim",
"#it{p}_{T,reco} vs #it{p}_{T,gen}",
2199 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2205 (
"hMCPi0SelectedPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} vs #it{p}_{T,gen}, no overlap",
2206 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2213 (
"hMCPi0SplitPtRecoPtPrim",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}",
2214 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2220 (
"hMCPi0SplitPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, no overlap",
2221 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2227 (
"hMCPi0SelectedSplitPtRecoPtPrim",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}",
2228 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2234 (
"hMCPi0SelectedSplitPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, no overlap",
2235 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2241 (
"hMCEtaPtRecoPtPrim",
"#it{p}_{T,reco} vs #it{p}_{T,gen}",
2242 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2248 (
"hMCEtaPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} vs #it{p}_{T,gen}, no overlap",
2249 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2255 (
"hMCEtaSelectedPtRecoPtPrim",
"#it{p}_{T,reco} vs #it{p}_{T,gen}",
2256 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2262 (
"hMCEtaSelectedPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} vs #it{p}_{T,gen}, no overlap",
2263 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2270 (
"hMCEtaSplitPtRecoPtPrim",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}",
2271 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2277 (
"hMCEtaSplitPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, no overlap",
2278 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2284 (
"hMCEtaSelectedSplitPtRecoPtPrim",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}",
2285 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2291 (
"hMCEtaSelectedSplitPtRecoPtPrimNoOverlap",
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, no overlap",
2292 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2298 for(
Int_t inlm = 0; inlm < 3; inlm++)
2301 (Form(
"hMCPi0PtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2302 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2308 (Form(
"hMCPi0SelectedPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2309 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2315 (Form(
"hMCPi0SplitPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2316 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2322 (Form(
"hMCPi0SelectedSplitPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2323 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2329 (Form(
"hMCEtaPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2330 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2336 (Form(
"hMCEtaSelectedPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2337 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2343 (Form(
"hMCEtaSplitPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2344 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2350 (Form(
"hMCEtaSelectedSplitPtRecoPtPrimLocMax%d",inlm+1),Form(
"#it{p}_{T,reco} (split sum) vs #it{p}_{T,gen}, %s",nlm[inlm].
Data()),
2351 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2360 Form(
"cluster from %s : #it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} ) vs #it{E}",ptype[i].
Data()),
2361 nptbins,ptmin,ptmax, 200,-1,1);
2363 fhMCPtAsymmetry[i]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2367 (Form(
"hSplitE_MC%s",pname[i].
Data()),
2368 Form(
"cluster from %s, energy sum of split sub-clusters",ptype[i].
Data()),
2369 nptbins,ptmin,ptmax);
2375 (Form(
"hSplitPt_MC%s",pname[i].
Data()),
2376 Form(
"cluster from %s, #it{p}_{T} sum of split sub-clusters",ptype[i].
Data()),
2377 nptbins,ptmin,ptmax);
2379 fhMCSplitPt[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2384 (Form(
"hSplitPtPhi_MC%s",pname[i].
Data()),
2385 Form(
"Identified as #pi^{0} (#eta), cluster from %s",ptype[i].
Data()),
2386 nptbins,ptmin,ptmax,nphibins,phimin,phimax);
2392 (Form(
"hSplitPtEta_MC%s",pname[i].
Data()),
2393 Form(
"Identified as #pi^{0} (#eta), cluster from %s",
2394 ptype[i].
Data()),nptbins,ptmin,ptmax,netabins,etamin,etamax);
2401 (Form(
"hNLocMaxSplitPt_MC%s",pname[i].
Data()),
2402 Form(
"cluster from %s, #it{p}_{T} sum of split sub-clusters, for NLM",ptype[i].
Data()),
2403 nptbins,ptmin,ptmax,20,0,20);
2409 (Form(
"hMassSplitPt_MC%s",pname[i].
Data()),
2410 Form(
"all pairs #it{M}: split #it{p}_{T} vs #it{M} from %s",ptype[i].
Data()),
2411 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2417 (Form(
"hSelectedMassSplitPt_MC%s",pname[i].
Data()),
2418 Form(
"Selected #pi^{0} (#eta) pairs #it{M}: split #it{p}_{T} vs #it{M} from %s",ptype[i].
Data()),
2419 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2425 (Form(
"hMassSplitPtNoOverlap_MC%s",pname[i].
Data()),
2426 Form(
"all pairs #it{M}: split #it{p}_{T} vs #it{M} from %s, no overlap",ptype[i].
Data()),
2427 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2433 (Form(
"hSelectedMassSplitPtNoOverlap_MC%s",pname[i].
Data()),
2434 Form(
"Selected #pi^{0} (#eta) pairs #it{M}: split #it{p}_{T} vs #it{M} from %s, no overlap",ptype[i].
Data()),
2435 nptbins,ptmin,ptmax, nmassbins,massmin,massmax);
2445 for(
Int_t i = 0; i< 3; i++)
2448 Form(
"Selected #pi^{0} (#eta) pairs: #it{p}_{T} vs #it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} ), %s",nlm[i].
Data()),
2449 nptbins,ptmin,ptmax,200, -1,1);
2450 fhPtAsymmetryLocMax[i]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2455 for(
Int_t ie = 0; ie < 7; ie++)
2459 Form(
"#lambda_{0}^{2} vs A for %d < #it{E} < %d GeV",bin[ie],bin[ie+1]),
2460 ssbins,ssmin,ssmax , 200,-1,1);
2466 Form(
"#sigma^{2}_{#eta #eta} vs #it{A} for %d < #it{E} < %d GeV",bin[ie],bin[ie+1]),
2467 ssbins,ssmin,ssmax , 200,-1,1);
2469 fhAsymmetryDispEta[ie]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2473 Form(
"#sigma^{2}_{#phi #phi} vs #it{A} for %d < #it{E} < %d GeV",bin[ie],bin[ie+1]),
2474 ssbins,ssmin,ssmax , 200,-1,1);
2476 fhAsymmetryDispPhi[ie]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2485 for(
Int_t ie = 0; ie < 7; ie++)
2488 Form(
"cluster from %s : #lambda_{0}^{2} vs A for %d < #it{E} < %d GeV",ptype[i].
Data(),bin[ie],bin[ie+1]),
2489 ssbins,ssmin,ssmax , 200,-1,1);
2491 fhMCAsymmetryLambda0[ie][i]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2495 Form(
"cluster from %s : #sigma^{2}_{#eta #eta} vs #it{A} for %d < #it{E} < %d GeV",ptype[i].
Data(),bin[ie],bin[ie+1]),
2496 ssbins,ssmin,ssmax , 200,-1,1);
2498 fhMCAsymmetryDispEta[ie][i]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2502 Form(
"cluster from %s : #sigma^{2}_{#phi #phi} vs #it{A} for %d < #it{E} < %d GeV",ptype[i].
Data(),bin[ie],bin[ie+1]),
2503 ssbins,ssmin,ssmax , 200,-1,1);
2505 fhMCAsymmetryDispPhi[ie][i]->SetYTitle(
"#it{A} = ( #it{E}_{1} - #it{E}_{2} ) / ( #it{E}_{1} + #it{E}_{2} )");
2515 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
2517 for(
Int_t i = 0 ; i < 7 ; i++)
2519 fhPtPileUp[i] =
new TH1F(Form(
"hPtPileUp%s",pileUpName[i].
Data()),
2520 Form(
"Selected #pi^{0} (#eta) #it{p}_{T} distribution, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2521 fhPtPileUp[i]->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2525 Form(
"Pt vs cell time in cluster, %s Pile-Up event",pileUpName[i].
Data()),
2526 nptbins,ptmin,ptmax,ntimptbins,timemin,timemax);
2532 Form(
"Pt vs t_{max}-t_{cell} in cluster, %s Pile-Up event",pileUpName[i].
Data()),
2533 nptbins,ptmin,ptmax,400,-200,200);
2539 fhTimePtNoCut =
new TH2F (
"hTimePt_NoCut",
"#it{t} of cluster vs #it{E} of clusters, no cut", nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
2544 fhTimePtSPD =
new TH2F (
"hTimePt_SPD",
"#it{t} of cluster vs #it{E} of clusters, SPD cut", nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
2545 fhTimePtSPD->SetXTitle(
"#it{p}_{T} (GeV/#it{c})");
2549 fhTimePtSPDMulti =
new TH2F (
"hTimePt_SPDMulti",
"time of cluster vs #it{E} of clusters, SPD multi cut", nptbins,ptmin,ptmax, ntimptbins,timemin,timemax);
2554 fhTimeNPileUpVertSPD =
new TH2F (
"hTime_NPileUpVertSPD",
"#it{t} of cluster vs #it{N} pile-up SPD vertex", ntimptbins,timemin,timemax,50,0,50);
2559 fhTimeNPileUpVertTrack =
new TH2F (
"hTime_NPileUpVertTracks",
"#it{t} of cluster vs #it{N} pile-up Tracks vertex", ntimptbins,timemin,timemax, 50,0,50 );
2564 fhTimeNPileUpVertContributors =
new TH2F (
"hTime_NPileUpVertContributors",
"#it{t} of cluster vs #it{N} constributors to pile-up SPD vertex", ntimptbins,timemin,timemax,50,0,50);
2569 fhTimePileUpMainVertexZDistance =
new TH2F (
"hTime_PileUpMainVertexZDistance",
"#it{t} of cluster vs distance in #it{Z} pile-up SPD vertex - main SPD vertex",ntimptbins,timemin,timemax,100,0,50);
2574 fhTimePileUpMainVertexZDiamond =
new TH2F (
"hTime_PileUpMainVertexZDiamond",
"#it{t} of cluster vs distance in #it{Z} pile-up SPD vertex - z diamond",ntimptbins,timemin,timemax,100,0,50);
2579 fhPtNPileUpSPDVtx =
new TH2F (
"hPt_NPileUpVertSPD",
"#it{p}_{T} of cluster vs #it{N} pile-up SPD vertex",
2580 nptbins,ptmin,ptmax,20,0,20);
2585 fhPtNPileUpTrkVtx =
new TH2F (
"hPt_NPileUpVertTracks",
"#it{p}_{T} of cluster vs #it{N} pile-up Tracks vertex",
2586 nptbins,ptmin,ptmax, 20,0,20 );
2592 nptbins,ptmin,ptmax,20,0,20);
2597 fhPtNPileUpTrkVtxTimeCut =
new TH2F (
"hPt_NPileUpVertTracks_TimeCut",
"#it{p}_{T} of cluster vs N pile-up Tracks vertex, |tof| < 25 ns",
2598 nptbins,ptmin,ptmax, 20,0,20 );
2604 nptbins,ptmin,ptmax,20,0,20);
2609 fhPtNPileUpTrkVtxTimeCut2 =
new TH2F (
"hPt_NPileUpVertTracks_TimeCut2",
"#it{p}_{T} of cluster vs N pile-up Tracks vertex, -25 < tof < 75 ns",
2610 nptbins,ptmin,ptmax, 20,0,20 );
2625 for(
Int_t i = 0; i < nmsHistos->GetEntries(); i++) outputContainer->Add(nmsHistos->At(i)) ;
2630 return outputContainer ;
2685 if(label1 < 0 || label2 < 0 || label1 == label2) return ;
2687 AliDebug(0,Form(
"Origin of: photon1 %d; photon2 %d",tag1, tag2));
2696 Int_t ndaugh1 = -1, ndaugh2 = -1;
2702 TParticle * mother1 =
GetMCStack()->Particle(label1);
2703 label1 = mother1->GetFirstMother();
2705 pdg1=mother1->GetPdgCode();
2706 ndaugh1 = mother1->GetNDaughters();
2710 TParticle * mother2 =
GetMCStack()->Particle(label2);
2711 label2 = mother2->GetFirstMother();
2714 ndaugh2 = mother2->GetNDaughters();
2717 else if(
GetReader()->ReadAODMCParticles())
2722 label1 = mother1->GetMother();
2724 pdg1=mother1->GetPdgCode();
2725 ndaugh1 = mother1->GetNDaughters();
2730 label2 = mother2->GetMother();
2733 ndaugh2 = mother2->GetNDaughters();
2738 if ( label1 == label2 && label1 >= 0 && ndaugh1 == ndaugh2 && ndaugh1 == 2 )
2761 else if ( pdg1 == 221 )
2782 AliFatal(
"STOP: You want to use PHOS in analysis but it is not read!! \n!!Check the configuration file!!");
2784 AliFatal(
"STOP: You want to use EMCAL in analysis but it is not read!! \n!!Check the configuration file!!");
2817 AliDebug(1,Form(
"Start analysis type %d",
fAnaType));
2848 AliFatal(Form(
"No input calo photons in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
2861 AliVCluster *cluster1 = 0;
2862 AliVCluster *cluster2 = 0;
2865 for(
Int_t iphoton = 0; iphoton < nphoton-1; iphoton++ )
2867 AliAODPWG4Particle * photon1 = (AliAODPWG4Particle*) (
GetInputAODBranch()->At(iphoton));
2871 Int_t evtIndex1 = 0 ;
2874 evtIndex1 =
GetMixedEvent()->EventIndexForCaloCluster(photon1->GetCaloLabel(0)) ;
2883 cluster1 =
FindCluster(clusters,photon1->GetCaloLabel(0),iclus);
2885 if(!cluster1) AliWarning(
"First cluster not found");
2892 Float_t tof1 = photon1->GetTime();
2893 Int_t nMaxima1 = photon1->GetNLM();
2894 Int_t lab1 = photon1->GetLabel();
2895 Int_t tag1 = photon1->GetTag();
2896 Bool_t isolated1 = ((AliAODPWG4ParticleCorrelation*) photon1)->IsIsolated();
2898 for(
Int_t jphoton = iphoton+1; jphoton < nphoton; jphoton++ )
2900 AliAODPWG4Particle * photon2 = (AliAODPWG4Particle*) (
GetInputAODBranch()->At(jphoton));
2906 Bool_t isolated2 = ((AliAODPWG4ParticleCorrelation*) photon2)->IsIsolated();
2907 if(!isolated1 && !isolated2)
continue;
2912 Int_t evtIndex2 = 0 ;
2915 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(photon2->GetCaloLabel(0)) ;
2917 if(evtIndex1 == evtIndex2)
2927 Float_t tof2 = photon2->GetTime();
2928 Int_t nMaxima2 = photon2->GetNLM();
2934 if(angleOp >
DegToRad(100.))
continue;
2953 tag1, photon2->GetTag(),
2971 if(nMaxima1==nMaxima2)
2977 else if(nMaxima1==1 || nMaxima2==1)
2986 if(nMaxima1 == 1 && photon2->GetM02() > 0.3)
2989 if(nMaxima2 == 1 && photon1->GetM02() > 0.3)
2992 if(nMaxima1 > 1 && photon2->GetM02() < 0.3 && photon2->GetM02() > 0.1 )
2995 if(nMaxima2 > 1 && photon1->GetM02() < 0.3 && photon1->GetM02() > 0.1 )
3002 if((nMaxima1 < fNLMCutMin || nMaxima1 >
fNLMCutMax) || (nMaxima2 < fNLMCutMin || nMaxima2 >
fNLMCutMax))
3004 AliDebug(1,Form(
"NLM out of range: cluster1 %d, cluster2 %d",nMaxima1, nMaxima2));
3013 Float_t m02Ph1 = photon1->GetM02();
3014 Float_t m02Ph2 = photon2->GetM02();
3026 if(photon1->Pt() >= photon2->Pt())
3053 AliDebug(1,Form(
"Selected gamma pair: pt %f, phi %f, eta%f",
3060 Int_t bit1 = photon1->DecayTag();
3061 if( bit1 < 0 ) bit1 = 0 ;
3067 photon1->SetDecayTag(bit1);
3069 AliDebug(1,Form(
"\t Out %d", bit1));
3100 Int_t bit2 = photon2->DecayTag();
3101 if( bit2 < 0 ) bit2 = 0 ;
3107 photon2->SetDecayTag(bit2);
3109 AliDebug(1,Form(
"\t Out %d", bit2));
3119 cluster2 =
FindCluster(clusters,photon2->GetCaloLabel(0),iclus2,iclus+1);
3122 if(!cluster2) AliWarning(
"Second cluster not found");
3156 AliAODPWG4Particle pi0 = AliAODPWG4Particle(
fMomentum);
3162 AliWarning(
"Particle type declared in AliNeutralMeson not correct, do not add");
3165 pi0.SetDetectorTag(photon1->GetDetectorTag());
3168 pi0.SetLabel(label);
3172 pi0.SetCaloLabel(photon1->GetCaloLabel(0), photon2->GetCaloLabel(0));
3181 AliDebug(1,
"End fill AODs");
3196 AliFatal(Form(
"No input calo photons in AOD branch with name < %s > , STOP",
GetInputAODName().
Data()));
3201 if(!inputAODGammaConv)
3205 if(!inputAODGammaConv)
3207 AliFatal(Form(
"No input gamma conversions in AOD branch with name < %s >",
fInputAODGammaConvName.Data()));
3220 AliVCluster * cluster = 0;
3222 Int_t nCTS = inputAODGammaConv->GetEntriesFast();
3224 if(nCTS<=0 || nCalo <=0)
3226 AliDebug(1,Form(
"nCalo %d, nCTS %d, cannot loop",nCalo,nCTS));
3230 AliDebug(1,Form(
"Number of conversion photons %d and number of clusters %d",nCTS,nCalo));
3235 AliAODPWG4Particle * photon1 = (AliAODPWG4Particle*) (
GetInputAODBranch()->At(iphoton));
3242 Bool_t isolated1 = ((AliAODPWG4ParticleCorrelation*) photon1)->IsIsolated();
3243 if(!isolated1)
continue;
3250 cluster =
FindCluster(clusters,photon1->GetCaloLabel(0),iclus);
3252 if(!cluster) AliWarning(
"Cluster not found");
3258 Float_t m02 = photon1->GetM02();
3263 for(
Int_t jphoton = 0; jphoton < nCTS; jphoton++)
3265 AliAODPWG4Particle * photon2 = (AliAODPWG4Particle*) (inputAODGammaConv->At(jphoton));
3270 evtIndex =
GetMixedEvent()->EventIndexForCaloCluster(photon2->GetCaloLabel(0)) ;
3282 Int_t nMaxima = photon1->GetNLM();
3290 if(nMaxima < fNLMCutMin || nMaxima >
fNLMCutMax)
3292 AliDebug(1,Form(
"NLM %d out of range",nMaxima));
3302 Int_t label2 = photon2->GetLabel();
3306 photon1->GetTag() , photon2->GetTag(),
3315 if(photon1->Pt() >= photon2->Pt())
3339 Int_t bit1 = photon1->DecayTag();
3340 if( bit1 < 0 ) bit1 = 0 ;
3344 photon1->SetDecayTag(bit1);
3365 Int_t bit2 = photon2->DecayTag();
3366 if( bit2 < 0 ) bit2 = 0 ;
3370 photon2->SetDecayTag(bit2);
3387 AliAODPWG4Particle pi0 = AliAODPWG4Particle(
fMomentum);
3393 AliWarning(
"Particle type declared in AliNeutralMeson not correct, do not add");
3397 pi0.SetDetectorTag(photon1->GetDetectorTag());
3400 pi0.SetLabel(label);
3404 pi0.SetCaloLabel (photon1->GetCaloLabel(0) , -1);
3405 pi0.SetTrackLabel(photon2->GetTrackLabel(0), photon2->GetTrackLabel(1));
3414 AliDebug(1,
"End fill AODs");
3433 AliVCaloCells * cells = 0x0;
3443 AliFatal(
"kSSCalo case not implememted for PHOS");
3456 for(
Int_t icalo = 0; icalo < pl->GetEntriesFast(); icalo++)
3458 AliVCluster * calo = (AliVCluster*) (pl->At(icalo));
3460 Int_t evtIndex = 0 ;
3463 evtIndex=
GetMixedEvent()->EventIndexForCaloCluster(calo->GetID()) ;
3485 if(! in ) continue ;
3488 AliDebug(1,Form(
"Min pt cut and fiducial cut passed: pt %3.2f, phi %2.2f, eta %1.2f",
fMomentum.Pt(),
fMomentum.Phi(),
fMomentum.Eta()));
3497 AliDebug(1,Form(
"Origin of candidate %d",tag));
3503 Double_t distBad=calo->GetDistanceToBadChannel() ;
3504 if(distBad < 0.) distBad=9999. ;
3512 AliDebug(1,Form(
"Bad channel cut passed %4.2f",distBad));
3536 Int_t absId1 =-1, absId2 =-1;
3537 Float_t distbad1 =-1, distbad2 =-1;
3538 Bool_t fidcut1 = 0, fidcut2 = 0;
3549 AliDebug(1,Form(
"PDG of identified particle %d",idPartType));
3555 AliDebug(1,Form(
"Dist to bad channel cl %f, cl1 %f, cl2 %f; fid cl1 %d, cl2 %d",
3556 calo->GetDistanceToBadChannel(),distbad1,distbad2, fidcut1,fidcut2));
3563 if(nMaxima < fNLMCutMin || nMaxima >
fNLMCutMax)
3569 AliDebug(1,Form(
"NLM %d accepted",nMaxima));
3606 if(e1+e2 > 0) asy = (e1-e2) / (e1+e2);
3610 Int_t indexMax = -1;
3611 if (nMaxima==1) indexMax = 0 ;
3612 else if(nMaxima==2) indexMax = 1 ;
3618 Int_t noverlaps = 0;
3620 Int_t mesonLabel = -1;
3627 Int_t mcLabel = calo->GetLabel();
3646 const UInt_t nlabels = calo->GetNLabels();
3647 Int_t overpdg[nlabels];
3648 Int_t overlab[nlabels];
3697 AliDebug(1,
"Cluster is not Pi0");
3704 AliDebug(1,
"Cluster is not Eta");
3709 AliDebug(1,Form(
"Pi0/Eta selection cuts passed: pT %3.2f, pdg %d",
fMomentum.Pt(), idPartType));
3763 if(phi<0) phi+=TMath::TwoPi();
3772 Double_t tof1 = cells->GetCellTime(absId1);
3776 Double_t tof2 = cells->GetCellTime(absId2);
3816 Double_t tofcluster = calo->GetTOF()*1e9;
3826 AliAODPWG4Particle aodpi0 = AliAODPWG4Particle(
fMomentum);
3827 aodpi0.SetLabel(mesonLabel);
3830 aodpi0.SetCaloLabel(calo->GetID(),-1);
3833 if (distBad >
fMinDist3) aodpi0.SetDistToBad(2) ;
3834 else if(distBad >
fMinDist2) aodpi0.SetDistToBad(1) ;
3835 else aodpi0.SetDistToBad(0) ;
3838 aodpi0.SetIdentifiedParticleType(idPartType);
3842 aodpi0.SetNLM(nMaxima);
3843 aodpi0.SetTime(tofcluster);
3844 aodpi0.SetNCells(calo->GetNCells());
3845 aodpi0.SetSModNumber(nSM);
3854 AliDebug(1,
"End fill AODs");
3872 AliDebug(1,Form(
"AOD branch entries %d", naod));
3877 for(
Int_t iaod = 0; iaod < naod ; iaod++)
3880 Int_t pdg = pi0->GetIdentifiedParticleType();
3888 if(phi < 0) phi+=TMath::TwoPi();
3906 Int_t tag = pi0->GetTag();
3907 Int_t label = pi0->GetLabel();
3924 Int_t momlabel = -1;
3979 Int_t momindex = -1;
3981 Int_t momstatus = -1;
3985 TParticle* ancestor =
GetMCStack()->Particle(label);
3986 status = ancestor->GetStatusCode();
3987 momindex = ancestor->GetFirstMother();
3988 if(momindex < 0)
return;
3989 TParticle* mother =
GetMCStack()->Particle(momindex);
3990 mompdg = TMath::Abs(mother->GetPdgCode());
3991 momstatus = mother->GetStatusCode();
3992 prodR = mother->R();
3997 AliAODMCParticle* ancestor = (AliAODMCParticle *) mcparticles->At(label);
3998 status = ancestor->GetStatus();
3999 momindex = ancestor->GetMother();
4001 if(momindex < 0)
return;
4003 AliAODMCParticle* mother = (AliAODMCParticle *) mcparticles->At(momindex);
4004 mompdg = TMath::Abs(mother->GetPdgCode());
4005 momstatus = mother->GetStatus();
4006 prodR = TMath::Sqrt(mother->Xv()*mother->Xv()+mother->Yv()*mother->Yv());
4041 else if (mcIndex==
kmcEta )
4072 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4076 printf(
"Analysis Type = %d \n",
fAnaType) ;
4081 printf(
"Min Distance to Bad Channel = %2.1f\n",
fMinDist);
4082 printf(
"Min Distance to Bad Channel 2 = %2.1f\n",
fMinDist2);
4083 printf(
"Min Distance to Bad Channel 3 = %2.1f\n",
fMinDist3);
Bool_t IsPileUpFromSPD() const
virtual Bool_t IsFiducialCutOn() const
Float_t GetHistoPtMax() const
TString fInputAODGammaConvName
Name of AOD branch with conversion photons.
TH2F * fhPtDispersionLocMax[3]
! pT vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster
TH2F * fhMCEtaSelectedPtRecoPtPrimNoOverlap
! pt reco vs pt prim for eta mother
TH2F * fhMCPi0ProdVertex
! Spectrum of selected pi0 vs production vertex
TLorentzVector GetMotherWithPDG(Int_t label, Int_t pdg, const AliCaloTrackReader *reader, Bool_t &ok, Int_t &momLabel)
Bool_t fFillOnlySimpleSSHisto
Fill selected cluster histograms, selected SS histograms.
TH2F * fhMCMassPtNoOverlap[fgkNmcTypes]
! Pair pT vs Mass coming from X, no random particles overlap
TH2F * fhMCMassPt[fgkNmcTypes]
! Pair pT vs Mass coming from X
TH2F * fhSelectedMassPtLocMax[3]
! Pair mass vs pT, for selected pairs, for each NLM case
TH2F * fhMCPtDispersion[fgkNmcTypes]
! pT vs dispersion of pi0 pairs but really from MC particle
TH2F * fhPtNPileUpSPDVtxTimeCut2
! Cluster pt vs number of spd pile-up vertices, time cut +-75 ns
TH1F * fhMCPtDecay[fgkNmcTypes]
! pT from MC particle
TH2F * fhMCEtaPtRecoPtPrimLocMax[3]
! pt reco vs pt prim for eta mother, vs NLM
TH2F * fhPtLambda0NoTRD
! pT vs lambda0 of selected cluster, not behind TRD
Int_t GetHistoNClusterCellMin() const
Bool_t fFillWeightHistograms
Fill weigth histograms.
TH2F * fhdEdx
! Matched track dEdx vs cluster E
Float_t GetHistoPtMin() const
TList * GetCreateOutputObjects()
TH2F * fhTimePtSPDMulti
! Time of cluster vs pT, IsSPDPileUpMulti
Int_t GetHistoShowerShapeBins() const
virtual Int_t GetCalorimeter() const
Float_t GetHistodEdxMax() const
virtual void AddToHistogramsName(TString add)
virtual AliVCaloCells * GetEMCALCells() const
TH2F * fhSelectedMassPtLocMaxSM[3][22]
! Pair mass vs pT, for selected pairs, for each NLM case, for each SM
TH2F * fhPtDispPhiLocMax[3]
! pT vs phi dispersion of selected cluster, 1,2,>2 local maxima in cluster
anaTypes fAnaType
Select analysis type.
TH2F * fhPtDispEtaLocMax[3]
! pT vs eta dispersion of selected cluster, 1,2,>2 local maxima in cluster
virtual Bool_t IsDataMC() const
TH1F * fhPtReject
! Number of rejected as pi0/eta vs pT
TH2F * fhMassPtIsoRCut
! Pair mass vs pT, for all pairs when opening angle not larger than iso cone radius ...
Float_t fR
Isolation cone.
TH2F * fhPtCentrality
! Centrality vs pi0/eta pT
AliEMCALRecoUtils * GetEMCALRecoUtils() const
TH1F * fhMCPtDecayLostPairEta
! pT for tagged clustres when MC Eta Decay, when companion is lost
TH2F * fhMCPtLambda0FracMaxCellCut[fgkNmcTypes]
! pT vs lambda0 of pi0 pairs but really from MC particle, fraction of cluster energy in max cell cut ...
virtual Float_t GetPairTimeCut() const
Time cut in ns.
virtual AliStack * GetMCStack() const
TH2F * fhTimePtSPD
! Time of cluster vs pT, IsSPDPileUp
virtual void GetVertex(Double_t vertex[3]) const
TH2F * fhSelectedMassPt
! Pair mass vs pT, for selected pairs
TH2F * fhMCPtDispEta[fgkNmcTypes]
! Shower dispersion in eta direction
TH2F * fhTimeTriggerEMCALBC0UMReMatchBoth
! Time distribution of pi0s in event, when trigger is not found, rematched open both ...
virtual TString GetInputAODName() const
TH2F * fhMCPi0SelectedPtRecoPtPrimNoOverlap
! pt reco vs pt prim for pi0 mother
TH2F * fhNLocMaxSplitPt
! Split sub-cluster pair pT sum, as a function of n maxima
TH2F * fhEPairDiffTime
! E pair vs Pair of clusters time difference vs E
TH2F * fhMassSplitPtNoOverlap
! Pair mass vs pT (split), for all pairs, no overlap
TH1F * fhMCEReject[fgkNmcTypes]
! Number of rejected as pi0 vs E coming from X
TH2F * fhMCEtaDecayPtFraction
! SS id, clusters id as pi0 (eta), coming from 1 photon, eta decay primary, pt vs pt decay / pt mothe...
virtual AliVEvent * GetInputEvent() const
TH2F * fhPtDispEtaPhiDiffLocMax[3]
! pT vs dispersion eta - phi
TH2F * fhMCPi0SelectedPtRecoPtPrim
! pt reco vs pt prim for pi0 mother
TObjString * GetAnalysisCuts()
Save parameters used for analysis.
Bool_t fRejectTrackMatch
Remove clusters which have an associated TPC track.
TH2F * fhMCSelectedMassPt[fgkNmcTypes]
! selected pair pT vs Mass coming from X
TH2F * fhMCDispEtaDispPhi[7][fgkNmcTypes]
! Shower dispersion in eta direction vs phi direction for 5 E bins [0-2],[2-4],[4-6],[6-10],[> 10]
Int_t fNLMCutMin
Remove clusters/cells with number of local maxima smaller than this value.
Float_t DegToRad(Float_t deg) const
virtual AliIsolationCut * GetIsolationCut()
TH2F * fhMCLambda0DispPhi[7][fgkNmcTypes]
! Shower shape correlation l0 vs disp phi
TH2F * fhPtSumEtaPhi
! Shower dispersion in eta and phi direction
TH2F * fhMCNLocMaxPtReject[fgkNmcTypes]
! Number of maxima in selected clusters
TH2F * fhMCPi0SelectedSplitPtRecoPtPrimLocMax[3]
! pt split reco vs pt prim for pi0 mother, vs NLM
virtual Float_t GetZvertexCut() const
Maximal number of events for mixin.
TH2F * fhPtDispEta
! Shower dispersion in eta direction
virtual Double_t GetEventPlaneAngle() const
TH2F * fhPtPhiReject
! pT vs phi of rejected as pi0/eta
Double_t fTimeCutMax
Remove clusters/cells with time larger than this value, in ns.
TH1F * fhMCSplitPt[fgkNmcTypes]
! Number of identified as pi0 vs sum Pt split coming from X
TH2F * fhMCPi0PtRecoPtPrim
! pt reco vs pt prim for pi0 mother
virtual Bool_t IsTrackMatched(AliVCluster *cluster, AliVEvent *event)
TH2F * fhTrackMatchedMCParticleDPhi
! Trace origin of matched particle, phi residual
virtual Bool_t IsPileUpAnalysisOn() const
TH2F * fhMassPt
! Pair mass vs pT, for all pairs
TH2F * fhMCPi0PtStatus
! Mass of reoconstructed pi0 pairs in calorimeter vs mother
TH2F * fhSplitPtEta
! Split sub-cluster pair pT sum vs eta
void MakeAnalysisFillAOD()
virtual AliNeutralMesonSelection * GetNeutralMesonSelection()
Int_t GetHistoMassBins() const
Int_t GetHistoPhiBins() const
TH2F * fhEMaxCellClusterLogRatio
! Log (e max cell / e cluster) vs e cluster for selected photons
TH2F * fhEtaPhiEMCALBC0
! Pseudorapidity vs Phi of clusters
TH2F * fhMCAsymmetryDispPhi[7][fgkNmcTypes]
! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
TH2F * fhPtSphericityLocMax[3]
! pT vs sphericity in eta vs phi
Float_t GetHistoMassMin() const
void InitParameters()
Initialize the parameters of the analysis with default values.
TH2F * fhTimePileUpMainVertexZDiamond
! Time of cluster vs difference of z diamond and pile-up vertex
TH2F * fhTimeNPileUpVertContributors
! Time of cluster vs n pile-up vertex from SPD contributors
Select cluster pairs or single merged clusters with pi0 or eta invariant mass.
void MakeAnalysisFillHistograms()
TH2F * fhAsymmetryLambda0[7]
! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
void FillSelectedClusterHistograms(AliVCluster *cluster, Float_t pt, Int_t nLocMax, Int_t tag, Float_t asy=0)
Fill shower shape, timing and other histograms for selected clusters.
Float_t GetHistoTrackResidualPhiMin() const
TLorentzVector fMomentum
! Cluster/pi0 momentum, kinematic temporal containers.
virtual Int_t GetEventCentrality() const
Double_t fTimeCutMin
Remove clusters/cells with time smaller than this value, in ns.
Float_t fIsoCandMinPt
Isolation candidate minimum pT.
Float_t GetHistoTrackResidualEtaMin() const
2 calorimeter clusters invariant mass selection
Int_t GetHistoNClusterCellBins() const
Float_t fM02MinCutForIM
Study photon clusters with l0 larger than cut, in inv. mass analysis.
virtual TClonesArray * GetOutputAODBranch() const
TH2F * fhMCEtaProdVertex
! Spectrum of selected eta vs production vertex
Float_t GetHistoDiffTimeMin() const
TH2F * fhMCSelectedMassSplitPt[fgkNmcTypes]
! selected pair pT (split) vs Mass coming from X
TH2F * fhMCPtLambda0LocMax[fgkNmcTypes][3]
! pT vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster, vs originating particle ...
Int_t GetHistoPOverEBins() const
TH1F * fhMCSplitE[fgkNmcTypes]
! Number of identified as pi0 vs sum E split coming from X
TH1F * fhPt
! Number of identified pi0/eta vs pT
TH2F * fhMCPi0PtRecoPtPrimNoOverlap
! pt reco vs pt prim for pi0 mother
TH2F * fhSelectedLambda0PtLocMaxSM[3][22]
! Pair mass vs pT, for selected pairs, for each NLM case, for each SM
TH1F * fhMCPt[fgkNmcTypes]
! Number of identified as pi0 vs Pt coming from X
Float_t fMinDist3
One more cut on distance used for acceptance-efficiency study.
Float_t GetHistoPhiMin() const
TH2F * fhTrackMatchedDEtaDPhiNeg
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
void SetTagBit(Int_t &tag, UInt_t set) const
TH2F * fhPtLambda0
! pT vs lambda0 of selected cluster
Float_t GetHistoDiffTimeMax() const
static const Int_t fgkNmcTypes
Total number of MC origin histograms.
TH2F * fhEOverP
! Matched track E cluster over P track vs cluster E
TH2F * fhAsymmetryDispPhi[7]
! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
TH2F * fhTimeTriggerEMCALBC0UMReMatchOpenTime
! Time distribution of pi0s in event, when trigger is not found, rematched open time trigger ...
TH2F * fhPtSphericity
! Shower sphericity in eta vs phi
TH2F * fhEMaxCellClusterRatio
! E max cell / e cluster vs e cluster for selected photons
TString GetPIDParametersList()
Put data member values in string to keep in output container.
TLorentzVector GetMother(Int_t label, const AliCaloTrackReader *reader, Bool_t &ok)
TH2F * fhMCLambda0DispEta[7][fgkNmcTypes]
! Shower shape correlation l0 vs disp eta
TH2F * fhTrackMatchedDEta
! Eta distance between track and cluster vs cluster E
TH2F * fhEtaPhiTriggerEMCALBC[11]
! Pseudorapidity vs Phi of pi0 for E > 2
TH2F * fhMCPtDispPhi[fgkNmcTypes]
! Shower dispersion in phi direction
virtual TString GetOutputAODName() const
TH2F * fhAsymmetryDispEta[7]
! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
virtual Float_t GetMinEnergy() const
TH2F * fhMassPtMaxPair
! Pair mass vs pT max of the pair, for all pairs
TH2F * fhPtLambda0FracMaxCellCut
! pT vs lambda0 of selected cluster, fraction of cluster energy in max cell cut
TH1F * fhMCEtaDecayPt
! SS id, clusters id as pi0 (eta), coming from 1 photon, eta decay primary, pt
TH2F * fhTimeTriggerEMCALBCPileUpSPD[11]
! Time distribution of pi0, when trigger is in a given BC, tagged as pile-up SPD
Float_t GetHistoMassMax() const
TList * GetCreateOutputObjects()
TH2F * fhMCEtaSplitPtRecoPtPrimNoOverlap
! pt split reco vs pt prim for eta mother
Base class for CaloTrackCorr analysis algorithms.
void MakeInvMassInCalorimeterAndCTS()
TH2F * fhPtEta
! Pt vs eta of identified pi0/eta
1 calorimeter cluster and 1 photon conversion pair invariant mass selection
virtual TString GetCalorimeterString() const
TH2F * fhPtNCells
! pT vs N cells in selected cluster
void FillEMCALBCHistograms(Float_t energy, Float_t eta, Float_t phi, Float_t time)
TH1F * fhMCOtherDecayPt
! SS id, clusters id as pi0 (eta), coming from 1 photon, other decay primary, pt
TH2F * fhTimePileUpMainVertexZDistance
! Time of cluster vs difference of z main vertex and pile-up vertex
Float_t GetHistodEdxMin() const
virtual AliFiducialCut * GetFiducialCut()
UInt_t GetDecayBit() const
TH2F * fhPtDispersion
! pT vs disp of selected cluster
TH2F * fhMCAsymmetryLambda0[7][fgkNmcTypes]
! E asymmetry of 2 splitted clusters vs lam0 for 5 E bins
virtual TClonesArray * GetInputAODBranch() const
TH2F * fhMCEtaPtRecoPtPrim
! pt reco vs pt prim for eta mother
TH2F * fhMCSplitPtPhi[fgkNmcTypes]
! pt vs phi of identified as pi0, coming from X
TH2F * fhNLocMaxPtReject
! Number of maxima in selected clusters
TH1F * fhPtPileUp[7]
! pT distribution of selected pi0/eta
TH2F * fhMCSelectedMassSplitPtNoOverlap[fgkNmcTypes]
! selected pair pT (split) vs Mass coming from X, no random particles overlap
virtual TClonesArray * GetAODMCParticles() const
virtual AliHistogramRanges * GetHistogramRanges()
TH2F * fhMCEtaSelectedSplitPtRecoPtPrimLocMax[3]
! pt split reco vs pt prim for eta mother, vs NLM
Int_t GetHistoDiffTimeBins() const
TH2F * fhMCSelectedMassPtNoOverlap[fgkNmcTypes]
! selected pair pT vs Mass coming from X, no random particles overlap
Float_t GetHistoTrackResidualPhiMax() const
Bool_t fCheckSplitDistToBad
Check the distance to bad channel and to EMCal borders of split clusters.
TH2F * fhMCEtaPtGenRecoFraction
! SS id, clusters id as pi0 (eta), coming from 2 photon, eta primary, pt vs E prim eta / E reco ...
TH2F * fhMCPi0SelectedSplitPtRecoPtPrim
! pt split reco vs pt prim for pi0 mother
TH2F * fhPtLambda0LocMax[3]
! pT vs lambda0 of selected cluster, 1,2,>2 local maxima in cluster
TH2F * fhEtaPhi
! eta vs phi of identified pi0/eta
TH2F * fhMCPtLambda1[fgkNmcTypes]
! pT vs lambda1 of pi0 pairs but really from MC particle
TH2F * fhTrackMatchedDPhiPos
! Phi distance between track and cluster vs cluster E
TH2F * fhMCPtPhi[fgkNmcTypes]
! pt vs phi of identified as pi0, coming from X
virtual AliEMCALGeometry * GetEMCALGeometry() const
TH2F * fhMCEtaSplitPtRecoPtPrim
! pt split reco vs pt prim for eta mother
TH2F * fhPtEventPlane
! Event plane vs pi0/eta pT
TH2F * fhMCNLocMaxPt[fgkNmcTypes]
! Number of maxima in selected clusters, vs originating particle
TH2F * fhPtEtaReject
! pT vs eta of rejected as pi0/eta
TH2F * fhMCEtaSelectedSplitPtRecoPtPrim
! pt split reco vs pt prim for eta mother
TH2F * fhMCEtaSelectedPtRecoPtPrimLocMax[3]
! pt reco vs pt prim for eta mother, vs NLM
Bool_t IsInFiducialCut(Float_t eta, Float_t phi, Int_t det) const
Int_t CheckOrigin(Int_t label, const AliCaloTrackReader *reader, Int_t calorimeter)
virtual AliAODEvent * GetOutputEvent() const
TH2F * fhSelectedAsymmetry
! Cluster pT vs asymmetry of 2 splitted clusters, for selected pairs
TH2F * fhEtaPhiReject
! eta vs phi of rejected as pi0/eta
virtual Bool_t NewOutputAOD() const
Float_t GetHistoShowerShapeMin() const
void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
TH1F * fhPtDecay
! Number of identified pi0/eta decay photons vs pT
TH2F * fhMCPi0SplitPtRecoPtPrimNoOverlap
! pt split reco vs pt prim for pi0 mother
TH2F * fhLambda0DispEta[7]
! Shower shape correlation l0 vs disp eta
TLorentzVector fMomentum1
! Cluster/photon momentum, kinematic temporal containers.
TH2F * fhPtSumPhi
! Shower dispersion in phi direction
Int_t GetHistodEdxBins() const
virtual AliCalorimeterUtils * GetCaloUtils() const
TH2F * fhMCPtEta[fgkNmcTypes]
! pt vs eta of identified as pi0, coming from X
Int_t GetHistoNClusterCellMax() const
TH2F * fhMassPtNoOverlap
! Pair mass vs pT, for all pairs, no overlap
Int_t GetHistoTrackResidualEtaBins() const
TH2F * fhMCPtAsymmetry[fgkNmcTypes]
! E asymmetry of 2 splitted clusters vs cluster pT
TH2F * fhMCEtaSelectedPtRecoPtPrim
! pt reco vs pt prim for eta mother
Int_t GetTriggerClusterBC() const
TH2F * fhEtaPhiEMCALBCN
! Pseudorapidity vs Phi of clusters
TH2F * fhMCSplitPtEta[fgkNmcTypes]
! pt vs eta of identified as pi0, coming from X
Int_t GetClusterSplittingMinNCells() const
Int_t GetHistoTrackResidualPhiBins() const
Int_t GetNumberOfSuperModulesUsed() const
virtual Bool_t IsHighMultiplicityAnalysisOn() const
TH2F * fhMCPi0SelectedPtRecoPtPrimLocMax[3]
! pt reco vs pt prim for pi0 mother, vs NLM
TLorentzVector fGrandMotherMom
! Primary momentum, kinematic temporal containers.
TH2F * fhMCEtaPtRecoPtPrimNoOverlap
! pt reco vs pt prim for eta mother
TH2F * fhMassPairMCEta
! Pair mass, origin is same eta
virtual Double_t GetEventWeight() const
TH2F * fhPtSumEtaPhiLocMax[3]
! pT vs dispersion in eta and phi direction
TH2F * fhPtNPileUpSPDVtx
! Cluster pt vs number of spd pile-up vertices
TH2F * fhPtNPileUpTrkVtxTimeCut2
! Cluster pt vs number of track pile-up vertices, time cut +- 75 ns
TH2F * fhMassPtMinPair
! Pair mass vs pT min of the pair, for all pairs
virtual AliCaloPID * GetCaloPID()
Bool_t SelectPair(TLorentzVector particlei, TLorentzVector particlej, Int_t calo)
TH2F * fhMCEtaPtOrigin
! Mass of reoconstructed pi0 pairs in calorimeter vs mother
TH2F * fhMCPi0PtGenRecoFraction
! SS id, clusters id as pi0 (eta), coming from 2 photon, pi0 primary, pt vs E prim pi0 / E reco ...
TH1F * fhMCE[fgkNmcTypes]
! Number of identified as pi0 vs E coming from X
TH2F * fhPtTimeDiffPileUp[7]
! pT vs Time difference inside cluster, before any selection
virtual TObjArray * GetPHOSClusters() const
TH2F * fhMCPtCentrality[fgkNmcTypes]
! Centrality vs pi0/eta pT coming from X
Float_t GetHistoEtaMin() const
TH2F * fhMCPi0SplitPtRecoPtPrim
! pt split reco vs pt prim for pi0 mother
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 * fhEtaPhiTriggerEMCALBCUM[11]
! Pseudorapidity vs Phi of pi0 for E > 2, not matched to trigger
TH2F * fhTrackMatchedDEtaDPhi
! Eta vs Phi distance between track and cluster, E cluster > 0.5 GeV
TH2F * fhMCEtaSelectedSplitPtRecoPtPrimNoOverlap
! pt split reco vs pt prim for eta mother
Float_t fNLMECutMin[3]
Minimum energy of the cluster, depending on NLM.
TH2F * fhMCPtSphericity[fgkNmcTypes]
! Shower sphericity, eta vs phi
TH2F * fhMCPtLambda0[fgkNmcTypes]
! pT vs lambda0 of pi0 pairs but really from MC particle
TH2F * fhECellClusterLogRatio
! Log (e cell / e cluster) vs e cluster for selected photons
virtual Int_t GetModuleNumber(AliAODPWG4Particle *part) const
TH2F * fhMassPtLocMax[3]
! Pair mass vs pT, for all pairs, for each NLM case
TH2F * fhPtAsymmetryLocMax[3]
! E asymmetry of 2 splitted clusters vs cluster E for different NLM
TH2F * fhPtTime
! pT vs Time of selected cluster
TH2F * fhPtFracMaxCellNoTRD
! pT vs frac max cell of selected cluster, not behind TRD
void SetDecayBit(Int_t &tag, UInt_t set) const
TH2F * fhTrackMatchedDEtaNeg
! Eta distance between track and cluster vs cluster E
TH2F * fhTrackMatchedMCParticlePt
! Trace origin of matched particle, energy
TH2F * fhMassPairMCPi0
! Pair mass, origin is same pi0
TH2F * fhPtNPileUpTrkVtx
! Cluster pt vs number of track pile-up vertices
TH2F * fhMassNoOverlap
! Pair mass vs E, for all pairs, no overlap
TH2F * fhMCNLocMaxSplitPt[fgkNmcTypes]
! Number of identified as pi0 vs sum Pt split coming from X, for different NLM
TH2F * fhLambda0ForW0[14]
! L0 for 7 defined w0= 3, 3.5 ... 6 for selected photons
Float_t fM02MaxCutForIM
Study photon clusters with l0 smaller than cut, in inv. mass analysis.
Float_t GetHistoEtaMax() const
virtual void AddAODParticle(AliAODPWG4Particle part)
TH2F * fhAnglePairMCEta
! Pair opening angle, origin is same eta
Int_t GetNOverlaps(const Int_t *label, UInt_t nlabels, Int_t mctag, Int_t mesonLabel, AliCaloTrackReader *reader, Int_t *overpdg, Int_t *overlabel)
TH2F * fhPtLambda1LocMax[3]
! pT vs lambda1 of selected cluster, 1,2,>2 local maxima in cluster
TH2F * fhMCPtFracMaxCell[fgkNmcTypes]
! pT vs fraction of max cell
Int_t GetHistoPtBins() const
Bool_t fFillSelectClHisto
Fill selected cluster histograms.
TH2F * fhNLocMaxPt
! number of maxima in selected clusters
TH2F * fhMCMassSplitPt[fgkNmcTypes]
! Pair pT (split) vs Mass coming from X
void FillWeightHistograms(AliVCluster *clus)
Calculate cluster energy weights and fill histograms.
TH2F * fhSelectedMassPtNoOverlap
! Pair mass vs pT, for selected pairs, no overlap
Bool_t fFillAllNLMHistograms
Fill all NLM dependent histograms.