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 "AliCaloTrackParticle.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), fNCentralityBins(0), fNEventPlaneBins(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(!fInputHandler) return;
771 if(!FillInputEvent()) return; //select good event
773 fEventPlane = (dynamic_cast<AliVEvent*>(InputEvent()))->GetEventplane();
775 UInt_t isSelectedReal = 0;
776 if(!kEventTriggerAtSE) isSelectedReal = fInputHandler->IsEventSelected() & fEventTriggerMaks;
778 const AliVVertex *fEventVertex = fEvent->GetPrimaryVertex();
780 vtx[0] = fEventVertex->GetX();
781 vtx[1] = fEventVertex->GetY();
782 vtx[2] = fEventVertex->GetZ();
784 if(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()){
785 fMCEvent = MCEvent();
786 fStack = fMCEvent->Stack();
792 fPhotonEvent->Clear();
794 fPhotonEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters());
797 fPhotonPairEvent->Clear();
799 fPhotonPairEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters());
804 fCTSEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfTracks());
807 if(kEventTriggerAtSE){
810 if(kDoMesonFill)FillInputMeson();
816 if(kDoMesonFill)FillInputMeson();
819 if(nTracksCTS==0) return;
822 UInt_t isSelectedMix = 0;
823 isSelectedMix =((fInputHandler->IsEventSelected() & AliVEvent::kAnyINT) ||
824 (fInputHandler->IsEventSelected() & AliVEvent::kMB) ||
825 (fInputHandler->IsEventSelected() & AliVEvent::kCentral) ||
826 (fInputHandler->IsEventSelected() & AliVEvent::kSemiCentral));
828 Double_t vtx5[3] ={ fEvent->GetPrimaryVertex()->GetX(),
829 fEvent->GetPrimaryVertex()->GetY(),
830 fEvent->GetPrimaryVertex()->GetZ()
834 Int_t replane = -999;
835 Int_t nTracks = fCTSEvent->GetEntriesFast();
837 if(vtx5[2]>=-10. && vtx5[2]<-8)
839 else if(vtx5[2]>=-8. && vtx5[2]<-6)
841 else if(vtx5[2]>=-6. && vtx5[2]<-4)
843 else if(vtx5[2]>=-4. && vtx5[2]<-2)
845 else if(vtx5[2]>=-2. && vtx5[2]<-0)
847 else if(vtx5[2]>=0. && vtx5[2]<=2)
849 else if(vtx5[2]>2. && vtx5[2]<=4)
851 else if(vtx5[2]>4. && vtx5[2]<=6)
853 else if(vtx5[2]>6. && vtx5[2]<=8)
855 else if(vtx5[2]>8. && vtx5[2]<=10)
858 if(kDoTrackMultBins){ // for pp analysis
880 Float_t fCentralityPerBin = (fCentralityBinMax -fCentralityBinMin)/fNCentralityBins;
881 Float_t fcentrality = 0;
883 if(fDataType == "ESD")fCentrality->GetCentralityPercentile(fCentralityClass);
884 else if(fDataType == "AOD") fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
887 if(fcentrality <=(fCentralityBinMin+1*fCentralityPerBin))
889 else if(fcentrality <=(fCentralityBinMin+2*fCentralityPerBin))
891 else if(fcentrality <=(fCentralityBinMin+3*fCentralityPerBin))
893 else if(fcentrality <=(fCentralityBinMin+4*fCentralityPerBin))
895 else if(fcentrality <=(fCentralityBinMin+5*fCentralityPerBin))
897 else if(fcentrality <=(fCentralityBinMin+6*fCentralityPerBin))
899 else if(fcentrality <=(fCentralityBinMin+7*fCentralityPerBin))
901 else if(fcentrality <=(fCentralityBinMin+8*fCentralityPerBin))
903 else if(fcentrality <=(fCentralityBinMin+9*fCentralityPerBin))
905 else if(fcentrality <=(fCentralityBinMin+10*fCentralityPerBin))
909 Float_t feventplane = fEventPlane->GetEventplane(fEventPlaneMethod);
910 if(feventplane<0)feventplane+=TMath::Pi();
911 if(feventplane>TMath::Pi())feventplane-=TMath::Pi();
913 replane = Int_t((fNEventPlaneBins*feventplane)/TMath::Pi());
914 if(replane>(fNEventPlaneBins -1)) replane = fNEventPlaneBins -1;
921 if(!fListMixEvents[zvtx][centr][replane]) fListMixEvents[zvtx][centr][replane]=new TList() ;
922 TList *pool = fListMixEvents[zvtx][centr][replane];
924 TClonesArray *fAnaAODParticle = new TClonesArray();
925 if(kDoPhotonCorrAna && !kDoMesonCorrAna){
926 fAnaAODParticle = fPhotonEvent;
928 if(kDoMesonCorrAna && !kDoPhotonCorrAna){
929 fAnaAODParticle = fPhotonPairEvent;
932 Int_t naod = fAnaAODParticle->GetEntriesFast();
933 for(Int_t iaod=0; iaod<naod; iaod++){
934 AliCaloTrackParticle *aodParticle=(AliCaloTrackParticle*)fAnaAODParticle->At(iaod);
935 if(!aodParticle) continue;
937 if(aodParticle->IsIsolated())
938 printf("Inclusive correlation Isolated pt=%f, id=%d\n",aodParticle->Pt(),iaod);
939 if(GetAnaTypeInIsolated() == "Iso" && !aodParticle->IsIsolated()) continue;
940 if(GetAnaTypeInIsolated() == "NoIso" && aodParticle->IsIsolated())continue;
943 if(kMakeAbsoluteLeading || kMakeNearSideLeading){
944 if(!aodParticle->IsLeading())continue;
947 Double_t ptTrigg0 = aodParticle->Pt();
948 Double_t phiTrigg0 = aodParticle->Phi();
949 if(phiTrigg0<0.) phiTrigg0+=TMath::TwoPi();
950 Double_t etaTrigg0 = aodParticle->Eta();
952 if(MakeChargedCorrelation(iaod, ptTrigg0, phiTrigg0, etaTrigg0)){
953 if(kDoMixEventsAna) MakeChargedMixCorrelation(ptTrigg0, phiTrigg0, etaTrigg0, pool);
961 if(isSelectedMix && kDoMixEventsAna){
962 if(fCTSEvent->GetEntriesFast()>0){
963 pool->AddFirst(fCTSEvent);
965 if(pool->GetSize()>nMixedEvents){//Remove redundant events
966 TClonesArray * tmp = static_cast<TClonesArray*>(pool->Last()) ;
974 PostData(1, outputContainer);
979 //=============================================
980 void AliAnalysisTaskEMCALCaloTrackCorr::InitParameters()
982 fHistoPtBins = 300 ; fHistoPtMax = 60 ; fHistoPtMin = 0. ;
983 fHistoPhiBins = 360 ; fHistoPhiMax = TMath::TwoPi(); fHistoPhiMin = 0. ;
984 fHistoEtaBins = 180 ; fHistoEtaMax = 0.9; fHistoEtaMin = -0.9;
987 fSetPtThreshold = 0.5 ;
988 fSetSumPtThreshold = 0.5 ;
989 fSetPtFraction = 0.1 ;
990 fParticlesInCone = kIsolatedNeutralAndCharged;
991 fICMethod = kSumPtFracationIC ;
993 fCentralityClass = "V0M";
994 fCentralityBinMin = fCentralityBinMax=-1;
995 fEventPlaneMethod = "Q";
996 fEventTriggerMaks = AliVEvent::kAny;
997 fNCentralityBins = 5;
998 fNEventPlaneBins = 5;
1001 kDoMixEventsAna = kTRUE ;
1002 kDoPhotonCorrAna = kTRUE ;
1003 kDoAsymmetryCut = kTRUE ;
1004 kDoSelectHybridTracks = kFALSE;
1005 kDoMesonFill = kTRUE ;
1006 kNeutralMesonHistos = kTRUE ;
1007 kDoMesonCorrAna = kFALSE ;
1008 kDoIsolatedAna = kFALSE ;
1009 kDoTrackMultBins = kTRUE ;
1010 kUELeftRight = kFALSE ;
1011 kUENearAway = kTRUE ;
1012 kDecayPhotonCorr = kFALSE ;
1013 kAnaMCTruthCorr = kTRUE ;
1014 kAnaMCPrimaryCorr = kFALSE ;
1015 kAnaPi0Prim = kFALSE ;
1016 kAnaEtaPrim = kFALSE ;
1017 kAnaPhotonPrim = kFALSE ;
1018 kMakeAbsoluteLeading = kFALSE ;
1019 kMakeNearSideLeading = kFALSE ;
1020 kTwoTracksCorr = kFALSE ;
1021 kPhotonInAcceptance = kTRUE;
1022 kAnaDecayMapping = kTRUE ;
1023 //fCheckFidCut = kTRUE ;
1024 kEventTriggerAtSE = kTRUE ;
1025 kPhotonPairTimeCut = kFALSE ;
1026 kDoPhotonIDCut = kTRUE;
1034 fTimeCutMin = -1000;
1036 fPhotonPairTimeCut = 100;
1037 fEMCALDPhiCut = 0.03;
1038 fEMCALDEtaCut = 0.025;
1042 fAnaMesonType = "Pi0";
1043 fAsymmetryCut = 0.7;
1045 fTrackFilterMask = 128;
1048 fAnaTypeInIsolated = "Iso";
1050 fptTriggerBegin = 5.;
1051 fptTriggerEnd = 25.;
1052 fptAssociatedBegin = 1.;
1054 fDeltaPhiMinCut = TMath::Pi()/2.;
1055 fDeltaPhiMaxCut = 3*TMath::Pi()/2.;
1056 fDeltaPhiHRSize = TMath::Pi()/5.;
1057 fUeDeltaPhiSize = 0.2;
1058 fUeDeltaPhiFix = 1.3;
1060 fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
1063 //=====================================
1064 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::FillInputEvent()
1066 Float_t fcentrality = 0;
1068 if(GetDataType() == "ESD"){
1069 fEvent=dynamic_cast<AliESDEvent*>(InputEvent());
1071 Printf("ERROR: Could not retrieve event");
1075 AliESDEvent * fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent());
1076 if(!fESDEvent) return kFALSE;
1077 if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors() <= 0){
1082 if((TMath::Abs(fEvent->GetPrimaryVertex()->GetX()) < 1.e-6) &&
1083 (TMath::Abs(fEvent->GetPrimaryVertex()->GetY()) < 1.e-6) &&
1084 (TMath::Abs(fEvent->GetPrimaryVertex()->GetZ()) < 1.e-6))
1088 fCentrality = fEvent->GetCentrality();
1090 fcentrality=fCentrality->GetCentralityPercentile(fCentralityClass);
1092 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1095 else if(GetDataType() == "AOD"){
1096 fEvent=dynamic_cast<AliAODEvent*>(InputEvent());
1098 Printf("ERROR: Could not retrieve event");
1102 fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
1103 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1108 if(TMath::Abs(fEvent->GetPrimaryVertex()->GetZ())>=fZVertexCut) {
1109 return kFALSE; ///cut for primary vertex
1116 //======================================
1117 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputTrack()
1119 //select good track!
1121 for(Int_t itrack=0; itrack<fEvent->GetNumberOfTracks(); itrack++){
1122 AliVTrack* track = (AliVTrack*)fEvent->GetTrack(itrack);
1124 if(GetDataType() == "ESD"){
1125 AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*>(track);
1127 AliError(Form("Couldn't get ESD track %d\n", itrack));
1131 Bool_t trkOK = fESDtrackCuts->AcceptTrack(esdTrack);
1132 if (!trkOK) continue;
1135 else if(GetDataType() == "AOD"){
1136 AliAODTrack *aodTrack = dynamic_cast <AliAODTrack*>(track);
1138 AliError(Form("Couldn't get AOD track %d\n", itrack));
1142 if(kDoSelectHybridTracks){
1143 if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue;
1146 if(aodTrack->TestFilterBit(fTrackFilterMask)==kFALSE) continue;
1149 if(aodTrack->GetType()!= AliAODTrack::kPrimary) continue;
1154 new((*fCTSEvent)[nTracksCTS])AliCaloTrackParticle(track->Px(),track->Py(),track->Pz(),0);
1155 AliCaloTrackParticle * tr = (AliCaloTrackParticle*)fCTSEvent->At(nTracksCTS);
1156 tr->SetChargedSign(track->Charge());
1159 }///end loop for tracks
1161 if(nTracksCTS==0) return;
1163 fhNtracksAll->Fill(nTracksCTS);
1165 if(fInputHandler->IsEventSelected( ) & AliVEvent::kAnyINT){
1166 fhNtracksAnyINT->Fill(nTracksCTS);
1168 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kCentral){
1169 fhNtracksCentral->Fill(nTracksCTS);
1171 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kSemiCentral){
1172 fhNtracksSemiCentral->Fill(nTracksCTS);
1174 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kEMC7){
1175 fhNtracksEMC7->Fill(nTracksCTS);
1178 fhNtracksOtherTirgger->Fill(nTracksCTS);
1183 //=========================================
1184 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputPhoton()
1186 Int_t nClusters = 0;
1190 nClusters=fEvent->GetNumberOfCaloClusters();
1191 if(nClusters==0) return;
1193 for (Int_t j=0; j<nClusters; j++) {
1194 AliVCluster *clusEMCAL = fEvent->GetCaloCluster(j);
1195 AliVCaloCells *cellEMCAL = fEvent->GetEMCALCells();
1196 if(!clusEMCAL->IsEMCAL()) continue;
1197 if(clusEMCAL->E() < fMinE) continue;
1198 if(clusEMCAL->GetNCells() < fMinNCells) continue;
1199 if(clusEMCAL->GetDistanceToBadChannel() < fMinDistBad) continue;
1200 if(!fEMCALRecU->IsGoodCluster(clusEMCAL, fEMCALGeom, cellEMCAL)) continue;
1204 clusEMCAL ->GetMomentum(ph, vtx);
1206 fEMCALGeom->GetAbsCellIdFromEtaPhi(ph.Eta(), ph.Phi(), cellAbsId);
1207 Int_t iSM=-1, iTower=-1, Iphi=-1, Ieta=-1;
1208 fEMCALGeom->GetCellIndex(cellAbsId, iSM, iTower, Iphi, Ieta);
1209 Int_t iPhi=-1, iEta=-1;
1210 fEMCALGeom->GetCellPhiEtaIndexInSModule(iSM, iTower, Iphi, Ieta, iPhi, iEta);
1214 tmpId = clusEMCAL->GetID();
1217 ////put selected clusters into AOD (AliCaloTrackParticle)
1218 new((*fPhotonEvent)[nPhotonsEMCAL])AliCaloTrackParticle(ph.Px(), ph.Py(), ph.Pz(), ph.E());
1219 AliCaloTrackParticle * phcluster = (AliCaloTrackParticle*)fPhotonEvent->At(nPhotonsEMCAL);
1220 phcluster->SetModule(iSM);
1221 phcluster->SetNCells(clusEMCAL->GetNCells());
1222 phcluster->SetLambdas(clusEMCAL->GetM02(),clusEMCAL->GetM20());
1223 phcluster->SetDistBad(clusEMCAL->GetDistanceToBadChannel());
1224 phcluster->SetTOF(clusEMCAL->GetTOF()*1e9);
1225 phcluster->SetClusterID(clusEMCAL->GetID());
1226 phcluster->SetAODClusterID(nPhotonsEMCAL);
1227 phcluster->SetSSABit(kFALSE);
1228 phcluster->SetTOFBit(kFALSE);
1229 phcluster->SetTrackMatchedBit(kFALSE);
1231 Double_t tof = clusEMCAL->GetTOF()*1e9;
1232 if(tof >= fTimeCutMin && tof <= fTimeCutMax)
1233 phcluster->SetTOFBit(kTRUE);
1235 if(clusEMCAL->GetM02() > fL0CutMin && clusEMCAL->GetM02() < fL0CutMax)
1236 phcluster->SetSSABit(kTRUE);
1238 Int_t nMatches = clusEMCAL->GetNTracksMatched();
1242 fEMCALRecU->GetMatchedResiduals(clusEMCAL->GetID(), dZ, dR);
1243 if(TMath::Abs(dR) < fEMCALDPhiCut && TMath::Abs(dZ) < fEMCALDEtaCut){
1244 phcluster->SetTrackMatchedBit(kTRUE);
1250 }///end loop for clusters
1252 for(Int_t j=0; j< nPhotonsEMCAL; j++){
1253 AliCaloTrackParticle * phCan=(AliCaloTrackParticle*)fPhotonEvent->At(j);
1254 Double_t phPt = phCan->Pt();
1255 Double_t phPhi = phCan->Phi();
1256 if(phPhi<0) phPhi+=TMath::TwoPi();
1257 Double_t phEta = phCan->Eta();
1259 phCan->SetIsLeading(kFALSE);
1260 if(tmpId == phCan->GetClusterID())
1261 phCan->SetIsLeading(kTRUE);
1263 phCan->SetIsolated(kFALSE);
1264 phCan->SetIsolated(IsolatedPhoton(fPhotonEvent, fCTSEvent, j, phPt, phPhi, phEta));
1266 if(kDoPhotonIDCut && !phCan->IsPIDOK(8)) continue;
1268 fhPhotonE->Fill(phCan->E());
1269 fhPhotonPtPhi->Fill(phCan->Pt(), phCan->Phi());
1270 fhPhotonPtEta->Fill(phCan->Pt(), phCan->Eta());
1271 fhPhotonPhiEta->Fill(phCan->Phi(), phCan->Eta());
1278 //===================================
1279 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputMeson()
1280 { ////do pi0 and eta meson tag
1281 TLorentzVector ph12;
1282 Int_t nPhotonPairEMCAL = 0;
1284 for (Int_t i=0; i<nPhotonsEMCAL-1; i++) {
1285 AliCaloTrackParticle * ph1=(AliCaloTrackParticle*)fPhotonEvent->At(i);
1286 if(kDoPhotonIDCut && !ph1->IsPIDOK(8)) continue;
1287 for (Int_t j=i+1; j<nPhotonsEMCAL; j++) {
1288 AliCaloTrackParticle * ph2=(AliCaloTrackParticle*)fPhotonEvent->At(j);
1289 if(kDoPhotonIDCut && !ph2->IsPIDOK(8)) continue;
1291 Double_t phi=ph12.Phi();
1292 if(phi < 0) phi+=TMath::TwoPi();
1293 Float_t angle = ph1->Angle(ph2->Vect());
1294 Float_t asy = TMath::Abs((ph1->Energy()-ph2->Energy())/(ph1->Energy()+ph2->Energy()));
1295 Double_t deltaTime = TMath::Abs(ph1->GetTOF()-ph2->GetTOF());
1296 Int_t deltaModule = TMath::Abs(ph1->GetModule()-ph2->GetModule());
1298 new((*fPhotonPairEvent)[nPhotonPairEMCAL])AliCaloTrackParticle(ph12.Px(), ph12.Py(), ph12.Pz(), ph12.E());
1299 AliCaloTrackParticle * phPair = (AliCaloTrackParticle*)fPhotonPairEvent->At(nPhotonPairEMCAL);
1300 phPair->SetPhotonPairAsy(asy);
1301 phPair->SetPhotonPairAngle(angle);
1302 phPair->SetPhotonPairDTime(deltaTime);
1303 phPair->SetPhotonPairDModule(deltaModule);
1304 phPair->SetPhotonPairID(ph1->GetClusterID(), ph2->GetClusterID());
1305 phPair->SetAODPhotonPairID(ph1->GetAODClusterID(), ph2->GetAODClusterID());
1310 Double_t tmpMesonPt = 0;
1311 Int_t tmpMesonID = -1;
1313 for(Int_t k=0; k<nPhotonPairEMCAL; k++){
1314 AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(k);
1315 if(kPhotonPairTimeCut && phPairCan->GetPhotonPairDTime() > fPhotonPairTimeCut) continue;
1316 if(SelectPair(phPairCan)){
1317 AliCaloTrackParticle *photon1 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(0));
1318 AliCaloTrackParticle *photon2 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(1));
1320 fhMesonE->Fill(phPairCan->E());
1321 fhMesonPtPhi->Fill(phPairCan->Pt(), phPairCan->Phi());
1322 fhMesonPtEta->Fill(phPairCan->Pt(), phPairCan->Eta());
1323 fhMesonPhiEta->Fill(phPairCan->Phi(), phPairCan->Eta());
1325 if(phPairCan->Pt() > tmpMesonPt){
1326 tmpMesonPt = phPairCan->Pt();
1330 if(kAnaDecayMapping){
1331 Double_t deltaphi1 = TMath::Abs(phPairCan->Phi()-photon1->Phi());
1332 if(deltaphi1 > TMath::TwoPi()) deltaphi1-= TMath::TwoPi();
1334 Double_t deltaphi2 = TMath::Abs(phPairCan->Phi()-photon2->Phi());
1335 if(deltaphi2 > TMath::TwoPi()) deltaphi2-= TMath::TwoPi();
1337 Double_t deltaphi3 = TMath::Abs(photon1->Phi()-photon2->Phi());
1338 if(deltaphi3 > TMath::TwoPi()) deltaphi3-= TMath::TwoPi();
1340 fhPi0DecayPhoton1->Fill(phPairCan->Pt(),photon1->Pt());
1341 fhPi0DecayPhoton1Dphi->Fill(phPairCan->Pt(),deltaphi1);
1342 fhDecayPhoton1Pi0Dphi->Fill(photon1->Pt(),deltaphi1);
1343 fhPi0DecayPhoton2->Fill(phPairCan->Pt(),photon2->Pt());
1344 fhPi0DecayPhoton2Dphi->Fill(phPairCan->Pt(),deltaphi2);
1345 fhDecayPhoton2Pi0Dphi->Fill(photon2->Pt(),deltaphi2);
1346 fhDecayPhoton1Photon2->Fill(photon1->Pt(),photon2->Pt());
1347 fhDecayPhoton1Photon2Dphi->Fill(photon1->Pt(),deltaphi3);
1348 fhDecayPhoton2Photon1Dphi->Fill(photon2->Pt(),deltaphi3);
1351 }//end loop for mesons
1353 for(Int_t kmeson=0; kmeson<nPhotonPairEMCAL; kmeson++){
1354 AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(kmeson);
1355 phPairCan->SetIsLeading(kFALSE);
1356 if(kmeson == tmpMesonID) phPairCan->SetIsLeading(kTRUE);
1361 //======================================
1362 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::SelectPair(AliCaloTrackParticle *mesonCandidate)
1364 Double_t fInvMassMaxCutParam[3]={0.};
1365 if(fAnaMesonType.Contains("Pi0")){
1366 fInvMassMaxCutParam[0] = 0.0 ;
1367 fInvMassMaxCutParam[1] =-7.e-5 ;
1368 fInvMassMaxCutParam[2] = 8.e-5 ;
1371 fInvMassMaxCutParam[0] = 0.00 ;
1372 fInvMassMaxCutParam[1] = 0.00 ;
1373 fInvMassMaxCutParam[2] = 0.00 ;
1376 if(fAnaMesonType.Contains("Pi0")){
1377 fInvMassMinCut = 0.12;
1378 fInvMassMaxCut = 0.15;
1379 fLeftBandMinCut = 0;
1380 fLeftBandMaxCut = -1;
1381 fRightBandMinCut = 0.17;
1382 fRightBandMaxCut = 0.20;
1385 if(fAnaMesonType.Contains("Eta")){
1386 fInvMassMinCut = 0.52;
1387 fInvMassMaxCut = 0.58;
1388 fLeftBandMinCut = 0.38;
1389 fLeftBandMaxCut = 0.43;
1390 fRightBandMinCut = 0.65;
1391 fRightBandMaxCut = 0.70;
1394 Double_t phi = mesonCandidate->Phi();
1395 if(phi < 0) phi+=TMath::TwoPi();
1396 Double_t eta = mesonCandidate->Eta();
1397 Double_t invmass = mesonCandidate->M();
1398 Double_t angle = mesonCandidate->GetPhotonPairAngle();
1399 Double_t e = mesonCandidate->Energy();
1400 Double_t asy = mesonCandidate->GetPhotonPairAsy();
1402 if(kNeutralMesonHistos){
1403 fhAnglePairNoCut ->Fill(e,angle);
1404 fhInvMassPairNoCut->Fill(e,invmass);
1405 fhAsyNoCut ->Fill(e,asy);
1409 if(kDoAsymmetryCut){
1410 if(asy < fAsymmetryCut){
1411 if(kNeutralMesonHistos){
1412 fhInvMassPairAsyCut->Fill(e,invmass);
1413 fhAnglePairAsyCut ->Fill(e,angle);
1414 fhInvMassPairPhi->Fill(e, phi);
1415 fhInvMassPairEta->Fill(e, eta);
1417 } else return kFALSE;
1420 Float_t invmassmaxcut = fInvMassMaxCut;
1421 Float_t invmassRightBandMinCut = fRightBandMinCut;
1422 Float_t invmassRightBandMaxCut = fRightBandMaxCut;
1424 //for EMCAL, pi0s, mass depends strongly with energy for e > 6, loose max cut
1426 invmassmaxcut = (fInvMassMaxCutParam[0]+fInvMassMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1427 invmassRightBandMinCut = (fInvMassMaxCutParam[0]+fRightBandMinCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1428 invmassRightBandMaxCut = (fInvMassMaxCutParam[0]+fRightBandMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1431 if(!fAnaMesonType.Contains("SideBand")){
1432 if(invmass > fInvMassMinCut && invmass < invmassmaxcut){
1433 if(kNeutralMesonHistos){
1434 fhInvMassPairAllCut->Fill(e,invmass);
1435 fhAnglePairAllCut ->Fill(e,angle);
1436 fhAsyAllCut ->Fill(e,asy);
1444 else if(fAnaMesonType.Contains("SideBand")){
1445 // select a band around pi0/eta
1446 if((invmass > fLeftBandMinCut && invmass < fLeftBandMaxCut)||
1447 (invmass > invmassRightBandMinCut && invmass < invmassRightBandMaxCut)){
1448 if(kNeutralMesonHistos){
1449 fhInvMassPairAllCut->Fill(e,invmass);
1450 fhAnglePairAllCut ->Fill(e,angle);
1451 fhAsyAllCut ->Fill(e,asy);
1462 //==============================================
1463 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::IsolatedPhoton(TClonesArray *fPhotonEventIsolated, TClonesArray *fCTSEventIsolated, Int_t fIndexPhotonCan, Double_t ptPhotonCan, Double_t phiPhotonCan, Double_t etaPhotonCan)
1466 if(!kDoIsolatedAna) return kFALSE;
1468 Double_t fCalculatedConeR = -1.;
1469 Double_t ptTrack = -1.;
1470 Double_t phiTrack = -999.;
1471 Double_t etaTrack = -999.;
1472 Double_t ptNeutral = -1.;
1473 Double_t phiNeutral = -999.;
1474 Double_t etaNeutral = -999.;
1476 Float_t fSumPtInCone = 0.;
1479 Bool_t kIsolated = kFALSE;
1481 ////skip photon in the edge of r<0.1
1482 Double_t fPhiCut1 = TMath::Pi()*80./180.-0.1;
1483 Double_t fPhiCut2 = TMath::Pi()-0.1;
1484 Double_t fEtaCut1 = -0.6;
1485 Double_t fEtaCut2 = 0.6;
1487 if(etaPhotonCan>fEtaCut2 || etaPhotonCan<fEtaCut1 || phiPhotonCan>fPhiCut2 || phiPhotonCan<fPhiCut1) return kFALSE;
1490 if(fDebug>2) printf("candidate photon pt=%f, phi=%f, eta=%f\n",ptPhotonCan,phiPhotonCan,etaPhotonCan);
1492 if(fParticlesInCone==kIsolatedOnlyCharged ||fParticlesInCone==kIsolatedNeutralAndCharged){
1493 for(Int_t j1=0; j1<fCTSEventIsolated->GetEntries(); j1++){
1494 AliCaloTrackParticle *traForIso=(AliCaloTrackParticle*)fCTSEventIsolated->At(j1);
1495 ptTrack = traForIso->Pt();
1496 if(fDebug>2) printf("track pt=%f\n",ptTrack);
1497 phiTrack = traForIso->Phi();
1498 if(phiTrack<0.) phiTrack+=TMath::TwoPi();
1499 etaTrack = traForIso->Eta();
1501 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaTrack)*(etaPhotonCan-etaTrack)+ (phiPhotonCan-phiTrack)*(phiPhotonCan-phiTrack));
1503 if(fDebug>2) printf("track dR=%f\n",fCalculatedConeR);
1505 if(fCalculatedConeR<fSetConeR){
1506 if(fDebug>2) printf("track in Cone pt=%f\n",ptTrack);
1507 //calcuate three cases
1508 fSumPtInCone+=ptTrack;
1509 if(ptTrack>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1510 if(ptTrack>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1513 }////loop for Isolated track
1514 }////Onlycharged || NeutralAndCharged for whether Isolated photon
1516 if(fDebug>2) printf("track SumPtInCone=%f\n",fSumPtInCone);
1518 if(fParticlesInCone==kIsolatedOnlyNeutral || fParticlesInCone==kIsolatedNeutralAndCharged){
1519 for(Int_t i2=0; i2<fPhotonEventIsolated->GetEntries(); i2++){
1520 AliCaloTrackParticle *ph2=(AliCaloTrackParticle*)fPhotonEventIsolated->At(i2);
1521 if(!ph2->IsInTrackMatched() || i2==fIndexPhotonCan) continue;
1523 ptNeutral = ph2->Pt();
1524 if(fDebug>2) printf("photon or merged pt=%f\n",ptNeutral);
1525 phiNeutral = ph2->Phi();
1526 if(phiNeutral<0.) phiNeutral+=TMath::TwoPi();
1527 etaNeutral = ph2->Eta();
1529 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaNeutral)*(etaPhotonCan-etaNeutral)+(phiPhotonCan-phiNeutral)*(phiPhotonCan-phiNeutral));
1531 if(fDebug>2) printf("photon dR=%f\n",fCalculatedConeR);
1533 if(fCalculatedConeR<fSetConeR){
1534 if(fDebug>2)printf("photon in Cone pt=%f\n",ptNeutral);
1535 //calcuate four cases
1536 fSumPtInCone+=ptNeutral;
1537 if(ptNeutral>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1538 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1540 if(fSetPtFraction*ptPhotonCan<fSetPtThreshold) {
1541 if(ptNeutral>fSetPtThreshold) fNumFrac++ ;
1544 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++;
1548 }////loop for neutral
1549 }////if OnlyNeutral || NeutralAndCharged
1551 if(fDebug>2) printf("track and phton SumPtInCone=%f\n",fSumPtInCone);
1553 //check Isolation, depending on method
1554 if(fICMethod == kPtThresholdIC){
1555 if(fNum == -1) kIsolated = kTRUE ;
1557 else if(fICMethod == kSumPtInConeIC){
1558 if(fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1560 else if(fICMethod == kPtFracationIC){
1561 if(fNumFrac == -1) kIsolated = kTRUE ;
1563 else if(fICMethod == kSumPtFracationIC){
1564 //when the fPtFraction*ptC<fSumPtThreshold then consider the later case
1565 if(fSetPtFraction*ptPhotonCan<fSetSumPtThreshold && fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1566 if(fSetPtFraction*ptPhotonCan>fSetSumPtThreshold && fSumPtInCone<fSetPtFraction*ptPhotonCan) kIsolated = kTRUE ;
1569 if(fDebug>2) printf("kIsolated=%d\n",kIsolated);
1575 //=======================================
1576 void AliAnalysisTaskEMCALCaloTrackCorr::SetTriggerBins(Float_t *ptTriggBins)
1578 fTriggPtArray=new Float_t[GetNTriggPtBins()];
1579 for(Int_t i=0;i<=GetNTriggPtBins(); i++){
1580 fTriggPtArray[i] = ptTriggBins[i];
1584 //========================================_
1585 void AliAnalysisTaskEMCALCaloTrackCorr::SetAssociatedBins(Float_t *ptAssocBins)
1587 fAssocPtArray=new Float_t[GetNAssocPtBins()];
1588 for(Int_t i=0;i<=GetNAssocPtBins(); i++){
1589 fAssocPtArray[i] = ptAssocBins[i];
1593 //========================================
1594 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg,
1595 Double_t phiTrigg, Double_t etaTrigg)
1597 if(GetDebug() > 1)printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation() - Make trigger particle - charged hadron correlation \n");
1598 if(fPhotonEvent->GetEntriesFast()<=0) return kFALSE;
1601 Int_t nTracks = fCTSEvent->GetEntriesFast();
1602 fhNtracksCorr->Fill(nTracks);
1604 Double_t ptAssoc = -999.;
1605 Double_t phiAssoc = -999. ;
1606 Double_t etaAssoc = -999.;
1607 Double_t deltaPhi = -999.;
1608 Double_t deltaPhiUE = -999.;
1609 Double_t deltaEta = -999.;
1610 Double_t pout = -999.;
1611 Double_t zT = -999.;
1612 Double_t xE = -999.;
1613 Double_t xELog = -999.;
1614 Double_t uedPhi = -999.;
1615 Double_t uexE = -999.;
1616 Double_t uepout = -999.;
1617 Double_t uexELog = -999.;
1619 for(Int_t j1 = 0;j1 < nTracks; j1++ ){
1620 AliCaloTrackParticle *track = (AliCaloTrackParticle *)(fCTSEvent->At(j1)) ;
1621 if(!track) continue;
1622 if(kTwoTracksCorr && fTrackIndex ==j1) continue;
1623 ptAssoc = track->Pt();
1624 etaAssoc = track->Eta();
1625 phiAssoc = track->Phi() ;
1626 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1628 fhTrackPtPhi->Fill(ptAssoc, phiAssoc);
1629 fhTrackPtEta->Fill(ptAssoc, etaAssoc);
1630 fhTrackPhiEta->Fill(phiAssoc, etaAssoc);
1632 deltaPhi = phiTrigg-phiAssoc;
1633 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1634 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1636 //jump out this event if near side associated particle pt larger than trigger
1637 if(kMakeNearSideLeading){
1638 if(ptAssoc > ptTrigg && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return kFALSE;
1640 //jump out this event if there is any other particle with pt larger than trigger
1641 else if(kMakeAbsoluteLeading){
1642 if(ptAssoc > ptTrigg) return kFALSE;
1645 deltaEta = etaTrigg-etaAssoc;
1647 pout = ptAssoc*TMath::Abs(TMath::Sin(deltaPhi));
1648 xE =-ptAssoc/ptTrigg*TMath::Cos(deltaPhi);
1650 xELog = TMath::Log(1/xE);
1651 zT = ptAssoc/ptTrigg;
1653 uedPhi = gRandom->Uniform(TMath::Pi()/2,3*TMath::Pi()/2);
1654 uepout = ptAssoc*TMath::Sin(uedPhi);
1655 uexE =(-1*ptAssoc/ptTrigg)*TMath::Cos(uedPhi);
1656 if(uexE<0) uexE=-uexE;
1657 uexELog = TMath::Log(1/uexE);
1660 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(): deltaPhi= %f, deltaEta=%f, pout=%f, xE=%f\n",deltaPhi, deltaEta, pout, xE);
1662 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1663 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1664 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd){
1665 fhDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTrigg);
1666 fhDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTrigg);
1671 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd) {
1673 if(ptAssoc>1. && ptAssoc<5.){
1674 fhDPhiAssocPt15T->Fill(deltaPhi, ptTrigg);
1675 fhDEtaAssocPt15T->Fill(deltaEta, ptTrigg);
1678 if(ptAssoc>fptAssociatedBegin){
1680 fhDPhiTriggPtAssocPt->Fill(deltaPhi, ptAssoc);
1681 fhDEtaTriggPtAssocPt->Fill(deltaEta, ptAssoc);
1683 if((deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut)){
1684 fhAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1685 fhxELogTriggPt->Fill(xELog, ptTrigg);
1686 fhpoutTriggPt->Fill(pout , ptTrigg);
1687 fhzTTriggPt->Fill(zT, ptTrigg);
1688 fhxETriggPt->Fill(xE, ptTrigg);
1689 }////Only analysis Away Side
1691 if(TMath::Abs(deltaPhi-TMath::Pi())<fDeltaPhiHRSize){
1692 fhAssocPtTriggPtHR->Fill(ptAssoc, ptTrigg);
1693 fhxELogTriggPtHR->Fill(xELog, ptTrigg);
1694 fhpoutTriggPtHR->Fill(pout , ptTrigg);
1695 fhzTTriggPtHR->Fill(zT, ptTrigg);
1696 fhxETriggPtHR->Fill(xE, ptTrigg);
1697 }////Only analysis head region side in Away Side
1699 deltaPhiUE = deltaPhi;
1700 Bool_t kAnaUECorr1 = kFALSE;
1701 Bool_t kAnaUECorr2 = kFALSE;
1702 Double_t fUeAwaySide = 0.;
1703 if(fUeDeltaPhiFix == TMath::Pi()/2.) fUeAwaySide = 3*TMath::Pi()/2.;
1704 else fUeAwaySide = -1*fUeDeltaPhiFix;
1706 if(kUELeftRight && !kUENearAway) {
1707 if(deltaPhiUE>(-1*fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (-1*fUeDeltaPhiFix+fUeDeltaPhiSize))
1708 kAnaUECorr1 = kTRUE;
1709 if(deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (fUeDeltaPhiFix+fUeDeltaPhiSize))
1710 kAnaUECorr2 = kTRUE;
1712 if(!kUELeftRight && kUENearAway) {
1713 if((deltaPhiUE>-1*fUeDeltaPhiFix && deltaPhiUE<(-1*fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE<fUeDeltaPhiFix))
1714 kAnaUECorr1 = kTRUE;
1715 if((deltaPhiUE>fUeDeltaPhiFix && deltaPhiUE<(fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeAwaySide - fUeDeltaPhiSize) && deltaPhiUE<fUeAwaySide))
1716 kAnaUECorr2 = kTRUE;
1719 ////Ue at Near Side: pt_assoc in the side, but dphi at pi/2-3*pi/2
1721 fhNUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1722 fhNUexELogTriggPt->Fill(uexELog, ptTrigg);
1723 fhNUepoutTriggPt->Fill(uepout , ptTrigg);
1724 fhNUexETriggPt->Fill(uexE, ptTrigg);
1725 fhNUezTTriggPt->Fill(zT , ptTrigg);
1726 fhNUexETriggPt->Fill(uexE, ptTrigg);
1727 fhNUeDPhiDEta->Fill(deltaPhi, deltaEta);
1728 }////Define the UE and analysis some UE physics observables at left
1732 fhAUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1733 fhAUexELogTriggPt->Fill(uexELog, ptTrigg);
1734 fhAUepoutTriggPt->Fill(uepout, ptTrigg);
1735 fhAUezTTriggPt->Fill(zT, ptTrigg);
1736 fhAUexETriggPt->Fill(uexE, ptTrigg);
1737 fhAUeDPhiDEta->Fill(deltaPhi, deltaEta);
1738 }////Define the UE and analysis some UE physics observables at left
1742 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1743 if(ptTrigg>=fTriggPtArray[iTrigg] && ptTrigg<fTriggPtArray[iTrigg+1]){
1744 if(ptAssoc>fptAssociatedBegin){
1745 fhDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1746 fhDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1749 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1750 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1751 fhDPhiSumPtBin[iTrigg][jAssoc]->Fill(deltaPhi,ptAssoc+ptTrigg);
1752 fhDEtaSumPtBin[iTrigg][jAssoc]->Fill(deltaEta,ptAssoc+ptTrigg);
1753 fhDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1762 }//end loop associated hadrons
1764 fhPtPhiLeading->Fill(ptTrigg,phiTrigg);
1765 fhPtEtaLeading->Fill(ptTrigg, etaTrigg);
1771 //=======================================
1772 void AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(Double_t ptTriggMix, Double_t phiTriggMix, Double_t etaTriggMix, TList *poolMix)
1774 Double_t ptAssoc = -999.;
1775 Double_t phiAssoc = -999.;
1776 Double_t etaAssoc = -999.;
1777 Double_t deltaPhi = -999.;
1778 Double_t deltaEta = -999.;
1780 for(Int_t ev=0;ev<poolMix->GetSize();ev++){
1781 TClonesArray *bgTracks = static_cast<TClonesArray*>(poolMix->At(ev));
1782 Int_t nTracks=bgTracks->GetEntriesFast();
1783 for(Int_t j1 = 0;j1 <nTracks; j1++ ){
1784 AliCaloTrackParticle *track = (AliCaloTrackParticle*)bgTracks->At(j1) ;
1785 if(!track) continue;
1786 ptAssoc = track->Pt();
1787 etaAssoc = track->Eta();
1788 phiAssoc = track->Phi() ;
1789 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1791 deltaPhi = phiTriggMix-phiAssoc;
1792 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1793 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1794 deltaEta = etaTriggMix-etaAssoc;
1796 //jump out this event if near side associated particle pt larger than trigger
1797 if(kMakeNearSideLeading){
1798 if(ptAssoc > ptTriggMix && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return;
1800 //jump out this event if there is any other particle with pt larger than trigger
1801 else if(kMakeAbsoluteLeading){
1802 if(ptAssoc > ptTriggMix) return;
1806 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(): deltaPhi= %f, deltaEta=%f\n",deltaPhi, deltaEta);
1808 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1809 if(ptTriggMix>=fTriggPtArray[iTrigg] && ptTriggMix<fTriggPtArray[iTrigg+1]){
1810 if(ptAssoc>fptAssociatedBegin){
1811 fhMixDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1812 fhMixDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1815 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1816 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1817 fhMixDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1818 }//end if Associated pt bin
1819 }//end loop Associated pt bins
1820 }//end if trigger pt bin
1821 }//end loop trigger bins
1823 if(ptTriggMix>fptTriggerBegin && ptTriggMix<fptTriggerEnd){
1824 if(ptAssoc>1. && ptAssoc<5.){
1825 fhMixDPhiAssocPt15T->Fill(deltaPhi, ptTriggMix);
1826 fhMixDEtaAssocPt15T->Fill(deltaEta, ptTriggMix);
1829 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1830 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1831 fhMixDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTriggMix);
1832 fhMixDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTriggMix);
1834 }//end loop Associated pt bin
1835 }//end if Associated pt bins
1838 }//end loop associated hadrons
1842 }//end loop Mixed event in pool
1844 fhMixPtPhiLeading->Fill(ptTriggMix, phiTriggMix);
1845 fhMixPtEtaLeading->Fill(ptTriggMix, etaTriggMix);
1849 //========================================
1852 //============================================
1853 void AliAnalysisTaskEMCALCaloTrackCorr::SetTrackCuts(AliESDtrackCuts * cuts)
1856 if(fESDtrackCuts) delete fESDtrackCuts ;
1857 fESDtrackCuts = cuts ;
1861 //=============================================
1862 void AliAnalysisTaskEMCALCaloTrackCorr::Terminate(Option_t *)
1864 // Draw result to the screen
1865 // Called once at the end of the query
1867 fhNEvents->Fill(1,fnEvents);
1868 Printf("fnEvents=%d", fnEvents);
1870 fhNEventsAnalyized->Fill(1,fEventAnalyized);
1871 Printf("fEventAnalyized=%d", fEventAnalyized);