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