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(),
190 fAODNamepTInConeHisto(
"")
209 for(Int_t i = 0; i < 7; i++)
269 Float_t phiAssoc, Float_t phiTrig, Float_t deltaPhi,
270 Float_t etaAssoc, Float_t etaTrig,
271 Int_t decayTag, Float_t hmpidSignal, Int_t outTOF,
272 Int_t cen, Int_t mcTag)
274 Float_t deltaEta = etaTrig-etaAssoc;
275 Float_t deltaPhiOrg = phiTrig-phiAssoc;
307 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
323 if(
GetReader()->IsPileUpFromSPDOrEMCal())
328 if(
GetReader()->IsPileUpFromSPDAndEMCal())
333 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
338 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
343 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
361 if(
GetReader()->IsPileUpFromSPDOrEMCal())
366 if(
GetReader()->IsPileUpFromSPDAndEMCal())
371 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
376 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
381 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
411 Double_t dphiBrad = -100;
414 dphiBrad = atan2(sin(deltaPhiOrg), cos(deltaPhiOrg))/TMath::Pi();
415 if( TMath::Abs(dphiBrad) > 0.325 && TMath::Abs(dphiBrad) < 0.475 )
420 if( dphiBrad < -1./3 ) dphiBrad += 2;
433 if(TMath::Abs(deltaEta)> 0.8)
436 if(TMath::Abs(deltaEta)< 0.01)
451 if( hmpidSignal > 0 )
457 if(phiAssoc > 5*TMath::DegToRad() && phiAssoc < 20*TMath::DegToRad())
477 Float_t mcTrigPt, Float_t mcTrigPhi, Float_t mcTrigEta,
478 Int_t histoIndex, Bool_t lostDecayPair)
489 if( mcAssocPhi < 0 ) mcAssocPhi+=TMath::TwoPi();
491 Float_t mcdeltaPhi= mcTrigPhi-mcAssocPhi;
492 if(mcdeltaPhi <= -TMath::PiOver2()) mcdeltaPhi+=TMath::TwoPi();
493 if(mcdeltaPhi > 3*TMath::PiOver2()) mcdeltaPhi-=TMath::TwoPi();
497 if( mcAssocPt > mcTrigPt && mcdeltaPhi < TMath::PiOver2() ) lead = kFALSE;
502 if ( mcAssocPt < fMinAssocPt || mcAssocPt >
fMaxAssocPt )
return lead ;
503 if ( mcAssocPt <
GetReader()->GetCTSPtMin())
return lead ;
508 if(TMath::Abs(mcAssocPt -mcTrigPt ) < 1e-6 &&
510 TMath::Abs(mcAssocEta-mcTrigEta) < 1e-6)
return lead ;
512 Float_t mcxE =-mcAssocPt/mcTrigPt*TMath::Cos(mcdeltaPhi);
513 Float_t mchbpXE =-100 ;
514 if(mcxE > 0 ) mchbpXE = TMath::Log(1./mcxE);
516 Float_t mczT = mcAssocPt/mcTrigPt ;
517 Float_t mchbpZT =-100 ;
518 if(mczT > 0 ) mchbpZT = TMath::Log(1./mczT);
520 Double_t mcpout = mcAssocPt*TMath::Sin(mcdeltaPhi) ;
522 AliDebug(1,Form(
"Charged hadron: track Pt %f, track Phi %f, phi trigger %f. Cuts: delta phi %2.2f < %2.2f < %2.2f",
601 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
602 Double_t mcUezT = mcAssocPt/mcTrigPt;
605 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
650 Double_t mcUexE = -(mcAssocPt/mcTrigPt)*TMath::Cos(randomphi);
651 Double_t mcUezT = mcAssocPt/mcTrigPt;
654 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
697 Int_t bin, Int_t decayTag,
698 Int_t outTOF, Int_t mcTag)
701 Float_t zT = ptAssoc/ptTrig ;
702 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(deltaPhi);
703 Float_t pout = ptAssoc*TMath::Sin(deltaPhi) ;
706 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
709 Float_t hbpXE = -100;
710 Float_t hbpZT = -100;
712 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
713 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
722 if((deltaPhi > 5*TMath::Pi()/6.) && (deltaPhi < 7*TMath::Pi()/6.))
759 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
778 if(
GetReader()->IsPileUpFromSPDOrEMCal())
784 if(
GetReader()->IsPileUpFromSPDAndEMCal())
790 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
796 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
802 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
858 Float_t deltaPhi, Int_t cen, Int_t outTOF, Int_t mcTag)
865 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
866 Double_t uezT = ptAssoc/ptTrig;
869 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
907 if(vtxBC == 0 || vtxBC==AliVTrack::kTOFBCNA)
923 if(
GetReader()->IsPileUpFromSPDOrEMCal())
928 if(
GetReader()->IsPileUpFromSPDAndEMCal())
933 if(
GetReader()->IsPileUpFromSPDAndNotEMCal())
938 if(
GetReader()->IsPileUpFromEMCalAndNotSPD())
943 if(
GetReader()->IsPileUpFromNotSPDAndNotEMCal())
972 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
973 Double_t uezT = ptAssoc/ptTrig;
976 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1006 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1009 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1020 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1023 AliWarning(Form(
"Careful!!, negative xE %2.2f for left-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1034 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1037 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-up UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1048 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
1051 AliWarning(Form(
"Careful!!, negative xE %2.2f for right-down UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
1067 Float_t zTDecay1 = -100, zTDecay2 = -100;
1068 if(ptDecay1 > 0) zTDecay1 = ptAssoc/ptDecay1 ;
1069 if(ptDecay2 > 0) zTDecay2 = ptAssoc/ptDecay2 ;
1071 Float_t deltaPhiDecay1 =
fDecayMom1.Phi()-phiAssoc;
1072 if(deltaPhiDecay1< -TMath::PiOver2()) deltaPhiDecay1+=TMath::TwoPi();
1073 if(deltaPhiDecay1>3*TMath::PiOver2()) deltaPhiDecay1-=TMath::TwoPi();
1075 Float_t deltaPhiDecay2 =
fDecayMom2.Phi()-phiAssoc;
1076 if(deltaPhiDecay2< -TMath::PiOver2()) deltaPhiDecay2+=TMath::TwoPi();
1077 if(deltaPhiDecay2>3*TMath::PiOver2()) deltaPhiDecay2-=TMath::TwoPi();
1079 Float_t xEDecay1 =-zTDecay1*TMath::Cos(deltaPhiDecay1);
1080 Float_t xEDecay2 =-zTDecay2*TMath::Cos(deltaPhiDecay2);
1082 if(bChargedOrNeutral)
1087 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1105 AliDebug(2,Form(
"deltaPhoton1 = %f, deltaPhoton2 = %f", deltaPhiDecay1, deltaPhiDecay2));
1125 Float_t zT, Float_t hbpZT,
1130 Float_t xE =-ptAssoc/ptTrig*TMath::Cos(randomphi);
1131 Float_t hbpXE = -100;
1132 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
1173 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1174 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1176 if(!inputHandler) return ;
1184 if(eventBin < 0)
return;
1188 TObjArray * mixEventTracks =
new TObjArray;
1201 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1203 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1205 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1209 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1211 AliAODPWG4Particle * mixedTrack =
new AliAODPWG4Particle(track->Px(),track->Py(),track->Pz(),0);
1212 mixedTrack->SetDetectorTag(
kCTS);
1213 mixedTrack->SetChargedBit(track->Charge()>0);
1214 mixEventTracks->Add(mixedTrack);
1223 pool->AddFirst(mixEventTracks);
1231 TClonesArray * tmp =
static_cast<TClonesArray*
>(pool->Last()) ;
1232 pool->RemoveLast() ;
1255 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
1256 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
1258 if(!inputHandler) return ;
1266 if(eventBin < 0)
return;
1268 TObjArray * mixEventCalo =
new TObjArray;
1279 for(Int_t ipr = 0;ipr < pl->GetEntriesFast() ; ipr ++ )
1281 AliVCluster * calo = (AliVCluster *) (pl->At(ipr)) ;
1293 Double_t vertex[]={0,0,0};
1300 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
1302 AliAODPWG4Particle * mixedCalo =
new AliAODPWG4Particle(
fMomentum);
1303 mixedCalo->SetDetectorTag(
kEMCAL);
1304 mixEventCalo->Add(mixedCalo);
1313 poolCalo->AddFirst(mixEventCalo);
1321 TClonesArray * tmp =
static_cast<TClonesArray*
>(poolCalo->Last()) ;
1322 poolCalo->RemoveLast() ;
1333 Float_t etaTrig = particle->Eta();
1334 Float_t ptTrig = particle->Pt();
1335 Float_t phiTrig = particle->Phi();
1336 if(phiTrig < 0 ) phiTrig+= TMath::TwoPi();
1338 Float_t ptLeadHad = 0 ;
1339 Float_t dphiLeadHad= -100 ;
1340 Float_t phiLeadHad = -100 ;
1341 Float_t etaLeadHad = -100 ;
1344 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
1346 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
1348 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
1352 if(phi < 0 ) phi+= TMath::TwoPi();
1354 Float_t deltaPhi = phiTrig-phi;
1360 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1361 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1363 if(pt > ptLeadHad && deltaPhi > TMath::PiOver2())
1367 dphiLeadHad= deltaPhi;
1389 AliDebug(1,Form(
"pT %2.2f, phi %2.2f, eta %2.2f, nTracks away %d, total tracks %d",
1391 AliDebug(1,Form(
"\t pT trig %2.2f, Dphi (trigger-hadron) %2.2f, Deta (trigger-hadron) %2.2f",
1392 ptTrig, dphiLeadHad*TMath::RadToDeg(), etaLeadHad-etaTrig));
1393 AliDebug(1,Form(
"\t cuts pT: min %2.2f, max %2.2f; DPhi: min %2.2f, max %2.2f",
1399 if( nTrack == 0 )
return kFALSE;
1401 if( ptLeadHad < fMinLeadHadPt || ptLeadHad >
fMaxLeadHadPt )
return kFALSE;
1405 if( dphiLeadHad < fMinLeadHadPhi || dphiLeadHad >
fMaxLeadHadPhi )
return kFALSE;
1418 const Int_t buffersize = 560;
1419 char onePar[buffersize] ;
1421 snprintf(onePar,buffersize,
"--- AliAnaPaticleHadronCorrelation ---:") ;
1429 snprintf(onePar,buffersize,
"Isolated Trigger? %d;",
fSelectIsolated) ;
1433 snprintf(onePar,buffersize,
"Name of AOD Pi0 Branch %s;",
fPi0AODBranchName.Data());
1437 snprintf(onePar,buffersize,
"Select absolute leading for cluster triggers ? %d or Near Side Leading %d;",
1440 snprintf(onePar,buffersize,
"Associated particle pt bins %d: ",
fNAssocPtBins) ;
1453 return new TObjString(parList) ;
1462 TList * outputContainer =
new TList() ;
1463 outputContainer->SetName(
"CorrelationHistos") ;
1487 TString nameMC[] = {
"Photon",
"Pi0",
"Pi0Decay",
"Eta",
"EtaDecay",
"OtherDecay",
"Electron",
"Hadron",
"Pi0DecayLostPair",
"EtaDecayLostPair"};
1488 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"} ;
1489 TString pileUpName[] = {
"SPD",
"EMCAL",
"SPDOrEMCAL",
"SPDAndEMCAL",
"SPDAndNotEMCAL",
"EMCALAndNotSPD",
"NotSPDAndNotEMCAL"} ;
1491 TString parTitle = Form(
"#it{R} = %2.2f",
GetIsolationCut()->GetConeSize());
1503 fhPtTriggerInput =
new TH1F(
"hPtTriggerInput",
"Input trigger #it{p}_{T}", nptbins,ptmin,ptmax);
1509 fhPtTriggerSSCut =
new TH1F(
"hPtTriggerSSCut",
"Trigger #it{p}_{T} after #lambda^{2}_{0} cut", nptbins,ptmin,ptmax);
1516 fhPtTriggerIsoCut =
new TH1F(
"hPtTriggerIsoCut",
"Trigger #it{p}_{T} after isolation (and #lambda^{2}_{0} cut)", nptbins,ptmin,ptmax);
1521 fhPtTriggerFidCut =
new TH1F(
"hPtTriggerFidCut",
"Trigger #it{p}_{T} after fiducial (isolation and #lambda^{2}_{0}) cut", nptbins,ptmin,ptmax);
1525 fhPtTrigger =
new TH1F(
"hPtTrigger",
"#it{p}_{T} distribution of trigger particles (after opposite hadron leading cut and rest)", nptbins,ptmin,ptmax);
1526 fhPtTrigger->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1531 fhMassPtTrigger =
new TH2F(
"hMassPtTrigger",
"2 photons invariant mass vs p_{T}^{trig}",
1532 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1553 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
1556 (Form(
"hPtLeadCone_Bin%d",ibin),
1557 Form(
"cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1564 (Form(
"hSumPtCone_Bin%d",ibin),
1565 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1573 for(Int_t idecay = 0; idecay <
fNDecayBits; idecay++)
1575 Int_t bindecay = ibin+idecay*
fNBkgBin;
1578 (Form(
"hPtLeadCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1579 Form(
"Decay bit %d, cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, %s",
1586 (Form(
"hSumPtCone_Bin%d_DecayBit%d",ibin,
fDecayBits[idecay]),
1587 Form(
"Decay bit %d, in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, %s",
1601 (Form(
"hPtLeadCone_Bin%d_MC%s",ibin, nameMC[imc].Data()),
1602 Form(
"in cone %2.2f<#it{p}_{T}^{leading}<%2.2f GeV/#it{c}, MC %s, %s",
1609 (Form(
"hSumPtCone_Bin%d_MC%s",ibin,nameMC[imc].Data()),
1610 Form(
"in cone %2.2f <#Sigma #it{p}_{T}< %2.2f GeV/#it{c}, MC %s, %s",
1624 fhPtTriggerMC[i] =
new TH1F(Form(
"hPtTrigger_MC%s",nameMC[i].Data()),
1625 Form(
"#it{p}_{T} distribution of trigger particles, trigger origin is %s",nameMC[i].Data()),
1626 nptbins,ptmin,ptmax);
1627 fhPtTriggerMC[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
1633 Form(
"2 photons invariant mass, trigger origin is %s",nameMC[i].Data()),
1634 nptbins,ptmin,ptmax,nmassbins,massmin,massmax);
1647 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d",
fDecayBits[ibit]),
1648 nptbins,ptmin,ptmax);
1657 Form(
"#it{p}_{T} distribution of trigger particles, decay Bit %d, trigger origin is %s",
fDecayBits[ibit], nameMC[i].Data()),
1658 nptbins,ptmin,ptmax);
1674 fhPtTriggerBin =
new TH2F (
"hPtTriggerBin",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
1679 fhPhiTrigger =
new TH2F (
"hPhiTrigger",
"#phi distribution of trigger Particles",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
1683 fhEtaTrigger =
new TH2F (
"hEtaTrigger",
"#eta distribution of trigger",nptbins,ptmin,ptmax, netabins,etamin,etamax);
1689 fhPtTriggerCentrality =
new TH2F(
"hPtTriggerCentrality",
"Trigger particle #it{p}_{T} vs centrality",nptbins,ptmin,ptmax,100,0.,100) ;
1694 fhPtTriggerEventPlane =
new TH2F(
"hPtTriggerEventPlane",
"Trigger particle #it{p}_{T} vs event plane angle",nptbins,ptmin,ptmax, 100,0.,TMath::Pi()) ;
1699 fhTriggerEventPlaneCentrality =
new TH2F(
"hTriggerEventPlaneCentrality",
"Trigger particle centrality vs event plane angle",100,0.,100,100,0.,TMath::Pi()) ;
1708 fhPtLeadingOppositeHadron =
new TH2F(
"hPtTriggerPtLeadingOppositeHadron",
"Leading hadron opposite to trigger vs trigger #it{p}_{T}",
1709 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1715 nptbins,ptmin,ptmax);
1720 netabins,etamin,etamax,nphibins,phimin,phimax);
1726 fhPtDiffPhiLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffPhiTriggerLeadingOppositeHadron",
"#phi_{trigger}-#phi_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1727 nptbins,ptmin,ptmax,ndeltaphibins,deltaphimin,deltaphimax);
1732 fhPtDiffEtaLeadingOppositeHadron =
new TH2F(
"hPtTriggerDiffEtaTriggerPhiLeadingOppositeHadron",
"#eta_{trigger}-#eta_{leading opposite hadron} vs #it{p}_{T}^{trig}",
1733 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1742 (
"hDeltaPhiDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}}",
1743 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1748 (
"hDeltaPhiDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #phi_{trigger} - #phi_{h^{#pm}, #it{p}_{TA}>3 GeV/#it{c}}",
1749 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
1754 (
"hPhiCharged",
"#phi_{h^{#pm}} vs #it{p}_{T #pm}",
1755 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
1757 fhPhiCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1760 (
"hEtaCharged",
"#eta_{h^{#pm}} vs #it{p}_{T #pm}",
1761 nptbins,ptmin,ptmax,100,-1.,1.);
1763 fhEtaCharged->SetXTitle(
"#it{p}_{T #pm} (GeV/#it{c})");
1766 (
"hDeltaPhiCharged",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
1767 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1772 (
"hDeltaPhiChargedPtA3GeV",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1773 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1779 (
"hDeltaPhiChargedPt",
"#phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",
1780 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1785 (
"hDeltaEtaCharged",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}",
1786 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1791 (
"hDeltaEtaChargedPtA3GeV",
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}",
1792 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
1797 new TH2F(
"hXECharged",
"#it{x}_{#it{E}} for charged tracks",
1798 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1800 fhXECharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1803 new TH2F(
"hXECharged_Cone2",
"#it{x}_{#it{E}} for charged tracks in cone 2 (5#pi/6-7#pi/6)",
1804 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1809 new TH2F(
"hXEPositiveCharged",
"#it{x}_{#it{E}} for positive charged tracks",
1810 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1815 new TH2F(
"hXENegativeCharged",
"#it{x}_{#it{E}} for negative charged tracks",
1816 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1821 new TH2F(
"hHbpXECharged",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
1822 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1827 new TH2F(
"hHbpXECharged_Cone2",
"#xi = ln(1/#it{x}_{#it{E}}) with charged hadrons in cone 2 (5#pi/6-7#pi/6)",
1828 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1833 new TH2F(
"hZTCharged",
"#it{z}_{T} for charged tracks",
1834 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1839 new TH2F(
"hZTPositiveCharged",
"#it{z}_{T} for positive charged tracks",
1840 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1845 new TH2F(
"hZTNegativeCharged",
"#it{z}_{T} for negative charged tracks",
1846 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1851 new TH2F(
"hHbpZTCharged",
"#xi = ln(1/#it{z}_{T}) with charged hadrons",
1852 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1857 new TH2F(
"hPtTrigPout",
"Pout with triggers",
1858 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
1860 fhPtTrigPout->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1863 new TH2F(
"hPtTrigCharged",
"trigger and charged tracks pt distribution",
1864 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
1887 Form(
"#Delta #phi for charged tracks, trigger origin is %s",nameMC[i].Data()),
1888 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
1893 fhXEChargedMC[i] =
new TH2F(Form(
"hXECharged_MC%s",nameMC[i].Data()),
1894 Form(
"#it{x}_{#it{E}} for charged tracks, trigger origin is %s",nameMC[i].Data()),
1895 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1897 fhXEChargedMC[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1901 Form(
"#it{x}_{#it{E}} for charged tracks in right UE cone, trigger origin is %s",nameMC[i].Data()),
1902 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1908 Form(
"#it{x}_{#it{E}} for charged tracks in left UE cone, trigger origin is %s",nameMC[i].Data()),
1909 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1932 fhUePart =
new TH1F(
"hUePart",
"UE particles distribution vs pt trig",
1933 nptbins,ptmin,ptmax);
1935 fhUePart->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1938 (Form(
"hDeltaPhiUe%sChargedPt",right.Data()),
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}}",
1939 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1944 new TH2F(Form(
"hXEUeCharged%s",right.Data()),
"#it{x}_{#it{E}} for Underlying Event",
1945 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1947 fhXEUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1950 new TH2F(Form(
"hHbpXEUeCharged%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for Underlying Event",
1951 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1956 new TH2F(Form(
"hZTUeCharged%s",right.Data()),
"#it{z}_{T} for Underlying Event",
1957 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
1959 fhZTUeCharged->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
1962 new TH2F(Form(
"hHbpZTUeCharged%s",right.Data()),
"#xi = ln(1/#it{z}_{T}) for Underlying Event",
1963 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
1977 (
"hDeltaPhiUeLeftChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left side range of trigger particles",
1978 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1984 (
"hDeltaPhiUeLeftUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Up side range of trigger particles",
1985 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1991 (
"hDeltaPhiUeRightUpChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Up side range of trigger particles",
1992 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
1998 (
"hDeltaPhiUeLeftDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE left Down side range of trigger particles",
1999 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2005 (
"hDeltaPhiUeRightDownChargedPt",
"#phi_{trigger} - #phi_{#Ueh^{#pm}} vs #it{p}_{T Ueh^{#pm}} with UE right Down side range of trigger particles",
2006 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2012 new TH2F(
"hXEUeChargedLeft",
"#it{x}_{#it{E}} with UE left side of trigger",
2013 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2019 new TH2F(
"hXEUeChargedLeftUp",
"#it{x}_{#it{E}} with UE left Up side of trigger",
2020 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2026 new TH2F(
"hXEUeChargedRightUp",
"#it{x}_{#it{E} h^{#pm}} with UE right Up side of trigger",
2027 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2033 new TH2F(
"hXEUeChargedLeftDown",
"#it{x}_{#it{E}} with UE left Down side of trigger",
2034 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2040 new TH2F(
"hXEUeChargedRightDown",
"#it{x}_{#it{E} h^{#pm}} with UE right Down side of trigger",
2041 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2047 new TH2F(
"hHbpXEUeChargedLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with charged UE left side of trigger",
2048 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2054 new TH2F(
"hZTUeChargedLeft",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T Ueh^{#pm}} / #it{p}_{T trigger} with UE left side of trigger",
2055 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2061 new TH2F(
"hHbpZTUeChargedLeft",
"#xi = ln(1/#it{z}_{T}) with charged UE left side of trigger",
2062 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2071 (
"hDeltaPhiChargedOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC!=0",
2072 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2077 (
"hDeltaPhiChargedPtA3GeVOtherBC",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC!=0",
2078 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2083 new TH2F(
"hPtTrigChargedOtherBC",
"trigger and charged tracks pt distribution, track BC!=0",
2084 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2089 new TH2F(
"hXEChargedOtherBC",
"#it{x}_{#it{E}} for charged tracks, track BC!=0",
2090 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2095 new TH2F(
"hXEUeChargedOtherBC",
"#it{x}_{#it{E}} for Underlying Event, track BC!=0",
2096 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2101 new TH2F(
"hZTChargedOtherBC",
"#it{z}_{T} for charged tracks, track BC!=0",
2102 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2107 new TH2F(
"hZTUeChargedOtherBC",
"#it{z}_{T} for Underlying Event, track BC!=0",
2108 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2121 (
"hDeltaPhiChargedBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2122 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2127 (
"hDeltaPhiChargedPtA3GeVBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2128 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2133 new TH2F(
"hPtTrigChargedBC0",
"trigger and charged tracks pt distribution, track BC==0",
2134 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2139 new TH2F(
"hXEChargedBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2140 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2145 new TH2F(
"hXEUeChargedBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2146 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2151 new TH2F(
"hZTChargedBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2152 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2157 new TH2F(
"hZTUeChargedBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2158 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2170 fhPtTriggerVtxBC0 =
new TH1F(
"hPtTriggerVtxBC0",
"#it{p}_{T} distribution of trigger particles", nptbins,ptmin,ptmax);
2174 (
"hDeltaPhiChargedVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, track BC==0",
2175 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2180 (
"hDeltaPhiChargedPtA3GeVVtxBC0",
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, #it{p}_{TA}>3 GeV/#it{c}, track BC==0",
2181 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2186 new TH2F(
"hPtTrigChargedVtxBC0",
"trigger and charged tracks pt distribution, track BC==0",
2187 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2192 new TH2F(
"hXEChargedVtxBC0",
"#it{x}_{#it{E}} for charged tracks, track BC==0",
2193 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2198 new TH2F(
"hXEUeChargedVtxBC0",
"#it{x}_{#it{E}} for Underlying Event, track BC==0",
2199 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2204 new TH2F(
"hZTChargedVtxBC0",
"#it{z}_{T} for charged tracks, track BC==0",
2205 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2210 new TH2F(
"hZTUeChargedVtxBC0",
"#it{z}_{T} for Underlying Event, track BC==0",
2211 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2224 for(Int_t i = 0 ; i < 7 ; i++)
2226 fhPtTriggerPileUp[i] =
new TH1F(Form(
"hPtTriggerPileUp%s",pileUpName[i].Data()),
2227 Form(
"#it{p}_{T} distribution of trigger particles, %s Pile-Up event",pileUpName[i].Data()), nptbins,ptmin,ptmax);
2232 Form(
"#phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].Data()),
2233 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2239 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()),
2240 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2246 Form(
"#eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger}, %s Pile-Up event",pileUpName[i].Data()),
2247 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2253 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()),
2254 nptbins,ptmin,ptmax,ndeltaetabins,deltaetamin,deltaetamax);
2259 fhXEChargedPileUp[i] =
new TH2F(Form(
"hXEChargedPileUp%s",pileUpName[i].Data()),
2260 Form(
"#it{x}_{#it{E}} for charged tracks, %s Pile-Up event",pileUpName[i].Data()),
2261 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2267 Form(
"#it{x}_{#it{E}} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()),
2268 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2273 fhZTChargedPileUp[i] =
new TH2F(Form(
"hZTChargedPileUp%s",pileUpName[i].Data()),
2274 Form(
"#it{z}_{T} for charged tracks, %s Pile-Up event",pileUpName[i].Data()),
2275 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2281 Form(
"#it{z}_{T} for Underlying Event, %s Pile-Up event",pileUpName[i].Data()),
2282 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2288 Form(
"trigger and charged tracks pt distribution, %s Pile-Up event",pileUpName[i].Data()),
2289 nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
2306 for(Int_t im=0; im<nMultiBins; im++)
2309 (Form(
"hDeltaPhiCharged_Mult%d",im),Form(
"#Delta #phi charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2314 (Form(
"hDeltaEtaCharged_Mult%d",im),Form(
"#Delta #eta charged Mult bin %d",im), nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2319 (Form(
"hXECharged_Mult%d",im),Form(
"#it{x}_{E} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2320 fhXEMult[im]->SetYTitle(
"#it{x}_{E}");
2321 fhXEMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2324 (Form(
"hXEUeCharged_Mult%d",im),Form(
"#it{x}_{E} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2326 fhXEUeMult[im]->SetXTitle(
"#it{p}_{T trigger}(GeV/#it{c})");
2329 (Form(
"hZTCharged_Mult%d",im),Form(
"#it{z}_{T} charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2330 fhZTMult[im]->SetYTitle(
"#it{z}_{T}");
2331 fhZTMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2334 (Form(
"hZTUeCharged_Mult%d",im),Form(
"#it{z}_{T} UE charged Mult bin %d",im), nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2336 fhZTUeMult[im]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2340 outputContainer->Add(
fhXEMult [im]);
2342 outputContainer->Add(
fhZTMult [im]);
2349 fhAssocPtBkg =
new TH2F(
"hAssocPtBkg",
" Trigger #it{p}_{T} vs associated hadron #it{p}_{T} from background",
2350 nptbins, ptmin, ptmax,nptbins,ptmin,ptmax);
2351 fhAssocPtBkg->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2352 fhAssocPtBkg->SetYTitle(
"#it{p}_{T associated} (GeV/#it{c})");
2355 fhDeltaPhiBrad =
new TH2F(
"hDeltaPhiBrad",
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi vs #it{p}_{T trigger} ",
2356 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2358 fhDeltaPhiBrad->SetYTitle(
"atan2(sin(#Delta #phi), cos(#Delta #phi))/#pi");
2395 for(Int_t z = 0 ; z < nz ; z++)
2401 sz = Form(
"_vz%d",z);
2402 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2409 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins,deltaetamin,deltaetamax);
2415 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2425 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()),
2426 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2431 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()),
2432 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2444 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2454 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()),
2455 nptbins, ptmin, ptmax,288, -1.0/3.0, 5.0/3.0);
2464 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()),
2465 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2470 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()),
2471 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2487 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2493 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2505 for(Int_t z = 0 ; z < nz ; z++)
2507 sz = Form(
"_vz%d",z);
2508 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
2510 fhXEVZ[z] =
new TH2F(Form(
"hXE%s", sz.Data()),
2511 Form(
"#it{x}_{#it{E}} vs #it{p}_{T trigger}%s", tz.Data()),
2512 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2513 fhXEVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2514 fhXEVZ[z]->SetYTitle(
"#it{x}_{#it{E}}");
2516 fhZTVZ[z] =
new TH2F(Form(
"hZT%s",sz.Data()),
2517 Form(
"#it{z}_{T} vs #it{p}_{T trigger}%s", tz.Data()),
2518 nptbins, ptmin, ptmax,nxeztbins,xeztmin,xeztmax);
2519 fhZTVZ[z]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2520 fhZTVZ[z]->SetYTitle(
"#it{z}_{T}");
2522 outputContainer->Add(
fhXEVZ[z]);
2523 outputContainer->Add(
fhZTVZ[z]);
2531 (
"hPtPi0DecayRatio",
"#it{p}_{T} of #pi^{0} and the ratio of pt for two decay",
2532 nptbins,ptmin,ptmax, 100,0.,2.);
2538 (
"hDeltaPhiPi0DecayCharged",
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}",
2539 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2544 new TH2F(
"hXEPi0DecayCharged",
"#it{x}_{#it{E}} Decay",
2545 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2550 new TH2F(
"hZTPi0DecayCharged",
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}",
2551 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2565 (Form(
"hDeltaPhiDecayCharged_bit%d",
fDecayBits[ibit]),
2566 Form(
"#phi_{Decay} - #phi_{h^{#pm}} vs #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2567 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2572 new TH2F(Form(
"hXEDecayCharged_bit%d",
fDecayBits[ibit]),
2573 Form(
"#it{x}_{#it{E}} Decay, Bit %d",
fDecayBits[ibit]),
2574 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2579 new TH2F(Form(
"hZTDecayCharged_bit%d",
fDecayBits[ibit]),
2580 Form(
"#it{z}_{trigger h^{#pm}} = #it{p}_{T h^{#pm}} / #it{p}_{T Decay}, Bit %d",
fDecayBits[ibit]),
2581 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2595 (
"hDeltaPhiDeltaEtaNeutral",
"#phi_{trigger} - #phi_{h^{0}} vs #eta_{trigger} - #eta_{h^{0}}",
2596 ndeltaphibins ,deltaphimin,deltaphimax, ndeltaetabins ,deltaetamin,deltaetamax);
2601 (
"hPhiNeutral",
"#phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2602 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2604 fhPhiNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2607 (
"hEtaNeutral",
"#eta_{#pi^{0}} vs #it{p}_{T #pi^{0}}",
2608 nptbins,ptmin,ptmax,200,-1.,1.);
2610 fhEtaNeutral->SetXTitle(
"#it{p}_{T #pi^{0}} (GeV/#it{c})");
2613 (
"hDeltaPhiNeutral",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T trigger}",
2614 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2619 (
"hDeltaPhiNeutralPt",
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2620 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2625 (
"hDeltaEtaNeutral",
"#eta_{trigger} - #eta_{#pi^{0}} vs #it{p}_{T trigger}",
2626 nptbins,ptmin,ptmax, ndeltaetabins ,deltaetamin,deltaetamax);
2631 new TH2F(
"hXENeutral",
"#it{x}_{#it{E}} for #pi^{0} associated",
2632 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2634 fhXENeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2637 new TH2F(
"hHbpXENeutral",
"#xi = ln(1/#it{x}_{#it{E}})for #pi^{0} associated",
2638 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2643 new TH2F(
"hZTNeutral",
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2644 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2645 fhZTNeutral->SetYTitle(
"#it{z}_{trigger #pi^{0}}");
2646 fhZTNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2649 new TH2F(
"hHbpZTNeutral",
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2650 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2666 (Form(
"hDeltaPhiUe%sNeutralPt",right.Data()),
"#phi_{trigger} - #phi_{#pi^{0}} vs #it{p}_{T #pi^{0}}}",
2667 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2672 new TH2F(Form(
"hXEUeNeutral%s",right.Data()),
"#it{x}_{#it{E}} for #pi^{0} associated",
2673 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2675 fhXEUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2678 new TH2F(Form(
"hHbpXEUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2679 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2684 new TH2F(Form(
"hZTUeNeutral%s",right.Data()),
"#it{z}_{trigger #pi} = #it{p}_{T #pi^{0}} / #it{p}_{T trigger} for #pi^{0} associated",
2685 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2687 fhZTUeNeutral->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2690 new TH2F(Form(
"hHbpZTUeNeutral%s",right.Data()),
"#xi = ln(1/#it{x}_{#it{E}}) for #pi^{0} associated",
2691 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2704 (
"hDeltaPhiUeLeftNeutralPt",
"#phi_{trigger} - #phi_{#Ueh^{0}} vs #it{p}_{T h^{0}} with neutral UE left side range of trigger particles",
2705 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2711 new TH2F(
"hXEUeNeutralLeft",
"#it{x}_{#it{E}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2712 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2718 new TH2F(
"hHbpXEUeNeutralLeft",
"#xi = ln(1/#it{x}_{#it{E}}) with neutral UE left side of trigger",
2719 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2725 new TH2F(
"hZTUeNeutralLeft",
"#it{z}_{trigger h^{0}} = #it{p}_{T Ueh^{0}} / #it{p}_{T trigger} with neutral UE left side of trigger",
2726 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2732 new TH2F(
"hHbpZTUeNeutralLeft",
"#xi = ln(1/#it{z}_{T}) with neutral UE left side of trigger",
2733 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2742 (
"hDeltaPhiPi0DecayNeutral",
"#phi_{Decay} - #phi_{h^{0}} vs #it{p}_{T Decay}",
2743 nptbins,ptmin,ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
2748 new TH2F(
"hXEPi0DecayNeutral",
"#it{x}_{#it{E}} for decay trigger",
2749 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2754 new TH2F(
"hZTPi0DecayNeutral",
"#it{z}_{trigger h^{0}} = #it{p}_{T h^{0}} / #it{p}_{T Decay}",
2755 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2770 fhMCPtTrigger[i] =
new TH1F (Form(
"hMCPtTrigger_%s",nameMC[i].Data()),
2771 Form(
"MC %s: generated trigger #it{p}_{T}",nameMC[i].Data()),
2772 nptbins,ptmin,ptmax);
2773 fhMCPtTrigger[i]->SetXTitle(
"#it{p}_{T}^{trig} (GeV/#it{c})");
2775 fhMCPhiTrigger[i] =
new TH2F (Form(
"hMCPhiTrigger_%s",nameMC[i].Data()),
2776 Form(
"MC %s: generated trigger #phi",nameMC[i].Data()),
2777 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2781 fhMCEtaTrigger[i] =
new TH2F (Form(
"hMCEtaTrigger_%s",nameMC[i].Data()),
2782 Form(
"MC %s: generated trigger #eta",nameMC[i].Data()),
2783 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2790 Form(
"MC %s: generated trigger #it{p}_{T}, when not leading of primaries",nameMC[i].Data()),
2791 nptbins,ptmin,ptmax);
2795 Form(
"MC %s: generated trigger #phi, when not leading of primaries",nameMC[i].Data()),
2796 nptbins,ptmin,ptmax, nphibins,phimin,phimax);
2802 Form(
"MC %s: generated triogger #eta, when not leading of primaries",nameMC[i].Data()),
2803 nptbins,ptmin,ptmax, netabins,etamin,etamax);
2808 fhMCEtaCharged[i] =
new TH2F (Form(
"hMCEtaCharged_%s",nameMC[i].Data()),
2809 Form(
"MC %s: #eta_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].Data()),
2810 nptbins,ptmin,ptmax,100,-1.,1.);
2814 fhMCPhiCharged[i] =
new TH2F(Form(
"hMCPhiCharged_%s",nameMC[i].Data()),
2815 Form(
"MC %s: phi_{h^{#pm}} vs #it{p}_{T #pm}",nameMC[i].Data()),
2816 nptbins,ptmin,ptmax,180,0,TMath::TwoPi());
2821 Form(
"MC %s: phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",nameMC[i].Data()),
2822 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
2827 Form(
"MC %s: #eta_{trigger} - #eta_{h^{#pm}} vs #it{p}_{T trigger} and #it{p}_{T assoc}",nameMC[i].Data()),
2828 nptbins,ptmin,ptmax,ndeltaetabins ,deltaetamin,deltaetamax);
2833 Form(
"MC %s: #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",nameMC[i].Data()),
2834 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2839 Form(
"MC %s: #phi_{trigger} - #phi_{#h^{#pm}} vs #it{p}_{T h^{#pm}}",nameMC[i].Data()),
2840 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2844 fhMCPtXECharged[i] =
new TH2F (Form(
"hMCPtXECharged_%s",nameMC[i].Data()),
2845 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons",nameMC[i].Data()),
2846 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2851 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",nameMC[i].Data()),
2852 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2856 fhMCPtZTCharged[i] =
new TH2F(Form(
"hMCPtZTCharged_%s",nameMC[i].Data()),
2857 Form(
"MC %s: #it{z}_{T} with charged hadrons",nameMC[i].Data()),
2858 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2863 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons",nameMC[i].Data()),
2864 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2868 fhMCPtTrigPout[i] =
new TH2F(Form(
"hMCPtTrigPout_%s",nameMC[i].Data()),
2869 Form(
"MC %s: #it{p}_{out} with triggers",nameMC[i].Data()),
2870 nptbins,ptmin,ptmax,nptbins,-1.*ptmax/2.,ptmax/2.);
2875 Form(
"MC %s: #Delta #phi with associated charged hadrons",nameMC[i].Data()),
2876 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
2908 new TH1F(Form(
"hMCUePart_%s",nameMC[i].Data()),
2909 Form(
"MC %s: UE particles distribution vs #it{p}_{T trigger}",nameMC[i].Data()),
2910 nptbins,ptmin,ptmax);
2912 fhMCUePart[i]->SetXTitle(
"#it{p}_{T trigger} (GeV/#it{c})");
2915 new TH2F(Form(
"hMCPtXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2916 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2917 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2922 new TH2F(Form(
"hMCPtHbpXEUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2923 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2924 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2929 new TH2F(Form(
"hMCPtZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2930 Form(
"MC %s: #it{z}_{T} with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2931 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2936 new TH2F(Form(
"hMCPtHbpZTUeCharged%s_%s",right.Data(),nameMC[i].Data()),
2937 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, Underlying Event %s",nameMC[i].Data(),right.Data()),
2938 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2951 Form(
"MC %s: #it{x}_{#it{E}} with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2952 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2957 Form(
"MC %s: #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2958 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2963 Form(
"MC %s: #it{z}_{T} with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2964 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
2969 Form(
"MC %s: #xi = ln(1/#it{z}_{T}) with charged hadrons, with UE left side range of trigger particles",nameMC[i].Data()),
2970 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
2995 for( Int_t ice = 0 ; ice < nce ; ice++ )
2997 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
2999 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3013 fhPtTriggerMixed =
new TH1F (
"hPtTriggerMixed",
"#it{p}_{T} distribution of trigger particles, used for mixing", nptbins,ptmin,ptmax);
3024 fhPtTriggerMixedBin =
new TH2F (
"hPtTriggerMixedBin",
"#it{p}_{T} distribution of trigger particles vs mixing bin", nptbins,ptmin,ptmax,nMixBins,0,nMixBins);
3028 fhPhiTriggerMixed =
new TH2F (
"hPhiTriggerMixed",
"#phi distribution of trigger Particles, used for mixing",nptbins,ptmin,ptmax, nphibins,phimin,phimax);
3031 fhEtaTriggerMixed =
new TH2F (
"hEtaTriggerMixed",
"#eta distribution of trigger, used for mixing",nptbins,ptmin,ptmax, netabins,etamin,etamax);
3048 for( Int_t ice = 0 ; ice < nce ; ice++ )
3050 for( Int_t ivz = 0 ; ivz < nvz ; ivz++ )
3052 for( Int_t irp = 0 ; irp < nrp ; irp++ )
3069 if( !
GetReader()->ListWithMixedEventsForTracksExists() )
3072 if( !
GetReader()->ListWithMixedEventsForCaloExists() )
3076 fhEventBin=
new TH1I(
"hEventBin",
"Number of triggers per bin(cen,vz,rp)",
3082 fhEventMixBin=
new TH1I(
"hEventMixBin",
"Number of triggers mixed per event bin(cen,vz,rp)",
3088 fhEventMBBin=
new TH1I(
"hEventMBBin",
"Number of min bias events per bin(cen,vz,rp)",
3094 fhNtracksMB=
new TH2F(
"hNtracksMBEvent",
"Number of filtered tracks in MB event per event bin",ntrbins,trmin,trmax,
3103 fhNclustersMB=
new TH2F(
"hNclustersMBEvent",
"Number of filtered clusters in MB events per event bin",nclbins,clmin,clmax,
3112 (
"hMixDeltaPhiCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #it{p}_{T trigger}",
3113 nptbins,ptmin,ptmax,ndeltaphibins ,deltaphimin,deltaphimax);
3119 (
"hMixDeltaPhiDeltaEtaCharged",
"Mixed event : #phi_{trigger} - #phi_{h^{#pm}} vs #eta_{trigger} - #eta_{h^{#pm}}",
3120 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3126 new TH2F(
"hMixXECharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks",
3127 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3133 new TH2F(
"hMixXEUeCharged",
"Mixed event : #it{x}_{#it{E}} for charged tracks in Ue region",
3134 nptbins,ptmin,ptmax,nxeztbins,xeztmin,xeztmax);
3140 new TH2F(
"hMixHbpXECharged",
"mixed event : #xi = ln(1/#it{x}_{#it{E}}) with charged hadrons",
3141 nptbins,ptmin,ptmax,nhbpbins,hbpmin,hbpmax);
3153 for(Int_t z = 0 ; z < nz ; z++)
3159 sz = Form(
"_vz%d",z);
3160 tz = Form(
", #it{v}_{#it{z}} bin %d",z);
3167 ndeltaphibins ,deltaphimin,deltaphimax,ndeltaetabins ,deltaetamin,deltaetamax);
3175 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3184 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()),
3185 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3190 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()),
3191 nptbins, ptmin, ptmax, ndeltaphibins ,deltaphimin,deltaphimax);
3202 return outputContainer;
3216 if(indexPhoton1!=-1 || indexPhoton2!=-1)
return kFALSE;
3218 AliDebug(1,Form(
"indexPhoton1 = %d, indexPhoton2 = %d", indexPhoton1, indexPhoton2));
3220 TObjArray * clusters = 0x0 ;
3224 for(Int_t iclus = 0; iclus < clusters->GetEntriesFast(); iclus++)
3226 AliVCluster * photon = (AliVCluster*) (clusters->At(iclus));
3261 AliFatal(
"STOP!: You want to use CTS tracks in analysis but not read!! \n!!Check the configuration file!!");
3343 for(Int_t ibin =
fNBkgBin+1; ibin < 20; ibin++)
3358 Int_t idTrig = trigger->GetCaloLabel(0);
3359 Float_t ptTrig = trigger->Pt();
3360 Float_t tofTrig = trigger->GetTime();
3367 for(Int_t iphoton = 0; iphoton < nphoton; iphoton++)
3369 AliAODPWG4ParticleCorrelation * photon1 = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iphoton));
3371 if(idTrig == photon1->GetCaloLabel(0))
continue;
3378 Float_t m02 = photon1->GetM02();
3384 Double_t tdiff = tofTrig - photon1->GetTime();
3407 Double_t phiTrig = 0 ;
3410 AliAODPWG4ParticleCorrelation* pLeading = 0;
3416 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3417 particle->SetLeadingParticle(kFALSE);
3421 if(check == 0)
continue;
3422 if(check == -1)
return kFALSE;
3425 if (particle->Pt() > ptTrig)
3427 ptTrig = particle->Pt() ;
3428 phiTrig = particle->Phi();
3430 pLeading = particle ;
3434 if(index < 0)
return kFALSE;
3438 if(phiTrig < 0 ) phiTrig += TMath::TwoPi();
3442 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3444 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3446 if(track->GetID() == pLeading->GetTrackLabel(0) || track->GetID() == pLeading->GetTrackLabel(1) ||
3447 track->GetID() == pLeading->GetTrackLabel(2) || track->GetID() == pLeading->GetTrackLabel(3) )
continue ;
3449 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
3452 if(phi < 0) phi+=TMath::TwoPi();
3457 Float_t deltaPhi = phiTrig-phi;
3458 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3459 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3461 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE;
3466 if(pt > ptTrig)
return kFALSE ;
3475 TObjArray * nePl = 0x0;
3476 if (pLeading->GetDetectorTag() ==
kPHOS )
3481 if(!nePl)
return kTRUE;
3483 for(Int_t ipr = 0;ipr < nePl->GetEntriesFast() ; ipr ++ )
3485 AliVCluster * cluster = (AliVCluster *) (nePl->At(ipr)) ;
3487 if(cluster->GetID() == pLeading->GetCaloLabel(0) || cluster->GetID() == pLeading->GetCaloLabel(1) )
continue ;
3493 if(phi < 0) phi+=TMath::TwoPi();
3501 Float_t deltaPhi = phiTrig-phi;
3502 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
3503 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
3505 if(pt > ptTrig && deltaPhi < TMath::PiOver2())
return kFALSE ;
3510 if(pt > ptTrig)
return kFALSE ;
3516 pLeading->SetLeadingParticle(kTRUE);
3518 AliDebug(1,Form(
"\t particle AOD with index %d is leading with pT %2.2f",
fLeadingTriggerIndex, pLeading->Pt()));
3542 AliFatal(Form(
"No input particles in AOD with name branch < %s >, STOP",
GetInputAODName().Data()));
3549 AliDebug(1,
"No particle AOD found!");
3553 AliDebug(1,Form(
"Begin hadron correlation analysis, fill histograms"));
3554 AliDebug(1,Form(
"n particle branch aod entries %d", naod));
3555 AliDebug(1,Form(
"In CTS aod entries %d",
GetCTSTracks()->GetEntriesFast()));
3570 AliDebug(1,
"Leading was requested and not found");
3594 for( iaod = 0; iaod < naod; iaod++ )
3596 AliAODPWG4ParticleCorrelation* particle = (AliAODPWG4ParticleCorrelation*) (
GetInputAODBranch()->At(iaod));
3601 Float_t pt = particle->Pt();
3614 AliDebug(1,Form(
"%s Trigger : min %f, max %f, det %d",
3631 Float_t m02 = particle->GetM02();
3637 AliDebug(1,
"Pass the shower shape cut");
3646 if( !particle->IsIsolated() )
continue;
3650 AliDebug(1,
"Pass the isolation cut");
3660 if(! in ) continue ;
3662 AliDebug(1,
"Pass the fiducial cut");
3672 Bool_t okLeadHad = kTRUE;
3686 Int_t mcTag = particle->GetTag();
3687 Bool_t lostDecayPair = kFALSE;
3731 Float_t m02 = particle->GetM02();
3732 Float_t pTLeadTrackInCone = 0;
3733 Float_t pTSumTrackInCone = 0;
3734 Float_t pTLeadClusterInCone = 0;
3735 Float_t pTSumClusterInCone = 0;
3740 Float_t pTLeadInCone = pTLeadTrackInCone;
3741 if(pTLeadClusterInCone > pTLeadInCone) pTLeadInCone = pTLeadClusterInCone;
3742 Float_t pTSumInCone = pTSumTrackInCone + pTSumClusterInCone;
3745 Int_t pTSumBin = -1;
3746 Int_t pTLeadBin = -1;
3748 for(Int_t ibin = 0; ibin <
fNBkgBin; ibin++)
3766 Int_t decayTag = particle->DecayTag();
3767 if(decayTag < 0) decayTag = 0;
3773 Int_t pTLeadBinDecay = pTLeadBin+ibit*
fNBkgBin;
3774 Int_t pTSumBinDecay = pTSumBin+ibit*
fNBkgBin;
3783 Int_t pTLeadBinMC = pTLeadBin+mcIndex*
fNBkgBin;
3784 Int_t pTSumBinMC = pTSumBin+mcIndex*
fNBkgBin;
3825 AliFatal(Form(
"Lost decay Bit assigned to bad case, mcIndex %d",mcIndex));
3847 Int_t decayTag = particle->DecayTag();
3848 if(decayTag < 0) decayTag = 0;
3873 Float_t phi = particle->Phi();
3874 if( phi < 0 ) phi+=TMath::TwoPi();
3914 AliDebug(1,
"End fill histograms");
3926 AliDebug(1,
"Make trigger particle - charged hadron correlation");
3928 Float_t phiTrig = aodParticle->Phi();
3929 Float_t etaTrig = aodParticle->Eta();
3930 Float_t ptTrig = aodParticle->Pt();
3931 Int_t mcTag = aodParticle->GetTag();
3939 decayTag = aodParticle->DecayTag();
3940 if(decayTag < 0) decayTag = 0;
3949 Float_t pt = -100. ;
3950 Float_t phi = -100. ;
3951 Float_t eta = -100. ;
3952 Float_t deltaPhi = -100. ;
3954 TObjArray * reftracks = 0x0;
3958 Int_t evtIndex11 = -1 ;
3959 Int_t evtIndex12 = -1 ;
3960 Int_t evtIndex13 = -1 ;
3964 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
3965 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
3966 evtIndex13 =
GetMixedEvent()->EventIndex(aodParticle->GetTrackLabel(0)) ;
3978 Bool_t decayFound = kFALSE;
3981 decayFound =
GetDecayPhotonMomentum(aodParticle->GetCaloLabel(0),aodParticle->GetCaloLabel(1),aodParticle->GetDetectorTag());
3993 for(Int_t ipr = 0;ipr <
GetCTSTracks()->GetEntriesFast() ; ipr ++ )
3995 AliVTrack * track = (AliVTrack *) (
GetCTSTracks()->At(ipr)) ;
3997 fTrackVector.SetXYZ(track->Px(),track->Py(),track->Pz());
4001 if(phi < 0) phi+=TMath::TwoPi();
4004 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4007 if( track->GetID() == aodParticle->GetTrackLabel(0) || track->GetID() == aodParticle->GetTrackLabel(1) ||
4008 track->GetID() == aodParticle->GetTrackLabel(2) || track->GetID() == aodParticle->GetTrackLabel(3) )
4012 Int_t evtIndex2 = 0 ;
4016 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 || evtIndex13 == evtIndex2 )
4023 AliDebug(2,Form(
"Selected charge for momentum imbalance: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4032 Int_t assocBin = -1;
4051 Int_t bin = assocBin*nz+vz;
4058 ULong_t status = track->GetStatus();
4059 Bool_t okTOF = ( (status & AliVTrack::kTOFout) == AliVTrack::kTOFout ) ;
4061 Int_t trackBC = track->GetTOFBunchCrossing(bz);
4064 if (okTOF && trackBC!=0) outTOF = 1;
4065 else if(okTOF && trackBC==0) outTOF = 0;
4074 deltaPhi = phiTrig-phi;
4081 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4082 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4085 eta, etaTrig, decayTag, track->GetHMPIDsignal(),
4086 outTOF, cenbin, mcTag);
4097 assocBin, decayTag, outTOF, mcTag);
4124 reftracks =
new TObjArray(0);
4126 reftracks->SetName(trackname.Data());
4127 reftracks->SetOwner(kFALSE);
4130 reftracks->Add(track);
4137 aodParticle->AddObjArray(reftracks);
4146 AliDebug(1,Form(
"Make trigger particle - charged hadron mixed event correlation"));
4153 AliAnalysisManager * manager = AliAnalysisManager::GetAnalysisManager();
4155 AliInputEventHandler * inputHandler =
dynamic_cast<AliInputEventHandler*
>(manager->GetInputEventHandler());
4157 if(!inputHandler)
return;
4165 if(eventBin < 0)
return;
4174 TList * poolCalo = 0;
4188 if( neutralMix && !poolCalo )
4189 AliWarning(
"Careful, cluster pool not available");
4191 Double_t ptTrig = aodParticle->Pt();
4192 Double_t etaTrig = aodParticle->Eta();
4193 Double_t phiTrig = aodParticle->Phi();
4194 if(phiTrig < 0.) phiTrig+=TMath::TwoPi();
4196 AliDebug(1,Form(
"Pool bin %d size %d, trigger trigger pt=%f, phi=%f, eta=%f",
4197 eventBin,pool->GetSize(), ptTrig,phiTrig,etaTrig));
4199 Double_t ptAssoc = -999.;
4200 Double_t phiAssoc = -999.;
4201 Double_t etaAssoc = -999.;
4202 Double_t deltaPhi = -999.;
4203 Double_t deltaEta = -999.;
4204 Double_t xE = -999.;
4210 for(Int_t ev=ev0; ev < pool->GetSize(); ev++)
4215 TObjArray* bgTracks =
static_cast<TObjArray*
>(pool->At(ev));
4216 TObjArray* bgCalo = 0;
4219 if( neutralMix && poolCalo )
4221 if(pool->GetSize()!=poolCalo->GetSize())
4222 AliWarning(
"Different size of calo and track pools");
4224 bgCalo =
static_cast<TObjArray*
>(poolCalo->At(ev));
4226 if(!bgCalo) AliDebug(1,Form(
"Event %d in calo pool not available?",ev));
4234 Int_t n=0, nfrac = 0;
4235 Bool_t isolated = kFALSE;
4236 Float_t coneptsum = 0, coneptlead = 0;
4239 kFALSE, aodParticle,
"",
4240 n,nfrac,coneptsum,coneptlead,isolated);
4247 if(!isolated) continue ;
4253 Int_t nTracks=bgTracks->GetEntriesFast();
4257 Bool_t leading = kTRUE;
4258 for(Int_t jlead = 0;jlead < nTracks; jlead++ )
4260 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(jlead) ;
4262 ptAssoc = track->Pt();
4263 phiAssoc = track->Phi() ;
4264 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4268 deltaPhi = phiTrig-phiAssoc;
4269 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4270 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4272 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4281 if(ptAssoc > ptTrig)
4290 AliWarning(
"Leading of clusters requested but no clusters in mixed event");
4294 Int_t nClusters=bgCalo->GetEntriesFast();
4295 for(Int_t jlead = 0;jlead <nClusters; jlead++ )
4297 AliAODPWG4Particle *cluster= (AliAODPWG4Particle*) bgCalo->At(jlead) ;
4299 ptAssoc = cluster->Pt();
4300 phiAssoc = cluster->Phi() ;
4301 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4305 deltaPhi = phiTrig-phiAssoc;
4306 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4307 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4309 if(ptAssoc > ptTrig && deltaPhi < TMath::PiOver2())
4318 if(ptAssoc > ptTrig)
4327 if(!leading)
continue;
4348 for(Int_t j1 = 0;j1 <nTracks; j1++ )
4350 AliAODPWG4Particle *track = (AliAODPWG4Particle*) bgTracks->At(j1) ;
4352 if(!track)
continue;
4354 ptAssoc = track->Pt();
4355 etaAssoc = track->Eta();
4356 phiAssoc = track->Phi() ;
4357 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
4359 deltaPhi = phiTrig-phiAssoc;
4360 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4361 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4362 deltaEta = etaTrig-etaAssoc;
4364 AliDebug(1,Form(
"deltaPhi= %f, deltaEta=%f",deltaPhi, deltaEta));
4375 xE = -ptAssoc/ptTrig*TMath::Cos(deltaPhi);
4378 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4392 Double_t uexE = -(ptAssoc/ptTrig)*TMath::Cos(randomphi);
4395 AliWarning(Form(
"Careful!!, negative xE %2.2f for left UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4402 Int_t assocBin = -1;
4420 Int_t bin = assocBin*nz+vz;
4422 if(bin < 0) continue ;
4429 if(TMath::Abs(deltaEta) > 0.8)
4431 if(TMath::Abs(deltaEta) < 0.01)
4446 if(!pi0list) return ;
4448 Int_t npi0 = pi0list->GetEntriesFast();
4449 if(npi0 == 0) return ;
4451 AliDebug(1,Form(
"Particle - pi0 correlation, %d pi0's",npi0));
4453 Int_t evtIndex11 = 0 ;
4454 Int_t evtIndex12 = 0 ;
4457 evtIndex11 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(0)) ;
4458 evtIndex12 =
GetMixedEvent()->EventIndexForCaloCluster(aodParticle->GetCaloLabel(1)) ;
4461 Float_t pt = -100. ;
4462 Float_t zT = -100. ;
4463 Float_t phi = -100. ;
4464 Float_t eta = -100. ;
4465 Float_t xE = -100. ;
4466 Float_t hbpXE= -100. ;
4467 Float_t hbpZT= -100. ;
4469 Float_t ptTrig = aodParticle->Pt();
4470 Float_t phiTrig = aodParticle->Phi();
4471 Float_t etaTrig = aodParticle->Eta();
4472 Float_t deltaPhi= -100. ;
4473 Float_t deltaEta= -100. ;
4478 Bool_t decayFound = kFALSE;
4481 TObjArray * refpi0 = 0x0;
4486 for(Int_t iaod = 0; iaod < npi0 ; iaod++)
4488 AliAODPWG4Particle* pi0 = (AliAODPWG4Particle*) (pi0list->At(iaod));
4490 Int_t evtIndex2 = 0 ;
4491 Int_t evtIndex3 = 0 ;
4494 evtIndex2 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(0)) ;
4495 evtIndex3 =
GetMixedEvent()->EventIndexForCaloCluster(pi0->GetCaloLabel(1)) ;
4497 if (evtIndex11 == evtIndex2 || evtIndex12 == evtIndex2 ||
4498 evtIndex11 == evtIndex3 || evtIndex12 == evtIndex3)
4504 if(pt < fMinAssocPt || pt >
fMaxAssocPt) continue ;
4507 if(aodParticle->GetCaloLabel(0) >= 0 &&
4508 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(0) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(0))) continue ;
4510 if( aodParticle->GetCaloLabel(1) >= 0 &&
4511 (pi0->GetCaloLabel(0) == aodParticle->GetCaloLabel(1) || pi0->GetCaloLabel(1) == aodParticle->GetCaloLabel(1))) continue ;
4518 deltaEta = etaTrig-eta;
4519 deltaPhi = phiTrig-phi;
4520 if(deltaPhi <= -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
4521 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
4538 if(zT > 0 ) hbpZT = TMath::Log(1./zT);
4543 xE =-pt/ptTrig*TMath::Cos(deltaPhi);
4546 AliWarning(Form(
"Careful!!, negative xE %2.2f for right UE cos(dPhi %2.2f) = %2.2f, check correlation dPhi limits %f to %f",
4549 if( xE > 0 ) hbpXE = TMath::Log(1./xE);
4562 xE = -(pt/ptTrig)*TMath::Cos(randomphi);
4563 if(xE > 0 ) hbpXE = TMath::Log(1./xE);
4587 refpi0 =
new TObjArray(0);
4589 refpi0->SetOwner(kFALSE);
4594 AliDebug(1,Form(
"Selected pi0: pt %2.2f, phi %2.2f, eta %2.2f",pt,phi,eta));
4601 aodParticle->AddObjArray(refpi0);
4610 AliDebug(1,
"Make trigger particle - charged hadron correlation in AOD MC level");
4614 AliDebug(1,Form(
" *** bad label ***: label %d", label));
4621 if(histoIndex < fMCGenTypeMin || histoIndex >
fMCGenTypeMax) return ;
4623 AliStack * stack = 0x0 ;
4624 TParticle * primary = 0x0 ;
4625 TClonesArray * mcparticles = 0x0 ;
4626 AliAODMCParticle * aodprimary = 0x0 ;
4628 Double_t eprim = 0 ;
4629 Double_t ptprim = 0 ;
4630 Double_t phiprim = 0 ;
4631 Double_t etaprim = 0 ;
4633 Int_t iParticle = 0 ;
4635 Bool_t leadTrig = kTRUE;
4642 AliFatal(
"Stack not available, is the MC handler called? STOP");
4647 nTracks = stack->GetNprimary();
4648 if( label >= stack->GetNtrack() )
4651 AliInfo(Form(
"*** large label ***: label %d, n tracks %d", label, stack->GetNtrack()));
4655 primary = stack->Particle(label);
4658 AliInfo(Form(
" *** no primary ***: label %d", label));
4662 eprim = primary->Energy();
4663 ptprim = primary->Pt();
4664 etaprim = primary->Eta();
4665 phiprim = primary->Phi();
4666 if(phiprim < 0) phiprim+=TMath::TwoPi();
4668 if(ptprim < 0.01 || eprim < 0.01) return ;
4670 for (iParticle = 0 ; iParticle < nTracks ; iParticle++)
4672 TParticle * particle = stack->Particle(iParticle);
4675 if( particle->GetStatusCode() != 1 )
continue ;
4678 Int_t pdg = particle->GetPdgCode();
4679 Int_t
charge = (Int_t) TDatabasePDG::Instance()->GetParticle(pdg)->Charge();
4680 if(charge == 0)
continue;
4687 if( !inCTS )
continue;
4690 if ( TMath::Abs(pdg) == 11 && stack->Particle(particle->GetFirstMother())->GetPdgCode() == 22 )
continue ;
4692 if ( label == iParticle )
continue;
4694 Float_t phi = particle->Phi();
4695 if(phi < 0) phi+=TMath::TwoPi();
4699 if ( !lead ) leadTrig = kFALSE;
4708 if( !mcparticles )
return;
4710 nTracks = mcparticles->GetEntriesFast() ;
4712 if( label >= nTracks )
4715 AliInfo(Form(
" *** large label ***: label %d, n tracks %d", label,nTracks));
4720 aodprimary = (AliAODMCParticle*) mcparticles->At(label);
4723 AliInfo(Form(
" *** no AOD primary ***: label %d", label));
4727 eprim = aodprimary->E();
4728 ptprim = aodprimary->Pt();
4729 etaprim = aodprimary->Eta();
4730 phiprim = aodprimary->Phi();
4731 if(phiprim < 0) phiprim+=TMath::TwoPi();
4733 if(ptprim < 0.01 || eprim < 0.01) return ;
4735 for (iParticle = 0; iParticle < nTracks; iParticle++)
4737 AliAODMCParticle *part = (AliAODMCParticle*) mcparticles->At(iParticle);
4739 if (!part->IsPhysicalPrimary() )
continue;
4741 if ( part->Charge() == 0 )
continue;
4743 fMomentum.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->E());
4748 if( !inCTS )
continue;
4751 Int_t indexmother = part->GetMother();
4752 if ( indexmother > -1 )
4754 Int_t pdg = part->GetPdgCode();
4755 Int_t mPdg = ((AliAODMCParticle*) mcparticles->At(indexmother)) ->GetPdgCode();
4756 if (TMath::Abs(pdg) == 11 && mPdg == 22)
continue;
4759 if ( label == iParticle )
continue;
4761 Float_t phi = part->Phi();
4762 if(phi < 0) phi+=TMath::TwoPi();
4766 if ( !lead ) leadTrig = kFALSE;
4781 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4788 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4799 AliDebug(1,Form(
"Not leading primary trigger: pT %2.2f, phi %2.2f, eta %2.2f",
4800 ptprim,phiprim*TMath::RadToDeg(),etaprim));
4809 if (histoIndex == 2 && 8 >=
fMCGenTypeMin && 8 <= fMCGenTypeMax )
4816 else if(histoIndex == 4 && 9 >=
fMCGenTypeMin && 9 <= fMCGenTypeMax )
4835 printf(
"**** Print %s %s ****\n", GetName(), GetTitle() ) ;
4846 printf(
"Do Decay-hadron correlation ? %d\n",
fPi0Trigger) ;
4847 printf(
"Select absolute leading for cluster triggers ? %d or Near Side %d\n",
4869 AliWarning(
"n = larger than 19 or too small, set to 19");
4879 if(ibin <= fNAssocPtBins || ibin >= 0)
4885 AliWarning(Form(
"Bin number too large %d > %d or small, nothing done", ibin,
fNAssocPtBins)) ;
4895 Float_t & pTLeadTrackInCone, Float_t & pTSumTrackInCone)
4898 if(!reftracks) return ;
4900 for(Int_t itrack=0; itrack < reftracks->GetEntriesFast(); itrack++)
4902 AliVTrack* track = (AliVTrack *) reftracks->At(itrack);
4904 Float_t pTtrack = track->Pt();
4913 pTSumTrackInCone+=pTtrack;
4914 if(pTtrack > pTLeadTrackInCone) pTLeadTrackInCone = pTtrack;
4926 Float_t & pTLeadClusterInCone, Float_t & pTSumClusterInCone)
4929 if(!refclusters) return ;
4934 Double_t vertex[] = {0,0,0} ;
4938 for(Int_t icalo=0; icalo < refclusters->GetEntriesFast(); icalo++)
4940 AliVCluster* calo = (AliVCluster *) refclusters->At(icalo);
4952 pTSumClusterInCone += pTCluster;
4953 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)