]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/AliAnalysisTaskElecHadronCorrel.cxx
update for mass study
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskElecHadronCorrel.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *               
3  *                                                                        *               
4  * Author: The ALICE Off-line Project.                                    *               
5  * Contributors are mentioned in the code where appropriate.              *               
6  *                                                                        *               
7  * Permission to use, copy, modify and distribute this software and its   *               
8  * documentation strictly for non-commercial purposes is hereby granted   *               
9  * without fee, provided that the above copyright notice appears in all   *               
10  * copies and that both the copyright notice and this permission notice   *               
11  * appear in the supporting documentation. The authors make no claims     *               
12  * about the suitability of this software for any purpose. It is          *               
13  * provided "as is" without express or implied warranty.                  *               
14  **************************************************************************/
15
16
17 ////////////////////////////////////////////////////////////////////////
18 //                                                                    //
19 //  Task for Heavy Flavour Electron-Hadron DeltaPhi Correlation       //
20 //  Non-Photonic Electron identified with Invariant mass              //
21 //  analysis methos in function  SelectPhotonicElectron               //
22 //  DeltaPhi calculated in function  ElectronHadCorrel                // 
23 //                                                                    //
24 //  Author: Deepa Thomas (Utrecht University)                         //
25 //                                                                    //
26 ////////////////////////////////////////////////////////////////////////
27
28 #include "TChain.h"
29 #include "TTree.h"
30 #include "TH2F.h"
31 #include "TMath.h"
32 #include "TCanvas.h"
33 #include "THnSparse.h"
34 #include "TLorentzVector.h"
35 #include "TString.h"
36 #include "TFile.h"
37
38 #include "AliAnalysisTask.h"
39 #include "AliAnalysisManager.h"
40
41 #include "AliESDEvent.h"
42 #include "AliESDHandler.h"
43 #include "AliAODEvent.h"
44 #include "AliAODHandler.h"
45
46 #include "AliAnalysisTaskElecHadronCorrel.h"
47 #include "TGeoGlobalMagField.h"
48 #include "AliLog.h"
49 #include "AliAnalysisTaskSE.h"
50 #include "TRefArray.h"
51 #include "TVector.h"
52
53 #include "AliESDInputHandler.h"
54 #include "AliAODInputHandler.h"
55 #include "AliESDpid.h"
56 #include "AliAODPid.h"
57 #include "AliESDtrackCuts.h"
58 #include "AliPhysicsSelection.h"
59 #include "AliCentralitySelectionTask.h"
60 #include "AliESDCaloCluster.h"
61 #include "AliAODCaloCluster.h"
62 #include "AliESDCaloTrigger.h"
63 #include "AliEMCALRecoUtils.h"
64 #include "AliEMCALGeometry.h"
65 #include "AliGeomManager.h"
66 #include "stdio.h"
67 #include "TGeoManager.h"
68 #include "iostream"
69 #include "fstream"
70
71 #include "AliEventPoolManager.h"
72
73 #include "AliCentrality.h"
74 #include "AliMagF.h"
75
76 #include "AliKFParticle.h"
77 #include "AliKFVertex.h"
78
79 #include "AliPID.h"
80 #include "AliPIDResponse.h"
81 #include "AliHFEcontainer.h"
82 #include "AliHFEcuts.h"
83 #include "AliHFEpid.h"
84 #include "AliHFEpidBase.h"
85 #include "AliHFEpidQAmanager.h"
86 #include "AliHFEtools.h"
87 #include "AliCFContainer.h"
88 #include "AliCFManager.h"
89 #include "AliVEvent.h"
90 #include "AliStack.h"
91 #include "AliMCEvent.h"
92 #include "TProfile.h"
93 #include "AliESDVZERO.h"
94 #include "AliAODVZERO.h"
95 #include "TVector3.h"
96 #include "TRandom2.h"
97
98   ClassImp(AliAnalysisTaskElecHadronCorrel)
99 ClassImp(AliehDPhiBasicParticle)  
100   //________________________________________________________________________
101   AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel(const char *name) 
102   : AliAnalysisTaskSE(name)
103   ,fVevent(0)  
104   ,fESD(0)
105   ,fAOD(0)
106   ,fGeom(0)
107   ,fOutputList(0)
108   ,fTrackCuts1(new AliESDtrackCuts)
109   ,fTrackCuts2(new AliESDtrackCuts)
110   ,fCuts(0)
111   ,fIdentifiedAsOutInz(kFALSE)
112   ,fPassTheEventCut(kFALSE)
113   ,fRejectKinkMother(kFALSE)
114   ,fVz(0.0)
115   ,fCFM(0)      
116   ,fPID(0)
117   ,fPIDqa(0)           
118   ,fInvmassCut(0.01)    
119   ,fCentrality(0)
120   ,fCentralityMin(0)
121   ,fCentralityMax(0)
122   ,fkCentralityMethod(0)  
123   ,fTPCnsigEleMin(-2)                                                          
124   ,fTPCnsigEleMax(2)                                                          
125   ,fTPCnsigHadMin(-10)                                                          
126   ,fTPCnsigHadMax(-3.5)                                                          
127   ,fM02CutMin(0.03)                                                              
128   ,fM02CutMax(0.5)                                                              
129   ,fM20CutMin(0.03)                                                              
130   ,fM20CutMax(0.3)
131   ,fDispCutMin(0)                                                             
132   ,fDispCutMax(1)                                                             
133   ,fEovPMin(0.8)                                                                
134   ,fEovPMax(1.2)
135   ,fTriggerCentral(kTRUE) 
136   ,fPoolMgr(0x0)  
137     ,fNoEvents(0)
138     //  ,fTrkpt(0)
139     ,fTrkEovPAft(0)      
140     //  ,fTrkEovPBefHad(0)       
141     // ,fdEdxBef(0)      
142   ,fSemiIncElecDphi(0)  
143   ,fSemiIncElecDphi1(0)         
144   ,fSemiIncElecDphi2(0)         
145   ,fSemiIncElecDphi3(0)         
146   ,fSemiIncElecDphi4(0)         
147   ,fPhotElecDphi(0)     
148   ,fPhotElecDphi1(0)    
149   ,fPhotElecDphi2(0)    
150   ,fPhotElecDphi3(0)    
151   ,fPhotElecDphi4(0)    
152   ,fInclusiveElecDphi(0)        
153   ,fInclusiveElecDphi1(0)       
154   ,fInclusiveElecDphi2(0)       
155   ,fInclusiveElecDphi3(0)       
156   ,fInclusiveElecDphi4(0)       
157   ,fInclusiveElecDphiEtaFS(0)
158   ,fInclusiveElecDphiEtaFS1(0)
159   ,fInclusiveElecDphiEtaFS2(0)
160   ,fInclusiveElecDphiEtaFS3(0)
161   ,fInclusiveElecDphiEtaFS4(0)
162   ,fDphiULSMassLow(0)   
163   ,fDphiULSMassLow1(0)  
164   ,fDphiULSMassLow2(0)  
165   ,fDphiULSMassLow3(0)  
166   ,fDphiULSMassLow4(0)  
167   ,fDphiLSMassLow(0)
168   ,fDphiLSMassLow1(0)
169   ,fDphiLSMassLow2(0)
170   ,fDphiLSMassLow3(0)
171   ,fDphiLSMassLow4(0)
172   ,fDphiULSMassLowNoPartner(0)   
173   ,fDphiULSMassLowNoPartner1(0)   
174   ,fDphiULSMassLowNoPartner2(0)   
175   ,fDphiULSMassLowNoPartner3(0)   
176   ,fDphiULSMassLowNoPartner4(0)   
177   ,fDphiLSMassLowNoPartner(0)
178   ,fDphiLSMassLowNoPartner1(0)
179   ,fDphiLSMassLowNoPartner2(0)
180   ,fDphiLSMassLowNoPartner3(0)
181   ,fDphiLSMassLowNoPartner4(0)
182   ,fPhotoElecPt(0)
183   ,fSemiInclElecPt(0)
184   ,fInclusiveElecPt(0)
185   ,fULSElecPt(0)
186   ,fLSElecPt(0)  
187   ,fSemiIncElecDphiEta1(0)
188   ,fSemiIncElecDphiEta11(0)
189   ,fSemiIncElecDphiEta12(0)
190   ,fSemiIncElecDphiEta13(0)
191   ,fSemiIncElecDphiEta14(0)
192   ,fPhotElecDphiEta1(0)
193   ,fPhotElecDphiEta11(0)
194   ,fPhotElecDphiEta12(0)
195   ,fPhotElecDphiEta13(0)
196   ,fPhotElecDphiEta14(0)
197   ,fInclusiveElecDphiEta1(0)
198   ,fInclusiveElecDphiEta11(0)
199   ,fInclusiveElecDphiEta12(0)
200   ,fInclusiveElecDphiEta13(0)
201   ,fInclusiveElecDphiEta14(0)
202   ,fDphiULSMassLowEta1(0)
203   ,fDphiULSMassLowEta11(0)
204   ,fDphiULSMassLowEta12(0)
205   ,fDphiULSMassLowEta13(0)
206   ,fDphiULSMassLowEta14(0)
207   ,fDphiLSMassLowEta1(0)
208   ,fDphiLSMassLowEta11(0)
209   ,fDphiLSMassLowEta12(0)
210   ,fDphiLSMassLowEta13(0)
211   ,fDphiLSMassLowEta14(0)
212   ,fDphiULSMassLowNoPartnerEta1(0)
213   ,fDphiULSMassLowNoPartnerEta11(0)
214   ,fDphiULSMassLowNoPartnerEta12(0)
215   ,fDphiULSMassLowNoPartnerEta13(0)
216   ,fDphiULSMassLowNoPartnerEta14(0)
217   ,fDphiLSMassLowNoPartnerEta1(0)
218   ,fDphiLSMassLowNoPartnerEta11(0)
219   ,fDphiLSMassLowNoPartnerEta12(0)
220   ,fDphiLSMassLowNoPartnerEta13(0)
221   ,fDphiLSMassLowNoPartnerEta14(0)
222   ,fSemiIncElecDphiEta2(0)
223   ,fSemiIncElecDphiEta21(0)
224   ,fSemiIncElecDphiEta22(0)
225   ,fSemiIncElecDphiEta23(0)
226   ,fSemiIncElecDphiEta24(0)
227   ,fPhotElecDphiEta2(0)
228   ,fPhotElecDphiEta21(0)
229   ,fPhotElecDphiEta22(0)
230   ,fPhotElecDphiEta23(0)
231   ,fPhotElecDphiEta24(0)
232   ,fInclusiveElecDphiEta2(0)
233   ,fInclusiveElecDphiEta21(0)
234   ,fInclusiveElecDphiEta22(0)
235   ,fInclusiveElecDphiEta23(0)
236   ,fInclusiveElecDphiEta24(0)
237   ,fDphiULSMassLowEta2(0)
238   ,fDphiULSMassLowEta21(0)
239   ,fDphiULSMassLowEta22(0)
240   ,fDphiULSMassLowEta23(0)
241   ,fDphiULSMassLowEta24(0)
242   ,fDphiLSMassLowEta2(0)
243   ,fDphiLSMassLowEta21(0)
244   ,fDphiLSMassLowEta22(0)
245   ,fDphiLSMassLowEta23(0)
246   ,fDphiLSMassLowEta24(0)
247   ,fDphiULSMassLowNoPartnerEta2(0)
248   ,fDphiULSMassLowNoPartnerEta21(0)
249   ,fDphiULSMassLowNoPartnerEta22(0)
250   ,fDphiULSMassLowNoPartnerEta23(0)
251   ,fDphiULSMassLowNoPartnerEta24(0)
252   ,fDphiLSMassLowNoPartnerEta2(0)
253   ,fDphiLSMassLowNoPartnerEta21(0)
254   ,fDphiLSMassLowNoPartnerEta22(0)
255   ,fDphiLSMassLowNoPartnerEta23(0)
256     ,fDphiLSMassLowNoPartnerEta24(0)
257     // ,fTrackPtBefTrkCuts(0)    
258     // ,fTrackPtAftTrkCuts(0)
259     ,fTPCnsigma(0)
260     // ,fNCellv1(0)
261     // ,fClsEv1(0)
262     // ,fNClusv1(0)
263     ,fInvmassLS1(0)       
264     // ,fInvmassLS2(0)       
265     // ,fInvmassLS3(0)       
266     // ,fInvmassLS4(0)       
267     // ,fInvmassLS5(0)       
268     ,fInvmassULS1(0)
269     // ,fInvmassULS2(0)
270     // ,fInvmassULS3(0)
271     // ,fInvmassULS4(0)
272     // ,fInvmassULS5(0)
273   ,fcentrality(0)     
274   ,fElecPhi(0)  
275   ,fElecPhiTPChalf(0)
276     ,fElecPhiPt(0)  
277     //  ,fElecPhiTPC(0)  
278     //  ,fElecPhiTPCEovP(0)  
279   ,fHadronPhi(0)  
280   ,fHadronPhiTPChalf(0)  
281     ,fHadronPhiPt(0)  
282     /*  ,fTrackHFEcuts(0)
283         ,fTrakPhiSPD1(0)
284         ,fTrakPhiSPD2(0)
285         ,fTrakPhiSPDOr(0)
286         ,fTrakPhiSPDAnd(0)
287         ,fTrackHFEcutsITS(0)  
288      */
289   ,fNoMixedEvents(0)
290   ,fMixStat(0)       
291   ,fMixStat1(0)        
292   ,fMixedIncElecDphi(0)  
293   ,fMixedIncElecDphi1(0)  
294   ,fMixedIncElecDphi2(0)  
295   ,fMixedIncElecDphi3(0)  
296   ,fMixedIncElecDphi4(0)  
297   ,fMixedPhotElecDphi(0)
298   ,fMixedPhotElecDphi1(0)
299   ,fMixedPhotElecDphi2(0)
300   ,fMixedPhotElecDphi3(0)
301   ,fMixedPhotElecDphi4(0)
302   ,fMixedSemiIncElecDphi(0)  
303   ,fMixedSemiIncElecDphi1(0)  
304   ,fMixedSemiIncElecDphi2(0)  
305   ,fMixedSemiIncElecDphi3(0)  
306   ,fMixedSemiIncElecDphi4(0)  
307   ,fMixedDphiULSMassLow(0)  
308   ,fMixedDphiULSMassLow1(0)  
309   ,fMixedDphiULSMassLow2(0)  
310   ,fMixedDphiULSMassLow3(0)  
311   ,fMixedDphiULSMassLow4(0)  
312   ,fMixedDphiLSMassLow(0)  
313   ,fMixedDphiLSMassLow1(0)  
314     ,fMixedDphiLSMassLow2(0)  
315     ,fMixedDphiLSMassLow3(0)  
316     ,fMixedDphiLSMassLow4(0)  
317   ,fHadronPt(0)  
318   ,fCentralityPass(0)
319   ,fCentralityNoPass(0)
320   ,fHadronDphi(0)
321   ,fHadronDphi1(0)
322   ,fHadronDphi2(0)
323   ,fHadronDphi3(0)
324   ,fHadronDphi4(0)
325   ,fPiPt(0)  
326   ,fHadronDphiNoSS(0)
327   ,fHadronDphiNoSS1(0)
328   ,fHadronDphiNoSS2(0)
329   ,fHadronDphiNoSS3(0)
330   ,fHadronDphiNoSS4(0)
331   ,fPiPtNoSS(0)
332   ,fEovPWoSS(0)  
333   ,fEovPWSS(0)  
334   ,fEovPHadWoSS(0)  
335   ,fEovPHadWSS(0)  
336   ,fHadronDphiEta1(0)   
337   ,fHadronDphiEta11(0)  
338   ,fHadronDphiEta12(0)  
339   ,fHadronDphiEta13(0)  
340   ,fHadronDphiEta14(0)  
341   ,fHadronDphiNoSSEta1(0)   
342   ,fHadronDphiNoSSEta11(0)  
343   ,fHadronDphiNoSSEta12(0)  
344   ,fHadronDphiNoSSEta13(0)  
345   ,fHadronDphiNoSSEta14(0)  
346   ,fHadronDphiEta2(0)  
347   ,fHadronDphiEta21(0) 
348   ,fHadronDphiEta22(0) 
349   ,fHadronDphiEta23(0) 
350   ,fHadronDphiEta24(0) 
351   ,fHadronDphiNoSSEta2(0)   
352   ,fHadronDphiNoSSEta21(0)  
353   ,fHadronDphiNoSSEta22(0)  
354   ,fHadronDphiNoSSEta23(0)  
355 ,fHadronDphiNoSSEta24(0)
356   //,fSparseElectron(0)  
357   //  ,fvalueElectron(0)   
358 {
359   //Named constructor
360
361   fPID = new AliHFEpid("hfePid");
362   //fvalueElectron = new Double_t[6];
363
364   // Define input and output slots here
365   // Input slot #0 works with a TChain
366   DefineInput(0, TChain::Class());
367   // Output slot #0 id reserved by the base class for AOD
368   // Output slot #1 writes into a TH1 container
369   // DefineOutput(1, TH1I::Class());
370   DefineOutput(1, TList::Class());
371   //  DefineOutput(3, TTree::Class());
372 }
373
374 //________________________________________________________________________
375 AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel() 
376   : AliAnalysisTaskSE("DefaultAnalysis_AliAnalysisElecHadCorrel")
377   ,fVevent(0)  
378   ,fESD(0)
379   ,fAOD(0)
380   ,fGeom(0)  
381   ,fOutputList(0)
382   ,fTrackCuts1(new AliESDtrackCuts)
383   ,fTrackCuts2(new AliESDtrackCuts)
384   ,fCuts(0)
385   ,fIdentifiedAsOutInz(kFALSE)
386   ,fPassTheEventCut(kFALSE)
387   ,fRejectKinkMother(kFALSE)
388   ,fVz(0.0)
389   ,fCFM(0)      
390   ,fPID(0)       
391   ,fPIDqa(0)           
392   ,fInvmassCut(0.01)    
393   ,fCentrality(0)
394   ,fCentralityMin(0)
395   ,fCentralityMax(0)
396   ,fkCentralityMethod(0)  
397   ,fTPCnsigEleMin(-2)                                                                     
398   ,fTPCnsigEleMax(2)                                                                      
399   ,fTPCnsigHadMin(-10)                                                          
400   ,fTPCnsigHadMax(-3.5)                                                                   
401   ,fM02CutMin(0.03)                                                                       
402   ,fM02CutMax(0.5)                                                                        
403   ,fM20CutMin(0.03)                                                                       
404   ,fM20CutMax(0.3)
405   ,fDispCutMin(0)                                                                         
406   ,fDispCutMax(1)                                                                         
407   ,fEovPMin(0.8)                                                                          
408   ,fEovPMax(1.2)
409   ,fTriggerCentral(kTRUE) 
410   ,fPoolMgr(0x0)    
411     ,fNoEvents(0)
412     //  ,fTrkpt(0)
413     ,fTrkEovPAft(0)      
414     //  ,fTrkEovPBefHad(0)       
415     //  ,fdEdxBef(0)     
416   ,fSemiIncElecDphi(0)  
417   ,fSemiIncElecDphi1(0)         
418   ,fSemiIncElecDphi2(0)         
419   ,fSemiIncElecDphi3(0)         
420   ,fSemiIncElecDphi4(0)         
421   ,fPhotElecDphi(0)     
422   ,fPhotElecDphi1(0)    
423   ,fPhotElecDphi2(0)    
424   ,fPhotElecDphi3(0)    
425   ,fPhotElecDphi4(0)    
426   ,fInclusiveElecDphi(0)        
427   ,fInclusiveElecDphi1(0)       
428   ,fInclusiveElecDphi2(0)       
429   ,fInclusiveElecDphi3(0)       
430   ,fInclusiveElecDphi4(0)       
431   ,fInclusiveElecDphiEtaFS(0)
432   ,fInclusiveElecDphiEtaFS1(0)
433   ,fInclusiveElecDphiEtaFS2(0)
434   ,fInclusiveElecDphiEtaFS3(0)
435   ,fInclusiveElecDphiEtaFS4(0)
436   ,fDphiULSMassLow(0)   
437   ,fDphiULSMassLow1(0)  
438   ,fDphiULSMassLow2(0)  
439   ,fDphiULSMassLow3(0)  
440   ,fDphiULSMassLow4(0)  
441   ,fDphiLSMassLow(0)
442   ,fDphiLSMassLow1(0)
443   ,fDphiLSMassLow2(0)
444   ,fDphiLSMassLow3(0)
445   ,fDphiLSMassLow4(0)
446   ,fDphiULSMassLowNoPartner(0)   
447   ,fDphiULSMassLowNoPartner1(0)   
448   ,fDphiULSMassLowNoPartner2(0)   
449   ,fDphiULSMassLowNoPartner3(0)   
450   ,fDphiULSMassLowNoPartner4(0)   
451   ,fDphiLSMassLowNoPartner(0)
452   ,fDphiLSMassLowNoPartner1(0)
453   ,fDphiLSMassLowNoPartner2(0)
454   ,fDphiLSMassLowNoPartner3(0)
455   ,fDphiLSMassLowNoPartner4(0)
456   ,fPhotoElecPt(0)
457   ,fSemiInclElecPt(0)
458   ,fInclusiveElecPt(0)
459   ,fULSElecPt(0)
460   ,fLSElecPt(0)  
461   ,fSemiIncElecDphiEta1(0)
462   ,fSemiIncElecDphiEta11(0)
463   ,fSemiIncElecDphiEta12(0)
464   ,fSemiIncElecDphiEta13(0)
465   ,fSemiIncElecDphiEta14(0)
466   ,fPhotElecDphiEta1(0)
467   ,fPhotElecDphiEta11(0)
468   ,fPhotElecDphiEta12(0)
469   ,fPhotElecDphiEta13(0)
470   ,fPhotElecDphiEta14(0)
471   ,fInclusiveElecDphiEta1(0)
472   ,fInclusiveElecDphiEta11(0)
473   ,fInclusiveElecDphiEta12(0)
474   ,fInclusiveElecDphiEta13(0)
475   ,fInclusiveElecDphiEta14(0)
476   ,fDphiULSMassLowEta1(0)
477   ,fDphiULSMassLowEta11(0)
478   ,fDphiULSMassLowEta12(0)
479   ,fDphiULSMassLowEta13(0)
480   ,fDphiULSMassLowEta14(0)
481   ,fDphiLSMassLowEta1(0)
482   ,fDphiLSMassLowEta11(0)
483   ,fDphiLSMassLowEta12(0)
484   ,fDphiLSMassLowEta13(0)
485   ,fDphiLSMassLowEta14(0)
486   ,fDphiULSMassLowNoPartnerEta1(0)
487   ,fDphiULSMassLowNoPartnerEta11(0)
488   ,fDphiULSMassLowNoPartnerEta12(0)
489   ,fDphiULSMassLowNoPartnerEta13(0)
490   ,fDphiULSMassLowNoPartnerEta14(0)
491   ,fDphiLSMassLowNoPartnerEta1(0)
492   ,fDphiLSMassLowNoPartnerEta11(0)
493   ,fDphiLSMassLowNoPartnerEta12(0)
494   ,fDphiLSMassLowNoPartnerEta13(0)
495   ,fDphiLSMassLowNoPartnerEta14(0)
496   ,fSemiIncElecDphiEta2(0)
497   ,fSemiIncElecDphiEta21(0)
498   ,fSemiIncElecDphiEta22(0)
499   ,fSemiIncElecDphiEta23(0)
500   ,fSemiIncElecDphiEta24(0)
501   ,fPhotElecDphiEta2(0)
502   ,fPhotElecDphiEta21(0)
503   ,fPhotElecDphiEta22(0)
504   ,fPhotElecDphiEta23(0)
505   ,fPhotElecDphiEta24(0)
506   ,fInclusiveElecDphiEta2(0)
507   ,fInclusiveElecDphiEta21(0)
508   ,fInclusiveElecDphiEta22(0)
509   ,fInclusiveElecDphiEta23(0)
510   ,fInclusiveElecDphiEta24(0)
511   ,fDphiULSMassLowEta2(0)
512   ,fDphiULSMassLowEta21(0)
513   ,fDphiULSMassLowEta22(0)
514   ,fDphiULSMassLowEta23(0)
515   ,fDphiULSMassLowEta24(0)
516   ,fDphiLSMassLowEta2(0)
517   ,fDphiLSMassLowEta21(0)
518   ,fDphiLSMassLowEta22(0)
519   ,fDphiLSMassLowEta23(0)
520   ,fDphiLSMassLowEta24(0)
521   ,fDphiULSMassLowNoPartnerEta2(0)
522   ,fDphiULSMassLowNoPartnerEta21(0)
523   ,fDphiULSMassLowNoPartnerEta22(0)
524   ,fDphiULSMassLowNoPartnerEta23(0)
525   ,fDphiULSMassLowNoPartnerEta24(0)
526   ,fDphiLSMassLowNoPartnerEta2(0)
527   ,fDphiLSMassLowNoPartnerEta21(0)
528   ,fDphiLSMassLowNoPartnerEta22(0)
529   ,fDphiLSMassLowNoPartnerEta23(0)
530     ,fDphiLSMassLowNoPartnerEta24(0)
531     //  ,fTrackPtBefTrkCuts(0)   
532     //  ,fTrackPtAftTrkCuts(0)            
533      ,fTPCnsigma(0)     
534     //  ,fNCellv1(0)  
535     //  ,fClsEv1(0)
536     //  ,fNClusv1(0)
537     ,fInvmassLS1(0)   
538     //  ,fInvmassLS2(0)   
539     //  ,fInvmassLS3(0)   
540     //  ,fInvmassLS4(0)   
541     //  ,fInvmassLS5(0)   
542     ,fInvmassULS1(0)  
543     //  ,fInvmassULS2(0)  
544     //  ,fInvmassULS3(0)  
545     //  ,fInvmassULS4(0)  
546     //  ,fInvmassULS5(0)  
547   ,fcentrality(0)     
548   ,fElecPhi(0)
549   ,fElecPhiTPChalf(0)  
550     ,fElecPhiPt(0)
551     //  ,fElecPhiTPC(0)
552     //  ,fElecPhiTPCEovP(0)  
553   ,fHadronPhi(0)
554   ,fHadronPhiTPChalf(0)
555     ,fHadronPhiPt(0)
556     /*  ,fTrackHFEcuts(0)
557         ,fTrakPhiSPD1(0)
558         ,fTrakPhiSPD2(0)
559         ,fTrakPhiSPDOr(0)
560         ,fTrakPhiSPDAnd(0)
561         ,fTrackHFEcutsITS(0)  
562      */
563   ,fNoMixedEvents(0)
564   ,fMixStat(0)      
565   ,fMixStat1(0)     
566   ,fMixedIncElecDphi(0)  
567   ,fMixedIncElecDphi1(0)  
568   ,fMixedIncElecDphi2(0)  
569   ,fMixedIncElecDphi3(0)  
570   ,fMixedIncElecDphi4(0)  
571   ,fMixedPhotElecDphi(0)
572   ,fMixedPhotElecDphi1(0)
573   ,fMixedPhotElecDphi2(0)
574   ,fMixedPhotElecDphi3(0)
575   ,fMixedPhotElecDphi4(0)
576   ,fMixedSemiIncElecDphi(0)
577   ,fMixedSemiIncElecDphi1(0)
578   ,fMixedSemiIncElecDphi2(0)
579   ,fMixedSemiIncElecDphi3(0)
580   ,fMixedSemiIncElecDphi4(0)
581   ,fMixedDphiULSMassLow(0) 
582   ,fMixedDphiULSMassLow1(0) 
583   ,fMixedDphiULSMassLow2(0) 
584   ,fMixedDphiULSMassLow3(0) 
585   ,fMixedDphiULSMassLow4(0) 
586   ,fMixedDphiLSMassLow(0)      
587   ,fMixedDphiLSMassLow1(0)      
588   ,fMixedDphiLSMassLow2(0)      
589   ,fMixedDphiLSMassLow3(0)      
590     ,fMixedDphiLSMassLow4(0)      
591   ,fHadronPt(0)  
592   ,fCentralityPass(0)
593   ,fCentralityNoPass(0)
594   ,fHadronDphi(0)
595   ,fHadronDphi1(0)
596   ,fHadronDphi2(0)
597   ,fHadronDphi3(0)
598   ,fHadronDphi4(0)
599   ,fPiPt(0)
600   ,fHadronDphiNoSS(0)
601   ,fHadronDphiNoSS1(0)
602   ,fHadronDphiNoSS2(0)
603   ,fHadronDphiNoSS3(0)
604   ,fHadronDphiNoSS4(0)
605   ,fPiPtNoSS(0)
606   ,fEovPWoSS(0)
607   ,fEovPWSS(0) 
608   ,fEovPHadWoSS(0)
609   ,fEovPHadWSS(0) 
610   ,fHadronDphiEta1(0)   
611   ,fHadronDphiEta11(0)  
612   ,fHadronDphiEta12(0)  
613   ,fHadronDphiEta13(0)  
614   ,fHadronDphiEta14(0)  
615   ,fHadronDphiNoSSEta1(0)   
616   ,fHadronDphiNoSSEta11(0)  
617   ,fHadronDphiNoSSEta12(0)  
618   ,fHadronDphiNoSSEta13(0)  
619   ,fHadronDphiNoSSEta14(0)  
620   ,fHadronDphiEta2(0)  
621   ,fHadronDphiEta21(0) 
622   ,fHadronDphiEta22(0) 
623   ,fHadronDphiEta23(0) 
624   ,fHadronDphiEta24(0) 
625   ,fHadronDphiNoSSEta2(0)   
626   ,fHadronDphiNoSSEta21(0)  
627   ,fHadronDphiNoSSEta22(0)  
628   ,fHadronDphiNoSSEta23(0)  
629 ,fHadronDphiNoSSEta24(0)
630   //,fSparseElectron(0)  
631   //  ,fvalueElectron(0)  
632 {
633   //Default constructor
634   fPID = new AliHFEpid("hfePid");
635   //fvalueElectron = new Double_t[6];
636
637   // Constructor
638   // Define input and output slots here
639   // Input slot #0 works with a TChain
640   DefineInput(0, TChain::Class());
641   // Output slot #0 id reserved by the base class for AOD
642   // Output slot #1 writes into a TH1 container
643   // DefineOutput(1, TH1I::Class());
644   DefineOutput(1, TList::Class());
645   //DefineOutput(3, TTree::Class());
646 }
647 //_________________________________________
648
649 AliAnalysisTaskElecHadronCorrel::~AliAnalysisTaskElecHadronCorrel()
650 {
651   //Destructor 
652
653   delete fOutputList;
654   delete fGeom;
655   delete fPID;
656   delete fCFM;
657   delete fPIDqa;
658   delete fTrackCuts1;
659   delete fTrackCuts2;
660   //  delete fSparseElectron;
661   //  delete []fvalueElectron;
662 }
663 //_________________________________________
664
665 void AliAnalysisTaskElecHadronCorrel::UserExec(Option_t*)
666 {
667   //Main loop
668   //Called for each event
669
670   // create pointer to event
671   fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
672   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
673
674   if(!(fESD || fAOD)){
675     printf("ERROR: fESD & fAOD not available\n");
676     return;
677   }
678   fVevent = dynamic_cast<AliVEvent*>(InputEvent());
679   if (!fVevent) {
680     printf("ERROR: fVEvent not available\n");
681     return;
682   }
683
684   if(!fCuts){
685     AliError("HFE cuts not available");
686     return;
687   }
688
689   if(!fPID->IsInitialized()){ 
690     // Initialize PID with the given run number
691     AliWarning("PID not initialised, get from Run no");
692
693     if(IsAODanalysis())fPID->InitializePID(fAOD->GetRunNumber());
694     else fPID->InitializePID(fESD->GetRunNumber());
695   }
696
697
698   if(fTriggerCentral){
699     // trigger selection
700     if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kCentral))) return;
701   }
702
703   if(!fTriggerCentral){
704     // trigger selection
705     if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kSemiCentral))) return;
706   }
707   // centrality selection 
708   //  SetCentralityParameters(0., 7., "V0M");
709   Bool_t pass = kFALSE; 
710   CheckCentrality(fVevent,pass);
711   if(!pass)return;
712
713   Int_t fNOtrks =  fVevent->GetNumberOfTracks();
714   const AliVVertex *pVtx = fVevent->GetPrimaryVertex();
715
716   Double_t pVtxZ = -999;
717   pVtxZ = pVtx->GetZ();
718
719   if(TMath::Abs(pVtxZ)>10) return;
720   fNoEvents->Fill(0);
721
722   if(fNOtrks<2) return;
723
724   AliPIDResponse *pidResponse = fInputHandler->GetPIDResponse();
725   if(!pidResponse){
726     AliDebug(1, "Using default PID Response");
727     pidResponse = AliHFEtools::GetDefaultPID(kFALSE, fInputEvent->IsA() == AliAODEvent::Class()); 
728   }
729
730   fPID->SetPIDResponse(pidResponse);
731
732   fCFM->SetRecEventInfo(fVevent);
733
734   AliCentrality *fCentrality2 = (AliCentrality*)fAOD->GetCentrality();
735   Double_t centvalue1 = fCentrality2->GetCentralityPercentile("V0M");
736
737   //Event mixing
738   AliEventPool* pool;
739   pool = fPoolMgr->GetEventPool(centvalue1, pVtxZ); // Get the buffer associated with the current centrality and z-vtx
740   if (!pool)
741   {
742     AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue1, pVtxZ));     
743     return;
744   }
745   // Look for kink mother for AOD
746   Double_t *listofmotherkink =0;
747   Int_t numberofvertices = 0, numberofmotherkink = 0;
748   if(IsAODanalysis()){
749     numberofvertices = fAOD->GetNumberOfVertices();
750     listofmotherkink = new Double_t[numberofvertices];
751     for(Int_t ivertex=0; ivertex < numberofvertices; ivertex++) {
752       AliAODVertex *aodvertex = fAOD->GetVertex(ivertex);
753       if(!aodvertex) continue;
754       if(aodvertex->GetType()==AliAODVertex::kKink) {
755         AliAODTrack *mother = (AliAODTrack *) aodvertex->GetParent();
756         if(!mother) continue;
757         Int_t idmother = mother->GetID();
758         listofmotherkink[numberofmotherkink] = idmother;
759         numberofmotherkink++;
760       }
761     }
762   }
763
764   // Track loop 
765   for (Int_t iTracks = 0; iTracks < fVevent->GetNumberOfTracks(); iTracks++) {
766     AliVParticle* Vtrack = fVevent->GetTrack(iTracks);
767     if (!Vtrack) {
768       printf("ERROR: Could not receive track %d\n", iTracks);
769       continue;
770     }
771     AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack);
772     AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack);
773     AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
774
775     if(!track && !etrack && !atrack) continue;
776
777     if(IsAODanalysis())
778       if(!atrack->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)) continue;
779
780     if(track->Pt()<1) continue;
781
782     // fTrackPtBefTrkCuts->Fill(track->Pt());           
783
784     // RecKine: ITSTPC cuts  
785     if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, track)) continue;
786
787     // Reject kink mother
788     if(fRejectKinkMother) { // Quick and dirty fix to reject both kink mothers and daughters
789       if(IsAODanalysis()){
790         Bool_t kinkmotherpass = kTRUE;
791         for(Int_t kinkmother = 0; kinkmother < numberofmotherkink; kinkmother++) {
792           if(track->GetID() == listofmotherkink[kinkmother]) {
793             kinkmotherpass = kFALSE;
794             continue;
795           }
796         }
797         if(!kinkmotherpass) continue;
798       }
799       else{
800         if(etrack->GetKinkIndex(0) != 0) continue;
801       }
802     }
803     // RecPrim
804     //     if(!ProcessCutStep(AliHFEcuts::kStepRecPrim, track)) continue; //gives warning for AOD, so not using
805
806     // HFE cuts: TPC PID cleanup
807     if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, track)) continue;
808
809     // fTrackHFEcuts->Fill(track->Phi());
810
811     // HFEcuts: ITS layers cuts
812     if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsITS, track)) continue;
813
814     //     fTrackHFEcutsITS->Fill(track->Phi());
815     //fTrackPtAftTrkCuts->Fill(track->Pt());            
816
817     Double_t fClsE = -999, p = -999, fEovP=-999, pt = -999, dEdx=-999, fTPCnSigma=0;
818     pt = track->Pt();
819     p = track->P();
820     dEdx = track->GetTPCsignal();
821     fTPCnSigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(track, AliPID::kElectron) : 1000;
822
823     //TPC electron phi
824     // if(fTPCnSigma >= -2 && fTPCnSigma <= 2){
825     //       fElecPhiTPC->Fill(track->Phi());
826     // }
827
828     //eta cut (-0.7,0.7)
829     if(track->Eta() < -0.7 || track->Eta() > 0.7) continue;
830
831     // Track extrapolation to EMCAL
832     Int_t fClsId = track->GetEMCALcluster();
833     if(fClsId <0) continue;
834     AliVCluster *cluster = fVevent->GetCaloCluster(fClsId);
835     if(!cluster->IsEMCAL()) continue;
836     if(TMath::Abs(cluster->GetTrackDx())>0.05 || TMath::Abs(cluster->GetTrackDz())>0.05) continue;    
837     //     fdEdxBef->Fill(p,dEdx);
838     fTPCnsigma->Fill(p,fTPCnSigma);
839
840     //     fTrkpt->Fill(pt);
841     fClsE = cluster->E();
842     fEovP = fClsE/p;
843
844     //--------THnsparse---------
845     //fvalueElectron[0] = pt;
846     //fvalueElectron[1] = fTPCnSigma;
847     //fvalueElectron[2] = fEovP;
848     //fvalueElectron[3] = cluster->GetM20();
849     //fvalueElectron[4] = cluster->GetM02();
850     //fvalueElectron[5] = cluster->GetDispersion();
851
852     //fSparseElectron->Fill(fvalueElectron);
853
854     //----------------
855     //EovP distribution for Had
856     if((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)) fEovPHadWoSS->Fill(pt,fEovP);
857     if(((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)) && ((cluster->GetM20()> fM20CutMin) && (cluster->GetM20()< fM20CutMax)) &&  ((cluster->GetM02()> fM02CutMin) && (cluster->GetM02()< fM02CutMax)) && ((cluster->GetDispersion()< fDispCutMax))) fEovPHadWSS->Fill(pt,fEovP);
858
859     //Dphi distribution hadrons with shower shape cuts
860     if(((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)) && ((cluster->GetM20()> fM20CutMin) && (cluster->GetM20()< fM20CutMax)) &&  ((cluster->GetM02()> fM02CutMin) && (cluster->GetM02()< fM02CutMax)) && ((cluster->GetDispersion()< fDispCutMax))&&(fEovP >= fEovPMin && fEovP <= fEovPMax)){
861       ElectronHadCorrel(iTracks, track, fHadronDphi, fHadronDphi1,fHadronDphi2,fHadronDphi3,fHadronDphi4);
862       ElectronHadCorrelEtaBins(iTracks, track, fHadronDphiEta1, fHadronDphiEta11,fHadronDphiEta12,fHadronDphiEta13,fHadronDphiEta14,fHadronDphiEta2, fHadronDphiEta21,fHadronDphiEta22,fHadronDphiEta23,fHadronDphiEta24);
863       fPiPt->Fill(pt);
864     }
865
866     //Dphi distribution hadrons without shower shape cuts
867     if((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)&&(fEovP >= fEovPMin && fEovP <= fEovPMax)){
868       ElectronHadCorrel(iTracks, track, fHadronDphiNoSS, fHadronDphiNoSS1,fHadronDphiNoSS2,fHadronDphiNoSS3,fHadronDphiNoSS4);
869       ElectronHadCorrelEtaBins(iTracks, track, fHadronDphiNoSSEta1, fHadronDphiNoSSEta11,fHadronDphiNoSSEta12,fHadronDphiNoSSEta13,fHadronDphiNoSSEta14,fHadronDphiNoSSEta2, fHadronDphiNoSSEta21,fHadronDphiNoSSEta22,fHadronDphiNoSSEta23,fHadronDphiNoSSEta24);
870       fPiPtNoSS->Fill(pt);
871     }
872
873     //Electron id with TPC
874     if(fTPCnSigma < fTPCnsigEleMin || fTPCnSigma > fTPCnsigEleMax) continue;
875     fEovPWoSS->Fill(pt,fEovP);
876     //   fElecPhiTPCEovP->Fill(track->Phi());
877
878     //Electron id with shower shape  
879     if(cluster->GetM20()< fM20CutMin || cluster->GetM20()> fM20CutMax || cluster->GetM02()< fM02CutMin || cluster->GetM02()> fM02CutMax || cluster->GetDispersion()> fDispCutMax) continue;
880     fEovPWSS->Fill(pt,fEovP);
881
882     //Electron id with E/p
883     if(fEovP < fEovPMin || fEovP > fEovPMax) continue;
884
885     fTrkEovPAft->Fill(pt,fEovP);
886     fElecPhi->Fill(track->Phi());
887     fElecPhiPt->Fill(track->Phi(),track->Pt());
888     if (track->Eta() >0 && track->Eta() <0.7) fElecPhiTPChalf->Fill(track->Phi());
889
890     HadronInfo(iTracks);
891
892     Bool_t fFlagPhotonicElec = kFALSE;
893     // select photonic electron
894     SelectPhotonicElectron(iTracks,track,fFlagPhotonicElec);
895
896     //Inclusive electron-hadron correlation
897     ElectronHadCorrel(iTracks, track, fInclusiveElecDphi, fInclusiveElecDphi1,fInclusiveElecDphi2,fInclusiveElecDphi3,fInclusiveElecDphi4);
898     fInclusiveElecPt->Fill(pt);
899     MixedEvent(track,fMixedIncElecDphi, fMixedIncElecDphi1,fMixedIncElecDphi2, fMixedIncElecDphi3, fMixedIncElecDphi4);
900
901     //Dphi in Eta bins
902     ElectronHadCorrelEtaBins(iTracks, track, fInclusiveElecDphiEta1, fInclusiveElecDphiEta11,fInclusiveElecDphiEta12,fInclusiveElecDphiEta13,fInclusiveElecDphiEta14,fInclusiveElecDphiEta2, fInclusiveElecDphiEta21,fInclusiveElecDphiEta22,fInclusiveElecDphiEta23,fInclusiveElecDphiEta24);
903
904     //Inclusive electron-hadron correlation far eta side
905     ElectronHadCorrelEtaFarSide(iTracks, track, fInclusiveElecDphiEtaFS, fInclusiveElecDphiEtaFS1,fInclusiveElecDphiEtaFS2,fInclusiveElecDphiEtaFS3,fInclusiveElecDphiEtaFS4);
906     MixedEvent(track,fMixedIncElecDphi, fMixedIncElecDphi1,fMixedIncElecDphi2, fMixedIncElecDphi3, fMixedIncElecDphi4);
907
908     // photonic electron
909     if(fFlagPhotonicElec){
910       //Electron hadron correlation
911       ElectronHadCorrel(iTracks, track, fPhotElecDphi,fPhotElecDphi1,fPhotElecDphi2,fPhotElecDphi3,fPhotElecDphi4);
912       fPhotoElecPt->Fill(pt);
913       MixedEvent(track,fMixedPhotElecDphi, fMixedPhotElecDphi1,fMixedPhotElecDphi2, fMixedPhotElecDphi3, fMixedPhotElecDphi4);
914
915       //Dphi in Eta bins
916       ElectronHadCorrelEtaBins(iTracks, track, fPhotElecDphiEta1,fPhotElecDphiEta11,fPhotElecDphiEta12,fPhotElecDphiEta13,fPhotElecDphiEta14,fPhotElecDphiEta2,fPhotElecDphiEta21,fPhotElecDphiEta22,fPhotElecDphiEta23,fPhotElecDphiEta24);
917     }
918
919     // Semi inclusive electron 
920     if(!fFlagPhotonicElec){
921       //Electron hadron correlation
922       ElectronHadCorrel(iTracks, track, fSemiIncElecDphi, fSemiIncElecDphi1,fSemiIncElecDphi2,fSemiIncElecDphi3,fSemiIncElecDphi4);
923       fSemiInclElecPt->Fill(pt);
924       MixedEvent(track,fMixedSemiIncElecDphi,fMixedSemiIncElecDphi1,fMixedSemiIncElecDphi2, fMixedSemiIncElecDphi3, fMixedSemiIncElecDphi4);
925
926       //Dphi in Eta bins
927       ElectronHadCorrelEtaBins(iTracks, track, fSemiIncElecDphiEta1, fSemiIncElecDphiEta11,fSemiIncElecDphiEta12,fSemiIncElecDphiEta13,fSemiIncElecDphiEta14,fSemiIncElecDphiEta2, fSemiIncElecDphiEta21,fSemiIncElecDphiEta22,fSemiIncElecDphiEta23,fSemiIncElecDphiEta24);
928     }
929   }
930   /*   //EMC clusters  
931        Int_t clsNo = fVevent->GetNumberOfCaloClusters();
932        fNClusv1->Fill(clsNo); 
933        for(Int_t iclus=0; iclus<clsNo ; iclus++){ 
934        AliVCluster* clus = fVevent->GetCaloCluster(iclus);
935        if(!clus->IsEMCAL()) continue; 
936        fNCellv1->Fill(clus->GetNCells());
937        fClsEv1->Fill(clus->E());  
938        }
939    */
940
941   TObjArray* tracksClone = CloneAndReduceTrackList();
942   tracksClone->SetOwner();
943   pool->UpdatePool(tracksClone);
944
945   delete listofmotherkink;
946   PostData(1, fOutputList);
947 }
948 //_________________________________________
949 void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
950 {
951   //Create histograms
952
953   AliDebug(3, "Creating Output Objects");
954   // Automatic determination of the analysis mode
955   AliVEventHandler *inputHandler = dynamic_cast<AliVEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
956   if(!TString(inputHandler->IsA()->GetName()).CompareTo("AliAODInputHandler")){
957     SetAODAnalysis();
958   } else {
959     SetESDAnalysis();
960   }
961   printf("Analysis Mode: %s Analysis\n", IsAODanalysis() ? "AOD" : "ESD");
962
963   //--------Initialize PID
964   fPID->SetHasMCData(kFALSE);
965   if(!fPID->GetNumberOfPIDdetectors()) 
966   {
967     fPID->AddDetector("TPC", 0);
968     fPID->AddDetector("EMCAL", 1);
969   }
970
971   fPID->SortDetectors(); 
972   fPIDqa = new AliHFEpidQAmanager();
973   fPIDqa->Initialize(fPID);
974
975   //--------Initialize correction Framework and Cuts
976   fCFM = new AliCFManager;
977   const Int_t kNcutSteps = AliHFEcuts::kNcutStepsMCTrack + AliHFEcuts::kNcutStepsRecTrack + AliHFEcuts::kNcutStepsDETrack;
978   fCFM->SetNStepParticle(kNcutSteps);
979   for(Int_t istep = 0; istep < kNcutSteps; istep++)
980     fCFM->SetParticleCutsList(istep, NULL);
981
982   if(!fCuts){
983     AliWarning("Cuts not available. Default cuts will be used");
984     fCuts = new AliHFEcuts;
985     fCuts->CreateStandardCuts();
986   }
987
988   if(IsAODanalysis()) fCuts->SetAOD(); 
989   fCuts->Initialize(fCFM);
990
991   //Mixed event initialising
992   Int_t trackDepth = 2000;
993   Int_t poolsize   = 1000;
994
995   Int_t nCentralityBins  = 5;
996   Int_t nCentralityBinsSC  = 6;
997   Int_t nZvtxBins  = 4;
998   Double_t CentralityBins[6];
999   Double_t CentralityBinsSC[7];
1000   Double_t vertexBins[5];
1001   if(fTriggerCentral)
1002   {
1003     CentralityBins[0] = 0;
1004     CentralityBins[1] = 2;
1005     CentralityBins[2] = 4;
1006     CentralityBins[3] = 6;
1007     CentralityBins[4] = 8;
1008     CentralityBins[5] = 10;
1009
1010     vertexBins[0] = -10;
1011     vertexBins[1] = -5;
1012     vertexBins[2] = 0;
1013     vertexBins[3] = 5;
1014     vertexBins[4] = 10;
1015     fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, (Double_t*) CentralityBins, nZvtxBins, (Double_t*) vertexBins);
1016   }
1017
1018   if(!fTriggerCentral)                                                                     
1019   { 
1020     CentralityBinsSC[0] = 20;  
1021     CentralityBinsSC[1] = 25;  
1022     CentralityBinsSC[2] = 30;  
1023     CentralityBinsSC[3] = 35;  
1024     CentralityBinsSC[4] = 40;  
1025     CentralityBinsSC[5] = 45;  
1026     CentralityBinsSC[6] = 50;  
1027
1028     vertexBins[0] = -10;
1029     vertexBins[1] = -5;
1030     vertexBins[2] = 0;
1031     vertexBins[3] = 5;
1032     vertexBins[4] = 10;
1033     fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBinsSC, (Double_t*) CentralityBinsSC, nZvtxBins, (Double_t*) vertexBins);
1034   }
1035
1036
1037   //---------Output Tlist
1038   fOutputList = new TList();
1039   fOutputList->SetOwner();
1040   fOutputList->Add(fPIDqa->MakeList("PIDQA"));
1041
1042   fNoEvents = new TH1F("fNoEvents","",1,0,1) ;
1043   fOutputList->Add(fNoEvents);
1044
1045   fcentrality = new TH1F("fcentrality","centrality", 100,0,100);
1046   fOutputList->Add(fcentrality);
1047
1048   //  fTrkpt = new TH1F("fTrkpt","track pt",1000,0,50);
1049   //  fOutputList->Add(fTrkpt);
1050
1051   //  fTrackPtBefTrkCuts = new TH1F("fTrackPtBefTrkCuts","track pt before track cuts",1000,0,50);
1052   //  fOutputList->Add(fTrackPtBefTrkCuts);
1053
1054   //  fTrackPtAftTrkCuts = new TH1F("fTrackPtAftTrkCuts","track pt after track cuts",1000,0,50);
1055   //  fOutputList->Add(fTrackPtAftTrkCuts);
1056
1057   fTPCnsigma = new TH2F("fTPCnsigma", "TPC - n sigma",1000,0,50,200,-10,10);
1058   fOutputList->Add(fTPCnsigma);
1059
1060   fTrkEovPAft = new TH2F("fTrkEovPAft","track E/p after HFE pid",1000,0,50,100,0,2);
1061   fOutputList->Add(fTrkEovPAft);
1062
1063   //  fTrkEovPBefHad = new TH2F("fTrkEovPBefHad","track E/p for TPCnsig < 3.5",1000,0,50,100,0,2);
1064   //  fOutputList->Add(fTrkEovPBefHad);
1065
1066   //  fdEdxBef = new TH2F("fdEdxBef","track dEdx vs p before HFE pid",1000,0,50,150,0,150);
1067   //  fOutputList->Add(fdEdxBef);
1068
1069   fElecPhi = new TH1F("fElecPhi", "Electron phi",1000,0,6.28);
1070   fOutputList->Add(fElecPhi);
1071
1072   fElecPhiPt = new TH2F("fElecPhiPt", "Electron phi vs pt; Electron phi; pt (GeV/c)",1000,0,6.28,1000,0,100);
1073   fOutputList->Add(fElecPhiPt);
1074
1075   fElecPhiTPChalf = new TH1F("fElecPhiTPChalf", "Electron phi for 0<eta<0.7",1000,0,6.28);                            
1076   fOutputList->Add(fElecPhiTPChalf);
1077
1078   /*  fElecPhiTPC = new TH1F("fElecPhiTPC", "Electron phi after TPC cut",1000,0,6.28);
1079       fOutputList->Add(fElecPhiTPC);
1080
1081       fElecPhiTPCEovP = new TH1F("fElecPhiTPCEovP", "Electron phi after TPC and E/p cut",1000,0,6.28);
1082       fOutputList->Add(fElecPhiTPCEovP);
1083    */
1084   fHadronPhi = new TH1F("fHadronPhi", "Hadron phi",1000,0,6.28);
1085   fOutputList->Add(fHadronPhi);
1086
1087   fHadronPhiTPChalf = new TH1F("fHadronPhiTPChalf", "Hadron phi for 0<eta<0.9",1000,0,6.28);                          
1088   fOutputList->Add(fHadronPhiTPChalf);
1089
1090   fHadronPhiPt = new TH2F("fHadronPhiPt", "Hadron phi vs pt; hadron phi; pt (GeV/c)",1000,0,6.28,1000,0,100);
1091   fOutputList->Add(fHadronPhiPt);
1092
1093   /*
1094      fTrackHFEcuts = new TH1F("fTrackHFEcuts","Track phi for HFE cuts",1000,0,6.28);
1095      fOutputList->Add(fTrackHFEcuts);
1096
1097      fTrakPhiSPD1 = new TH1F("fTrakPhiSPD1","Track phi for hit in SPD layer 1",1000,0,6.28);
1098      fOutputList->Add(fTrakPhiSPD1);
1099
1100      fTrakPhiSPD2 = new TH1F("fTrakPhiSPD2","Track phi for hit in SPD layer 2",1000,0,6.28);
1101      fOutputList->Add(fTrakPhiSPD2);
1102
1103      fTrakPhiSPDOr = new TH1F("fTrakPhiSPDOr","Track phi for hit in any SPD layer",1000,0,6.28);
1104      fOutputList->Add(fTrakPhiSPDOr);
1105
1106      fTrakPhiSPDAnd = new TH1F("fTrakPhiSPDAnd","Track phi for hit in both SPD layer",1000,0,6.28);
1107      fOutputList->Add(fTrakPhiSPDAnd);
1108
1109      fTrackHFEcutsITS = new TH1F("fTrackHFEcutsITS","Track phi for HFE cuts + ITS HFE cuts",1000,0,6.28);
1110      fOutputList->Add(fTrackHFEcutsITS);
1111    */
1112   fSemiIncElecDphi = new TH2F("fSemiIncElecDphi", "Semi Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1113   fOutputList->Add(fSemiIncElecDphi);
1114
1115   fSemiIncElecDphi1 = new TH2F("fSemiIncElecDphi1", "Semi Inclusive elec-had Dphi correlation for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1116   fOutputList->Add(fSemiIncElecDphi1);
1117
1118   fSemiIncElecDphi2 = new TH2F("fSemiIncElecDphi2", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1119   fOutputList->Add(fSemiIncElecDphi2);
1120
1121   fSemiIncElecDphi3 = new TH2F("fSemiIncElecDphi3", "Semi Inclusive elec-had Dphi correlation for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1122   fOutputList->Add(fSemiIncElecDphi3);
1123
1124   fSemiIncElecDphi4 = new TH2F("fSemiIncElecDphi4", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1125   fOutputList->Add(fSemiIncElecDphi4);
1126
1127   fPhotElecDphi = new TH2F("fPhotElecDphi", "Photon elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1128   fOutputList->Add(fPhotElecDphi);
1129
1130   fPhotElecDphi1 = new TH2F("fPhotElecDphi1", "Photon elec-had Dphi correlation for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1131   fOutputList->Add(fPhotElecDphi1);
1132
1133   fPhotElecDphi2 = new TH2F("fPhotElecDphi2", "Photon elec-had Dphi correlation for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1134   fOutputList->Add(fPhotElecDphi2);
1135
1136   fPhotElecDphi3 = new TH2F("fPhotElecDphi3", "Photon elec-had Dphi correlation for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1137   fOutputList->Add(fPhotElecDphi3);
1138
1139   fPhotElecDphi4 = new TH2F("fPhotElecDphi4", "Photon elec-had Dphi correlation for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1140   fOutputList->Add(fPhotElecDphi4);
1141
1142   fInclusiveElecDphi = new TH2F("fInclusiveElecDphi", "Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1143   fOutputList->Add(fInclusiveElecDphi);
1144
1145   fInclusiveElecDphi1 = new TH2F("fInclusiveElecDphi1", "Inclusive elec-had Dphi correlation for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1146   fOutputList->Add(fInclusiveElecDphi1);
1147
1148   fInclusiveElecDphi2 = new TH2F("fInclusiveElecDphi2", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1149   fOutputList->Add(fInclusiveElecDphi2);
1150
1151   fInclusiveElecDphi3 = new TH2F("fInclusiveElecDphi3", "Inclusive elec-had Dphi correlation for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1152   fOutputList->Add(fInclusiveElecDphi3);
1153
1154   fInclusiveElecDphi4 = new TH2F("fInclusiveElecDphi4", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1155   fOutputList->Add(fInclusiveElecDphi4);
1156
1157   fInclusiveElecDphiEtaFS = new TH2F("fInclusiveElecDphiEtaFS", "Inclusive elec-had Dphi correlation (hadron 1<eta<1.6)",200,0,20,64,-1.57,4.71);
1158   fOutputList->Add(fInclusiveElecDphiEtaFS);
1159
1160   fInclusiveElecDphiEtaFS1 = new TH2F("fInclusiveElecDphiEtaFS1", "Inclusive elec-had Dphi correlation for 2<pt^{asso}<4 (hadron 1<eta<1.6)",200,0,20,64,-1.57,4.71);
1161   fOutputList->Add(fInclusiveElecDphiEtaFS1);
1162
1163   fInclusiveElecDphiEtaFS2 = new TH2F("fInclusiveElecDphiEtaFS2", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<6 (hadron 1<eta<1.6)",200,0,20,64,-1.57,4.71);
1164   fOutputList->Add(fInclusiveElecDphiEtaFS2);
1165
1166   fInclusiveElecDphiEtaFS3 = new TH2F("fInclusiveElecDphiEtaFS3", "Inclusive elec-had Dphi correlation for 6<pt^{asso}<8 (hadron 1<eta<1.6)",200,0,20,64,-1.57,4.71);
1167   fOutputList->Add(fInclusiveElecDphiEtaFS3);
1168
1169   fInclusiveElecDphiEtaFS4 = new TH2F("fInclusiveElecDphiEtaFS4", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<10 (hadron 1<eta<1.6)",200,0,20,64,-1.57,4.71);
1170   fOutputList->Add(fInclusiveElecDphiEtaFS4);
1171
1172   fDphiULSMassLow = new TH2F("fDphiULSMassLow", "e-h Dphi ULS, mass<cut",200,0,20,64,-1.57,4.71);
1173   fOutputList->Add(fDphiULSMassLow);
1174
1175   fDphiULSMassLow1 = new TH2F("fDphiULSMassLow1", "e-h Dphi ULS, mass<cut for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1176   fOutputList->Add(fDphiULSMassLow1);
1177
1178   fDphiULSMassLow2 = new TH2F("fDphiULSMassLow2", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1179   fOutputList->Add(fDphiULSMassLow2);
1180
1181   fDphiULSMassLow3 = new TH2F("fDphiULSMassLow3", "e-h Dphi ULS, mass<cut for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1182   fOutputList->Add(fDphiULSMassLow3);
1183
1184   fDphiULSMassLow4 = new TH2F("fDphiULSMassLow4", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1185   fOutputList->Add(fDphiULSMassLow4);
1186
1187   fDphiLSMassLow = new TH2F("fDphiLSMassLow", "e-h Dphi LS, mass<cut",200,0,20,64,-1.57,4.71);
1188   fOutputList->Add(fDphiLSMassLow);
1189
1190   fDphiLSMassLow1 = new TH2F("fDphiLSMassLow1", "e-h Dphi LS, mass<cut for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1191   fOutputList->Add(fDphiLSMassLow1);
1192
1193   fDphiLSMassLow2 = new TH2F("fDphiLSMassLow2", "e-h Dphi LS, mass<cut for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1194   fOutputList->Add(fDphiLSMassLow2);
1195
1196   fDphiLSMassLow3 = new TH2F("fDphiLSMassLow3", "e-h Dphi LS, mass<cut for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1197   fOutputList->Add(fDphiLSMassLow3);
1198
1199   fDphiLSMassLow4 = new TH2F("fDphiLSMassLow4", "e-h Dphi LS, mass<cut for 8<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1200   fOutputList->Add(fDphiLSMassLow4);
1201
1202   fDphiULSMassLowNoPartner = new TH2F("fDphiULSMassLowNoPartner", "e-h Dphi ULS with no partner, mass<mass cut,",200,0,20,64,-1.57,4.71);
1203   fOutputList->Add(fDphiULSMassLowNoPartner);
1204
1205   fDphiULSMassLowNoPartner1 = new TH2F("fDphiULSMassLowNoPartner1", "e-h Dphi ULS with no partner, mass<mass cut for 2<pt^{asso}<4,",200,0,20,64,-1.57,4.71);
1206   fOutputList->Add(fDphiULSMassLowNoPartner1);
1207
1208   fDphiULSMassLowNoPartner2 = new TH2F("fDphiULSMassLowNoPartner2", "e-h Dphi ULS with no partner, mass<mass cut for 4<pt^{asso}<6,",200,0,20,64,-1.57,4.71);
1209   fOutputList->Add(fDphiULSMassLowNoPartner2);
1210
1211   fDphiULSMassLowNoPartner3 = new TH2F("fDphiULSMassLowNoPartner3", "e-h Dphi ULS with no partner, mass<mass cut for 6<pt^{asso}<8,",200,0,20,64,-1.57,4.71);
1212   fOutputList->Add(fDphiULSMassLowNoPartner3);
1213
1214   fDphiULSMassLowNoPartner4 = new TH2F("fDphiULSMassLowNoPartner4", "e-h Dphi ULS with no partner, mass<mass cut for 4<pt^{asso}<10,",200,0,20,64,-1.57,4.71);
1215   fOutputList->Add(fDphiULSMassLowNoPartner4);
1216
1217   fDphiLSMassLowNoPartner = new TH2F("fDphiLSMassLowNoPartner", "e-h Dphi LS with no partner, mass<mass cut",200,0,20,64,-1.57,4.71);
1218   fOutputList->Add(fDphiLSMassLowNoPartner);
1219
1220   fDphiLSMassLowNoPartner1 = new TH2F("fDphiLSMassLowNoPartner1", "e-h Dphi LS with no partner, mass<mass cut for 2<pt^{asso}<4,",200,0,20,64,-1.57,4.71);
1221   fOutputList->Add(fDphiLSMassLowNoPartner1);                                            
1222
1223   fDphiLSMassLowNoPartner2 = new TH2F("fDphiLSMassLowNoPartner2", "e-h Dphi LS with no partner, mass<mass cut for 4<pt^{asso}<6,",200,0,20,64,-1.57,4.71);
1224   fOutputList->Add(fDphiLSMassLowNoPartner2);
1225
1226   fDphiLSMassLowNoPartner3 = new TH2F("fDphiLSMassLowNoPartner3", "e-h Dphi LS with no partner, mass<mass cut for 6<pt^{asso}<8,",200,0,20,64,-1.57,4.71);
1227   fOutputList->Add(fDphiLSMassLowNoPartner3);
1228
1229   fDphiLSMassLowNoPartner4 = new TH2F("fDphiLSMassLowNoPartner4", "e-h Dphi LS with no partner, mass<mass cut for 4<pt^{asso}<10,",200,0,20,64,-1.57,4.71);
1230   fOutputList->Add(fDphiLSMassLowNoPartner4);
1231
1232   fPhotoElecPt = new TH1F("fPhotoElecPt", "photonic electron pt",1000,0,100);
1233   fOutputList->Add(fPhotoElecPt);
1234
1235   fSemiInclElecPt = new TH1F("fSemiInclElecPt", "Semi-inclusive electron pt",1000,0,100);
1236   fOutputList->Add(fSemiInclElecPt);
1237
1238   fInclusiveElecPt = new TH1F("fInclElecPt", "Inclusive electron pt",1000,0,100);
1239   fOutputList->Add(fInclusiveElecPt);
1240
1241   fULSElecPt = new TH1F("fULSElecPt", "ULS electron pt",1000,0,100);
1242   fOutputList->Add(fULSElecPt);
1243
1244   fLSElecPt = new TH1F("fLSElecPt", "LS electron pt",1000,0,100);
1245   fOutputList->Add(fLSElecPt);
1246
1247   fSemiIncElecDphiEta1 = new TH2F("fSemiIncElecDphiEta1", "Semi Inclusive elec-had Dphi correlation for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1248   fOutputList->Add(fSemiIncElecDphiEta1);
1249   fSemiIncElecDphiEta11 = new TH2F("fSemiIncElecDphiEta11", "Semi Inclusive elec-had Dphi correlation for 2<pt^{asso}<4 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1250   fOutputList->Add(fSemiIncElecDphiEta11);
1251   fSemiIncElecDphiEta12 = new TH2F("fSemiIncElecDphiEta12", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<6 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1252   fOutputList->Add(fSemiIncElecDphiEta12);
1253   fSemiIncElecDphiEta13 = new TH2F("fSemiIncElecDphiEta13", "Semi Inclusive elec-had Dphi correlation for 6<pt^{asso}<8 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1254   fOutputList->Add(fSemiIncElecDphiEta13);
1255   fSemiIncElecDphiEta14 = new TH2F("fSemiIncElecDphiEta14", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<10 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1256   fOutputList->Add(fSemiIncElecDphiEta14);
1257   fPhotElecDphiEta1 = new TH2F("fPhotElecDphiEta1", "Photon elec-had Dphi correlation for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1258   fOutputList->Add(fPhotElecDphiEta1);
1259   fPhotElecDphiEta11 = new TH2F("fPhotElecDphiEta11", "Photon elec-had Dphi correlation for 2<pt^{asso}<4 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1260   fOutputList->Add(fPhotElecDphiEta11);
1261   fPhotElecDphiEta12 = new TH2F("fPhotElecDphiEta12", "Photon elec-had Dphi correlation for 4<pt^{asso}<6 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1262   fOutputList->Add(fPhotElecDphiEta12);
1263   fPhotElecDphiEta13 = new TH2F("fPhotElecDphiEta13", "Photon elec-had Dphi correlation for 6<pt^{asso}<8 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1264   fOutputList->Add(fPhotElecDphiEta13);
1265   fPhotElecDphiEta14 = new TH2F("fPhotElecDphiEta14", "Photon elec-had Dphi correlation for 4<pt^{asso}<10 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1266   fOutputList->Add(fPhotElecDphiEta14);
1267   fInclusiveElecDphiEta1 = new TH2F("fInclusiveElecDphiEta1", "Inclusive elec-had Dphi correlation for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1268   fOutputList->Add(fInclusiveElecDphiEta1);
1269   fInclusiveElecDphiEta11 = new TH2F("fInclusiveElecDphiEta11", "Inclusive elec-had Dphi correlation for 2<pt^{asso}<4 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1270   fOutputList->Add(fInclusiveElecDphiEta11);
1271   fInclusiveElecDphiEta12 = new TH2F("fInclusiveElecDphiEta12", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<6 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1272   fOutputList->Add(fInclusiveElecDphiEta12);
1273   fInclusiveElecDphiEta13 = new TH2F("fInclusiveElecDphiEta13", "Inclusive elec-had Dphi correlation for 6<pt^{asso}<8 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1274   fOutputList->Add(fInclusiveElecDphiEta13);
1275   fInclusiveElecDphiEta14 = new TH2F("fInclusiveElecDphiEta14", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<10 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1276   fOutputList->Add(fInclusiveElecDphiEta14);
1277   fDphiULSMassLowEta1 = new TH2F("fDphiULSMassLowEta1", "e-h Dphi ULS, mass<cut for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1278   fOutputList->Add(fDphiULSMassLowEta1);
1279   fDphiULSMassLowEta11 = new TH2F("fDphiULSMassLowEta11", "e-h Dphi ULS, mass<cut for 2<pt^{asso}<4 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1280   fOutputList->Add(fDphiULSMassLowEta11);
1281   fDphiULSMassLowEta12 = new TH2F("fDphiULSMassLowEta12", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<6 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1282   fOutputList->Add(fDphiULSMassLowEta12);
1283   fDphiULSMassLowEta13 = new TH2F("fDphiULSMassLowEta13", "e-h Dphi ULS, mass<cut for 6<pt^{asso}<8 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1284   fOutputList->Add(fDphiULSMassLowEta13);
1285   fDphiULSMassLowEta14 = new TH2F("fDphiULSMassLowEta14", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<10 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1286   fOutputList->Add(fDphiULSMassLowEta14);
1287   fDphiLSMassLowEta1 = new TH2F("fDphiLSMassLowEta1", "e-h Dphi LS, mass<cut for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1288   fOutputList->Add(fDphiLSMassLowEta1);
1289   fDphiLSMassLowEta11 = new TH2F("fDphiLSMassLowEta11", "e-h Dphi LS, mass<cut for 2<pt^{asso}<4 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1290   fOutputList->Add(fDphiLSMassLowEta11);
1291   fDphiLSMassLowEta12 = new TH2F("fDphiLSMassLowEta12", "e-h Dphi LS, mass<cut for 4<pt^{asso}<6 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1292   fOutputList->Add(fDphiLSMassLowEta12);
1293   fDphiLSMassLowEta13 = new TH2F("fDphiLSMassLowEta13", "e-h Dphi LS, mass<cut for 6<pt^{asso}<8 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1294   fOutputList->Add(fDphiLSMassLowEta13);
1295   fDphiLSMassLowEta14 = new TH2F("fDphiLSMassLowEta14", "e-h Dphi LS, mass<cut for 8<pt^{asso}<10 for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1296   fOutputList->Add(fDphiLSMassLowEta14);
1297   fDphiULSMassLowNoPartnerEta1 = new TH2F("fDphiULSMassLowNoPartnerEta1", "e-h Dphi ULS with no partner, mass<mass cut, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1298   fOutputList->Add(fDphiULSMassLowNoPartnerEta1);
1299   fDphiULSMassLowNoPartnerEta11 = new TH2F("fDphiULSMassLowNoPartnerEta11", "e-h Dphi ULS with no partner, mass<mass cut for 2<pt^{asso}<4, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1300   fOutputList->Add(fDphiULSMassLowNoPartnerEta11);
1301   fDphiULSMassLowNoPartnerEta12 = new TH2F("fDphiULSMassLowNoPartnerEta12", "e-h Dphi ULS with no partner, mass<mass cut for 4<pt^{asso}<6, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1302   fOutputList->Add(fDphiULSMassLowNoPartnerEta12);
1303   fDphiULSMassLowNoPartnerEta13 = new TH2F("fDphiULSMassLowNoPartnerEta13", "e-h Dphi ULS with no partner, mass<mass cut for 6<pt^{asso}<8, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1304   fOutputList->Add(fDphiULSMassLowNoPartnerEta13);
1305   fDphiULSMassLowNoPartnerEta14 = new TH2F("fDphiULSMassLowNoPartnerEta14", "e-h Dphi ULS with no partner, mass<mass cut for 4<pt^{asso}<10, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1306   fOutputList->Add(fDphiULSMassLowNoPartnerEta14);
1307   fDphiLSMassLowNoPartnerEta1 = new TH2F("fDphiLSMassLowNoPartnerEta1", "e-h Dphi LS with no partner, mass<mass cut, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1308   fOutputList->Add(fDphiLSMassLowNoPartnerEta1);
1309   fDphiLSMassLowNoPartnerEta11 = new TH2F("fDphiLSMassLowNoPartnerEta11", "e-h Dphi LS with no partner, mass<mass cut for 2<pt^{asso}<4, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1310   fOutputList->Add(fDphiLSMassLowNoPartnerEta11);
1311   fDphiLSMassLowNoPartnerEta12 = new TH2F("fDphiLSMassLowNoPartnerEta12", "e-h Dphi LS with no partner, mass<mass cut for 4<pt^{asso}<6, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1312   fOutputList->Add(fDphiLSMassLowNoPartnerEta12);
1313   fDphiLSMassLowNoPartnerEta13 = new TH2F("fDphiLSMassLowNoPartnerEta13", "e-h Dphi LS with no partner, mass<mass cut for 6<pt^{asso}<8, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1314   fOutputList->Add(fDphiLSMassLowNoPartnerEta13);
1315   fDphiLSMassLowNoPartnerEta14 = new TH2F("fDphiLSMassLowNoPartnerEta14", "e-h Dphi LS with no partner, mass<mass cut for 4<pt^{asso}<10, for |Eta < 0.8|",200,0,20,64,-1.57,4.71);
1316   fOutputList->Add(fDphiLSMassLowNoPartnerEta14);
1317
1318   fSemiIncElecDphiEta2 = new TH2F("fSemiIncElecDphiEta2", "Semi Inclusive elec-had Dphi correlation for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1319   fOutputList->Add(fSemiIncElecDphiEta2);
1320   fSemiIncElecDphiEta21 = new TH2F("fSemiIncElecDphiEta21", "Semi Inclusive elec-had Dphi correlation for 2<pt^{asso}<4 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1321   fOutputList->Add(fSemiIncElecDphiEta21);
1322   fSemiIncElecDphiEta22 = new TH2F("fSemiIncElecDphiEta22", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<6 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1323   fOutputList->Add(fSemiIncElecDphiEta22);
1324   fSemiIncElecDphiEta23 = new TH2F("fSemiIncElecDphiEta23", "Semi Inclusive elec-had Dphi correlation for 6<pt^{asso}<8 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1325   fOutputList->Add(fSemiIncElecDphiEta23);
1326   fSemiIncElecDphiEta24 = new TH2F("fSemiIncElecDphiEta24", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<10 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1327   fOutputList->Add(fSemiIncElecDphiEta24);
1328   fPhotElecDphiEta2 = new TH2F("fPhotElecDphiEta2", "Photon elec-had Dphi correlation for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1329   fOutputList->Add(fPhotElecDphiEta2);
1330   fPhotElecDphiEta21 = new TH2F("fPhotElecDphiEta21", "Photon elec-had Dphi correlation for 2<pt^{asso}<4 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1331   fOutputList->Add(fPhotElecDphiEta21);
1332   fPhotElecDphiEta22 = new TH2F("fPhotElecDphiEta22", "Photon elec-had Dphi correlation for 4<pt^{asso}<6 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1333   fOutputList->Add(fPhotElecDphiEta22);
1334   fPhotElecDphiEta23 = new TH2F("fPhotElecDphiEta23", "Photon elec-had Dphi correlation for 6<pt^{asso}<8 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1335   fOutputList->Add(fPhotElecDphiEta23);
1336   fPhotElecDphiEta24 = new TH2F("fPhotElecDphiEta24", "Photon elec-had Dphi correlation for 4<pt^{asso}<10 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1337   fOutputList->Add(fPhotElecDphiEta24);
1338   fInclusiveElecDphiEta2 = new TH2F("fInclusiveElecDphiEta2", "Inclusive elec-had Dphi correlation for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1339   fOutputList->Add(fInclusiveElecDphiEta2);
1340   fInclusiveElecDphiEta21 = new TH2F("fInclusiveElecDphiEta21", "Inclusive elec-had Dphi correlation for 2<pt^{asso}<4 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1341   fOutputList->Add(fInclusiveElecDphiEta21);
1342   fInclusiveElecDphiEta22 = new TH2F("fInclusiveElecDphiEta22", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<6 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1343   fOutputList->Add(fInclusiveElecDphiEta22);
1344   fInclusiveElecDphiEta23 = new TH2F("fInclusiveElecDphiEta23", "Inclusive elec-had Dphi correlation for 6<pt^{asso}<8 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1345   fOutputList->Add(fInclusiveElecDphiEta23);
1346   fInclusiveElecDphiEta24 = new TH2F("fInclusiveElecDphiEta24", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<10 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1347   fOutputList->Add(fInclusiveElecDphiEta24);
1348   fDphiULSMassLowEta2 = new TH2F("fDphiULSMassLowEta2", "e-h Dphi ULS, mass<cut for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1349   fOutputList->Add(fDphiULSMassLowEta2);
1350   fDphiULSMassLowEta21 = new TH2F("fDphiULSMassLowEta21", "e-h Dphi ULS, mass<cut for 2<pt^{asso}<4 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1351   fOutputList->Add(fDphiULSMassLowEta21);
1352   fDphiULSMassLowEta22 = new TH2F("fDphiULSMassLowEta22", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<6 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1353   fOutputList->Add(fDphiULSMassLowEta22);
1354   fDphiULSMassLowEta23 = new TH2F("fDphiULSMassLowEta23", "e-h Dphi ULS, mass<cut for 6<pt^{asso}<8 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1355   fOutputList->Add(fDphiULSMassLowEta23);
1356   fDphiULSMassLowEta24 = new TH2F("fDphiULSMassLowEta24", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<10 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1357   fOutputList->Add(fDphiULSMassLowEta24);
1358   fDphiLSMassLowEta2 = new TH2F("fDphiLSMassLowEta2", "e-h Dphi LS, mass<cut for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1359   fOutputList->Add(fDphiLSMassLowEta2);
1360   fDphiLSMassLowEta21 = new TH2F("fDphiLSMassLowEta21", "e-h Dphi LS, mass<cut for 2<pt^{asso}<4 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1361   fOutputList->Add(fDphiLSMassLowEta21);
1362   fDphiLSMassLowEta22 = new TH2F("fDphiLSMassLowEta22", "e-h Dphi LS, mass<cut for 4<pt^{asso}<6 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1363   fOutputList->Add(fDphiLSMassLowEta22);
1364   fDphiLSMassLowEta23 = new TH2F("fDphiLSMassLowEta23", "e-h Dphi LS, mass<cut for 6<pt^{asso}<8 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1365   fOutputList->Add(fDphiLSMassLowEta23);
1366   fDphiLSMassLowEta24 = new TH2F("fDphiLSMassLowEta24", "e-h Dphi LS, mass<cut for 4<pt^{asso}<10 for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1367   fOutputList->Add(fDphiLSMassLowEta24);  
1368   fDphiULSMassLowNoPartnerEta2 = new TH2F("fDphiULSMassLowNoPartnerEta2", "e-h Dphi ULS with no partner, mass<mass cut, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1369   fOutputList->Add(fDphiULSMassLowNoPartnerEta2);
1370   fDphiULSMassLowNoPartnerEta21 = new TH2F("fDphiULSMassLowNoPartnerEta21", "e-h Dphi ULS with no partner, mass<mass cut for 2<pt^{asso}<4, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1371   fOutputList->Add(fDphiULSMassLowNoPartnerEta21);
1372   fDphiULSMassLowNoPartnerEta22 = new TH2F("fDphiULSMassLowNoPartnerEta22", "e-h Dphi ULS with no partner, mass<mass cut for 4<pt^{asso}<6, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1373   fOutputList->Add(fDphiULSMassLowNoPartnerEta22);
1374   fDphiULSMassLowNoPartnerEta23 = new TH2F("fDphiULSMassLowNoPartnerEta23", "e-h Dphi ULS with no partner, mass<mass cut for 6<pt^{asso}<8, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1375   fOutputList->Add(fDphiULSMassLowNoPartnerEta23);
1376   fDphiULSMassLowNoPartnerEta24 = new TH2F("fDphiULSMassLowNoPartnerEta24", "e-h Dphi ULS with no partner, mass<mass cut for 4<pt^{asso}<10, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1377   fOutputList->Add(fDphiULSMassLowNoPartnerEta24);
1378   fDphiLSMassLowNoPartnerEta2 = new TH2F("fDphiLSMassLowNoPartnerEta2", "e-h Dphi LS with no partner, mass<mass cut, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1379   fOutputList->Add(fDphiLSMassLowNoPartnerEta2);
1380   fDphiLSMassLowNoPartnerEta21 = new TH2F("fDphiLSMassLowNoPartnerEta21", "e-h Dphi LS with no partner, mass<mass cut for 2<pt^{asso}<4, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);  
1381   fOutputList->Add(fDphiLSMassLowNoPartnerEta21);
1382   fDphiLSMassLowNoPartnerEta22 = new TH2F("fDphiLSMassLowNoPartnerEta22", "e-h Dphi LS with no partner, mass<mass cut for 4<pt^{asso}<6, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1383   fOutputList->Add(fDphiLSMassLowNoPartnerEta22);  
1384   fDphiLSMassLowNoPartnerEta23 = new TH2F("fDphiLSMassLowNoPartnerEta23", "e-h Dphi LS with no partner, mass<mass cut for 6<pt^{asso}<8, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);
1385   fOutputList->Add(fDphiLSMassLowNoPartnerEta23);
1386   fDphiLSMassLowNoPartnerEta24 = new TH2F("fDphiLSMassLowNoPartnerEta24", "e-h Dphi LS with no partner, mass<mass cut for 4<pt^{asso}<10, for |Eta > 0.8|",200,0,20,64,-1.57,4.71);  
1387   fOutputList->Add(fDphiLSMassLowNoPartnerEta24);
1388
1389   /*  fNCellv1 = new TH1F("fNCellv1","Ncell in clus (v1); NCell; count",100,0,100) ;
1390       fOutputList->Add(fNCellv1);
1391
1392       fClsEv1 = new TH1F("fClsEv1", "Clus E(v1); Cls E; count",1000,0,100); 
1393       fOutputList->Add(fClsEv1); 
1394
1395       fNClusv1 = new TH1F("fNClusv1","Nclus in event (v1); NClus; count",500,0,500) ; 
1396       fOutputList->Add(fNClusv1);
1397    */
1398   fInvmassLS1 = new TH1F("fInvmassLS1", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
1399   fOutputList->Add(fInvmassLS1);
1400
1401   fInvmassULS1 = new TH1F("fInvmassULS1", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
1402   fOutputList->Add(fInvmassULS1);
1403   /*
1404      fInvmassLS2 = new TH1F("fInvmassLS2", "Inv mass of LS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0);
1405      fOutputList->Add(fInvmassLS2);
1406
1407      fInvmassULS2 = new TH1F("fInvmassULS2", "Inv mass of ULS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0);
1408      fOutputList->Add(fInvmassULS2);
1409
1410      fInvmassLS3 = new TH1F("fInvmassLS3", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
1411      fOutputList->Add(fInvmassLS3);                                                          
1412
1413      fInvmassULS3 = new TH1F("fInvmassULS3", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
1414      fOutputList->Add(fInvmassULS3);
1415
1416      fInvmassLS4 = new TH1F("fInvmassLS4", "Inv mass of LS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0);
1417      fOutputList->Add(fInvmassLS4);  
1418
1419      fInvmassULS4 = new TH1F("fInvmassULS4", "Inv mass of ULS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0);
1420      fOutputList->Add(fInvmassULS4);
1421
1422      fInvmassLS5 = new TH1F("fInvmassLS5", "Inv mass of LS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0);
1423      fOutputList->Add(fInvmassLS5);  
1424
1425      fInvmassULS5 = new TH1F("fInvmassULS5", "Inv mass of ULS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0);
1426      fOutputList->Add(fInvmassULS5);
1427    */
1428   fNoMixedEvents = new TH1F("fNoMixedEvents","",1,0,1) ;
1429   fOutputList->Add(fNoMixedEvents);
1430
1431   fMixStat = new TH2F("fMixStat","no of events in pool  vs Centrality;Nevent in pool;Centrality",200,0,200,5,0,10);
1432   fOutputList->Add(fMixStat);                                                             
1433
1434   fMixStat1 = new TH2F("fMixStat1","no of events in pool  vs zvtx;Nevents in pool;zvtx",200,0,200,4,-10,10);
1435   fOutputList->Add(fMixStat1);
1436
1437   fMixedIncElecDphi = new TH2F("fMixedIncElecDphi", "Mixed event - Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1438   fOutputList->Add(fMixedIncElecDphi);
1439
1440   fMixedIncElecDphi1 = new TH2F("fMixedIncElecDphi1", "Mixed event - Inclusive elec-had Dphi correlation 2<pt<4",200,0,20,64,-1.57,4.71);
1441   fOutputList->Add(fMixedIncElecDphi1);
1442
1443   fMixedIncElecDphi2 = new TH2F("fMixedIncElecDphi2", "Mixed event - Inclusive elec-had Dphi correlation 4<pt<6",200,0,20,64,-1.57,4.71);
1444   fOutputList->Add(fMixedIncElecDphi2);
1445
1446   fMixedIncElecDphi3 = new TH2F("fMixedIncElecDphi3", "Mixed event - Inclusive elec-had Dphi correlation 6<pt<8",200,0,20,64,-1.57,4.71);
1447   fOutputList->Add(fMixedIncElecDphi3);
1448
1449   fMixedIncElecDphi4 = new TH2F("fMixedIncElecDphi4", "Mixed event - Inclusive elec-had Dphi correlation 4<pt<10",200,0,20,64,-1.57,4.71);
1450   fOutputList->Add(fMixedIncElecDphi4);
1451
1452   fMixedSemiIncElecDphi = new TH2F("fMixedSemiIncElecDphi", "Mixed event - Semi Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1453   fOutputList->Add(fMixedSemiIncElecDphi);
1454
1455   fMixedSemiIncElecDphi1 = new TH2F("fMixedSemiIncElecDphi1", "Mixed event - Semi Inclusive elec-had Dphi correlation 2<pt<4",200,0,20,64,-1.57,4.71);
1456   fOutputList->Add(fMixedSemiIncElecDphi1);
1457
1458   fMixedSemiIncElecDphi2 = new TH2F("fMixedSemiIncElecDphi2", "Mixed event - Semi Inclusive elec-had Dphi correlation 4<pt<6",200,0,20,64,-1.57,4.71);
1459   fOutputList->Add(fMixedSemiIncElecDphi2);
1460
1461   fMixedSemiIncElecDphi3 = new TH2F("fMixedSemiIncElecDphi3", "Mixed event - Semi Inclusive elec-had Dphi correlation 6<pt<8",200,0,20,64,-1.57,4.71);
1462   fOutputList->Add(fMixedSemiIncElecDphi3);
1463
1464   fMixedSemiIncElecDphi4 = new TH2F("fMixedSemiIncElecDphi4", "Mixed event - Semi Inclusive elec-had Dphi correlation 4<pt<10",200,0,20,64,-1.57,4.71);
1465   fOutputList->Add(fMixedSemiIncElecDphi4);
1466
1467   fMixedPhotElecDphi = new TH2F("fMixedPhotElecDphi", "Mixed event - Photo elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1468   fOutputList->Add(fMixedPhotElecDphi);
1469
1470   fMixedPhotElecDphi1 = new TH2F("fMixedPhotElecDphi1", "Mixed event - Photo elec-had Dphi correlation 2<pt<4",200,0,20,64,-1.57,4.71);
1471   fOutputList->Add(fMixedPhotElecDphi1);
1472
1473   fMixedPhotElecDphi2 = new TH2F("fMixedPhotElecDphi2", "Mixed event - Photo elec-had Dphi correlation 4<pt<6",200,0,20,64,-1.57,4.71);
1474   fOutputList->Add(fMixedPhotElecDphi2);
1475
1476   fMixedPhotElecDphi3 = new TH2F("fMixedPhotElecDphi3", "Mixed event - Photo elec-had Dphi correlation 6<pt<8",200,0,20,64,-1.57,4.71);
1477   fOutputList->Add(fMixedPhotElecDphi3);
1478
1479   fMixedPhotElecDphi4 = new TH2F("fMixedPhotElecDphi4", "Mixed event - Photo elec-had Dphi correlation 4<pt<10",200,0,20,64,-1.57,4.71);
1480   fOutputList->Add(fMixedPhotElecDphi4);
1481
1482   fMixedDphiULSMassLow = new TH2F("fMixedDphiULSMassLow", "Mixed event - ULS mass < cut elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1483   fOutputList->Add(fMixedDphiULSMassLow);
1484
1485   fMixedDphiULSMassLow1 = new TH2F("fMixedDphiULSMassLow1", "Mixed event - ULS mass < cut elec-had Dphi correlation 2<pt<4",200,0,20,64,-1.57,4.71);
1486   fOutputList->Add(fMixedDphiULSMassLow1);
1487
1488   fMixedDphiULSMassLow2 = new TH2F("fMixedDphiULSMassLow2", "Mixed event - ULS mass < cut elec-had Dphi correlation 4<pt<6",200,0,20,64,-1.57,4.71);
1489   fOutputList->Add(fMixedDphiULSMassLow2);
1490
1491   fMixedDphiULSMassLow3 = new TH2F("fMixedDphiULSMassLow3", "Mixed event - ULS mass < cut elec-had Dphi correlation 6<pt<8",200,0,20,64,-1.57,4.71);
1492   fOutputList->Add(fMixedDphiULSMassLow3);
1493
1494   fMixedDphiULSMassLow4 = new TH2F("fMixedDphiULSMassLow4", "Mixed event - ULS mass < cut elec-had Dphi correlation 4<pt<10",200,0,20,64,-1.57,4.71);
1495   fOutputList->Add(fMixedDphiULSMassLow4);
1496
1497   fMixedDphiLSMassLow = new TH2F("fMixedDphiLSMassLow", "Mixed event - LS mass < cut elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
1498   fOutputList->Add(fMixedDphiLSMassLow);
1499
1500   fMixedDphiLSMassLow1 = new TH2F("fMixedDphiLSMassLow1", "Mixed event - LS mass < cut elec-had Dphi correlation 2<pt<4",200,0,20,64,-1.57,4.71);
1501   fOutputList->Add(fMixedDphiLSMassLow1);
1502
1503   fMixedDphiLSMassLow2 = new TH2F("fMixedDphiLSMassLow2", "Mixed event - LS mass < cut elec-had Dphi correlation 4<pt<6",200,0,20,64,-1.57,4.71);
1504   fOutputList->Add(fMixedDphiLSMassLow2);
1505
1506   fMixedDphiLSMassLow3 = new TH2F("fMixedDphiLSMassLow3", "Mixed event - LS mass < cut elec-had Dphi correlation 6<pt<8",200,0,20,64,-1.57,4.71);
1507   fOutputList->Add(fMixedDphiLSMassLow3);
1508
1509   fMixedDphiLSMassLow4 = new TH2F("fMixedDphiLSMassLow4", "Mixed event - LS mass < cut elec-had Dphi correlation 4<pt<10",200,0,20,64,-1.57,4.71);
1510   fOutputList->Add(fMixedDphiLSMassLow4);
1511
1512   fHadronPt = new TH1F("fHadronPt","hadron pt distribution",1000,0,100);
1513   fOutputList->Add(fHadronPt);
1514
1515   fCentralityPass = new TH1F("fCentralityPass", "Centrality Pass", 101, -1, 100);
1516   fOutputList->Add(fCentralityPass);
1517
1518   fCentralityNoPass = new TH1F("fCentralityNoPass", "Centrality No Pass", 101, -1, 100);
1519   fOutputList->Add(fCentralityNoPass);
1520
1521   fHadronDphi = new TH2F("fHadronDphi", "Hadron-had Dphi correlation",200,0,20,64,-1.57,4.71);
1522   fOutputList->Add(fHadronDphi);
1523
1524   fHadronDphi1 = new TH2F("fHadronDphi1", "Hadron-had Dphi correlation for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1525   fOutputList->Add(fHadronDphi1);
1526
1527   fHadronDphi2 = new TH2F("fHadronDphi2", "Hadron-had Dphi correlation for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1528   fOutputList->Add(fHadronDphi2);
1529
1530   fHadronDphi3 = new TH2F("fHadronDphi3", "Hadron-had Dphi correlation for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1531   fOutputList->Add(fHadronDphi3);
1532
1533   fHadronDphi4 = new TH2F("fHadronDphi4", "Hadron-had Dphi correlation for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1534   fOutputList->Add(fHadronDphi4);
1535
1536   fPiPt = new TH1F("fPiPt","Pi (-10 <TPC nsig < -3.5) pt distribution",1000,0,100);
1537   fOutputList->Add(fPiPt);
1538
1539   fHadronDphiNoSS = new TH2F("fHadronDphiNoSS", "Hadron-had Dphi correlation (NoSS cuts)",200,0,20,64,-1.57,4.71);
1540   fOutputList->Add(fHadronDphiNoSS);
1541
1542   fHadronDphiNoSS1 = new TH2F("fHadronDphiNoSS1", "Hadron-had Dphi correlation (NoSS cuts) for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
1543   fOutputList->Add(fHadronDphiNoSS1);
1544
1545   fHadronDphiNoSS2 = new TH2F("fHadronDphiNoSS2", "Hadron-had Dphi correlation (NoSS cuts) for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
1546   fOutputList->Add(fHadronDphiNoSS2);
1547
1548   fHadronDphiNoSS3 = new TH2F("fHadronDphiNoSS3", "Hadron-had Dphi correlation (NoSS cuts) for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
1549   fOutputList->Add(fHadronDphiNoSS3);
1550
1551   fHadronDphiNoSS4 = new TH2F("fHadronDphiNoSS4", "Hadron-had Dphi correlation (NoSS cuts) for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
1552   fOutputList->Add(fHadronDphiNoSS4);
1553
1554   fPiPtNoSS = new TH1F("fPiPtNoSS","Pi (-10 <TPC nsig < -3.5) (NoSS cuts) pt distribution",1000,0,100);
1555   fOutputList->Add(fPiPtNoSS);
1556
1557   fEovPWoSS = new TH2F("fEovPWoSS","E/p distribution without SS cuts",1000,0,50,100,0,2);
1558   fOutputList->Add(fEovPWoSS);
1559
1560   fEovPWSS = new TH2F("fEovPWSS","E/p distribution with SS cuts",1000,0,50,100,0,2);
1561   fOutputList->Add(fEovPWSS);
1562
1563   fEovPHadWoSS = new TH2F("fEovPHadWoSS","E/p distribution for hadrons without SS cuts",1000,0,50,100,0,2);
1564   fOutputList->Add(fEovPHadWoSS);
1565
1566   fEovPHadWSS = new TH2F("fEovPHadWSS","E/p distribution for hadrons with SS cuts",1000,0,50,100,0,2);
1567   fOutputList->Add(fEovPHadWSS);
1568
1569   fHadronDphiEta1 = new TH2F("fHadronDphiEta1", "Hadron-had Dphi correlation for |Eta <1|",200,0,20,64,-1.57,4.71);
1570   fOutputList->Add(fHadronDphiEta1);
1571   fHadronDphiEta11 = new TH2F("fHadronDphiEta11", "Hadron-had Dphi correlation for 2<pt^{asso}<4 for |Eta <1|",200,0,20,64,-1.57,4.71);
1572   fOutputList->Add(fHadronDphiEta11);
1573   fHadronDphiEta12 = new TH2F("fHadronDphiEta12", "Hadron-had Dphi correlation for 4<pt^{asso}<6 for |Eta <1|",200,0,20,64,-1.57,4.71);
1574   fOutputList->Add(fHadronDphiEta12);
1575   fHadronDphiEta13 = new TH2F("fHadronDphiEta13", "Hadron-had Dphi correlation for 6<pt^{asso}<8 for |Eta <1|",200,0,20,64,-1.57,4.71);
1576   fOutputList->Add(fHadronDphiEta13);
1577   fHadronDphiEta14 = new TH2F("fHadronDphiEta14", "Hadron-had Dphi correlation for 8<pt^{asso}<10 for |Eta <1|",200,0,20,64,-1.57,4.71);
1578   fOutputList->Add(fHadronDphiEta14);
1579
1580   fHadronDphiNoSSEta1 = new TH2F("fHadronDphiNoSSEta1", "Hadron-had DphiNoSS correlation for |Eta <1|",200,0,20,64,-1.57,4.71);
1581   fOutputList->Add(fHadronDphiNoSSEta1);
1582   fHadronDphiNoSSEta11 = new TH2F("fHadronDphiNoSSEta11", "Hadron-had DphiNoSS correlation for 2<pt^{asso}<4 for |Eta <1|",200,0,20,64,-1.57,4.71);
1583   fOutputList->Add(fHadronDphiNoSSEta11);
1584   fHadronDphiNoSSEta12 = new TH2F("fHadronDphiNoSSEta12", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<6 for |Eta <1|",200,0,20,64,-1.57,4.71);
1585   fOutputList->Add(fHadronDphiNoSSEta12);
1586   fHadronDphiNoSSEta13 = new TH2F("fHadronDphiNoSSEta13", "Hadron-had DphiNoSS correlation for 6<pt^{asso}<8 for |Eta <1|",200,0,20,64,-1.57,4.71);
1587   fOutputList->Add(fHadronDphiNoSSEta13);
1588   fHadronDphiNoSSEta14 = new TH2F("fHadronDphiNoSSEta14", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<10 for |Eta <1|",200,0,20,64,-1.57,4.71);
1589   fOutputList->Add(fHadronDphiNoSSEta14);
1590
1591   fHadronDphiEta2 = new TH2F("fHadronDphiEta2", "Hadron-had Dphi correlation for |Eta >1|",200,0,20,64,-1.57,4.71);
1592   fOutputList->Add(fHadronDphiEta2);
1593   fHadronDphiEta21 = new TH2F("fHadronDphiEta21", "Hadron-had Dphi correlation for 2<pt^{asso}<4 for |Eta >1|",200,0,20,64,-1.57,4.71);
1594   fOutputList->Add(fHadronDphiEta21);
1595   fHadronDphiEta22 = new TH2F("fHadronDphiEta22", "Hadron-had Dphi correlation for 4<pt^{asso}<6 for |Eta >1|",200,0,20,64,-1.57,4.71);
1596   fOutputList->Add(fHadronDphiEta22);
1597   fHadronDphiEta23 = new TH2F("fHadronDphiEta23", "Hadron-had Dphi correlation for 6<pt^{asso}<8 for |Eta >1|",200,0,20,64,-1.57,4.71);
1598   fOutputList->Add(fHadronDphiEta23);
1599   fHadronDphiEta24 = new TH2F("fHadronDphiEta24", "Hadron-had Dphi correlation for 4<pt^{asso}<10 for |Eta >1|",200,0,20,64,-1.57,4.71);
1600   fOutputList->Add(fHadronDphiEta24);
1601
1602   fHadronDphiNoSSEta2 = new TH2F("fHadronDphiNoSSEta2", "Hadron-had DphiNoSS correlation for |Eta >1|",200,0,20,64,-1.57,4.71);
1603   fOutputList->Add(fHadronDphiNoSSEta2);
1604   fHadronDphiNoSSEta21 = new TH2F("fHadronDphiNoSSEta21", "Hadron-had DphiNoSS correlation for 2<pt^{asso}<4 for |Eta >1|",200,0,20,64,-1.57,4.71);
1605   fOutputList->Add(fHadronDphiNoSSEta21);
1606   fHadronDphiNoSSEta22 = new TH2F("fHadronDphiNoSSEta22", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<6 for |Eta >1|",200,0,20,64,-1.57,4.71);
1607   fOutputList->Add(fHadronDphiNoSSEta22);
1608   fHadronDphiNoSSEta23 = new TH2F("fHadronDphiNoSSEta23", "Hadron-had DphiNoSS correlation for 6<pt^{asso}<8 for |Eta >1|",200,0,20,64,-1.57,4.71);
1609   fOutputList->Add(fHadronDphiNoSSEta23);
1610   fHadronDphiNoSSEta24 = new TH2F("fHadronDphiNoSSEta24", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<10 for |Eta >1|",200,0,20,64,-1.57,4.71);
1611   fOutputList->Add(fHadronDphiNoSSEta24);
1612
1613
1614   //  Int_t binsv1[6]={500,200,50,50,50,50}; //pt, TPCnsig, E/p, M20, M02, dispersion 
1615   //  Double_t xminv1[6]={0,-10,0,0,0,0};
1616   //  Double_t xmaxv1[6]={25,10,2,2,2,2};
1617   //  fSparseElectron = new THnSparseD ("Electron","Electron",6,binsv1,xminv1,xmaxv1);
1618   //  fOutputList->Add(fSparseElectron);
1619
1620   PostData(1,fOutputList);
1621 }
1622
1623 //________________________________________________________________________
1624 void AliAnalysisTaskElecHadronCorrel::Terminate(Option_t *)
1625 {
1626   // Info("Terminate");
1627   AliAnalysisTaskSE::Terminate();
1628 }
1629
1630 //________________________________________________________________________
1631 Bool_t AliAnalysisTaskElecHadronCorrel::ProcessCutStep(Int_t cutStep, AliVParticle *track)
1632 {
1633   // Check single track cuts for a given cut step
1634   const Int_t kMCOffset = AliHFEcuts::kNcutStepsMCTrack;
1635   if(!fCFM->CheckParticleCuts(cutStep + kMCOffset, track)) return kFALSE;
1636   return kTRUE;
1637 }
1638
1639 //_________________________________________
1640 void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliVTrack *track, Bool_t &fFlagPhotonicElec)
1641 {
1642   //Identify non-heavy flavour electrons using Invariant mass method
1643
1644   fTrackCuts1->SetAcceptKinkDaughters(kFALSE);
1645   fTrackCuts1->SetRequireTPCRefit(kTRUE);
1646   fTrackCuts1->SetRequireITSRefit(kTRUE);
1647   fTrackCuts1->SetEtaRange(-0.9,0.9);
1648   fTrackCuts1->SetRequireSigmaToVertex(kTRUE);
1649   fTrackCuts1->SetMaxChi2PerClusterTPC(4);
1650   fTrackCuts1->SetMinNClustersTPC(80);
1651   fTrackCuts1->SetMaxDCAToVertexZ(3.2);
1652   fTrackCuts1->SetMaxDCAToVertexXY(2.4);
1653   fTrackCuts1->SetDCAToVertex2D(kTRUE);
1654
1655   Bool_t flagPhotonicElec = kFALSE;
1656
1657   for(Int_t jTracks = 0; jTracks<fVevent->GetNumberOfTracks(); jTracks++){
1658     AliVParticle* VtrackAsso = fVevent->GetTrack(jTracks);
1659     if (!VtrackAsso) {
1660       printf("ERROR: Could not receive track %d\n", jTracks);
1661       continue;
1662     }
1663
1664     AliVTrack *trackAsso = dynamic_cast<AliVTrack*>(VtrackAsso);
1665     if(!trackAsso) continue;
1666
1667     //track cuts applied
1668     if(IsAODanalysis()) { 
1669       AliAODTrack *atrackAsso = dynamic_cast<AliAODTrack*>(VtrackAsso);
1670       if(!atrackAsso) continue;
1671       if(!atrackAsso->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
1672       if(atrackAsso->GetTPCNcls() < 80) continue;
1673       if((!(atrackAsso->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackAsso->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
1674     }
1675     else{
1676       AliESDtrack *etrackAsso = dynamic_cast<AliESDtrack*>(VtrackAsso);
1677       if(!etrackAsso) continue;
1678       if(!fTrackCuts1->AcceptTrack(etrackAsso)) continue;
1679     }
1680
1681     if(jTracks==itrack) continue;
1682
1683     Double_t dEdxAsso = -999., ptAsso=-999., nsigma=-999.0;
1684     Double_t mass=-999., width = -999;
1685     Bool_t fFlagLS=kFALSE, fFlagULS=kFALSE;
1686
1687     dEdxAsso = trackAsso->GetTPCsignal();
1688     nsigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(trackAsso, AliPID::kElectron) : 1000;
1689     ptAsso = trackAsso->Pt();
1690     Int_t chargeAsso = trackAsso->Charge();
1691     Int_t charge = track->Charge();
1692
1693     if(ptAsso <0.3) continue;
1694     if(trackAsso->Eta()<-0.9 || trackAsso->Eta()>0.9) continue;
1695     if(nsigma < -3 || nsigma > 3) continue;
1696
1697     Int_t fPDGe1 = 11; Int_t fPDGe2 = 11;
1698     if(charge>0) fPDGe1 = -11;
1699     if(chargeAsso>0) fPDGe2 = -11;
1700
1701     if(charge == chargeAsso) fFlagLS = kTRUE;
1702     if(charge != chargeAsso) fFlagULS = kTRUE;
1703
1704     AliKFParticle ge1 = AliKFParticle(*track, fPDGe1);
1705     AliKFParticle ge2 = AliKFParticle(*trackAsso, fPDGe2);
1706     AliKFParticle recg(ge1, ge2);
1707
1708     if(recg.GetNDF()<1) continue;
1709     Double_t chi2recg = recg.GetChi2()/recg.GetNDF();
1710     if(TMath::Sqrt(TMath::Abs(chi2recg))>3.) continue;
1711
1712     Int_t MassCorrect;
1713     MassCorrect = recg.GetMass(mass,width);
1714
1715     if(fFlagLS) {
1716       if(track->Pt()>2)fInvmassLS1->Fill(mass);
1717       // if(track->Pt()> 1) fInvmassLS2->Fill(mass);
1718       // if(track->Pt()>2) fInvmassLS3->Fill(mass);
1719       // if(track->Pt()>3) fInvmassLS4->Fill(mass);
1720       // if(track->Pt()>4) fInvmassLS5->Fill(mass);
1721     }
1722     if(fFlagULS) {
1723       if(track->Pt()>2)fInvmassULS1->Fill(mass);
1724       //if(track->Pt() >1) fInvmassULS2->Fill(mass);
1725       //if(track->Pt() >2) fInvmassULS3->Fill(mass);
1726       //if(track->Pt() >3) fInvmassULS4->Fill(mass);
1727       //if(track->Pt() >4) fInvmassULS5->Fill(mass);
1728     }
1729
1730     if(mass<fInvmassCut){
1731       if(fFlagULS)
1732       {
1733         ElectronHadCorrel(itrack,track,fDphiULSMassLow, fDphiULSMassLow1,fDphiULSMassLow2,fDphiULSMassLow3,fDphiULSMassLow4);
1734         ElectronHadCorrelEtaBins(itrack,track,fDphiULSMassLowEta1, fDphiULSMassLowEta11,fDphiULSMassLowEta12,fDphiULSMassLowEta13,fDphiULSMassLowEta14,fDphiULSMassLowEta2, fDphiULSMassLowEta21,fDphiULSMassLowEta22,fDphiULSMassLowEta23,fDphiULSMassLowEta24);
1735         fULSElecPt->Fill(track->Pt());
1736         MixedEvent(track,fMixedDphiULSMassLow,fMixedDphiULSMassLow1,fMixedDphiULSMassLow2, fMixedDphiULSMassLow3, fMixedDphiULSMassLow4);
1737       }
1738       if(fFlagLS)
1739       {
1740         ElectronHadCorrel(itrack,track,fDphiLSMassLow,fDphiLSMassLow1,fDphiLSMassLow2,fDphiLSMassLow3,fDphiLSMassLow4);
1741         ElectronHadCorrelEtaBins(itrack,track,fDphiLSMassLowEta1, fDphiLSMassLowEta11,fDphiLSMassLowEta12,fDphiLSMassLowEta13,fDphiLSMassLowEta14,fDphiLSMassLowEta2, fDphiLSMassLowEta21,fDphiLSMassLowEta22,fDphiLSMassLowEta23,fDphiLSMassLowEta24);
1742         fLSElecPt->Fill(track->Pt());
1743         MixedEvent(track,fMixedDphiLSMassLow,fMixedDphiLSMassLow1,fMixedDphiLSMassLow2, fMixedDphiLSMassLow3, fMixedDphiLSMassLow4);
1744       }
1745       if(fFlagLS){
1746         ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiLSMassLowNoPartner, fDphiLSMassLowNoPartner1,fDphiLSMassLowNoPartner2,fDphiLSMassLowNoPartner3,fDphiLSMassLowNoPartner4);
1747         ElectronHadCorrelEtaBinsNoPartner(itrack,jTracks,track,fDphiLSMassLowNoPartnerEta1, fDphiLSMassLowNoPartnerEta11,fDphiLSMassLowNoPartnerEta12,fDphiLSMassLowNoPartnerEta13,fDphiLSMassLowNoPartnerEta14,fDphiLSMassLowNoPartnerEta2, fDphiLSMassLowNoPartnerEta21,fDphiLSMassLowNoPartnerEta22,fDphiLSMassLowNoPartnerEta23,fDphiLSMassLowNoPartnerEta24);
1748       }
1749       if(fFlagULS) {
1750         ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiULSMassLowNoPartner, fDphiULSMassLowNoPartner1,fDphiULSMassLowNoPartner2,fDphiULSMassLowNoPartner3,fDphiULSMassLowNoPartner4);
1751         ElectronHadCorrelEtaBinsNoPartner(itrack,jTracks,track,fDphiULSMassLowNoPartnerEta1, fDphiULSMassLowNoPartnerEta11,fDphiULSMassLowNoPartnerEta12,fDphiULSMassLowNoPartnerEta13,fDphiULSMassLowNoPartnerEta14,fDphiULSMassLowNoPartnerEta2, fDphiULSMassLowNoPartnerEta21,fDphiULSMassLowNoPartnerEta22,fDphiULSMassLowNoPartnerEta23,fDphiULSMassLowNoPartnerEta24);
1752       }
1753     }
1754
1755     if(mass<fInvmassCut && fFlagULS && !flagPhotonicElec){
1756       flagPhotonicElec = kTRUE;
1757     }
1758     //   }
1759
1760 }
1761 fFlagPhotonicElec = flagPhotonicElec;
1762 }
1763 //_________________________________________
1764 void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrel(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4)
1765 {
1766   //Construct Delta Phi between electrons and hadrons
1767
1768   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
1769   fTrackCuts2->SetRequireTPCRefit(kTRUE);
1770   fTrackCuts2->SetRequireITSRefit(kTRUE);
1771   fTrackCuts2->SetEtaRange(-0.9,0.9);
1772   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
1773   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
1774   fTrackCuts2->SetMinNClustersTPC(80);
1775   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
1776   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
1777   fTrackCuts2->SetDCAToVertex2D(kTRUE);
1778
1779   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
1780     AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
1781     if (!VtrackHad) {
1782       printf("ERROR: Could not receive track %d\n", ktracks);
1783       continue;
1784     }
1785
1786     AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
1787       if(!trackHad) continue;
1788
1789     if(IsAODanalysis()) {
1790       AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
1791       if(!atrackHad) continue;
1792       if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
1793       if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
1794       if(atrackHad->GetTPCNcls() < 80) continue; 
1795     }
1796     else{   
1797       AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); 
1798       if(!etrackHad) continue;
1799       if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; 
1800     }
1801
1802     if(ktracks == itrack) continue; //do not select the same electron
1803
1804     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
1805     Double_t ptEle = -999;
1806     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
1807     Double_t pi = 3.14;
1808
1809     dEdxHad = trackHad->GetTPCsignal();
1810     ptHad = trackHad->Pt();
1811     pHad = trackHad->P();
1812     ptEle = track->Pt();
1813
1814     //    if(ptHad <2) continue;
1815     if(ptHad > ptEle) continue;
1816     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
1817
1818     phiEle = track->Phi();
1819     phiHad = trackHad->Phi();
1820     Dphi = phiEle - phiHad;
1821     if (Dphi > 3*pi/2)
1822       Dphi = Dphi - 2*pi;
1823     if (Dphi < -pi/2)
1824       Dphi = Dphi + 2*pi;
1825
1826     if(ptHad>2) DphiPt->Fill(ptEle,Dphi);
1827     if(ptHad>2 && ptHad<4) DphiPt1->Fill(ptEle,Dphi);
1828     if(ptHad>4 && ptHad<6) DphiPt2->Fill(ptEle,Dphi);
1829     if(ptHad>6 && ptHad<8) DphiPt3->Fill(ptEle,Dphi);
1830     if(ptHad>4 && ptHad<10) DphiPt4->Fill(ptEle,Dphi);
1831
1832   }
1833 }
1834 //_________________________________________
1835 void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtNew, TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4)
1836 {
1837   //Construct Delta Phi between electrons and hadrons for electrons from invariant mass calculation excluding associated track
1838
1839   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
1840   fTrackCuts2->SetRequireTPCRefit(kTRUE);
1841   fTrackCuts2->SetRequireITSRefit(kTRUE);
1842   fTrackCuts2->SetEtaRange(-0.9,0.9);
1843   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
1844   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
1845   fTrackCuts2->SetMinNClustersTPC(80);
1846   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
1847   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
1848   fTrackCuts2->SetDCAToVertex2D(kTRUE);
1849
1850   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
1851     AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
1852     if (!VtrackHad) {
1853       printf("ERROR: Could not receive track %d\n", ktracks);
1854       continue;
1855     }
1856
1857     AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
1858       if(!trackHad) continue;
1859
1860     if(IsAODanalysis()) {
1861       AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
1862       if(!atrackHad) continue;
1863       if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
1864       if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
1865       if(atrackHad->GetTPCNcls() < 80) continue; 
1866     }
1867     else{   
1868       AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); 
1869       if(!etrackHad) continue;
1870       if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; 
1871     }
1872
1873     if(ktracks == itrack || ktracks == jtrack) continue; //do not select the same electron and associated track from inv mass cal
1874
1875     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
1876     Double_t ptEle = -999;
1877     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
1878     Double_t pi = 3.14;
1879
1880     dEdxHad = trackHad->GetTPCsignal();
1881     ptHad = trackHad->Pt();
1882     pHad = trackHad->P();
1883     ptEle = track->Pt();
1884
1885     //    if(ptHad <2) continue;
1886     if(ptHad > ptEle) continue;
1887     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
1888
1889     phiEle = track->Phi();
1890     phiHad = trackHad->Phi();
1891     Dphi = phiEle - phiHad;
1892     if (Dphi > 3*pi/2)
1893       Dphi = Dphi - 2*pi;
1894     if (Dphi < -pi/2)
1895       Dphi = Dphi + 2*pi;
1896
1897     if(ptHad>2) DphiPtNew->Fill(ptEle,Dphi);
1898     if(ptHad>2 && ptHad<4) DphiPtNew1->Fill(ptEle,Dphi);
1899     if(ptHad>4 && ptHad<6) DphiPtNew2->Fill(ptEle,Dphi);
1900     if(ptHad>6 && ptHad<8) DphiPtNew3->Fill(ptEle,Dphi);
1901     if(ptHad>4 && ptHad<10) DphiPtNew4->Fill(ptEle,Dphi);
1902   }
1903 }
1904 //_________________________________________
1905 void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelEtaFarSide(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4)
1906 {
1907   //Construct Delta Phi between electrons and hadrons for 1<eta(had)<1.6
1908
1909   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
1910   fTrackCuts2->SetRequireTPCRefit(kTRUE);
1911   fTrackCuts2->SetRequireITSRefit(kTRUE);
1912   fTrackCuts2->SetEtaRange(-0.9,0.9);
1913   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
1914   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
1915   fTrackCuts2->SetMinNClustersTPC(80);
1916   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
1917   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
1918   fTrackCuts2->SetDCAToVertex2D(kTRUE);
1919
1920   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
1921     AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
1922     if (!VtrackHad) {
1923       printf("ERROR: Could not receive track %d\n", ktracks);
1924       continue;
1925     }
1926     AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
1927       if(!trackHad) continue;
1928
1929     if(IsAODanalysis()) {
1930       AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
1931       if(!atrackHad) continue;
1932       if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
1933       if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
1934       if(atrackHad->GetTPCNcls() < 80) continue;
1935     }
1936     else{
1937       AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
1938       if(!etrackHad) continue;
1939       if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
1940     }
1941
1942     if(ktracks == itrack) continue; //do not select the same electron
1943
1944     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
1945     Double_t ptEle = -999;
1946     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
1947     Double_t pi = 3.14;
1948
1949     dEdxHad = trackHad->GetTPCsignal();
1950     ptHad = trackHad->Pt();
1951     pHad = trackHad->P();
1952     ptEle = track->Pt();
1953
1954     //    if(ptHad <2) continue;
1955     if(ptHad > ptEle) continue;
1956     if(trackHad->Eta()<1 || trackHad->Eta()>1.6) continue;
1957
1958     phiEle = track->Phi();
1959     phiHad = trackHad->Phi();
1960     Dphi = phiEle - phiHad;
1961     if (Dphi > 3*pi/2)
1962       Dphi = Dphi - 2*pi;
1963     if (Dphi < -pi/2)
1964       Dphi = Dphi + 2*pi;
1965
1966     if(ptHad>2) DphiPt->Fill(ptEle,Dphi);
1967     if(ptHad>2 && ptHad<4) DphiPt1->Fill(ptEle,Dphi);
1968     if(ptHad>4 && ptHad<6) DphiPt2->Fill(ptEle,Dphi);
1969     if(ptHad>6 && ptHad<8) DphiPt3->Fill(ptEle,Dphi);
1970     if(ptHad>4 && ptHad<10) DphiPt4->Fill(ptEle,Dphi);
1971
1972   }
1973 }
1974 //_________________________________________
1975 void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelEtaBins(Int_t itrack, AliVTrack *track, TH2F *DphiPtEta1, TH2F *DphiPtEta11,TH2F *DphiPtEta12,TH2F *DphiPtEta13,TH2F *DphiPtEta14,TH2F *DphiPtEta2, TH2F *DphiPtEta21,TH2F *DphiPtEta22,TH2F *DphiPtEta23,TH2F *DphiPtEta24)
1976 {
1977   //Construct Delta Phi between electrons and hadrons in different Eta bins
1978
1979   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
1980   fTrackCuts2->SetRequireTPCRefit(kTRUE);
1981   fTrackCuts2->SetRequireITSRefit(kTRUE);
1982   fTrackCuts2->SetEtaRange(-0.9,0.9);
1983   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
1984   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
1985   fTrackCuts2->SetMinNClustersTPC(80);
1986   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
1987   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
1988   fTrackCuts2->SetDCAToVertex2D(kTRUE);
1989
1990   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
1991     AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
1992     if (!VtrackHad) {
1993       printf("ERROR: Could not receive track %d\n", ktracks);
1994       continue;
1995     }
1996
1997     AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
1998       if(!trackHad) continue;
1999
2000     if(IsAODanalysis()) {
2001       AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
2002       if(!atrackHad) continue;
2003       if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
2004       if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
2005       if(atrackHad->GetTPCNcls() < 80) continue;
2006     }
2007     else{
2008       AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
2009       if(!etrackHad) continue;
2010       if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
2011     }
2012
2013     if(ktracks == itrack) continue; //do not select the same electron
2014
2015     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
2016     Double_t ptEle = -999;
2017     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
2018     Double_t etaEle = -999, etaHad=-999, DEta=-999;
2019     Double_t pi = 3.14;
2020
2021     dEdxHad = trackHad->GetTPCsignal();
2022     ptHad = trackHad->Pt();
2023     pHad = trackHad->P();
2024     ptEle = track->Pt();
2025
2026     //    if(ptHad <2) continue;
2027     if(ptHad > ptEle) continue;
2028     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
2029
2030     phiEle = track->Phi();
2031     phiHad = trackHad->Phi();
2032     Dphi = phiEle - phiHad;
2033
2034     if (Dphi > 3*pi/2)
2035       Dphi = Dphi - 2*pi;
2036     if (Dphi < -pi/2)
2037       Dphi = Dphi + 2*pi;
2038
2039     etaEle = track->Eta();
2040     etaHad = trackHad->Eta();
2041     DEta = etaEle - etaHad;
2042
2043     if(TMath::Abs(DEta)<0.8){
2044       if(ptHad>2) DphiPtEta1->Fill(ptEle,Dphi);
2045       if(ptHad>2 && ptHad<4) DphiPtEta11->Fill(ptEle,Dphi);
2046       if(ptHad>4 && ptHad<6) DphiPtEta12->Fill(ptEle,Dphi);
2047       if(ptHad>6 && ptHad<8) DphiPtEta13->Fill(ptEle,Dphi);
2048       if(ptHad>4 && ptHad<10) DphiPtEta14->Fill(ptEle,Dphi);
2049     }
2050
2051     if(TMath::Abs(DEta)>0.8){
2052       if(ptHad>2) DphiPtEta2->Fill(ptEle,Dphi);
2053       if(ptHad>2 && ptHad<4) DphiPtEta21->Fill(ptEle,Dphi);
2054       if(ptHad>4 && ptHad<6) DphiPtEta22->Fill(ptEle,Dphi);
2055       if(ptHad>6 && ptHad<8) DphiPtEta23->Fill(ptEle,Dphi);
2056       if(ptHad>4 && ptHad<10) DphiPtEta24->Fill(ptEle,Dphi);
2057     }
2058   }
2059 }
2060 //_________________________________________
2061 void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelEtaBinsNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtEta1, TH2F *DphiPtEta11,TH2F *DphiPtEta12,TH2F *DphiPtEta13,TH2F *DphiPtEta14,TH2F *DphiPtEta2, TH2F *DphiPtEta21,TH2F *DphiPtEta22,TH2F *DphiPtEta23,TH2F *DphiPtEta24)
2062 {
2063   //Construct Delta Phi between electrons and hadrons in different Eta bins (exclude associated track)
2064
2065   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
2066   fTrackCuts2->SetRequireTPCRefit(kTRUE);
2067   fTrackCuts2->SetRequireITSRefit(kTRUE);
2068   fTrackCuts2->SetEtaRange(-0.9,0.9);
2069   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
2070   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
2071   fTrackCuts2->SetMinNClustersTPC(80);
2072   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
2073   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
2074   fTrackCuts2->SetDCAToVertex2D(kTRUE);
2075
2076   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
2077     AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
2078     if (!VtrackHad) {
2079       printf("ERROR: Could not receive track %d\n", ktracks);
2080       continue;
2081     }
2082
2083     AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
2084       if(!trackHad) continue;
2085
2086     if(IsAODanalysis()) {
2087       AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
2088       if(!atrackHad) continue;
2089       if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
2090       if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
2091       if(atrackHad->GetTPCNcls() < 80) continue;
2092     }
2093     else{
2094       AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
2095       if(!etrackHad) continue;
2096       if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
2097     }
2098
2099     if(ktracks == itrack || ktracks == jtrack) continue; //do not select the same electron and associated track from inv mass cal
2100
2101     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
2102     Double_t ptEle = -999;
2103     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
2104     Double_t etaEle = -999, etaHad=-999, DEta=-999;
2105     Double_t pi = 3.14;
2106
2107     dEdxHad = trackHad->GetTPCsignal();
2108     ptHad = trackHad->Pt();
2109     pHad = trackHad->P();
2110     ptEle = track->Pt();
2111
2112     //    if(ptHad <2) continue;
2113     if(ptHad > ptEle) continue;
2114     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
2115
2116     phiEle = track->Phi();
2117     phiHad = trackHad->Phi();
2118     Dphi = phiEle - phiHad;
2119
2120     if (Dphi > 3*pi/2)
2121       Dphi = Dphi - 2*pi;
2122     if (Dphi < -pi/2)
2123       Dphi = Dphi + 2*pi;
2124
2125     etaEle = track->Eta();
2126     etaHad = trackHad->Eta();
2127     DEta = etaEle - etaHad;
2128
2129     if(TMath::Abs(DEta)<0.8){
2130       if(ptHad>2) DphiPtEta1->Fill(ptEle,Dphi);
2131       if(ptHad>2 && ptHad<4) DphiPtEta11->Fill(ptEle,Dphi);
2132       if(ptHad>4 && ptHad<6) DphiPtEta12->Fill(ptEle,Dphi);
2133       if(ptHad>6 && ptHad<8) DphiPtEta13->Fill(ptEle,Dphi);
2134       if(ptHad>4 && ptHad<10) DphiPtEta14->Fill(ptEle,Dphi);
2135     }
2136
2137     if(TMath::Abs(DEta)>0.8){
2138       if(ptHad>2) DphiPtEta2->Fill(ptEle,Dphi);
2139       if(ptHad>2 && ptHad<4) DphiPtEta21->Fill(ptEle,Dphi);
2140       if(ptHad>4 && ptHad<6) DphiPtEta22->Fill(ptEle,Dphi);
2141       if(ptHad>6 && ptHad<8) DphiPtEta23->Fill(ptEle,Dphi);
2142       if(ptHad>4 && ptHad<10) DphiPtEta24->Fill(ptEle,Dphi);
2143     }
2144   }
2145 }
2146
2147 //_________________________________________
2148 void AliAnalysisTaskElecHadronCorrel::MixedEvent(AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2, TH2F *DphiPt3, TH2F *DphiPt4)
2149 {
2150
2151   const AliAODVertex *pVtx = fAOD->GetPrimaryVertex();
2152   Double_t zVtx;
2153   zVtx = pVtx->GetZ();
2154
2155   AliCentrality *fCentrality1 = (AliCentrality*)fVevent->GetCentrality();
2156   Double_t centvalue = fCentrality1->GetCentralityPercentile("V0M");
2157
2158   AliEventPool* pool;
2159   pool = fPoolMgr->GetEventPool(centvalue, zVtx); // Get the buffer associated with the current centrality and z-vtx
2160   if (!pool)
2161   {
2162     AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue, zVtx));
2163     return;
2164   }
2165   //  pool->PrintInfo();
2166   if (pool->GetCurrentNEvents() >= 5) // start mixing when 5 events are in the buffer
2167   {
2168     Int_t nMix = pool->GetCurrentNEvents();
2169     fNoMixedEvents->Fill(0);
2170     fMixStat->Fill(pool->GetCurrentNEvents(),centvalue);
2171     fMixStat1->Fill(pool->GetCurrentNEvents(),zVtx);
2172
2173     // cout << "nMix = " << nMix << " tracks in pool = " << pool->NTracksInPool() << endl;
2174     for (Int_t jMix=0; jMix<nMix; jMix++)  // mix with each event in the buffer
2175     {
2176       TObjArray* bgTracks = pool->GetEvent(jMix);
2177       for (Int_t i=0;i<bgTracks->GetEntriesFast(); i++)
2178       {
2179         AliVParticle* mixtrk = (AliVParticle*) bgTracks->At(i);
2180
2181         Double_t mixtrkPhi = -999;
2182         Double_t ptEle = -999;
2183         Double_t phiEle = -999, Dphi = -999;
2184         Double_t pi = 3.14;
2185         Double_t ptmixtrk = -999;
2186
2187         ptEle = track->Pt();
2188         ptmixtrk = mixtrk->Pt();
2189         if(ptmixtrk > ptEle) continue;
2190
2191         mixtrkPhi = mixtrk->Phi();
2192         phiEle = track->Phi();
2193         Dphi = phiEle - mixtrkPhi;
2194
2195         if (Dphi > 3*pi/2)
2196           Dphi = Dphi - 2*pi;
2197         if (Dphi < -pi/2)
2198           Dphi = Dphi + 2*pi;
2199         if(ptmixtrk>2) DphiPt->Fill(ptEle,Dphi);
2200         if(ptmixtrk>2 && ptmixtrk<4) DphiPt1->Fill(ptEle,Dphi);
2201         if(ptmixtrk>4 && ptmixtrk<6) DphiPt2->Fill(ptEle,Dphi);
2202         if(ptmixtrk>6 && ptmixtrk<8) DphiPt3->Fill(ptEle,Dphi);
2203         if(ptmixtrk>4 && ptmixtrk<10) DphiPt4->Fill(ptEle,Dphi);
2204       }
2205     }
2206   }
2207 }
2208
2209 //___________________________________________
2210 TObjArray*  AliAnalysisTaskElecHadronCorrel::CloneAndReduceTrackList()
2211 {
2212   // clones a track list by using AliehDPhiBasicParticle which uses much less memory (used for event mixing)
2213
2214   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
2215   fTrackCuts2->SetRequireTPCRefit(kTRUE);
2216   fTrackCuts2->SetRequireITSRefit(kTRUE);
2217   fTrackCuts2->SetEtaRange(-0.9,0.9);
2218   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
2219   fTrackCuts2->SetMaxChi2PerClusterTPC(3.5);
2220   fTrackCuts2->SetMinNClustersTPC(80);
2221   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
2222   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
2223   fTrackCuts2->SetDCAToVertex2D(kTRUE);
2224
2225   TObjArray* tracksClone = new TObjArray;
2226   tracksClone->SetOwner(kTRUE);
2227
2228   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
2229     AliVParticle* Vtrack = fVevent->GetTrack(ktracks);
2230     if (!Vtrack) {
2231       printf("ERROR: Could not receive track %d\n", ktracks);
2232       continue;
2233     }
2234
2235     AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack);
2236       if(!track) continue;
2237
2238     if(IsAODanalysis()) {
2239       AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
2240       if(!atrack) continue;
2241       if(!atrack->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
2242       if((!(atrack->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrack->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
2243       if(atrack->GetTPCNcls() < 80) continue;
2244     }
2245     else{
2246       AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack);
2247       if(!etrack) continue;
2248       if(!fTrackCuts2->AcceptTrack(etrack)) continue;
2249     }
2250
2251     //   if(ktracks == iTrack) continue;
2252     Double_t eta=-999,ptHad= -999, pHad=-999., phi=-999.0;
2253     Int_t label=-9999, id=-999;
2254     eta = track->Eta();
2255     ptHad = track->Pt();
2256     pHad = track->P();
2257     phi= track->Phi();
2258     label= track->GetLabel();
2259     id=track->GetID();
2260
2261     if(track->Eta()<-0.9 || track->Eta()>0.9) continue;
2262     if(ptHad <2) continue;
2263
2264     AliVParticle* particle = (AliVParticle*) fVevent->GetTrack(ktracks);
2265     tracksClone->Add(new AliehDPhiBasicParticle(particle->Eta(), particle->Phi(), particle->Pt(), particle->Charge()));
2266
2267   }
2268   return tracksClone;
2269 }
2270
2271 //___________________________________________
2272 void AliAnalysisTaskElecHadronCorrel::HadronInfo(Int_t itrack)
2273 {
2274   //Hadron information
2275
2276   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);                                           
2277   fTrackCuts2->SetRequireTPCRefit(kTRUE);                                                
2278   fTrackCuts2->SetRequireITSRefit(kTRUE);                                                
2279   fTrackCuts2->SetEtaRange(-0.9,0.9);
2280   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);                                           
2281   fTrackCuts2->SetMaxChi2PerClusterTPC(4);                                             
2282   fTrackCuts2->SetMinNClustersTPC(80);                                                   
2283   fTrackCuts2->SetMaxDCAToVertexZ(3.2);
2284   fTrackCuts2->SetMaxDCAToVertexXY(2.4);
2285   fTrackCuts2->SetDCAToVertex2D(kTRUE);
2286
2287   for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){                  
2288     AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);                                     
2289     if (!VtrackHad) {
2290       printf("ERROR: Could not receive track %d\n", ktracks);                            
2291       continue;                                                                          
2292     }
2293
2294     AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
2295       if(!trackHad) continue;
2296
2297     if(IsAODanalysis()) {
2298       AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
2299       if(!atrackHad) continue;
2300       if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
2301       if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
2302       if(atrackHad->GetTPCNcls() < 80) continue; 
2303     }
2304     else{   
2305       AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); 
2306       if(!etrackHad) continue;
2307       if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; 
2308     }
2309
2310     if(ktracks == itrack) continue; //do not select the same electron
2311
2312     Double_t ptHad= -999;
2313     ptHad = trackHad->Pt();
2314
2315     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
2316     // cout << "pt had = " << ptHad <<endl;
2317
2318     if(ptHad<2) continue;
2319
2320     fHadronPhi->Fill(trackHad->Phi());
2321     fHadronPhiPt->Fill(trackHad->Phi(),ptHad);
2322     if (trackHad->Eta() >0 && trackHad->Eta() <0.9) fHadronPhiTPChalf->Fill(trackHad->Phi());
2323
2324     fHadronPt->Fill(ptHad);
2325   }
2326 }
2327 //_________________________________________
2328 void AliAnalysisTaskElecHadronCorrel::CheckCentrality(AliVEvent* event, Bool_t &centralitypass)
2329 {
2330   // Check if event is within the set centrality range. Falls back to V0 centrality determination if no method is set
2331   if (!fkCentralityMethod) AliFatal("No centrality method set! FATAL ERROR!");
2332   fCentrality = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethod);
2333   // cout << "Centrality evaluated-------------------------: " << fCentrality <<endl;
2334
2335   if ((fCentrality <= fCentralityMin) || (fCentrality > fCentralityMax))
2336   {
2337     fCentralityNoPass->Fill(fCentrality);
2338     //  cout << "--------------Fill no pass-------------------------"<<endl;
2339     centralitypass = kFALSE;
2340   }else
2341   {
2342     fCentralityPass->Fill(fCentrality);
2343     //  cout << "--------------Fill pass-------------------------"<<endl;
2344     centralitypass = kTRUE;
2345   }
2346
2347 }
2348 //_____________________________________________________________________________
2349 void AliAnalysisTaskElecHadronCorrel::SetCentralityParameters(Double_t CentralityMin, Double_t CentralityMax, const char* CentralityMethod)
2350 {
2351   // Set a centrality range ]min, max] and define the method to use for centrality selection
2352   fCentralityMin = CentralityMin;
2353   fCentralityMax = CentralityMax;
2354   fkCentralityMethod = CentralityMethod;
2355 }