20 #include <TDatabasePDG.h>
21 #include "TParticle.h"
22 #include <TClonesArray.h>
24 #include <TObjString.h>
30 #include "AliAODPWG4ParticleCorrelation.h"
32 #include "AliVTrack.h"
33 #include "AliVCluster.h"
35 #include "TParticle.h"
37 #include "AliAODMCParticle.h"
38 #include "AliMixedEvent.h"
39 #include "AliAnalysisManager.h"
40 #include "AliInputEventHandler.h"
41 #include "AliEventplane.h"
43 #include "AliESDEvent.h"
44 #include "AliAODEvent.h"
47 #include "AliEMCALGeometry.h"
48 #include "AliPHOSGeoUtils.h"
60 fFillAODWithReferences(0), fCheckLeadingWithNeutralClusters(0),
61 fMaxAssocPt(1000.), fMinAssocPt(0.),
62 fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.),
63 fSelectIsolated(0), fMakeSeveralUE(0),
64 fUeDeltaPhiMaxCut(0.), fUeDeltaPhiMinCut(0.),
65 fPi0AODBranchName(
""), fNeutralCorr(0),
66 fPi0Trigger(0), fDecayTrigger(0),
67 fNDecayBits(0), fDecayBits(),
68 fMakeAbsoluteLeading(0), fMakeNearSideLeading(0),
69 fLeadingTriggerIndex(-1), fHMPIDCorrelation(0), fFillBradHisto(0),
70 fNAssocPtBins(0), fAssocPtBinLimit(),
72 fListMixTrackEvents(), fListMixCaloEvents(),
73 fUseMixStoredInReader(0), fFillNeutralEventMixPool(0),
74 fM02MaxCut(0), fM02MinCut(0),
75 fSelectLeadingHadronAngle(0), fFillLeadHadOppositeHisto(0),
76 fMinLeadHadPhi(0), fMaxLeadHadPhi(0),
77 fMinLeadHadPt(0), fMaxLeadHadPt(0),
78 fFillEtaGapsHisto(1), fFillMomImbalancePtAssocBinsHisto(0),
79 fFillInvMassHisto(0), fFillBkgBinsHisto(0),
80 fMCGenTypeMin(0), fMCGenTypeMax(0),
81 fTrackVector(), fMomentum(), fMomentumIM(),
82 fDecayMom1(), fDecayMom2(),
84 fhPtTriggerInput(0), fhPtTriggerSSCut(0),
85 fhPtTriggerIsoCut(0), fhPtTriggerFidCut(0),
86 fhPtTrigger(0), fhPtTriggerVtxBC0(0),
87 fhPtTriggerVzBin(0), fhPtTriggerBin(0),
88 fhPhiTrigger(0), fhEtaTrigger(0),
90 fhPtDecayTrigger(), fhPtDecayTriggerMC(),
91 fhPtTriggerCentrality(0), fhPtTriggerEventPlane(0),
92 fhTriggerEventPlaneCentrality(0),
93 fhPtTriggerMixed(0), fhPtTriggerMixedVzBin(0), fhPtTriggerMixedBin(0),
94 fhPhiTriggerMixed(0), fhEtaTriggerMixed(0),
95 fhPtLeadingOppositeHadron(0), fhPtDiffPhiLeadingOppositeHadron(0), fhPtDiffEtaLeadingOppositeHadron(0),
96 fhPtNoLeadingOppositeHadron(0), fhEtaPhiNoLeadingOppositeHadron(0),
97 fhDeltaPhiDeltaEtaCharged(0),
98 fhPhiCharged(0), fhEtaCharged(0),
99 fhDeltaPhiCharged(0), fhDeltaEtaCharged(0),
100 fhDeltaPhiChargedPt(0), fhDeltaPhiUeChargedPt(0),
102 fhXECharged(0), fhXECharged_Cone2(0), fhXEUeCharged(0),
103 fhXEPosCharged(0), fhXENegCharged(0),
104 fhPtHbpXECharged(0), fhPtHbpXECharged_Cone2(0), fhPtHbpXEUeCharged(0),
105 fhZTCharged(0), fhZTUeCharged(0),
106 fhZTPosCharged(0), fhZTNegCharged(0),
107 fhPtHbpZTCharged(0), fhPtHbpZTUeCharged(0),
108 fhXEChargedMC(), fhDeltaPhiChargedMC(),
109 fhXEUeChargedLeftMC(), fhXEUeChargedRightMC(),
110 fhDeltaPhiDeltaEtaChargedPtA3GeV(0),
111 fhDeltaPhiChargedPtA3GeV(0), fhDeltaEtaChargedPtA3GeV(0),
113 fhDeltaPhiChargedPileUp(), fhDeltaEtaChargedPileUp(),
114 fhDeltaPhiChargedPtA3GeVPileUp(), fhDeltaEtaChargedPtA3GeVPileUp(),
115 fhXEChargedPileUp(), fhXEUeChargedPileUp(),
116 fhZTChargedPileUp(), fhZTUeChargedPileUp(),
117 fhPtTrigChargedPileUp(),
118 fhDeltaPhiChargedOtherBC(), fhDeltaPhiChargedPtA3GeVOtherBC(),
119 fhXEChargedOtherBC(), fhXEUeChargedOtherBC(),
120 fhZTChargedOtherBC(), fhZTUeChargedOtherBC(),
121 fhPtTrigChargedOtherBC(),
122 fhDeltaPhiChargedBC0(), fhDeltaPhiChargedPtA3GeVBC0(),
123 fhXEChargedBC0(), fhXEUeChargedBC0(),
124 fhZTChargedBC0(), fhZTUeChargedBC0(),
125 fhPtTrigChargedBC0(),
126 fhDeltaPhiChargedVtxBC0(), fhDeltaPhiChargedPtA3GeVVtxBC0(),
127 fhXEChargedVtxBC0(), fhXEUeChargedVtxBC0(),
128 fhZTChargedVtxBC0(), fhZTUeChargedVtxBC0(),
129 fhPtTrigChargedVtxBC0(),
130 fhDeltaPhiUeLeftCharged(0),
131 fhDeltaPhiUeLeftUpCharged(0), fhDeltaPhiUeRightUpCharged(0),
132 fhDeltaPhiUeLeftDownCharged(0), fhDeltaPhiUeRightDownCharged(0),
133 fhXEUeLeftCharged(0),
134 fhXEUeLeftUpCharged(0), fhXEUeRightUpCharged(0),
135 fhXEUeLeftDownCharged(0), fhXEUeRightDownCharged(0),
136 fhPtHbpXEUeLeftCharged(0), fhZTUeLeftCharged(0),
137 fhPtHbpZTUeLeftCharged(0),
138 fhPtTrigPout(0), fhPtTrigCharged(0),
139 fhDeltaPhiChargedMult(0x0), fhDeltaEtaChargedMult(0x0),
140 fhXEMult(0x0), fhXEUeMult(0x0),
141 fhZTMult(0x0), fhZTUeMult(0x0),
142 fhAssocPtBkg(0), fhDeltaPhiDeltaEtaAssocPtBin(0),
143 fhDeltaPhiAssocPtBin(0),
144 fhDeltaPhiAssocPtBinDEta08(0), fhDeltaPhiAssocPtBinDEta0(0),
145 fhDeltaPhiAssocPtBinHMPID(0), fhDeltaPhiAssocPtBinHMPIDAcc(0),
146 fhDeltaPhiBradAssocPtBin(0), fhDeltaPhiBrad(0),
147 fhXEAssocPtBin(0), fhZTAssocPtBin(0),
148 fhXEVZ(0), fhZTVZ(0),
149 fhDeltaPhiDeltaEtaNeutral(0),
150 fhPhiNeutral(0), fhEtaNeutral(0),
151 fhDeltaPhiNeutral(0), fhDeltaEtaNeutral(0),
152 fhDeltaPhiNeutralPt(0), fhDeltaPhiUeNeutralPt(0),
153 fhXENeutral(0), fhXEUeNeutral(0),
154 fhPtHbpXENeutral(0), fhPtHbpXEUeNeutral(0),
155 fhZTNeutral(0), fhZTUeNeutral(0),
156 fhPtHbpZTNeutral(0), fhPtHbpZTUeNeutral(0),
157 fhDeltaPhiUeLeftNeutral(0), fhXEUeLeftNeutral(0),
158 fhPtHbpXEUeLeftNeutral(0), fhZTUeLeftNeutral(0),
159 fhPtHbpZTUeLeftNeutral(0), fhPtPi0DecayRatio(0),
160 fhDeltaPhiPi0DecayCharged(0), fhXEPi0DecayCharged(0), fhZTPi0DecayCharged(0),
161 fhDeltaPhiPi0DecayNeutral(0), fhXEPi0DecayNeutral(0), fhZTPi0DecayNeutral(0),
162 fhDeltaPhiDecayCharged(), fhXEDecayCharged(), fhZTDecayCharged(),
163 fhDeltaPhiDecayChargedAssocPtBin(),
164 fhMCPtTrigger(), fhMCPhiTrigger(), fhMCEtaTrigger(),
165 fhMCPtTriggerNotLeading(), fhMCPhiTriggerNotLeading(), fhMCEtaTriggerNotLeading(),
166 fhMCEtaCharged(), fhMCPhiCharged(),
167 fhMCDeltaEtaCharged(), fhMCDeltaPhiCharged(),
168 fhMCDeltaPhiDeltaEtaCharged(), fhMCDeltaPhiChargedPt(),
169 fhMCPtXECharged(), fhMCPtXEUeCharged(),
170 fhMCPtXEUeLeftCharged(),
171 fhMCPtHbpXECharged(), fhMCPtHbpXEUeCharged(),
172 fhMCPtHbpXEUeLeftCharged(),
174 fhMCPtZTCharged(), fhMCPtZTUeCharged(),
175 fhMCPtZTUeLeftCharged(),
176 fhMCPtHbpZTCharged(), fhMCPtHbpZTUeCharged(),
177 fhMCPtHbpZTUeLeftCharged(),
178 fhMCPtTrigPout(), fhMCPtAssocDeltaPhi(),
180 fhNEventsTrigger(0), fhNtracksMB(0), fhNclustersMB(0),
181 fhMixDeltaPhiCharged(0), fhMixDeltaPhiDeltaEtaCharged(0),
182 fhMixXECharged(0), fhMixXEUeCharged(0), fhMixHbpXECharged(0),
183 fhMixDeltaPhiChargedAssocPtBin(),
184 fhMixDeltaPhiChargedAssocPtBinDEta08(),
185 fhMixDeltaPhiChargedAssocPtBinDEta0(),
186 fhMixDeltaPhiDeltaEtaChargedAssocPtBin(),
187 fhEventBin(0), fhEventMixBin(0), fhEventMBBin(0),
188 fhMassPtTrigger(0), fhMCMassPtTrigger(),
189 fhPtLeadInConeBin(), fhPtSumInConeBin()
208 for(Int_t i = 0; i < 7; i++)
268 Float_t phiAssoc, Float_t phiTrig, Float_t deltaPhi,
269 Float_t etaAssoc, Float_t etaTrig,
270 Int_t decayTag, Float_t hmpidSignal, Int_t outTOF,
271 Int_t cen, Int_t mcTag)
273 Float_t deltaEta = etaTrig-etaAssoc;
274 Float_t deltaPhiOrg = phiTrig-phiAssoc;
306 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
322 if(
GetReader()->IsPileUpFromSPDOrEMCal())
327 if(
GetReader()->IsPileUpFromSPDAndEMCal())
332 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
337 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
342 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
360 if(
GetReader()->IsPileUpFromSPDOrEMCal())
365 if(
GetReader()->IsPileUpFromSPDAndEMCal())
370 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
375 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
380 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
410 Double_t dphiBrad = -100;
413 dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();
414 if( TMath::Abs(dphiBrad) > 0.325 && TMath::Abs(dphiBrad) < 0.475 )
419 if( dphiBrad < -1./3 ) dphiBrad += 2;
432 if(TMath::Abs(deltaEta)> 0.8)
435 if(TMath::Abs(deltaEta)< 0.01)
450 if( hmpidSignal > 0 )
456 if(phiAssoc > 5*TMath::DegToRad() && phiAssoc < 20*TMath::DegToRad())
476 Float_t mcTrigPt, Float_t mcTrigPhi, Float_t mcTrigEta,
477 Int_t histoIndex, Bool_t lostDecayPair)
488 if( mcAssocPhi < 0 ) mcAssocPhi+=TMath::TwoPi();
490 Float_t mcdeltaPhi= mcTrigPhi-mcAssocPhi;
491 if(mcdeltaPhi <= -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi();
492 if(mcdeltaPhi > 3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi();
496 if( mcAssocPt > mcTrigPt && mcdeltaPhi < TMath::PiOver2() ) lead = kFALSE;
501 if ( mcAssocPt < fMinAssocPt || mcAssocPt >
fMaxAssocPt )
return lead ;
502 if ( mcAssocPt <
GetReader()->GetCTSPtMin())
return lead ;
507 if(TMath::Abs(mcAssocPt -mcTrigPt ) < 1e-6 &&
509 TMath::Abs(mcAssocEta-mcTrigEta) < 1e-6)
return lead ;
511 Float_t mcxE =-mcAssocPt/mcTrigPt*TMath::Cos(mcdeltaPhi);
512 Float_t mchbpXE =-100 ;
513 if(mcxE > 0 ) mchbpXE = TMath::Log(1./mcxE);
515 Float_t mczT = mcAssocPt/mcTrigPt ;
516 Float_t mchbpZT =-100 ;
517 if(mczT > 0 ) mchbpZT = TMath::Log(1./mczT);
519 Double_t mcpout = mcAssocPt*TMath::Sin(mcdeltaPhi) ;
521 AliDebug(1,Form(
"Charged hadron: track Pt %f, track Phi %f, phi trigger %f. Cuts: delta phi %2.2f < %2.2f < %2.2f",
600 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
601 Double_t mcUezT = mcAssocPt/mcTrigPt;
604 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
649 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
650 Double_t mcUezT = mcAssocPt/mcTrigPt;
653 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
696 Int_t bin, Int_t decayTag,
697 Int_t outTOF, Int_t mcTag)
700 Float_t zT = ptAssoc/ptTrig ;
701 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(deltaPhi);
702 Float_t pout = ptAssoc*TMath::Sin(deltaPhi) ;
705 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
708 Float_t hbpXE = -100;
709 Float_t hbpZT = -100;
711 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
712 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
721 if((deltaPhi > 5*TMath::Pi()/6.) && (deltaPhi < 7*TMath::Pi()/6.))
758 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
777 if(
GetReader()->IsPileUpFromSPDOrEMCal())
783 if(
GetReader()->IsPileUpFromSPDAndEMCal())
789 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
795 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
801 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
857 Float_t deltaPhi, Int_t cen, Int_t outTOF, Int_t mcTag)
864 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
865 Double_t uezT = ptAssoc/ptTrig;
868 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
906 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
922 if(
GetReader()->IsPileUpFromSPDOrEMCal())
927 if(
GetReader()->IsPileUpFromSPDAndEMCal())
932 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
937 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
942 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
971 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
972 Double_t uezT = ptAssoc/ptTrig;
975 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1005 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1008 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1019 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1022 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1033 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1036 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1047 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1050 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1066 Float_t zTDecay1 = -100, zTDecay2 = -100;
1067 if(ptDecay1 > 0) zTDecay1 = ptAssoc/ptDecay1 ;
1068 if(ptDecay2 > 0) zTDecay2 = ptAssoc/ptDecay2 ;
1070 Float_t deltaPhiDecay1 =
fDecayMom1.Phi()-phiAssoc;
1071 if(deltaPhiDecay1< -TMath::PiOver2()) deltaPhiDecay1+=TMath::TwoPi();
1072 if(deltaPhiDecay1>3*TMath::PiOver2()) deltaPhiDecay1-=TMath::TwoPi();
1074 Float_t deltaPhiDecay2 =
fDecayMom2.Phi()-phiAssoc;
1075 if(deltaPhiDecay2< -TMath::PiOver2()) deltaPhiDecay2+=TMath::TwoPi();
1076 if(deltaPhiDecay2>3*TMath::PiOver2()) deltaPhiDecay2-=TMath::TwoPi();
1078 Float_t xEDecay1 =-zTDecay1*TMath::Cos(deltaPhiDecay1);
1079 Float_t xEDecay2 =-zTDecay2*TMath::Cos(deltaPhiDecay2);
1081 if(bChargedOrNeutral)
1086 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1104 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1124 Float_t zT, Float_t hbpZT,
1129 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(randomphi);
1130 Float_t hbpXE = -100;
1131 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
1172 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1173 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1175 if(!inputHandler) return ;
1183 if(eventBin < 0)
return;
1187 TObjArray * mixEventTracks =
new TObjArray;
1200 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1202 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1204 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1208 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1210 AliAODPWG4Particle * mixedTrack =
new AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),0);
1211 mixedTrack->SetDetectorTag(
kCTS);
1212 mixedTrack->SetChargedBit(track->Charge()>0);
1213 mixEventTracks->Add(mixedTrack);
1222 pool->AddFirst(mixEventTracks);
1230 TClonesArray * tmp =
static_cast<TClonesArray*
>(pool->Last()) ;
1231 pool->RemoveLast() ;
1254 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1255 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1257 if(!inputHandler) return ;
1265 if(eventBin < 0)
return;
1267 TObjArray * mixEventCalo =
new TObjArray;
1278 for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ )
1280 AliVCluster * calo = (AliVCluster *) (pl->At(ipr)) ;
1292 Double_t vertex[]={0,0,0};
1299 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1301 AliAODPWG4Particle * mixedCalo =
new AliAODPWG4Particle(
fMomentum);
1302 mixedCalo->SetDetectorTag(
kEMCAL);
1303 mixEventCalo->Add(mixedCalo);
1312 poolCalo->AddFirst(mixEventCalo);
1320 TClonesArray * tmp =
static_cast<TClonesArray*
>(poolCalo->Last()) ;
1321 poolCalo->RemoveLast() ;
1332 Float_t etaTrig = particle->Eta();
1333 Float_t ptTrig = particle->Pt();
1334 Float_t phiTrig = particle->Phi();
1335 if(phiTrig < 0 ) phiTrig+= TMath::TwoPi();
1337 Float_t ptLeadHad = 0 ;
1338 Float_t dphiLeadHad= -100 ;
1339 Float_t phiLeadHad = -100 ;
1340 Float_t etaLeadHad = -100 ;
1343 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1345 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1347 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1351 if(phi < 0 ) phi+= TMath::TwoPi();
1353 Float_t deltaPhi = phiTrig-phi;
1359 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1360 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1362 if(pt > ptLeadHad && deltaPhi > TMath::PiOver2())
1366 dphiLeadHad= deltaPhi;
1388 AliDebug(1,Form(
"pT %2.2f, phi %2.2f, eta %2.2f, nTracks away %d, total tracks %d",
1390 AliDebug(1,Form(
"\t pT trig %2.2f, Dphi (trigger-hadron) %2.2f, Deta (trigger-hadron) %2.2f",
1391 ptTrig, dphiLeadHad*TMath::RadToDeg(), etaLeadHad-etaTrig));
1392 AliDebug(1,Form(
"\t cuts pT: min %2.2f, max %2.2f; DPhi: min %2.2f, max %2.2f",
1398 if( nTrack == 0 )
return kFALSE;
1400 if( ptLeadHad < fMinLeadHadPt || ptLeadHad >
fMaxLeadHadPt )
return kFALSE;
1404 if( dphiLeadHad < fMinLeadHadPhi || dphiLeadHad >
fMaxLeadHadPhi )
return kFALSE;
1417 const Int_t buffersize = 560;
1418 char onePar[buffersize] ;
1420 snprintf(onePar,buffersize,
"--- AliAnaPaticleHadronCorrelation ---:") ;
1428 snprintf(onePar,buffersize,
"Isolated Trigger? %d;",
fSelectIsolated) ;
1432 snprintf(onePar,buffersize,
"Name of AOD Pi0 Branch %s;",
fPi0AODBranchName.Data());
1436 snprintf(onePar,buffersize,
"Select absolute leading for cluster triggers ? %d or Near Side Leading %d;",
1439 snprintf(onePar,buffersize,
"Associated particle pt bins %d: ",
fNAssocPtBins) ;
1452 return new TObjString(parList) ;
1461 TList * outputContainer =
new TList() ;
1462 outputContainer->SetName(
"CorrelationHistos") ;
1486 TString nameMC[] = {
"Photon",
"Pi0",
"Pi0Decay",
"Eta",
"EtaDecay",
"OtherDecay",
"Electron",
"Hadron",
"Pi0DecayLostPair",
"EtaDecayLostPair"};
1487 TString mcPartType[] = {
"#gamma",
"#pi^{0} (merged #gamma)",
"#gamma_{#pi decay}",
"#eta (merged #gamma)" ,
"#gamma_{#eta decay}",
"#gamma_{other decay}" ,
"e^{#pm}" ,
"hadrons?" ,
"#gamma_{#pi decay} lost companion",
"#gamma_{#eta decay} lost companion"} ;
1488 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
1490 TString parTitle = Form(
"#it{R} = %2.2f",
GetIsolationCut()->GetConeSize());
1502 fhPtTriggerInput =
new TH1F(
"hPtTriggerInput",
"Input trigger #it{p}_{T}", nptbins,ptmin,ptmax);
1508 fhPtTriggerSSCut =
new TH1F(
"hPtTriggerSSCut",
"Trigger #it{p}_{T} after #lambda^{2}_{0} cut", nptbins,ptmin,ptmax);
1515 fhPtTriggerIsoCut =
new TH1F(
"hPtTriggerIsoCut",
"Trigger #it{p}_{T} after isolation (and #lambda^{2}_{0} cut)", nptbins,ptmin,ptmax);
1520 fhPtTriggerFidCut =
new TH1F(
"hPtTriggerFidCut",
"Trigger #it{p}_{T} after fiducial (isolation and #lambda^{2}_{0}) cut", nptbins,ptmin,ptmax);
1524 fhPtTrigger =
new TH1F(
"hPtTrigger",
"#it{p}_{T} distribution of trigger particles (after opposite hadron leading cut and rest)", nptbins,ptmin,ptmax);
1525 fhPtTrigger->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1530 fhMassPtTrigger =
new TH2F(
"hMassPtTrigger",
"2 photons invariant mass vs p_{T}^{trig}",
1531 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1552 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
1555 (Form(
"hPtLeadCone_Bin%d",ibin),
1556 Form(
"cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1563 (Form(
"hSumPtCone_Bin%d",ibin),
1564 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1572 for(Int_t idecay = 0; idecay <
fNDecayBits; idecay++)
1574 Int_t bindecay = ibin+idecay*
fNBkgBin;
1577 (Form(
"hPtLeadCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1578 Form(
"Decay bit %d, cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1585 (Form(
"hSumPtCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1586 Form(
"Decay bit %d, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1600 (Form(
"hPtLeadCone_Bin%d_MC%s",ibin, nameMC[imc].Data()),
1601 Form(
"in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s",
1608 (Form(
"hSumPtCone_Bin%d_MC%s",ibin,nameMC[imc].Data()),
1609 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s",
1623 fhPtTriggerMC[i] =
new TH1F(Form(
"hPtTrigger_MC%s",nameMC[i].Data()),
1624 Form(
"#it{p}_{T} distribution of trigger particles, trigger origin is %s",nameMC[i].Data()),
1625 nptbins,ptmin,ptmax);
1626 fhPtTriggerMC[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1632 Form(
"2 photons invariant mass, trigger origin is %s",nameMC[i].Data()),
1633 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1646 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d",
fDecayBits[ibit]),
1647 nptbins,ptmin,ptmax);
1656 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d, trigger origin is %s",
fDecayBits[ibit], nameMC[i].Data()),
1657 nptbins,ptmin,ptmax);
1673 fhPtTriggerBin =
new TH2F (
"hPtTriggerBin",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
1678 fhPhiTrigger =
new TH2F (
"hPhiTrigger",
"#phi distribution of trigger Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
1682 fhEtaTrigger =
new TH2F (
"hEtaTrigger",
"#eta distribution of trigger",nptbins,ptmin,ptmax, netabins,etamin,etamax);
1688 fhPtTriggerCentrality =
new TH2F(
"hPtTriggerCentrality",
"Trigger particle #it{p}_{T} vs centrality",nptbins,ptmin,ptmax,100,0.,100) ;
1693 fhPtTriggerEventPlane =
new TH2F(
"hPtTriggerEventPlane",
"Trigger particle #it{p}_{T} vs event plane angle",nptbins,ptmin,ptmax, 100,0.,TMath::Pi()) ;
1698 fhTriggerEventPlaneCentrality =
new TH2F(
"hTriggerEventPlaneCentrality",
"Trigger particle centrality vs event plane angle",100,0.,100,100,0.,TMath::Pi()) ;
1707 fhPtLeadingOppositeHadron =
new TH2F(
"hPtTriggerPtLeadingOppositeHadron",
"Leading hadron opposite to trigger vs trigger #it{p}_{T}",
1708 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1714 nptbins,ptmin,ptmax);
1719 netabins,etamin,etamax,nphibins,phimin,phimax);
1725 fhPtDiffPhiLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffPhiTriggerLeadingOppositeHadron",
"#phi_{trigger}-#phi_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1726 nptbins,ptmin,ptmax,ndeltaphibins,deltaphimin,deltaphimax);
1731 fhPtDiffEtaLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffEtaTriggerPhiLeadingOppositeHadron",
"#eta_{trigger}-#eta_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1732 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1741 (
"hDeltaPhiDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}}",
1742 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1747 (
"hDeltaPhiDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}, #it{p}_{TA}>3 GeV/#it{c}}",
1748 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1753 (
"hPhiCharged",
"#phi_{h^{#pm}} vs #it{p}_{T #pm}",
1754 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
1756 fhPhiCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1759 (
"hEtaCharged",
"#eta_{h^{#pm}} vs #it{p}_{T #pm}",
1760 nptbins,ptmin,ptmax,100,-1.,1.);
1762 fhEtaCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1765 (
"hDeltaPhiCharged",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
1766 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1771 (
"hDeltaPhiChargedPtA3GeV",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1772 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1778 (
"hDeltaPhiChargedPt",
"#phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",
1779 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1784 (
"hDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}",
1785 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1790 (
"hDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1791 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1796 new TH2F(
"hXECharged",
"#it{x}_{#it{E}} for charged tracks",
1797 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1799 fhXECharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1802 new TH2F(
"hXECharged_Cone2",
"#it{x}_{#it{E}} for charged tracks in cone 2 (5#pi/6-7#pi/6)",
1803 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1808 new TH2F(
"hXEPositiveCharged",
"#it{x}_{#it{E}} for positive charged tracks",
1809 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1814 new TH2F(
"hXENegativeCharged",
"#it{x}_{#it{E}} for negative charged tracks",
1815 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1820 new TH2F(
"hHbpXECharged",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
1821 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1826 new TH2F(
"hHbpXECharged_Cone2",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons in cone 2 (5#pi/6-7#pi/6)",
1827 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1832 new TH2F(
"hZTCharged",
"#it{z}_{T} for charged tracks",
1833 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1838 new TH2F(
"hZTPositiveCharged",
"#it{z}_{T} for positive charged tracks",
1839 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1844 new TH2F(
"hZTNegativeCharged",
"#it{z}_{T} for negative charged tracks",
1845 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1850 new TH2F(
"hHbpZTCharged",
"#xi = ln(1/#it{z}_{T}) with charged hadrons",
1851 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1856 new TH2F(
"hPtTrigPout",
"Pout with triggers",
1857 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
1859 fhPtTrigPout->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1862 new TH2F(
"hPtTrigCharged",
"trigger and charged tracks pt distribution",
1863 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1886 Form(
"#Delta #phi for charged tracks, trigger origin is %s",nameMC[i].Data()),
1887 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
1892 fhXEChargedMC[i] =
new TH2F(Form(
"hXECharged_MC%s",nameMC[i].Data()),
1893 Form(
"#it{x}_{#it{E}} for charged tracks, trigger origin is %s",nameMC[i].Data()),
1894 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1896 fhXEChargedMC[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1900 Form(
"#it{x}_{#it{E}} for charged tracks in right UE cone, trigger origin is %s",nameMC[i].Data()),
1901 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1907 Form(
"#it{x}_{#it{E}} for charged tracks in left UE cone, trigger origin is %s",nameMC[i].Data()),
1908 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1931 fhUePart =
new TH1F(
"hUePart",
"UE particles distribution vs pt trig",
1932 nptbins,ptmin,ptmax);
1934 fhUePart->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1937 (Form(
"hDeltaPhiUe%sChargedPt",right.Data()),
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}}",
1938 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1943 new TH2F(Form(
"hXEUeCharged%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event",
1944 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1946 fhXEUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1949 new TH2F(Form(
"hHbpXEUeCharged%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for Underlying Event",
1950 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1955 new TH2F(Form(
"hZTUeCharged%s",right.Data()),
"#it{z}_{T} for Underlying Event",
1956 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1958 fhZTUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1961 new TH2F(Form(
"hHbpZTUeCharged%s",right.Data()),
"#xi = ln(1/#it{z}_{T}) for Underlying Event",
1962 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1976 (
"hDeltaPhiUeLeftChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left side range of trigger particles",
1977 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1983 (
"hDeltaPhiUeLeftUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Up side range of trigger particles",
1984 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1990 (
"hDeltaPhiUeRightUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Up side range of trigger particles",
1991 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1997 (
"hDeltaPhiUeLeftDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Down side range of trigger particles",
1998 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2004 (
"hDeltaPhiUeRightDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Down side range of trigger particles",
2005 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2011 new TH2F(
"hXEUeChargedLeft",
"#it{x}_{#it{E}} with UE left side of trigger",
2012 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2018 new TH2F(
"hXEUeChargedLeftUp",
"#it{x}_{#it{E}} with UE left Up side of trigger",
2019 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2025 new TH2F(
"hXEUeChargedRightUp",
"#it{x}_{#it{E} h^{#pm}} with UE right Up side of trigger",
2026 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2032 new TH2F(
"hXEUeChargedLeftDown",
"#it{x}_{#it{E}} with UE left Down side of trigger",
2033 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2039 new TH2F(
"hXEUeChargedRightDown",
"#it{x}_{#it{E} h^{#pm}} with UE right Down side of trigger",
2040 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2046 new TH2F(
"hHbpXEUeChargedLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with charged UE left side of trigger",
2047 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2053 new TH2F(
"hZTUeChargedLeft",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T Ueh^{#pm}} / #it{p}_{T trigger} with UE left side of trigger",
2054 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2060 new TH2F(
"hHbpZTUeChargedLeft",
"#xi = ln(1/#it{z}_{T}) with charged UE left side of trigger",
2061 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2070 (
"hDeltaPhiChargedOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC!=0",
2071 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2076 (
"hDeltaPhiChargedPtA3GeVOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC!=0",
2077 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2082 new TH2F(
"hPtTrigChargedOtherBC",
"trigger and charged tracks pt distribution, track BC!=0",
2083 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2088 new TH2F(
"hXEChargedOtherBC",
"#it{x}_{#it{E}} for charged tracks, track BC!=0",
2089 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2094 new TH2F(
"hXEUeChargedOtherBC",
"#it{x}_{#it{E}} for Underlying Event, track BC!=0",
2095 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2100 new TH2F(
"hZTChargedOtherBC",
"#it{z}_{T} for charged tracks, track BC!=0",
2101 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2106 new TH2F(
"hZTUeChargedOtherBC",
"#it{z}_{T} for Underlying Event, track BC!=0",
2107 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2120 (
"hDeltaPhiChargedBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2121 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2126 (
"hDeltaPhiChargedPtA3GeVBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2127 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2132 new TH2F(
"hPtTrigChargedBC0",
"trigger and charged tracks pt distribution, track BC==0",
2133 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2138 new TH2F(
"hXEChargedBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2139 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2144 new TH2F(
"hXEUeChargedBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2145 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2150 new TH2F(
"hZTChargedBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2151 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2156 new TH2F(
"hZTUeChargedBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2157 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2169 fhPtTriggerVtxBC0 =
new TH1F(
"hPtTriggerVtxBC0",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax);
2173 (
"hDeltaPhiChargedVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2174 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2179 (
"hDeltaPhiChargedPtA3GeVVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2180 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2185 new TH2F(
"hPtTrigChargedVtxBC0",
"trigger and charged tracks pt distribution, track BC==0",
2186 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2191 new TH2F(
"hXEChargedVtxBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2192 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2197 new TH2F(
"hXEUeChargedVtxBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2198 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2203 new TH2F(
"hZTChargedVtxBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2204 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2209 new TH2F(
"hZTUeChargedVtxBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2210 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2223 for(Int_t i = 0 ; i < 7 ; i++)
2225 fhPtTriggerPileUp[i] =
new TH1F(Form(
"hPtTriggerPileUp%s",pileUpName[i].Data()),
2226 Form(
"#it{p}_{T} distribution of trigger particles, %s Pile-Up event",pileUpName[i].Data()), nptbins,ptmin,ptmax);
2231 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].Data()),
2232 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2238 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, %s Pile-Up event",pileUpName[i].Data()),
2239 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2245 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].Data()),
2246 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2252 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, %s Pile-Up event",pileUpName[i].Data()),
2253 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2258 fhXEChargedPileUp[i] =
new TH2F(Form(
"hXEChargedPileUp%s",pileUpName[i].Data()),
2259 Form(
"#it{x}_{#it{E}} for charged tracks, %s Pile-Up event",pileUpName[i].Data()),
2260 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2266 Form(
"#it{x}_{#it{E}} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()),
2267 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2272 fhZTChargedPileUp[i] =
new TH2F(Form(
"hZTChargedPileUp%s",pileUpName[i].Data()),
2273 Form(
"#it{z}_{T} for charged tracks, %s Pile-Up event",pileUpName[i].Data()),
2274 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2280 Form(
"#it{z}_{T} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()),
2281 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2287 Form(
"trigger and charged tracks pt distribution, %s Pile-Up event",pileUpName[i].Data()),
2288 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2305 for(Int_t im=0; im<nMultiBins; im++)
2308 (Form(
"hDeltaPhiCharged_Mult%d",im),Form(
"#Delta #phi charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2313 (Form(
"hDeltaEtaCharged_Mult%d",im),Form(
"#Delta #eta charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2318 (Form(
"hXECharged_Mult%d",im),Form(
"#it{x}_{E} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2319 fhXEMult[im]->SetYTitle(
"#it{x}_{E}");
2320 fhXEMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2323 (Form(
"hXEUeCharged_Mult%d",im),Form(
"#it{x}_{E} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2325 fhXEUeMult[im]->SetXTitle(
"#it{p}_{T trigger}(GeV/#it{c})");
2328 (Form(
"hZTCharged_Mult%d",im),Form(
"#it{z}_{T} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2329 fhZTMult[im]->SetYTitle(
"#it{z}_{T}");
2330 fhZTMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2333 (Form(
"hZTUeCharged_Mult%d",im),Form(
"#it{z}_{T} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2335 fhZTUeMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2339 outputContainer->Add(
fhXEMult [im]);
2341 outputContainer->Add(
fhZTMult [im]);
2348 fhAssocPtBkg =
new TH2F(
"hAssocPtBkg",
" Trigger #it{p}_{T} vs associated hadron #it{p}_{T} from background",
2349 nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
2350 fhAssocPtBkg->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2351 fhAssocPtBkg->SetYTitle(
"#it{p}_{T associated} (GeV/#it{c})");
2354 fhDeltaPhiBrad =
new TH2F(
"hDeltaPhiBrad",
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} ",
2355 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2357 fhDeltaPhiBrad->SetYTitle(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi");
2394 for(Int_t z = 0 ; z < nz ; z++)
2400 sz = Form(
"_vz%d",z);
2401 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2408 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
2414 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2424 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta > 0.8",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2425 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2430 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta = 0.",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2431 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2443 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2453 Form(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2454 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2463 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, with track having HMPID signal",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2464 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2469 Form(
"#Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, with track within 5<phi<20 deg",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
2470 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2486 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2492 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2504 for(Int_t z = 0 ; z < nz ; z++)
2506 sz = Form(
"_vz%d",z);
2507 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2509 fhXEVZ[z] =
new TH2F(Form(
"hXE%s", sz.Data()),
2510 Form(
"#it{x}_{#it{E}} vs #it{p}_{T trigger}%s", tz.Data()),
2511 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2512 fhXEVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2513 fhXEVZ[z]->SetYTitle(
"#it{x}_{#it{E}}");
2515 fhZTVZ[z] =
new TH2F(Form(
"hZT%s",sz.Data()),
2516 Form(
"#it{z}_{T} vs #it{p}_{T trigger}%s", tz.Data()),
2517 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2518 fhZTVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2519 fhZTVZ[z]->SetYTitle(
"#it{z}_{T}");
2521 outputContainer->Add(
fhXEVZ[z]);
2522 outputContainer->Add(
fhZTVZ[z]);
2530 (
"hPtPi0DecayRatio",
"#it{p}_{T} of #pi^{0} and the ratio of pt for two decay",
2531 nptbins,ptmin,ptmax, 100,0.,2.);
2537 (
"hDeltaPhiPi0DecayCharged",
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}",
2538 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2543 new TH2F(
"hXEPi0DecayCharged",
"#it{x}_{#it{E}} Decay",
2544 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2549 new TH2F(
"hZTPi0DecayCharged",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}",
2550 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2564 (Form(
"hDeltaPhiDecayCharged_bit%d",
fDecayBits[ibit]),
2565 Form(
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2566 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2571 new TH2F(Form(
"hXEDecayCharged_bit%d",
fDecayBits[ibit]),
2572 Form(
"#it{x}_{#it{E}} Decay, Bit %d",
fDecayBits[ibit]),
2573 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2578 new TH2F(Form(
"hZTDecayCharged_bit%d",
fDecayBits[ibit]),
2579 Form(
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2580 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2594 (
"hDeltaPhiDeltaEtaNeutral",
"#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}",
2595 ndeltaphibins ,deltaphimin,deltaphimax, ndeltaetabins ,deltaetamin,deltaetamax);
2600 (
"hPhiNeutral",
"#phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2601 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2603 fhPhiNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2606 (
"hEtaNeutral",
"#eta_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2607 nptbins,ptmin,ptmax,200,-1.,1.);
2609 fhEtaNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2612 (
"hDeltaPhiNeutral",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T trigger}",
2613 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2618 (
"hDeltaPhiNeutralPt",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2619 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2624 (
"hDeltaEtaNeutral",
"#eta_{trigger} - #eta_{#pi^{0}} vs #it{p}_{T trigger}",
2625 nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2630 new TH2F(
"hXENeutral",
"#it{x}_{#it{E}} for #pi^{0} associated",
2631 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2633 fhXENeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2636 new TH2F(
"hHbpXENeutral",
"#xi = ln(1/#it{x}_{#it{E}})for #pi^{0} associated",
2637 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2642 new TH2F(
"hZTNeutral",
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2643 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2644 fhZTNeutral->SetYTitle(
"#it{z}_{trigger #pi^{0}}");
2645 fhZTNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2648 new TH2F(
"hHbpZTNeutral",
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2649 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2665 (Form(
"hDeltaPhiUe%sNeutralPt",right.Data()),
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2666 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2671 new TH2F(Form(
"hXEUeNeutral%s",right.Data()),
"#it{x}_{#it{E}} for #pi^{0} associated",
2672 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2674 fhXEUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2677 new TH2F(Form(
"hHbpXEUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2678 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2683 new TH2F(Form(
"hZTUeNeutral%s",right.Data()),
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2684 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2686 fhZTUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2689 new TH2F(Form(
"hHbpZTUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2690 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2703 (
"hDeltaPhiUeLeftNeutralPt",
"#phi_{trigger} - #phi_{#Ueh^{0}} vs #it{p}_{T h^{0}} with neutral UE left side range of trigger particles",
2704 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2710 new TH2F(
"hXEUeNeutralLeft",
"#it{x}_{#it{E}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2711 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2717 new TH2F(
"hHbpXEUeNeutralLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with neutral UE left side of trigger",
2718 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2724 new TH2F(
"hZTUeNeutralLeft",
"#it{z}_{trigger h^{0}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2725 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2731 new TH2F(
"hHbpZTUeNeutralLeft",
"#xi = ln(1/#it{z}_{T}) with neutral UE left side of trigger",
2732 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2741 (
"hDeltaPhiPi0DecayNeutral",
"#phi_{Decay} - #phi_{h^{0}} vs #it{p}_{T Decay}",
2742 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2747 new TH2F(
"hXEPi0DecayNeutral",
"#it{x}_{#it{E}} for decay trigger",
2748 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2753 new TH2F(
"hZTPi0DecayNeutral",
"#it{z}_{trigger h^{0}} = #it{p}_{T h^{0}} / #it{p}_{T Decay}",
2754 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2769 fhMCPtTrigger[i] =
new TH1F (Form(
"hMCPtTrigger_%s",nameMC[i].Data()),
2770 Form(
"MC %s: generated trigger #it{p}_{T}",nameMC[i].Data()),
2771 nptbins,ptmin,ptmax);
2772 fhMCPtTrigger[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
2774 fhMCPhiTrigger[i] =
new TH2F (Form(
"hMCPhiTrigger_%s",nameMC[i].Data()),
2775 Form(
"MC %s: generated trigger #phi",nameMC[i].Data()),
2776 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2780 fhMCEtaTrigger[i] =
new TH2F (Form(
"hMCEtaTrigger_%s",nameMC[i].Data()),
2781 Form(
"MC %s: generated trigger #eta",nameMC[i].Data()),
2782 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2789 Form(
"MC %s: generated trigger #it{p}_{T}, when not leading of primaries",nameMC[i].Data()),
2790 nptbins,ptmin,ptmax);
2794 Form(
"MC %s: generated trigger #phi, when not leading of primaries",nameMC[i].Data()),
2795 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2801 Form(
"MC %s: generated triogger #eta, when not leading of primaries",nameMC[i].Data()),
2802 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2807 fhMCEtaCharged[i] =
new TH2F (Form(
"hMCEtaCharged_%s",nameMC[i].Data()),
2808 Form(
"MC %s: #eta_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].Data()),
2809 nptbins,ptmin,ptmax,100,-1.,1.);
2813 fhMCPhiCharged[i] =
new TH2F(Form(
"hMCPhiCharged_%s",nameMC[i].Data()),
2814 Form(
"MC %s: phi_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].Data()),
2815 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2820 Form(
"MC %s: phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",nameMC[i].Data()),
2821 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
2826 Form(
"MC %s: #eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger} and #it{p}_{T assoc}",nameMC[i].Data()),
2827 nptbins,ptmin,ptmax,ndeltaetabins ,deltaetamin,deltaetamax);
2832 Form(
"MC %s: #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",nameMC[i].Data()),
2833 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2838 Form(
"MC %s: #phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",nameMC[i].Data()),
2839 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2843 fhMCPtXECharged[i] =
new TH2F (Form(
"hMCPtXECharged_%s",nameMC[i].Data()),
2844 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons",nameMC[i].Data()),
2845 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2850 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",nameMC[i].Data()),
2851 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2855 fhMCPtZTCharged[i] =
new TH2F(Form(
"hMCPtZTCharged_%s",nameMC[i].Data()),
2856 Form(
"MC %s: #it{z}_{T} with charged hadrons",nameMC[i].Data()),
2857 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2862 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons",nameMC[i].Data()),
2863 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2867 fhMCPtTrigPout[i] =
new TH2F(Form(
"hMCPtTrigPout_%s",nameMC[i].Data()),
2868 Form(
"MC %s: #it{p}_{out} with triggers",nameMC[i].Data()),
2869 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
2874 Form(
"MC %s: #Delta #phi with associated charged hadrons",nameMC[i].Data()),
2875 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2907 new TH1F(Form(
"hMCUePart_%s",nameMC[i].Data()),
2908 Form(
"MC %s: UE particles distribution vs #it{p}_{T trigger}",nameMC[i].Data()),
2909 nptbins,ptmin,ptmax);
2911 fhMCUePart[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2914 new TH2F(Form(
"hMCPtXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2915 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2916 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2921 new TH2F(Form(
"hMCPtHbpXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2922 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2923 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2928 new TH2F(Form(
"hMCPtZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2929 Form(
"MC %s: #it{z}_{T} with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2930 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2935 new TH2F(Form(
"hMCPtHbpZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2936 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2937 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2950 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2951 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2956 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2957 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2962 Form(
"MC %s: #it{z}_{T} with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2963 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2968 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2969 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2994 for( Int_t ice = 0 ; ice < nce ; ice++ )
2996 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
2998 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3012 fhPtTriggerMixed =
new TH1F (
"hPtTriggerMixed",
"#it{p}_{T} distribution of trigger particles, used for mixing", nptbins,ptmin,ptmax);
3023 fhPtTriggerMixedBin =
new TH2F (
"hPtTriggerMixedBin",
"#it{p}_{T} distribution of trigger particles vs mixing bin", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
3027 fhPhiTriggerMixed =
new TH2F (
"hPhiTriggerMixed",
"#phi distribution of trigger Particles, used for mixing",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
3030 fhEtaTriggerMixed =
new TH2F (
"hEtaTriggerMixed",
"#eta distribution of trigger, used for mixing",nptbins,ptmin,ptmax, netabins,etamin,etamax);
3047 for( Int_t ice = 0 ; ice < nce ; ice++ )
3049 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3051 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3068 if( !
GetReader()->ListWithMixedEventsForTracksExists() )
3071 if( !
GetReader()->ListWithMixedEventsForCaloExists() )
3075 fhEventBin=
new TH1I(
"hEventBin",
"Number of triggers per bin(cen,vz,rp)",
3081 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of triggers mixed per event bin(cen,vz,rp)",
3087 fhEventMBBin=
new TH1I(
"hEventMBBin",
"Number of min bias events per bin(cen,vz,rp)",
3093 fhNtracksMB=
new TH2F(
"hNtracksMBEvent",
"Number of filtered tracks in MB event per event bin",ntrbins,trmin,trmax,
3102 fhNclustersMB=
new TH2F(
"hNclustersMBEvent",
"Number of filtered clusters in MB events per event bin",nclbins,clmin,clmax,
3111 (
"hMixDeltaPhiCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
3112 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
3118 (
"hMixDeltaPhiDeltaEtaCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",
3119 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3125 new TH2F(
"hMixXECharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks",
3126 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3132 new TH2F(
"hMixXEUeCharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks in Ue region",
3133 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3139 new TH2F(
"hMixHbpXECharged",
"mixed event : #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
3140 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3152 for(Int_t z = 0 ; z < nz ; z++)
3158 sz = Form(
"_vz%d",z);
3159 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
3166 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3174 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3183 Form(
"Mixed event #Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta > 0.8",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
3184 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3189 Form(
"Mixed event #Delta #phi vs #it{p}_{T trigger} for associated #it{p}_{T} bin [%2.1f,%2.1f]%s, for #Delta #eta = 0",
fAssocPtBinLimit[i],
fAssocPtBinLimit[i+1],tz.Data()),
3190 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3201 return outputContainer;
3215 if(indexPhoton1!=-1 || indexPhoton2!=-1)
return kFALSE;
3217 AliDebug(1,Form(
"indexPhoton1 = %d, indexPhoton2 = %d", indexPhoton1, indexPhoton2));
3219 TObjArray * clusters = 0x0 ;
3223 for(Int_t iclus = 0; iclus < clusters->GetEntriesFast(); iclus++)
3225 AliVCluster * photon = (AliVCluster*) (clusters->At(iclus));
3260 AliFatal(
"STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!");
3342 for(Int_t ibin =
fNBkgBin+1; ibin < 20; ibin++)
3357 Int_t idTrig = trigger->GetCaloLabel(0);
3358 Float_t ptTrig = trigger->Pt();
3359 Float_t tofTrig = trigger->GetTime();
3366 for(Int_t iphoton = 0; iphoton < nphoton; iphoton++)
3368 AliAODPWG4ParticleCorrelation * photon1 = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iphoton));
3370 if(idTrig == photon1->GetCaloLabel(0))
continue;
3377 Float_t m02 = photon1->GetM02();
3383 Double_t tdiff = tofTrig - photon1->GetTime();
3406 Double_t phiTrig = 0 ;
3409 AliAODPWG4ParticleCorrelation* pLeading = 0;
3415 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3416 particle->SetLeadingParticle(kFALSE);
3420 if(check == 0)
continue;
3421 if(check == -1)
return kFALSE;
3424 if (particle->Pt() > ptTrig)
3426 ptTrig = particle->Pt() ;
3427 phiTrig = particle->Phi();
3429 pLeading = particle ;
3433 if(index < 0)
return kFALSE;
3437 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
3441 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3443 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3445 if(track->GetID() == pLeading->GetTrackLabel(0) || track->GetID() == pLeading->GetTrackLabel(1) ||
3446 track->GetID() == pLeading->GetTrackLabel(2) || track->GetID() == pLeading->GetTrackLabel(3) )
continue ;
3448 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
3451 if(phi < 0) phi+=TMath::TwoPi();
3456 Float_t deltaPhi = phiTrig-phi;
3457 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3458 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3460 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE;
3465 if(pt > ptTrig)
return kFALSE ;
3474 TObjArray * nePl = 0x0;
3475 if (pLeading->GetDetectorTag() ==
kPHOS )
3480 if(!nePl)
return kTRUE;
3482 for(Int_t ipr = 0;ipr < nePl->GetEntriesFast() ; ipr ++ )
3484 AliVCluster * cluster = (AliVCluster *) (nePl->At(ipr)) ;
3486 if(cluster->GetID() == pLeading->GetCaloLabel(0) || cluster->GetID() == pLeading->GetCaloLabel(1) )
continue ;
3492 if(phi < 0) phi+=TMath::TwoPi();
3500 Float_t deltaPhi = phiTrig-phi;
3501 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3502 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3504 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE ;
3509 if(pt > ptTrig)
return kFALSE ;
3515 pLeading->SetLeadingParticle(kTRUE);
3517 AliDebug(1,Form(
"\t particle AOD with index %d is leading with pT %2.2f",
fLeadingTriggerIndex, pLeading->Pt()));
3541 AliFatal(Form(
"No input particles in AOD with name branch < %s >, STOP",
GetInputAODName().Data()));
3548 AliDebug(1,
"No particle AOD found!");
3552 AliDebug(1,Form(
"Begin hadron correlation analysis, fill histograms"));
3553 AliDebug(1,Form(
"n particle branch aod entries %d", naod));
3554 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks()->GetEntriesFast()));
3569 AliDebug(1,
"Leading was requested and not found");
3593 for( iaod = 0; iaod < naod; iaod++ )
3595 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3600 Float_t pt = particle->Pt();
3613 AliDebug(1,Form(
"%s Trigger : min %f, max %f, det %d",
3630 Float_t m02 = particle->GetM02();
3636 AliDebug(1,
"Pass the shower shape cut");
3645 if( !particle->IsIsolated() )
continue;
3649 AliDebug(1,
"Pass the isolation cut");
3659 if(! in ) continue ;
3661 AliDebug(1,
"Pass the fiducial cut");
3671 Bool_t okLeadHad = kTRUE;
3685 Int_t mcTag = particle->GetTag();
3686 Bool_t lostDecayPair = kFALSE;
3730 Float_t m02 = particle->GetM02();
3731 Float_t pTLeadTrackInCone = 0;
3732 Float_t pTSumTrackInCone = 0;
3733 Float_t pTLeadClusterInCone = 0;
3734 Float_t pTSumClusterInCone = 0;
3739 Float_t pTLeadInCone = pTLeadTrackInCone;
3740 if(pTLeadClusterInCone > pTLeadInCone) pTLeadInCone = pTLeadClusterInCone;
3741 Float_t pTSumInCone = pTSumTrackInCone + pTSumClusterInCone;
3744 Int_t pTSumBin = -1;
3745 Int_t pTLeadBin = -1;
3747 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
3765 Int_t decayTag = particle->DecayTag();
3766 if(decayTag < 0) decayTag = 0;
3772 Int_t pTLeadBinDecay = pTLeadBin+ibit*
fNBkgBin;
3773 Int_t pTSumBinDecay = pTSumBin+ibit*
fNBkgBin;
3782 Int_t pTLeadBinMC = pTLeadBin+mcIndex*
fNBkgBin;
3783 Int_t pTSumBinMC = pTSumBin+mcIndex*
fNBkgBin;
3824 AliFatal(Form(
"Lost decay Bit assigned to bad case, mcIndex %d",mcIndex));
3846 Int_t decayTag = particle->DecayTag();
3847 if(decayTag < 0) decayTag = 0;
3872 Float_t phi = particle->Phi();
3873 if( phi < 0 ) phi+=TMath::TwoPi();
3913 AliDebug(1,
"End fill histograms");
3925 AliDebug(1,
"Make trigger particle - charged hadron correlation");
3927 Float_t phiTrig = aodParticle->Phi();
3928 Float_t etaTrig = aodParticle->Eta();
3929 Float_t ptTrig = aodParticle->Pt();
3930 Int_t mcTag = aodParticle->GetTag();
3938 decayTag = aodParticle->DecayTag();
3939 if(decayTag < 0) decayTag = 0;
3948 Float_t pt = -100. ;
3949 Float_t phi = -100. ;
3950 Float_t eta = -100. ;
3951 Float_t deltaPhi = -100. ;
3953 TObjArray * reftracks = 0x0;
3957 Int_t evtIndex11 = -1 ;
3958 Int_t evtIndex12 = -1 ;
3959 Int_t evtIndex13 = -1 ;
3963 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
3964 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
3965 evtIndex13 =
GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ;
3977 Bool_t decayFound = kFALSE;
3980 decayFound =
GetDecayPhotonMomentum(aodParticle->GetCaloLabel(0),aodParticle->GetCaloLabel(1),aodParticle->GetDetectorTag());
3992 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3994 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3996 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
4000 if(phi < 0) phi+=TMath::TwoPi();
4003 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4006 if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) ||
4007 track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) )
4011 Int_t evtIndex2 = 0 ;
4015 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 )
4022 AliDebug(2,Form(
"Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4031 Int_t assocBin = -1;
4050 Int_t bin = assocBin*nz+vz;
4057 ULong_t status = track->GetStatus();
4058 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
4060 Int_t trackBC = track->GetTOFBunchCrossing(bz);
4063 if (okTOF && trackBC!=0) outTOF = 1;
4064 else if(okTOF && trackBC==0) outTOF = 0;
4073 deltaPhi = phiTrig-phi;
4080 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4081 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4084 eta, etaTrig, decayTag, track->GetHMPIDsignal(),
4085 outTOF, cenbin, mcTag);
4096 assocBin, decayTag, outTOF, mcTag);
4123 reftracks =
new TObjArray(0);
4125 reftracks->SetName(trackname.Data());
4126 reftracks->SetOwner(kFALSE);
4129 reftracks->Add(track);
4136 aodParticle->AddObjArray(reftracks);
4145 AliDebug(1,Form(
"Make trigger particle - charged hadron mixed event correlation"));
4152 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
4154 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
4156 if(!inputHandler)
return;
4164 if(eventBin < 0)
return;
4173 TList * poolCalo = 0;
4187 if( neutralMix && !poolCalo )
4188 AliWarning(
"Careful, cluster pool not available");
4190 Double_t ptTrig = aodParticle->Pt();
4191 Double_t etaTrig = aodParticle->Eta();
4192 Double_t phiTrig = aodParticle->Phi();
4193 if(phiTrig < 0.) phiTrig+=TMath::TwoPi();
4195 AliDebug(1,Form(
"Pool bin %d size %d, trigger trigger pt=%f, phi=%f, eta=%f",
4196 eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig));
4198 Double_t ptAssoc = -999.;
4199 Double_t phiAssoc = -999.;
4200 Double_t etaAssoc = -999.;
4201 Double_t deltaPhi = -999.;
4202 Double_t deltaEta = -999.;
4203 Double_t xE = -999.;
4209 for(Int_t ev=ev0; ev < pool->GetSize(); ev++)
4214 TObjArray* bgTracks =
static_cast<TObjArray*
>(pool->At(ev));
4215 TObjArray* bgCalo = 0;
4218 if( neutralMix && poolCalo )
4220 if(pool->GetSize()!=poolCalo->GetSize())
4221 AliWarning(
"Different size of calo and track pools");
4223 bgCalo =
static_cast<TObjArray*
>(poolCalo->At(ev));
4225 if(!bgCalo) AliDebug(1,Form(
"Event %d in calo pool not available?",ev));
4233 Int_t n=0, nfrac = 0;
4234 Bool_t isolated = kFALSE;
4235 Float_t coneptsum = 0, coneptlead = 0;
4238 kFALSE, aodParticle,
"",
4239 n,nfrac,coneptsum,coneptlead,isolated);
4246 if(!isolated) continue ;
4252 Int_t nTracks=bgTracks->GetEntriesFast();
4256 Bool_t leading = kTRUE;
4257 for(Int_t jlead = 0;jlead < nTracks; jlead++ )
4259 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ;
4261 ptAssoc = track->Pt();
4262 phiAssoc = track->Phi() ;
4263 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4267 deltaPhi = phiTrig-phiAssoc;
4268 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4269 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4271 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4280 if(ptAssoc > ptTrig)
4289 AliWarning(
"Leading of clusters requested but no clusters in mixed event");
4293 Int_t nClusters=bgCalo->GetEntriesFast();
4294 for(Int_t jlead = 0;jlead <nClusters; jlead++ )
4296 AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ;
4298 ptAssoc = cluster->Pt();
4299 phiAssoc = cluster->Phi() ;
4300 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4304 deltaPhi = phiTrig-phiAssoc;
4305 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4306 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4308 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4317 if(ptAssoc > ptTrig)
4326 if(!leading)
continue;
4347 for(Int_t j1 = 0;j1 <nTracks; j1++ )
4349 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ;
4351 if(!track)
continue;
4353 ptAssoc = track->Pt();
4354 etaAssoc = track->Eta();
4355 phiAssoc = track->Phi() ;
4356 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4358 deltaPhi = phiTrig-phiAssoc;
4359 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4360 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4361 deltaEta = etaTrig-etaAssoc;
4363 AliDebug(1,Form(
"deltaPhi= %f, deltaEta=%f",deltaPhi, deltaEta));
4374 xE = -ptAssoc/ptTrig*TMath::Cos(deltaPhi);
4377 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4391 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
4394 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4401 Int_t assocBin = -1;
4419 Int_t bin = assocBin*nz+vz;
4421 if(bin < 0) continue ;
4428 if(TMath::Abs(deltaEta) > 0.8)
4430 if(TMath::Abs(deltaEta) < 0.01)
4445 if(!pi0list) return ;
4447 Int_t npi0 = pi0list->GetEntriesFast();
4448 if(npi0 == 0) return ;
4450 AliDebug(1,Form(
"Particle - pi0 correlation, %d pi0's",npi0));
4452 Int_t evtIndex11 = 0 ;
4453 Int_t evtIndex12 = 0 ;
4456 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4457 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4460 Float_t pt = -100. ;
4461 Float_t zT = -100. ;
4462 Float_t phi = -100. ;
4463 Float_t eta = -100. ;
4464 Float_t xE = -100. ;
4465 Float_t hbpXE= -100. ;
4466 Float_t hbpZT= -100. ;
4468 Float_t ptTrig = aodParticle->Pt();
4469 Float_t phiTrig = aodParticle->Phi();
4470 Float_t etaTrig = aodParticle->Eta();
4471 Float_t deltaPhi= -100. ;
4472 Float_t deltaEta= -100. ;
4477 Bool_t decayFound = kFALSE;
4480 TObjArray * refpi0 = 0x0;
4485 for(Int_t iaod = 0; iaod < npi0 ; iaod++)
4487 AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod));
4489 Int_t evtIndex2 = 0 ;
4490 Int_t evtIndex3 = 0 ;
4493 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ;
4494 evtIndex3 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ;
4496 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 ||
4497 evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3)
4503 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4506 if(aodParticle->GetCaloLabel(0) >= 0 &&
4507 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(0) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(0))) continue ;
4509 if( aodParticle->GetCaloLabel(1) >= 0 &&
4510 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(1) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(1))) continue ;
4517 deltaEta = etaTrig-eta;
4518 deltaPhi = phiTrig-phi;
4519 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4520 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4537 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
4542 xE =-pt/ptTrig*TMath::Cos(deltaPhi);
4545 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4548 if( xE > 0 ) hbpXE = TMath::Log(1./xE);
4561 xE = -(pt/ptTrig)*TMath::Cos(randomphi);
4562 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
4586 refpi0 =
new TObjArray(0);
4588 refpi0->SetOwner(kFALSE);
4593 AliDebug(1,Form(
"Selected pi0: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4600 aodParticle->AddObjArray(refpi0);
4609 AliDebug(1,
"Make trigger particle - charged hadron correlation in AOD MC level");
4613 AliDebug(1,Form(
" *** bad label ***: label %d", label));
4620 if(histoIndex < fMCGenTypeMin || histoIndex >
fMCGenTypeMax) return ;
4622 AliStack * stack = 0x0 ;
4623 TParticle * primary = 0x0 ;
4624 TClonesArray * mcparticles = 0x0 ;
4625 AliAODMCParticle * aodprimary = 0x0 ;
4627 Double_t eprim = 0 ;
4628 Double_t ptprim = 0 ;
4629 Double_t phiprim = 0 ;
4630 Double_t etaprim = 0 ;
4632 Int_t iParticle = 0 ;
4634 Bool_t leadTrig = kTRUE;
4641 AliFatal(
"Stack not available, is the MC handler called? STOP");
4646 nTracks = stack->GetNprimary();
4647 if( label >= stack->GetNtrack() )
4650 AliInfo(Form(
"*** large label ***: label %d, n tracks %d", label, stack->GetNtrack()));
4654 primary = stack->Particle(label);
4657 AliInfo(Form(
" *** no primary ***: label %d", label));
4661 eprim = primary->Energy();
4662 ptprim = primary->Pt();
4663 etaprim = primary->Eta();
4664 phiprim = primary->Phi();
4665 if(phiprim < 0) phiprim+=TMath::TwoPi();
4667 if(ptprim < 0.01 || eprim < 0.01) return ;
4669 for (iParticle = 0 ; iParticle < nTracks ; iParticle++)
4671 TParticle * particle = stack->Particle(iParticle);
4674 if( particle->GetStatusCode() != 1 )
continue ;
4677 Int_t pdg = particle->GetPdgCode();
4678 Int_t
charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
4679 if(charge == 0)
continue;
4686 if( !inCTS )
continue;
4689 if ( TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode() == 22 )
continue ;
4691 if ( label == iParticle )
continue;
4693 Float_t phi = particle->Phi();
4694 if(phi < 0) phi+=TMath::TwoPi();
4698 if ( !lead ) leadTrig = kFALSE;
4707 if( !mcparticles )
return;
4709 nTracks = mcparticles->GetEntriesFast() ;
4711 if( label >= nTracks )
4714 AliInfo(Form(
" *** large label ***: label %d, n tracks %d", label,nTracks));
4719 aodprimary = (AliAODMCParticle*) mcparticles->At(label);
4722 AliInfo(Form(
" *** no AOD primary ***: label %d", label));
4726 eprim = aodprimary->E();
4727 ptprim = aodprimary->Pt();
4728 etaprim = aodprimary->Eta();
4729 phiprim = aodprimary->Phi();
4730 if(phiprim < 0) phiprim+=TMath::TwoPi();
4732 if(ptprim < 0.01 || eprim < 0.01) return ;
4734 for (iParticle = 0; iParticle < nTracks; iParticle++)
4736 AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle);
4738 if (!part->IsPhysicalPrimary() )
continue;
4740 if ( part->Charge() == 0 )
continue;
4742 fMomentum.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->E());
4747 if( !inCTS )
continue;
4750 Int_t indexmother = part->GetMother();
4751 if ( indexmother > -1 )
4753 Int_t pdg = part->GetPdgCode();
4754 Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode();
4755 if (TMath::Abs(pdg) == 11 && mPdg == 22)
continue;
4758 if ( label == iParticle )
continue;
4760 Float_t phi = part->Phi();
4761 if(phi < 0) phi+=TMath::TwoPi();
4765 if ( !lead ) leadTrig = kFALSE;
4780 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4787 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4798 AliDebug(1,Form(
"Not leading primary trigger: pT %2.2f, phi %2.2f, eta %2.2f",
4799 ptprim,phiprim*TMath::RadToDeg(),etaprim));
4808 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4815 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4834 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4845 printf(
"Do Decay-hadron correlation ? %d\n",
fPi0Trigger) ;
4846 printf(
"Select absolute leading for cluster triggers ? %d or Near Side %d\n",
4868 AliWarning(
"n = larger than 19 or too small, set to 19");
4878 if(ibin <= fNAssocPtBins || ibin >= 0)
4884 AliWarning(Form(
"Bin number too large %d > %d or small, nothing done", ibin,
fNAssocPtBins)) ;
4894 Float_t & pTLeadTrackInCone, Float_t & pTSumTrackInCone)
4897 if(!reftracks) return ;
4899 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
4901 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
4903 Float_t pTtrack = track->Pt();
4912 pTSumTrackInCone+=pTtrack;
4913 if(pTtrack > pTLeadTrackInCone) pTLeadTrackInCone = pTtrack;
4925 Float_t & pTLeadClusterInCone, Float_t & pTSumClusterInCone)
4928 if(!refclusters) return ;
4933 Double_t vertex[] = {0,0,0} ;
4937 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
4939 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
4951 pTSumClusterInCone += pTCluster;
4952 if(pTCluster > pTLeadClusterInCone) pTLeadClusterInCone = pTCluster;
virtual Bool_t IsFiducialCutOn() const
Float_t GetHistoPtMax() const
TH2F ** fhXEMult
[GetNCentrBin()]
TH2F * fhDeltaPhiDeltaEtaCharged
! Differences of eta and phi between trigger and charged hadrons.
TH2F * fhMCEtaCharged[fgkNmcTypes]
! MC pure particles charged primary pt vs eta (both associated)
void MakeIsolationCut(TObjArray *plCTS, TObjArray *plNe, AliCaloTrackReader *reader, AliCaloPID *pid, Bool_t bFillAOD, AliAODPWG4ParticleCorrelation *pCandidate, TString aodObjArrayName, Int_t &n, Int_t &nfrac, Float_t &ptSum, Float_t &ptLead, Bool_t &isolated)
TH2F * fhMCMassPtTrigger[fgkNmcTypes]
! Invariant mass of the trigger vs MC origin.
TH2F ** fhXEUeMult
[GetNCentrBin()]
TH2F * fhMCPtXECharged[fgkNmcTypes]
! MC pure particles charged trigger primary pt vs xE
TH2F * fhMixXECharged
! xE for mixed event.
TH2F * fhMCPtAssocDeltaPhi[fgkNmcTypes]
! MC pure particles charged associated primary pt vs delta phi (associated-trigger) ...
void SetLastCaloMixedEvent(Int_t e)
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Int_t GetHistoDeltaEtaBins() const
TH1F * fhPtNoLeadingOppositeHadron
! pT trigger for events without opposite hadrons.
TH1F ** fhSumPtConeBinMC
[fNBkgBin*fgkNmcTypes]
virtual Bool_t DoOwnMix() const
TH2F * fhXEChargedVtxBC0
! Trigger particle -charged hadron momentum imbalance histogram.
TH2F * fhMixXEUeCharged
! xE for mixed event in Ue region.
Float_t GetHistoPtMin() const
virtual TObjArray * GetCTSTracks() const
virtual Float_t GetMaxPt() const
TH2F * fhDeltaPhiChargedPt
! Difference of charged particle phi and trigger particle phi as function of charged. particle pT
TH2F * fhPtHbpXECharged_Cone2
! Trigger particle -charged hadron momentum HBP histogram in cone2 (5pi/6-7pi/6). ...
virtual Int_t GetTrackMultiplicity() const
TH2F * fhPtTrigPout
! Pout =associated pt*sin(delta phi) distribution vs trigger pt
TH2F * fhZTCharged
! Trigger particle -charged hadron momentum imbalance histogram.
TH2F * fhPhiCharged
! Phi distribution of charged particles.
TH2F * fhZTPi0DecayCharged
! Trigger particle (decay from pi0/eta trigger)-charged hadron momentum imbalance histogram ...
TH2F * fhXEDecayCharged[AliNeutralMesonSelection::fgkMaxNDecayBits]
! Trigger particle (decay from pi0)-charged hadron momentum imbalance histogram.
virtual void AddToHistogramsName(TString add)
TList * GetListWithMixedEventsForTracks(Int_t bi) const
void FillNeutralUnderlyingEventSidesHistograms(Float_t ptTrig, Float_t ptAssoc, Float_t zT, Float_t hbpZT, Float_t deltaPhi)
void FillChargedUnderlyingEventHistograms(Float_t ptTrig, Float_t ptAssoc, Float_t deltaPhi, Int_t cenbin, Int_t outTOF, Int_t mcTag)
Fill underlying event histograms.
TList ** fListMixTrackEvents
Containers for tracks in stored events for mixing.
Int_t GetMCTagHistogramIndex(Int_t tag)
void InitParameters()
Initialize the default parameters of the analysis.
TH2F * fhMixDeltaPhiCharged
! Difference of charged particle phi and trigger particle phi as function of trigger particle pT...
virtual Bool_t IsDataMC() const
TH2F * fhDeltaPhiDeltaEtaNeutral
[GetNZvertBin()]
TH2F * fhMCPtHbpZTCharged[fgkNmcTypes]
! MC pure particles charged trigger primary pt vs ln(1/zT)
void MakeChargedCorrelation(AliAODPWG4ParticleCorrelation *particle)
TH2F * fhDeltaPhiNeutral
! Difference of neutral particle phi and trigger particle phi as function of trigger particle pT ...
void FillNeutralEventMixPool()
TH2F * fhZTNegCharged
! Trigger particle -negative charged hadron momentum imbalance histogram.
TH1F * fhPtTriggerIsoCut
! pT distribution of trigger particles after isolation cut selection.
virtual Float_t GetPairTimeCut() const
TString fPi0AODBranchName
Name of AOD branch with pi0, not trigger.
TH2F * fhXEUeCharged
! Trigger particle -underlying charged hadron momentum imbalance histogram.
virtual AliStack * GetMCStack() const
TH1F * fhPtTriggerSSCut
! pT distribution of trigger particles after shower shape selection.
Bool_t ReadAODMCParticles() const
virtual void GetVertex(Double_t vertex[3]) const
Int_t GetHistoTrackMultiplicityMax() const
TH2F * fhMCPhiCharged[fgkNmcTypes]
! MC pure particles charged primary pt vs phi (both associated)
Bool_t fMakeAbsoluteLeading
Requesting absolute leading triggers.
TH1F * fhPtDecayTriggerMC[AliNeutralMesonSelection::fgkMaxNDecayBits][fgkNmcTypes]
! pT distribution of trigger particles, tagged as decay, check the origin of the cluster.
virtual TString GetInputAODName() const
TH1F * fhPtDecayTrigger[AliNeutralMesonSelection::fgkMaxNDecayBits]
! pT distribution of trigger particles, tagged as decay.
static const Int_t fgkMaxNDecayBits
TLorentzVector fMomentumIM
! Cluster momentum from Invariant mass.
void FillDecayPhotonCorrelationHistograms(Float_t ptAssoc, Float_t phiAssoc, Bool_t bChargedOrNeutral)
Do correlation with decay photons of triggered pi0 or eta.
void FillEventMixPool()
Fill the pool with tracks or clusters if requested.
TH2F ** fhZTAssocPtBin
[fNAssocPtBins]
TH2F * fhDeltaPhiUeRightUpCharged
! Difference of charged particle from underlying events phi and trigger particle phi ...
TH1F * fhPtTriggerVtxBC0
! pT distribution of trigger particles when vertex is BC0.
void MakeMCChargedCorrelation(Int_t triggerMCLable, Int_t histoIndex, Bool_t lostDecayPair)
Make the trigger-charged particles correlation at the generator level.
TH2F * fhDeltaPhiChargedMC[fgkNmcTypes]
! Trigger particle -charged hadron delta phi histogram, check the origin of the cluster : decay photo...
void SetListWithMixedEventsForTracks(TList **l)
Int_t GetVertexBC(const AliVVertex *vtx)
TH2F * fhDeltaPhiUeLeftUpCharged
! Difference of charged particle from underlying events phi and trigger particle phi ...