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