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(!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("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters());
802 fPhotonPairEvent->Clear();
804 fPhotonPairEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters());
809 fCTSEvent = new TClonesArray("AliCaloTrackParticle", 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)/fNCentralityBins;
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((fNEventPlaneBins*feventplane)/TMath::Pi());
919 if(replane>(fNEventPlaneBins -1)) replane = fNEventPlaneBins -1;
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 AliCaloTrackParticle *aodParticle=(AliCaloTrackParticle*)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;
1002 fNCentralityBins = 5;
1003 fNEventPlaneBins = 5;
1006 kDoMixEventsAna = kTRUE ;
1007 kDoPhotonCorrAna = kTRUE ;
1008 kDoAsymmetryCut = kTRUE ;
1009 kDoSelectHybridTracks = kFALSE;
1010 kDoMesonFill = kTRUE ;
1011 kNeutralMesonHistos = kTRUE ;
1012 kDoMesonCorrAna = kFALSE ;
1013 kDoIsolatedAna = kFALSE ;
1014 kDoTrackMultBins = kTRUE ;
1015 kUELeftRight = kFALSE ;
1016 kUENearAway = kTRUE ;
1017 kDecayPhotonCorr = kFALSE ;
1018 kAnaMCTruthCorr = kTRUE ;
1019 kAnaMCPrimaryCorr = kFALSE ;
1020 kAnaPi0Prim = kFALSE ;
1021 kAnaEtaPrim = kFALSE ;
1022 kAnaPhotonPrim = kFALSE ;
1023 kMakeAbsoluteLeading = kFALSE ;
1024 kMakeNearSideLeading = kFALSE ;
1025 kTwoTracksCorr = kFALSE ;
1026 kPhotonInAcceptance = kTRUE;
1027 kAnaDecayMapping = kTRUE ;
1028 //fCheckFidCut = kTRUE ;
1029 kEventTriggerAtSE = kTRUE ;
1030 kPhotonPairTimeCut = kFALSE ;
1031 kDoPhotonIDCut = kTRUE;
1039 fTimeCutMin = -1000;
1041 fPhotonPairTimeCut = 100;
1042 fEMCALDPhiCut = 0.03;
1043 fEMCALDEtaCut = 0.025;
1047 fAnaMesonType = "Pi0";
1048 fAsymmetryCut = 0.7;
1050 fTrackFilterMask = 128;
1053 fAnaTypeInIsolated = "Iso";
1055 fptTriggerBegin = 5.;
1056 fptTriggerEnd = 25.;
1057 fptAssociatedBegin = 1.;
1059 fDeltaPhiMinCut = TMath::Pi()/2.;
1060 fDeltaPhiMaxCut = 3*TMath::Pi()/2.;
1061 fDeltaPhiHRSize = TMath::Pi()/5.;
1062 fUeDeltaPhiSize = 0.2;
1063 fUeDeltaPhiFix = 1.3;
1065 fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
1068 //=====================================
1069 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::FillInputEvent()
1071 Float_t fcentrality = 0;
1073 if(GetDataType() == "ESD"){
1074 fEvent=dynamic_cast<AliESDEvent*>(InputEvent());
1076 Printf("ERROR: Could not retrieve event");
1080 AliESDEvent * fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent());
1081 if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors() <= 0){
1085 if(IsDataMC()) return kTRUE;
1087 if((TMath::Abs(fEvent->GetPrimaryVertex()->GetX()) < 1.e-6) &&
1088 (TMath::Abs(fEvent->GetPrimaryVertex()->GetY()) < 1.e-6) &&
1089 (TMath::Abs(fEvent->GetPrimaryVertex()->GetZ()) < 1.e-6))
1092 fCentrality = fEvent->GetCentrality();
1094 fcentrality=fCentrality->GetCentralityPercentile(fCentralityClass);
1096 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1099 else if(GetDataType() == "AOD"){
1100 fEvent=dynamic_cast<AliAODEvent*>(InputEvent());
1102 Printf("ERROR: Could not retrieve event");
1106 fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
1107 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1112 if(TMath::Abs(fEvent->GetPrimaryVertex()->GetZ())>=fZVertexCut) {
1113 return kFALSE; ///cut for primary vertex
1120 //======================================
1121 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputTrack()
1123 //select good track!
1125 for(Int_t itrack=0; itrack<fEvent->GetNumberOfTracks(); itrack++){
1126 AliVTrack* track = (AliVTrack*)fEvent->GetTrack(itrack);
1128 if(GetDataType() == "ESD"){
1129 AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*>(track);
1131 AliError(Form("Couldn't get ESD track %d\n", itrack));
1135 Bool_t trkOK = fESDtrackCuts->AcceptTrack(esdTrack);
1136 if (!trkOK) continue;
1139 else if(GetDataType() == "AOD"){
1140 AliAODTrack *aodTrack = dynamic_cast <AliAODTrack*>(track);
1142 AliError(Form("Couldn't get AOD track %d\n", itrack));
1146 if(kDoSelectHybridTracks){
1147 if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue;
1150 if(aodTrack->TestFilterBit(fTrackFilterMask)==kFALSE) continue;
1153 if(aodTrack->GetType()!= AliAODTrack::kPrimary) continue;
1158 new((*fCTSEvent)[nTracksCTS])AliCaloTrackParticle(track->Px(),track->Py(),track->Pz(),0);
1159 AliCaloTrackParticle * tr = (AliCaloTrackParticle*)fCTSEvent->At(nTracksCTS);
1160 tr->SetChargedSign(track->Charge());
1163 }///end loop for tracks
1165 if(nTracksCTS==0) return;
1167 fhNtracksAll->Fill(nTracksCTS);
1169 if(fInputHandler->IsEventSelected( ) & AliVEvent::kAnyINT){
1170 fhNtracksAnyINT->Fill(nTracksCTS);
1172 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kCentral){
1173 fhNtracksCentral->Fill(nTracksCTS);
1175 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kSemiCentral){
1176 fhNtracksSemiCentral->Fill(nTracksCTS);
1178 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kEMC7){
1179 fhNtracksEMC7->Fill(nTracksCTS);
1182 fhNtracksOtherTirgger->Fill(nTracksCTS);
1187 //=========================================
1188 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputPhoton()
1190 Int_t nClusters = 0;
1194 nClusters=fEvent->GetNumberOfCaloClusters();
1195 if(nClusters==0) return;
1197 for (Int_t j=0; j<nClusters; j++) {
1198 AliVCluster *clusEMCAL = fEvent->GetCaloCluster(j);
1199 AliVCaloCells *cellEMCAL = fEvent->GetEMCALCells();
1200 if(!clusEMCAL->IsEMCAL()) continue;
1201 if(clusEMCAL->E() < fMinE) continue;
1202 if(clusEMCAL->GetNCells() < fMinNCells) continue;
1203 if(clusEMCAL->GetDistanceToBadChannel() < fMinDistBad) continue;
1204 if(!fEMCALRecU->IsGoodCluster(clusEMCAL, fEMCALGeom, cellEMCAL)) continue;
1208 clusEMCAL ->GetMomentum(ph, vtx);
1210 fEMCALGeom->GetAbsCellIdFromEtaPhi(ph.Eta(), ph.Phi(), cellAbsId);
1211 Int_t iSM=-1, iTower=-1, Iphi=-1, Ieta=-1;
1212 fEMCALGeom->GetCellIndex(cellAbsId, iSM, iTower, Iphi, Ieta);
1213 Int_t iPhi=-1, iEta=-1;
1214 fEMCALGeom->GetCellPhiEtaIndexInSModule(iSM, iTower, Iphi, Ieta, iPhi, iEta);
1218 tmpId = clusEMCAL->GetID();
1221 ////put selected clusters into AOD (AliCaloTrackParticle)
1222 new((*fPhotonEvent)[nPhotonsEMCAL])AliCaloTrackParticle(ph.Px(), ph.Py(), ph.Pz(), ph.E());
1223 AliCaloTrackParticle * phcluster = (AliCaloTrackParticle*)fPhotonEvent->At(nPhotonsEMCAL);
1224 phcluster->SetModule(iSM);
1225 phcluster->SetNCells(clusEMCAL->GetNCells());
1226 phcluster->SetLambdas(clusEMCAL->GetM02(),clusEMCAL->GetM20());
1227 phcluster->SetDistBad(clusEMCAL->GetDistanceToBadChannel());
1228 phcluster->SetTOF(clusEMCAL->GetTOF()*1e9);
1229 phcluster->SetClusterID(clusEMCAL->GetID());
1230 phcluster->SetAODClusterID(nPhotonsEMCAL);
1231 phcluster->SetSSABit(kFALSE);
1232 phcluster->SetTOFBit(kFALSE);
1233 phcluster->SetTrackMatchedBit(kFALSE);
1235 Double_t tof = clusEMCAL->GetTOF()*1e9;
1236 if(tof >= fTimeCutMin && tof <= fTimeCutMax)
1237 phcluster->SetTOFBit(kTRUE);
1239 if(clusEMCAL->GetM02() > fL0CutMin && clusEMCAL->GetM02() < fL0CutMax)
1240 phcluster->SetSSABit(kTRUE);
1242 Int_t nMatches = clusEMCAL->GetNTracksMatched();
1246 fEMCALRecU->GetMatchedResiduals(clusEMCAL->GetID(), dZ, dR);
1247 if(TMath::Abs(dR) < fEMCALDPhiCut && TMath::Abs(dZ) < fEMCALDEtaCut){
1248 phcluster->SetTrackMatchedBit(kTRUE);
1254 }///end loop for clusters
1256 for(Int_t j=0; j< nPhotonsEMCAL; j++){
1257 AliCaloTrackParticle * phCan=(AliCaloTrackParticle*)fPhotonEvent->At(j);
1258 Double_t phPt = phCan->Pt();
1259 Double_t phPhi = phCan->Phi();
1260 if(phPhi<0) phPhi+=TMath::TwoPi();
1261 Double_t phEta = phCan->Eta();
1263 phCan->SetIsLeading(kFALSE);
1264 if(tmpId == phCan->GetClusterID())
1265 phCan->SetIsLeading(kTRUE);
1267 phCan->SetIsolated(kFALSE);
1268 phCan->SetIsolated(IsolatedPhoton(fPhotonEvent, fCTSEvent, j, phPt, phPhi, phEta));
1270 if(kDoPhotonIDCut && !phCan->IsPIDOK(8)) continue;
1272 fhPhotonE->Fill(phCan->E());
1273 fhPhotonPtPhi->Fill(phCan->Pt(), phCan->Phi());
1274 fhPhotonPtEta->Fill(phCan->Pt(), phCan->Eta());
1275 fhPhotonPhiEta->Fill(phCan->Phi(), phCan->Eta());
1282 //===================================
1283 void AliAnalysisTaskEMCALCaloTrackCorr::FillInputMeson()
1284 { ////do pi0 and eta meson tag
1285 TLorentzVector ph12;
1286 Int_t nPhotonPairEMCAL = 0;
1288 for (Int_t i=0; i<nPhotonsEMCAL-1; i++) {
1289 AliCaloTrackParticle * ph1=(AliCaloTrackParticle*)fPhotonEvent->At(i);
1290 if(kDoPhotonIDCut && !ph1->IsPIDOK(8)) continue;
1291 for (Int_t j=i+1; j<nPhotonsEMCAL; j++) {
1292 AliCaloTrackParticle * ph2=(AliCaloTrackParticle*)fPhotonEvent->At(j);
1293 if(kDoPhotonIDCut && !ph2->IsPIDOK(8)) continue;
1295 Double_t phi=ph12.Phi();
1296 if(phi < 0) phi+=TMath::TwoPi();
1297 Float_t angle = ph1->Angle(ph2->Vect());
1298 Float_t asy = TMath::Abs((ph1->Energy()-ph2->Energy())/(ph1->Energy()+ph2->Energy()));
1299 Double_t deltaTime = TMath::Abs(ph1->GetTOF()-ph2->GetTOF());
1300 Int_t deltaModule = TMath::Abs(ph1->GetModule()-ph2->GetModule());
1302 new((*fPhotonPairEvent)[nPhotonPairEMCAL])AliCaloTrackParticle(ph12.Px(), ph12.Py(), ph12.Pz(), ph12.E());
1303 AliCaloTrackParticle * phPair = (AliCaloTrackParticle*)fPhotonPairEvent->At(nPhotonPairEMCAL);
1304 phPair->SetPhotonPairAsy(asy);
1305 phPair->SetPhotonPairAngle(angle);
1306 phPair->SetPhotonPairDTime(deltaTime);
1307 phPair->SetPhotonPairDModule(deltaModule);
1308 phPair->SetPhotonPairID(ph1->GetClusterID(), ph2->GetClusterID());
1309 phPair->SetAODPhotonPairID(ph1->GetAODClusterID(), ph2->GetAODClusterID());
1314 Double_t tmpMesonPt = 0;
1315 Int_t tmpMesonID = -1;
1317 for(Int_t k=0; k<nPhotonPairEMCAL; k++){
1318 AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(k);
1319 if(kPhotonPairTimeCut && phPairCan->GetPhotonPairDTime() > fPhotonPairTimeCut) continue;
1320 if(SelectPair(phPairCan)){
1321 AliCaloTrackParticle *photon1 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(0));
1322 AliCaloTrackParticle *photon2 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(1));
1324 fhMesonE->Fill(phPairCan->E());
1325 fhMesonPtPhi->Fill(phPairCan->Pt(), phPairCan->Phi());
1326 fhMesonPtEta->Fill(phPairCan->Pt(), phPairCan->Eta());
1327 fhMesonPhiEta->Fill(phPairCan->Phi(), phPairCan->Eta());
1329 if(phPairCan->Pt() > tmpMesonPt){
1330 tmpMesonPt = phPairCan->Pt();
1334 if(kAnaDecayMapping){
1335 Double_t deltaphi1 = TMath::Abs(phPairCan->Phi()-photon1->Phi());
1336 if(deltaphi1 > TMath::TwoPi()) deltaphi1-= TMath::TwoPi();
1338 Double_t deltaphi2 = TMath::Abs(phPairCan->Phi()-photon2->Phi());
1339 if(deltaphi2 > TMath::TwoPi()) deltaphi2-= TMath::TwoPi();
1341 Double_t deltaphi3 = TMath::Abs(photon1->Phi()-photon2->Phi());
1342 if(deltaphi3 > TMath::TwoPi()) deltaphi3-= TMath::TwoPi();
1344 fhPi0DecayPhoton1->Fill(phPairCan->Pt(),photon1->Pt());
1345 fhPi0DecayPhoton1Dphi->Fill(phPairCan->Pt(),deltaphi1);
1346 fhDecayPhoton1Pi0Dphi->Fill(photon1->Pt(),deltaphi1);
1347 fhPi0DecayPhoton2->Fill(phPairCan->Pt(),photon2->Pt());
1348 fhPi0DecayPhoton2Dphi->Fill(phPairCan->Pt(),deltaphi2);
1349 fhDecayPhoton2Pi0Dphi->Fill(photon2->Pt(),deltaphi2);
1350 fhDecayPhoton1Photon2->Fill(photon1->Pt(),photon2->Pt());
1351 fhDecayPhoton1Photon2Dphi->Fill(photon1->Pt(),deltaphi3);
1352 fhDecayPhoton2Photon1Dphi->Fill(photon2->Pt(),deltaphi3);
1355 }//end loop for mesons
1357 for(Int_t kmeson=0; kmeson<nPhotonPairEMCAL; kmeson++){
1358 AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(kmeson);
1359 phPairCan->SetIsLeading(kFALSE);
1360 if(kmeson == tmpMesonID) phPairCan->SetIsLeading(kTRUE);
1365 //======================================
1366 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::SelectPair(AliCaloTrackParticle *mesonCandidate)
1368 Double_t fInvMassMaxCutParam[3]={0.};
1369 if(fAnaMesonType.Contains("Pi0")){
1370 fInvMassMaxCutParam[0] = 0.0 ;
1371 fInvMassMaxCutParam[1] =-7.e-5 ;
1372 fInvMassMaxCutParam[2] = 8.e-5 ;
1375 fInvMassMaxCutParam[0] = 0.00 ;
1376 fInvMassMaxCutParam[1] = 0.00 ;
1377 fInvMassMaxCutParam[2] = 0.00 ;
1380 if(fAnaMesonType.Contains("Pi0")){
1381 fInvMassMinCut = 0.12;
1382 fInvMassMaxCut = 0.15;
1383 fLeftBandMinCut = 0;
1384 fLeftBandMaxCut = -1;
1385 fRightBandMinCut = 0.17;
1386 fRightBandMaxCut = 0.20;
1389 if(fAnaMesonType.Contains("Eta")){
1390 fInvMassMinCut = 0.52;
1391 fInvMassMaxCut = 0.58;
1392 fLeftBandMinCut = 0.38;
1393 fLeftBandMaxCut = 0.43;
1394 fRightBandMinCut = 0.65;
1395 fRightBandMaxCut = 0.70;
1398 Double_t phi = mesonCandidate->Phi();
1399 if(phi < 0) phi+=TMath::TwoPi();
1400 Double_t eta = mesonCandidate->Eta();
1401 Double_t invmass = mesonCandidate->M();
1402 Double_t angle = mesonCandidate->GetPhotonPairAngle();
1403 Double_t e = mesonCandidate->Energy();
1404 Double_t asy = mesonCandidate->GetPhotonPairAsy();
1406 if(kNeutralMesonHistos){
1407 fhAnglePairNoCut ->Fill(e,angle);
1408 fhInvMassPairNoCut->Fill(e,invmass);
1409 fhAsyNoCut ->Fill(e,asy);
1413 if(kDoAsymmetryCut){
1414 if(asy < fAsymmetryCut){
1415 if(kNeutralMesonHistos){
1416 fhInvMassPairAsyCut->Fill(e,invmass);
1417 fhAnglePairAsyCut ->Fill(e,angle);
1418 fhInvMassPairPhi->Fill(e, phi);
1419 fhInvMassPairEta->Fill(e, eta);
1421 } else return kFALSE;
1424 Float_t invmassmaxcut = fInvMassMaxCut;
1425 Float_t invmassRightBandMinCut = fRightBandMinCut;
1426 Float_t invmassRightBandMaxCut = fRightBandMaxCut;
1428 //for EMCAL, pi0s, mass depends strongly with energy for e > 6, loose max cut
1430 invmassmaxcut = (fInvMassMaxCutParam[0]+fInvMassMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1431 invmassRightBandMinCut = (fInvMassMaxCutParam[0]+fRightBandMinCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1432 invmassRightBandMaxCut = (fInvMassMaxCutParam[0]+fRightBandMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1435 if(!fAnaMesonType.Contains("SideBand")){
1436 if(invmass > fInvMassMinCut && invmass < invmassmaxcut){
1437 if(kNeutralMesonHistos){
1438 fhInvMassPairAllCut->Fill(e,invmass);
1439 fhAnglePairAllCut ->Fill(e,angle);
1440 fhAsyAllCut ->Fill(e,asy);
1448 else if(fAnaMesonType.Contains("SideBand")){
1449 // select a band around pi0/eta
1450 if((invmass > fLeftBandMinCut && invmass < fLeftBandMaxCut)||
1451 (invmass > invmassRightBandMinCut && invmass < invmassRightBandMaxCut)){
1452 if(kNeutralMesonHistos){
1453 fhInvMassPairAllCut->Fill(e,invmass);
1454 fhAnglePairAllCut ->Fill(e,angle);
1455 fhAsyAllCut ->Fill(e,asy);
1466 //==============================================
1467 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::IsolatedPhoton(TClonesArray *fPhotonEventIsolated, TClonesArray *fCTSEventIsolated, Int_t fIndexPhotonCan, Double_t ptPhotonCan, Double_t phiPhotonCan, Double_t etaPhotonCan)
1470 if(!kDoIsolatedAna) return kFALSE;
1472 Double_t fCalculatedConeR = -1.;
1473 Double_t ptTrack = -1.;
1474 Double_t phiTrack = -999.;
1475 Double_t etaTrack = -999.;
1476 Double_t ptNeutral = -1.;
1477 Double_t phiNeutral = -999.;
1478 Double_t etaNeutral = -999.;
1480 Float_t fSumPtInCone = 0.;
1483 Bool_t kIsolated = kFALSE;
1485 ////skip photon in the edge of r<0.1
1486 Double_t fPhiCut1 = TMath::Pi()*80./180.-0.1;
1487 Double_t fPhiCut2 = TMath::Pi()-0.1;
1488 Double_t fEtaCut1 = -0.6;
1489 Double_t fEtaCut2 = 0.6;
1491 if(etaPhotonCan>fEtaCut2 || etaPhotonCan<fEtaCut1 || phiPhotonCan>fPhiCut2 || phiPhotonCan<fPhiCut1) return kFALSE;
1494 if(fDebug>2) printf("candidate photon pt=%f, phi=%f, eta=%f\n",ptPhotonCan,phiPhotonCan,etaPhotonCan);
1496 if(fParticlesInCone==kIsolatedOnlyCharged ||fParticlesInCone==kIsolatedNeutralAndCharged){
1497 for(Int_t j1=0; j1<fCTSEventIsolated->GetEntries(); j1++){
1498 AliCaloTrackParticle *traForIso=(AliCaloTrackParticle*)fCTSEventIsolated->At(j1);
1499 ptTrack = traForIso->Pt();
1500 if(fDebug>2) printf("track pt=%f\n",ptTrack);
1501 phiTrack = traForIso->Phi();
1502 if(phiTrack<0.) phiTrack+=TMath::TwoPi();
1503 etaTrack = traForIso->Eta();
1505 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaTrack)*(etaPhotonCan-etaTrack)+ (phiPhotonCan-phiTrack)*(phiPhotonCan-phiTrack));
1507 if(fDebug>2) printf("track dR=%f\n",fCalculatedConeR);
1509 if(fCalculatedConeR<fSetConeR){
1510 if(fDebug>2) printf("track in Cone pt=%f\n",ptTrack);
1511 //calcuate three cases
1512 fSumPtInCone+=ptTrack;
1513 if(ptTrack>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1514 if(ptTrack>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1517 }////loop for Isolated track
1518 }////Onlycharged || NeutralAndCharged for whether Isolated photon
1520 if(fDebug>2) printf("track SumPtInCone=%f\n",fSumPtInCone);
1522 if(fParticlesInCone==kIsolatedOnlyNeutral || fParticlesInCone==kIsolatedNeutralAndCharged){
1523 for(Int_t i2=0; i2<fPhotonEventIsolated->GetEntries(); i2++){
1524 AliCaloTrackParticle *ph2=(AliCaloTrackParticle*)fPhotonEventIsolated->At(i2);
1525 if(!ph2->IsInTrackMatched() || i2==fIndexPhotonCan) continue;
1527 ptNeutral = ph2->Pt();
1528 if(fDebug>2) printf("photon or merged pt=%f\n",ptNeutral);
1529 phiNeutral = ph2->Phi();
1530 if(phiNeutral<0.) phiNeutral+=TMath::TwoPi();
1531 etaNeutral = ph2->Eta();
1533 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaNeutral)*(etaPhotonCan-etaNeutral)+(phiPhotonCan-phiNeutral)*(phiPhotonCan-phiNeutral));
1535 if(fDebug>2) printf("photon dR=%f\n",fCalculatedConeR);
1537 if(fCalculatedConeR<fSetConeR){
1538 if(fDebug>2)printf("photon in Cone pt=%f\n",ptNeutral);
1539 //calcuate four cases
1540 fSumPtInCone+=ptNeutral;
1541 if(ptNeutral>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1542 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1544 if(fSetPtFraction*ptPhotonCan<fSetPtThreshold) {
1545 if(ptNeutral>fSetPtThreshold) fNumFrac++ ;
1548 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++;
1552 }////loop for neutral
1553 }////if OnlyNeutral || NeutralAndCharged
1555 if(fDebug>2) printf("track and phton SumPtInCone=%f\n",fSumPtInCone);
1557 //check Isolation, depending on method
1558 if(fICMethod == kPtThresholdIC){
1559 if(fNum == -1) kIsolated = kTRUE ;
1561 else if(fICMethod == kSumPtInConeIC){
1562 if(fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1564 else if(fICMethod == kPtFracationIC){
1565 if(fNumFrac == -1) kIsolated = kTRUE ;
1567 else if(fICMethod == kSumPtFracationIC){
1568 //when the fPtFraction*ptC<fSumPtThreshold then consider the later case
1569 if(fSetPtFraction*ptPhotonCan<fSetSumPtThreshold && fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1570 if(fSetPtFraction*ptPhotonCan>fSetSumPtThreshold && fSumPtInCone<fSetPtFraction*ptPhotonCan) kIsolated = kTRUE ;
1573 if(fDebug>2) printf("kIsolated=%d\n",kIsolated);
1579 //=======================================
1580 void AliAnalysisTaskEMCALCaloTrackCorr::SetTriggerBins(Float_t *ptTriggBins)
1582 fTriggPtArray=new Float_t[GetNTriggPtBins()];
1583 for(Int_t i=0;i<=GetNTriggPtBins(); i++){
1584 fTriggPtArray[i] = ptTriggBins[i];
1588 //========================================_
1589 void AliAnalysisTaskEMCALCaloTrackCorr::SetAssociatedBins(Float_t *ptAssocBins)
1591 fAssocPtArray=new Float_t[GetNAssocPtBins()];
1592 for(Int_t i=0;i<=GetNAssocPtBins(); i++){
1593 fAssocPtArray[i] = ptAssocBins[i];
1597 //========================================
1598 Bool_t AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg,
1599 Double_t phiTrigg, Double_t etaTrigg)
1601 if(GetDebug() > 1)printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation() - Make trigger particle - charged hadron correlation \n");
1602 if(fPhotonEvent->GetEntriesFast()<=0) return kFALSE;
1605 Int_t nTracks = fCTSEvent->GetEntriesFast();
1606 fhNtracksCorr->Fill(nTracks);
1608 Double_t ptAssoc = -999.;
1609 Double_t phiAssoc = -999. ;
1610 Double_t etaAssoc = -999.;
1611 Double_t deltaPhi = -999.;
1612 Double_t deltaPhiUE = -999.;
1613 Double_t deltaEta = -999.;
1614 Double_t pout = -999.;
1615 Double_t zT = -999.;
1616 Double_t xE = -999.;
1617 Double_t xELog = -999.;
1618 Double_t uedPhi = -999.;
1619 Double_t uexE = -999.;
1620 Double_t uepout = -999.;
1621 Double_t uexELog = -999.;
1623 for(Int_t j1 = 0;j1 < nTracks; j1++ ){
1624 AliCaloTrackParticle *track = (AliCaloTrackParticle *)(fCTSEvent->At(j1)) ;
1625 if(!track) continue;
1626 if(kTwoTracksCorr && fTrackIndex ==j1) continue;
1627 ptAssoc = track->Pt();
1628 etaAssoc = track->Eta();
1629 phiAssoc = track->Phi() ;
1630 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1632 fhTrackPtPhi->Fill(ptAssoc, phiAssoc);
1633 fhTrackPtEta->Fill(ptAssoc, etaAssoc);
1634 fhTrackPhiEta->Fill(phiAssoc, etaAssoc);
1636 deltaPhi = phiTrigg-phiAssoc;
1637 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1638 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1640 //jump out this event if near side associated particle pt larger than trigger
1641 if(kMakeNearSideLeading){
1642 if(ptAssoc > ptTrigg && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return kFALSE;
1644 //jump out this event if there is any other particle with pt larger than trigger
1645 else if(kMakeAbsoluteLeading){
1646 if(ptAssoc > ptTrigg) return kFALSE;
1649 deltaEta = etaTrigg-etaAssoc;
1651 pout = ptAssoc*TMath::Abs(TMath::Sin(deltaPhi));
1652 xE =-ptAssoc/ptTrigg*TMath::Cos(deltaPhi);
1654 xELog = TMath::Log(1/xE);
1655 zT = ptAssoc/ptTrigg;
1657 uedPhi = gRandom->Uniform(TMath::Pi()/2,3*TMath::Pi()/2);
1658 uepout = ptAssoc*TMath::Sin(uedPhi);
1659 uexE =(-1*ptAssoc/ptTrigg)*TMath::Cos(uedPhi);
1660 if(uexE<0) uexE=-uexE;
1661 uexELog = TMath::Log(1/uexE);
1664 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(): deltaPhi= %f, deltaEta=%f, pout=%f, xE=%f\n",deltaPhi, deltaEta, pout, xE);
1666 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1667 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1668 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd){
1669 fhDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTrigg);
1670 fhDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTrigg);
1675 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd) {
1677 if(ptAssoc>1. && ptAssoc<5.){
1678 fhDPhiAssocPt15T->Fill(deltaPhi, ptTrigg);
1679 fhDEtaAssocPt15T->Fill(deltaEta, ptTrigg);
1682 if(ptAssoc>fptAssociatedBegin){
1684 fhDPhiTriggPtAssocPt->Fill(deltaPhi, ptAssoc);
1685 fhDEtaTriggPtAssocPt->Fill(deltaEta, ptAssoc);
1687 if((deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut)){
1688 fhAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1689 fhxELogTriggPt->Fill(xELog, ptTrigg);
1690 fhpoutTriggPt->Fill(pout , ptTrigg);
1691 fhzTTriggPt->Fill(zT, ptTrigg);
1692 fhxETriggPt->Fill(xE, ptTrigg);
1693 }////Only analysis Away Side
1695 if(TMath::Abs(deltaPhi-TMath::Pi())<fDeltaPhiHRSize){
1696 fhAssocPtTriggPtHR->Fill(ptAssoc, ptTrigg);
1697 fhxELogTriggPtHR->Fill(xELog, ptTrigg);
1698 fhpoutTriggPtHR->Fill(pout , ptTrigg);
1699 fhzTTriggPtHR->Fill(zT, ptTrigg);
1700 fhxETriggPtHR->Fill(xE, ptTrigg);
1701 }////Only analysis head region side in Away Side
1703 deltaPhiUE = deltaPhi;
1704 Bool_t kAnaUECorr1 = kFALSE;
1705 Bool_t kAnaUECorr2 = kFALSE;
1706 Double_t fUeAwaySide = 0.;
1707 if(fUeDeltaPhiFix == TMath::Pi()/2.) fUeAwaySide = 3*TMath::Pi()/2.;
1708 else fUeAwaySide = -1*fUeDeltaPhiFix;
1710 if(kUELeftRight && !kUENearAway) {
1711 if(deltaPhiUE>(-1*fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (-1*fUeDeltaPhiFix+fUeDeltaPhiSize))
1712 kAnaUECorr1 = kTRUE;
1713 if(deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (fUeDeltaPhiFix+fUeDeltaPhiSize))
1714 kAnaUECorr2 = kTRUE;
1716 if(!kUELeftRight && kUENearAway) {
1717 if((deltaPhiUE>-1*fUeDeltaPhiFix && deltaPhiUE<(-1*fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE<fUeDeltaPhiFix))
1718 kAnaUECorr1 = kTRUE;
1719 if((deltaPhiUE>fUeDeltaPhiFix && deltaPhiUE<(fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeAwaySide - fUeDeltaPhiSize) && deltaPhiUE<fUeAwaySide))
1720 kAnaUECorr2 = kTRUE;
1723 ////Ue at Near Side: pt_assoc in the side, but dphi at pi/2-3*pi/2
1725 fhNUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1726 fhNUexELogTriggPt->Fill(uexELog, ptTrigg);
1727 fhNUepoutTriggPt->Fill(uepout , ptTrigg);
1728 fhNUexETriggPt->Fill(uexE, ptTrigg);
1729 fhNUezTTriggPt->Fill(zT , ptTrigg);
1730 fhNUexETriggPt->Fill(uexE, ptTrigg);
1731 fhNUeDPhiDEta->Fill(deltaPhi, deltaEta);
1732 }////Define the UE and analysis some UE physics observables at left
1736 fhAUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1737 fhAUexELogTriggPt->Fill(uexELog, ptTrigg);
1738 fhAUepoutTriggPt->Fill(uepout, ptTrigg);
1739 fhAUezTTriggPt->Fill(zT, ptTrigg);
1740 fhAUexETriggPt->Fill(uexE, ptTrigg);
1741 fhAUeDPhiDEta->Fill(deltaPhi, deltaEta);
1742 }////Define the UE and analysis some UE physics observables at left
1746 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1747 if(ptTrigg>=fTriggPtArray[iTrigg] && ptTrigg<fTriggPtArray[iTrigg+1]){
1748 if(ptAssoc>fptAssociatedBegin){
1749 fhDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1750 fhDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1753 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1754 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1755 fhDPhiSumPtBin[iTrigg][jAssoc]->Fill(deltaPhi,ptAssoc+ptTrigg);
1756 fhDEtaSumPtBin[iTrigg][jAssoc]->Fill(deltaEta,ptAssoc+ptTrigg);
1757 fhDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1766 }//end loop associated hadrons
1768 fhPtPhiLeading->Fill(ptTrigg,phiTrigg);
1769 fhPtEtaLeading->Fill(ptTrigg, etaTrigg);
1775 //=======================================
1776 void AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(Double_t ptTriggMix, Double_t phiTriggMix, Double_t etaTriggMix, TList *poolMix)
1778 Double_t ptAssoc = -999.;
1779 Double_t phiAssoc = -999.;
1780 Double_t etaAssoc = -999.;
1781 Double_t deltaPhi = -999.;
1782 Double_t deltaEta = -999.;
1784 for(Int_t ev=0;ev<poolMix->GetSize();ev++){
1785 TClonesArray *bgTracks = static_cast<TClonesArray*>(poolMix->At(ev));
1786 Int_t nTracks=bgTracks->GetEntriesFast();
1787 for(Int_t j1 = 0;j1 <nTracks; j1++ ){
1788 AliCaloTrackParticle *track = (AliCaloTrackParticle*)bgTracks->At(j1) ;
1789 if(!track) continue;
1790 ptAssoc = track->Pt();
1791 etaAssoc = track->Eta();
1792 phiAssoc = track->Phi() ;
1793 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1795 deltaPhi = phiTriggMix-phiAssoc;
1796 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1797 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1798 deltaEta = etaTriggMix-etaAssoc;
1800 //jump out this event if near side associated particle pt larger than trigger
1801 if(kMakeNearSideLeading){
1802 if(ptAssoc > ptTriggMix && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return;
1804 //jump out this event if there is any other particle with pt larger than trigger
1805 else if(kMakeAbsoluteLeading){
1806 if(ptAssoc > ptTriggMix) return;
1810 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(): deltaPhi= %f, deltaEta=%f\n",deltaPhi, deltaEta);
1812 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1813 if(ptTriggMix>=fTriggPtArray[iTrigg] && ptTriggMix<fTriggPtArray[iTrigg+1]){
1814 if(ptAssoc>fptAssociatedBegin){
1815 fhMixDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1816 fhMixDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1819 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1820 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1821 fhMixDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1822 }//end if Associated pt bin
1823 }//end loop Associated pt bins
1824 }//end if trigger pt bin
1825 }//end loop trigger bins
1827 if(ptTriggMix>fptTriggerBegin && ptTriggMix<fptTriggerEnd){
1828 if(ptAssoc>1. && ptAssoc<5.){
1829 fhMixDPhiAssocPt15T->Fill(deltaPhi, ptTriggMix);
1830 fhMixDEtaAssocPt15T->Fill(deltaEta, ptTriggMix);
1833 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1834 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1835 fhMixDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTriggMix);
1836 fhMixDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTriggMix);
1838 }//end loop Associated pt bin
1839 }//end if Associated pt bins
1843 }//end loop associated hadrons
1848 }//end loop Mixed event in pool
1850 fhMixPtPhiLeading->Fill(ptTriggMix, phiTriggMix);
1851 fhMixPtEtaLeading->Fill(ptTriggMix, etaTriggMix);
1855 //========================================
1858 //============================================
1859 void AliAnalysisTaskEMCALCaloTrackCorr::SetTrackCuts(AliESDtrackCuts * cuts)
1862 if(fESDtrackCuts) delete fESDtrackCuts ;
1863 fESDtrackCuts = cuts ;
1867 //=============================================
1868 void AliAnalysisTaskEMCALCaloTrackCorr::Terminate(Option_t *)
1870 // Draw result to the screen
1871 // Called once at the end of the query
1873 fhNEvents->Fill(1,fnEvents);
1874 Printf("fnEvents=%d", fnEvents);
1876 fhNEventsAnalyized->Fill(1,fEventAnalyized);
1877 Printf("fEventAnalyized=%d", fEventAnalyized);