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