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(
""), fAODNamepTInConeHisto(
""), fNeutralCorr(0),
66 fPi0Trigger(0), fDecayTrigger(0),
67 fNDecayBits(0), fDecayBits(),
69 fMakeAbsoluteLeading(0), fMakeNearSideLeading(0),
70 fLeadingTriggerIndex(-1), fHMPIDCorrelation(0), fFillBradHisto(0),
71 fNAssocPtBins(0), fAssocPtBinLimit(),
73 fListMixTrackEvents(), fListMixCaloEvents(),
74 fUseMixStoredInReader(0), fFillNeutralEventMixPool(0),
75 fM02MaxCut(0), fM02MinCut(0),
76 fSelectLeadingHadronAngle(0), fFillLeadHadOppositeHisto(0),
77 fMinLeadHadPhi(0), fMaxLeadHadPhi(0),
78 fMinLeadHadPt(0), fMaxLeadHadPt(0),
79 fFillEtaGapsHisto(1), fFillMomImbalancePtAssocBinsHisto(0),
80 fFillInvMassHisto(0), fFillBkgBinsHisto(0),
81 fFillTaggedDecayHistograms(0), fDecayTagsM02Cut(0),
82 fMCGenTypeMin(0), fMCGenTypeMax(0),
83 fTrackVector(), fMomentum(), fMomentumIM(),
84 fDecayMom1(), fDecayMom2(),
86 fhPtTriggerInput(0), fhPtTriggerSSCut(0),
87 fhPtTriggerIsoCut(0), fhPtTriggerFidCut(0),
88 fhPtTrigger(0), fhPtTriggerVtxBC0(0),
89 fhPtTriggerVzBin(0), fhPtTriggerBin(0),
90 fhPhiTrigger(0), fhEtaTrigger(0),
92 fhPtDecayTrigger(), fhPtDecayTriggerMC(),
93 fhPtTriggerCentrality(0), fhPtTriggerEventPlane(0),
94 fhTriggerEventPlaneCentrality(0),
95 fhPtTriggerMixed(0), fhPtTriggerMixedVzBin(0), fhPtTriggerMixedBin(0),
96 fhPhiTriggerMixed(0), fhEtaTriggerMixed(0),
97 fhPtLeadingOppositeHadron(0), fhPtDiffPhiLeadingOppositeHadron(0), fhPtDiffEtaLeadingOppositeHadron(0),
98 fhPtNoLeadingOppositeHadron(0), fhEtaPhiNoLeadingOppositeHadron(0),
99 fhDeltaPhiDeltaEtaCharged(0),
100 fhPhiCharged(0), fhEtaCharged(0),
101 fhDeltaPhiCharged(0), fhDeltaEtaCharged(0),
102 fhDeltaPhiChargedPt(0), fhDeltaPhiUeChargedPt(0),
104 fhXECharged(0), fhXECharged_Cone2(0), fhXEUeCharged(0),
105 fhXEUeChargedSmallCone(0), fhXEUeChargedMediumCone(0), fhXEUeChargedLargeCone(0),
106 fhXEPosCharged(0), fhXENegCharged(0),
107 fhPtHbpXECharged(0), fhPtHbpXECharged_Cone2(0), fhPtHbpXEUeCharged(0),
108 fhZTCharged(0), fhZTUeCharged(0),
109 fhZTPosCharged(0), fhZTNegCharged(0),
110 fhPtHbpZTCharged(0), fhPtHbpZTUeCharged(0),
111 fhXEChargedMC(), fhDeltaPhiChargedMC(),
112 fhXEUeChargedRightMC(), fhXEUeChargedLeftMC(),
113 fhDeltaPhiDeltaEtaChargedPtA3GeV(0),
114 fhDeltaPhiChargedPtA3GeV(0), fhDeltaEtaChargedPtA3GeV(0),
116 fhDeltaPhiChargedPileUp(), fhDeltaEtaChargedPileUp(),
117 fhDeltaPhiChargedPtA3GeVPileUp(), fhDeltaEtaChargedPtA3GeVPileUp(),
118 fhXEChargedPileUp(), fhXEUeChargedPileUp(),
119 fhZTChargedPileUp(), fhZTUeChargedPileUp(),
120 fhPtTrigChargedPileUp(),
121 fhDeltaPhiChargedOtherBC(), fhDeltaPhiChargedPtA3GeVOtherBC(),
122 fhXEChargedOtherBC(), fhXEUeChargedOtherBC(),
123 fhZTChargedOtherBC(), fhZTUeChargedOtherBC(),
124 fhPtTrigChargedOtherBC(),
125 fhDeltaPhiChargedBC0(), fhDeltaPhiChargedPtA3GeVBC0(),
126 fhXEChargedBC0(), fhXEUeChargedBC0(),
127 fhZTChargedBC0(), fhZTUeChargedBC0(),
128 fhPtTrigChargedBC0(),
129 fhDeltaPhiChargedVtxBC0(), fhDeltaPhiChargedPtA3GeVVtxBC0(),
130 fhXEChargedVtxBC0(), fhXEUeChargedVtxBC0(),
131 fhZTChargedVtxBC0(), fhZTUeChargedVtxBC0(),
132 fhPtTrigChargedVtxBC0(),
133 fhDeltaPhiUeLeftCharged(0),
134 fhDeltaPhiUeLeftUpCharged(0), fhDeltaPhiUeRightUpCharged(0),
135 fhDeltaPhiUeLeftDownCharged(0), fhDeltaPhiUeRightDownCharged(0),
136 fhXEUeLeftCharged(0),
137 fhXEUeLeftUpCharged(0), fhXEUeRightUpCharged(0),
138 fhXEUeLeftDownCharged(0), fhXEUeRightDownCharged(0),
139 fhPtHbpXEUeLeftCharged(0), fhZTUeLeftCharged(0),
140 fhPtHbpZTUeLeftCharged(0),
141 fhPtTrigPout(0), fhPtTrigCharged(0),
142 fhDeltaPhiChargedMult(0x0), fhDeltaEtaChargedMult(0x0),
143 fhXEMult(0x0), fhXEUeMult(0x0),
144 fhZTMult(0x0), fhZTUeMult(0x0),
145 fhAssocPtBkg(0), fhDeltaPhiDeltaEtaAssocPtBin(0),
146 fhDeltaPhiAssocPtBin(0),
147 fhDeltaPhiAssocPtBinDEta08(0), fhDeltaPhiAssocPtBinDEta0(0),
148 fhDeltaPhiAssocPtBinHMPID(0), fhDeltaPhiAssocPtBinHMPIDAcc(0),
149 fhDeltaPhiBradAssocPtBin(0), fhDeltaPhiBrad(0),
150 fhXEAssocPtBin(0), fhZTAssocPtBin(0),
151 fhXEVZ(0), fhZTVZ(0),
152 fhDeltaPhiDeltaEtaNeutral(0),
153 fhPhiNeutral(0), fhEtaNeutral(0),
154 fhDeltaPhiNeutral(0), fhDeltaEtaNeutral(0),
155 fhDeltaPhiNeutralPt(0), fhDeltaPhiUeNeutralPt(0),
156 fhXENeutral(0), fhXEUeNeutral(0),
157 fhPtHbpXENeutral(0), fhPtHbpXEUeNeutral(0),
158 fhZTNeutral(0), fhZTUeNeutral(0),
159 fhPtHbpZTNeutral(0), fhPtHbpZTUeNeutral(0),
160 fhDeltaPhiUeLeftNeutral(0), fhXEUeLeftNeutral(0),
161 fhPtHbpXEUeLeftNeutral(0), fhZTUeLeftNeutral(0),
162 fhPtHbpZTUeLeftNeutral(0), fhPtPi0DecayRatio(0),
163 fhDeltaPhiPi0DecayCharged(0), fhXEPi0DecayCharged(0), fhZTPi0DecayCharged(0),
164 fhDeltaPhiPi0DecayNeutral(0), fhXEPi0DecayNeutral(0), fhZTPi0DecayNeutral(0),
165 fhDeltaPhiDecayCharged(), fhXEDecayCharged(), fhZTDecayCharged(),
166 fhDeltaPhiDecayChargedAssocPtBin(),
167 fhMCPtTrigger(), fhMCPhiTrigger(), fhMCEtaTrigger(),
168 fhMCPtTriggerNotLeading(), fhMCPhiTriggerNotLeading(), fhMCEtaTriggerNotLeading(),
169 fhMCEtaCharged(), fhMCPhiCharged(),
170 fhMCDeltaEtaCharged(), fhMCDeltaPhiCharged(),
171 fhMCDeltaPhiDeltaEtaCharged(), fhMCDeltaPhiChargedPt(),
172 fhMCPtXECharged(), fhMCPtXEUeCharged(),
173 fhMCPtXEUeLeftCharged(),
174 fhMCPtHbpXECharged(), fhMCPtHbpXEUeCharged(),
175 fhMCPtHbpXEUeLeftCharged(),
177 fhMCPtZTCharged(), fhMCPtZTUeCharged(),
178 fhMCPtZTUeLeftCharged(),
179 fhMCPtHbpZTCharged(), fhMCPtHbpZTUeCharged(),
180 fhMCPtHbpZTUeLeftCharged(),
181 fhMCPtTrigPout(), fhMCPtAssocDeltaPhi(),
183 fhNEventsTrigger(0), fhNtracksMB(0), fhNclustersMB(0),
184 fhMixDeltaPhiCharged(0), fhMixDeltaPhiDeltaEtaCharged(0),
185 fhMixXECharged(0), fhMixXEUeCharged(0), fhMixHbpXECharged(0),
186 fhMixDeltaPhiChargedAssocPtBin(),
187 fhMixDeltaPhiChargedAssocPtBinDEta08(),
188 fhMixDeltaPhiChargedAssocPtBinDEta0(),
189 fhMixDeltaPhiDeltaEtaChargedAssocPtBin(),
190 fhEventBin(0), fhEventMixBin(0), fhEventMBBin(0),
191 fhMassPtTrigger(0), fhMCMassPtTrigger(),
192 fhPtLeadInConeBin(), fhPtSumInConeBin(),
193 fhPtLeadConeBinDecay(), fhSumPtConeBinDecay(),
194 fhPtLeadConeBinMC(), fhSumPtConeBinMC()
212 for(Int_t i = 0; i < 7; i++)
272 Float_t phiAssoc, Float_t phiTrig, Float_t deltaPhi,
273 Float_t etaAssoc, Float_t etaTrig,
274 Int_t decayTag, Float_t hmpidSignal, Int_t outTOF,
275 Int_t cen, Int_t mcTag)
277 Float_t deltaEta = etaTrig-etaAssoc;
278 Float_t deltaPhiOrg = phiTrig-phiAssoc;
310 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
326 if(
GetReader()->IsPileUpFromSPDOrEMCal())
331 if(
GetReader()->IsPileUpFromSPDAndEMCal())
336 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
341 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
346 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
364 if(
GetReader()->IsPileUpFromSPDOrEMCal())
369 if(
GetReader()->IsPileUpFromSPDAndEMCal())
374 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
379 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
384 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
414 Double_t dphiBrad = -100;
417 dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();
418 if( TMath::Abs(dphiBrad) > 0.325 && TMath::Abs(dphiBrad) < 0.475 )
423 if( dphiBrad < -1./3 ) dphiBrad += 2;
436 if(TMath::Abs(deltaEta)> 0.8)
439 if(TMath::Abs(deltaEta)< 0.01)
454 if( hmpidSignal > 0 )
460 if(phiAssoc > 5*TMath::DegToRad() && phiAssoc < 20*TMath::DegToRad())
480 Float_t mcTrigPt, Float_t mcTrigPhi, Float_t mcTrigEta,
481 Int_t histoIndex, Bool_t lostDecayPair)
492 if( mcAssocPhi < 0 ) mcAssocPhi+=TMath::TwoPi();
494 Float_t mcdeltaPhi= mcTrigPhi-mcAssocPhi;
495 if(mcdeltaPhi <= -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi();
496 if(mcdeltaPhi > 3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi();
500 if( mcAssocPt > mcTrigPt && mcdeltaPhi < TMath::PiOver2() ) lead = kFALSE;
505 if ( mcAssocPt < fMinAssocPt || mcAssocPt >
fMaxAssocPt )
return lead ;
506 if ( mcAssocPt <
GetReader()->GetCTSPtMin())
return lead ;
511 if(TMath::Abs(mcAssocPt -mcTrigPt ) < 1e-6 &&
513 TMath::Abs(mcAssocEta-mcTrigEta) < 1e-6)
return lead ;
515 Float_t mcxE =-mcAssocPt/mcTrigPt*TMath::Cos(mcdeltaPhi);
516 Float_t mchbpXE =-100 ;
517 if(mcxE > 0 ) mchbpXE = TMath::Log(1./mcxE);
519 Float_t mczT = mcAssocPt/mcTrigPt ;
520 Float_t mchbpZT =-100 ;
521 if(mczT > 0 ) mchbpZT = TMath::Log(1./mczT);
523 Double_t mcpout = mcAssocPt*TMath::Sin(mcdeltaPhi) ;
525 AliDebug(1,Form(
"Charged hadron: track Pt %f, track Phi %f, phi trigger %f. Cuts: delta phi %2.2f < %2.2f < %2.2f",
604 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
605 Double_t mcUezT = mcAssocPt/mcTrigPt;
608 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
653 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
654 Double_t mcUezT = mcAssocPt/mcTrigPt;
657 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
700 Int_t bin, Int_t decayTag,
701 Int_t outTOF, Int_t mcTag)
704 Float_t zT = ptAssoc/ptTrig ;
705 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(deltaPhi);
706 Float_t pout = ptAssoc*TMath::Sin(deltaPhi) ;
709 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
712 Float_t hbpXE = -100;
713 Float_t hbpZT = -100;
715 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
716 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
725 if((deltaPhi > 5*TMath::Pi()/6.) && (deltaPhi < 7*TMath::Pi()/6.))
762 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
781 if(
GetReader()->IsPileUpFromSPDOrEMCal())
787 if(
GetReader()->IsPileUpFromSPDAndEMCal())
793 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
799 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
805 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
861 Float_t deltaPhi, Int_t cen, Int_t outTOF, Int_t mcTag)
868 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
869 Double_t uezT = ptAssoc/ptTrig;
872 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
914 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
930 if(
GetReader()->IsPileUpFromSPDOrEMCal())
935 if(
GetReader()->IsPileUpFromSPDAndEMCal())
940 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
945 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
950 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
979 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
980 Double_t uezT = ptAssoc/ptTrig;
983 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1013 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1016 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1027 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1030 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1041 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1044 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1055 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1058 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1074 Float_t zTDecay1 = -100, zTDecay2 = -100;
1075 if(ptDecay1 > 0) zTDecay1 = ptAssoc/ptDecay1 ;
1076 if(ptDecay2 > 0) zTDecay2 = ptAssoc/ptDecay2 ;
1078 Float_t deltaPhiDecay1 =
fDecayMom1.Phi()-phiAssoc;
1079 if(deltaPhiDecay1< -TMath::PiOver2()) deltaPhiDecay1+=TMath::TwoPi();
1080 if(deltaPhiDecay1>3*TMath::PiOver2()) deltaPhiDecay1-=TMath::TwoPi();
1082 Float_t deltaPhiDecay2 =
fDecayMom2.Phi()-phiAssoc;
1083 if(deltaPhiDecay2< -TMath::PiOver2()) deltaPhiDecay2+=TMath::TwoPi();
1084 if(deltaPhiDecay2>3*TMath::PiOver2()) deltaPhiDecay2-=TMath::TwoPi();
1086 Float_t xEDecay1 =-zTDecay1*TMath::Cos(deltaPhiDecay1);
1087 Float_t xEDecay2 =-zTDecay2*TMath::Cos(deltaPhiDecay2);
1089 if(bChargedOrNeutral)
1094 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1112 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1132 Float_t zT, Float_t hbpZT,
1137 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(randomphi);
1138 Float_t hbpXE = -100;
1139 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
1180 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1181 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1183 if(!inputHandler) return ;
1191 if(eventBin < 0)
return;
1195 TObjArray * mixEventTracks =
new TObjArray;
1208 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1210 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1212 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1216 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1218 AliAODPWG4Particle * mixedTrack =
new AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),0);
1219 mixedTrack->SetDetectorTag(
kCTS);
1220 mixedTrack->SetChargedBit(track->Charge()>0);
1221 mixEventTracks->Add(mixedTrack);
1230 pool->AddFirst(mixEventTracks);
1238 TClonesArray * tmp =
static_cast<TClonesArray*
>(pool->Last()) ;
1239 pool->RemoveLast() ;
1262 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1263 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1265 if(!inputHandler) return ;
1273 if(eventBin < 0)
return;
1275 TObjArray * mixEventCalo =
new TObjArray;
1286 for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ )
1288 AliVCluster * calo = (AliVCluster *) (pl->At(ipr)) ;
1300 Double_t vertex[]={0,0,0};
1307 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1309 AliAODPWG4Particle * mixedCalo =
new AliAODPWG4Particle(
fMomentum);
1310 mixedCalo->SetDetectorTag(
kEMCAL);
1311 mixEventCalo->Add(mixedCalo);
1320 poolCalo->AddFirst(mixEventCalo);
1328 TClonesArray * tmp =
static_cast<TClonesArray*
>(poolCalo->Last()) ;
1329 poolCalo->RemoveLast() ;
1340 Float_t etaTrig = particle->Eta();
1341 Float_t ptTrig = particle->Pt();
1342 Float_t phiTrig = particle->Phi();
1343 if(phiTrig < 0 ) phiTrig+= TMath::TwoPi();
1345 Float_t ptLeadHad = 0 ;
1346 Float_t dphiLeadHad= -100 ;
1347 Float_t phiLeadHad = -100 ;
1348 Float_t etaLeadHad = -100 ;
1351 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1353 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1355 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1359 if(phi < 0 ) phi+= TMath::TwoPi();
1361 Float_t deltaPhi = phiTrig-phi;
1367 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1368 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1370 if(pt > ptLeadHad && deltaPhi > TMath::PiOver2())
1374 dphiLeadHad= deltaPhi;
1396 AliDebug(1,Form(
"pT %2.2f, phi %2.2f, eta %2.2f, nTracks away %d, total tracks %d",
1398 AliDebug(1,Form(
"\t pT trig %2.2f, Dphi (trigger-hadron) %2.2f, Deta (trigger-hadron) %2.2f",
1399 ptTrig, dphiLeadHad*TMath::RadToDeg(), etaLeadHad-etaTrig));
1400 AliDebug(1,Form(
"\t cuts pT: min %2.2f, max %2.2f; DPhi: min %2.2f, max %2.2f",
1406 if( nTrack == 0 )
return kFALSE;
1408 if( ptLeadHad < fMinLeadHadPt || ptLeadHad >
fMaxLeadHadPt )
return kFALSE;
1412 if( dphiLeadHad < fMinLeadHadPhi || dphiLeadHad >
fMaxLeadHadPhi )
return kFALSE;
1425 const Int_t buffersize = 560;
1426 char onePar[buffersize] ;
1428 snprintf(onePar,buffersize,
"--- AliAnaPaticleHadronCorrelation ---:") ;
1436 snprintf(onePar,buffersize,
"Isolated Trigger? %d;",
fSelectIsolated) ;
1440 snprintf(onePar,buffersize,
"Name of AOD Pi0 Branch %s;",
fPi0AODBranchName.Data());
1444 snprintf(onePar,buffersize,
"Select absolute leading for cluster triggers ? %d or Near Side Leading %d;",
1447 snprintf(onePar,buffersize,
"Associated particle pt bins %d: ",
fNAssocPtBins) ;
1460 return new TObjString(parList) ;
1469 TList * outputContainer =
new TList() ;
1470 outputContainer->SetName(
"CorrelationHistos") ;
1494 TString nameMC[] = {
"Photon",
"Pi0",
"Pi0Decay",
"Eta",
"EtaDecay",
"OtherDecay",
"Electron",
"Hadron",
"Pi0DecayLostPair",
"EtaDecayLostPair"};
1495 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"} ;
1496 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
1498 TString parTitle = Form(
"#it{R} = %2.2f",
GetIsolationCut()->GetConeSize());
1510 fhPtTriggerInput =
new TH1F(
"hPtTriggerInput",
"Input trigger #it{p}_{T}", nptbins,ptmin,ptmax);
1516 fhPtTriggerSSCut =
new TH1F(
"hPtTriggerSSCut",
"Trigger #it{p}_{T} after #lambda^{2}_{0} cut", nptbins,ptmin,ptmax);
1523 fhPtTriggerIsoCut =
new TH1F(
"hPtTriggerIsoCut",
"Trigger #it{p}_{T} after isolation (and #lambda^{2}_{0} cut)", nptbins,ptmin,ptmax);
1528 fhPtTriggerFidCut =
new TH1F(
"hPtTriggerFidCut",
"Trigger #it{p}_{T} after fiducial (isolation and #lambda^{2}_{0}) cut", nptbins,ptmin,ptmax);
1532 fhPtTrigger =
new TH1F(
"hPtTrigger",
"#it{p}_{T} distribution of trigger particles (after opposite hadron leading cut and rest)", nptbins,ptmin,ptmax);
1533 fhPtTrigger->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1538 fhMassPtTrigger =
new TH2F(
"hMassPtTrigger",
"2 photons invariant mass vs p_{T}^{trig}",
1539 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1560 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
1563 (Form(
"hPtLeadCone_Bin%d",ibin),
1564 Form(
"cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1571 (Form(
"hSumPtCone_Bin%d",ibin),
1572 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1580 for(Int_t idecay = 0; idecay <
fNDecayBits; idecay++)
1582 Int_t bindecay = ibin+idecay*
fNBkgBin;
1585 (Form(
"hPtLeadCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1586 Form(
"Decay bit %d, cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1593 (Form(
"hSumPtCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1594 Form(
"Decay bit %d, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1608 (Form(
"hPtLeadCone_Bin%d_MC%s",ibin, nameMC[imc].
Data()),
1609 Form(
"in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s",
1616 (Form(
"hSumPtCone_Bin%d_MC%s",ibin,nameMC[imc].
Data()),
1617 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s",
1632 Form(
"#it{p}_{T} distribution of trigger particles, trigger origin is %s",nameMC[i].
Data()),
1633 nptbins,ptmin,ptmax);
1634 fhPtTriggerMC[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1640 Form(
"2 photons invariant mass, trigger origin is %s",nameMC[i].
Data()),
1641 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1654 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d",
fDecayBits[ibit]),
1655 nptbins,ptmin,ptmax);
1664 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d, trigger origin is %s",
fDecayBits[ibit], nameMC[i].
Data()),
1665 nptbins,ptmin,ptmax);
1681 fhPtTriggerBin =
new TH2F (
"hPtTriggerBin",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
1686 fhPhiTrigger =
new TH2F (
"hPhiTrigger",
"#phi distribution of trigger Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
1690 fhEtaTrigger =
new TH2F (
"hEtaTrigger",
"#eta distribution of trigger",nptbins,ptmin,ptmax, netabins,etamin,etamax);
1696 fhPtTriggerCentrality =
new TH2F(
"hPtTriggerCentrality",
"Trigger particle #it{p}_{T} vs centrality",nptbins,ptmin,ptmax,100,0.,100) ;
1701 fhPtTriggerEventPlane =
new TH2F(
"hPtTriggerEventPlane",
"Trigger particle #it{p}_{T} vs event plane angle",nptbins,ptmin,ptmax, 100,0.,TMath::Pi()) ;
1706 fhTriggerEventPlaneCentrality =
new TH2F(
"hTriggerEventPlaneCentrality",
"Trigger particle centrality vs event plane angle",100,0.,100,100,0.,TMath::Pi()) ;
1715 fhPtLeadingOppositeHadron =
new TH2F(
"hPtTriggerPtLeadingOppositeHadron",
"Leading hadron opposite to trigger vs trigger #it{p}_{T}",
1716 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1722 nptbins,ptmin,ptmax);
1727 netabins,etamin,etamax,nphibins,phimin,phimax);
1733 fhPtDiffPhiLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffPhiTriggerLeadingOppositeHadron",
"#phi_{trigger}-#phi_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1734 nptbins,ptmin,ptmax,ndeltaphibins,deltaphimin,deltaphimax);
1739 fhPtDiffEtaLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffEtaTriggerPhiLeadingOppositeHadron",
"#eta_{trigger}-#eta_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1740 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1749 (
"hDeltaPhiDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}}",
1750 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1755 (
"hDeltaPhiDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}, #it{p}_{TA}>3 GeV/#it{c}}",
1756 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1761 (
"hPhiCharged",
"#phi_{h^{#pm}} vs #it{p}_{T #pm}",
1762 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
1764 fhPhiCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1767 (
"hEtaCharged",
"#eta_{h^{#pm}} vs #it{p}_{T #pm}",
1768 nptbins,ptmin,ptmax,100,-1.,1.);
1770 fhEtaCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1773 (
"hDeltaPhiCharged",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
1774 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1779 (
"hDeltaPhiChargedPtA3GeV",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1780 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1786 (
"hDeltaPhiChargedPt",
"#phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",
1787 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1792 (
"hDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}",
1793 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1798 (
"hDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1799 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1804 new TH2F(
"hXECharged",
"#it{x}_{#it{E}} for charged tracks",
1805 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1807 fhXECharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1810 new TH2F(
"hXECharged_Cone2",
"#it{x}_{#it{E}} for charged tracks in cone 2 (5#pi/6-7#pi/6)",
1811 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1816 new TH2F(
"hXEPositiveCharged",
"#it{x}_{#it{E}} for positive charged tracks",
1817 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1822 new TH2F(
"hXENegativeCharged",
"#it{x}_{#it{E}} for negative charged tracks",
1823 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1828 new TH2F(
"hHbpXECharged",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
1829 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1834 new TH2F(
"hHbpXECharged_Cone2",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons in cone 2 (5#pi/6-7#pi/6)",
1835 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1840 new TH2F(
"hZTCharged",
"#it{z}_{T} for charged tracks",
1841 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1846 new TH2F(
"hZTPositiveCharged",
"#it{z}_{T} for positive charged tracks",
1847 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1852 new TH2F(
"hZTNegativeCharged",
"#it{z}_{T} for negative charged tracks",
1853 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1858 new TH2F(
"hHbpZTCharged",
"#xi = ln(1/#it{z}_{T}) with charged hadrons",
1859 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1864 new TH2F(
"hPtTrigPout",
"Pout with triggers",
1865 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
1867 fhPtTrigPout->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1870 new TH2F(
"hPtTrigCharged",
"trigger and charged tracks pt distribution",
1871 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1894 Form(
"#Delta #phi for charged tracks, trigger origin is %s",nameMC[i].
Data()),
1895 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
1901 Form(
"#it{x}_{#it{E}} for charged tracks, trigger origin is %s",nameMC[i].
Data()),
1902 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1904 fhXEChargedMC[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1908 Form(
"#it{x}_{#it{E}} for charged tracks in right UE cone, trigger origin is %s",nameMC[i].
Data()),
1909 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1915 Form(
"#it{x}_{#it{E}} for charged tracks in left UE cone, trigger origin is %s",nameMC[i].
Data()),
1916 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1939 fhUePart =
new TH1F(
"hUePart",
"UE particles distribution vs pt trig",
1940 nptbins,ptmin,ptmax);
1942 fhUePart->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1945 (Form(
"hDeltaPhiUe%sChargedPt",right.Data()),
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}}",
1946 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1951 new TH2F(Form(
"hXEUeCharged%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event",
1952 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1954 fhXEUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1957 new TH2F(Form(
"hXEUeChargedSmallCone%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event in a cone [80,100] deg",
1958 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1963 new TH2F(Form(
"hXEUeChargedMediumCone%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event in a cone [70,110] deg",
1964 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1969 new TH2F(Form(
"hXEUeChargedLargeCone%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event in a cone [60,120] deg",
1970 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1975 new TH2F(Form(
"hHbpXEUeCharged%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for Underlying Event",
1976 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1981 new TH2F(Form(
"hZTUeCharged%s",right.Data()),
"#it{z}_{T} for Underlying Event",
1982 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1984 fhZTUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1987 new TH2F(Form(
"hHbpZTUeCharged%s",right.Data()),
"#xi = ln(1/#it{z}_{T}) for Underlying Event",
1988 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2005 (
"hDeltaPhiUeLeftChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left side range of trigger particles",
2006 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2012 (
"hDeltaPhiUeLeftUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Up side range of trigger particles",
2013 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2019 (
"hDeltaPhiUeRightUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Up side range of trigger particles",
2020 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2026 (
"hDeltaPhiUeLeftDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Down side range of trigger particles",
2027 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2033 (
"hDeltaPhiUeRightDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Down side range of trigger particles",
2034 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2040 new TH2F(
"hXEUeChargedLeft",
"#it{x}_{#it{E}} with UE left side of trigger",
2041 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2047 new TH2F(
"hXEUeChargedLeftUp",
"#it{x}_{#it{E}} with UE left Up side of trigger",
2048 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2054 new TH2F(
"hXEUeChargedRightUp",
"#it{x}_{#it{E} h^{#pm}} with UE right Up side of trigger",
2055 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2061 new TH2F(
"hXEUeChargedLeftDown",
"#it{x}_{#it{E}} with UE left Down side of trigger",
2062 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2068 new TH2F(
"hXEUeChargedRightDown",
"#it{x}_{#it{E} h^{#pm}} with UE right Down side of trigger",
2069 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2075 new TH2F(
"hHbpXEUeChargedLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with charged UE left side of trigger",
2076 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2082 new TH2F(
"hZTUeChargedLeft",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T Ueh^{#pm}} / #it{p}_{T trigger} with UE left side of trigger",
2083 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2089 new TH2F(
"hHbpZTUeChargedLeft",
"#xi = ln(1/#it{z}_{T}) with charged UE left side of trigger",
2090 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2099 (
"hDeltaPhiChargedOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC!=0",
2100 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2105 (
"hDeltaPhiChargedPtA3GeVOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC!=0",
2106 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2111 new TH2F(
"hPtTrigChargedOtherBC",
"trigger and charged tracks pt distribution, track BC!=0",
2112 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2117 new TH2F(
"hXEChargedOtherBC",
"#it{x}_{#it{E}} for charged tracks, track BC!=0",
2118 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2123 new TH2F(
"hXEUeChargedOtherBC",
"#it{x}_{#it{E}} for Underlying Event, track BC!=0",
2124 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2129 new TH2F(
"hZTChargedOtherBC",
"#it{z}_{T} for charged tracks, track BC!=0",
2130 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2135 new TH2F(
"hZTUeChargedOtherBC",
"#it{z}_{T} for Underlying Event, track BC!=0",
2136 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2149 (
"hDeltaPhiChargedBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2150 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2155 (
"hDeltaPhiChargedPtA3GeVBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2156 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2161 new TH2F(
"hPtTrigChargedBC0",
"trigger and charged tracks pt distribution, track BC==0",
2162 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2167 new TH2F(
"hXEChargedBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2168 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2173 new TH2F(
"hXEUeChargedBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2174 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2179 new TH2F(
"hZTChargedBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2180 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2185 new TH2F(
"hZTUeChargedBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2186 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2198 fhPtTriggerVtxBC0 =
new TH1F(
"hPtTriggerVtxBC0",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax);
2202 (
"hDeltaPhiChargedVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2203 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2208 (
"hDeltaPhiChargedPtA3GeVVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2209 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2214 new TH2F(
"hPtTrigChargedVtxBC0",
"trigger and charged tracks pt distribution, track BC==0",
2215 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2220 new TH2F(
"hXEChargedVtxBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2221 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2226 new TH2F(
"hXEUeChargedVtxBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2227 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2232 new TH2F(
"hZTChargedVtxBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2233 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2238 new TH2F(
"hZTUeChargedVtxBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2239 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2252 for(Int_t i = 0 ; i < 7 ; i++)
2255 Form(
"#it{p}_{T} distribution of trigger particles, %s Pile-Up event",pileUpName[i].
Data()), nptbins,ptmin,ptmax);
2260 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].
Data()),
2261 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2267 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()),
2268 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2274 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].
Data()),
2275 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2281 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()),
2282 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2288 Form(
"#it{x}_{#it{E}} for charged tracks, %s Pile-Up event",pileUpName[i].
Data()),
2289 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2295 Form(
"#it{x}_{#it{E}} for Underlying Event, %s Pile-Up event",pileUpName[i].
Data()),
2296 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2302 Form(
"#it{z}_{T} for charged tracks, %s Pile-Up event",pileUpName[i].
Data()),
2303 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2309 Form(
"#it{z}_{T} for Underlying Event, %s Pile-Up event",pileUpName[i].
Data()),
2310 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2316 Form(
"trigger and charged tracks pt distribution, %s Pile-Up event",pileUpName[i].
Data()),
2317 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2334 for(Int_t im=0; im<nMultiBins; im++)
2337 (Form(
"hDeltaPhiCharged_Mult%d",im),Form(
"#Delta #phi charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2342 (Form(
"hDeltaEtaCharged_Mult%d",im),Form(
"#Delta #eta charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2347 (Form(
"hXECharged_Mult%d",im),Form(
"#it{x}_{E} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2348 fhXEMult[im]->SetYTitle(
"#it{x}_{E}");
2349 fhXEMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2352 (Form(
"hXEUeCharged_Mult%d",im),Form(
"#it{x}_{E} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2354 fhXEUeMult[im]->SetXTitle(
"#it{p}_{T trigger}(GeV/#it{c})");
2357 (Form(
"hZTCharged_Mult%d",im),Form(
"#it{z}_{T} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2358 fhZTMult[im]->SetYTitle(
"#it{z}_{T}");
2359 fhZTMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2362 (Form(
"hZTUeCharged_Mult%d",im),Form(
"#it{z}_{T} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2364 fhZTUeMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2368 outputContainer->Add(
fhXEMult [im]);
2370 outputContainer->Add(
fhZTMult [im]);
2377 fhAssocPtBkg =
new TH2F(
"hAssocPtBkg",
" Trigger #it{p}_{T} vs associated hadron #it{p}_{T} from background",
2378 nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
2379 fhAssocPtBkg->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2380 fhAssocPtBkg->SetYTitle(
"#it{p}_{T associated} (GeV/#it{c})");
2383 fhDeltaPhiBrad =
new TH2F(
"hDeltaPhiBrad",
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} ",
2384 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2386 fhDeltaPhiBrad->SetYTitle(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi");
2423 for(Int_t z = 0 ; z < nz ; z++)
2429 sz = Form(
"_vz%d",z);
2430 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2437 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
2443 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2453 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()),
2454 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2459 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()),
2460 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2472 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2482 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()),
2483 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2492 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()),
2493 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2498 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()),
2499 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2515 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2521 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2533 for(Int_t z = 0 ; z < nz ; z++)
2535 sz = Form(
"_vz%d",z);
2536 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2538 fhXEVZ[z] =
new TH2F(Form(
"hXE%s", sz.Data()),
2539 Form(
"#it{x}_{#it{E}} vs #it{p}_{T trigger}%s", tz.Data()),
2540 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2541 fhXEVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2542 fhXEVZ[z]->SetYTitle(
"#it{x}_{#it{E}}");
2544 fhZTVZ[z] =
new TH2F(Form(
"hZT%s",sz.Data()),
2545 Form(
"#it{z}_{T} vs #it{p}_{T trigger}%s", tz.Data()),
2546 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2547 fhZTVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2548 fhZTVZ[z]->SetYTitle(
"#it{z}_{T}");
2550 outputContainer->Add(
fhXEVZ[z]);
2551 outputContainer->Add(
fhZTVZ[z]);
2559 (
"hPtPi0DecayRatio",
"#it{p}_{T} of #pi^{0} and the ratio of pt for two decay",
2560 nptbins,ptmin,ptmax, 100,0.,2.);
2566 (
"hDeltaPhiPi0DecayCharged",
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}",
2567 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2572 new TH2F(
"hXEPi0DecayCharged",
"#it{x}_{#it{E}} Decay",
2573 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2578 new TH2F(
"hZTPi0DecayCharged",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}",
2579 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2593 (Form(
"hDeltaPhiDecayCharged_bit%d",
fDecayBits[ibit]),
2594 Form(
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2595 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2600 new TH2F(Form(
"hXEDecayCharged_bit%d",
fDecayBits[ibit]),
2601 Form(
"#it{x}_{#it{E}} Decay, Bit %d",
fDecayBits[ibit]),
2602 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2607 new TH2F(Form(
"hZTDecayCharged_bit%d",
fDecayBits[ibit]),
2608 Form(
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2609 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2623 (
"hDeltaPhiDeltaEtaNeutral",
"#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}",
2624 ndeltaphibins ,deltaphimin,deltaphimax, ndeltaetabins ,deltaetamin,deltaetamax);
2629 (
"hPhiNeutral",
"#phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2630 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2632 fhPhiNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2635 (
"hEtaNeutral",
"#eta_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2636 nptbins,ptmin,ptmax,200,-1.,1.);
2638 fhEtaNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2641 (
"hDeltaPhiNeutral",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T trigger}",
2642 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2647 (
"hDeltaPhiNeutralPt",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2648 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2653 (
"hDeltaEtaNeutral",
"#eta_{trigger} - #eta_{#pi^{0}} vs #it{p}_{T trigger}",
2654 nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2659 new TH2F(
"hXENeutral",
"#it{x}_{#it{E}} for #pi^{0} associated",
2660 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2662 fhXENeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2665 new TH2F(
"hHbpXENeutral",
"#xi = ln(1/#it{x}_{#it{E}})for #pi^{0} associated",
2666 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2671 new TH2F(
"hZTNeutral",
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2672 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2673 fhZTNeutral->SetYTitle(
"#it{z}_{trigger #pi^{0}}");
2674 fhZTNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2677 new TH2F(
"hHbpZTNeutral",
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2678 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2694 (Form(
"hDeltaPhiUe%sNeutralPt",right.Data()),
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2695 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2700 new TH2F(Form(
"hXEUeNeutral%s",right.Data()),
"#it{x}_{#it{E}} for #pi^{0} associated",
2701 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2703 fhXEUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2706 new TH2F(Form(
"hHbpXEUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2707 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2712 new TH2F(Form(
"hZTUeNeutral%s",right.Data()),
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2713 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2715 fhZTUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2718 new TH2F(Form(
"hHbpZTUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2719 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2732 (
"hDeltaPhiUeLeftNeutralPt",
"#phi_{trigger} - #phi_{#Ueh^{0}} vs #it{p}_{T h^{0}} with neutral UE left side range of trigger particles",
2733 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2739 new TH2F(
"hXEUeNeutralLeft",
"#it{x}_{#it{E}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2740 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2746 new TH2F(
"hHbpXEUeNeutralLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with neutral UE left side of trigger",
2747 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2753 new TH2F(
"hZTUeNeutralLeft",
"#it{z}_{trigger h^{0}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2754 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2760 new TH2F(
"hHbpZTUeNeutralLeft",
"#xi = ln(1/#it{z}_{T}) with neutral UE left side of trigger",
2761 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2770 (
"hDeltaPhiPi0DecayNeutral",
"#phi_{Decay} - #phi_{h^{0}} vs #it{p}_{T Decay}",
2771 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2776 new TH2F(
"hXEPi0DecayNeutral",
"#it{x}_{#it{E}} for decay trigger",
2777 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2782 new TH2F(
"hZTPi0DecayNeutral",
"#it{z}_{trigger h^{0}} = #it{p}_{T h^{0}} / #it{p}_{T Decay}",
2783 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2799 Form(
"MC %s: generated trigger #it{p}_{T}",nameMC[i].
Data()),
2800 nptbins,ptmin,ptmax);
2801 fhMCPtTrigger[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
2804 Form(
"MC %s: generated trigger #phi",nameMC[i].
Data()),
2805 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2810 Form(
"MC %s: generated trigger #eta",nameMC[i].
Data()),
2811 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2818 Form(
"MC %s: generated trigger #it{p}_{T}, when not leading of primaries",nameMC[i].
Data()),
2819 nptbins,ptmin,ptmax);
2823 Form(
"MC %s: generated trigger #phi, when not leading of primaries",nameMC[i].
Data()),
2824 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2830 Form(
"MC %s: generated triogger #eta, when not leading of primaries",nameMC[i].
Data()),
2831 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2837 Form(
"MC %s: #eta_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].
Data()),
2838 nptbins,ptmin,ptmax,100,-1.,1.);
2843 Form(
"MC %s: phi_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].
Data()),
2844 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2849 Form(
"MC %s: phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",nameMC[i].
Data()),
2850 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
2855 Form(
"MC %s: #eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger} and #it{p}_{T assoc}",nameMC[i].
Data()),
2856 nptbins,ptmin,ptmax,ndeltaetabins ,deltaetamin,deltaetamax);
2861 Form(
"MC %s: #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",nameMC[i].
Data()),
2862 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2867 Form(
"MC %s: #phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",nameMC[i].
Data()),
2868 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2873 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons",nameMC[i].
Data()),
2874 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2879 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",nameMC[i].
Data()),
2880 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2885 Form(
"MC %s: #it{z}_{T} with charged hadrons",nameMC[i].
Data()),
2886 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2891 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons",nameMC[i].
Data()),
2892 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2897 Form(
"MC %s: #it{p}_{out} with triggers",nameMC[i].
Data()),
2898 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
2903 Form(
"MC %s: #Delta #phi with associated charged hadrons",nameMC[i].
Data()),
2904 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2936 new TH1F(Form(
"hMCUePart_%s",nameMC[i].
Data()),
2937 Form(
"MC %s: UE particles distribution vs #it{p}_{T trigger}",nameMC[i].
Data()),
2938 nptbins,ptmin,ptmax);
2940 fhMCUePart[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2943 new TH2F(Form(
"hMCPtXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2944 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2945 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2950 new TH2F(Form(
"hMCPtHbpXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2951 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2952 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2957 new TH2F(Form(
"hMCPtZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2958 Form(
"MC %s: #it{z}_{T} with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2959 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2964 new TH2F(Form(
"hMCPtHbpZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2965 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, Underlying Event %s",nameMC[i].
Data(),right.Data()),
2966 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2979 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
2980 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2985 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
2986 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2991 Form(
"MC %s: #it{z}_{T} with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
2992 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2997 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].
Data()),
2998 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3023 for( Int_t ice = 0 ; ice < nce ; ice++ )
3025 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3027 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3041 fhPtTriggerMixed =
new TH1F (
"hPtTriggerMixed",
"#it{p}_{T} distribution of trigger particles, used for mixing", nptbins,ptmin,ptmax);
3052 fhPtTriggerMixedBin =
new TH2F (
"hPtTriggerMixedBin",
"#it{p}_{T} distribution of trigger particles vs mixing bin", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
3056 fhPhiTriggerMixed =
new TH2F (
"hPhiTriggerMixed",
"#phi distribution of trigger Particles, used for mixing",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
3059 fhEtaTriggerMixed =
new TH2F (
"hEtaTriggerMixed",
"#eta distribution of trigger, used for mixing",nptbins,ptmin,ptmax, netabins,etamin,etamax);
3076 for( Int_t ice = 0 ; ice < nce ; ice++ )
3078 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3080 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3097 if( !
GetReader()->ListWithMixedEventsForTracksExists() )
3100 if( !
GetReader()->ListWithMixedEventsForCaloExists() )
3104 fhEventBin=
new TH1I(
"hEventBin",
"Number of triggers per bin(cen,vz,rp)",
3110 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of triggers mixed per event bin(cen,vz,rp)",
3116 fhEventMBBin=
new TH1I(
"hEventMBBin",
"Number of min bias events per bin(cen,vz,rp)",
3122 fhNtracksMB=
new TH2F(
"hNtracksMBEvent",
"Number of filtered tracks in MB event per event bin",ntrbins,trmin,trmax,
3131 fhNclustersMB=
new TH2F(
"hNclustersMBEvent",
"Number of filtered clusters in MB events per event bin",nclbins,clmin,clmax,
3140 (
"hMixDeltaPhiCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
3141 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
3147 (
"hMixDeltaPhiDeltaEtaCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",
3148 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3154 new TH2F(
"hMixXECharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks",
3155 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3161 new TH2F(
"hMixXEUeCharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks in Ue region",
3162 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3168 new TH2F(
"hMixHbpXECharged",
"mixed event : #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
3169 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3181 for(Int_t z = 0 ; z < nz ; z++)
3187 sz = Form(
"_vz%d",z);
3188 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
3195 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3203 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3212 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()),
3213 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3218 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()),
3219 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3230 return outputContainer;
3244 if(indexPhoton1!=-1 || indexPhoton2!=-1)
return kFALSE;
3246 AliDebug(1,Form(
"indexPhoton1 = %d, indexPhoton2 = %d", indexPhoton1, indexPhoton2));
3248 TObjArray * clusters = 0x0 ;
3252 for(Int_t iclus = 0; iclus < clusters->GetEntriesFast(); iclus++)
3254 AliVCluster * photon = (AliVCluster*) (clusters->At(iclus));
3289 AliFatal(
"STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!");
3371 for(Int_t ibin =
fNBkgBin+1; ibin < 20; ibin++)
3386 Int_t idTrig = trigger->GetCaloLabel(0);
3387 Float_t ptTrig = trigger->Pt();
3388 Float_t tofTrig = trigger->GetTime();
3395 for(Int_t iphoton = 0; iphoton < nphoton; iphoton++)
3397 AliAODPWG4ParticleCorrelation * photon1 = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iphoton));
3399 if(idTrig == photon1->GetCaloLabel(0))
continue;
3406 Float_t m02 = photon1->GetM02();
3412 Double_t tdiff = tofTrig - photon1->GetTime();
3435 Double_t phiTrig = 0 ;
3438 AliAODPWG4ParticleCorrelation* pLeading = 0;
3444 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3445 particle->SetLeadingParticle(kFALSE);
3449 if(check == 0)
continue;
3450 if(check == -1)
return kFALSE;
3453 if (particle->Pt() > ptTrig)
3455 ptTrig = particle->Pt() ;
3456 phiTrig = particle->Phi();
3458 pLeading = particle ;
3462 if(index < 0)
return kFALSE;
3466 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
3470 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3472 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3474 if(track->GetID() == pLeading->GetTrackLabel(0) || track->GetID() == pLeading->GetTrackLabel(1) ||
3475 track->GetID() == pLeading->GetTrackLabel(2) || track->GetID() == pLeading->GetTrackLabel(3) )
continue ;
3477 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
3480 if(phi < 0) phi+=TMath::TwoPi();
3485 Float_t deltaPhi = phiTrig-phi;
3486 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3487 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3489 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE;
3494 if(pt > ptTrig)
return kFALSE ;
3503 TObjArray * nePl = 0x0;
3504 if (pLeading->GetDetectorTag() ==
kPHOS )
3509 if(!nePl)
return kTRUE;
3511 for(Int_t ipr = 0;ipr < nePl->GetEntriesFast() ; ipr ++ )
3513 AliVCluster * cluster = (AliVCluster *) (nePl->At(ipr)) ;
3515 if(cluster->GetID() == pLeading->GetCaloLabel(0) || cluster->GetID() == pLeading->GetCaloLabel(1) )
continue ;
3521 if(phi < 0) phi+=TMath::TwoPi();
3529 Float_t deltaPhi = phiTrig-phi;
3530 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3531 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3533 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE ;
3538 if(pt > ptTrig)
return kFALSE ;
3544 pLeading->SetLeadingParticle(kTRUE);
3546 AliDebug(1,Form(
"\t particle AOD with index %d is leading with pT %2.2f",
fLeadingTriggerIndex, pLeading->Pt()));
3570 AliFatal(Form(
"No input particles in AOD with name branch < %s >, STOP",
GetInputAODName().
Data()));
3577 AliDebug(1,
"No particle AOD found!");
3581 AliDebug(1,Form(
"Begin hadron correlation analysis, fill histograms"));
3582 AliDebug(1,Form(
"n particle branch aod entries %d", naod));
3583 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks()->GetEntriesFast()));
3598 AliDebug(1,
"Leading was requested and not found");
3622 for( iaod = 0; iaod < naod; iaod++ )
3624 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3629 Float_t pt = particle->Pt();
3642 AliDebug(1,Form(
"%s Trigger : min %f, max %f, det %d",
3659 Float_t m02 = particle->GetM02();
3665 AliDebug(1,
"Pass the shower shape cut");
3674 if( !particle->IsIsolated() )
continue;
3678 AliDebug(1,
"Pass the isolation cut");
3688 if(! in ) continue ;
3690 AliDebug(1,
"Pass the fiducial cut");
3700 Bool_t okLeadHad = kTRUE;
3714 Int_t mcTag = particle->GetTag();
3715 Bool_t lostDecayPair = kFALSE;
3759 Float_t m02 = particle->GetM02();
3760 Float_t pTLeadTrackInCone = 0;
3761 Float_t pTSumTrackInCone = 0;
3762 Float_t pTLeadClusterInCone = 0;
3763 Float_t pTSumClusterInCone = 0;
3765 pTLeadTrackInCone = particle->GetChargedLeadPtInCone();
3766 pTLeadClusterInCone = particle->GetNeutralLeadPtInCone();
3768 pTSumTrackInCone = particle->GetChargedPtSumInCone();
3769 pTSumClusterInCone = particle->GetNeutralPtSumInCone();
3771 Float_t pTLeadInCone = pTLeadTrackInCone;
3772 if(pTLeadClusterInCone > pTLeadInCone) pTLeadInCone = pTLeadClusterInCone;
3773 Float_t pTSumInCone = pTSumTrackInCone + pTSumClusterInCone;
3776 Int_t pTSumBin = -1;
3777 Int_t pTLeadBin = -1;
3779 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
3797 Int_t decayTag = particle->DecayTag();
3798 if(decayTag < 0) decayTag = 0;
3804 Int_t pTLeadBinDecay = pTLeadBin+ibit*
fNBkgBin;
3805 Int_t pTSumBinDecay = pTSumBin+ibit*
fNBkgBin;
3814 Int_t pTLeadBinMC = pTLeadBin+mcIndex*
fNBkgBin;
3815 Int_t pTSumBinMC = pTSumBin+mcIndex*
fNBkgBin;
3856 AliFatal(Form(
"Lost decay Bit assigned to bad case, mcIndex %d",mcIndex));
3878 Int_t decayTag = particle->DecayTag();
3879 if(decayTag < 0) decayTag = 0;
3904 Float_t phi = particle->Phi();
3905 if( phi < 0 ) phi+=TMath::TwoPi();
3945 AliDebug(1,
"End fill histograms");
3957 AliDebug(1,
"Make trigger particle - charged hadron correlation");
3959 Float_t phiTrig = aodParticle->Phi();
3960 Float_t etaTrig = aodParticle->Eta();
3961 Float_t ptTrig = aodParticle->Pt();
3962 Int_t mcTag = aodParticle->GetTag();
3970 decayTag = aodParticle->DecayTag();
3971 if(decayTag < 0) decayTag = 0;
3980 Float_t pt = -100. ;
3981 Float_t phi = -100. ;
3982 Float_t eta = -100. ;
3983 Float_t deltaPhi = -100. ;
3985 TObjArray * reftracks = 0x0;
3989 Int_t evtIndex11 = -1 ;
3990 Int_t evtIndex12 = -1 ;
3991 Int_t evtIndex13 = -1 ;
3995 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
3996 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
3997 evtIndex13 =
GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ;
4009 Bool_t decayFound = kFALSE;
4012 decayFound =
GetDecayPhotonMomentum(aodParticle->GetCaloLabel(0),aodParticle->GetCaloLabel(1),aodParticle->GetDetectorTag());
4024 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
4026 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
4028 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
4032 if(phi < 0) phi+=TMath::TwoPi();
4035 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4038 if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) ||
4039 track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) )
4043 Int_t evtIndex2 = 0 ;
4047 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 )
4054 AliDebug(2,Form(
"Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4063 Int_t assocBin = -1;
4082 Int_t bin = assocBin*nz+vz;
4089 ULong_t status = track->GetStatus();
4090 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
4092 Int_t trackBC = track->GetTOFBunchCrossing(bz);
4095 if (okTOF && trackBC!=0) outTOF = 1;
4096 else if(okTOF && trackBC==0) outTOF = 0;
4105 deltaPhi = phiTrig-phi;
4112 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4113 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4116 eta, etaTrig, decayTag, track->GetHMPIDsignal(),
4117 outTOF, cenbin, mcTag);
4128 assocBin, decayTag, outTOF, mcTag);
4155 reftracks =
new TObjArray(0);
4157 reftracks->SetName(trackname.Data());
4158 reftracks->SetOwner(kFALSE);
4161 reftracks->Add(track);
4168 aodParticle->AddObjArray(reftracks);
4177 AliDebug(1,Form(
"Make trigger particle - charged hadron mixed event correlation"));
4184 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
4186 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
4188 if(!inputHandler)
return;
4196 if(eventBin < 0)
return;
4205 TList * poolCalo = 0;
4219 if( neutralMix && !poolCalo )
4220 AliWarning(
"Careful, cluster pool not available");
4222 Double_t ptTrig = aodParticle->Pt();
4223 Double_t etaTrig = aodParticle->Eta();
4224 Double_t phiTrig = aodParticle->Phi();
4225 if(phiTrig < 0.) phiTrig+=TMath::TwoPi();
4227 AliDebug(1,Form(
"Pool bin %d size %d, trigger trigger pt=%f, phi=%f, eta=%f",
4228 eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig));
4230 Double_t ptAssoc = -999.;
4231 Double_t phiAssoc = -999.;
4232 Double_t etaAssoc = -999.;
4233 Double_t deltaPhi = -999.;
4234 Double_t deltaEta = -999.;
4235 Double_t xE = -999.;
4241 for(Int_t ev=ev0; ev < pool->GetSize(); ev++)
4246 TObjArray* bgTracks =
static_cast<TObjArray*
>(pool->At(ev));
4247 TObjArray* bgCalo = 0;
4250 if( neutralMix && poolCalo )
4252 if(pool->GetSize()!=poolCalo->GetSize())
4253 AliWarning(
"Different size of calo and track pools");
4255 bgCalo =
static_cast<TObjArray*
>(poolCalo->At(ev));
4257 if(!bgCalo) AliDebug(1,Form(
"Event %d in calo pool not available?",ev));
4265 Int_t n=0, nfrac = 0;
4266 Bool_t isolated = kFALSE;
4267 Float_t coneptsum = 0, coneptlead = 0;
4270 kFALSE, aodParticle,
"",
4271 n,nfrac,coneptsum,coneptlead,isolated);
4278 if(!isolated) continue ;
4284 Int_t nTracks=bgTracks->GetEntriesFast();
4288 Bool_t leading = kTRUE;
4289 for(Int_t jlead = 0;jlead < nTracks; jlead++ )
4291 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ;
4293 ptAssoc = track->Pt();
4294 phiAssoc = track->Phi() ;
4295 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4299 deltaPhi = phiTrig-phiAssoc;
4300 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4301 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4303 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4312 if(ptAssoc > ptTrig)
4321 AliWarning(
"Leading of clusters requested but no clusters in mixed event");
4325 Int_t nClusters=bgCalo->GetEntriesFast();
4326 for(Int_t jlead = 0;jlead <nClusters; jlead++ )
4328 AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ;
4330 ptAssoc = cluster->Pt();
4331 phiAssoc = cluster->Phi() ;
4332 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4336 deltaPhi = phiTrig-phiAssoc;
4337 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4338 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4340 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4349 if(ptAssoc > ptTrig)
4358 if(!leading)
continue;
4379 for(Int_t j1 = 0;j1 <nTracks; j1++ )
4381 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ;
4383 if(!track)
continue;
4385 ptAssoc = track->Pt();
4386 etaAssoc = track->Eta();
4387 phiAssoc = track->Phi() ;
4388 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4390 deltaPhi = phiTrig-phiAssoc;
4391 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4392 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4393 deltaEta = etaTrig-etaAssoc;
4395 AliDebug(1,Form(
"deltaPhi= %f, deltaEta=%f",deltaPhi, deltaEta));
4406 xE = -ptAssoc/ptTrig*TMath::Cos(deltaPhi);
4409 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4423 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
4426 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4433 Int_t assocBin = -1;
4451 Int_t bin = assocBin*nz+vz;
4453 if(bin < 0) continue ;
4460 if(TMath::Abs(deltaEta) > 0.8)
4462 if(TMath::Abs(deltaEta) < 0.01)
4477 if(!pi0list) return ;
4479 Int_t npi0 = pi0list->GetEntriesFast();
4480 if(npi0 == 0) return ;
4482 AliDebug(1,Form(
"Particle - pi0 correlation, %d pi0's",npi0));
4484 Int_t evtIndex11 = 0 ;
4485 Int_t evtIndex12 = 0 ;
4488 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4489 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4492 Float_t pt = -100. ;
4493 Float_t zT = -100. ;
4494 Float_t phi = -100. ;
4495 Float_t eta = -100. ;
4496 Float_t xE = -100. ;
4497 Float_t hbpXE= -100. ;
4498 Float_t hbpZT= -100. ;
4500 Float_t ptTrig = aodParticle->Pt();
4501 Float_t phiTrig = aodParticle->Phi();
4502 Float_t etaTrig = aodParticle->Eta();
4503 Float_t deltaPhi= -100. ;
4504 Float_t deltaEta= -100. ;
4509 Bool_t decayFound = kFALSE;
4512 TObjArray * refpi0 = 0x0;
4517 for(Int_t iaod = 0; iaod < npi0 ; iaod++)
4519 AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod));
4521 Int_t evtIndex2 = 0 ;
4522 Int_t evtIndex3 = 0 ;
4525 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ;
4526 evtIndex3 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ;
4528 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 ||
4529 evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3)
4535 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4538 if(aodParticle->GetCaloLabel(0) >= 0 &&
4539 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(0) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(0))) continue ;
4541 if( aodParticle->GetCaloLabel(1) >= 0 &&
4542 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(1) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(1))) continue ;
4549 deltaEta = etaTrig-eta;
4550 deltaPhi = phiTrig-phi;
4551 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4552 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4569 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
4574 xE =-pt/ptTrig*TMath::Cos(deltaPhi);
4577 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4580 if( xE > 0 ) hbpXE = TMath::Log(1./xE);
4593 xE = -(pt/ptTrig)*TMath::Cos(randomphi);
4594 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
4618 refpi0 =
new TObjArray(0);
4620 refpi0->SetOwner(kFALSE);
4625 AliDebug(1,Form(
"Selected pi0: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4632 aodParticle->AddObjArray(refpi0);
4641 AliDebug(1,
"Make trigger particle - charged hadron correlation in AOD MC level");
4645 AliDebug(1,Form(
" *** bad label ***: label %d", label));
4652 if(histoIndex < fMCGenTypeMin || histoIndex >
fMCGenTypeMax) return ;
4654 AliStack * stack = 0x0 ;
4655 TParticle * primary = 0x0 ;
4656 TClonesArray * mcparticles = 0x0 ;
4657 AliAODMCParticle * aodprimary = 0x0 ;
4659 Double_t eprim = 0 ;
4660 Double_t ptprim = 0 ;
4661 Double_t phiprim = 0 ;
4662 Double_t etaprim = 0 ;
4664 Int_t iParticle = 0 ;
4666 Bool_t leadTrig = kTRUE;
4673 AliFatal(
"Stack not available, is the MC handler called? STOP");
4678 nTracks = stack->GetNprimary();
4679 if( label >= stack->GetNtrack() )
4682 AliInfo(Form(
"*** large label ***: label %d, n tracks %d", label, stack->GetNtrack()));
4686 primary = stack->Particle(label);
4689 AliInfo(Form(
" *** no primary ***: label %d", label));
4693 eprim = primary->Energy();
4694 ptprim = primary->Pt();
4695 etaprim = primary->Eta();
4696 phiprim = primary->Phi();
4697 if(phiprim < 0) phiprim+=TMath::TwoPi();
4699 if(ptprim < 0.01 || eprim < 0.01) return ;
4701 for (iParticle = 0 ; iParticle < nTracks ; iParticle++)
4703 TParticle * particle = stack->Particle(iParticle);
4706 if( particle->GetStatusCode() != 1 )
continue ;
4709 Int_t
pdg = particle->GetPdgCode();
4710 Int_t
charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
4711 if(charge == 0)
continue;
4718 if( !inCTS )
continue;
4721 if ( TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode() == 22 )
continue ;
4723 if ( label == iParticle )
continue;
4725 Float_t phi = particle->Phi();
4726 if(phi < 0) phi+=TMath::TwoPi();
4730 if ( !lead ) leadTrig = kFALSE;
4739 if( !mcparticles )
return;
4741 nTracks = mcparticles->GetEntriesFast() ;
4743 if( label >= nTracks )
4746 AliInfo(Form(
" *** large label ***: label %d, n tracks %d", label,nTracks));
4751 aodprimary = (AliAODMCParticle*) mcparticles->At(label);
4754 AliInfo(Form(
" *** no AOD primary ***: label %d", label));
4758 eprim = aodprimary->E();
4759 ptprim = aodprimary->Pt();
4760 etaprim = aodprimary->Eta();
4761 phiprim = aodprimary->Phi();
4762 if(phiprim < 0) phiprim+=TMath::TwoPi();
4764 if(ptprim < 0.01 || eprim < 0.01) return ;
4766 for (iParticle = 0; iParticle < nTracks; iParticle++)
4768 AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle);
4770 if (!part->IsPhysicalPrimary() )
continue;
4772 if ( part->Charge() == 0 )
continue;
4774 fMomentum.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->E());
4779 if( !inCTS )
continue;
4782 Int_t indexmother = part->GetMother();
4783 if ( indexmother > -1 )
4785 Int_t
pdg = part->GetPdgCode();
4786 Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode();
4787 if (TMath::Abs(pdg) == 11 && mPdg == 22)
continue;
4790 if ( label == iParticle )
continue;
4792 Float_t phi = part->Phi();
4793 if(phi < 0) phi+=TMath::TwoPi();
4797 if ( !lead ) leadTrig = kFALSE;
4812 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4819 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4830 AliDebug(1,Form(
"Not leading primary trigger: pT %2.2f, phi %2.2f, eta %2.2f",
4831 ptprim,phiprim*TMath::RadToDeg(),etaprim));
4840 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4847 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4866 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4877 printf(
"Do Decay-hadron correlation ? %d\n",
fPi0Trigger) ;
4878 printf(
"Select absolute leading for cluster triggers ? %d or Near Side %d\n",
4900 AliWarning(
"n = larger than 19 or too small, set to 19");
4910 if(ibin <= fNAssocPtBins || ibin >= 0)
4916 AliWarning(Form(
"Bin number too large %d > %d or small, nothing done", ibin,
fNAssocPtBins)) ;
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
Time cut in ns.
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::fgkMaxNDeca