4 #include "TLorentzVector.h"
6 #include "TClonesArray.h"
10 #include "TClonesArray.h"
13 #include "AliVEvent.h"
15 #include "AliAnalysisTaskSE.h"
16 #include "AliAnalysisTaskEMCALCaloTrackCorr.h"
17 #include "AliEMCALGeometry.h"
18 #include "AliEMCALRecoUtils.h"
19 #include "AliAnalysisManager.h"
20 #include "AliInputEventHandler.h"
21 #include "AliESDEvent.h"
22 #include "AliAODEvent.h"
23 #include "AliMCEvent.h"
24 #include "AliVCaloCells.h"
25 #include "AliVCluster.h"
26 #include "AliVParticle.h"
27 #include "AliESDtrack.h"
28 #include "AliVVertex.h"
29 #include "AliESDtrackCuts.h"
30 #include "AliAODTrack.h"
31 #include "AliCentrality.h"
32 #include "AliAODParticle.h"
33 #include "AliTriggerAnalysis.h"
34 #include "AliFiducialCut.h"
35 #include "AliEventplane.h"
36 #include "AliAODHeader.h"
39 ClassImp(AliAnalysisTaskEMCALCaloTrackCorr)
41 //________________________________________________________________________
42 AliAnalysisTaskEMCALCaloTrackCorr::AliAnalysisTaskEMCALCaloTrackCorr(const char *name)
43 :AliAnalysisTaskSE(name),
44 fManager(NULL), fInputHandler(NULL),
45 fEvent(NULL), fMCEvent(NULL), fStack(NULL),
46 fCentrality(0x0), fEventPlane(0x0),
47 fEMCALRecU(0x0), fEMCALGeom(0x0), fESDtrackCuts(0x0), /* fFidCut(0x0),*/
50 fEMCALGeomName("EMCAL_COMPLETEV1"),
51 fCentralityClass(""), fCentralityBinMin(0), fCentralityBinMax(0),
52 fEventPlaneMethod(""), fEventTriggerMaks(0),
53 fHistoPtBins(0), fHistoPtMax(0.), fHistoPtMin(0.),
54 fHistoPhiBins(0), fHistoPhiMax(0.), fHistoPhiMin(0.),
55 fHistoEtaBins(0), fHistoEtaMax(0.), fHistoEtaMin(0.),
56 fMinNCells(0) , fMinE(0), fMinDistBad(0),
57 fL0CutMin(0), fL0CutMax(0), fTimeCutMin(0),
58 fTimeCutMax(0), fPhotonPairTimeCut(0),fEMCALDPhiCut(0),
59 fEMCALDEtaCut(0), fZVertexCut(0), fDebug(0),
60 fAnaMesonType(0), fAsymmetryCut(0), fDataType(0),
63 fInvMassMinCut(0), fInvMassMaxCut(0), fLeftBandMinCut(0),
64 fLeftBandMaxCut(0), fRightBandMinCut(0), fRightBandMaxCut(0),
66 kMC(0), kNeutralMesonHistos(0), kDoMixEventsAna(0),
67 kDoPhotonCorrAna(0), kDoAsymmetryCut(0), kDoSelectHybridTracks(0),
68 kDoMesonFill(0), kDoMesonCorrAna(0), kDoIsolatedAna(0),
69 kDoTrackMultBins(0), kUELeftRight(0), kUENearAway(0),
70 kDecayPhotonCorr(0), kAnaMCTruthCorr(0), kAnaMCPrimaryCorr(0),
71 kAnaPi0Prim(0), kAnaEtaPrim(0), kAnaPhotonPrim(0),
72 kMakeAbsoluteLeading(0), kMakeNearSideLeading(0), kTwoTracksCorr(0),
73 kPhotonInAcceptance(0), kAnaDecayMapping(0), /*fCheckFidCut(0),*/
74 kEventTriggerAtSE(0), kPhotonPairTimeCut(0), kDoPhotonIDCut(0),
76 fhNEvents(0), fnEvents(0), fhNEventsAnalyized(0), fEventAnalyized(0),
77 fPhotonEvent(0), fPhotonPairEvent(0), fCTSEvent(0),
78 nPhotonsEMCAL(0), nTracksCTS(0), fAnaTypeInIsolated(0),
80 fSetConeR(0), fSetPtThreshold(0), fSetSumPtThreshold(0),
81 fSetPtFraction(0), fICMethod(0), fParticlesInCone(0),
83 fTriggPtArray(0), fNTriggPtBins(0), fptTriggerBegin(0), fptTriggerEnd(0),
84 fAssocPtArray(0), fNAssocPtBins(0), fptAssociatedBegin(0),
86 fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fUeDeltaPhiSize(0),
87 fUeDeltaPhiFix(0), fDeltaPhiHRSize(0),
89 fhPhotonE(0), fhPhotonPtPhi(0), fhPhotonPtEta(0), fhPhotonPhiEta(0),
90 fhMesonE(0), fhMesonPtPhi(0), fhMesonPtEta(0), fhMesonPhiEta(0),
92 fhAnglePairNoCut(0), fhInvMassPairNoCut(0), fhAsyNoCut(0),
93 fhInvMassPairAsyCut(0), fhAnglePairAsyCut(0), fhInvMassPairPhi(0),
94 fhInvMassPairEta(0), fhInvMassPairAllCut(0), fhAnglePairAllCut(0),
97 fhPi0DecayPhoton1(0), fhPi0DecayPhoton1Dphi(0), fhDecayPhoton1Pi0Dphi(0),
98 fhPi0DecayPhoton2(0), fhPi0DecayPhoton2Dphi(0), fhDecayPhoton2Pi0Dphi(0),
99 fhDecayPhoton1Photon2(0),fhDecayPhoton1Photon2Dphi(0), fhDecayPhoton2Photon1Dphi(0),
103 fhNtracksAll(0), fhNtracksEMC7(0), fhNtracksAnyINT(0),
104 fhNtracksCentral(0), fhNtracksSemiCentral(0), fhNtracksOtherTirgger(0),
105 fhNtracksCorr(0), fhTrackPtPhi(0),
106 fhTrackPtEta(0), fhTrackPhiEta(0), fhPtPhiLeading(0),
107 fhPtEtaLeading(0), fhMixPtPhiLeading(0), fhMixPtEtaLeading(0),
108 fhDPhiTriggPtAssocPt(0), fhDEtaTriggPtAssocPt(0),
109 fhAssocPtTriggPt(0), fhxELogTriggPt(0), fhpoutTriggPt(0),
110 fhzTTriggPt(0), fhxETriggPt(0),
111 fhAssocPtTriggPtHR(0), fhxELogTriggPtHR(0), fhpoutTriggPtHR(0),
112 fhzTTriggPtHR(0), fhxETriggPtHR(0),
113 fhNUeAssocPtTriggPt(0), fhNUepoutTriggPt(0), fhNUexETriggPt(0),
114 fhNUezTTriggPt(0), fhNUexELogTriggPt(0), fhNUeDPhiDEta(0),
115 fhAUeAssocPtTriggPt(0), fhAUepoutTriggPt(0), fhAUezTTriggPt(0),
116 fhAUexETriggPt(0), fhAUexELogTriggPt(0), fhAUeDPhiDEta(0),
118 fhMCPtPhiLeading(0), fhMCPtEtaLeading(0),
119 fhMCAssocPtTriggPt(0), fhMCxELogTriggPt(0), fhMCpoutTriggPt(0),
120 fhMCzTTriggPt(0), fhMCxETriggPt(0),
121 fhMCAssocPtTriggPtHR(0), fhMCxELogTriggPtHR(0), fhMCpoutTriggPtHR(0),
122 fhMCzTTriggPtHR(0), fhMCxETriggPtHR(0),
123 fhMCNUeAssocPtTriggPt(0),fhMCNUepoutTriggPt(0), fhMCNUexETriggPt(0),
124 fhMCNUezTTriggPt(0), fhMCNUexELogTriggPt(0),
125 fhMCAUeAssocPtTriggPt(0),fhMCAUepoutTriggPt(0), fhMCAUezTTriggPt(0),
126 fhMCAUexETriggPt(0), fhMCAUexELogTriggPt(0),
127 fhDPhiAssocPt15T(0), fhDEtaAssocPt15T(0), fhMixDPhiAssocPt15T(0),
128 fhMixDEtaAssocPt15T(0), fhMCDPhiAssocPt15T(0), fhMCDEtaAssocPt15T(0)
132 for(Int_t imix=0;imix<10;imix++){
133 for(Int_t jmix=0;jmix<10;jmix++){
134 for(Int_t kmix=0;kmix<10;kmix++)
135 fListMixEvents[imix][jmix][kmix]=0x0;
139 // Default constructor.
140 for(Int_t i = 0; i< GetNAssocPtBins(); i++){
141 fhDPhiTriggPtT[i] = 0;
142 fhDEtaTriggPtT[i] = 0;
143 fhMixDPhiTriggPtT[i] = 0;
144 fhMixDEtaTriggPtT[i] = 0;
147 for(Int_t j = 0; j < GetNTriggPtBins(); j++){
148 for(Int_t k = 0; k< GetNAssocPtBins(); k++){
149 fhDPhiSumPtBin[j][k] = 0;
150 fhDEtaSumPtBin[j][k] = 0;
151 fhDPhiDEtaBin[j][k] = 0;
152 fhMixDPhiDEtaBin[j][k] = 0;
156 for(Int_t j1 = 0; j1 < GetNTriggPtBins(); j1++){
157 fhDPhiAssocPtA[j1] = 0;
158 fhDEtaAssocPtA[j1] = 0;
159 fhMixDPhiAssocPtA[j1] = 0;
160 fhMixDEtaAssocPtA[j1] = 0;
164 for(Int_t i = 0; i< GetNAssocPtBins(); i++){
165 fhMCDPhiTriggPtT[i] = 0;
166 fhMCDEtaTriggPtT[i] = 0;
169 for(Int_t j = 0; j < GetNTriggPtBins(); j++){
170 for(Int_t k = 0; k< GetNAssocPtBins(); k++){
171 fhMCDPhiSumPtBin[j][k] = 0;
172 fhMCDEtaSumPtBin[j][k] = 0;
173 fhMCDPhiDEtaBin[j][k] = 0;
177 for(Int_t j1 = 0; j1 < GetNTriggPtBins(); j1++){
178 fhMCDPhiAssocPtA[j1] = 0;
179 fhMCDEtaAssocPtA[j1] = 0;
182 //Initialize parameters
185 DefineOutput(1, TList::Class());
188 //________________________________________________________________________
189 void AliAnalysisTaskEMCALCaloTrackCorr::UserCreateOutputObjects()
192 fEMCALGeom = AliEMCALGeometry::GetInstance(fEMCALGeomName);
193 fEMCALRecU = new AliEMCALRecoUtils();
195 Int_t nptbins = GetHistoPtBins();
196 Int_t nphibins = GetHistoPhiBins();
197 Int_t netabins = GetHistoEtaBins();
198 Float_t ptmax = GetHistoPtMax();
199 Float_t phimax = GetHistoPhiMax();
200 Float_t etamax = GetHistoEtaMax();
201 Float_t ptmin = GetHistoPtMin();
202 Float_t phimin = GetHistoPhiMin();
203 Float_t etamin = GetHistoEtaMin();
205 Int_t ndphibins = 350;
206 Float_t dphimin = -2.;
207 Float_t dphimax = 5.;
209 Int_t ndetabins = 360;
210 Float_t detamin = -1.8;
211 Float_t detamax = 1.8;
221 Int_t nxElogbins = 180;
222 Float_t xElogmin = 0.;
223 Float_t xElogmax = 9.;
225 Int_t nmassbins = 200;
226 Float_t massmin = 0.;
227 Float_t massmax = 1.;
229 Int_t nanglebins = 300;
230 Float_t anglemin = 0.;
231 Float_t anglemax = 0.6;
233 outputContainer = new TList();
234 outputContainer->SetOwner(kTRUE);
236 fhNEvents = new TH1F ("hNEvents","Number of all events",1,0.5,1.5);
237 outputContainer->Add(fhNEvents);
239 fhNEventsAnalyized = new TH1F ("hNEventsAnalyized","Number of events analyzed Last",1,0.5,1.5);
240 outputContainer->Add(fhNEventsAnalyized);
242 fhPhotonE = new TH1F("hPhotonE","Number of #gamma over calorimeter vs energy",nptbins,ptmin,ptmax);
243 fhPhotonE->SetYTitle("N");
244 fhPhotonE->SetXTitle("E_{#gamma}(GeV)");
245 outputContainer->Add(fhPhotonE) ;
247 fhPhotonPtPhi = new TH2F
248 ("hPhotonPtPhi","#phi_{#gamma} vs p_{T}",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
249 fhPhotonPtPhi->SetYTitle("#phi (rad)");
250 fhPhotonPtPhi->SetXTitle("p_{T #gamma} (GeV/c)");
251 outputContainer->Add(fhPhotonPtPhi) ;
253 fhPhotonPtEta = new TH2F
254 ("hPhotonPtEta","#eta_{#gamma} vs p_{T}",nptbins,ptmin,ptmax,netabins,etamin,etamax);
255 fhPhotonPtEta->SetYTitle("#eta");
256 fhPhotonPtEta->SetXTitle("p_{T #gamma} (GeV/c)");
257 outputContainer->Add(fhPhotonPtEta) ;
259 fhPhotonPhiEta = new TH2F
260 ("hPhotonPhiEta","#phi vs #eta",nphibins,phimin,phimax, netabins,etamin,etamax);
261 fhPhotonPhiEta->SetXTitle("#phi (rad)");
262 fhPhotonPhiEta->SetYTitle("#eta");
263 outputContainer->Add(fhPhotonPhiEta);
266 fhMesonE = new TH1F("hMesonE","Number of #pi^{0}(#eta) over calorimeter vs energy",nptbins,ptmin,ptmax);
267 fhMesonE->SetYTitle("N");
268 fhMesonE->SetXTitle("E_{#meson}(GeV)");
269 outputContainer->Add(fhMesonE) ;
271 fhMesonPtPhi = new TH2F
272 ("hMesonPtPhi","#phi vs p_{T} of #pi^{0}(#eta)",nptbins,ptmin,ptmax,nphibins,phimin,phimax);
273 fhMesonPtPhi->SetYTitle("#phi (rad)");
274 fhMesonPtPhi->SetXTitle("p_{T meson} (GeV/c)");
275 outputContainer->Add(fhMesonPtPhi) ;
277 fhMesonPtEta = new TH2F
278 ("hMesonPtEta","#eta vs p_{T} of #pi^{0}(#eta)",nptbins,ptmin,ptmax,netabins,etamin,etamax);
279 fhMesonPtEta->SetYTitle("#eta");
280 fhMesonPtEta->SetXTitle("p_{T meson} (GeV/c)");
281 outputContainer->Add(fhMesonPtEta) ;
283 fhMesonPhiEta = new TH2F
284 ("hMesonPhiEta","#phi vs #eta of #pi^{0}(#eta)",nphibins,phimin,phimax, netabins,etamin,etamax);
285 fhMesonPhiEta->SetXTitle("#phi (rad)");
286 fhMesonPhiEta->SetYTitle("#eta");
287 outputContainer->Add(fhMesonPhiEta);
289 if(kNeutralMesonHistos){
290 fhAnglePairNoCut = new TH2F("hAnglePairNoCut","Angle between all #gamma pair vs E_{#pi^{0}}",
291 nptbins,ptmin,ptmax,nanglebins,anglemin,anglemax);
292 fhAnglePairNoCut->SetYTitle("Angle (rad)");
293 fhAnglePairNoCut->SetXTitle("E_{ #pi^{0}} (GeV)");
295 fhAsyNoCut = new TH2F("hAsymmetryNoCut","Asymmetry of all #gamma pair vs E_{#pi^{0}}",
296 nptbins,ptmin,ptmax,100,0,1);
297 fhAsyNoCut->SetYTitle("Asymmetry");
298 fhAsyNoCut->SetXTitle("E_{ #pi^{0}} (GeV)");
300 fhInvMassPairNoCut = new TH2F("hInvMassPairNoCut","Invariant Mass of all #gamma pair vs E_{#pi^{0}}",
301 nptbins,ptmin,ptmax,nmassbins, massmin, massmax);
302 fhInvMassPairNoCut->SetYTitle("hInvariant Mass (GeV/c^{2})");
303 fhInvMassPairNoCut->SetXTitle("E_{ #pi^{0}} (GeV)");
305 outputContainer->Add(fhAnglePairNoCut) ;
306 outputContainer->Add(fhAsyNoCut) ;
307 outputContainer->Add(fhInvMassPairNoCut) ;
310 if(kDoAsymmetryCut) {
311 fhAnglePairAsyCut = new TH2F("hAnglePairAsymmetryCut","AnglePairAsymmetryCut",
312 nptbins,ptmin,ptmax,nanglebins,anglemin,anglemax);
313 fhAnglePairAsyCut->SetYTitle("Angle (rad)");
314 fhAnglePairAsyCut->SetXTitle("E_{ #pi^{0}} (GeV)");
316 fhInvMassPairAsyCut = new TH2F("hInvMassPairAsymmetryCut","Invariant Mass of #gamma pair vs E_{#pi^{0}}",
317 nptbins,ptmin,ptmax,nmassbins, massmin, massmax);
318 fhInvMassPairAsyCut->SetYTitle("Invariant Mass (GeV/c^{2})");
319 fhInvMassPairAsyCut->SetXTitle("E_{#pi^{0}}(GeV)");
321 fhInvMassPairPhi = new TH2F("hInvMassPairPhi", "M_{#gamma#gamma} vs #phi",
322 nptbins,ptmin,ptmax,nphibins, phimin, phimax);
323 fhInvMassPairPhi->SetYTitle("#phi (rad)");
324 fhInvMassPairPhi->SetXTitle("E_{ #pi^{0}} (GeV)");
326 fhInvMassPairEta = new TH2F("hInvMassPairEta","M_{#gamma#gamma} vs #eta",
327 nptbins,ptmin,ptmax, netabins, etamin, etamax);
328 fhInvMassPairEta->SetYTitle("#eta");
329 fhInvMassPairEta->SetXTitle("E_{ #pi^{0}} (GeV)");
331 outputContainer->Add(fhAnglePairAsyCut) ;
332 outputContainer->Add(fhInvMassPairAsyCut) ;
333 outputContainer->Add(fhInvMassPairPhi);
334 outputContainer->Add(fhInvMassPairEta);
337 fhAnglePairAllCut = new TH2F("hAnglePairAllCut", "Angle between all #gamma pair (opening angle + asymmetry + inv mass cut) vs E_{#pi^{0}}",
338 nptbins,ptmin,ptmax,nanglebins,anglemin,anglemax);
339 fhAnglePairAllCut->SetYTitle("Angle (rad)");
340 fhAnglePairAllCut->SetXTitle("E_{ #pi^{0}} (GeV)");
342 fhInvMassPairAllCut = new TH2F("hInvMassPairAllCut","Invariant Mass of #gamma pair (opening angle + asymmetry + invmass cut) vs E_{#pi^{0}}",
343 nptbins,ptmin,ptmax,nmassbins, massmin, massmax);
344 fhInvMassPairAllCut->SetYTitle("Invariant Mass (GeV/c^{2})");
345 fhInvMassPairAllCut->SetXTitle("E_{#pi^{0}}(GeV)");
347 fhAsyAllCut = new TH2F("hAsymmetryAllCut", "Asymmetry of #gamma pair (opening angle+invmass cut) vs E_{#pi^{0}}",
348 nptbins,ptmin,ptmax,100,0,1);
349 fhAsyAllCut->SetYTitle("Asymmetry");
350 fhAsyAllCut->SetXTitle("E_{#pi^{0}}(GeV)");
352 outputContainer->Add(fhAnglePairAllCut) ;
353 outputContainer->Add(fhAsyAllCut) ;
354 outputContainer->Add(fhInvMassPairAllCut) ;
357 fhPi0DecayPhoton1 = new TH2F("hPi0DecayPhoton1","#pi^{0} vs its decay #gamma1 ",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
358 fhPi0DecayPhoton1->SetYTitle("p_{T #gamma1}(GeV/c)");
359 fhPi0DecayPhoton1->SetXTitle("p_{T #pi^{0}}(GeV/c)");
360 outputContainer->Add(fhPi0DecayPhoton1);
362 fhPi0DecayPhoton1Dphi = new TH2F("hPi0DecayPhoton1Dphi","#pi^{0} vs #Delta#phi ",nptbins,ptmin,ptmax,300,0,0.6);
363 fhPi0DecayPhoton1Dphi->SetYTitle("#Delta#phi(rad)");
364 fhPi0DecayPhoton1Dphi->SetXTitle("p_{T #pi^{0}}(GeV/c)");
365 outputContainer->Add(fhPi0DecayPhoton1Dphi);
367 fhDecayPhoton1Pi0Dphi = new TH2F("hDecayPhoton1Pi0Dphi","decay #gamma1 vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6);
368 fhDecayPhoton1Pi0Dphi->SetYTitle("#Delta#phi(rad)");
369 fhDecayPhoton1Pi0Dphi->SetXTitle("p_{T #gamma1}(GeV/c)");
370 outputContainer->Add(fhDecayPhoton1Pi0Dphi);
372 fhPi0DecayPhoton2 = new TH2F("hPi0DecayPhoton2","#pi^{0} vs its decay #gamma2",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
373 fhPi0DecayPhoton2->SetYTitle("p_{T #gamma2}(GeV/c)");
374 fhPi0DecayPhoton2->SetXTitle("p_{T #pi^{0}}(GeV/c)");
375 outputContainer->Add(fhPi0DecayPhoton2);
377 fhPi0DecayPhoton2Dphi = new TH2F("hPi0DecayPhoton2Dphi","#pi^{0} vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6);
378 fhPi0DecayPhoton2Dphi->SetYTitle("#Delta#phi(rad)");
379 fhPi0DecayPhoton2Dphi->SetXTitle("p_{T #pi^{0}}(GeV/c)");
380 outputContainer->Add(fhPi0DecayPhoton2Dphi);
382 fhDecayPhoton2Pi0Dphi = new TH2F("hDecayPhoton2Pi0Dphi","decay #gamma2 vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6);
383 fhDecayPhoton2Pi0Dphi->SetYTitle("#Delta#phi(rad)");
384 fhDecayPhoton2Pi0Dphi->SetXTitle("p_{T #gamma2}(GeV/c)");
385 outputContainer->Add(fhDecayPhoton2Pi0Dphi);
387 fhDecayPhoton1Photon2 = new TH2F("hDecayPhoton1Photon2","#gamma one vs #gamma two",nptbins,ptmin,ptmax,nptbins,ptmin,ptmax);
388 fhDecayPhoton1Photon2->SetYTitle("p_{T #gamma2}(GeV/c)");
389 fhDecayPhoton1Photon2->SetXTitle("p_{T #gamma1}(GeV/c)");
390 outputContainer->Add(fhDecayPhoton1Photon2);
392 fhDecayPhoton1Photon2Dphi = new TH2F("hDecayPhoton1Photon2Dphi","#gamma one vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6);
393 fhDecayPhoton1Photon2Dphi->SetYTitle("#Delta#phi(rad)");
394 fhDecayPhoton1Photon2Dphi->SetXTitle("p_{T #gamma1}(GeV/c)");
395 outputContainer->Add(fhDecayPhoton1Photon2Dphi);
397 fhDecayPhoton2Photon1Dphi = new TH2F("hDecayPhoton2Photon1Dphi","#gamma two vs #Delta#phi",nptbins,ptmin,ptmax,300,0,0.6);
398 fhDecayPhoton2Photon1Dphi->SetZTitle("#Delta#phi(rad)");
399 fhDecayPhoton2Photon1Dphi->SetXTitle("p_{T #gamma2}(GeV/c)");
400 outputContainer->Add(fhDecayPhoton2Photon1Dphi);
403 fhNtracksAll=new TH1F("hNtracksAll","Number of tracks w/o event trigger",2000,0,2000);
404 outputContainer->Add(fhNtracksAll);
406 fhNtracksEMC7=new TH1F("hNtracksEMC7","Number of tracks w/ event trigger kEMC7",2000,0,2000);
407 outputContainer->Add(fhNtracksEMC7);
409 fhNtracksAnyINT=new TH1F("hNtracksAnyINT","Number of tracks w/ event trigger kAnyINT",2000,0,2000);
410 outputContainer->Add(fhNtracksAnyINT);
412 fhNtracksCentral=new TH1F("hNtracksCentral","Number of tracks w/ event trigger kCentral",2000,0,2000);
413 outputContainer->Add(fhNtracksCentral);
415 fhNtracksSemiCentral=new TH1F("hNtracksSemiCentral","Number of tracks w/ event trigger kSemiCentral",2000,0,2000);
416 outputContainer->Add(fhNtracksSemiCentral);
418 fhNtracksOtherTirgger=new TH1F("hNtracksOtherTirgger","Number of tracks w/ event trigger other ",2000,0,2000);
419 outputContainer->Add(fhNtracksOtherTirgger);
421 fhNtracksCorr=new TH1F("hNtracksCorr","Number of tracks w/ event trigger same with correlation",2000,0,2000);
422 outputContainer->Add(fhNtracksCorr);
424 fhTrackPtPhi = new TH2F ("hTrackPtPhi","p_{T} and #phi distribution of tracks", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
425 outputContainer->Add(fhTrackPtPhi);
427 fhTrackPtEta = new TH2F ("hTrackPtEta","p_{T} and #eta distribution of tracks",nptbins,ptmin,ptmax, netabins,etamin,etamax);
428 outputContainer->Add(fhTrackPtEta);
430 fhTrackPhiEta = new TH2F ("hTrackPhiEta","#phi and #eta distribution of tracks",nphibins, phimin, phimax, netabins,etamin,etamax);
431 outputContainer->Add(fhTrackPhiEta);
433 fhPtPhiLeading = new TH2F ("hPtPhiLeading","p_{T} and #phi distribution of leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
434 outputContainer->Add(fhPtPhiLeading);
436 fhPtEtaLeading = new TH2F ("hPtEtaLeading","p_{T} and #eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax);
437 outputContainer->Add(fhPtEtaLeading);
439 fhMixPtPhiLeading = new TH2F ("hMixPtPhiLeading","p_{T} and #phi distribution of mixed leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
440 outputContainer->Add(fhMixPtPhiLeading);
442 fhMixPtEtaLeading = new TH2F ("hMixPtEtaLeading","p_{T} and #eta distribution of mixed leading particles",nptbins,ptmin,ptmax, netabins,etamin,etamax);
443 outputContainer->Add(fhMixPtEtaLeading);
445 for(Int_t i=0; i< GetNAssocPtBins(); i++){
446 fhDPhiTriggPtT[i] = new TH2F(Form("hDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),
447 Form("DPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
448 outputContainer->Add(fhDPhiTriggPtT[i]);
450 fhDEtaTriggPtT[i] = new TH2F(Form("hDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),
451 Form("DEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
452 outputContainer->Add(fhDEtaTriggPtT[i]);
454 fhMixDPhiTriggPtT[i] = new TH2F(Form("hMixDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),
455 Form("MixDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
456 outputContainer->Add(fhMixDPhiTriggPtT[i]);
458 fhMixDEtaTriggPtT[i] = new TH2F(Form("hMixDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),
459 Form("MixDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
460 outputContainer->Add(fhMixDEtaTriggPtT[i]);
463 fhDPhiAssocPt15T = new TH2F(Form("hDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),
464 Form("DPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
465 outputContainer->Add(fhDPhiAssocPt15T);
467 fhDEtaAssocPt15T = new TH2F(Form("hDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),
468 Form("DEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
469 outputContainer->Add(fhDEtaAssocPt15T);
471 fhMixDPhiAssocPt15T = new TH2F(Form("hMixDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),
472 Form("MixDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
473 outputContainer->Add(fhMixDPhiAssocPt15T);
475 fhMixDEtaAssocPt15T = new TH2F(Form("hMixDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),
476 Form("MixDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
477 outputContainer->Add(fhMixDEtaAssocPt15T);
479 for(Int_t i = 0 ; i < GetNTriggPtBins() ; i++){
480 for(Int_t j=0; j<GetNAssocPtBins(); j++){
481 fhDPhiSumPtBin[i][j] = new TH2F(Form("hDPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
482 Form("DPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
483 outputContainer->Add(fhDPhiSumPtBin[i][j]);
485 fhDEtaSumPtBin[i][j] = new TH2F(Form("hDEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
486 Form("DEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
487 outputContainer->Add(fhDEtaSumPtBin[i][j]);
489 fhDPhiDEtaBin[i][j] = new TH2F(Form("hDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
490 Form("hDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1], fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax);
491 outputContainer->Add(fhDPhiDEtaBin[i][j]);
493 fhMixDPhiDEtaBin[i][j] = new TH2F(Form("hMixDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
494 Form("hMixDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax);
495 outputContainer->Add(fhMixDPhiDEtaBin[i][j]);
497 }/////end loop for associated bins
500 for(Int_t i=0; i<GetNTriggPtBins(); i++){
501 fhDPhiAssocPtA[i] = new TH2F(Form("hDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),
502 Form("DPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
503 outputContainer->Add(fhDPhiAssocPtA[i]);
505 fhDEtaAssocPtA[i] = new TH2F(Form("hDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),
506 Form("DEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
507 outputContainer->Add(fhDEtaAssocPtA[i]);
509 fhMixDPhiAssocPtA[i] = new TH2F(Form("hMixDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),
510 Form("MixDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
511 outputContainer->Add(fhMixDPhiAssocPtA[i]);
513 fhMixDEtaAssocPtA[i] = new TH2F(Form("hMixDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),
514 Form("MixDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
515 outputContainer->Add(fhMixDEtaAssocPtA[i]);
519 fhDPhiTriggPtAssocPt = new TH2F(Form("hDPhiTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
520 Form("DPhiTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
521 outputContainer->Add(fhDPhiTriggPtAssocPt);
523 fhDEtaTriggPtAssocPt = new TH2F(Form("hDEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
524 Form("DEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
525 outputContainer->Add(fhDEtaTriggPtAssocPt);
527 fhAssocPtTriggPt = new TH2F(Form("hAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
528 Form("AssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
529 outputContainer->Add(fhAssocPtTriggPt);
531 fhpoutTriggPt = new TH2F(Form("hpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
532 Form("poutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
533 outputContainer->Add(fhpoutTriggPt);
535 fhzTTriggPt = new TH2F(Form("hzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
536 Form("zTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
537 outputContainer->Add(fhzTTriggPt);
539 fhxETriggPt = new TH2F(Form("hxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
540 Form("xETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
541 outputContainer->Add(fhxETriggPt);
543 fhxELogTriggPt = new TH2F(Form("hxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
544 Form("xELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
545 outputContainer->Add(fhxELogTriggPt);
547 ////pout at Head Region in Away side
548 fhAssocPtTriggPtHR = new TH2F(Form("hAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
549 Form("AssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
550 outputContainer->Add(fhAssocPtTriggPtHR);
552 fhpoutTriggPtHR = new TH2F(Form("hpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
553 Form("poutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
554 outputContainer->Add(fhpoutTriggPtHR);
556 fhzTTriggPtHR = new TH2F(Form("hzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
557 Form("zTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
558 outputContainer->Add(fhzTTriggPtHR);
560 ////xE at Head Region in Away side
561 fhxETriggPtHR = new TH2F(Form("hxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
562 Form("xETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
563 outputContainer->Add(fhxETriggPtHR);
565 ////-log(xE) at Head Region in away side
566 fhxELogTriggPtHR = new TH2F(Form("hxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
567 Form("xELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
568 outputContainer->Add(fhxELogTriggPtHR);
569 //////underlying observalbes
570 ///////////Ue at Left side
571 fhNUeAssocPtTriggPt = new TH2F(Form("hNUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
572 Form("NUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
573 outputContainer->Add(fhNUeAssocPtTriggPt);
575 fhNUepoutTriggPt= new TH2F(Form("hNUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
576 Form("NUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
577 outputContainer->Add(fhNUepoutTriggPt);
579 fhNUezTTriggPt = new TH2F(Form("hNUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
580 Form("NUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
581 outputContainer->Add(fhNUezTTriggPt);
583 fhNUexETriggPt = new TH2F(Form("hNUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
584 Form("NUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
585 outputContainer->Add(fhNUexETriggPt);
587 fhNUexELogTriggPt = new TH2F(Form("hNUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
588 Form("NUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
589 outputContainer->Add(fhNUexELogTriggPt);
591 fhNUeDPhiDEta = new TH2F(Form("hNUeDPhiDEta%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
592 Form("NUeDPhiDEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax);
593 outputContainer->Add(fhNUeDPhiDEta);
595 fhAUeAssocPtTriggPt = new TH2F(Form("hAUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
596 Form("AUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
597 outputContainer->Add(fhAUeAssocPtTriggPt);
599 fhAUepoutTriggPt = new TH2F(Form("hAUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
600 Form("AUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
601 outputContainer->Add(fhAUepoutTriggPt);
603 fhAUezTTriggPt = new TH2F(Form("hAUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
604 Form("AUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
605 outputContainer->Add(fhAUezTTriggPt);
607 fhAUexETriggPt = new TH2F(Form("hAUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
608 Form("AUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
609 outputContainer->Add(fhAUexETriggPt);
611 fhAUexELogTriggPt = new TH2F(Form("hAUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
612 Form("AUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
613 outputContainer->Add(fhAUexELogTriggPt);
615 fhAUeDPhiDEta = new TH2F(Form("hAUeDPhiDEta%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
616 Form("AUeDPhiDEtaTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax);
617 outputContainer->Add(fhAUeDPhiDEta);
619 if(IsDataMC() && (kAnaMCTruthCorr || kAnaMCPrimaryCorr)){
620 fhMCPtPhiLeading = new TH2F ("hMCPtPhiLeading","p_{T} and #phi distribution of leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
621 outputContainer->Add(fhMCPtPhiLeading);
622 fhMCPtEtaLeading = new TH2F ("hMCPtEtaLeading","p_{T} and #eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax);
623 outputContainer->Add(fhMCPtEtaLeading);
625 for(Int_t i=0; i< GetNAssocPtBins(); i++){
626 fhMCDPhiTriggPtT[i] = new TH2F(Form("hMCDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),
627 Form("MCDPhiTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
628 outputContainer->Add(fhMCDPhiTriggPtT[i]);
630 fhMCDEtaTriggPtT[i] = new TH2F(Form("hMCDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]),
631 Form("MCDEtaTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fT",fptTriggerBegin, fptTriggerEnd, fAssocPtArray[i], fAssocPtArray[i+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
632 outputContainer->Add(fhMCDEtaTriggPtT[i]);
635 for(Int_t i = 0 ; i < GetNTriggPtBins() ; i++){
636 for(Int_t j=0; j<GetNAssocPtBins(); j++){
637 fhMCDPhiSumPtBin[i][j] = new TH2F(Form("hMCDPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
638 Form("MCDPhiSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
639 outputContainer->Add(fhMCDPhiSumPtBin[i][j]);
641 fhMCDEtaSumPtBin[i][j] = new TH2F(Form("hMCDEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
642 Form("MCDEtaSumPtBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
643 outputContainer->Add(fhMCDEtaSumPtBin[i][j]);
645 fhMCDPhiDEtaBin[i][j] = new TH2F(Form("hMCDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1],fAssocPtArray[j],fAssocPtArray[j+1]),
646 Form("hMCDPhiDEtaBinTrigg%1.f_%1.fAssoc%1.f_%1.f",fTriggPtArray[i], fTriggPtArray[i+1], fAssocPtArray[j],fAssocPtArray[j+1]), ndphibins, dphimin, dphimax, ndetabins,detamin,detamax);
647 outputContainer->Add(fhMCDPhiDEtaBin[i][j]);
648 }/////end loop for associated bins
651 for(Int_t i=0; i<GetNTriggPtBins(); i++){
652 fhMCDPhiAssocPtA[i] = new TH2F(Form("hMCDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),
653 Form("MCDPhiAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
654 outputContainer->Add(fhMCDPhiAssocPtA[i]);
656 fhMCDEtaAssocPtA[i] = new TH2F(Form("hMCDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.),
657 Form("MCDEtaAssocPtTrigg%1.f_%1.fAssoc%1.f_%1.fA",fTriggPtArray[i], fTriggPtArray[i+1],fptAssociatedBegin, 0.), ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
658 outputContainer->Add(fhMCDEtaAssocPtA[i]);
662 fhMCDPhiAssocPt15T = new TH2F(Form("hMCDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),
663 Form("MCDPhiTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndphibins,dphimin,dphimax,nptbins, ptmin, ptmax);
664 outputContainer->Add(fhMCDPhiAssocPt15T);
666 fhMCDEtaAssocPt15T = new TH2F(Form("hMCDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),
667 Form("MCDEtaTriggPtTrigg%1.f_%1.fAssoc1.0_5.0",fptTriggerBegin, fptTriggerEnd),ndetabins,detamin,detamax,nptbins, ptmin, ptmax);
668 outputContainer->Add(fhMCDEtaAssocPt15T);
670 fhMCAssocPtTriggPt = new TH2F(Form("hMCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
671 Form("MCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
672 outputContainer->Add(fhMCAssocPtTriggPt);
674 fhMCpoutTriggPt = new TH2F(Form("hMCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
675 Form("MCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
676 outputContainer->Add(fhMCpoutTriggPt);
678 fhMCzTTriggPt = new TH2F(Form("hMCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
679 Form("MCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
680 outputContainer->Add(fhMCzTTriggPt);
682 fhMCxETriggPt = new TH2F(Form("hMCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
683 Form("MCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
684 outputContainer->Add(fhMCxETriggPt);
686 fhMCxELogTriggPt = new TH2F(Form("hMCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
687 Form("MCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
688 outputContainer->Add(fhMCxELogTriggPt);
690 ////pout at Head Region in Away side
691 fhMCAssocPtTriggPtHR = new TH2F(Form("hMCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
692 Form("MCAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
693 outputContainer->Add(fhMCAssocPtTriggPtHR);
695 fhMCpoutTriggPtHR = new TH2F(Form("hMCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
696 Form("MCpoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
697 outputContainer->Add(fhMCpoutTriggPtHR);
699 fhMCzTTriggPtHR = new TH2F(Form("hMCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
700 Form("MCzTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
701 outputContainer->Add(fhMCzTTriggPtHR);
703 ////xE at Head Region in Away side
704 fhMCxETriggPtHR = new TH2F(Form("hMCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
705 Form("MCxETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
706 outputContainer->Add(fhMCxETriggPtHR);
708 ////-log(xE) at Head Region in away side
709 fhMCxELogTriggPtHR = new TH2F(Form("hMCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
710 Form("MCxELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.fHR",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
711 outputContainer->Add(fhMCxELogTriggPtHR);
713 //////underlying observalbes
714 ///////////Ue at Left side
715 fhMCNUeAssocPtTriggPt = new TH2F(Form("hMCNUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
716 Form("MCNUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
717 outputContainer->Add(fhMCNUeAssocPtTriggPt);
719 fhMCNUepoutTriggPt= new TH2F(Form("hMCNUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
720 Form("MCNUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
721 outputContainer->Add(fhMCNUepoutTriggPt);
723 fhMCNUezTTriggPt = new TH2F(Form("hMCNUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
724 Form("MCNUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
725 outputContainer->Add(fhMCNUezTTriggPt);
727 fhMCNUexETriggPt = new TH2F(Form("hMCNUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
728 Form("MCNUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
729 outputContainer->Add(fhMCNUexETriggPt);
731 fhMCNUexELogTriggPt = new TH2F(Form("hMCNUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
732 Form("MCNUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
733 outputContainer->Add(fhMCNUexELogTriggPt);
735 fhMCAUeAssocPtTriggPt = new TH2F(Form("hMCAUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
736 Form("MCAUeAssocPtTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
737 outputContainer->Add(fhMCAUeAssocPtTriggPt);
739 fhMCAUepoutTriggPt = new TH2F(Form("hMCAUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
740 Form("MCAUepoutTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nptbins, ptmin, ptmax,nptbins, ptmin, ptmax);
741 outputContainer->Add(fhMCAUepoutTriggPt);
743 fhMCAUezTTriggPt = new TH2F(Form("hMCAUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
744 Form("MCAUezTTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.), nzTbins,zTmin,zTmax,nptbins, ptmin, ptmax);
745 outputContainer->Add(fhMCAUezTTriggPt);
747 fhMCAUexETriggPt = new TH2F(Form("hMCAUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.),
748 Form("MCAUexETriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxEbins,xEmin,xEmax,nptbins, ptmin, ptmax);
749 outputContainer->Add(fhMCAUexETriggPt);
751 fhMCAUexELogTriggPt = new TH2F(Form("hMCAUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd,fptAssociatedBegin, 0.),
752 Form("MCAUexELogTriggPtTrigg%1.f_%1.fAssoc%1.f_%1.f",fptTriggerBegin, fptTriggerEnd, fptAssociatedBegin, 0.), nxElogbins,xElogmin,xElogmax,nptbins, ptmin, ptmax);
753 outputContainer->Add(fhMCAUexELogTriggPt);
758 PostData(1,outputContainer);
762 //________________________________________________________________________
763 void AliAnalysisTaskEMCALCaloTrackCorr::UserExec(Option_t *)
765 // Execute analysis for current event
766 fManager = AliAnalysisManager::GetAnalysisManager();
767 fInputHandler = dynamic_cast<AliInputEventHandler*>(fManager->GetInputEventHandler());
769 if(!FillInputEvent()) return; //select good event
771 /* fEvent=dynamic_cast<AliESDEvent*>(InputEvent());
773 Printf("ERROR: Could not retrieve event");
778 fEventPlane = (dynamic_cast<AliVEvent*>(InputEvent()))->GetEventplane();
780 UInt_t isSelectedReal = 0;
781 if(!kEventTriggerAtSE) isSelectedReal = fInputHandler->IsEventSelected() & fEventTriggerMaks;
783 const AliVVertex *fEventVertex = fEvent->GetPrimaryVertex();
785 vtx[0] = fEventVertex->GetX();
786 vtx[1] = fEventVertex->GetY();
787 vtx[2] = fEventVertex->GetZ();
789 if(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()){
790 fMCEvent = MCEvent();
791 fStack = fMCEvent->Stack();
797 fPhotonEvent->Clear();
799 fPhotonEvent = new TClonesArray("AliAODParticle", InputEvent()->GetNumberOfCaloClusters());
802 fPhotonPairEvent->Clear();
804 fPhotonPairEvent = new TClonesArray("AliAODParticle", InputEvent()->GetNumberOfCaloClusters());
809 fCTSEvent = new TClonesArray("AliAODParticle", InputEvent()->GetNumberOfTracks());
812 if(kEventTriggerAtSE){
815 if(kDoMesonFill)FillInputMeson();
821 if(kDoMesonFill)FillInputMeson();
824 if(nTracksCTS==0) return;
827 UInt_t isSelectedMix = 0;
828 isSelectedMix =((fInputHandler->IsEventSelected() & AliVEvent::kAnyINT) ||
829 (fInputHandler->IsEventSelected() & AliVEvent::kMB) ||
830 (fInputHandler->IsEventSelected() & AliVEvent::kCentral) ||
831 (fInputHandler->IsEventSelected() & AliVEvent::kSemiCentral));
833 Double_t vtx5[3] ={ fEvent->GetPrimaryVertex()->GetX(),
834 fEvent->GetPrimaryVertex()->GetY(),
835 fEvent->GetPrimaryVertex()->GetZ()
839 Int_t replane = -999;
840 Int_t nTracks = fCTSEvent->GetEntriesFast();
842 if(vtx5[2]>=-10. && vtx5[2]<-8)
844 else if(vtx5[2]>=-8. && vtx5[2]<-6)
846 else if(vtx5[2]>=-6. && vtx5[2]<-4)
848 else if(vtx5[2]>=-4. && vtx5[2]<-2)
850 else if(vtx5[2]>=-2. && vtx5[2]<-0)
852 else if(vtx5[2]>=0. && vtx5[2]<=2)
854 else if(vtx5[2]>2. && vtx5[2]<=4)
856 else if(vtx5[2]>4. && vtx5[2]<=6)
858 else if(vtx5[2]>6. && vtx5[2]<=8)
860 else if(vtx5[2]>8. && vtx5[2]<=10)
863 if(kDoTrackMultBins){ // for pp analysis
885 Float_t fCentralityPerBin = (fCentralityBinMax -fCentralityBinMin)/10.;
886 Float_t fcentrality = 0;
888 if(fDataType == "ESD")fCentrality->GetCentralityPercentile(fCentralityClass);
889 else if(fDataType == "AOD") fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
892 if(fcentrality <=(fCentralityBinMin+1*fCentralityPerBin))
894 else if(fcentrality <=(fCentralityBinMin+2*fCentralityPerBin))
896 else if(fcentrality <=(fCentralityBinMin+3*fCentralityPerBin))
898 else if(fcentrality <=(fCentralityBinMin+4*fCentralityPerBin))
900 else if(fcentrality <=(fCentralityBinMin+5*fCentralityPerBin))
902 else if(fcentrality <=(fCentralityBinMin+6*fCentralityPerBin))
904 else if(fcentrality <=(fCentralityBinMin+7*fCentralityPerBin))
906 else if(fcentrality <=(fCentralityBinMin+8*fCentralityPerBin))
908 else if(fcentrality <=(fCentralityBinMin+9*fCentralityPerBin))
910 else if(fcentrality <=(fCentralityBinMin+10*fCentralityPerBin))
914 Float_t feventplane = fEventPlane->GetEventplane(fEventPlaneMethod);
915 if(feventplane<0)feventplane+=TMath::Pi();
916 if(feventplane>TMath::Pi())feventplane-=TMath::Pi();
918 replane = Int_t(10*feventplane)/TMath::Pi();
919 if(replane>9) replane =9;
926 if(!fListMixEvents[zvtx][centr][replane]) fListMixEvents[zvtx][centr][replane]=new TList() ;
927 TList *pool = fListMixEvents[zvtx][centr][replane];
929 TClonesArray *fAnaAODParticle = new TClonesArray();
930 if(kDoPhotonCorrAna && !kDoMesonCorrAna){
931 fAnaAODParticle = fPhotonEvent;
933 if(kDoMesonCorrAna && !kDoPhotonCorrAna){
934 fAnaAODParticle = fPhotonPairEvent;
937 Int_t naod = fAnaAODParticle->GetEntriesFast();
938 for(Int_t iaod=0; iaod<naod; iaod++){
939 AliAODParticle *aodParticle=(AliAODParticle*)fAnaAODParticle->At(iaod);
940 if(!aodParticle) continue;
942 if(aodParticle->IsIsolated())
943 printf("Inclusive correlation Isolated pt=%f, id=%d\n",aodParticle->Pt(),iaod);
944 if(GetAnaTypeInIsolated() == "Iso" && !aodParticle->IsIsolated()) continue;
945 if(GetAnaTypeInIsolated() == "NoIso" && aodParticle->IsIsolated())continue;
948 if(kMakeAbsoluteLeading || kMakeNearSideLeading){
949 if(!aodParticle->IsLeading())continue;
952 Double_t ptTrigg0 = aodParticle->Pt();
953 Double_t phiTrigg0 = aodParticle->Phi();
954 if(phiTrigg0<0.) phiTrigg0+=TMath::TwoPi();
955 Double_t etaTrigg0 = aodParticle->Eta();
957 if(MakeChargedCorrelation(iaod, ptTrigg0, phiTrigg0, etaTrigg0)){
958 if(kDoMixEventsAna) MakeChargedMixCorrelation(ptTrigg0, phiTrigg0, etaTrigg0, pool);
966 if(isSelectedMix && kDoMixEventsAna){
967 if(fCTSEvent->GetEntriesFast()>0){
968 pool->AddFirst(fCTSEvent);
970 if(pool->GetSize()>nMixedEvents){//Remove redundant events
971 TClonesArray * tmp = static_cast<TClonesArray*>(pool->Last()) ;
979 PostData(1, outputContainer);
984 //=============================================
985 void AliAnalysisTaskEMCALCaloTrackCorr::InitParameters()
987 fHistoPtBins = 300 ; fHistoPtMax = 60 ; fHistoPtMin = 0. ;
988 fHistoPhiBins = 360 ; fHistoPhiMax = TMath::TwoPi(); fHistoPhiMin = 0. ;
989 fHistoEtaBins = 180 ; fHistoEtaMax = 0.9; fHistoEtaMin = -0.9;
992 fSetPtThreshold = 0.5 ;
993 fSetSumPtThreshold = 0.5 ;
994 fSetPtFraction = 0.1 ;
995 fParticlesInCone = kIsolatedNeutralAndCharged;
996 fICMethod = kSumPtFracationIC ;
998 fCentralityClass = "V0M";
999 fCentralityBinMin = fCentralityBinMax=-1;
1000 fEventPlaneMethod = "Q";
1001 fEventTriggerMaks = AliVEvent::kAny;
1004 kDoMixEventsAna = kTRUE ;
1005 kDoPhotonCorrAna = kTRUE ;
1006 kDoAsymmetryCut = kTRUE ;
1007 kDoSelectHybridTracks = kFALSE;
1008 kDoMesonFill = kTRUE ;
1009 kNeutralMesonHistos = kTRUE ;
1010 kDoMesonCorrAna = kFALSE ;
1011 kDoIsolatedAna = kFALSE ;
1012 kDoTrackMultBins = kTRUE ;
1013 kUELeftRight = kFALSE ;
1014 kUENearAway = kTRUE ;
1015 kDecayPhotonCorr = kFALSE ;
1016 kAnaMCTruthCorr = kTRUE ;
1017 kAnaMCPrimaryCorr = kFALSE ;
1018 kAnaPi0Prim = kFALSE ;
1019 kAnaEtaPrim = kFALSE ;
1020 kAnaPhotonPrim = kFALSE ;
1021 kMakeAbsoluteLeading = kFALSE ;
1022 kMakeNearSideLeading = kFALSE ;
1023 kTwoTracksCorr = kFALSE ;
1024 kPhotonInAcceptance = kTRUE;
1025 kAnaDecayMapping = kTRUE ;
1026 //fCheckFidCut = kTRUE ;
1027 kEventTriggerAtSE = kTRUE ;
1028 kPhotonPairTimeCut = kFALSE ;
1029 kDoPhotonIDCut = kTRUE;
1037 fTimeCutMin = -1000;
1039 fPhotonPairTimeCut = 100;
1040 fEMCALDPhiCut = 0.03;
1041 fEMCALDEtaCut = 0.025;
1045 fAnaMesonType = "Pi0";
1046 fAsymmetryCut = 0.7;
1048 fTrackFilterMask = 128;
1051 fAnaTypeInIsolated = "Iso";
1053 fptTriggerBegin = 5.;
1054 fptTriggerEnd = 25.;
1055 fptAssociatedBegin = 1.;
1057 fDeltaPhiMinCut = TMath::Pi()/2.;
1058 fDeltaPhiMaxCut = 3*TMath::Pi()/2.;
1059 fDeltaPhiHRSize = TMath::Pi()/5.;
1060 fUeDeltaPhiSize = 0.2;
1061 fUeDeltaPhiFix = 1.3;
1063 fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
1066 //=====================================
1067 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::FillInputEvent()
1069 Float_t fcentrality = 0;
1071 if(GetDataType() == "ESD"){
1072 fEvent=dynamic_cast<AliESDEvent*>(InputEvent());
1074 Printf("ERROR: Could not retrieve event");
1078 AliESDEvent * fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent());
1079 if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors() <= 0){
1083 if(IsDataMC()) return kTRUE;
1085 if((TMath::Abs(fEvent->GetPrimaryVertex()->GetX()) < 1.e-6) &&
1086 (TMath::Abs(fEvent->GetPrimaryVertex()->GetY()) < 1.e-6) &&
1087 (TMath::Abs(fEvent->GetPrimaryVertex()->GetZ()) < 1.e-6))
1090 fCentrality = fEvent->GetCentrality();
1092 fcentrality=fCentrality->GetCentralityPercentile(fCentralityClass);
1094 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1097 else if(GetDataType() == "AOD"){
1098 fEvent=dynamic_cast<AliAODEvent*>(InputEvent());
1100 Printf("ERROR: Could not retrieve event");
1103 fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
1104 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1110 if(TMath::Abs(fEvent->GetPrimaryVertex()->GetZ())>=fZVertexCut) {
1111 return kFALSE; ///cut for primary vertex
1118 //======================================
1119 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputTrack()
1121 //select good track!
1123 for(Int_t itrack=0; itrack<fEvent->GetNumberOfTracks(); itrack++){
1124 AliVTrack* track = (AliVTrack*)fEvent->GetTrack(itrack);
1126 if(GetDataType() == "ESD"){
1127 AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*>(track);
1129 AliError(Form("Couldn't get ESD track %d\n", itrack));
1133 Bool_t trkOK = fESDtrackCuts->AcceptTrack(esdTrack);
1134 if (!trkOK) continue;
1137 else if(GetDataType() == "AOD"){
1138 AliAODTrack *aodTrack = dynamic_cast <AliAODTrack*>(track);
1140 AliError(Form("Couldn't get AOD track %d\n", itrack));
1144 if(kDoSelectHybridTracks){
1145 if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue;
1148 if(aodTrack->TestFilterBit(fTrackFilterMask)==kFALSE) continue;
1151 if(aodTrack->GetType()!= AliAODTrack::kPrimary) continue;
1156 new((*fCTSEvent)[nTracksCTS])AliAODParticle(track->Px(),track->Py(),track->Pz(),0);
1157 AliAODParticle * tr = (AliAODParticle*)fCTSEvent->At(nTracksCTS);
1158 tr->SetChargedSign(track->Charge());
1161 }///end loop for tracks
1163 if(nTracksCTS==0) return;
1165 fhNtracksAll->Fill(nTracksCTS);
1167 if(fInputHandler->IsEventSelected( ) & AliVEvent::kAnyINT){
1168 fhNtracksAnyINT->Fill(nTracksCTS);
1170 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kCentral){
1171 fhNtracksCentral->Fill(nTracksCTS);
1173 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kSemiCentral){
1174 fhNtracksSemiCentral->Fill(nTracksCTS);
1176 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kEMC7){
1177 fhNtracksEMC7->Fill(nTracksCTS);
1180 fhNtracksOtherTirgger->Fill(nTracksCTS);
1185 //=========================================
1186 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputPhoton()
1188 Int_t nClusters = 0;
1192 nClusters=fEvent->GetNumberOfCaloClusters();
1193 if(nClusters==0) return;
1195 for (Int_t j=0; j<nClusters; j++) {
1196 AliVCluster *clusEMCAL = fEvent->GetCaloCluster(j);
1197 AliVCaloCells *cellEMCAL = fEvent->GetEMCALCells();
1198 if(!clusEMCAL->IsEMCAL()) continue;
1199 if(clusEMCAL->E() < fMinE) continue;
1200 if(clusEMCAL->GetNCells() < fMinNCells) continue;
1201 if(clusEMCAL->GetDistanceToBadChannel() < fMinDistBad) continue;
1202 if(!fEMCALRecU->IsGoodCluster(clusEMCAL, fEMCALGeom, cellEMCAL)) continue;
1206 clusEMCAL ->GetMomentum(ph, vtx);
1208 fEMCALGeom->GetAbsCellIdFromEtaPhi(ph.Eta(), ph.Phi(), cellAbsId);
1209 Int_t iSM=-1, iTower=-1, Iphi=-1, Ieta=-1;
1210 fEMCALGeom->GetCellIndex(cellAbsId, iSM, iTower, Iphi, Ieta);
1211 Int_t iPhi=-1, iEta=-1;
1212 fEMCALGeom->GetCellPhiEtaIndexInSModule(iSM, iTower, Iphi, Ieta, iPhi, iEta);
1216 tmpId = clusEMCAL->GetID();
1219 ////put selected clusters into AOD (AliAODParticle)
1220 new((*fPhotonEvent)[nPhotonsEMCAL])AliAODParticle(ph.Px(), ph.Py(), ph.Pz(), ph.E());
1221 AliAODParticle * phcluster = (AliAODParticle*)fPhotonEvent->At(nPhotonsEMCAL);
1222 phcluster->SetModule(iSM);
1223 phcluster->SetNCells(clusEMCAL->GetNCells());
1224 phcluster->SetLambdas(clusEMCAL->GetM02(),clusEMCAL->GetM20());
1225 phcluster->SetDistBad(clusEMCAL->GetDistanceToBadChannel());
1226 phcluster->SetTOF(clusEMCAL->GetTOF()*1e9);
1227 phcluster->SetClusterID(clusEMCAL->GetID());
1228 phcluster->SetAODClusterID(nPhotonsEMCAL);
1229 phcluster->SetSSABit(kFALSE);
1230 phcluster->SetTOFBit(kFALSE);
1231 phcluster->SetTrackMatchedBit(kFALSE);
1233 Double_t tof = clusEMCAL->GetTOF()*1e9;
1234 if(tof >= fTimeCutMin && tof <= fTimeCutMax)
1235 phcluster->SetTOFBit(kTRUE);
1237 if(clusEMCAL->GetM02() > fL0CutMin && clusEMCAL->GetM02() < fL0CutMax)
1238 phcluster->SetSSABit(kTRUE);
1240 Int_t nMatches = clusEMCAL->GetNTracksMatched();
1244 fEMCALRecU->GetMatchedResiduals(clusEMCAL->GetID(), dZ, dR);
1245 if(TMath::Abs(dR) < fEMCALDPhiCut && TMath::Abs(dZ) < fEMCALDEtaCut){
1246 phcluster->SetTrackMatchedBit(kTRUE);
1252 }///end loop for clusters
1254 for(Int_t j=0; j< nPhotonsEMCAL; j++){
1255 AliAODParticle * phCan=(AliAODParticle*)fPhotonEvent->At(j);
1256 Double_t phPt = phCan->Pt();
1257 Double_t phPhi = phCan->Phi();
1258 if(phPhi<0) phPhi+=TMath::TwoPi();
1259 Double_t phEta = phCan->Eta();
1261 phCan->SetIsLeading(kFALSE);
1262 if(tmpId == phCan->GetClusterID())
1263 phCan->SetIsLeading(kTRUE);
1265 phCan->SetIsolated(kFALSE);
1266 phCan->SetIsolated(IsolatedPhoton(fPhotonEvent, fCTSEvent, j, phPt, phPhi, phEta));
1268 if(kDoPhotonIDCut && !phCan->IsPIDOK(8)) continue;
1270 fhPhotonE->Fill(phCan->E());
1271 fhPhotonPtPhi->Fill(phCan->Pt(), phCan->Phi());
1272 fhPhotonPtEta->Fill(phCan->Pt(), phCan->Eta());
1273 fhPhotonPhiEta->Fill(phCan->Phi(), phCan->Eta());
1280 //===================================
1281 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputMeson()
1282 { ////do pi0 and eta meson tag
1283 TLorentzVector ph12;
1284 Int_t nPhotonPairEMCAL = 0;
1286 for (Int_t i=0; i<nPhotonsEMCAL-1; i++) {
1287 AliAODParticle * ph1=(AliAODParticle*)fPhotonEvent->At(i);
1288 if(kDoPhotonIDCut && !ph1->IsPIDOK(8)) continue;
1289 for (Int_t j=i+1; j<nPhotonsEMCAL; j++) {
1290 AliAODParticle * ph2=(AliAODParticle*)fPhotonEvent->At(j);
1291 if(kDoPhotonIDCut && !ph2->IsPIDOK(8)) continue;
1293 Double_t phi=ph12.Phi();
1294 if(phi < 0) phi+=TMath::TwoPi();
1295 Float_t angle = ph1->Angle(ph2->Vect());
1296 Float_t asy = TMath::Abs((ph1->Energy()-ph2->Energy())/(ph1->Energy()+ph2->Energy()));
1297 Double_t deltaTime = TMath::Abs(ph1->GetTOF()-ph2->GetTOF());
1298 Int_t deltaModule = TMath::Abs(ph1->GetModule()-ph2->GetModule());
1300 new((*fPhotonPairEvent)[nPhotonPairEMCAL])AliAODParticle(ph12.Px(), ph12.Py(), ph12.Pz(), ph12.E());
1301 AliAODParticle * phPair = (AliAODParticle*)fPhotonPairEvent->At(nPhotonPairEMCAL);
1302 phPair->SetPhotonPairAsy(asy);
1303 phPair->SetPhotonPairAngle(angle);
1304 phPair->SetPhotonPairDTime(deltaTime);
1305 phPair->SetPhotonPairDModule(deltaModule);
1306 phPair->SetPhotonPairID(ph1->GetClusterID(), ph2->GetClusterID());
1307 phPair->SetAODPhotonPairID(ph1->GetAODClusterID(), ph2->GetAODClusterID());
1312 Double_t tmpMesonPt = 0;
1313 Int_t tmpMesonID = -1;
1315 for(Int_t k=0; k<nPhotonPairEMCAL; k++){
1316 AliAODParticle * phPairCan=(AliAODParticle*)fPhotonPairEvent->At(k);
1317 if(kPhotonPairTimeCut && phPairCan->GetPhotonPairDTime() > fPhotonPairTimeCut) continue;
1318 if(SelectPair(phPairCan)){
1319 AliAODParticle *photon1 = (AliAODParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(0));
1320 AliAODParticle *photon2 = (AliAODParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(1));
1322 fhMesonE->Fill(phPairCan->E());
1323 fhMesonPtPhi->Fill(phPairCan->Pt(), phPairCan->Phi());
1324 fhMesonPtEta->Fill(phPairCan->Pt(), phPairCan->Eta());
1325 fhMesonPhiEta->Fill(phPairCan->Phi(), phPairCan->Eta());
1327 if(phPairCan->Pt() > tmpMesonPt){
1328 tmpMesonPt = phPairCan->Pt();
1332 if(kAnaDecayMapping){
1333 Double_t deltaphi1 = TMath::Abs(phPairCan->Phi()-photon1->Phi());
1334 if(deltaphi1 > TMath::TwoPi()) deltaphi1-= TMath::TwoPi();
1336 Double_t deltaphi2 = TMath::Abs(phPairCan->Phi()-photon2->Phi());
1337 if(deltaphi2 > TMath::TwoPi()) deltaphi2-= TMath::TwoPi();
1339 Double_t deltaphi3 = TMath::Abs(photon1->Phi()-photon2->Phi());
1340 if(deltaphi3 > TMath::TwoPi()) deltaphi3-= TMath::TwoPi();
1342 fhPi0DecayPhoton1->Fill(phPairCan->Pt(),photon1->Pt());
1343 fhPi0DecayPhoton1Dphi->Fill(phPairCan->Pt(),deltaphi1);
1344 fhDecayPhoton1Pi0Dphi->Fill(photon1->Pt(),deltaphi1);
1345 fhPi0DecayPhoton2->Fill(phPairCan->Pt(),photon2->Pt());
1346 fhPi0DecayPhoton2Dphi->Fill(phPairCan->Pt(),deltaphi2);
1347 fhDecayPhoton2Pi0Dphi->Fill(photon2->Pt(),deltaphi2);
1348 fhDecayPhoton1Photon2->Fill(photon1->Pt(),photon2->Pt());
1349 fhDecayPhoton1Photon2Dphi->Fill(photon1->Pt(),deltaphi3);
1350 fhDecayPhoton2Photon1Dphi->Fill(photon2->Pt(),deltaphi3);
1353 }//end loop for mesons
1355 for(Int_t kmeson=0; kmeson<nPhotonPairEMCAL; kmeson++){
1356 AliAODParticle * phPairCan=(AliAODParticle*)fPhotonPairEvent->At(kmeson);
1357 phPairCan->SetIsLeading(kFALSE);
1358 if(kmeson == tmpMesonID) phPairCan->SetIsLeading(kTRUE);
1363 //======================================
1364 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::SelectPair(AliAODParticle *mesonCandidate)
1366 Double_t fInvMassMaxCutParam[3]={0.};
1367 if(fAnaMesonType.Contains("Pi0")){
1368 fInvMassMaxCutParam[0] = 0.0 ;
1369 fInvMassMaxCutParam[1] =-7.e-5 ;
1370 fInvMassMaxCutParam[2] = 8.e-5 ;
1373 fInvMassMaxCutParam[0] = 0.00 ;
1374 fInvMassMaxCutParam[1] = 0.00 ;
1375 fInvMassMaxCutParam[2] = 0.00 ;
1378 if(fAnaMesonType.Contains("Pi0")){
1379 fInvMassMinCut = 0.12;
1380 fInvMassMaxCut = 0.15;
1381 fLeftBandMinCut = 0;
1382 fLeftBandMaxCut = -1;
1383 fRightBandMinCut = 0.17;
1384 fRightBandMaxCut = 0.20;
1387 if(fAnaMesonType.Contains("Eta")){
1388 fInvMassMinCut = 0.52;
1389 fInvMassMaxCut = 0.58;
1390 fLeftBandMinCut = 0.38;
1391 fLeftBandMaxCut = 0.43;
1392 fRightBandMinCut = 0.65;
1393 fRightBandMaxCut = 0.70;
1396 Double_t phi = mesonCandidate->Phi();
1397 if(phi < 0) phi+=TMath::TwoPi();
1398 Double_t eta = mesonCandidate->Eta();
1399 Double_t invmass = mesonCandidate->M();
1400 Double_t angle = mesonCandidate->GetPhotonPairAngle();
1401 Double_t e = mesonCandidate->Energy();
1402 Double_t asy = mesonCandidate->GetPhotonPairAsy();
1404 if(kNeutralMesonHistos){
1405 fhAnglePairNoCut ->Fill(e,angle);
1406 fhInvMassPairNoCut->Fill(e,invmass);
1407 fhAsyNoCut ->Fill(e,asy);
1411 if(kDoAsymmetryCut){
1412 if(asy < fAsymmetryCut){
1413 if(kNeutralMesonHistos){
1414 fhInvMassPairAsyCut->Fill(e,invmass);
1415 fhAnglePairAsyCut ->Fill(e,angle);
1416 fhInvMassPairPhi->Fill(e, phi);
1417 fhInvMassPairEta->Fill(e, eta);
1419 } else return kFALSE;
1422 Float_t invmassmaxcut = fInvMassMaxCut;
1423 Float_t invmassRightBandMinCut = fRightBandMinCut;
1424 Float_t invmassRightBandMaxCut = fRightBandMaxCut;
1426 //for EMCAL, pi0s, mass depends strongly with energy for e > 6, loose max cut
1428 invmassmaxcut = (fInvMassMaxCutParam[0]+fInvMassMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1429 invmassRightBandMinCut = (fInvMassMaxCutParam[0]+fRightBandMinCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1430 invmassRightBandMaxCut = (fInvMassMaxCutParam[0]+fRightBandMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1433 if(!fAnaMesonType.Contains("SideBand")){
1434 if(invmass > fInvMassMinCut && invmass < invmassmaxcut){
1435 if(kNeutralMesonHistos){
1436 fhInvMassPairAllCut->Fill(e,invmass);
1437 fhAnglePairAllCut ->Fill(e,angle);
1438 fhAsyAllCut ->Fill(e,asy);
1446 else if(fAnaMesonType.Contains("SideBand")){
1447 // select a band around pi0/eta
1448 if((invmass > fLeftBandMinCut && invmass < fLeftBandMaxCut)||
1449 (invmass > invmassRightBandMinCut && invmass < invmassRightBandMaxCut)){
1450 if(kNeutralMesonHistos){
1451 fhInvMassPairAllCut->Fill(e,invmass);
1452 fhAnglePairAllCut ->Fill(e,angle);
1453 fhAsyAllCut ->Fill(e,asy);
1464 //==============================================
1465 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::IsolatedPhoton(TClonesArray *fPhotonEventIsolated, TClonesArray *fCTSEventIsolated, Int_t fIndexPhotonCan, Double_t ptPhotonCan, Double_t phiPhotonCan, Double_t etaPhotonCan)
1468 if(!kDoIsolatedAna) return kFALSE;
1470 Double_t fCalculatedConeR = -1.;
1471 Double_t ptTrack = -1.;
1472 Double_t phiTrack = -999.;
1473 Double_t etaTrack = -999.;
1474 Double_t ptNeutral = -1.;
1475 Double_t phiNeutral = -999.;
1476 Double_t etaNeutral = -999.;
1478 Float_t fSumPtInCone = 0.;
1481 Bool_t kIsolated = kFALSE;
1483 ////skip photon in the edge of r<0.1
1484 Double_t fPhiCut1 = TMath::Pi()*80./180.-0.1;
1485 Double_t fPhiCut2 = TMath::Pi()-0.1;
1486 Double_t fEtaCut1 = -0.6;
1487 Double_t fEtaCut2 = 0.6;
1489 if(etaPhotonCan>fEtaCut2 || etaPhotonCan<fEtaCut1 || phiPhotonCan>fPhiCut2 || phiPhotonCan<fPhiCut1) return kFALSE;
1492 if(fDebug>2) printf("candidate photon pt=%f, phi=%f, eta=%f\n",ptPhotonCan,phiPhotonCan,etaPhotonCan);
1494 if(fParticlesInCone==kIsolatedOnlyCharged ||fParticlesInCone==kIsolatedNeutralAndCharged){
1495 for(Int_t j1=0; j1<fCTSEventIsolated->GetEntries(); j1++){
1496 AliAODParticle *traForIso=(AliAODParticle*)fCTSEventIsolated->At(j1);
1497 ptTrack = traForIso->Pt();
1498 if(fDebug>2) printf("track pt=%f\n",ptTrack);
1499 phiTrack = traForIso->Phi();
1500 if(phiTrack<0.) phiTrack+=TMath::TwoPi();
1501 etaTrack = traForIso->Eta();
1503 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaTrack)*(etaPhotonCan-etaTrack)+ (phiPhotonCan-phiTrack)*(phiPhotonCan-phiTrack));
1505 if(fDebug>2) printf("track dR=%f\n",fCalculatedConeR);
1507 if(fCalculatedConeR<fSetConeR){
1508 if(fDebug>2) printf("track in Cone pt=%f\n",ptTrack);
1509 //calcuate three cases
1510 fSumPtInCone+=ptTrack;
1511 if(ptTrack>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1512 if(ptTrack>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1515 }////loop for Isolated track
1516 }////Onlycharged || NeutralAndCharged for whether Isolated photon
1518 if(fDebug>2) printf("track SumPtInCone=%f\n",fSumPtInCone);
1520 if(fParticlesInCone==kIsolatedOnlyNeutral || fParticlesInCone==kIsolatedNeutralAndCharged){
1521 for(Int_t i2=0; i2<fPhotonEventIsolated->GetEntries(); i2++){
1522 AliAODParticle *ph2=(AliAODParticle*)fPhotonEventIsolated->At(i2);
1523 if(!ph2->IsInTrackMatched() || i2==fIndexPhotonCan) continue;
1525 ptNeutral = ph2->Pt();
1526 if(fDebug>2) printf("photon or merged pt=%f\n",ptNeutral);
1527 phiNeutral = ph2->Phi();
1528 if(phiNeutral<0.) phiNeutral+=TMath::TwoPi();
1529 etaNeutral = ph2->Eta();
1531 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaNeutral)*(etaPhotonCan-etaNeutral)+(phiPhotonCan-phiNeutral)*(phiPhotonCan-phiNeutral));
1533 if(fDebug>2) printf("photon dR=%f\n",fCalculatedConeR);
1535 if(fCalculatedConeR<fSetConeR){
1536 if(fDebug>2)printf("photon in Cone pt=%f\n",ptNeutral);
1537 //calcuate four cases
1538 fSumPtInCone+=ptNeutral;
1539 if(ptNeutral>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1540 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1542 if(fSetPtFraction*ptPhotonCan<fSetPtThreshold) {
1543 if(ptNeutral>fSetPtThreshold) fNumFrac++ ;
1546 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++;
1550 }////loop for neutral
1551 }////if OnlyNeutral || NeutralAndCharged
1553 if(fDebug>2) printf("track and phton SumPtInCone=%f\n",fSumPtInCone);
1555 //check Isolation, depending on method
1556 if(fICMethod == kPtThresholdIC){
1557 if(fNum == -1) kIsolated = kTRUE ;
1559 else if(fICMethod == kSumPtInConeIC){
1560 if(fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1562 else if(fICMethod == kPtFracationIC){
1563 if(fNumFrac == -1) kIsolated = kTRUE ;
1565 else if(fICMethod == kSumPtFracationIC){
1566 //when the fPtFraction*ptC<fSumPtThreshold then consider the later case
1567 if(fSetPtFraction*ptPhotonCan<fSetSumPtThreshold && fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1568 if(fSetPtFraction*ptPhotonCan>fSetSumPtThreshold && fSumPtInCone<fSetPtFraction*ptPhotonCan) kIsolated = kTRUE ;
1571 if(fDebug>2) printf("kIsolated=%d\n",kIsolated);
1577 //=======================================
1578 void AliAnalysisTaskEMCALCaloTrackCorr::SetTriggerBins(Float_t *ptTriggBins)
1580 fTriggPtArray=new Float_t[GetNTriggPtBins()];
1581 for(Int_t i=0;i<=GetNTriggPtBins(); i++){
1582 fTriggPtArray[i] = ptTriggBins[i];
1586 //========================================_
1587 void AliAnalysisTaskEMCALCaloTrackCorr::SetAssociatedBins(Float_t *ptAssocBins)
1589 fAssocPtArray=new Float_t[GetNAssocPtBins()];
1590 for(Int_t i=0;i<=GetNAssocPtBins(); i++){
1591 fAssocPtArray[i] = ptAssocBins[i];
1595 //========================================
1596 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg,
1597 Double_t phiTrigg, Double_t etaTrigg)
1599 if(GetDebug() > 1)printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation() - Make trigger particle - charged hadron correlation \n");
1600 if(fPhotonEvent->GetEntriesFast()<=0) return kFALSE;
1603 Int_t nTracks = fCTSEvent->GetEntriesFast();
1604 fhNtracksCorr->Fill(nTracks);
1606 Double_t ptAssoc = -999.;
1607 Double_t phiAssoc = -999. ;
1608 Double_t etaAssoc = -999.;
1609 Double_t deltaPhi = -999.;
1610 Double_t deltaPhiUE = -999.;
1611 Double_t deltaEta = -999.;
1612 Double_t pout = -999.;
1613 Double_t zT = -999.;
1614 Double_t xE = -999.;
1615 Double_t xELog = -999.;
1616 Double_t uedPhi = -999.;
1617 Double_t uexE = -999.;
1618 Double_t uepout = -999.;
1619 Double_t uexELog = -999.;
1621 for(Int_t j1 = 0;j1 < nTracks; j1++ ){
1622 AliAODParticle *track = (AliAODParticle *)(fCTSEvent->At(j1)) ;
1623 if(!track) continue;
1624 if(kTwoTracksCorr && fTrackIndex ==j1) continue;
1625 ptAssoc = track->Pt();
1626 etaAssoc = track->Eta();
1627 phiAssoc = track->Phi() ;
1628 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1630 fhTrackPtPhi->Fill(ptAssoc, phiAssoc);
1631 fhTrackPtEta->Fill(ptAssoc, etaAssoc);
1632 fhTrackPhiEta->Fill(phiAssoc, etaAssoc);
1634 deltaPhi = phiTrigg-phiAssoc;
1635 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1636 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1638 //jump out this event if near side associated particle pt larger than trigger
1639 if(kMakeNearSideLeading){
1640 if(ptAssoc > ptTrigg && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return kFALSE;
1642 //jump out this event if there is any other particle with pt larger than trigger
1643 else if(kMakeAbsoluteLeading){
1644 if(ptAssoc > ptTrigg) return kFALSE;
1647 deltaEta = etaTrigg-etaAssoc;
1649 pout = ptAssoc*TMath::Abs(TMath::Sin(deltaPhi));
1650 xE =-ptAssoc/ptTrigg*TMath::Cos(deltaPhi);
1652 xELog = TMath::Log(1/xE);
1653 zT = ptAssoc/ptTrigg;
1655 uedPhi = gRandom->Uniform(TMath::Pi()/2,3*TMath::Pi()/2);
1656 uepout = ptAssoc*TMath::Sin(uedPhi);
1657 uexE =(-1*ptAssoc/ptTrigg)*TMath::Cos(uedPhi);
1658 if(uexE<0) uexE=-uexE;
1659 uexELog = TMath::Log(1/uexE);
1662 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(): deltaPhi= %f, deltaEta=%f, pout=%f, xE=%f\n",deltaPhi, deltaEta, pout, xE);
1664 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1665 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1666 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd){
1667 fhDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTrigg);
1668 fhDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTrigg);
1673 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd) {
1675 if(ptAssoc>1. && ptAssoc<5.){
1676 fhDPhiAssocPt15T->Fill(deltaPhi, ptTrigg);
1677 fhDEtaAssocPt15T->Fill(deltaEta, ptTrigg);
1680 if(ptAssoc>fptAssociatedBegin){
1682 fhDPhiTriggPtAssocPt->Fill(deltaPhi, ptAssoc);
1683 fhDEtaTriggPtAssocPt->Fill(deltaEta, ptAssoc);
1685 if((deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut)){
1686 fhAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1687 fhxELogTriggPt->Fill(xELog, ptTrigg);
1688 fhpoutTriggPt->Fill(pout , ptTrigg);
1689 fhzTTriggPt->Fill(zT, ptTrigg);
1690 fhxETriggPt->Fill(xE, ptTrigg);
1691 }////Only analysis Away Side
1693 if(TMath::Abs(deltaPhi-TMath::Pi())<fDeltaPhiHRSize){
1694 fhAssocPtTriggPtHR->Fill(ptAssoc, ptTrigg);
1695 fhxELogTriggPtHR->Fill(xELog, ptTrigg);
1696 fhpoutTriggPtHR->Fill(pout , ptTrigg);
1697 fhzTTriggPtHR->Fill(zT, ptTrigg);
1698 fhxETriggPtHR->Fill(xE, ptTrigg);
1699 }////Only analysis head region side in Away Side
1701 deltaPhiUE = deltaPhi;
1702 Bool_t kAnaUECorr1 = kFALSE;
1703 Bool_t kAnaUECorr2 = kFALSE;
1704 Double_t fUeAwaySide = 0.;
1705 if(fUeDeltaPhiFix == TMath::Pi()/2.) fUeAwaySide = 3*TMath::Pi()/2.;
1706 else fUeAwaySide = -1*fUeDeltaPhiFix;
1708 if(kUELeftRight && !kUENearAway) {
1709 if(deltaPhiUE>(-1*fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (-1*fUeDeltaPhiFix+fUeDeltaPhiSize))
1710 kAnaUECorr1 = kTRUE;
1711 if(deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (fUeDeltaPhiFix+fUeDeltaPhiSize))
1712 kAnaUECorr2 = kTRUE;
1714 if(!kUELeftRight && kUENearAway) {
1715 if((deltaPhiUE>-1*fUeDeltaPhiFix && deltaPhiUE<(-1*fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE<fUeDeltaPhiFix))
1716 kAnaUECorr1 = kTRUE;
1717 if((deltaPhiUE>fUeDeltaPhiFix && deltaPhiUE<(fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeAwaySide - fUeDeltaPhiSize) && deltaPhiUE<fUeAwaySide))
1718 kAnaUECorr2 = kTRUE;
1721 ////Ue at Near Side: pt_assoc in the side, but dphi at pi/2-3*pi/2
1723 fhNUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1724 fhNUexELogTriggPt->Fill(uexELog, ptTrigg);
1725 fhNUepoutTriggPt->Fill(uepout , ptTrigg);
1726 fhNUexETriggPt->Fill(uexE, ptTrigg);
1727 fhNUezTTriggPt->Fill(zT , ptTrigg);
1728 fhNUexETriggPt->Fill(uexE, ptTrigg);
1729 fhNUeDPhiDEta->Fill(deltaPhi, deltaEta);
1730 }////Define the UE and analysis some UE physics observables at left
1734 fhAUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1735 fhAUexELogTriggPt->Fill(uexELog, ptTrigg);
1736 fhAUepoutTriggPt->Fill(uepout, ptTrigg);
1737 fhAUezTTriggPt->Fill(zT, ptTrigg);
1738 fhAUexETriggPt->Fill(uexE, ptTrigg);
1739 fhAUeDPhiDEta->Fill(deltaPhi, deltaEta);
1740 }////Define the UE and analysis some UE physics observables at left
1744 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1745 if(ptTrigg>=fTriggPtArray[iTrigg] && ptTrigg<fTriggPtArray[iTrigg+1]){
1746 if(ptAssoc>fptAssociatedBegin){
1747 fhDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1748 fhDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1751 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1752 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1753 fhDPhiSumPtBin[iTrigg][jAssoc]->Fill(deltaPhi,ptAssoc+ptTrigg);
1754 fhDEtaSumPtBin[iTrigg][jAssoc]->Fill(deltaEta,ptAssoc+ptTrigg);
1755 fhDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1764 }//end loop associated hadrons
1766 fhPtPhiLeading->Fill(ptTrigg,phiTrigg);
1767 fhPtEtaLeading->Fill(ptTrigg, etaTrigg);
1773 //=======================================
1774 void AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(Double_t ptTriggMix, Double_t phiTriggMix, Double_t etaTriggMix, TList *poolMix)
1776 Double_t ptAssoc = -999.;
1777 Double_t phiAssoc = -999.;
1778 Double_t etaAssoc = -999.;
1779 Double_t deltaPhi = -999.;
1780 Double_t deltaEta = -999.;
1782 for(Int_t ev=0;ev<poolMix->GetSize();ev++){
1783 TClonesArray *bgTracks = static_cast<TClonesArray*>(poolMix->At(ev));
1784 Int_t nTracks=bgTracks->GetEntriesFast();
1785 for(Int_t j1 = 0;j1 <nTracks; j1++ ){
1786 AliAODParticle *track = (AliAODParticle*)bgTracks->At(j1) ;
1787 if(!track) continue;
1788 ptAssoc = track->Pt();
1789 etaAssoc = track->Eta();
1790 phiAssoc = track->Phi() ;
1791 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1793 deltaPhi = phiTriggMix-phiAssoc;
1794 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1795 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1796 deltaEta = etaTriggMix-etaAssoc;
1798 //jump out this event if near side associated particle pt larger than trigger
1799 if(kMakeNearSideLeading){
1800 if(ptAssoc > ptTriggMix && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return;
1802 //jump out this event if there is any other particle with pt larger than trigger
1803 else if(kMakeAbsoluteLeading){
1804 if(ptAssoc > ptTriggMix) return;
1808 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(): deltaPhi= %f, deltaEta=%f\n",deltaPhi, deltaEta);
1810 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1811 if(ptTriggMix>=fTriggPtArray[iTrigg] && ptTriggMix<fTriggPtArray[iTrigg+1]){
1812 if(ptAssoc>fptAssociatedBegin){
1813 fhMixDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1814 fhMixDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1817 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1818 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1819 fhMixDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1820 }//end if Associated pt bin
1821 }//end loop Associated pt bins
1822 }//end if trigger pt bin
1823 }//end loop trigger bins
1825 if(ptTriggMix>fptTriggerBegin && ptTriggMix<fptTriggerEnd){
1826 if(ptAssoc>1. && ptAssoc<5.){
1827 fhMixDPhiAssocPt15T->Fill(deltaPhi, ptTriggMix);
1828 fhMixDEtaAssocPt15T->Fill(deltaEta, ptTriggMix);
1831 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1832 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1833 fhMixDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTriggMix);
1834 fhMixDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTriggMix);
1836 }//end loop Associated pt bin
1837 }//end if Associated pt bins
1841 }//end loop associated hadrons
1846 }//end loop Mixed event in pool
1848 fhMixPtPhiLeading->Fill(ptTriggMix, phiTriggMix);
1849 fhMixPtEtaLeading->Fill(ptTriggMix, etaTriggMix);
1853 //========================================
1856 //============================================
1857 void AliAnalysisTaskEMCALCaloTrackCorr::SetTrackCuts(AliESDtrackCuts * cuts)
1860 if(fESDtrackCuts) delete fESDtrackCuts ;
1861 fESDtrackCuts = cuts ;
1865 //=============================================
1866 void AliAnalysisTaskEMCALCaloTrackCorr::Terminate(Option_t *)
1868 // Draw result to the screen
1869 // Called once at the end of the query
1871 fhNEvents->Fill(1,fnEvents);
1872 Printf("fnEvents=%d", fnEvents);
1874 fhNEventsAnalyized->Fill(1,fEventAnalyized);
1875 Printf("fEventAnalyized=%d", fEventAnalyized);