]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/EMCALTasks/AliAnalysisTaskEMCALCaloTrackCorr.cxx
Changed to PWGGA agreed upon pt binning.
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALCaloTrackCorr.cxx
CommitLineData
364c8fcb 1#include "TList.h"
2#include "TH1F.h"
3#include "TH2F.h"
4#include "TLorentzVector.h"
5#include "TParticle.h"
6#include "TClonesArray.h"
7#include "TFile.h"
8#include "TRandom3.h"
9#include "TVector3.h"
10#include "TClonesArray.h"
11#include "TString.h"
12
13#include "AliVEvent.h"
14#include "AliStack.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"
9c1fcdc6 32#include "AliCaloTrackParticle.h"
364c8fcb 33#include "AliTriggerAnalysis.h"
34#include "AliFiducialCut.h"
35#include "AliEventplane.h"
36#include "AliAODHeader.h"
37
38
39ClassImp(AliAnalysisTaskEMCALCaloTrackCorr)
40
41//________________________________________________________________________
42AliAnalysisTaskEMCALCaloTrackCorr::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),*/
48 outputContainer(0),
49
50 fEMCALGeomName("EMCAL_COMPLETEV1"),
51 fCentralityClass(""), fCentralityBinMin(0), fCentralityBinMax(0),
44e6df08 52 fEventPlaneMethod(""), fEventTriggerMaks(0), fNCentralityBins(0), fNEventPlaneBins(0),
364c8fcb 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),
61 fTrackFilterMask(0),
62
63 fInvMassMinCut(0), fInvMassMaxCut(0), fLeftBandMinCut(0),
64 fLeftBandMaxCut(0), fRightBandMinCut(0), fRightBandMaxCut(0),
65
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),
75
76 fhNEvents(0), fnEvents(0), fhNEventsAnalyized(0), fEventAnalyized(0),
77 fPhotonEvent(0), fPhotonPairEvent(0), fCTSEvent(0),
78 nPhotonsEMCAL(0), nTracksCTS(0), fAnaTypeInIsolated(0),
79 nMixedEvents(0),
80 fSetConeR(0), fSetPtThreshold(0), fSetSumPtThreshold(0),
81 fSetPtFraction(0), fICMethod(0), fParticlesInCone(0),
82
83 fTriggPtArray(0), fNTriggPtBins(0), fptTriggerBegin(0), fptTriggerEnd(0),
84 fAssocPtArray(0), fNAssocPtBins(0), fptAssociatedBegin(0),
85
86 fDeltaPhiMaxCut(0.), fDeltaPhiMinCut(0.), fUeDeltaPhiSize(0),
87 fUeDeltaPhiFix(0), fDeltaPhiHRSize(0),
88
89 fhPhotonE(0), fhPhotonPtPhi(0), fhPhotonPtEta(0), fhPhotonPhiEta(0),
90 fhMesonE(0), fhMesonPtPhi(0), fhMesonPtEta(0), fhMesonPhiEta(0),
91
92 fhAnglePairNoCut(0), fhInvMassPairNoCut(0), fhAsyNoCut(0),
93 fhInvMassPairAsyCut(0), fhAnglePairAsyCut(0), fhInvMassPairPhi(0),
94 fhInvMassPairEta(0), fhInvMassPairAllCut(0), fhAnglePairAllCut(0),
95 fhAsyAllCut(0),
96
97 fhPi0DecayPhoton1(0), fhPi0DecayPhoton1Dphi(0), fhDecayPhoton1Pi0Dphi(0),
98 fhPi0DecayPhoton2(0), fhPi0DecayPhoton2Dphi(0), fhDecayPhoton2Pi0Dphi(0),
99 fhDecayPhoton1Photon2(0),fhDecayPhoton1Photon2Dphi(0), fhDecayPhoton2Photon1Dphi(0),
100
101
102
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),
117
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)
129
130{
131 // Constructor
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;
136 }
137 }
138
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;
145 }
146
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;
153 }
154 }
155
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;
161 }
162
163 /////MC
164 for(Int_t i = 0; i< GetNAssocPtBins(); i++){
165 fhMCDPhiTriggPtT[i] = 0;
166 fhMCDEtaTriggPtT[i] = 0;
167 }
168
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;
174 }
175 }
176
177 for(Int_t j1 = 0; j1 < GetNTriggPtBins(); j1++){
178 fhMCDPhiAssocPtA[j1] = 0;
179 fhMCDEtaAssocPtA[j1] = 0;
180 }
181
182 //Initialize parameters
183 InitParameters();
184
185 DefineOutput(1, TList::Class());
186}
187
188//________________________________________________________________________
189void AliAnalysisTaskEMCALCaloTrackCorr::UserCreateOutputObjects()
190{
191
192 fEMCALGeom = AliEMCALGeometry::GetInstance(fEMCALGeomName);
193 fEMCALRecU = new AliEMCALRecoUtils();
194
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();
204
205 Int_t ndphibins = 350;
206 Float_t dphimin = -2.;
207 Float_t dphimax = 5.;
208
209 Int_t ndetabins = 360;
210 Float_t detamin = -1.8;
211 Float_t detamax = 1.8;
212
213 Int_t nzTbins = 150;
214 Float_t zTmin = 0.;
215 Float_t zTmax = 3.;
216
217 Int_t nxEbins = 150;
218 Float_t xEmin = 0.;
219 Float_t xEmax = 3.;
220
221 Int_t nxElogbins = 180;
222 Float_t xElogmin = 0.;
223 Float_t xElogmax = 9.;
224
225 Int_t nmassbins = 200;
226 Float_t massmin = 0.;
227 Float_t massmax = 1.;
228
229 Int_t nanglebins = 300;
230 Float_t anglemin = 0.;
231 Float_t anglemax = 0.6;
232
233 outputContainer = new TList();
234 outputContainer->SetOwner(kTRUE);
235
236 fhNEvents = new TH1F ("hNEvents","Number of all events",1,0.5,1.5);
237 outputContainer->Add(fhNEvents);
238
239 fhNEventsAnalyized = new TH1F ("hNEventsAnalyized","Number of events analyzed Last",1,0.5,1.5);
240 outputContainer->Add(fhNEventsAnalyized);
241
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) ;
246
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) ;
252
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) ;
258
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);
264
265 if(kDoMesonFill){
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) ;
270
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) ;
276
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) ;
282
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);
288
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)");
294
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)");
299
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)");
304
305 outputContainer->Add(fhAnglePairNoCut) ;
306 outputContainer->Add(fhAsyNoCut) ;
307 outputContainer->Add(fhInvMassPairNoCut) ;
308
309
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)");
315
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)");
320
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)");
325
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)");
330
331 outputContainer->Add(fhAnglePairAsyCut) ;
332 outputContainer->Add(fhInvMassPairAsyCut) ;
333 outputContainer->Add(fhInvMassPairPhi);
334 outputContainer->Add(fhInvMassPairEta);
335 }
336
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)");
341
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)");
346
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)");
351
352 outputContainer->Add(fhAnglePairAllCut) ;
353 outputContainer->Add(fhAsyAllCut) ;
354 outputContainer->Add(fhInvMassPairAllCut) ;
355 }
356
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);
361
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);
366
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);
371
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);
376
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);
381
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);
386
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);
391
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);
396
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);
401 }
402
403 fhNtracksAll=new TH1F("hNtracksAll","Number of tracks w/o event trigger",2000,0,2000);
404 outputContainer->Add(fhNtracksAll);
405
406 fhNtracksEMC7=new TH1F("hNtracksEMC7","Number of tracks w/ event trigger kEMC7",2000,0,2000);
407 outputContainer->Add(fhNtracksEMC7);
408
409 fhNtracksAnyINT=new TH1F("hNtracksAnyINT","Number of tracks w/ event trigger kAnyINT",2000,0,2000);
410 outputContainer->Add(fhNtracksAnyINT);
411
412 fhNtracksCentral=new TH1F("hNtracksCentral","Number of tracks w/ event trigger kCentral",2000,0,2000);
413 outputContainer->Add(fhNtracksCentral);
414
415 fhNtracksSemiCentral=new TH1F("hNtracksSemiCentral","Number of tracks w/ event trigger kSemiCentral",2000,0,2000);
416 outputContainer->Add(fhNtracksSemiCentral);
417
418 fhNtracksOtherTirgger=new TH1F("hNtracksOtherTirgger","Number of tracks w/ event trigger other ",2000,0,2000);
419 outputContainer->Add(fhNtracksOtherTirgger);
420
421 fhNtracksCorr=new TH1F("hNtracksCorr","Number of tracks w/ event trigger same with correlation",2000,0,2000);
422 outputContainer->Add(fhNtracksCorr);
423
424 fhTrackPtPhi = new TH2F ("hTrackPtPhi","p_{T} and #phi distribution of tracks", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
425 outputContainer->Add(fhTrackPtPhi);
426
427 fhTrackPtEta = new TH2F ("hTrackPtEta","p_{T} and #eta distribution of tracks",nptbins,ptmin,ptmax, netabins,etamin,etamax);
428 outputContainer->Add(fhTrackPtEta);
429
430 fhTrackPhiEta = new TH2F ("hTrackPhiEta","#phi and #eta distribution of tracks",nphibins, phimin, phimax, netabins,etamin,etamax);
431 outputContainer->Add(fhTrackPhiEta);
432
433 fhPtPhiLeading = new TH2F ("hPtPhiLeading","p_{T} and #phi distribution of leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
434 outputContainer->Add(fhPtPhiLeading);
435
436 fhPtEtaLeading = new TH2F ("hPtEtaLeading","p_{T} and #eta distribution of leading",nptbins,ptmin,ptmax, netabins,etamin,etamax);
437 outputContainer->Add(fhPtEtaLeading);
438
439 fhMixPtPhiLeading = new TH2F ("hMixPtPhiLeading","p_{T} and #phi distribution of mixed leading particles", nptbins,ptmin,ptmax, nphibins, phimin, phimax);
440 outputContainer->Add(fhMixPtPhiLeading);
441
442 fhMixPtEtaLeading = new TH2F ("hMixPtEtaLeading","p_{T} and #eta distribution of mixed leading particles",nptbins,ptmin,ptmax, netabins,etamin,etamax);
443 outputContainer->Add(fhMixPtEtaLeading);
444
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]);
449
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]);
453
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]);
457
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]);
461 }
462
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);
466
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);
470
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);
474
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);
478
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]);
484
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]);
488
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]);
492
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]);
496
497 }/////end loop for associated bins
498 }
499
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]);
504
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]);
508
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]);
512
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]);
516 }
517
518 /////all
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);
522
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);
526
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);
530
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);
534
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);
538
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);
542
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);
546
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);
551
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);
555
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);
559
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);
564
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);
574
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);
578
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);
582
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);
586
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);
590
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);
594
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);
598
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);
602
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);
606
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);
610
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);
614
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);
618
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);
624
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]);
629
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]);
633 }
634
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]);
640
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]);
644
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
649 }
650
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]);
655
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]);
659 }
660
661 /////all
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);
665
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);
669
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);
673
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);
677
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);
681
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);
685
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);
689
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);
694
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);
698
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);
702
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);
707
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);
712
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);
718
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);
722
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);
726
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);
730
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);
734
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);
738
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);
742
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);
746
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);
750
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);
754
755 }
756
757
758 PostData(1,outputContainer);
759
760}
761
762//________________________________________________________________________
763void AliAnalysisTaskEMCALCaloTrackCorr::UserExec(Option_t *)
764{
765 // Execute analysis for current event
766 fManager = AliAnalysisManager::GetAnalysisManager();
767 fInputHandler = dynamic_cast<AliInputEventHandler*>(fManager->GetInputEventHandler());
768
95232e5a 769 if(!fInputHandler) return;
364c8fcb 770
95232e5a 771 if(!FillInputEvent()) return; //select good event
364c8fcb 772
773 fEventPlane = (dynamic_cast<AliVEvent*>(InputEvent()))->GetEventplane();
774
775 UInt_t isSelectedReal = 0;
776 if(!kEventTriggerAtSE) isSelectedReal = fInputHandler->IsEventSelected() & fEventTriggerMaks;
777
778 const AliVVertex *fEventVertex = fEvent->GetPrimaryVertex();
779 Double_t vtx[3];
780 vtx[0] = fEventVertex->GetX();
781 vtx[1] = fEventVertex->GetY();
782 vtx[2] = fEventVertex->GetZ();
783
784 if(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler()){
785 fMCEvent = MCEvent();
786 fStack = fMCEvent->Stack();
787 }
788
789 fnEvents++;
790
791 if(fPhotonEvent)
792 fPhotonEvent->Clear();
793 else
9c1fcdc6 794 fPhotonEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters());
364c8fcb 795 nPhotonsEMCAL=0;
796 if(fPhotonPairEvent)
797 fPhotonPairEvent->Clear();
798 else
9c1fcdc6 799 fPhotonPairEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfCaloClusters());
364c8fcb 800
801 if(fCTSEvent)
802 fCTSEvent->Clear();
803 else
9c1fcdc6 804 fCTSEvent = new TClonesArray("AliCaloTrackParticle", InputEvent()->GetNumberOfTracks());
364c8fcb 805 nTracksCTS = 0;
806
807 if(kEventTriggerAtSE){
808 FillInputTrack();
809 FillInputPhoton();
810 if(kDoMesonFill)FillInputMeson();
811 }
812 else {
813 FillInputTrack();
814 if(isSelectedReal){
815 FillInputPhoton();
816 if(kDoMesonFill)FillInputMeson();
817 }
818 }
819 if(nTracksCTS==0) return;
820
821
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));
827
828 Double_t vtx5[3] ={ fEvent->GetPrimaryVertex()->GetX(),
829 fEvent->GetPrimaryVertex()->GetY(),
830 fEvent->GetPrimaryVertex()->GetZ()
831 };
832 Int_t zvtx = -999;
833 Int_t centr = -999;
834 Int_t replane = -999;
835 Int_t nTracks = fCTSEvent->GetEntriesFast();
836
837 if(vtx5[2]>=-10. && vtx5[2]<-8)
838 zvtx=0;
839 else if(vtx5[2]>=-8. && vtx5[2]<-6)
840 zvtx=1;
841 else if(vtx5[2]>=-6. && vtx5[2]<-4)
842 zvtx=2;
843 else if(vtx5[2]>=-4. && vtx5[2]<-2)
844 zvtx=3;
845 else if(vtx5[2]>=-2. && vtx5[2]<-0)
846 zvtx=4;
847 else if(vtx5[2]>=0. && vtx5[2]<=2)
848 zvtx=5;
849 else if(vtx5[2]>2. && vtx5[2]<=4)
850 zvtx=6;
851 else if(vtx5[2]>4. && vtx5[2]<=6)
852 zvtx=7;
853 else if(vtx5[2]>6. && vtx5[2]<=8)
854 zvtx=8;
855 else if(vtx5[2]>8. && vtx5[2]<=10)
856 zvtx=9;
857
858 if(kDoTrackMultBins){ // for pp analysis
859 if(nTracks<=5)
860 centr=8;
861 else if(nTracks<=10)
862 centr=7;
863 else if(nTracks<=15)
864 centr=6;
865 else if(nTracks<=20)
866 centr=5;
867 else if(nTracks<=30)
868 centr=4;
869 else if(nTracks<=40)
870 centr=3;
871 else if(nTracks<=55)
872 centr=2;
873 else if(nTracks<=70)
874 centr=1;
875 else centr=0;
876
877 replane = 0;
878 }
879 else{///for PbPb
44e6df08 880 Float_t fCentralityPerBin = (fCentralityBinMax -fCentralityBinMin)/fNCentralityBins;
364c8fcb 881 Float_t fcentrality = 0;
882
883 if(fDataType == "ESD")fCentrality->GetCentralityPercentile(fCentralityClass);
884 else if(fDataType == "AOD") fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
885 else fcentrality =0;
886
887 if(fcentrality <=(fCentralityBinMin+1*fCentralityPerBin))
888 centr=9;
889 else if(fcentrality <=(fCentralityBinMin+2*fCentralityPerBin))
890 centr=8;
891 else if(fcentrality <=(fCentralityBinMin+3*fCentralityPerBin))
892 centr=7;
893 else if(fcentrality <=(fCentralityBinMin+4*fCentralityPerBin))
894 centr=6;
895 else if(fcentrality <=(fCentralityBinMin+5*fCentralityPerBin))
896 centr=5;
897 else if(fcentrality <=(fCentralityBinMin+6*fCentralityPerBin))
898 centr=4;
899 else if(fcentrality <=(fCentralityBinMin+7*fCentralityPerBin))
900 centr=3;
901 else if(fcentrality <=(fCentralityBinMin+8*fCentralityPerBin))
902 centr=2;
903 else if(fcentrality <=(fCentralityBinMin+9*fCentralityPerBin))
904 centr=1;
905 else if(fcentrality <=(fCentralityBinMin+10*fCentralityPerBin))
906 centr=0;
907
908 if(fEventPlane){
909 Float_t feventplane = fEventPlane->GetEventplane(fEventPlaneMethod);
910 if(feventplane<0)feventplane+=TMath::Pi();
911 if(feventplane>TMath::Pi())feventplane-=TMath::Pi();
912
44e6df08 913 replane = Int_t((fNEventPlaneBins*feventplane)/TMath::Pi());
914 if(replane>(fNEventPlaneBins -1)) replane = fNEventPlaneBins -1;
364c8fcb 915 }
916 else{
917 replane = 0;
918 }
919 }
920
921 if(!fListMixEvents[zvtx][centr][replane]) fListMixEvents[zvtx][centr][replane]=new TList() ;
922 TList *pool = fListMixEvents[zvtx][centr][replane];
923
924 TClonesArray *fAnaAODParticle = new TClonesArray();
925 if(kDoPhotonCorrAna && !kDoMesonCorrAna){
926 fAnaAODParticle = fPhotonEvent;
927 }
928 if(kDoMesonCorrAna && !kDoPhotonCorrAna){
929 fAnaAODParticle = fPhotonPairEvent;
930 }
931
932 Int_t naod = fAnaAODParticle->GetEntriesFast();
933 for(Int_t iaod=0; iaod<naod; iaod++){
9c1fcdc6 934 AliCaloTrackParticle *aodParticle=(AliCaloTrackParticle*)fAnaAODParticle->At(iaod);
364c8fcb 935 if(!aodParticle) continue;
936 if(kDoIsolatedAna) {
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;
941 }
942
943 if(kMakeAbsoluteLeading || kMakeNearSideLeading){
944 if(!aodParticle->IsLeading())continue;
945 }
946
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();
951
952 if(MakeChargedCorrelation(iaod, ptTrigg0, phiTrigg0, etaTrigg0)){
953 if(kDoMixEventsAna) MakeChargedMixCorrelation(ptTrigg0, phiTrigg0, etaTrigg0, pool);
954 }
955
956 aodParticle = 0;
364c8fcb 957
958 }
959
960 if(isSelectedMix && kDoMixEventsAna){
961 if(fCTSEvent->GetEntriesFast()>0){
962 pool->AddFirst(fCTSEvent);
963 fCTSEvent=0;
964 if(pool->GetSize()>nMixedEvents){//Remove redundant events
965 TClonesArray * tmp = static_cast<TClonesArray*>(pool->Last()) ;
966 pool->RemoveLast() ;
967 delete tmp ;
968 }
969 }
970
971 }
972
973 PostData(1, outputContainer);
974 fEventAnalyized++;
975
976}
977
978//=============================================
979void AliAnalysisTaskEMCALCaloTrackCorr::InitParameters()
980{
981 fHistoPtBins = 300 ; fHistoPtMax = 60 ; fHistoPtMin = 0. ;
982 fHistoPhiBins = 360 ; fHistoPhiMax = TMath::TwoPi(); fHistoPhiMin = 0. ;
983 fHistoEtaBins = 180 ; fHistoEtaMax = 0.9; fHistoEtaMin = -0.9;
984
985 fSetConeR = 0.4 ;
986 fSetPtThreshold = 0.5 ;
987 fSetSumPtThreshold = 0.5 ;
988 fSetPtFraction = 0.1 ;
989 fParticlesInCone = kIsolatedNeutralAndCharged;
990 fICMethod = kSumPtFracationIC ;
991
992 fCentralityClass = "V0M";
993 fCentralityBinMin = fCentralityBinMax=-1;
994 fEventPlaneMethod = "Q";
44e6df08 995 fEventTriggerMaks = AliVEvent::kAny;
996 fNCentralityBins = 5;
997 fNEventPlaneBins = 5;
364c8fcb 998
999 kMC = kFALSE ;
1000 kDoMixEventsAna = kTRUE ;
1001 kDoPhotonCorrAna = kTRUE ;
1002 kDoAsymmetryCut = kTRUE ;
1003 kDoSelectHybridTracks = kFALSE;
1004 kDoMesonFill = kTRUE ;
1005 kNeutralMesonHistos = kTRUE ;
1006 kDoMesonCorrAna = kFALSE ;
1007 kDoIsolatedAna = kFALSE ;
1008 kDoTrackMultBins = kTRUE ;
1009 kUELeftRight = kFALSE ;
1010 kUENearAway = kTRUE ;
1011 kDecayPhotonCorr = kFALSE ;
1012 kAnaMCTruthCorr = kTRUE ;
1013 kAnaMCPrimaryCorr = kFALSE ;
1014 kAnaPi0Prim = kFALSE ;
1015 kAnaEtaPrim = kFALSE ;
1016 kAnaPhotonPrim = kFALSE ;
1017 kMakeAbsoluteLeading = kFALSE ;
1018 kMakeNearSideLeading = kFALSE ;
1019 kTwoTracksCorr = kFALSE ;
1020 kPhotonInAcceptance = kTRUE;
1021 kAnaDecayMapping = kTRUE ;
1022 //fCheckFidCut = kTRUE ;
1023 kEventTriggerAtSE = kTRUE ;
1024 kPhotonPairTimeCut = kFALSE ;
1025 kDoPhotonIDCut = kTRUE;
1026
1027 fMinNCells = 1 ;
1028 fMinE = 0.5;
44e6df08 1029 fMinDistBad = 2. ;
364c8fcb 1030
1031 fL0CutMin = 0.1;
1032 fL0CutMax = 0.27;
1033 fTimeCutMin = -1000;
1034 fTimeCutMax = 1000;
1035 fPhotonPairTimeCut = 100;
1036 fEMCALDPhiCut = 0.03;
1037 fEMCALDEtaCut = 0.025;
1038 fZVertexCut = 10.;
1039
1040 fDebug = -1 ;
1041 fAnaMesonType = "Pi0";
1042 fAsymmetryCut = 0.7;
1043 fDataType = "ESD" ;
1044 fTrackFilterMask = 128;
1045
1046
1047 fAnaTypeInIsolated = "Iso";
1048 nMixedEvents = 200;
1049 fptTriggerBegin = 5.;
1050 fptTriggerEnd = 25.;
1051 fptAssociatedBegin = 1.;
1052
1053 fDeltaPhiMinCut = TMath::Pi()/2.;
1054 fDeltaPhiMaxCut = 3*TMath::Pi()/2.;
1055 fDeltaPhiHRSize = TMath::Pi()/5.;
1056 fUeDeltaPhiSize = 0.2;
1057 fUeDeltaPhiFix = 1.3;
1058
1059 fESDtrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
1060
1061}
1062//=====================================
1063Bool_t AliAnalysisTaskEMCALCaloTrackCorr::FillInputEvent()
1064{
1065 Float_t fcentrality = 0;
1066
1067 if(GetDataType() == "ESD"){
1068 fEvent=dynamic_cast<AliESDEvent*>(InputEvent());
1069 if(!fEvent) {
1070 Printf("ERROR: Could not retrieve event");
1071 return kFALSE;
1072 }
1073
95232e5a 1074 AliESDEvent * fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent());
1075 if(!fESDEvent) return kFALSE;
1076 if(fESDEvent->GetPrimaryVertexTracks()->GetNContributors() <= 0){
364c8fcb 1077 return kFALSE;
1078 }
1079
95232e5a 1080 if(!IsDataMC()){;
1081 if((TMath::Abs(fEvent->GetPrimaryVertex()->GetX()) < 1.e-6) &&
364c8fcb 1082 (TMath::Abs(fEvent->GetPrimaryVertex()->GetY()) < 1.e-6) &&
1083 (TMath::Abs(fEvent->GetPrimaryVertex()->GetZ()) < 1.e-6))
1084 return kFALSE;
95232e5a 1085 }
364c8fcb 1086
1087 fCentrality = fEvent->GetCentrality();
1088 if(fCentrality)
1089 fcentrality=fCentrality->GetCentralityPercentile(fCentralityClass);
1090
1091 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1092
1093 }
1094 else if(GetDataType() == "AOD"){
1095 fEvent=dynamic_cast<AliAODEvent*>(InputEvent());
1096 if(!fEvent) {
1097 Printf("ERROR: Could not retrieve event");
1098 return kFALSE;
364c8fcb 1099 }
44e6df08 1100
1101 fcentrality = ((AliAODHeader*)fEvent->GetHeader())->GetCentrality();
1102 if((fcentrality < fCentralityBinMin) || (fcentrality>fCentralityBinMax)) return kFALSE;
1103
364c8fcb 1104 }
1105 else return kFALSE;
1106
1107 if(TMath::Abs(fEvent->GetPrimaryVertex()->GetZ())>=fZVertexCut) {
1108 return kFALSE; ///cut for primary vertex
1109 }
1110
1111 return kTRUE;
1112
1113}
1114
1115//======================================
1116void AliAnalysisTaskEMCALCaloTrackCorr::FillInputTrack()
1117{
1118 //select good track!
1119
1120 for(Int_t itrack=0; itrack<fEvent->GetNumberOfTracks(); itrack++){
1121 AliVTrack* track = (AliVTrack*)fEvent->GetTrack(itrack);
1122
1123 if(GetDataType() == "ESD"){
1124 AliESDtrack* esdTrack = dynamic_cast<AliESDtrack*>(track);
1125 if(!esdTrack) {
1126 AliError(Form("Couldn't get ESD track %d\n", itrack));
1127 continue;
1128 }
1129
1130 Bool_t trkOK = fESDtrackCuts->AcceptTrack(esdTrack);
1131 if (!trkOK) continue;
1132
1133 }
1134 else if(GetDataType() == "AOD"){
1135 AliAODTrack *aodTrack = dynamic_cast <AliAODTrack*>(track);
1136 if(!aodTrack) {
1137 AliError(Form("Couldn't get AOD track %d\n", itrack));
1138 continue;
1139 }
1140
1141 if(kDoSelectHybridTracks){
1142 if(!aodTrack->IsHybridGlobalConstrainedGlobal()) continue;
1143 }
1144 else{
1145 if(aodTrack->TestFilterBit(fTrackFilterMask)==kFALSE) continue;
1146 }
1147
1148 if(aodTrack->GetType()!= AliAODTrack::kPrimary) continue;
1149
1150
1151 }
1152
9c1fcdc6 1153 new((*fCTSEvent)[nTracksCTS])AliCaloTrackParticle(track->Px(),track->Py(),track->Pz(),0);
1154 AliCaloTrackParticle * tr = (AliCaloTrackParticle*)fCTSEvent->At(nTracksCTS);
364c8fcb 1155 tr->SetChargedSign(track->Charge());
1156 nTracksCTS++;
1157
1158 }///end loop for tracks
1159
1160 if(nTracksCTS==0) return;
1161
1162 fhNtracksAll->Fill(nTracksCTS);
1163
1164 if(fInputHandler->IsEventSelected( ) & AliVEvent::kAnyINT){
1165 fhNtracksAnyINT->Fill(nTracksCTS);
1166 }
1167 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kCentral){
1168 fhNtracksCentral->Fill(nTracksCTS);
1169 }
1170 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kSemiCentral){
1171 fhNtracksSemiCentral->Fill(nTracksCTS);
1172 }
1173 else if(fInputHandler->IsEventSelected( ) & AliVEvent::kEMC7){
1174 fhNtracksEMC7->Fill(nTracksCTS);
1175 }
1176 else{
1177 fhNtracksOtherTirgger->Fill(nTracksCTS);
1178 }
1179
1180}
1181
1182//=========================================
1183void AliAnalysisTaskEMCALCaloTrackCorr::FillInputPhoton()
1184{
1185 Int_t nClusters = 0;
1186 Double_t tmpPt = 0;
1187 Int_t tmpId = -1;
1188
1189 nClusters=fEvent->GetNumberOfCaloClusters();
1190 if(nClusters==0) return;
1191
1192 for (Int_t j=0; j<nClusters; j++) {
1193 AliVCluster *clusEMCAL = fEvent->GetCaloCluster(j);
1194 AliVCaloCells *cellEMCAL = fEvent->GetEMCALCells();
1195 if(!clusEMCAL->IsEMCAL()) continue;
1196 if(clusEMCAL->E() < fMinE) continue;
1197 if(clusEMCAL->GetNCells() < fMinNCells) continue;
1198 if(clusEMCAL->GetDistanceToBadChannel() < fMinDistBad) continue;
1199 if(!fEMCALRecU->IsGoodCluster(clusEMCAL, fEMCALGeom, cellEMCAL)) continue;
1200
1201 TLorentzVector ph;
1202 Double_t vtx[3];
1203 clusEMCAL ->GetMomentum(ph, vtx);
1204 Int_t cellAbsId=-1;
1205 fEMCALGeom->GetAbsCellIdFromEtaPhi(ph.Eta(), ph.Phi(), cellAbsId);
1206 Int_t iSM=-1, iTower=-1, Iphi=-1, Ieta=-1;
1207 fEMCALGeom->GetCellIndex(cellAbsId, iSM, iTower, Iphi, Ieta);
1208 Int_t iPhi=-1, iEta=-1;
1209 fEMCALGeom->GetCellPhiEtaIndexInSModule(iSM, iTower, Iphi, Ieta, iPhi, iEta);
1210
1211 if(ph.Pt()>tmpPt){
1212 tmpPt = ph.Pt();
1213 tmpId = clusEMCAL->GetID();
1214 }
1215
9c1fcdc6 1216 ////put selected clusters into AOD (AliCaloTrackParticle)
1217 new((*fPhotonEvent)[nPhotonsEMCAL])AliCaloTrackParticle(ph.Px(), ph.Py(), ph.Pz(), ph.E());
1218 AliCaloTrackParticle * phcluster = (AliCaloTrackParticle*)fPhotonEvent->At(nPhotonsEMCAL);
364c8fcb 1219 phcluster->SetModule(iSM);
1220 phcluster->SetNCells(clusEMCAL->GetNCells());
1221 phcluster->SetLambdas(clusEMCAL->GetM02(),clusEMCAL->GetM20());
1222 phcluster->SetDistBad(clusEMCAL->GetDistanceToBadChannel());
1223 phcluster->SetTOF(clusEMCAL->GetTOF()*1e9);
1224 phcluster->SetClusterID(clusEMCAL->GetID());
1225 phcluster->SetAODClusterID(nPhotonsEMCAL);
1226 phcluster->SetSSABit(kFALSE);
1227 phcluster->SetTOFBit(kFALSE);
1228 phcluster->SetTrackMatchedBit(kFALSE);
1229
1230 Double_t tof = clusEMCAL->GetTOF()*1e9;
1231 if(tof >= fTimeCutMin && tof <= fTimeCutMax)
1232 phcluster->SetTOFBit(kTRUE);
1233
1234 if(clusEMCAL->GetM02() > fL0CutMin && clusEMCAL->GetM02() < fL0CutMax)
1235 phcluster->SetSSABit(kTRUE);
1236
1237 Int_t nMatches = clusEMCAL->GetNTracksMatched();
1238 if(nMatches>0){
1239 Float_t dZ = 2000.;
1240 Float_t dR = 2000.;
1241 fEMCALRecU->GetMatchedResiduals(clusEMCAL->GetID(), dZ, dR);
1242 if(TMath::Abs(dR) < fEMCALDPhiCut && TMath::Abs(dZ) < fEMCALDEtaCut){
1243 phcluster->SetTrackMatchedBit(kTRUE);
1244 }
1245 }
1246
1247 nPhotonsEMCAL++;
1248
1249 }///end loop for clusters
1250
1251 for(Int_t j=0; j< nPhotonsEMCAL; j++){
9c1fcdc6 1252 AliCaloTrackParticle * phCan=(AliCaloTrackParticle*)fPhotonEvent->At(j);
364c8fcb 1253 Double_t phPt = phCan->Pt();
1254 Double_t phPhi = phCan->Phi();
1255 if(phPhi<0) phPhi+=TMath::TwoPi();
1256 Double_t phEta = phCan->Eta();
1257
1258 phCan->SetIsLeading(kFALSE);
1259 if(tmpId == phCan->GetClusterID())
1260 phCan->SetIsLeading(kTRUE);
1261
1262 phCan->SetIsolated(kFALSE);
1263 phCan->SetIsolated(IsolatedPhoton(fPhotonEvent, fCTSEvent, j, phPt, phPhi, phEta));
1264
1265 if(kDoPhotonIDCut && !phCan->IsPIDOK(8)) continue;
1266
1267 fhPhotonE->Fill(phCan->E());
1268 fhPhotonPtPhi->Fill(phCan->Pt(), phCan->Phi());
1269 fhPhotonPtEta->Fill(phCan->Pt(), phCan->Eta());
1270 fhPhotonPhiEta->Fill(phCan->Phi(), phCan->Eta());
1271
1272 }
1273
1274
1275}
1276
1277//===================================
1278void AliAnalysisTaskEMCALCaloTrackCorr::FillInputMeson()
1279{ ////do pi0 and eta meson tag
1280 TLorentzVector ph12;
1281 Int_t nPhotonPairEMCAL = 0;
1282
1283 for (Int_t i=0; i<nPhotonsEMCAL-1; i++) {
9c1fcdc6 1284 AliCaloTrackParticle * ph1=(AliCaloTrackParticle*)fPhotonEvent->At(i);
364c8fcb 1285 if(kDoPhotonIDCut && !ph1->IsPIDOK(8)) continue;
1286 for (Int_t j=i+1; j<nPhotonsEMCAL; j++) {
9c1fcdc6 1287 AliCaloTrackParticle * ph2=(AliCaloTrackParticle*)fPhotonEvent->At(j);
364c8fcb 1288 if(kDoPhotonIDCut && !ph2->IsPIDOK(8)) continue;
1289 ph12 = *ph1 + *ph2;
1290 Double_t phi=ph12.Phi();
1291 if(phi < 0) phi+=TMath::TwoPi();
1292 Float_t angle = ph1->Angle(ph2->Vect());
1293 Float_t asy = TMath::Abs((ph1->Energy()-ph2->Energy())/(ph1->Energy()+ph2->Energy()));
1294 Double_t deltaTime = TMath::Abs(ph1->GetTOF()-ph2->GetTOF());
1295 Int_t deltaModule = TMath::Abs(ph1->GetModule()-ph2->GetModule());
1296
9c1fcdc6 1297 new((*fPhotonPairEvent)[nPhotonPairEMCAL])AliCaloTrackParticle(ph12.Px(), ph12.Py(), ph12.Pz(), ph12.E());
1298 AliCaloTrackParticle * phPair = (AliCaloTrackParticle*)fPhotonPairEvent->At(nPhotonPairEMCAL);
364c8fcb 1299 phPair->SetPhotonPairAsy(asy);
1300 phPair->SetPhotonPairAngle(angle);
1301 phPair->SetPhotonPairDTime(deltaTime);
1302 phPair->SetPhotonPairDModule(deltaModule);
1303 phPair->SetPhotonPairID(ph1->GetClusterID(), ph2->GetClusterID());
1304 phPair->SetAODPhotonPairID(ph1->GetAODClusterID(), ph2->GetAODClusterID());
1305 nPhotonPairEMCAL++;
1306 }//ph2
1307 }//ph1
1308
1309 Double_t tmpMesonPt = 0;
1310 Int_t tmpMesonID = -1;
1311
1312 for(Int_t k=0; k<nPhotonPairEMCAL; k++){
9c1fcdc6 1313 AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(k);
364c8fcb 1314 if(kPhotonPairTimeCut && phPairCan->GetPhotonPairDTime() > fPhotonPairTimeCut) continue;
1315 if(SelectPair(phPairCan)){
9c1fcdc6 1316 AliCaloTrackParticle *photon1 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(0));
1317 AliCaloTrackParticle *photon2 = (AliCaloTrackParticle*)fPhotonEvent->At(phPairCan->GetAODPhotonPairID(1));
364c8fcb 1318
1319 fhMesonE->Fill(phPairCan->E());
1320 fhMesonPtPhi->Fill(phPairCan->Pt(), phPairCan->Phi());
1321 fhMesonPtEta->Fill(phPairCan->Pt(), phPairCan->Eta());
1322 fhMesonPhiEta->Fill(phPairCan->Phi(), phPairCan->Eta());
1323
1324 if(phPairCan->Pt() > tmpMesonPt){
1325 tmpMesonPt = phPairCan->Pt();
1326 tmpMesonID = k;
1327 }
1328
1329 if(kAnaDecayMapping){
1330 Double_t deltaphi1 = TMath::Abs(phPairCan->Phi()-photon1->Phi());
1331 if(deltaphi1 > TMath::TwoPi()) deltaphi1-= TMath::TwoPi();
1332
1333 Double_t deltaphi2 = TMath::Abs(phPairCan->Phi()-photon2->Phi());
1334 if(deltaphi2 > TMath::TwoPi()) deltaphi2-= TMath::TwoPi();
1335
1336 Double_t deltaphi3 = TMath::Abs(photon1->Phi()-photon2->Phi());
1337 if(deltaphi3 > TMath::TwoPi()) deltaphi3-= TMath::TwoPi();
1338
1339 fhPi0DecayPhoton1->Fill(phPairCan->Pt(),photon1->Pt());
1340 fhPi0DecayPhoton1Dphi->Fill(phPairCan->Pt(),deltaphi1);
1341 fhDecayPhoton1Pi0Dphi->Fill(photon1->Pt(),deltaphi1);
1342 fhPi0DecayPhoton2->Fill(phPairCan->Pt(),photon2->Pt());
1343 fhPi0DecayPhoton2Dphi->Fill(phPairCan->Pt(),deltaphi2);
1344 fhDecayPhoton2Pi0Dphi->Fill(photon2->Pt(),deltaphi2);
1345 fhDecayPhoton1Photon2->Fill(photon1->Pt(),photon2->Pt());
1346 fhDecayPhoton1Photon2Dphi->Fill(photon1->Pt(),deltaphi3);
1347 fhDecayPhoton2Photon1Dphi->Fill(photon2->Pt(),deltaphi3);
1348 }
1349 }
1350 }//end loop for mesons
1351
1352 for(Int_t kmeson=0; kmeson<nPhotonPairEMCAL; kmeson++){
9c1fcdc6 1353 AliCaloTrackParticle * phPairCan=(AliCaloTrackParticle*)fPhotonPairEvent->At(kmeson);
364c8fcb 1354 phPairCan->SetIsLeading(kFALSE);
1355 if(kmeson == tmpMesonID) phPairCan->SetIsLeading(kTRUE);
1356 }
1357
1358}
1359
1360//======================================
9c1fcdc6 1361Bool_t AliAnalysisTaskEMCALCaloTrackCorr::SelectPair(AliCaloTrackParticle *mesonCandidate)
364c8fcb 1362{
1363 Double_t fInvMassMaxCutParam[3]={0.};
1364 if(fAnaMesonType.Contains("Pi0")){
1365 fInvMassMaxCutParam[0] = 0.0 ;
1366 fInvMassMaxCutParam[1] =-7.e-5 ;
1367 fInvMassMaxCutParam[2] = 8.e-5 ;
1368 }
1369 else {
1370 fInvMassMaxCutParam[0] = 0.00 ;
1371 fInvMassMaxCutParam[1] = 0.00 ;
1372 fInvMassMaxCutParam[2] = 0.00 ;
1373 }
1374
1375 if(fAnaMesonType.Contains("Pi0")){
1376 fInvMassMinCut = 0.12;
1377 fInvMassMaxCut = 0.15;
1378 fLeftBandMinCut = 0;
1379 fLeftBandMaxCut = -1;
1380 fRightBandMinCut = 0.17;
1381 fRightBandMaxCut = 0.20;
1382 }
1383
1384 if(fAnaMesonType.Contains("Eta")){
1385 fInvMassMinCut = 0.52;
1386 fInvMassMaxCut = 0.58;
1387 fLeftBandMinCut = 0.38;
1388 fLeftBandMaxCut = 0.43;
1389 fRightBandMinCut = 0.65;
1390 fRightBandMaxCut = 0.70;
1391 }
1392
1393 Double_t phi = mesonCandidate->Phi();
1394 if(phi < 0) phi+=TMath::TwoPi();
1395 Double_t eta = mesonCandidate->Eta();
1396 Double_t invmass = mesonCandidate->M();
1397 Double_t angle = mesonCandidate->GetPhotonPairAngle();
1398 Double_t e = mesonCandidate->Energy();
1399 Double_t asy = mesonCandidate->GetPhotonPairAsy();
1400
1401 if(kNeutralMesonHistos){
1402 fhAnglePairNoCut ->Fill(e,angle);
1403 fhInvMassPairNoCut->Fill(e,invmass);
1404 fhAsyNoCut ->Fill(e,asy);
1405 }
1406
1407 // Asymmetry cut
1408 if(kDoAsymmetryCut){
1409 if(asy < fAsymmetryCut){
1410 if(kNeutralMesonHistos){
1411 fhInvMassPairAsyCut->Fill(e,invmass);
1412 fhAnglePairAsyCut ->Fill(e,angle);
1413 fhInvMassPairPhi->Fill(e, phi);
1414 fhInvMassPairEta->Fill(e, eta);
1415 }
1416 } else return kFALSE;
1417 }
1418
1419 Float_t invmassmaxcut = fInvMassMaxCut;
1420 Float_t invmassRightBandMinCut = fRightBandMinCut;
1421 Float_t invmassRightBandMaxCut = fRightBandMaxCut;
1422
1423 //for EMCAL, pi0s, mass depends strongly with energy for e > 6, loose max cut
44e6df08 1424 if(e > 10.){
364c8fcb 1425 invmassmaxcut = (fInvMassMaxCutParam[0]+fInvMassMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1426 invmassRightBandMinCut = (fInvMassMaxCutParam[0]+fRightBandMinCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1427 invmassRightBandMaxCut = (fInvMassMaxCutParam[0]+fRightBandMaxCut)+fInvMassMaxCutParam[1]*e+fInvMassMaxCutParam[2]*e*e;
1428 }
1429
1430 if(!fAnaMesonType.Contains("SideBand")){
1431 if(invmass > fInvMassMinCut && invmass < invmassmaxcut){
1432 if(kNeutralMesonHistos){
1433 fhInvMassPairAllCut->Fill(e,invmass);
1434 fhAnglePairAllCut ->Fill(e,angle);
1435 fhAsyAllCut ->Fill(e,asy);
1436 }
1437 return kTRUE;
1438 }
1439 else{
1440 return kFALSE;
1441 }
1442 }//normal selection
1443 else if(fAnaMesonType.Contains("SideBand")){
1444 // select a band around pi0/eta
1445 if((invmass > fLeftBandMinCut && invmass < fLeftBandMaxCut)||
1446 (invmass > invmassRightBandMinCut && invmass < invmassRightBandMaxCut)){
1447 if(kNeutralMesonHistos){
1448 fhInvMassPairAllCut->Fill(e,invmass);
1449 fhAnglePairAllCut ->Fill(e,angle);
1450 fhAsyAllCut ->Fill(e,asy);
1451 }
1452 return kTRUE;
1453 }
1454 else{
1455 return kFALSE;
1456 }
1457 }
1458 else return kFALSE;
1459}
1460
1461//==============================================
1462Bool_t AliAnalysisTaskEMCALCaloTrackCorr::IsolatedPhoton(TClonesArray *fPhotonEventIsolated, TClonesArray *fCTSEventIsolated, Int_t fIndexPhotonCan, Double_t ptPhotonCan, Double_t phiPhotonCan, Double_t etaPhotonCan)
1463{
1464
1465 if(!kDoIsolatedAna) return kFALSE;
1466
1467 Double_t fCalculatedConeR = -1.;
1468 Double_t ptTrack = -1.;
1469 Double_t phiTrack = -999.;
1470 Double_t etaTrack = -999.;
1471 Double_t ptNeutral = -1.;
1472 Double_t phiNeutral = -999.;
1473 Double_t etaNeutral = -999.;
1474
1475 Float_t fSumPtInCone = 0.;
1476 Int_t fNum = 0;
1477 Int_t fNumFrac = 0;
1478 Bool_t kIsolated = kFALSE;
1479
1480 ////skip photon in the edge of r<0.1
1481 Double_t fPhiCut1 = TMath::Pi()*80./180.-0.1;
1482 Double_t fPhiCut2 = TMath::Pi()-0.1;
1483 Double_t fEtaCut1 = -0.6;
1484 Double_t fEtaCut2 = 0.6;
1485
1486 if(etaPhotonCan>fEtaCut2 || etaPhotonCan<fEtaCut1 || phiPhotonCan>fPhiCut2 || phiPhotonCan<fPhiCut1) return kFALSE;
1487
1488
1489 if(fDebug>2) printf("candidate photon pt=%f, phi=%f, eta=%f\n",ptPhotonCan,phiPhotonCan,etaPhotonCan);
1490
1491 if(fParticlesInCone==kIsolatedOnlyCharged ||fParticlesInCone==kIsolatedNeutralAndCharged){
1492 for(Int_t j1=0; j1<fCTSEventIsolated->GetEntries(); j1++){
9c1fcdc6 1493 AliCaloTrackParticle *traForIso=(AliCaloTrackParticle*)fCTSEventIsolated->At(j1);
364c8fcb 1494 ptTrack = traForIso->Pt();
1495 if(fDebug>2) printf("track pt=%f\n",ptTrack);
1496 phiTrack = traForIso->Phi();
1497 if(phiTrack<0.) phiTrack+=TMath::TwoPi();
1498 etaTrack = traForIso->Eta();
1499
1500 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaTrack)*(etaPhotonCan-etaTrack)+ (phiPhotonCan-phiTrack)*(phiPhotonCan-phiTrack));
1501
1502 if(fDebug>2) printf("track dR=%f\n",fCalculatedConeR);
1503
1504 if(fCalculatedConeR<fSetConeR){
1505 if(fDebug>2) printf("track in Cone pt=%f\n",ptTrack);
1506 //calcuate three cases
1507 fSumPtInCone+=ptTrack;
1508 if(ptTrack>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1509 if(ptTrack>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1510
1511 }////Inside Cone R
1512 }////loop for Isolated track
1513 }////Onlycharged || NeutralAndCharged for whether Isolated photon
1514
1515 if(fDebug>2) printf("track SumPtInCone=%f\n",fSumPtInCone);
1516
1517 if(fParticlesInCone==kIsolatedOnlyNeutral || fParticlesInCone==kIsolatedNeutralAndCharged){
1518 for(Int_t i2=0; i2<fPhotonEventIsolated->GetEntries(); i2++){
9c1fcdc6 1519 AliCaloTrackParticle *ph2=(AliCaloTrackParticle*)fPhotonEventIsolated->At(i2);
364c8fcb 1520 if(!ph2->IsInTrackMatched() || i2==fIndexPhotonCan) continue;
1521
1522 ptNeutral = ph2->Pt();
1523 if(fDebug>2) printf("photon or merged pt=%f\n",ptNeutral);
1524 phiNeutral = ph2->Phi();
1525 if(phiNeutral<0.) phiNeutral+=TMath::TwoPi();
1526 etaNeutral = ph2->Eta();
1527
1528 fCalculatedConeR = TMath::Sqrt((etaPhotonCan-etaNeutral)*(etaPhotonCan-etaNeutral)+(phiPhotonCan-phiNeutral)*(phiPhotonCan-phiNeutral));
1529
1530 if(fDebug>2) printf("photon dR=%f\n",fCalculatedConeR);
1531
1532 if(fCalculatedConeR<fSetConeR){
1533 if(fDebug>2)printf("photon in Cone pt=%f\n",ptNeutral);
1534 //calcuate four cases
1535 fSumPtInCone+=ptNeutral;
1536 if(ptNeutral>fSetPtThreshold) fNum++; //larger the threshold pt, fNum++
1537 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++; //larger the fraction of ptPhIso, fNumFrac++
1538
1539 if(fSetPtFraction*ptPhotonCan<fSetPtThreshold) {
1540 if(ptNeutral>fSetPtThreshold) fNumFrac++ ;
1541 }
1542 else {
1543 if(ptNeutral>fSetPtFraction*ptPhotonCan) fNumFrac++;
1544 }
1545
1546 }////Inside Cone R
1547 }////loop for neutral
1548 }////if OnlyNeutral || NeutralAndCharged
1549
1550 if(fDebug>2) printf("track and phton SumPtInCone=%f\n",fSumPtInCone);
1551
1552 //check Isolation, depending on method
1553 if(fICMethod == kPtThresholdIC){
1554 if(fNum == -1) kIsolated = kTRUE ;
1555 }
1556 else if(fICMethod == kSumPtInConeIC){
1557 if(fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1558 }
1559 else if(fICMethod == kPtFracationIC){
1560 if(fNumFrac == -1) kIsolated = kTRUE ;
1561 }
1562 else if(fICMethod == kSumPtFracationIC){
1563 //when the fPtFraction*ptC<fSumPtThreshold then consider the later case
1564 if(fSetPtFraction*ptPhotonCan<fSetSumPtThreshold && fSumPtInCone<fSetSumPtThreshold) kIsolated = kTRUE ;
1565 if(fSetPtFraction*ptPhotonCan>fSetSumPtThreshold && fSumPtInCone<fSetPtFraction*ptPhotonCan) kIsolated = kTRUE ;
1566 }
1567
1568 if(fDebug>2) printf("kIsolated=%d\n",kIsolated);
1569 return kIsolated;
1570
1571}
1572
1573
1574//=======================================
1575void AliAnalysisTaskEMCALCaloTrackCorr::SetTriggerBins(Float_t *ptTriggBins)
1576{
1577 fTriggPtArray=new Float_t[GetNTriggPtBins()];
1578 for(Int_t i=0;i<=GetNTriggPtBins(); i++){
1579 fTriggPtArray[i] = ptTriggBins[i];
1580 }
1581}
1582
1583//========================================_
1584void AliAnalysisTaskEMCALCaloTrackCorr::SetAssociatedBins(Float_t *ptAssocBins)
1585{
1586 fAssocPtArray=new Float_t[GetNAssocPtBins()];
1587 for(Int_t i=0;i<=GetNAssocPtBins(); i++){
1588 fAssocPtArray[i] = ptAssocBins[i];
1589 }
1590}
1591
1592//========================================
1593Bool_t AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg,
1594 Double_t phiTrigg, Double_t etaTrigg)
1595{
1596 if(GetDebug() > 1)printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation() - Make trigger particle - charged hadron correlation \n");
1597 if(fPhotonEvent->GetEntriesFast()<=0) return kFALSE;
1598
1599
1600 Int_t nTracks = fCTSEvent->GetEntriesFast();
1601 fhNtracksCorr->Fill(nTracks);
1602
1603 Double_t ptAssoc = -999.;
1604 Double_t phiAssoc = -999. ;
1605 Double_t etaAssoc = -999.;
1606 Double_t deltaPhi = -999.;
1607 Double_t deltaPhiUE = -999.;
1608 Double_t deltaEta = -999.;
1609 Double_t pout = -999.;
1610 Double_t zT = -999.;
1611 Double_t xE = -999.;
1612 Double_t xELog = -999.;
1613 Double_t uedPhi = -999.;
1614 Double_t uexE = -999.;
1615 Double_t uepout = -999.;
1616 Double_t uexELog = -999.;
1617
1618 for(Int_t j1 = 0;j1 < nTracks; j1++ ){
9c1fcdc6 1619 AliCaloTrackParticle *track = (AliCaloTrackParticle *)(fCTSEvent->At(j1)) ;
364c8fcb 1620 if(!track) continue;
1621 if(kTwoTracksCorr && fTrackIndex ==j1) continue;
1622 ptAssoc = track->Pt();
1623 etaAssoc = track->Eta();
1624 phiAssoc = track->Phi() ;
1625 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1626
1627 fhTrackPtPhi->Fill(ptAssoc, phiAssoc);
1628 fhTrackPtEta->Fill(ptAssoc, etaAssoc);
1629 fhTrackPhiEta->Fill(phiAssoc, etaAssoc);
1630
1631 deltaPhi = phiTrigg-phiAssoc;
1632 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1633 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1634
1635 //jump out this event if near side associated particle pt larger than trigger
1636 if(kMakeNearSideLeading){
1637 if(ptAssoc > ptTrigg && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return kFALSE;
1638 }
1639 //jump out this event if there is any other particle with pt larger than trigger
1640 else if(kMakeAbsoluteLeading){
1641 if(ptAssoc > ptTrigg) return kFALSE;
1642 }
1643
1644 deltaEta = etaTrigg-etaAssoc;
1645
1646 pout = ptAssoc*TMath::Abs(TMath::Sin(deltaPhi));
1647 xE =-ptAssoc/ptTrigg*TMath::Cos(deltaPhi);
1648 if(xE<0) xE=-xE;
1649 xELog = TMath::Log(1/xE);
1650 zT = ptAssoc/ptTrigg;
1651
1652 uedPhi = gRandom->Uniform(TMath::Pi()/2,3*TMath::Pi()/2);
1653 uepout = ptAssoc*TMath::Sin(uedPhi);
1654 uexE =(-1*ptAssoc/ptTrigg)*TMath::Cos(uedPhi);
1655 if(uexE<0) uexE=-uexE;
1656 uexELog = TMath::Log(1/uexE);
1657
1658 if(GetDebug()>0)
1659 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedCorrelation(): deltaPhi= %f, deltaEta=%f, pout=%f, xE=%f\n",deltaPhi, deltaEta, pout, xE);
1660
1661 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1662 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1663 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd){
1664 fhDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTrigg);
1665 fhDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTrigg);
1666 }
1667 }
1668 }
1669
1670 if(ptTrigg>fptTriggerBegin && ptTrigg<fptTriggerEnd) {
1671
1672 if(ptAssoc>1. && ptAssoc<5.){
1673 fhDPhiAssocPt15T->Fill(deltaPhi, ptTrigg);
1674 fhDEtaAssocPt15T->Fill(deltaEta, ptTrigg);
1675 }
1676
1677 if(ptAssoc>fptAssociatedBegin){
1678
1679 fhDPhiTriggPtAssocPt->Fill(deltaPhi, ptAssoc);
1680 fhDEtaTriggPtAssocPt->Fill(deltaEta, ptAssoc);
1681
1682 if((deltaPhi > fDeltaPhiMinCut) && (deltaPhi < fDeltaPhiMaxCut)){
1683 fhAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1684 fhxELogTriggPt->Fill(xELog, ptTrigg);
1685 fhpoutTriggPt->Fill(pout , ptTrigg);
1686 fhzTTriggPt->Fill(zT, ptTrigg);
1687 fhxETriggPt->Fill(xE, ptTrigg);
1688 }////Only analysis Away Side
1689
1690 if(TMath::Abs(deltaPhi-TMath::Pi())<fDeltaPhiHRSize){
1691 fhAssocPtTriggPtHR->Fill(ptAssoc, ptTrigg);
1692 fhxELogTriggPtHR->Fill(xELog, ptTrigg);
1693 fhpoutTriggPtHR->Fill(pout , ptTrigg);
1694 fhzTTriggPtHR->Fill(zT, ptTrigg);
1695 fhxETriggPtHR->Fill(xE, ptTrigg);
1696 }////Only analysis head region side in Away Side
1697
1698 deltaPhiUE = deltaPhi;
1699 Bool_t kAnaUECorr1 = kFALSE;
1700 Bool_t kAnaUECorr2 = kFALSE;
1701 Double_t fUeAwaySide = 0.;
1702 if(fUeDeltaPhiFix == TMath::Pi()/2.) fUeAwaySide = 3*TMath::Pi()/2.;
1703 else fUeAwaySide = -1*fUeDeltaPhiFix;
1704
1705 if(kUELeftRight && !kUENearAway) {
1706 if(deltaPhiUE>(-1*fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (-1*fUeDeltaPhiFix+fUeDeltaPhiSize))
1707 kAnaUECorr1 = kTRUE;
1708 if(deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE < (fUeDeltaPhiFix+fUeDeltaPhiSize))
1709 kAnaUECorr2 = kTRUE;
1710 }
1711 if(!kUELeftRight && kUENearAway) {
1712 if((deltaPhiUE>-1*fUeDeltaPhiFix && deltaPhiUE<(-1*fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeDeltaPhiFix-fUeDeltaPhiSize) && deltaPhiUE<fUeDeltaPhiFix))
1713 kAnaUECorr1 = kTRUE;
1714 if((deltaPhiUE>fUeDeltaPhiFix && deltaPhiUE<(fUeDeltaPhiFix + fUeDeltaPhiSize)) || (deltaPhiUE>(fUeAwaySide - fUeDeltaPhiSize) && deltaPhiUE<fUeAwaySide))
1715 kAnaUECorr2 = kTRUE;
1716 }
1717
1718 ////Ue at Near Side: pt_assoc in the side, but dphi at pi/2-3*pi/2
1719 if(kAnaUECorr1){
1720 fhNUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1721 fhNUexELogTriggPt->Fill(uexELog, ptTrigg);
1722 fhNUepoutTriggPt->Fill(uepout , ptTrigg);
1723 fhNUexETriggPt->Fill(uexE, ptTrigg);
1724 fhNUezTTriggPt->Fill(zT , ptTrigg);
1725 fhNUexETriggPt->Fill(uexE, ptTrigg);
1726 fhNUeDPhiDEta->Fill(deltaPhi, deltaEta);
1727 }////Define the UE and analysis some UE physics observables at left
1728
1729 ////Ue at Away Side
1730 if(kAnaUECorr2){
1731 fhAUeAssocPtTriggPt->Fill(ptAssoc, ptTrigg);
1732 fhAUexELogTriggPt->Fill(uexELog, ptTrigg);
1733 fhAUepoutTriggPt->Fill(uepout, ptTrigg);
1734 fhAUezTTriggPt->Fill(zT, ptTrigg);
1735 fhAUexETriggPt->Fill(uexE, ptTrigg);
1736 fhAUeDPhiDEta->Fill(deltaPhi, deltaEta);
1737 }////Define the UE and analysis some UE physics observables at left
1738 }
1739 }
1740
1741 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1742 if(ptTrigg>=fTriggPtArray[iTrigg] && ptTrigg<fTriggPtArray[iTrigg+1]){
1743 if(ptAssoc>fptAssociatedBegin){
1744 fhDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1745 fhDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1746 }
1747
1748 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1749 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1750 fhDPhiSumPtBin[iTrigg][jAssoc]->Fill(deltaPhi,ptAssoc+ptTrigg);
1751 fhDEtaSumPtBin[iTrigg][jAssoc]->Fill(deltaEta,ptAssoc+ptTrigg);
1752 fhDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1753 }
1754 }////
1755 }
1756 }
1757
1758 track=0;
364c8fcb 1759
1760 }//end loop associated hadrons
1761
1762 fhPtPhiLeading->Fill(ptTrigg,phiTrigg);
1763 fhPtEtaLeading->Fill(ptTrigg, etaTrigg);
1764
1765 return kTRUE;
1766
1767}
1768
1769//=======================================
1770void AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(Double_t ptTriggMix, Double_t phiTriggMix, Double_t etaTriggMix, TList *poolMix)
1771{
1772 Double_t ptAssoc = -999.;
1773 Double_t phiAssoc = -999.;
1774 Double_t etaAssoc = -999.;
1775 Double_t deltaPhi = -999.;
1776 Double_t deltaEta = -999.;
1777
1778 for(Int_t ev=0;ev<poolMix->GetSize();ev++){
1779 TClonesArray *bgTracks = static_cast<TClonesArray*>(poolMix->At(ev));
1780 Int_t nTracks=bgTracks->GetEntriesFast();
1781 for(Int_t j1 = 0;j1 <nTracks; j1++ ){
9c1fcdc6 1782 AliCaloTrackParticle *track = (AliCaloTrackParticle*)bgTracks->At(j1) ;
364c8fcb 1783 if(!track) continue;
1784 ptAssoc = track->Pt();
1785 etaAssoc = track->Eta();
1786 phiAssoc = track->Phi() ;
1787 if(phiAssoc < 0) phiAssoc+=TMath::TwoPi();
1788
1789 deltaPhi = phiTriggMix-phiAssoc;
1790 if(deltaPhi < -TMath::PiOver2()) deltaPhi+=TMath::TwoPi();
1791 if(deltaPhi > 3*TMath::PiOver2()) deltaPhi-=TMath::TwoPi();
1792 deltaEta = etaTriggMix-etaAssoc;
1793
1794 //jump out this event if near side associated particle pt larger than trigger
1795 if(kMakeNearSideLeading){
1796 if(ptAssoc > ptTriggMix && (TMath::Abs(deltaPhi) < TMath::PiOver2())) return;
1797 }
1798 //jump out this event if there is any other particle with pt larger than trigger
1799 else if(kMakeAbsoluteLeading){
1800 if(ptAssoc > ptTriggMix) return;
1801 }
1802
1803 if(GetDebug()>0)
1804 printf("AliAnalysisTaskEMCALCaloTrackCorr::MakeChargedMixCorrelation(): deltaPhi= %f, deltaEta=%f\n",deltaPhi, deltaEta);
1805
1806 for(Int_t iTrigg=0;iTrigg<GetNTriggPtBins();iTrigg++){
1807 if(ptTriggMix>=fTriggPtArray[iTrigg] && ptTriggMix<fTriggPtArray[iTrigg+1]){
1808 if(ptAssoc>fptAssociatedBegin){
1809 fhMixDPhiAssocPtA[iTrigg]->Fill(deltaPhi, ptAssoc);
1810 fhMixDEtaAssocPtA[iTrigg]->Fill(deltaEta, ptAssoc);
1811 }
1812
1813 for(Int_t jAssoc=0;jAssoc<GetNAssocPtBins();jAssoc++){
1814 if(ptAssoc>fAssocPtArray[jAssoc] && ptAssoc<fAssocPtArray[jAssoc+1]){
1815 fhMixDPhiDEtaBin[iTrigg][jAssoc]->Fill(deltaPhi, deltaEta);
1816 }//end if Associated pt bin
1817 }//end loop Associated pt bins
1818 }//end if trigger pt bin
1819 }//end loop trigger bins
1820
1821 if(ptTriggMix>fptTriggerBegin && ptTriggMix<fptTriggerEnd){
1822 if(ptAssoc>1. && ptAssoc<5.){
1823 fhMixDPhiAssocPt15T->Fill(deltaPhi, ptTriggMix);
1824 fhMixDEtaAssocPt15T->Fill(deltaEta, ptTriggMix);
1825 }
1826
1827 for(Int_t kAssoc=0;kAssoc<GetNAssocPtBins();kAssoc++){
1828 if(ptAssoc>fAssocPtArray[kAssoc] && ptAssoc<fAssocPtArray[kAssoc+1]){
1829 fhMixDPhiTriggPtT[kAssoc]->Fill(deltaPhi, ptTriggMix);
1830 fhMixDEtaTriggPtT[kAssoc]->Fill(deltaEta, ptTriggMix);
1831 }
1832 }//end loop Associated pt bin
1833 }//end if Associated pt bins
1834
364c8fcb 1835 }//end loop associated hadrons
1836
364c8fcb 1837 }//end loop Mixed event in pool
1838
1839 fhMixPtPhiLeading->Fill(ptTriggMix, phiTriggMix);
1840 fhMixPtEtaLeading->Fill(ptTriggMix, etaTriggMix);
1841
1842}
1843
1844//========================================
1845
1846
1847//============================================
1848void AliAnalysisTaskEMCALCaloTrackCorr::SetTrackCuts(AliESDtrackCuts * cuts)
1849{
1850
1851 if(fESDtrackCuts) delete fESDtrackCuts ;
1852 fESDtrackCuts = cuts ;
1853
1854}
1855
1856//=============================================
1857void AliAnalysisTaskEMCALCaloTrackCorr::Terminate(Option_t *)
1858{
1859 // Draw result to the screen
1860 // Called once at the end of the query
1861
1862 fhNEvents->Fill(1,fnEvents);
1863 Printf("fnEvents=%d", fnEvents);
1864
1865 fhNEventsAnalyized->Fill(1,fEventAnalyized);
1866 Printf("fEventAnalyized=%d", fEventAnalyized);
1867
1868}