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