]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGHF/hfe/AliAnalysisTaskElecHadronCorrel.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskElecHadronCorrel.cxx
index 7ec53dd6280fe1b5488f440e3c3108ca1d949c7c..920b2b0cc0c9623f15ae6cd6ed5008fc3b153542 100644 (file)
@@ -38,7 +38,6 @@
 #include "AliAnalysisTask.h"
 #include "AliAnalysisManager.h"
 
-#include "AliLog.h"
 #include "AliESDEvent.h"
 #include "AliESDHandler.h"
 #include "AliAODEvent.h"
 #include "AliAnalysisTaskSE.h"
 #include "TRefArray.h"
 #include "TVector.h"
+
 #include "AliESDInputHandler.h"
+#include "AliAODInputHandler.h"
 #include "AliESDpid.h"
+#include "AliAODPid.h"
 #include "AliESDtrackCuts.h"
 #include "AliPhysicsSelection.h"
+#include "AliCentralitySelectionTask.h"
 #include "AliESDCaloCluster.h"
 #include "AliAODCaloCluster.h"
 #include "AliESDCaloTrigger.h"
 #include "iostream"
 #include "fstream"
 
-//#include "AliEventPoolManager.h"
+#include "AliEventPoolManager.h"
 
 #include "AliCentrality.h"
-//#include "AliEMCALTrack.h"
-//#include "AliEMCALTracker.h"
 #include "AliMagF.h"
 
 #include "AliKFParticle.h"
 #include "AliKFVertex.h"
+#include "AliSelectNonHFE.h"
 
 #include "AliPID.h"
 #include "AliPIDResponse.h"
 #include "AliHFEtools.h"
 #include "AliCFContainer.h"
 #include "AliCFManager.h"
-
-ClassImp(AliAnalysisTaskElecHadronCorrel)
-//ClassImp(AliehDPhiBasicParticle)  
-//________________________________________________________________________
+#include "AliVEvent.h"
+#include "AliStack.h"
+#include "AliMCEvent.h"
+#include "TProfile.h"
+#include "AliESDVZERO.h"
+#include "AliAODVZERO.h"
+#include "TVector3.h"
+#include "TRandom2.h"
+
+  ClassImp(AliAnalysisTaskElecHadronCorrel)
+ClassImp(AliehDPhiBasicParticle)  
+  //________________________________________________________________________
   AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel(const char *name) 
   : AliAnalysisTaskSE(name)
+  ,fVevent(0)  
   ,fESD(0)
+  ,fAOD(0)
   ,fGeom(0)
+  ,fpidResponse(0)
   ,fOutputList(0)
   ,fTrackCuts1(new AliESDtrackCuts)
   ,fTrackCuts2(new AliESDtrackCuts)
@@ -104,25 +117,36 @@ ClassImp(AliAnalysisTaskElecHadronCorrel)
   ,fCFM(0)     
   ,fPID(0)
   ,fPIDqa(0)          
-  ,fOpeningAngleCut(0.1)
   ,fInvmassCut(0.01)   
   ,fCentrality(0)
   ,fCentralityMin(0)
   ,fCentralityMax(0)
   ,fkCentralityMethod(0)  
-//  ,fPoolMgr(0x0)  
-  ,fNoEvents(0)
-//  ,fTrkpt(0)
-  ,fTrkEovPBef(0)       
-  ,fTrkEovPBefHad(0)    
-/*  ,fTrkEovPAft(0)    
-  ,fTrkEovPAftOwn(0)   
-  ,fdEdxBef(0)  
-  ,fdEdxAft(0)  
-  ,fdEdxAftOwn(0)       
-  ,fOpeningAngleLS(0)  
-  ,fOpeningAngleULS(0) 
-*/  ,fSemiIncElecDphi(0)       
+  ,fTPCnsigEleMin(-2)                                                          
+  ,fTPCnsigEleMax(2)                                                          
+  ,fTPCnsigHadMin(-10)                                                          
+  ,fTPCnsigHadMax(-3.5)                                                          
+  ,fM02CutMin(0.03)                                                              
+  ,fM02CutMax(0.5)                                                              
+  ,fM20CutMin(0.03)                                                              
+  ,fM20CutMax(0.3)
+  ,fDispCutMin(0)                                                             
+  ,fDispCutMax(1)                                                             
+  ,fEovPMin(0.8)                                                                
+  ,fEovPMax(1.2)
+  ,fTriggerCentral(kTRUE) 
+  ,fTriggerMB(kTRUE) 
+  ,fTPCNClsHad(80)  
+  ,fAssoEleITSref(kTRUE)  
+  ,fAssoElecTPCNCls(80)  
+  ,fNonHFE(0)  
+  ,fPoolMgr(0x0)  
+    ,fNoEvents(0)
+    //  ,fTrkpt(0)
+    ,fTrkEovPAft(0)     
+    //  ,fTrkEovPBefHad(0)      
+    // ,fdEdxBef(0)     
+  ,fSemiIncElecDphi(0)         
   ,fSemiIncElecDphi1(0)        
   ,fSemiIncElecDphi2(0)        
   ,fSemiIncElecDphi3(0)        
@@ -137,6 +161,11 @@ ClassImp(AliAnalysisTaskElecHadronCorrel)
   ,fInclusiveElecDphi2(0)      
   ,fInclusiveElecDphi3(0)      
   ,fInclusiveElecDphi4(0)      
+  ,fInclusiveElecDphiEtaFS(0)
+  ,fInclusiveElecDphiEtaFS1(0)
+  ,fInclusiveElecDphiEtaFS2(0)
+  ,fInclusiveElecDphiEtaFS3(0)
+  ,fInclusiveElecDphiEtaFS4(0)
   ,fDphiULSMassLow(0)  
   ,fDphiULSMassLow1(0) 
   ,fDphiULSMassLow2(0) 
@@ -162,76 +191,227 @@ ClassImp(AliAnalysisTaskElecHadronCorrel)
   ,fInclusiveElecPt(0)
   ,fULSElecPt(0)
   ,fLSElecPt(0)  
-//  ,fTrackPtBefTrkCuts(0)      
-//  ,fTrackPtAftTrkCuts(0)
-  ,fTPCnsigma(0)
-/*  ,fTPCnsigmaAft(0)
-  ,fTPCnsigmaAftOwn(0)
-  ,fNCellv1(0)
-  ,fClsEv1(0)
-  ,fNClusv1(0)
-  ,fKFParticleP(0)
-  ,fKFParticleE(0)
-*/  ,fInvmassLS1(0)       
-  ,fInvmassLS2(0)       
-  ,fInvmassLS3(0)       
-  ,fInvmassLS4(0)       
-  ,fInvmassLS5(0)       
-  ,fInvmassULS1(0)
-  ,fInvmassULS2(0)
-  ,fInvmassULS3(0)
-  ,fInvmassULS4(0)
-  ,fInvmassULS5(0)
+  ,fDCAMetPhotElecDphi(0)
+  ,fDCAMetPhotElecDphi1(0)
+  ,fDCAMetPhotElecDphi2(0)
+  ,fDCAMetPhotElecDphi3(0)
+  ,fDCAMetPhotElecDphi4(0)
+  ,fDCAMetDphiULSMassLow(0)
+  ,fDCAMetDphiULSMassLow1(0)
+  ,fDCAMetDphiULSMassLow2(0)
+  ,fDCAMetDphiULSMassLow3(0)
+  ,fDCAMetDphiULSMassLow4(0)
+  ,fDCAMetDphiLSMassLow(0)
+  ,fDCAMetDphiLSMassLow1(0)
+  ,fDCAMetDphiLSMassLow2(0)
+  ,fDCAMetDphiLSMassLow3(0)
+  ,fDCAMetDphiLSMassLow4(0)
+  ,fDCAMetDphiULSMassLowNoPartner(0)
+  ,fDCAMetDphiULSMassLowNoPartner1(0)
+  ,fDCAMetDphiULSMassLowNoPartner2(0)
+  ,fDCAMetDphiULSMassLowNoPartner3(0)
+  ,fDCAMetDphiULSMassLowNoPartner4(0)
+  ,fDCAMetDphiLSMassLowNoPartner(0)
+  ,fDCAMetDphiLSMassLowNoPartner1(0)
+  ,fDCAMetDphiLSMassLowNoPartner2(0)
+  ,fDCAMetDphiLSMassLowNoPartner3(0)
+  ,fDCAMetDphiLSMassLowNoPartner4(0)
+  ,fDCAMetPhotoElecPt(0)
+  ,fDCAMetULSElecPt(0)
+  ,fDCAMetLSElecPt(0)
+  ,fSemiIncElecDphiEta1(0)
+  ,fSemiIncElecDphiEta11(0)
+  ,fSemiIncElecDphiEta12(0)
+  ,fSemiIncElecDphiEta13(0)
+  ,fSemiIncElecDphiEta14(0)
+  ,fPhotElecDphiEta1(0)
+  ,fPhotElecDphiEta11(0)
+  ,fPhotElecDphiEta12(0)
+  ,fPhotElecDphiEta13(0)
+  ,fPhotElecDphiEta14(0)
+  ,fInclusiveElecDphiEta1(0)
+  ,fInclusiveElecDphiEta11(0)
+  ,fInclusiveElecDphiEta12(0)
+  ,fInclusiveElecDphiEta13(0)
+  ,fInclusiveElecDphiEta14(0)
+  ,fDphiULSMassLowEta1(0)
+  ,fDphiULSMassLowEta11(0)
+  ,fDphiULSMassLowEta12(0)
+  ,fDphiULSMassLowEta13(0)
+  ,fDphiULSMassLowEta14(0)
+  ,fDphiLSMassLowEta1(0)
+  ,fDphiLSMassLowEta11(0)
+  ,fDphiLSMassLowEta12(0)
+  ,fDphiLSMassLowEta13(0)
+  ,fDphiLSMassLowEta14(0)
+  ,fDphiULSMassLowNoPartnerEta1(0)
+  ,fDphiULSMassLowNoPartnerEta11(0)
+  ,fDphiULSMassLowNoPartnerEta12(0)
+  ,fDphiULSMassLowNoPartnerEta13(0)
+  ,fDphiULSMassLowNoPartnerEta14(0)
+  ,fDphiLSMassLowNoPartnerEta1(0)
+  ,fDphiLSMassLowNoPartnerEta11(0)
+  ,fDphiLSMassLowNoPartnerEta12(0)
+  ,fDphiLSMassLowNoPartnerEta13(0)
+  ,fDphiLSMassLowNoPartnerEta14(0)
+  ,fSemiIncElecDphiEta2(0)
+  ,fSemiIncElecDphiEta21(0)
+  ,fSemiIncElecDphiEta22(0)
+  ,fSemiIncElecDphiEta23(0)
+  ,fSemiIncElecDphiEta24(0)
+  ,fPhotElecDphiEta2(0)
+  ,fPhotElecDphiEta21(0)
+  ,fPhotElecDphiEta22(0)
+  ,fPhotElecDphiEta23(0)
+  ,fPhotElecDphiEta24(0)
+  ,fInclusiveElecDphiEta2(0)
+  ,fInclusiveElecDphiEta21(0)
+  ,fInclusiveElecDphiEta22(0)
+  ,fInclusiveElecDphiEta23(0)
+  ,fInclusiveElecDphiEta24(0)
+  ,fDphiULSMassLowEta2(0)
+  ,fDphiULSMassLowEta21(0)
+  ,fDphiULSMassLowEta22(0)
+  ,fDphiULSMassLowEta23(0)
+  ,fDphiULSMassLowEta24(0)
+  ,fDphiLSMassLowEta2(0)
+  ,fDphiLSMassLowEta21(0)
+  ,fDphiLSMassLowEta22(0)
+  ,fDphiLSMassLowEta23(0)
+  ,fDphiLSMassLowEta24(0)
+  ,fDphiULSMassLowNoPartnerEta2(0)
+  ,fDphiULSMassLowNoPartnerEta21(0)
+  ,fDphiULSMassLowNoPartnerEta22(0)
+  ,fDphiULSMassLowNoPartnerEta23(0)
+  ,fDphiULSMassLowNoPartnerEta24(0)
+  ,fDphiLSMassLowNoPartnerEta2(0)
+  ,fDphiLSMassLowNoPartnerEta21(0)
+  ,fDphiLSMassLowNoPartnerEta22(0)
+  ,fDphiLSMassLowNoPartnerEta23(0)
+    ,fDphiLSMassLowNoPartnerEta24(0)
+    // ,fTrackPtBefTrkCuts(0)   
+    // ,fTrackPtAftTrkCuts(0)
+    ,fTPCnsigma(0)
+    // ,fNCellv1(0)
+    // ,fClsEv1(0)
+    // ,fNClusv1(0)
+    ,fInvmassLS1(0)       
+    // ,fInvmassLS2(0)       
+    // ,fInvmassLS3(0)       
+    // ,fInvmassLS4(0)       
+    // ,fInvmassLS5(0)       
+    ,fInvmassULS1(0)
+    ,fDCAMetInvmassLS1(0)
+    ,fDCAMetInvmassULS1(0)
+    // ,fInvmassULS2(0)
+    // ,fInvmassULS3(0)
+    // ,fInvmassULS4(0)
+    // ,fInvmassULS5(0)
   ,fcentrality(0)     
   ,fElecPhi(0)  
   ,fElecPhiTPChalf(0)
-  ,fElecPhiPt(0)  
-//  ,fElecPhiTPC(0)  
-//  ,fElecPhiTPCEovP(0)  
+    ,fElecPhiPt(0)  
+    //  ,fElecPhiTPC(0)  
+    //  ,fElecPhiTPCEovP(0)  
   ,fHadronPhi(0)  
   ,fHadronPhiTPChalf(0)  
-  ,fHadronPhiPt(0)  
-/*  ,fTrackHFEcuts(0)
-  ,fTrakPhiSPD1(0)
-  ,fTrakPhiSPD2(0)
-  ,fTrakPhiSPDOr(0)
-  ,fTrakPhiSPDAnd(0)
-  ,fTrackHFEcutsITS(0)  
-*/
-/*  ,fNoMixedEvents(0)
+    ,fHadronPhiPt(0)  
+    /*  ,fTrackHFEcuts(0)
+        ,fTrakPhiSPD1(0)
+        ,fTrakPhiSPD2(0)
+        ,fTrakPhiSPDOr(0)
+        ,fTrakPhiSPDAnd(0)
+        ,fTrackHFEcutsITS(0)  
+     */
+  ,fNoMixedEvents(0)
   ,fMixStat(0)       
   ,fMixStat1(0)        
   ,fMixedIncElecDphi(0)  
   ,fMixedIncElecDphi1(0)  
   ,fMixedIncElecDphi2(0)  
+  ,fMixedIncElecDphi3(0)  
+  ,fMixedIncElecDphi4(0)  
   ,fMixedPhotElecDphi(0)
   ,fMixedPhotElecDphi1(0)
   ,fMixedPhotElecDphi2(0)
+  ,fMixedPhotElecDphi3(0)
+  ,fMixedPhotElecDphi4(0)
   ,fMixedSemiIncElecDphi(0)  
   ,fMixedSemiIncElecDphi1(0)  
   ,fMixedSemiIncElecDphi2(0)  
+  ,fMixedSemiIncElecDphi3(0)  
+  ,fMixedSemiIncElecDphi4(0)  
   ,fMixedDphiULSMassLow(0)  
   ,fMixedDphiULSMassLow1(0)  
   ,fMixedDphiULSMassLow2(0)  
+  ,fMixedDphiULSMassLow3(0)  
+  ,fMixedDphiULSMassLow4(0)  
   ,fMixedDphiLSMassLow(0)  
   ,fMixedDphiLSMassLow1(0)  
   ,fMixedDphiLSMassLow2(0)  
-*/
-/*  ,fNLSminus(0)
-  ,fNLSplus(0)
-  ,fNULS(0)  
-*/  ,fHadronIPxy(0)  
-  ,fHadronIPz(0)  
+  ,fMixedDphiLSMassLow3(0)  
+  ,fMixedDphiLSMassLow4(0)  
+  ,fDCAMetMixedPhotElecDphi(0)
+  ,fDCAMetMixedPhotElecDphi1(0)
+  ,fDCAMetMixedPhotElecDphi2(0)
+  ,fDCAMetMixedPhotElecDphi3(0)
+  ,fDCAMetMixedPhotElecDphi4(0)
+  ,fDCAMetMixedDphiULSMassLow(0)
+  ,fDCAMetMixedDphiULSMassLow1(0)
+  ,fDCAMetMixedDphiULSMassLow2(0)
+  ,fDCAMetMixedDphiULSMassLow3(0)
+  ,fDCAMetMixedDphiULSMassLow4(0)
+  ,fDCAMetMixedDphiLSMassLow(0)
+  ,fDCAMetMixedDphiLSMassLow1(0)
+  ,fDCAMetMixedDphiLSMassLow2(0)
+  ,fDCAMetMixedDphiLSMassLow3(0)
+  ,fDCAMetMixedDphiLSMassLow4(0)
   ,fHadronPt(0)  
   ,fCentralityPass(0)
   ,fCentralityNoPass(0)
-//  ,fSparseElectron(0)  
-//  ,fvalueElectron(0)   
+  ,fHadronDphi(0)
+  ,fHadronDphi1(0)
+  ,fHadronDphi2(0)
+  ,fHadronDphi3(0)
+  ,fHadronDphi4(0)
+  ,fPiPt(0)  
+  ,fHadronDphiNoSS(0)
+  ,fHadronDphiNoSS1(0)
+  ,fHadronDphiNoSS2(0)
+  ,fHadronDphiNoSS3(0)
+  ,fHadronDphiNoSS4(0)
+  ,fPiPtNoSS(0)
+  ,fEovPWoSS(0)  
+  ,fEovPWSS(0)  
+  ,fEovPHadWoSS(0)  
+  ,fEovPHadWSS(0)  
+  ,fHadronDphiEta1(0)   
+  ,fHadronDphiEta11(0)  
+  ,fHadronDphiEta12(0)  
+  ,fHadronDphiEta13(0)  
+  ,fHadronDphiEta14(0)  
+  ,fHadronDphiNoSSEta1(0)   
+  ,fHadronDphiNoSSEta11(0)  
+  ,fHadronDphiNoSSEta12(0)  
+  ,fHadronDphiNoSSEta13(0)  
+  ,fHadronDphiNoSSEta14(0)  
+  ,fHadronDphiEta2(0)  
+  ,fHadronDphiEta21(0) 
+  ,fHadronDphiEta22(0) 
+  ,fHadronDphiEta23(0) 
+  ,fHadronDphiEta24(0) 
+  ,fHadronDphiNoSSEta2(0)   
+  ,fHadronDphiNoSSEta21(0)  
+  ,fHadronDphiNoSSEta22(0)  
+  ,fHadronDphiNoSSEta23(0)  
+    ,fHadronDphiNoSSEta24(0)
+    //,fSparseElectron(0)  
+    //  ,fvalueElectron(0)   
 {
   //Named constructor
 
   fPID = new AliHFEpid("hfePid");
-//  fvalueElectron = new Double_t[8];
+  //fvalueElectron = new Double_t[6];
 
   // Define input and output slots here
   // Input slot #0 works with a TChain
@@ -246,8 +426,11 @@ ClassImp(AliAnalysisTaskElecHadronCorrel)
 //________________________________________________________________________
 AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel() 
   : AliAnalysisTaskSE("DefaultAnalysis_AliAnalysisElecHadCorrel")
+  ,fVevent(0)  
   ,fESD(0)
+  ,fAOD(0)
   ,fGeom(0)  
+  ,fpidResponse(0)  
   ,fOutputList(0)
   ,fTrackCuts1(new AliESDtrackCuts)
   ,fTrackCuts2(new AliESDtrackCuts)
@@ -259,25 +442,36 @@ AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel()
   ,fCFM(0)     
   ,fPID(0)       
   ,fPIDqa(0)          
-  ,fOpeningAngleCut(0.1)
   ,fInvmassCut(0.01)   
   ,fCentrality(0)
   ,fCentralityMin(0)
   ,fCentralityMax(0)
   ,fkCentralityMethod(0)  
-//  ,fPoolMgr(0x0)    
-  ,fNoEvents(0)
-//  ,fTrkpt(0)
-  ,fTrkEovPBef(0)       
-  ,fTrkEovPBefHad(0)    
-/*  ,fTrkEovPAft(0)     
-  ,fTrkEovPAftOwn(0)    
-  ,fdEdxBef(0)  
-  ,fdEdxAft(0)  
-  ,fdEdxAftOwn(0)       
-  ,fOpeningAngleLS(0)  
-  ,fOpeningAngleULS(0) 
-*/  ,fSemiIncElecDphi(0)       
+  ,fTPCnsigEleMin(-2)                                                                     
+  ,fTPCnsigEleMax(2)                                                                      
+  ,fTPCnsigHadMin(-10)                                                          
+  ,fTPCnsigHadMax(-3.5)                                                                   
+  ,fM02CutMin(0.03)                                                                       
+  ,fM02CutMax(0.5)                                                                        
+  ,fM20CutMin(0.03)                                                                       
+  ,fM20CutMax(0.3)
+  ,fDispCutMin(0)                                                                         
+  ,fDispCutMax(1)                                                                         
+  ,fEovPMin(0.8)                                                                          
+  ,fEovPMax(1.2)
+  ,fTriggerCentral(kTRUE) 
+  ,fTriggerMB(kTRUE) 
+  ,fTPCNClsHad(80)  
+  ,fAssoEleITSref(kTRUE)  
+  ,fAssoElecTPCNCls(80)  
+  ,fNonHFE(0)  
+  ,fPoolMgr(0x0)    
+    ,fNoEvents(0)
+    //  ,fTrkpt(0)
+    ,fTrkEovPAft(0)     
+    //  ,fTrkEovPBefHad(0)      
+    //  ,fdEdxBef(0)    
+  ,fSemiIncElecDphi(0)         
   ,fSemiIncElecDphi1(0)        
   ,fSemiIncElecDphi2(0)        
   ,fSemiIncElecDphi3(0)        
@@ -292,6 +486,11 @@ AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel()
   ,fInclusiveElecDphi2(0)      
   ,fInclusiveElecDphi3(0)      
   ,fInclusiveElecDphi4(0)      
+  ,fInclusiveElecDphiEtaFS(0)
+  ,fInclusiveElecDphiEtaFS1(0)
+  ,fInclusiveElecDphiEtaFS2(0)
+  ,fInclusiveElecDphiEtaFS3(0)
+  ,fInclusiveElecDphiEtaFS4(0)
   ,fDphiULSMassLow(0)  
   ,fDphiULSMassLow1(0) 
   ,fDphiULSMassLow2(0) 
@@ -317,75 +516,226 @@ AliAnalysisTaskElecHadronCorrel::AliAnalysisTaskElecHadronCorrel()
   ,fInclusiveElecPt(0)
   ,fULSElecPt(0)
   ,fLSElecPt(0)  
-//  ,fTrackPtBefTrkCuts(0)      
-//  ,fTrackPtAftTrkCuts(0)               
-  ,fTPCnsigma(0)       
-/*  ,fTPCnsigmaAft(0)  
-  ,fTPCnsigmaAftOwn(0) 
-  ,fNCellv1(0)  
-  ,fClsEv1(0)
-  ,fNClusv1(0)
-  ,fKFParticleP(0)
-  ,fKFParticleE(0)
-*/  ,fInvmassLS1(0)   
-  ,fInvmassLS2(0)   
-  ,fInvmassLS3(0)   
-  ,fInvmassLS4(0)   
-  ,fInvmassLS5(0)   
-  ,fInvmassULS1(0)  
-  ,fInvmassULS2(0)  
-  ,fInvmassULS3(0)  
-  ,fInvmassULS4(0)  
-  ,fInvmassULS5(0)  
+  ,fDCAMetPhotElecDphi(0)
+  ,fDCAMetPhotElecDphi1(0)
+  ,fDCAMetPhotElecDphi2(0)
+  ,fDCAMetPhotElecDphi3(0)
+  ,fDCAMetPhotElecDphi4(0)
+  ,fDCAMetDphiULSMassLow(0)
+  ,fDCAMetDphiULSMassLow1(0)
+  ,fDCAMetDphiULSMassLow2(0)
+  ,fDCAMetDphiULSMassLow3(0)
+  ,fDCAMetDphiULSMassLow4(0)
+  ,fDCAMetDphiLSMassLow(0)
+  ,fDCAMetDphiLSMassLow1(0)
+  ,fDCAMetDphiLSMassLow2(0)
+  ,fDCAMetDphiLSMassLow3(0)
+  ,fDCAMetDphiLSMassLow4(0)
+  ,fDCAMetDphiULSMassLowNoPartner(0)
+  ,fDCAMetDphiULSMassLowNoPartner1(0)
+  ,fDCAMetDphiULSMassLowNoPartner2(0)
+  ,fDCAMetDphiULSMassLowNoPartner3(0)
+  ,fDCAMetDphiULSMassLowNoPartner4(0)
+  ,fDCAMetDphiLSMassLowNoPartner(0)
+  ,fDCAMetDphiLSMassLowNoPartner1(0)
+  ,fDCAMetDphiLSMassLowNoPartner2(0)
+  ,fDCAMetDphiLSMassLowNoPartner3(0)
+  ,fDCAMetDphiLSMassLowNoPartner4(0)
+  ,fDCAMetPhotoElecPt(0)
+  ,fDCAMetULSElecPt(0)
+  ,fDCAMetLSElecPt(0)
+  ,fSemiIncElecDphiEta1(0)
+  ,fSemiIncElecDphiEta11(0)
+  ,fSemiIncElecDphiEta12(0)
+  ,fSemiIncElecDphiEta13(0)
+  ,fSemiIncElecDphiEta14(0)
+  ,fPhotElecDphiEta1(0)
+  ,fPhotElecDphiEta11(0)
+  ,fPhotElecDphiEta12(0)
+  ,fPhotElecDphiEta13(0)
+  ,fPhotElecDphiEta14(0)
+  ,fInclusiveElecDphiEta1(0)
+  ,fInclusiveElecDphiEta11(0)
+  ,fInclusiveElecDphiEta12(0)
+  ,fInclusiveElecDphiEta13(0)
+  ,fInclusiveElecDphiEta14(0)
+  ,fDphiULSMassLowEta1(0)
+  ,fDphiULSMassLowEta11(0)
+  ,fDphiULSMassLowEta12(0)
+  ,fDphiULSMassLowEta13(0)
+  ,fDphiULSMassLowEta14(0)
+  ,fDphiLSMassLowEta1(0)
+  ,fDphiLSMassLowEta11(0)
+  ,fDphiLSMassLowEta12(0)
+  ,fDphiLSMassLowEta13(0)
+  ,fDphiLSMassLowEta14(0)
+  ,fDphiULSMassLowNoPartnerEta1(0)
+  ,fDphiULSMassLowNoPartnerEta11(0)
+  ,fDphiULSMassLowNoPartnerEta12(0)
+  ,fDphiULSMassLowNoPartnerEta13(0)
+  ,fDphiULSMassLowNoPartnerEta14(0)
+  ,fDphiLSMassLowNoPartnerEta1(0)
+  ,fDphiLSMassLowNoPartnerEta11(0)
+  ,fDphiLSMassLowNoPartnerEta12(0)
+  ,fDphiLSMassLowNoPartnerEta13(0)
+  ,fDphiLSMassLowNoPartnerEta14(0)
+  ,fSemiIncElecDphiEta2(0)
+  ,fSemiIncElecDphiEta21(0)
+  ,fSemiIncElecDphiEta22(0)
+  ,fSemiIncElecDphiEta23(0)
+  ,fSemiIncElecDphiEta24(0)
+  ,fPhotElecDphiEta2(0)
+  ,fPhotElecDphiEta21(0)
+  ,fPhotElecDphiEta22(0)
+  ,fPhotElecDphiEta23(0)
+  ,fPhotElecDphiEta24(0)
+  ,fInclusiveElecDphiEta2(0)
+  ,fInclusiveElecDphiEta21(0)
+  ,fInclusiveElecDphiEta22(0)
+  ,fInclusiveElecDphiEta23(0)
+  ,fInclusiveElecDphiEta24(0)
+  ,fDphiULSMassLowEta2(0)
+  ,fDphiULSMassLowEta21(0)
+  ,fDphiULSMassLowEta22(0)
+  ,fDphiULSMassLowEta23(0)
+  ,fDphiULSMassLowEta24(0)
+  ,fDphiLSMassLowEta2(0)
+  ,fDphiLSMassLowEta21(0)
+  ,fDphiLSMassLowEta22(0)
+  ,fDphiLSMassLowEta23(0)
+  ,fDphiLSMassLowEta24(0)
+  ,fDphiULSMassLowNoPartnerEta2(0)
+  ,fDphiULSMassLowNoPartnerEta21(0)
+  ,fDphiULSMassLowNoPartnerEta22(0)
+  ,fDphiULSMassLowNoPartnerEta23(0)
+  ,fDphiULSMassLowNoPartnerEta24(0)
+  ,fDphiLSMassLowNoPartnerEta2(0)
+  ,fDphiLSMassLowNoPartnerEta21(0)
+  ,fDphiLSMassLowNoPartnerEta22(0)
+  ,fDphiLSMassLowNoPartnerEta23(0)
+    ,fDphiLSMassLowNoPartnerEta24(0)
+    //  ,fTrackPtBefTrkCuts(0)  
+    //  ,fTrackPtAftTrkCuts(0)           
+    ,fTPCnsigma(0)     
+    //  ,fNCellv1(0)  
+    //  ,fClsEv1(0)
+    //  ,fNClusv1(0)
+    ,fInvmassLS1(0)   
+    //  ,fInvmassLS2(0)   
+    //  ,fInvmassLS3(0)   
+    //  ,fInvmassLS4(0)   
+    //  ,fInvmassLS5(0)   
+    ,fInvmassULS1(0)  
+    //  ,fInvmassULS2(0)  
+    //  ,fInvmassULS3(0)  
+    //  ,fInvmassULS4(0)  
+    //  ,fInvmassULS5(0)  
+  ,fDCAMetInvmassLS1(0)
+  ,fDCAMetInvmassULS1(0)
   ,fcentrality(0)     
   ,fElecPhi(0)
   ,fElecPhiTPChalf(0)  
-  ,fElecPhiPt(0)
-//  ,fElecPhiTPC(0)
-//  ,fElecPhiTPCEovP(0)  
+    ,fElecPhiPt(0)
+    //  ,fElecPhiTPC(0)
+    //  ,fElecPhiTPCEovP(0)  
   ,fHadronPhi(0)
   ,fHadronPhiTPChalf(0)
-  ,fHadronPhiPt(0)
-/*  ,fTrackHFEcuts(0)
-  ,fTrakPhiSPD1(0)
-  ,fTrakPhiSPD2(0)
-  ,fTrakPhiSPDOr(0)
-  ,fTrakPhiSPDAnd(0)
-  ,fTrackHFEcutsITS(0)  
-*/
-/*  ,fNoMixedEvents(0)
+    ,fHadronPhiPt(0)
+    /*  ,fTrackHFEcuts(0)
+        ,fTrakPhiSPD1(0)
+        ,fTrakPhiSPD2(0)
+        ,fTrakPhiSPDOr(0)
+        ,fTrakPhiSPDAnd(0)
+        ,fTrackHFEcutsITS(0)  
+     */
+  ,fNoMixedEvents(0)
   ,fMixStat(0)      
   ,fMixStat1(0)     
   ,fMixedIncElecDphi(0)  
   ,fMixedIncElecDphi1(0)  
   ,fMixedIncElecDphi2(0)  
+  ,fMixedIncElecDphi3(0)  
+  ,fMixedIncElecDphi4(0)  
   ,fMixedPhotElecDphi(0)
   ,fMixedPhotElecDphi1(0)
   ,fMixedPhotElecDphi2(0)
+  ,fMixedPhotElecDphi3(0)
+  ,fMixedPhotElecDphi4(0)
   ,fMixedSemiIncElecDphi(0)
   ,fMixedSemiIncElecDphi1(0)
   ,fMixedSemiIncElecDphi2(0)
+  ,fMixedSemiIncElecDphi3(0)
+  ,fMixedSemiIncElecDphi4(0)
   ,fMixedDphiULSMassLow(0) 
   ,fMixedDphiULSMassLow1(0) 
   ,fMixedDphiULSMassLow2(0) 
+  ,fMixedDphiULSMassLow3(0) 
+  ,fMixedDphiULSMassLow4(0) 
   ,fMixedDphiLSMassLow(0)      
   ,fMixedDphiLSMassLow1(0)      
   ,fMixedDphiLSMassLow2(0)      
-*/
-/*  ,fNLSminus(0)
-  ,fNLSplus(0)    
-  ,fNULS(0)       
-*/  ,fHadronIPxy(0) 
-  ,fHadronIPz(0)      
+  ,fMixedDphiLSMassLow3(0)      
+  ,fMixedDphiLSMassLow4(0)      
+  ,fDCAMetMixedPhotElecDphi(0)
+  ,fDCAMetMixedPhotElecDphi1(0)
+  ,fDCAMetMixedPhotElecDphi2(0)
+  ,fDCAMetMixedPhotElecDphi3(0)
+  ,fDCAMetMixedPhotElecDphi4(0)
+  ,fDCAMetMixedDphiULSMassLow(0)
+  ,fDCAMetMixedDphiULSMassLow1(0)
+  ,fDCAMetMixedDphiULSMassLow2(0)
+  ,fDCAMetMixedDphiULSMassLow3(0)
+  ,fDCAMetMixedDphiULSMassLow4(0)
+  ,fDCAMetMixedDphiLSMassLow(0)
+  ,fDCAMetMixedDphiLSMassLow1(0)
+  ,fDCAMetMixedDphiLSMassLow2(0)
+  ,fDCAMetMixedDphiLSMassLow3(0)
+  ,fDCAMetMixedDphiLSMassLow4(0)
   ,fHadronPt(0)  
   ,fCentralityPass(0)
   ,fCentralityNoPass(0)
-    //  ,fSparseElectron(0)  
-    //    ,fvalueElectron(0)  
+  ,fHadronDphi(0)
+  ,fHadronDphi1(0)
+  ,fHadronDphi2(0)
+  ,fHadronDphi3(0)
+  ,fHadronDphi4(0)
+  ,fPiPt(0)
+  ,fHadronDphiNoSS(0)
+  ,fHadronDphiNoSS1(0)
+  ,fHadronDphiNoSS2(0)
+  ,fHadronDphiNoSS3(0)
+  ,fHadronDphiNoSS4(0)
+  ,fPiPtNoSS(0)
+  ,fEovPWoSS(0)
+  ,fEovPWSS(0) 
+  ,fEovPHadWoSS(0)
+  ,fEovPHadWSS(0) 
+  ,fHadronDphiEta1(0)   
+  ,fHadronDphiEta11(0)  
+  ,fHadronDphiEta12(0)  
+  ,fHadronDphiEta13(0)  
+  ,fHadronDphiEta14(0)  
+  ,fHadronDphiNoSSEta1(0)   
+  ,fHadronDphiNoSSEta11(0)  
+  ,fHadronDphiNoSSEta12(0)  
+  ,fHadronDphiNoSSEta13(0)  
+  ,fHadronDphiNoSSEta14(0)  
+  ,fHadronDphiEta2(0)  
+  ,fHadronDphiEta21(0) 
+  ,fHadronDphiEta22(0) 
+  ,fHadronDphiEta23(0) 
+  ,fHadronDphiEta24(0) 
+  ,fHadronDphiNoSSEta2(0)   
+  ,fHadronDphiNoSSEta21(0)  
+  ,fHadronDphiNoSSEta22(0)  
+  ,fHadronDphiNoSSEta23(0)  
+    ,fHadronDphiNoSSEta24(0)
+    //,fSparseElectron(0)  
+    //  ,fvalueElectron(0)  
 {
   //Default constructor
   fPID = new AliHFEpid("hfePid");
-  //  fvalueElectron = new Double_t[8];
+  //fvalueElectron = new Double_t[6];
 
   // Constructor
   // Define input and output slots here
@@ -410,8 +760,8 @@ AliAnalysisTaskElecHadronCorrel::~AliAnalysisTaskElecHadronCorrel()
   delete fPIDqa;
   delete fTrackCuts1;
   delete fTrackCuts2;
-  //   delete fSparseElectron;
-  //   delete []fvalueElectron;
+  //  delete fSparseElectron;
+  //  delete []fvalueElectron;
 }
 //_________________________________________
 
@@ -421,9 +771,16 @@ void AliAnalysisTaskElecHadronCorrel::UserExec(Option_t*)
   //Called for each event
 
   // create pointer to event
+  fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
   fESD = dynamic_cast<AliESDEvent*>(InputEvent());
-  if (!fESD) {
-    printf("ERROR: fESD not available\n");
+
+  if(!(fESD || fAOD)){
+    printf("ERROR: fESD & fAOD not available\n");
+    return;
+  }
+  fVevent = dynamic_cast<AliVEvent*>(InputEvent());
+  if (!fVevent) {
+    printf("ERROR: fVEvent not available\n");
     return;
   }
 
@@ -435,230 +792,282 @@ void AliAnalysisTaskElecHadronCorrel::UserExec(Option_t*)
   if(!fPID->IsInitialized()){ 
     // Initialize PID with the given run number
     AliWarning("PID not initialised, get from Run no");
-    fPID->InitializePID(fESD->GetRunNumber());
-  }
 
-  //-------trigger selection
-  UInt_t res = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
-  if (res==0)
-    return;
+    if(IsAODanalysis())fPID->InitializePID(fAOD->GetRunNumber());
+    else fPID->InitializePID(fESD->GetRunNumber());
+  }
 
-  //   if( (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kFastOnly) )
-  //           return;
 
-  if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kCentral))) return;
+  if(fTriggerMB && fTriggerCentral){
+    // trigger selection
+    if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kCentral))) return;
+  }
 
-  //---------------CENTRALITY SELECTION-----------------------    
-  SetCentralityParameters(0., 10., "V0M");
-  Bool_t pass = kFALSE; //to select centrality
-  CheckCentrality(fESD,pass);
+  if(fTriggerMB && !fTriggerCentral){
+    // trigger selection
+    if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kSemiCentral))) return;
+  }
 
+  if(!fTriggerMB){
+    // trigger selection
+    if(!(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & (AliVEvent::kEMCEGA))) return;
+  }
+  // centrality selection 
+  //  SetCentralityParameters(0., 7., fkCentralityMethod);
+  Bool_t pass = kFALSE; 
+  CheckCentrality(fVevent,pass);
   if(!pass)return;
 
-  /*  AliCentrality *fCentrality = (AliCentrality*)fESD->GetCentrality();
-
-  Float_t centvalue = fCentrality->GetCentralityPercentile("V0M");
-  fcentrality->Fill(centvalue);    
-  if(centvalue<0 || centvalue>10) return;
-*/
-  Int_t fNOtrks =  fESD->GetNumberOfTracks();
-  const AliESDVertex *pVtx = fESD->GetPrimaryVertex();
+  Int_t fNOtrks =  fVevent->GetNumberOfTracks();
+  const AliVVertex *pVtx = fVevent->GetPrimaryVertex();
 
   Double_t pVtxZ = -999;
   pVtxZ = pVtx->GetZ();
 
-  // Event cut
-  //   if(!fCFM->CheckEventCuts(AliHFEcuts::kEventStepReconstructed, fESD)) return;
-
   if(TMath::Abs(pVtxZ)>10) return;
   fNoEvents->Fill(0);
 
   if(fNOtrks<2) return;
 
-  AliPIDResponse *pidResponse = fInputHandler->GetPIDResponse();
-  if(!pidResponse){
+  fpidResponse = fInputHandler->GetPIDResponse();
+  if(!fpidResponse){
     AliDebug(1, "Using default PID Response");
-     pidResponse = AliHFEtools::GetDefaultPID(kFALSE, fInputEvent->IsA() == AliAODEvent::Class()); 
-   }
+    fpidResponse = AliHFEtools::GetDefaultPID(kFALSE, fInputEvent->IsA() == AliAODEvent::Class()); 
+  }
 
-   fPID->SetPIDResponse(pidResponse);
+  fPID->SetPIDResponse(fpidResponse);
 
-   fCFM->SetRecEventInfo(fESD);
-/*
-   //Event mixing
-   AliEventPool* pool = fPoolMgr->GetEventPool(centvalue, pVtxZ); // Get the buffer associated with the current centrality and z-vtx
-   if (!pool)
-     AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue, pVtxZ));
-*/     
+  fCFM->SetRecEventInfo(fVevent);
 
-   // Track loop 
-   for (Int_t iTracks = 0; iTracks < fESD->GetNumberOfTracks(); iTracks++) {
-     AliESDtrack* track = fESD->GetTrack(iTracks);
-     if (!track) {
-       printf("ERROR: Could not receive track %d\n", iTracks);
-       continue;
-     }
+  AliCentrality *fCentrality2 = (AliCentrality*)fAOD->GetCentrality();
+  Double_t centvalue1 = fCentrality2->GetCentralityPercentile(fkCentralityMethod);
 
-     if(track->Pt()<1) continue;
+  //Event mixing
+  AliEventPool* pool;
+  pool = fPoolMgr->GetEventPool(centvalue1, pVtxZ); // Get the buffer associated with the current centrality and z-vtx
+  if (!pool)
+  {
+    AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue1, pVtxZ));     
+    return;
+  }
+  // Look for kink mother for AOD
+  Int_t numberofvertices = fAOD->GetNumberOfVertices();
+  Double_t listofmotherkink[numberofvertices];
+  Int_t numberofmotherkink = 0;
+  if(IsAODanalysis()){
+    for(Int_t ivertex=0; ivertex < numberofvertices; ivertex++) {
+      AliAODVertex *aodvertex = fAOD->GetVertex(ivertex);
+      if(!aodvertex) continue;
+      if(aodvertex->GetType()==AliAODVertex::kKink) {
+        AliAODTrack *mother = (AliAODTrack *) aodvertex->GetParent();
+        if(!mother) continue;
+        Int_t idmother = mother->GetID();
+        listofmotherkink[numberofmotherkink] = idmother;
+        numberofmotherkink++;
+      }
+    }
+  }
 
-    // fTrackPtBefTrkCuts->Fill(track->Pt());          
+  // Track loop 
+  for (Int_t iTracks = 0; iTracks < fVevent->GetNumberOfTracks(); iTracks++) {
+    AliVParticle* Vtrack = fVevent->GetTrack(iTracks);
+    if (!Vtrack) {
+      printf("ERROR: Could not receive track %d\n", iTracks);
+      continue;
+    }
+    AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack);
+    AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack);
+    AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
 
-     // RecKine: ITSTPC cuts  
-     if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, track)) continue;
+    if(!track && !etrack && !atrack) continue;
 
-     //RecKink
-     if(fRejectKinkMother) { // Quick and dirty fix to reject both kink mothers and daughters
-       if(track->GetKinkIndex(0) != 0) continue;
-     } 
+    if(IsAODanalysis())
+      if(atrack){
+        if(!atrack->TestFilterMask(AliAODTrack::kTrkGlobalNoDCA)) continue;
+      }
+    if(track->Pt()<1) continue;
 
-     // RecPrim
-     if(!ProcessCutStep(AliHFEcuts::kStepRecPrim, track)) continue;
+    // fTrackPtBefTrkCuts->Fill(track->Pt());          
 
-     // HFE cuts: TPC PID cleanup
-     if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, track)) continue;
+    // RecKine: ITSTPC cuts  
+    if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, track)) continue;
+
+    // Reject kink mother
+    if(fRejectKinkMother) { // Quick and dirty fix to reject both kink mothers and daughters
+      if(IsAODanalysis()){
+        Bool_t kinkmotherpass = kTRUE;
+        for(Int_t kinkmother = 0; kinkmother < numberofmotherkink; kinkmother++) {
+          if(track->GetID() == listofmotherkink[kinkmother]) {
+            kinkmotherpass = kFALSE;
+            continue;
+          }
+        }
+        if(!kinkmotherpass) continue;
+      }
+      else{
+        if(etrack->GetKinkIndex(0) != 0) continue;
+      }
+    }
+    // RecPrim
+    //     if(!ProcessCutStep(AliHFEcuts::kStepRecPrim, track)) continue; //gives warning for AOD, so not using
+
+    // HFE cuts: TPC PID cleanup
+    if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, track)) continue;
 
     // fTrackHFEcuts->Fill(track->Phi());
 
-     //track phi distribution for diff ITS layer hit
-//     if(track->HasPointOnITSLayer(0)) fTrakPhiSPD1->Fill(track->Phi());
-//     if(track->HasPointOnITSLayer(1)) fTrakPhiSPD2->Fill(track->Phi());
-
-
-//     if(track->HasPointOnITSLayer(0) || track->HasPointOnITSLayer(1)) fTrakPhiSPDOr->Fill(track->Phi());
-//     if(track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) fTrakPhiSPDAnd->Fill(track->Phi());
-
-     // HFEcuts: ITS layers cuts
-     if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsITS, track)) continue;
-
-//     fTrackHFEcutsITS->Fill(track->Phi());
-
-//     fTrackPtAftTrkCuts->Fill(track->Pt());          
-
-     Double_t fClsE = -999, p = -999, fEovP=-999, pt = -999, dEdx=-999, fTPCnSigma=0;
-     pt = track->Pt();
-     p = track->P();
-     dEdx = track->GetTPCsignal();
-     fTPCnSigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(track, AliPID::kElectron) : 1000;
-
-     //TPC electron phi
-     if(fTPCnSigma >= -2 && fTPCnSigma <= 2){
-//       fElecPhiTPC->Fill(track->Phi());
-     }
-
-     //eta cut (-0.7,0.7)
-     if(track->Eta() < -0.7 || track->Eta() > 0.7) continue;
-
-     // Track extrapolation to EMCAL
-     Int_t fClsId = track->GetEMCALcluster();
-     if(fClsId <0) continue;
-     AliESDCaloCluster *cluster = fESD->GetCaloCluster(fClsId);
-     if(TMath::Abs(cluster->GetTrackDx())>0.05 || TMath::Abs(cluster->GetTrackDz())>0.05) continue;    
-//     fdEdxBef->Fill(p,dEdx);
-     fTPCnsigma->Fill(p,fTPCnSigma);
-
-//     fTrkpt->Fill(pt);
-     fClsE = cluster->E();
-     fEovP = fClsE/p;
-     /*
-        fvalueElectron[0] = pt;
-        fvalueElectron[1] = p;
-        fvalueElectron[2] = fTPCnSigma;
-        fvalueElectron[3] = dEdx;
-        fvalueElectron[4] = fEovP;
-        fvalueElectron[5] = cluster->GetM20();
-        fvalueElectron[6] = cluster->GetM02();
-        fvalueElectron[7] = cluster->GetDispersion();
-
-        fSparseElectron->Fill(fvalueElectron);
-      */
-     if(fTPCnSigma >= -2 && fTPCnSigma <= 2){
-       fTrkEovPBef->Fill(pt,fEovP);
-     }
-     if(fTPCnSigma < -3.5)fTrkEovPBefHad->Fill(pt,fEovP);
-     /*
-        Int_t pidpassed = 0;
-     //--- track accepted, do PID
-     AliHFEpidObject hfetrack;
-     hfetrack.SetAnalysisType(AliHFEpidObject::kESDanalysis);
-     hfetrack.SetRecTrack(track);
-     hfetrack.SetPbPb();
-     if(fPID->IsSelected(&hfetrack, NULL, "", fPIDqa)) pidpassed = 1;
-
-     if(pidpassed==1){
-     cout << "dedx, E/p :  "<< dEdx << ", " << fEovP <<endl;
-     fTrkEovPAft->Fill(pt,fEovP);
-     fdEdxAft->Fill(p,dEdx);
-     fTPCnsigmaAft->Fill(p,fTPCnSigma);
-     }
-      */
-
-     //Electron id with TPC and E/p
-     if(fTPCnSigma >= -2 && fTPCnSigma <= 2 && fEovP >= 0.8 && fEovP <=1.2) {
-//       fElecPhiTPCEovP->Fill(track->Phi());
-
-       //Electron id with shower shape  
-       if(cluster->GetM20()<0.2 && cluster->GetM02()< 0.5 && cluster->GetDispersion()<1){
-         
-         fElecPhi->Fill(track->Phi());
-         fElecPhiPt->Fill(track->Phi(),track->Pt());
-         if (track->Eta() >0 && track->Eta() <0.7) fElecPhiTPChalf->Fill(track->Phi());
-//         fTrkEovPAftOwn->Fill(pt,fEovP);
-//         fdEdxAftOwn->Fill(p,dEdx);
-//         fTPCnsigmaAftOwn->Fill(p,fTPCnSigma);
-
-         HadronInfo(iTracks);
-
-         Bool_t fFlagPhotonicElec = kFALSE;
-         // select photonic electron
-         SelectPhotonicElectron(iTracks,track,fFlagPhotonicElec);
-         //Inclusive electron-hadron correlation
-         ElectronHadCorrel(iTracks, track, fInclusiveElecDphi, fInclusiveElecDphi1,fInclusiveElecDphi2,fInclusiveElecDphi3,fInclusiveElecDphi4);
-         fInclusiveElecPt->Fill(pt);
-//         MixedEvent(track,fMixedIncElecDphi, fMixedIncElecDphi1,fMixedIncElecDphi2);
-         
-         // photonic electron
-         if(fFlagPhotonicElec){
-         //Electron hadron correlation
-         ElectronHadCorrel(iTracks, track, fPhotElecDphi,fPhotElecDphi1,fPhotElecDphi2,fPhotElecDphi3,fPhotElecDphi4);
-         fPhotoElecPt->Fill(pt);
-//         MixedEvent(track,fMixedPhotElecDphi, fMixedPhotElecDphi1,fMixedPhotElecDphi2);
-         }
-
-         // Semi inclusive electron 
-         if(!fFlagPhotonicElec){
-           //Electron hadron correlation
-           ElectronHadCorrel(iTracks, track, fSemiIncElecDphi, fSemiIncElecDphi1,fSemiIncElecDphi2,fSemiIncElecDphi3,fSemiIncElecDphi4);
-           fSemiInclElecPt->Fill(pt);
-//           MixedEvent(track,fMixedSemiIncElecDphi,fMixedSemiIncElecDphi1,fMixedSemiIncElecDphi2);
-         }
-         
+    // HFEcuts: ITS layers cuts
+    if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsITS, track)) continue;
+
+    //     fTrackHFEcutsITS->Fill(track->Phi());
+    //fTrackPtAftTrkCuts->Fill(track->Pt());           
+
+    Double_t fClsE = -999, p = -999, fEovP=-999, pt = -999, dEdx=-999, fTPCnSigma=0;
+    pt = track->Pt();
+    p = track->P();
+    dEdx = track->GetTPCsignal();
+    fTPCnSigma = fPID->GetPIDResponse() ? fPID->GetPIDResponse()->NumberOfSigmasTPC(track, AliPID::kElectron) : 1000;
+
+    if(pt<2) continue;
+    //TPC electron phi
+    // if(fTPCnSigma >= -2 && fTPCnSigma <= 2){
+    //       fElecPhiTPC->Fill(track->Phi());
+    // }
+
+    //eta cut (-0.7,0.7)
+    if(track->Eta() < -0.7 || track->Eta() > 0.7) continue;
+
+    // Track extrapolation to EMCAL
+    Int_t fClsId = track->GetEMCALcluster();
+    if(fClsId <0) continue;
+    AliVCluster *cluster = fVevent->GetCaloCluster(fClsId);
+    if(!cluster->IsEMCAL()) continue;
+    if(TMath::Abs(cluster->GetTrackDx())>0.05 || TMath::Abs(cluster->GetTrackDz())>0.05) continue;    
+    //     fdEdxBef->Fill(p,dEdx);
+    fTPCnsigma->Fill(p,fTPCnSigma);
+
+    //     fTrkpt->Fill(pt);
+    fClsE = cluster->E();
+    fEovP = fClsE/p;
+
+    //--------THnsparse---------
+    //fvalueElectron[0] = pt;
+    //fvalueElectron[1] = fTPCnSigma;
+    //fvalueElectron[2] = fEovP;
+    //fvalueElectron[3] = cluster->GetM20();
+    //fvalueElectron[4] = cluster->GetM02();
+    //fvalueElectron[5] = cluster->GetDispersion();
+
+    //fSparseElectron->Fill(fvalueElectron);
+
+    //----------------
+    //EovP distribution for Had
+    if((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)) fEovPHadWoSS->Fill(pt,fEovP);
+    if(((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)) && ((cluster->GetM20()> fM20CutMin) && (cluster->GetM20()< fM20CutMax)) &&  ((cluster->GetM02()> fM02CutMin) && (cluster->GetM02()< fM02CutMax)) && ((cluster->GetDispersion()< fDispCutMax))) fEovPHadWSS->Fill(pt,fEovP);
+
+    //Dphi distribution hadrons with shower shape cuts
+    if(((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)) && ((cluster->GetM20()> fM20CutMin) && (cluster->GetM20()< fM20CutMax)) &&  ((cluster->GetM02()> fM02CutMin) && (cluster->GetM02()< fM02CutMax)) && ((cluster->GetDispersion()< fDispCutMax))&&(fEovP >= fEovPMin && fEovP <= fEovPMax)){
+      ElectronHadCorrel(iTracks, track, fHadronDphi, fHadronDphi1,fHadronDphi2,fHadronDphi3,fHadronDphi4);
+      ElectronHadCorrelEtaBins(iTracks, track, fHadronDphiEta1, fHadronDphiEta11,fHadronDphiEta12,fHadronDphiEta13,fHadronDphiEta14,fHadronDphiEta2, fHadronDphiEta21,fHadronDphiEta22,fHadronDphiEta23,fHadronDphiEta24);
+      fPiPt->Fill(pt);
+    }
+
+    //Dphi distribution hadrons without shower shape cuts
+    if((fTPCnSigma > fTPCnsigHadMin) && (fTPCnSigma < fTPCnsigHadMax)&&(fEovP >= fEovPMin && fEovP <= fEovPMax)){
+      ElectronHadCorrel(iTracks, track, fHadronDphiNoSS, fHadronDphiNoSS1,fHadronDphiNoSS2,fHadronDphiNoSS3,fHadronDphiNoSS4);
+      ElectronHadCorrelEtaBins(iTracks, track, fHadronDphiNoSSEta1, fHadronDphiNoSSEta11,fHadronDphiNoSSEta12,fHadronDphiNoSSEta13,fHadronDphiNoSSEta14,fHadronDphiNoSSEta2, fHadronDphiNoSSEta21,fHadronDphiNoSSEta22,fHadronDphiNoSSEta23,fHadronDphiNoSSEta24);
+      fPiPtNoSS->Fill(pt);
+    }
+
+    //Electron id with TPC
+    if(fTPCnSigma < fTPCnsigEleMin || fTPCnSigma > fTPCnsigEleMax) continue;
+    fEovPWoSS->Fill(pt,fEovP);
+    //   fElecPhiTPCEovP->Fill(track->Phi());
+
+    //Electron id with shower shape  
+    if(cluster->GetM20()< fM20CutMin || cluster->GetM20()> fM20CutMax || cluster->GetM02()< fM02CutMin || cluster->GetM02()> fM02CutMax || cluster->GetDispersion()> fDispCutMax) continue;
+    fEovPWSS->Fill(pt,fEovP);
+
+    //Electron id with E/p
+    if(fEovP < fEovPMin || fEovP > fEovPMax) continue;
+
+    fTrkEovPAft->Fill(pt,fEovP);
+    fElecPhi->Fill(track->Phi());
+    fElecPhiPt->Fill(track->Phi(),track->Pt());
+    if (track->Eta() >0 && track->Eta() <0.7) fElecPhiTPChalf->Fill(track->Phi());
+
+    HadronInfo(iTracks);
+
+    Bool_t fFlagPhotonicElec = kFALSE;
+    // select photonic electron
+    SelectPhotonicElectron(iTracks,track,fFlagPhotonicElec);
+    SelectPhotonicElectronDCAMet(iTracks,track,fpidResponse);
+
+    //Inclusive electron-hadron correlation
+    ElectronHadCorrel(iTracks, track, fInclusiveElecDphi, fInclusiveElecDphi1,fInclusiveElecDphi2,fInclusiveElecDphi3,fInclusiveElecDphi4);
+    fInclusiveElecPt->Fill(pt);
+    MixedEvent(track,fMixedIncElecDphi, fMixedIncElecDphi1,fMixedIncElecDphi2, fMixedIncElecDphi3, fMixedIncElecDphi4);
+
+    //Dphi in Eta bins
+    ElectronHadCorrelEtaBins(iTracks, track, fInclusiveElecDphiEta1, fInclusiveElecDphiEta11,fInclusiveElecDphiEta12,fInclusiveElecDphiEta13,fInclusiveElecDphiEta14,fInclusiveElecDphiEta2, fInclusiveElecDphiEta21,fInclusiveElecDphiEta22,fInclusiveElecDphiEta23,fInclusiveElecDphiEta24);
+
+    //Inclusive electron-hadron correlation far eta side
+    ElectronHadCorrelEtaFarSide(iTracks, track, fInclusiveElecDphiEtaFS, fInclusiveElecDphiEtaFS1,fInclusiveElecDphiEtaFS2,fInclusiveElecDphiEtaFS3,fInclusiveElecDphiEtaFS4);
+    MixedEvent(track,fMixedIncElecDphi, fMixedIncElecDphi1,fMixedIncElecDphi2, fMixedIncElecDphi3, fMixedIncElecDphi4);
+
+    // photonic electron
+    if(fFlagPhotonicElec){
+      //Electron hadron correlation
+      ElectronHadCorrel(iTracks, track, fPhotElecDphi,fPhotElecDphi1,fPhotElecDphi2,fPhotElecDphi3,fPhotElecDphi4);
+      fPhotoElecPt->Fill(pt);
+      MixedEvent(track,fMixedPhotElecDphi, fMixedPhotElecDphi1,fMixedPhotElecDphi2, fMixedPhotElecDphi3, fMixedPhotElecDphi4);
+
+      //Dphi in Eta bins
+      ElectronHadCorrelEtaBins(iTracks, track, fPhotElecDphiEta1,fPhotElecDphiEta11,fPhotElecDphiEta12,fPhotElecDphiEta13,fPhotElecDphiEta14,fPhotElecDphiEta2,fPhotElecDphiEta21,fPhotElecDphiEta22,fPhotElecDphiEta23,fPhotElecDphiEta24);
+    }
+
+    // Semi inclusive electron 
+    if(!fFlagPhotonicElec){
+      //Electron hadron correlation
+      ElectronHadCorrel(iTracks, track, fSemiIncElecDphi, fSemiIncElecDphi1,fSemiIncElecDphi2,fSemiIncElecDphi3,fSemiIncElecDphi4);
+      fSemiInclElecPt->Fill(pt);
+      MixedEvent(track,fMixedSemiIncElecDphi,fMixedSemiIncElecDphi1,fMixedSemiIncElecDphi2, fMixedSemiIncElecDphi3, fMixedSemiIncElecDphi4);
+
+      //Dphi in Eta bins
+      ElectronHadCorrelEtaBins(iTracks, track, fSemiIncElecDphiEta1, fSemiIncElecDphiEta11,fSemiIncElecDphiEta12,fSemiIncElecDphiEta13,fSemiIncElecDphiEta14,fSemiIncElecDphiEta2, fSemiIncElecDphiEta21,fSemiIncElecDphiEta22,fSemiIncElecDphiEta23,fSemiIncElecDphiEta24);
+    }
+  }
+  /*   //EMC clusters  
+       Int_t clsNo = fVevent->GetNumberOfCaloClusters();
+       fNClusv1->Fill(clsNo); 
+       for(Int_t iclus=0; iclus<clsNo ; iclus++){ 
+       AliVCluster* clus = fVevent->GetCaloCluster(iclus);
+       if(!clus->IsEMCAL()) continue; 
+       fNCellv1->Fill(clus->GetNCells());
+       fClsEv1->Fill(clus->E());  
        }
-     }
-   }
-   /*
-   //EMC clusters  
-   Int_t clsNo = fESD->GetNumberOfCaloClusters();
-   fNClusv1->Fill(clsNo); 
-   for(Int_t iclus=0; iclus<clsNo ; iclus++){ 
-     AliESDCaloCluster* clus = fESD->GetCaloCluster(iclus);
-     if(!clus->IsEMCAL()) continue; 
-     fNCellv1->Fill(clus->GetNCells());
-     fClsEv1->Fill(clus->E());  
-   }
-*/
-/*
-   TObjArray* tracksClone = CloneAndReduceTrackList();
-   tracksClone->SetOwner();
-   pool->UpdatePool(tracksClone);
- */  
-   PostData(1, fOutputList);
+   */
+
+  TObjArray* tracksClone = CloneAndReduceTrackList();
+  tracksClone->SetOwner();
+  pool->UpdatePool(tracksClone);
+
+  PostData(1, fOutputList);
 }
 //_________________________________________
 void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
 {
   //Create histograms
-  //  TGeoManager::Import("geometry.root");
-  //  fGeom =  AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1");
+
+  AliDebug(3, "Creating Output Objects");
+  // Automatic determination of the analysis mode
+  AliVEventHandler *inputHandler = dynamic_cast<AliVEventHandler *>(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
+  if(!TString(inputHandler->IsA()->GetName()).CompareTo("AliAODInputHandler")){
+    SetAODAnalysis();
+  } else {
+    SetESDAnalysis();
+  }
+  printf("Analysis Mode: %s Analysis\n", IsAODanalysis() ? "AOD" : "ESD");
 
   //--------Initialize PID
   fPID->SetHasMCData(kFALSE);
@@ -684,20 +1093,56 @@ void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
     fCuts = new AliHFEcuts;
     fCuts->CreateStandardCuts();
   }
+
+  if(IsAODanalysis()) fCuts->SetAOD(); 
   fCuts->Initialize(fCFM);
-/*
+
   //Mixed event initialising
   Int_t trackDepth = 2000;
   Int_t poolsize   = 1000;
 
   Int_t nCentralityBins  = 5;
-  Double_t CentralityBins[] = {0,2,4,6,8,10};
-
+  Int_t nCentralityBinsSC  = 6;
   Int_t nZvtxBins  = 4;
-  Double_t vertexBins[] = {-10,-5,0,5,10};
+  Double_t CentralityBins[6];
+  Double_t CentralityBinsSC[7];
+  Double_t vertexBins[5];
+  if(fTriggerCentral)
+  {
+    CentralityBins[0] = 0;
+    CentralityBins[1] = 2;
+    CentralityBins[2] = 4;
+    CentralityBins[3] = 6;
+    CentralityBins[4] = 8;
+    CentralityBins[5] = 10;
+
+    vertexBins[0] = -10;
+    vertexBins[1] = -5;
+    vertexBins[2] = 0;
+    vertexBins[3] = 5;
+    vertexBins[4] = 10;
+    fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, (Double_t*) CentralityBins, nZvtxBins, (Double_t*) vertexBins);
+  }
+
+  if(!fTriggerCentral)                                                                     
+  { 
+    CentralityBinsSC[0] = 20;  
+    CentralityBinsSC[1] = 25;  
+    CentralityBinsSC[2] = 30;  
+    CentralityBinsSC[3] = 35;  
+    CentralityBinsSC[4] = 40;  
+    CentralityBinsSC[5] = 45;  
+    CentralityBinsSC[6] = 50;  
+
+    vertexBins[0] = -10;
+    vertexBins[1] = -5;
+    vertexBins[2] = 0;
+    vertexBins[3] = 5;
+    vertexBins[4] = 10;
+    fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBinsSC, (Double_t*) CentralityBinsSC, nZvtxBins, (Double_t*) vertexBins);
+  }
+
 
-  fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, (Double_t*) CentralityBins, nZvtxBins, (Double_t*) vertexBins);
-*/
   //---------Output Tlist
   fOutputList = new TList();
   fOutputList->SetOwner();
@@ -708,46 +1153,28 @@ void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
 
   fcentrality = new TH1F("fcentrality","centrality", 100,0,100);
   fOutputList->Add(fcentrality);
-/*
-  fTrkpt = new TH1F("fTrkpt","track pt",1000,0,50);
-  fOutputList->Add(fTrkpt);
 
-  fTrackPtBefTrkCuts = new TH1F("fTrackPtBefTrkCuts","track pt before track cuts",1000,0,50);
-  fOutputList->Add(fTrackPtBefTrkCuts);
+  //  fTrkpt = new TH1F("fTrkpt","track pt",1000,0,50);
+  //  fOutputList->Add(fTrkpt);
+
+  //  fTrackPtBefTrkCuts = new TH1F("fTrackPtBefTrkCuts","track pt before track cuts",1000,0,50);
+  //  fOutputList->Add(fTrackPtBefTrkCuts);
+
+  //  fTrackPtAftTrkCuts = new TH1F("fTrackPtAftTrkCuts","track pt after track cuts",1000,0,50);
+  //  fOutputList->Add(fTrackPtAftTrkCuts);
 
-  fTrackPtAftTrkCuts = new TH1F("fTrackPtAftTrkCuts","track pt after track cuts",1000,0,50);
-  fOutputList->Add(fTrackPtAftTrkCuts);
-*/
   fTPCnsigma = new TH2F("fTPCnsigma", "TPC - n sigma",1000,0,50,200,-10,10);
   fOutputList->Add(fTPCnsigma);
-/*
-  fTPCnsigmaAft = new TH2F("fTPCnsigmaAft", "TPC - n sigma after hfepid",1000,0,50,200,-10,10);
-  fOutputList->Add(fTPCnsigmaAft);
-
-  fTPCnsigmaAftOwn = new TH2F("fTPCnsigmaAftOwn", "TPC - n sigma after own pid",1000,0,50,200,-10,10);
-  fOutputList->Add(fTPCnsigmaAftOwn);
-*/
-  fTrkEovPBef = new TH2F("fTrkEovPBef","track E/p before HFE pid",1000,0,50,100,0,2);
-  fOutputList->Add(fTrkEovPBef);
-
-  fTrkEovPBefHad = new TH2F("fTrkEovPBefHad","track E/p for TPCnsig < 3.5",1000,0,50,100,0,2);
-  fOutputList->Add(fTrkEovPBefHad);
-/*
+
   fTrkEovPAft = new TH2F("fTrkEovPAft","track E/p after HFE pid",1000,0,50,100,0,2);
   fOutputList->Add(fTrkEovPAft);
 
-  fTrkEovPAftOwn = new TH2F("fTrkEovPAftOwn","track E/p after own pid",1000,0,50,100,0,2);
-  fOutputList->Add(fTrkEovPAftOwn);
-
-  fdEdxBef = new TH2F("fdEdxBef","track dEdx vs p before HFE pid",1000,0,50,150,0,150);
-  fOutputList->Add(fdEdxBef);
+  //  fTrkEovPBefHad = new TH2F("fTrkEovPBefHad","track E/p for TPCnsig < 3.5",1000,0,50,100,0,2);
+  //  fOutputList->Add(fTrkEovPBefHad);
 
-  fdEdxAft = new TH2F("fdEdxAft","track dEdx vs p after HFE pid",1000,0,50,150,0,150);
-  fOutputList->Add(fdEdxAft);
+  //  fdEdxBef = new TH2F("fdEdxBef","track dEdx vs p before HFE pid",1000,0,50,150,0,150);
+  //  fOutputList->Add(fdEdxBef);
 
-  fdEdxAftOwn = new TH2F("fdEdxAftOwn","track dEdx vs p own HFE pid",1000,0,50,150,0,150);
-  fOutputList->Add(fdEdxAftOwn);
-*/
   fElecPhi = new TH1F("fElecPhi", "Electron phi",1000,0,6.28);
   fOutputList->Add(fElecPhi);
 
@@ -757,12 +1184,12 @@ void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
   fElecPhiTPChalf = new TH1F("fElecPhiTPChalf", "Electron phi for 0<eta<0.7",1000,0,6.28);                            
   fOutputList->Add(fElecPhiTPChalf);
 
-/*  fElecPhiTPC = new TH1F("fElecPhiTPC", "Electron phi after TPC cut",1000,0,6.28);
-  fOutputList->Add(fElecPhiTPC);
+  /*  fElecPhiTPC = new TH1F("fElecPhiTPC", "Electron phi after TPC cut",1000,0,6.28);
+      fOutputList->Add(fElecPhiTPC);
 
-  fElecPhiTPCEovP = new TH1F("fElecPhiTPCEovP", "Electron phi after TPC and E/p cut",1000,0,6.28);
-  fOutputList->Add(fElecPhiTPCEovP);
-*/
+      fElecPhiTPCEovP = new TH1F("fElecPhiTPCEovP", "Electron phi after TPC and E/p cut",1000,0,6.28);
+      fOutputList->Add(fElecPhiTPCEovP);
+   */
   fHadronPhi = new TH1F("fHadronPhi", "Hadron phi",1000,0,6.28);
   fOutputList->Add(fHadronPhi);
 
@@ -772,196 +1199,380 @@ void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
   fHadronPhiPt = new TH2F("fHadronPhiPt", "Hadron phi vs pt; hadron phi; pt (GeV/c)",1000,0,6.28,1000,0,100);
   fOutputList->Add(fHadronPhiPt);
 
-/*
-  fTrackHFEcuts = new TH1F("fTrackHFEcuts","Track phi for HFE cuts",1000,0,6.28);
-  fOutputList->Add(fTrackHFEcuts);
-
-  fTrakPhiSPD1 = new TH1F("fTrakPhiSPD1","Track phi for hit in SPD layer 1",1000,0,6.28);
-  fOutputList->Add(fTrakPhiSPD1);
-
-  fTrakPhiSPD2 = new TH1F("fTrakPhiSPD2","Track phi for hit in SPD layer 2",1000,0,6.28);
-  fOutputList->Add(fTrakPhiSPD2);
+  /*
+     fTrackHFEcuts = new TH1F("fTrackHFEcuts","Track phi for HFE cuts",1000,0,6.28);
+     fOutputList->Add(fTrackHFEcuts);
 
-  fTrakPhiSPDOr = new TH1F("fTrakPhiSPDOr","Track phi for hit in any SPD layer",1000,0,6.28);
-  fOutputList->Add(fTrakPhiSPDOr);
+     fTrakPhiSPD1 = new TH1F("fTrakPhiSPD1","Track phi for hit in SPD layer 1",1000,0,6.28);
+     fOutputList->Add(fTrakPhiSPD1);
 
-  fTrakPhiSPDAnd = new TH1F("fTrakPhiSPDAnd","Track phi for hit in both SPD layer",1000,0,6.28);
-  fOutputList->Add(fTrakPhiSPDAnd);
+     fTrakPhiSPD2 = new TH1F("fTrakPhiSPD2","Track phi for hit in SPD layer 2",1000,0,6.28);
+     fOutputList->Add(fTrakPhiSPD2);
 
-  fTrackHFEcutsITS = new TH1F("fTrackHFEcutsITS","Track phi for HFE cuts + ITS HFE cuts",1000,0,6.28);
-  fOutputList->Add(fTrackHFEcutsITS);
+     fTrakPhiSPDOr = new TH1F("fTrakPhiSPDOr","Track phi for hit in any SPD layer",1000,0,6.28);
+     fOutputList->Add(fTrakPhiSPDOr);
 
-  fOpeningAngleLS = new TH1F("fOpeningAngleLS","Opening angle for LS pairs",100,0,1);
-  fOutputList->Add(fOpeningAngleLS);
+     fTrakPhiSPDAnd = new TH1F("fTrakPhiSPDAnd","Track phi for hit in both SPD layer",1000,0,6.28);
+     fOutputList->Add(fTrakPhiSPDAnd);
 
-  fOpeningAngleULS = new TH1F("fOpeningAngleULS","Opening angle for ULS pairs",100,0,1);
-  fOutputList->Add(fOpeningAngleULS);
-*/
-  fSemiIncElecDphi = new TH2F("fSemiIncElecDphi", "Semi Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
+     fTrackHFEcutsITS = new TH1F("fTrackHFEcutsITS","Track phi for HFE cuts + ITS HFE cuts",1000,0,6.28);
+     fOutputList->Add(fTrackHFEcutsITS);
+   */
+  fSemiIncElecDphi = new TH2F("fSemiIncElecDphi", "Semi Inclusive elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fSemiIncElecDphi);
 
-  fSemiIncElecDphi1 = new TH2F("fSemiIncElecDphi1", "Semi Inclusive elec-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71);
+  fSemiIncElecDphi1 = new TH2F("fSemiIncElecDphi1", "Semi Inclusive elec-had Dphi correlation for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fSemiIncElecDphi1);
 
-  fSemiIncElecDphi2 = new TH2F("fSemiIncElecDphi2", "Semi Inclusive elec-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71);
+  fSemiIncElecDphi2 = new TH2F("fSemiIncElecDphi2", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fSemiIncElecDphi2);
 
-  fSemiIncElecDphi3 = new TH2F("fSemiIncElecDphi3", "Semi Inclusive elec-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71);
+  fSemiIncElecDphi3 = new TH2F("fSemiIncElecDphi3", "Semi Inclusive elec-had Dphi correlation for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fSemiIncElecDphi3);
 
-  fSemiIncElecDphi4 = new TH2F("fSemiIncElecDphi4", "Semi Inclusive elec-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71);
+  fSemiIncElecDphi4 = new TH2F("fSemiIncElecDphi4", "Semi Inclusive elec-had Dphi correlation for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fSemiIncElecDphi4);
 
-  fPhotElecDphi = new TH2F("fPhotElecDphi", "Photon elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
+  fPhotElecDphi = new TH2F("fPhotElecDphi", "Photon elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fPhotElecDphi);
 
-  fPhotElecDphi1 = new TH2F("fPhotElecDphi1", "Photon elec-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71);
+  fPhotElecDphi1 = new TH2F("fPhotElecDphi1", "Photon elec-had Dphi correlation for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fPhotElecDphi1);
 
-  fPhotElecDphi2 = new TH2F("fPhotElecDphi2", "Photon elec-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71);
+  fPhotElecDphi2 = new TH2F("fPhotElecDphi2", "Photon elec-had Dphi correlation for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fPhotElecDphi2);
 
-  fPhotElecDphi3 = new TH2F("fPhotElecDphi3", "Photon elec-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71);
+  fPhotElecDphi3 = new TH2F("fPhotElecDphi3", "Photon elec-had Dphi correlation for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fPhotElecDphi3);
 
-  fPhotElecDphi4 = new TH2F("fPhotElecDphi4", "Photon elec-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71);
+  fPhotElecDphi4 = new TH2F("fPhotElecDphi4", "Photon elec-had Dphi correlation for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fPhotElecDphi4);
 
-  fInclusiveElecDphi = new TH2F("fInclusiveElecDphi", "Inclusive elec-had Dphi correlation",200,0,20,64,-1.57,4.71);
+  fInclusiveElecDphi = new TH2F("fInclusiveElecDphi", "Inclusive elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fInclusiveElecDphi);
 
-  fInclusiveElecDphi1 = new TH2F("fInclusiveElecDphi1", "Inclusive elec-had Dphi correlation for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71);
+  fInclusiveElecDphi1 = new TH2F("fInclusiveElecDphi1", "Inclusive elec-had Dphi correlation for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fInclusiveElecDphi1);
 
-  fInclusiveElecDphi2 = new TH2F("fInclusiveElecDphi2", "Inclusive elec-had Dphi correlation for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71);
+  fInclusiveElecDphi2 = new TH2F("fInclusiveElecDphi2", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fInclusiveElecDphi2);
 
-  fInclusiveElecDphi3 = new TH2F("fInclusiveElecDphi3", "Inclusive elec-had Dphi correlation for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71);
+  fInclusiveElecDphi3 = new TH2F("fInclusiveElecDphi3", "Inclusive elec-had Dphi correlation for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fInclusiveElecDphi3);
 
-  fInclusiveElecDphi4 = new TH2F("fInclusiveElecDphi4", "Inclusive elec-had Dphi correlation for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71);
+  fInclusiveElecDphi4 = new TH2F("fInclusiveElecDphi4", "Inclusive elec-had Dphi correlation for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fInclusiveElecDphi4);
 
-  fDphiULSMassLow = new TH2F("fDphiULSMassLow", "e-h Dphi ULS, mass<cut",200,0,20,64,-1.57,4.71);
-  fOutputList->Add(fDphiULSMassLow);
+  fInclusiveElecDphiEtaFS = new TH2F("fInclusiveElecDphiEtaFS", "Inclusive elec-had Dphi correlation (hadron 1<eta<1.6)",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fInclusiveElecDphiEtaFS);
 
-  fDphiULSMassLow1 = new TH2F("fDphiULSMassLow1", "e-h Dphi ULS, mass<cut for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71);
-  fOutputList->Add(fDphiULSMassLow1);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEtaFS1);
 
-  fDphiULSMassLow2 = new TH2F("fDphiULSMassLow2", "e-h Dphi ULS, mass<cut for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71);
-  fOutputList->Add(fDphiULSMassLow2);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEtaFS2);
 
-  fDphiULSMassLow3 = new TH2F("fDphiULSMassLow3", "e-h Dphi ULS, mass<cut for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71);
-  fOutputList->Add(fDphiULSMassLow3);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEtaFS3);
 
-  fDphiULSMassLow4 = new TH2F("fDphiULSMassLow4", "e-h Dphi ULS, mass<cut for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71);
-  fOutputList->Add(fDphiULSMassLow4);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEtaFS4);
 
-  fDphiLSMassLow = new TH2F("fDphiLSMassLow", "e-h Dphi LS, mass<cut",200,0,20,64,-1.57,4.71);
+  fDphiULSMassLow = new TH2F("fDphiULSMassLow", "e-h Dphi ULS, mass<cut",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLow);
+  fDphiULSMassLow1 = new TH2F("fDphiULSMassLow1", "e-h Dphi ULS, mass<cut for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLow1);
+  fDphiULSMassLow2 = new TH2F("fDphiULSMassLow2", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLow2);
+  fDphiULSMassLow3 = new TH2F("fDphiULSMassLow3", "e-h Dphi ULS, mass<cut for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLow3);
+  fDphiULSMassLow4 = new TH2F("fDphiULSMassLow4", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLow4);
+  fDphiLSMassLow = new TH2F("fDphiLSMassLow", "e-h Dphi LS, mass<cut",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiLSMassLow);
-
-  fDphiLSMassLow1 = new TH2F("fDphiLSMassLow1", "e-h Dphi LS, mass<cut for 1<pt^{asso}<3",200,0,20,64,-1.57,4.71);
+  fDphiLSMassLow1 = new TH2F("fDphiLSMassLow1", "e-h Dphi LS, mass<cut for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiLSMassLow1);
-
-  fDphiLSMassLow2 = new TH2F("fDphiLSMassLow2", "e-h Dphi LS, mass<cut for 3<pt^{asso}<5",200,0,20,64,-1.57,4.71);
+  fDphiLSMassLow2 = new TH2F("fDphiLSMassLow2", "e-h Dphi LS, mass<cut for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiLSMassLow2);
-
-  fDphiLSMassLow3 = new TH2F("fDphiLSMassLow3", "e-h Dphi LS, mass<cut for 5<pt^{asso}<7",200,0,20,64,-1.57,4.71);
+  fDphiLSMassLow3 = new TH2F("fDphiLSMassLow3", "e-h Dphi LS, mass<cut for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiLSMassLow3);
-
-  fDphiLSMassLow4 = new TH2F("fDphiLSMassLow4", "e-h Dphi LS, mass<cut for 7<pt^{asso}<9",200,0,20,64,-1.57,4.71);
+  fDphiLSMassLow4 = new TH2F("fDphiLSMassLow4", "e-h Dphi LS, mass<cut for 8<pt^{asso}<10",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiLSMassLow4);
-
-  fDphiULSMassLowNoPartner = new TH2F("fDphiULSMassLowNoPartner", "e-h Dphi ULS with no partner, mass<mass cut,",200,0,20,64,-1.57,4.71);
+  fDphiULSMassLowNoPartner = new TH2F("fDphiULSMassLowNoPartner", "e-h Dphi ULS with no partner, mass<mass cut,",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiULSMassLowNoPartner);
-
-  fDphiULSMassLowNoPartner1 = new TH2F("fDphiULSMassLowNoPartner1", "e-h Dphi ULS with no partner, mass<mass cut for 1<pt^{asso}<3,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiULSMassLowNoPartner1);
-
-  fDphiULSMassLowNoPartner2 = new TH2F("fDphiULSMassLowNoPartner2", "e-h Dphi ULS with no partner, mass<mass cut for 3<pt^{asso}<5,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiULSMassLowNoPartner2);
-
-  fDphiULSMassLowNoPartner3 = new TH2F("fDphiULSMassLowNoPartner3", "e-h Dphi ULS with no partner, mass<mass cut for 5<pt^{asso}<7,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiULSMassLowNoPartner3);
-
-  fDphiULSMassLowNoPartner4 = new TH2F("fDphiULSMassLowNoPartner4", "e-h Dphi ULS with no partner, mass<mass cut for 7<pt^{asso}<9,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiULSMassLowNoPartner4);
-
-  fDphiLSMassLowNoPartner = new TH2F("fDphiLSMassLowNoPartner", "e-h Dphi LS with no partner, mass<mass cut",200,0,20,64,-1.57,4.71);
+  fDphiLSMassLowNoPartner = new TH2F("fDphiLSMassLowNoPartner", "e-h Dphi LS with no partner, mass<mass cut",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fDphiLSMassLowNoPartner);
-
-  fDphiLSMassLowNoPartner1 = new TH2F("fDphiLSMassLowNoPartner1", "e-h Dphi LS with no partner, mass<mass cut for 1<pt^{asso}<3,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiLSMassLowNoPartner1);                                            
-
-  fDphiLSMassLowNoPartner2 = new TH2F("fDphiLSMassLowNoPartner2", "e-h Dphi LS with no partner, mass<mass cut for 3<pt^{asso}<5,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiLSMassLowNoPartner2);
-
-  fDphiLSMassLowNoPartner3 = new TH2F("fDphiLSMassLowNoPartner3", "e-h Dphi LS with no partner, mass<mass cut for 5<pt^{asso}<7,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiLSMassLowNoPartner3);
-
-  fDphiLSMassLowNoPartner4 = new TH2F("fDphiLSMassLowNoPartner4", "e-h Dphi LS with no partner, mass<mass cut for 7<pt^{asso}<9,",200,0,20,64,-1.57,4.71);
+  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);
   fOutputList->Add(fDphiLSMassLowNoPartner4);
-
   fPhotoElecPt = new TH1F("fPhotoElecPt", "photonic electron pt",1000,0,100);
   fOutputList->Add(fPhotoElecPt);
-
   fSemiInclElecPt = new TH1F("fSemiInclElecPt", "Semi-inclusive electron pt",1000,0,100);
   fOutputList->Add(fSemiInclElecPt);
-
   fInclusiveElecPt = new TH1F("fInclElecPt", "Inclusive electron pt",1000,0,100);
   fOutputList->Add(fInclusiveElecPt);
-
   fULSElecPt = new TH1F("fULSElecPt", "ULS electron pt",1000,0,100);
   fOutputList->Add(fULSElecPt);
-
   fLSElecPt = new TH1F("fLSElecPt", "LS electron pt",1000,0,100);
   fOutputList->Add(fLSElecPt);
-/*
-  fNCellv1 = new TH1F("fNCellv1","Ncell in clus (v1); NCell; count",100,0,100) ;
-  fOutputList->Add(fNCellv1);
 
-  fClsEv1 = new TH1F("fClsEv1", "Clus E(v1); Cls E; count",1000,0,100); 
-  fOutputList->Add(fClsEv1); 
-
-  fNClusv1 = new TH1F("fNClusv1","Nclus in event (v1); NClus; count",500,0,500) ; 
-  fOutputList->Add(fNClusv1);
-
-  fKFParticleP = new TH1F("fKFParticleP","KFparticle rec P; P(GeV/c)",1000,0,50);
-  fOutputList->Add(fKFParticleP);
-
-  fKFParticleE = new TH1F("fKFParticleE", "KfParticle rec E; E; count",1000,0,100); 
-  fOutputList->Add(fKFParticleE);
-*/
-  fInvmassLS1 = new TH1F("fInvmassLS1", "Inv mass of LS (e,e); mass(GeV/c^2); counts;", 1000,0,1.0);
+  fDCAMetPhotElecDphi = new TH2F("fDCAMetPhotElecDphi", "Photon elec-had Dphi correlation DCA method",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetPhotElecDphi);
+  fDCAMetPhotElecDphi1 = new TH2F("fDCAMetPhotElecDphi1", "Photon elec-had Dphi correlation DCA method for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetPhotElecDphi1);
+  fDCAMetPhotElecDphi2 = new TH2F("fDCAMetPhotElecDphi2", "Photon elec-had Dphi correlation DCA method for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetPhotElecDphi2);
+  fDCAMetPhotElecDphi3 = new TH2F("fDCAMetPhotElecDphi3", "Photon elec-had Dphi correlation DCA method for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetPhotElecDphi3);
+  fDCAMetPhotElecDphi4 = new TH2F("fDCAMetPhotElecDphi4", "Photon elec-had Dphi correlation DCA method for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetPhotElecDphi4);
+  fDCAMetDphiULSMassLow = new TH2F("fDCAMetDphiULSMassLow", "e-h Dphi ULS, mass<cut",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiULSMassLow);
+  fDCAMetDphiULSMassLow1 = new TH2F("fDCAMetDphiULSMassLow1", "e-h Dphi ULS, mass<cut for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiULSMassLow1);
+  fDCAMetDphiULSMassLow2 = new TH2F("fDCAMetDphiULSMassLow2", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiULSMassLow2);
+  fDCAMetDphiULSMassLow3 = new TH2F("fDCAMetDphiULSMassLow3", "e-h Dphi ULS, mass<cut for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiULSMassLow3);
+  fDCAMetDphiULSMassLow4 = new TH2F("fDCAMetDphiULSMassLow4", "e-h Dphi ULS, mass<cut for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiULSMassLow4);
+  fDCAMetDphiLSMassLow = new TH2F("fDCAMetDphiLSMassLow", "e-h Dphi LS, mass<cut",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiLSMassLow);
+  fDCAMetDphiLSMassLow1 = new TH2F("fDCAMetDphiLSMassLow1", "e-h Dphi LS, mass<cut for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiLSMassLow1);
+  fDCAMetDphiLSMassLow2 = new TH2F("fDCAMetDphiLSMassLow2", "e-h Dphi LS, mass<cut for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiLSMassLow2);
+  fDCAMetDphiLSMassLow3 = new TH2F("fDCAMetDphiLSMassLow3", "e-h Dphi LS, mass<cut for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiLSMassLow3);
+  fDCAMetDphiLSMassLow4 = new TH2F("fDCAMetDphiLSMassLow4", "e-h Dphi LS, mass<cut for 8<pt^{asso}<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiLSMassLow4);
+  fDCAMetDphiULSMassLowNoPartner = new TH2F("fDCAMetDphiULSMassLowNoPartner", "e-h Dphi ULS with no partner, mass<mass cut,",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiULSMassLowNoPartner);
+  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);
+  fOutputList->Add(fDCAMetDphiULSMassLowNoPartner1);
+  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);
+  fOutputList->Add(fDCAMetDphiULSMassLowNoPartner2);
+  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);
+  fOutputList->Add(fDCAMetDphiULSMassLowNoPartner3);
+  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);
+  fOutputList->Add(fDCAMetDphiULSMassLowNoPartner4);
+  fDCAMetDphiLSMassLowNoPartner = new TH2F("fDCAMetDphiLSMassLowNoPartner", "e-h Dphi LS with no partner, mass<mass cut",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetDphiLSMassLowNoPartner);
+  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);
+  fOutputList->Add(fDCAMetDphiLSMassLowNoPartner1);
+  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);
+  fOutputList->Add(fDCAMetDphiLSMassLowNoPartner2);
+  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);
+  fOutputList->Add(fDCAMetDphiLSMassLowNoPartner3);
+  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);
+  fOutputList->Add(fDCAMetDphiLSMassLowNoPartner4);
+  fDCAMetPhotoElecPt = new TH1F("fDCAMetPhotoElecPt", "photonic electron pt",1000,0,100);
+  fOutputList->Add(fDCAMetPhotoElecPt);
+  fDCAMetULSElecPt = new TH1F("fDCAMetULSElecPt", "ULS electron pt",1000,0,100);
+  fOutputList->Add(fDCAMetULSElecPt);
+  fDCAMetLSElecPt = new TH1F("fDCAMetLSElecPt", "LS electron pt",1000,0,100);
+  fOutputList->Add(fDCAMetLSElecPt);
+
+  fSemiIncElecDphiEta1 = new TH2F("fSemiIncElecDphiEta1", "Semi Inclusive elec-had Dphi correlation for |Eta < 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fSemiIncElecDphiEta1);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta11);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta12);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta13);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta14);
+  fPhotElecDphiEta1 = new TH2F("fPhotElecDphiEta1", "Photon elec-had Dphi correlation for |Eta < 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fPhotElecDphiEta1);
+  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);
+  fOutputList->Add(fPhotElecDphiEta11);
+  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);
+  fOutputList->Add(fPhotElecDphiEta12);
+  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);
+  fOutputList->Add(fPhotElecDphiEta13);
+  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);
+  fOutputList->Add(fPhotElecDphiEta14);
+  fInclusiveElecDphiEta1 = new TH2F("fInclusiveElecDphiEta1", "Inclusive elec-had Dphi correlation for |Eta < 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fInclusiveElecDphiEta1);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta11);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta12);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta13);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta14);
+  fDphiULSMassLowEta1 = new TH2F("fDphiULSMassLowEta1", "e-h Dphi ULS, mass<cut for |Eta < 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLowEta1);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta11);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta12);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta13);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta14);
+  fDphiLSMassLowEta1 = new TH2F("fDphiLSMassLowEta1", "e-h Dphi LS, mass<cut for |Eta < 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiLSMassLowEta1);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta11);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta12);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta13);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta14);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta1);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta11);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta12);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta13);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta14);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta1);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta11);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta12);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta13);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta14);
+
+  fSemiIncElecDphiEta2 = new TH2F("fSemiIncElecDphiEta2", "Semi Inclusive elec-had Dphi correlation for |Eta > 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fSemiIncElecDphiEta2);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta21);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta22);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta23);
+  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);
+  fOutputList->Add(fSemiIncElecDphiEta24);
+  fPhotElecDphiEta2 = new TH2F("fPhotElecDphiEta2", "Photon elec-had Dphi correlation for |Eta > 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fPhotElecDphiEta2);
+  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);
+  fOutputList->Add(fPhotElecDphiEta21);
+  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);
+  fOutputList->Add(fPhotElecDphiEta22);
+  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);
+  fOutputList->Add(fPhotElecDphiEta23);
+  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);
+  fOutputList->Add(fPhotElecDphiEta24);
+  fInclusiveElecDphiEta2 = new TH2F("fInclusiveElecDphiEta2", "Inclusive elec-had Dphi correlation for |Eta > 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fInclusiveElecDphiEta2);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta21);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta22);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta23);
+  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);
+  fOutputList->Add(fInclusiveElecDphiEta24);
+  fDphiULSMassLowEta2 = new TH2F("fDphiULSMassLowEta2", "e-h Dphi ULS, mass<cut for |Eta > 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiULSMassLowEta2);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta21);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta22);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta23);
+  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);
+  fOutputList->Add(fDphiULSMassLowEta24);
+  fDphiLSMassLowEta2 = new TH2F("fDphiLSMassLowEta2", "e-h Dphi LS, mass<cut for |Eta > 0.8|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDphiLSMassLowEta2);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta21);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta22);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta23);
+  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);
+  fOutputList->Add(fDphiLSMassLowEta24);  
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta2);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta21);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta22);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta23);
+  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);
+  fOutputList->Add(fDphiULSMassLowNoPartnerEta24);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta2);
+  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);  
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta21);
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta22);  
+  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);
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta23);
+  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);  
+  fOutputList->Add(fDphiLSMassLowNoPartnerEta24);
+
+  /*  fNCellv1 = new TH1F("fNCellv1","Ncell in clus (v1); NCell; count",100,0,100) ;
+      fOutputList->Add(fNCellv1);
+
+      fClsEv1 = new TH1F("fClsEv1", "Clus E(v1); Cls E; count",1000,0,100); 
+      fOutputList->Add(fClsEv1); 
+
+      fNClusv1 = new TH1F("fNClusv1","Nclus in event (v1); NClus; count",500,0,500) ; 
+      fOutputList->Add(fNClusv1);
+   */
+  fInvmassLS1 = new TH1F("fInvmassLS1", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
   fOutputList->Add(fInvmassLS1);
 
-  fInvmassULS1 = new TH1F("fInvmassULS1", "Inv mass of ULS (e,e); mass(GeV/c^2); counts;", 1000,0,1.0);
+  fInvmassULS1 = new TH1F("fInvmassULS1", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
   fOutputList->Add(fInvmassULS1);
 
-  fInvmassLS2 = new TH1F("fInvmassLS2", "Inv mass of LS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassLS2);
+  fDCAMetInvmassLS1 = new TH1F("fDCAMetInvmassLS1", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
+  fOutputList->Add(fDCAMetInvmassLS1);
 
-  fInvmassULS2 = new TH1F("fInvmassULS2", "Inv mass of ULS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassULS2);
+  fDCAMetInvmassULS1 = new TH1F("fDCAMetInvmassULS1", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
+  fOutputList->Add(fDCAMetInvmassULS1);
+  /*
+     fInvmassLS2 = new TH1F("fInvmassLS2", "Inv mass of LS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassLS2);
+
+     fInvmassULS2 = new TH1F("fInvmassULS2", "Inv mass of ULS (e,e) for pt^{e}>1; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassULS2);
 
-  fInvmassLS3 = new TH1F("fInvmassLS3", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassLS3);                                                          
+     fInvmassLS3 = new TH1F("fInvmassLS3", "Inv mass of LS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassLS3);                                                          
 
-  fInvmassULS3 = new TH1F("fInvmassULS3", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassULS3);
+     fInvmassULS3 = new TH1F("fInvmassULS3", "Inv mass of ULS (e,e) for pt^{e}>2; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassULS3);
 
-  fInvmassLS4 = new TH1F("fInvmassLS4", "Inv mass of LS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassLS4);  
+     fInvmassLS4 = new TH1F("fInvmassLS4", "Inv mass of LS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassLS4);  
 
-  fInvmassULS4 = new TH1F("fInvmassULS4", "Inv mass of ULS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassULS4);
+     fInvmassULS4 = new TH1F("fInvmassULS4", "Inv mass of ULS (e,e) for pt^{e}>3; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassULS4);
 
-  fInvmassLS5 = new TH1F("fInvmassLS5", "Inv mass of LS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassLS5);  
+     fInvmassLS5 = new TH1F("fInvmassLS5", "Inv mass of LS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassLS5);  
 
-  fInvmassULS5 = new TH1F("fInvmassULS5", "Inv mass of ULS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0);
-  fOutputList->Add(fInvmassULS5);
-/*
+     fInvmassULS5 = new TH1F("fInvmassULS5", "Inv mass of ULS (e,e) for pt^{e}>4; mass(GeV/c^2); counts;", 1000,0,1.0);
+     fOutputList->Add(fInvmassULS5);
+   */
   fNoMixedEvents = new TH1F("fNoMixedEvents","",1,0,1) ;
   fOutputList->Add(fNoMixedEvents);
 
@@ -974,63 +1585,122 @@ void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
   fMixedIncElecDphi = new TH2F("fMixedIncElecDphi", "Mixed event - Inclusive elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedIncElecDphi);
 
-  fMixedIncElecDphi1 = new TH2F("fMixedIncElecDphi1", "Mixed event - Inclusive elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71);
+  fMixedIncElecDphi1 = new TH2F("fMixedIncElecDphi1", "Mixed event - Inclusive elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedIncElecDphi1);
 
-  fMixedIncElecDphi2 = new TH2F("fMixedIncElecDphi2", "Mixed event - Inclusive elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71);
+  fMixedIncElecDphi2 = new TH2F("fMixedIncElecDphi2", "Mixed event - Inclusive elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedIncElecDphi2);
 
+  fMixedIncElecDphi3 = new TH2F("fMixedIncElecDphi3", "Mixed event - Inclusive elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedIncElecDphi3);
+
+  fMixedIncElecDphi4 = new TH2F("fMixedIncElecDphi4", "Mixed event - Inclusive elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedIncElecDphi4);
+
   fMixedSemiIncElecDphi = new TH2F("fMixedSemiIncElecDphi", "Mixed event - Semi Inclusive elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedSemiIncElecDphi);
 
-  fMixedSemiIncElecDphi1 = new TH2F("fMixedSemiIncElecDphi1", "Mixed event - Semi Inclusive elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71);
+  fMixedSemiIncElecDphi1 = new TH2F("fMixedSemiIncElecDphi1", "Mixed event - Semi Inclusive elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedSemiIncElecDphi1);
 
-  fMixedSemiIncElecDphi2 = new TH2F("fMixedSemiIncElecDphi2", "Mixed event - Semi Inclusive elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71);
+  fMixedSemiIncElecDphi2 = new TH2F("fMixedSemiIncElecDphi2", "Mixed event - Semi Inclusive elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedSemiIncElecDphi2);
 
+  fMixedSemiIncElecDphi3 = new TH2F("fMixedSemiIncElecDphi3", "Mixed event - Semi Inclusive elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedSemiIncElecDphi3);
+
+  fMixedSemiIncElecDphi4 = new TH2F("fMixedSemiIncElecDphi4", "Mixed event - Semi Inclusive elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedSemiIncElecDphi4);
+
   fMixedPhotElecDphi = new TH2F("fMixedPhotElecDphi", "Mixed event - Photo elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedPhotElecDphi);
 
-  fMixedPhotElecDphi1 = new TH2F("fMixedPhotElecDphi1", "Mixed event - Photo elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71);
+  fMixedPhotElecDphi1 = new TH2F("fMixedPhotElecDphi1", "Mixed event - Photo elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedPhotElecDphi1);
 
-  fMixedPhotElecDphi2 = new TH2F("fMixedPhotElecDphi2", "Mixed event - Photo elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71);
+  fMixedPhotElecDphi2 = new TH2F("fMixedPhotElecDphi2", "Mixed event - Photo elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedPhotElecDphi2);
 
+  fMixedPhotElecDphi3 = new TH2F("fMixedPhotElecDphi3", "Mixed event - Photo elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedPhotElecDphi3);
+
+  fMixedPhotElecDphi4 = new TH2F("fMixedPhotElecDphi4", "Mixed event - Photo elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedPhotElecDphi4);
+
   fMixedDphiULSMassLow = new TH2F("fMixedDphiULSMassLow", "Mixed event - ULS mass < cut elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedDphiULSMassLow);
 
-  fMixedDphiULSMassLow1 = new TH2F("fMixedDphiULSMassLow1", "Mixed event - ULS mass < cut elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71);
+  fMixedDphiULSMassLow1 = new TH2F("fMixedDphiULSMassLow1", "Mixed event - ULS mass < cut elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedDphiULSMassLow1);
 
-  fMixedDphiULSMassLow2 = new TH2F("fMixedDphiULSMassLow2", "Mixed event - ULS mass < cut elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71);
+  fMixedDphiULSMassLow2 = new TH2F("fMixedDphiULSMassLow2", "Mixed event - ULS mass < cut elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedDphiULSMassLow2);
 
+  fMixedDphiULSMassLow3 = new TH2F("fMixedDphiULSMassLow3", "Mixed event - ULS mass < cut elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedDphiULSMassLow3);
+
+  fMixedDphiULSMassLow4 = new TH2F("fMixedDphiULSMassLow4", "Mixed event - ULS mass < cut elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedDphiULSMassLow4);
+
   fMixedDphiLSMassLow = new TH2F("fMixedDphiLSMassLow", "Mixed event - LS mass < cut elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedDphiLSMassLow);
 
-  fMixedDphiLSMassLow1 = new TH2F("fMixedDphiLSMassLow1", "Mixed event - LS mass < cut elec-had Dphi correlation 1<pt<3",200,0,20,100,-1.57,4.71);
+  fMixedDphiLSMassLow1 = new TH2F("fMixedDphiLSMassLow1", "Mixed event - LS mass < cut elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedDphiLSMassLow1);
 
-  fMixedDphiLSMassLow2 = new TH2F("fMixedDphiLSMassLow2", "Mixed event - LS mass < cut elec-had Dphi correlation 3<pt<5",200,0,20,100,-1.57,4.71);
+  fMixedDphiLSMassLow2 = new TH2F("fMixedDphiLSMassLow2", "Mixed event - LS mass < cut elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
   fOutputList->Add(fMixedDphiLSMassLow2);
-*/
-  /*
-  fNLSminus = new TH1F("fNLSminus","No of LS negative pairs (e-,e-) ",1000,-0.5,999.5);
-  fOutputList->Add(fNLSminus);
 
-  fNLSplus = new TH1F("fNLSplus","No of LS positive pairs (e+,e+)",1000,-0.5,999.5);
-  fOutputList->Add(fNLSplus);
+  fMixedDphiLSMassLow3 = new TH2F("fMixedDphiLSMassLow3", "Mixed event - LS mass < cut elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedDphiLSMassLow3);
+
+  fMixedDphiLSMassLow4 = new TH2F("fMixedDphiLSMassLow4", "Mixed event - LS mass < cut elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fMixedDphiLSMassLow4);
+
+  fDCAMetMixedPhotElecDphi = new TH2F("fDCAMetMixedPhotElecDphi", "Mixed event - Photo elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedPhotElecDphi);
+
+  fDCAMetMixedPhotElecDphi1 = new TH2F("fDCAMetMixedPhotElecDphi1", "Mixed event - Photo elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedPhotElecDphi1);
+
+  fDCAMetMixedPhotElecDphi2 = new TH2F("fDCAMetMixedPhotElecDphi2", "Mixed event - Photo elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedPhotElecDphi2);
+
+  fDCAMetMixedPhotElecDphi3 = new TH2F("fDCAMetMixedPhotElecDphi3", "Mixed event - Photo elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedPhotElecDphi3);
+
+  fDCAMetMixedPhotElecDphi4 = new TH2F("fDCAMetMixedPhotElecDphi4", "Mixed event - Photo elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedPhotElecDphi4);
+
+  fDCAMetMixedDphiULSMassLow = new TH2F("fDCAMetMixedDphiULSMassLow", "Mixed event - ULS mass < cut elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiULSMassLow);
+
+  fDCAMetMixedDphiULSMassLow1 = new TH2F("fDCAMetMixedDphiULSMassLow1", "Mixed event - ULS mass < cut elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiULSMassLow1);
+
+  fDCAMetMixedDphiULSMassLow2 = new TH2F("fDCAMetMixedDphiULSMassLow2", "Mixed event - ULS mass < cut elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiULSMassLow2);
+
+  fDCAMetMixedDphiULSMassLow3 = new TH2F("fDCAMetMixedDphiULSMassLow3", "Mixed event - ULS mass < cut elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiULSMassLow3);
 
-  fNULS = new TH1F("fNULS","No of ULS pairs (e+,e-)",1000,-0.5,999.5);
-  fOutputList->Add(fNULS);
-*/
-  fHadronIPxy = new TH1F("fHadronIPxy", "hadron impact paramter XY",1000,-5,5);
-  fOutputList->Add(fHadronIPxy);
+  fDCAMetMixedDphiULSMassLow4 = new TH2F("fDCAMetMixedDphiULSMassLow4", "Mixed event - ULS mass < cut elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiULSMassLow4);
 
-  fHadronIPz = new TH1F("fHadronIPz", "hadron impact paramter Z",1000,-20,20);
-  fOutputList->Add(fHadronIPz);
+  fDCAMetMixedDphiLSMassLow = new TH2F("fDCAMetMixedDphiLSMassLow", "Mixed event - LS mass < cut elec-had Dphi correlation",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiLSMassLow);
+
+  fDCAMetMixedDphiLSMassLow1 = new TH2F("fDCAMetMixedDphiLSMassLow1", "Mixed event - LS mass < cut elec-had Dphi correlation 2<pt<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiLSMassLow1);
+
+  fDCAMetMixedDphiLSMassLow2 = new TH2F("fDCAMetMixedDphiLSMassLow2", "Mixed event - LS mass < cut elec-had Dphi correlation 4<pt<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiLSMassLow2);
+
+  fDCAMetMixedDphiLSMassLow3 = new TH2F("fDCAMetMixedDphiLSMassLow3", "Mixed event - LS mass < cut elec-had Dphi correlation 6<pt<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiLSMassLow3);
+
+  fDCAMetMixedDphiLSMassLow4 = new TH2F("fDCAMetMixedDphiLSMassLow4", "Mixed event - LS mass < cut elec-had Dphi correlation 4<pt<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fDCAMetMixedDphiLSMassLow4);
 
   fHadronPt = new TH1F("fHadronPt","hadron pt distribution",1000,0,100);
   fOutputList->Add(fHadronPt);
@@ -1041,13 +1711,105 @@ void AliAnalysisTaskElecHadronCorrel::UserCreateOutputObjects()
   fCentralityNoPass = new TH1F("fCentralityNoPass", "Centrality No Pass", 101, -1, 100);
   fOutputList->Add(fCentralityNoPass);
 
-  /*
-     Int_t binsv1[8]={1000,1000,200,150,100,100,100,100}; //pt, p, TPCnsig, dEdx, E/p, M20, M02, dispersion 
-     Double_t xminv1[8]={0,0,-10,0,0,0,0,0};
-     Double_t xmaxv1[8]={50,50,10,150,2,2,2,2};
-     fSparseElectron = new THnSparseD ("Electron","Electron",8,binsv1,xminv1,xmaxv1);
-     fOutputList->Add(fSparseElectron);
-   */
+  fHadronDphi = new TH2F("fHadronDphi", "Hadron-had Dphi correlation",200,0,20,64,-1.57,4.71);
+  fOutputList->Add(fHadronDphi);
+
+  fHadronDphi1 = new TH2F("fHadronDphi1", "Hadron-had Dphi correlation for 2<pt^{asso}<4",200,0,20,64,-1.57,4.71);
+  fOutputList->Add(fHadronDphi1);
+
+  fHadronDphi2 = new TH2F("fHadronDphi2", "Hadron-had Dphi correlation for 4<pt^{asso}<6",200,0,20,64,-1.57,4.71);
+  fOutputList->Add(fHadronDphi2);
+
+  fHadronDphi3 = new TH2F("fHadronDphi3", "Hadron-had Dphi correlation for 6<pt^{asso}<8",200,0,20,64,-1.57,4.71);
+  fOutputList->Add(fHadronDphi3);
+
+  fHadronDphi4 = new TH2F("fHadronDphi4", "Hadron-had Dphi correlation for 4<pt^{asso}<10",200,0,20,64,-1.57,4.71);
+  fOutputList->Add(fHadronDphi4);
+
+  fPiPt = new TH1F("fPiPt","Pi (-10 <TPC nsig < -3.5) pt distribution",1000,0,100);
+  fOutputList->Add(fPiPt);
+
+  fHadronDphiNoSS = new TH2F("fHadronDphiNoSS", "Hadron-had Dphi correlation (NoSS cuts)",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSS);
+
+  fHadronDphiNoSS1 = new TH2F("fHadronDphiNoSS1", "Hadron-had Dphi correlation (NoSS cuts) for 2<pt^{asso}<4",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSS1);
+
+  fHadronDphiNoSS2 = new TH2F("fHadronDphiNoSS2", "Hadron-had Dphi correlation (NoSS cuts) for 4<pt^{asso}<6",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSS2);
+
+  fHadronDphiNoSS3 = new TH2F("fHadronDphiNoSS3", "Hadron-had Dphi correlation (NoSS cuts) for 6<pt^{asso}<8",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSS3);
+
+  fHadronDphiNoSS4 = new TH2F("fHadronDphiNoSS4", "Hadron-had Dphi correlation (NoSS cuts) for 4<pt^{asso}<10",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSS4);
+
+  fPiPtNoSS = new TH1F("fPiPtNoSS","Pi (-10 <TPC nsig < -3.5) (NoSS cuts) pt distribution",1000,0,100);
+  fOutputList->Add(fPiPtNoSS);
+
+  fEovPWoSS = new TH2F("fEovPWoSS","E/p distribution without SS cuts",1000,0,50,100,0,2);
+  fOutputList->Add(fEovPWoSS);
+
+  fEovPWSS = new TH2F("fEovPWSS","E/p distribution with SS cuts",1000,0,50,100,0,2);
+  fOutputList->Add(fEovPWSS);
+
+  fEovPHadWoSS = new TH2F("fEovPHadWoSS","E/p distribution for hadrons without SS cuts",1000,0,50,100,0,2);
+  fOutputList->Add(fEovPHadWoSS);
+
+  fEovPHadWSS = new TH2F("fEovPHadWSS","E/p distribution for hadrons with SS cuts",1000,0,50,100,0,2);
+  fOutputList->Add(fEovPHadWSS);
+
+  fHadronDphiEta1 = new TH2F("fHadronDphiEta1", "Hadron-had Dphi correlation for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta1);
+  fHadronDphiEta11 = new TH2F("fHadronDphiEta11", "Hadron-had Dphi correlation for 2<pt^{asso}<4 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta11);
+  fHadronDphiEta12 = new TH2F("fHadronDphiEta12", "Hadron-had Dphi correlation for 4<pt^{asso}<6 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta12);
+  fHadronDphiEta13 = new TH2F("fHadronDphiEta13", "Hadron-had Dphi correlation for 6<pt^{asso}<8 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta13);
+  fHadronDphiEta14 = new TH2F("fHadronDphiEta14", "Hadron-had Dphi correlation for 8<pt^{asso}<10 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta14);
+
+  fHadronDphiNoSSEta1 = new TH2F("fHadronDphiNoSSEta1", "Hadron-had DphiNoSS correlation for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta1);
+  fHadronDphiNoSSEta11 = new TH2F("fHadronDphiNoSSEta11", "Hadron-had DphiNoSS correlation for 2<pt^{asso}<4 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta11);
+  fHadronDphiNoSSEta12 = new TH2F("fHadronDphiNoSSEta12", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<6 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta12);
+  fHadronDphiNoSSEta13 = new TH2F("fHadronDphiNoSSEta13", "Hadron-had DphiNoSS correlation for 6<pt^{asso}<8 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta13);
+  fHadronDphiNoSSEta14 = new TH2F("fHadronDphiNoSSEta14", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<10 for |Eta <1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta14);
+
+  fHadronDphiEta2 = new TH2F("fHadronDphiEta2", "Hadron-had Dphi correlation for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta2);
+  fHadronDphiEta21 = new TH2F("fHadronDphiEta21", "Hadron-had Dphi correlation for 2<pt^{asso}<4 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta21);
+  fHadronDphiEta22 = new TH2F("fHadronDphiEta22", "Hadron-had Dphi correlation for 4<pt^{asso}<6 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta22);
+  fHadronDphiEta23 = new TH2F("fHadronDphiEta23", "Hadron-had Dphi correlation for 6<pt^{asso}<8 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta23);
+  fHadronDphiEta24 = new TH2F("fHadronDphiEta24", "Hadron-had Dphi correlation for 4<pt^{asso}<10 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiEta24);
+
+  fHadronDphiNoSSEta2 = new TH2F("fHadronDphiNoSSEta2", "Hadron-had DphiNoSS correlation for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta2);
+  fHadronDphiNoSSEta21 = new TH2F("fHadronDphiNoSSEta21", "Hadron-had DphiNoSS correlation for 2<pt^{asso}<4 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta21);
+  fHadronDphiNoSSEta22 = new TH2F("fHadronDphiNoSSEta22", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<6 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta22);
+  fHadronDphiNoSSEta23 = new TH2F("fHadronDphiNoSSEta23", "Hadron-had DphiNoSS correlation for 6<pt^{asso}<8 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta23);
+  fHadronDphiNoSSEta24 = new TH2F("fHadronDphiNoSSEta24", "Hadron-had DphiNoSS correlation for 4<pt^{asso}<10 for |Eta >1|",200,0,20,100,-1.57,4.71);
+  fOutputList->Add(fHadronDphiNoSSEta24);
+
+
+  //  Int_t binsv1[6]={500,200,50,50,50,50}; //pt, TPCnsig, E/p, M20, M02, dispersion 
+  //  Double_t xminv1[6]={0,-10,0,0,0,0};
+  //  Double_t xmaxv1[6]={25,10,2,2,2,2};
+  //  fSparseElectron = new THnSparseD ("Electron","Electron",6,binsv1,xminv1,xmaxv1);
+  //  fOutputList->Add(fSparseElectron);
+
   PostData(1,fOutputList);
 }
 
@@ -1066,34 +1828,101 @@ Bool_t AliAnalysisTaskElecHadronCorrel::ProcessCutStep(Int_t cutStep, AliVPartic
   if(!fCFM->CheckParticleCuts(cutStep + kMCOffset, track)) return kFALSE;
   return kTRUE;
 }
+
 //_________________________________________
-void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliESDtrack *track, Bool_t &fFlagPhotonicElec)
+void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectronDCAMet(Int_t itrack, AliVTrack *track, AliPIDResponse *pidResponse)
+{
+    //Identify non-heavy flavour electrons using Invariant mass method using DCA method
+  fNonHFE = new AliSelectNonHFE();
+  fNonHFE->SetAODanalysis(kTRUE);
+  fNonHFE->SetInvariantMassCut(fInvmassCut);
+  fNonHFE->SetAlgorithm("DCA"); //KF
+  fNonHFE->SetPIDresponse(pidResponse);
+  fNonHFE->SetTrackCuts(-3,3);
+
+  fNonHFE->SetHistMassBack(fDCAMetInvmassLS1);
+  fNonHFE->SetHistMass(fDCAMetInvmassULS1);
+
+  fNonHFE->FindNonHFE(itrack,track,fVevent);
+
+  Int_t *fULSPartner = fNonHFE->GetPartnersULS();
+  Int_t *fLSPartner = fNonHFE->GetPartnersLS();
+  Int_t fNULS = fNonHFE->GetNULS();
+  Int_t fNLS = fNonHFE->GetNLS();
+
+  if(fNonHFE->IsULS()){
+    for(Int_t k =0; k< fNonHFE->GetNULS(); k++){
+      fDCAMetULSElecPt->Fill(track->Pt());
+
+      ElectronHadCorrel(itrack,track,fDCAMetDphiULSMassLow, fDCAMetDphiULSMassLow1,fDCAMetDphiULSMassLow2,fDCAMetDphiULSMassLow3,fDCAMetDphiULSMassLow4);
+
+      ElectronHadCorrelNoPartnerDCAMet(itrack,track, fULSPartner, fNULS,fDCAMetDphiULSMassLowNoPartner, fDCAMetDphiULSMassLowNoPartner1,fDCAMetDphiULSMassLowNoPartner2,fDCAMetDphiULSMassLowNoPartner3,fDCAMetDphiULSMassLowNoPartner4);
+
+      MixedEvent(track,fDCAMetMixedDphiULSMassLow,fDCAMetMixedDphiULSMassLow1,fDCAMetMixedDphiULSMassLow2, fDCAMetMixedDphiULSMassLow3, fDCAMetMixedDphiULSMassLow4);
+    }
+  }
+
+  if(fNonHFE->IsLS()){
+    for(Int_t k=0; k < fNonHFE->GetNLS(); k++){
+      fDCAMetLSElecPt->Fill(track->Pt());
+
+      ElectronHadCorrel(itrack,track,fDCAMetDphiLSMassLow,fDCAMetDphiLSMassLow1,fDCAMetDphiLSMassLow2,fDCAMetDphiLSMassLow3,fDCAMetDphiLSMassLow4);
+
+      ElectronHadCorrelNoPartnerDCAMet(itrack,track,fLSPartner, fNLS,fDCAMetDphiLSMassLowNoPartner, fDCAMetDphiLSMassLowNoPartner1,fDCAMetDphiLSMassLowNoPartner2,fDCAMetDphiLSMassLowNoPartner3,fDCAMetDphiLSMassLowNoPartner4);
+
+      MixedEvent(track,fDCAMetMixedDphiLSMassLow,fDCAMetMixedDphiLSMassLow1,fDCAMetMixedDphiLSMassLow2, fDCAMetMixedDphiLSMassLow3, fDCAMetMixedDphiLSMassLow4);
+    }
+  }
+}
+//_________________________________________
+void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliVTrack *track, Bool_t &fFlagPhotonicElec)
 {
   //Identify non-heavy flavour electrons using Invariant mass method
 
   fTrackCuts1->SetAcceptKinkDaughters(kFALSE);
   fTrackCuts1->SetRequireTPCRefit(kTRUE);
-  fTrackCuts1->SetRequireITSRefit(kTRUE);
+  fTrackCuts1->SetRequireITSRefit(fAssoEleITSref);
   fTrackCuts1->SetEtaRange(-0.9,0.9);
   fTrackCuts1->SetRequireSigmaToVertex(kTRUE);
-  //fTrackCuts1->SetMaxChi2PerClusterTPC(3.5);
   fTrackCuts1->SetMaxChi2PerClusterTPC(4);
-  fTrackCuts1->SetMinNClustersTPC(80);
-
-  //  const AliESDVertex *pVtx = fESD->GetPrimaryVertex();
+  fTrackCuts1->SetMinNClustersTPC(fAssoElecTPCNCls);
+  fTrackCuts1->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts1->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts1->SetDCAToVertex2D(kTRUE);
 
   Bool_t flagPhotonicElec = kFALSE;
-  Int_t NLS_plus=0, NLS_minus=0, NULS=0;
 
-  for(Int_t jTracks = 0; jTracks<fESD->GetNumberOfTracks(); jTracks++){
-    AliESDtrack* trackAsso = fESD->GetTrack(jTracks);
-    if (!trackAsso) {
+  for(Int_t jTracks = 0; jTracks<fVevent->GetNumberOfTracks(); jTracks++){
+    AliVParticle* VtrackAsso = fVevent->GetTrack(jTracks);
+    if (!VtrackAsso) {
       printf("ERROR: Could not receive track %d\n", jTracks);
       continue;
     }
+
+    AliVTrack *trackAsso = dynamic_cast<AliVTrack*>(VtrackAsso);
+    if(!trackAsso) continue;
+
+    //track cuts applied
+    if(IsAODanalysis()) { 
+      AliAODTrack *atrackAsso = dynamic_cast<AliAODTrack*>(VtrackAsso);
+      if(!atrackAsso) continue;
+      if(!atrackAsso->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if(atrackAsso->GetTPCNcls() < fAssoElecTPCNCls) continue;
+      if(!(atrackAsso->GetStatus()&AliESDtrack::kTPCrefit)) continue;
+
+      if(fAssoEleITSref){
+        if(!(atrackAsso->GetStatus()&AliESDtrack::kITSrefit)) continue;
+      }
+    }
+    else{
+      AliESDtrack *etrackAsso = dynamic_cast<AliESDtrack*>(VtrackAsso);
+      if(!etrackAsso) continue;
+      if(!fTrackCuts1->AcceptTrack(etrackAsso)) continue;
+    }
+
     if(jTracks==itrack) continue;
 
-    Double_t dEdxAsso = -999., ptAsso=-999., openingAngle = -999.,nsigma=-999.0;
+    Double_t dEdxAsso = -999., ptAsso=-999., nsigma=-999.0;
     Double_t mass=-999., width = -999;
     Bool_t fFlagLS=kFALSE, fFlagULS=kFALSE;
 
@@ -1105,11 +1934,6 @@ void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliES
 
     if(ptAsso <0.3) continue;
     if(trackAsso->Eta()<-0.9 || trackAsso->Eta()>0.9) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, trackAsso)) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, trackAsso)) continue;
-
-    if(!fTrackCuts1->AcceptTrack(trackAsso)) continue;
-    //    if(dEdxAsso <70 || dEdxAsso>100) continue; //11a pass1
     if(nsigma < -3 || nsigma > 3) continue;
 
     Int_t fPDGe1 = 11; Int_t fPDGe2 = 11;
@@ -1119,6 +1943,8 @@ void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliES
     if(charge == chargeAsso) fFlagLS = kTRUE;
     if(charge != chargeAsso) fFlagULS = kTRUE;
 
+    AliKFParticle::SetField(fVevent->GetMagneticField());
+
     AliKFParticle ge1 = AliKFParticle(*track, fPDGe1);
     AliKFParticle ge2 = AliKFParticle(*trackAsso, fPDGe2);
     AliKFParticle recg(ge1, ge2);
@@ -1127,51 +1953,47 @@ void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliES
     Double_t chi2recg = recg.GetChi2()/recg.GetNDF();
     if(TMath::Sqrt(TMath::Abs(chi2recg))>3.) continue;
 
-    openingAngle = ge1.GetAngle(ge2);
-    //    if(fFlagLS) fOpeningAngleLS->Fill(openingAngle);
-    //    if(fFlagULS) fOpeningAngleULS->Fill(openingAngle);
-
-    //   if(openingAngle > fOpeningAngleCut) continue;
-
     Int_t MassCorrect;
     MassCorrect = recg.GetMass(mass,width);
 
-    if(fFlagLS){
-      if(track->Charge() > 0 ) NLS_plus++;
-      if(track->Charge() < 0 ) NLS_minus++;
-    }
-    if(fFlagULS) NULS++;
-
     if(fFlagLS) {
-      fInvmassLS1->Fill(mass);
-      if(track->Pt()> 1) fInvmassLS2->Fill(mass);
-      if(track->Pt()>2) fInvmassLS3->Fill(mass);
-      if(track->Pt()>3) fInvmassLS4->Fill(mass);
-      if(track->Pt()>4) fInvmassLS5->Fill(mass);
+      if(track->Pt()>2)fInvmassLS1->Fill(mass);
+      // if(track->Pt()> 1) fInvmassLS2->Fill(mass);
+      // if(track->Pt()>2) fInvmassLS3->Fill(mass);
+      // if(track->Pt()>3) fInvmassLS4->Fill(mass);
+      // if(track->Pt()>4) fInvmassLS5->Fill(mass);
     }
     if(fFlagULS) {
-      fInvmassULS1->Fill(mass);
-      if(track->Pt() >1) fInvmassULS2->Fill(mass);
-      if(track->Pt() >2) fInvmassULS3->Fill(mass);
-      if(track->Pt() >3) fInvmassULS4->Fill(mass);
-      if(track->Pt() >4) fInvmassULS5->Fill(mass);
+      if(track->Pt()>2)fInvmassULS1->Fill(mass);
+      //if(track->Pt() >1) fInvmassULS2->Fill(mass);
+      //if(track->Pt() >2) fInvmassULS3->Fill(mass);
+      //if(track->Pt() >3) fInvmassULS4->Fill(mass);
+      //if(track->Pt() >4) fInvmassULS5->Fill(mass);
     }
 
     if(mass<fInvmassCut){
       if(fFlagULS)
       {
         ElectronHadCorrel(itrack,track,fDphiULSMassLow, fDphiULSMassLow1,fDphiULSMassLow2,fDphiULSMassLow3,fDphiULSMassLow4);
+        ElectronHadCorrelEtaBins(itrack,track,fDphiULSMassLowEta1, fDphiULSMassLowEta11,fDphiULSMassLowEta12,fDphiULSMassLowEta13,fDphiULSMassLowEta14,fDphiULSMassLowEta2, fDphiULSMassLowEta21,fDphiULSMassLowEta22,fDphiULSMassLowEta23,fDphiULSMassLowEta24);
         fULSElecPt->Fill(track->Pt());
-//        MixedEvent(track,fMixedDphiULSMassLow,fMixedDphiULSMassLow1,fMixedDphiULSMassLow2);
+        MixedEvent(track,fMixedDphiULSMassLow,fMixedDphiULSMassLow1,fMixedDphiULSMassLow2, fMixedDphiULSMassLow3, fMixedDphiULSMassLow4);
       }
       if(fFlagLS)
       {
         ElectronHadCorrel(itrack,track,fDphiLSMassLow,fDphiLSMassLow1,fDphiLSMassLow2,fDphiLSMassLow3,fDphiLSMassLow4);
+        ElectronHadCorrelEtaBins(itrack,track,fDphiLSMassLowEta1, fDphiLSMassLowEta11,fDphiLSMassLowEta12,fDphiLSMassLowEta13,fDphiLSMassLowEta14,fDphiLSMassLowEta2, fDphiLSMassLowEta21,fDphiLSMassLowEta22,fDphiLSMassLowEta23,fDphiLSMassLowEta24);
         fLSElecPt->Fill(track->Pt());
-//        MixedEvent(track,fMixedDphiLSMassLow,fMixedDphiLSMassLow1,fMixedDphiLSMassLow2);
+        MixedEvent(track,fMixedDphiLSMassLow,fMixedDphiLSMassLow1,fMixedDphiLSMassLow2, fMixedDphiLSMassLow3, fMixedDphiLSMassLow4);
+      }
+      if(fFlagLS){
+        ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiLSMassLowNoPartner, fDphiLSMassLowNoPartner1,fDphiLSMassLowNoPartner2,fDphiLSMassLowNoPartner3,fDphiLSMassLowNoPartner4);
+        ElectronHadCorrelEtaBinsNoPartner(itrack,jTracks,track,fDphiLSMassLowNoPartnerEta1, fDphiLSMassLowNoPartnerEta11,fDphiLSMassLowNoPartnerEta12,fDphiLSMassLowNoPartnerEta13,fDphiLSMassLowNoPartnerEta14,fDphiLSMassLowNoPartnerEta2, fDphiLSMassLowNoPartnerEta21,fDphiLSMassLowNoPartnerEta22,fDphiLSMassLowNoPartnerEta23,fDphiLSMassLowNoPartnerEta24);
+      }
+      if(fFlagULS) {
+        ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiULSMassLowNoPartner, fDphiULSMassLowNoPartner1,fDphiULSMassLowNoPartner2,fDphiULSMassLowNoPartner3,fDphiULSMassLowNoPartner4);
+        ElectronHadCorrelEtaBinsNoPartner(itrack,jTracks,track,fDphiULSMassLowNoPartnerEta1, fDphiULSMassLowNoPartnerEta11,fDphiULSMassLowNoPartnerEta12,fDphiULSMassLowNoPartnerEta13,fDphiULSMassLowNoPartnerEta14,fDphiULSMassLowNoPartnerEta2, fDphiULSMassLowNoPartnerEta21,fDphiULSMassLowNoPartnerEta22,fDphiULSMassLowNoPartnerEta23,fDphiULSMassLowNoPartnerEta24);
       }
-      if(fFlagLS) ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiLSMassLowNoPartner, fDphiLSMassLowNoPartner1,fDphiLSMassLowNoPartner2,fDphiLSMassLowNoPartner3,fDphiLSMassLowNoPartner4);
-      if(fFlagULS) ElectronHadCorrelNoPartner(itrack,jTracks,track,fDphiULSMassLowNoPartner, fDphiULSMassLowNoPartner1,fDphiULSMassLowNoPartner2,fDphiULSMassLowNoPartner3,fDphiULSMassLowNoPartner4);
     }
 
     if(mass<fInvmassCut && fFlagULS && !flagPhotonicElec){
@@ -1179,16 +2001,11 @@ void AliAnalysisTaskElecHadronCorrel::SelectPhotonicElectron(Int_t itrack, AliES
     }
     //   }
 
-  }
-  fFlagPhotonicElec = flagPhotonicElec;
-
-//  fNLSminus->Fill(NLS_minus);
-//  fNLSplus->Fill(NLS_plus);
-//  fNULS->Fill(NULS);
-
+}
+fFlagPhotonicElec = flagPhotonicElec;
 }
 //_________________________________________
-void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrel(Int_t itrack, AliESDtrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4)
+void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrel(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4)
 {
   //Construct Delta Phi between electrons and hadrons
 
@@ -1197,44 +2014,51 @@ void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrel(Int_t itrack, AliESDtrac
   fTrackCuts2->SetRequireITSRefit(kTRUE);
   fTrackCuts2->SetEtaRange(-0.9,0.9);
   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
-//  fTrackCuts2->SetMaxChi2PerClusterTPC(3.5);
   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
-  fTrackCuts2->SetMinNClustersTPC(80);
-
-  for(Int_t ktracks = 0; ktracks<fESD->GetNumberOfTracks(); ktracks++){
-    AliESDtrack* trackHad = fESD->GetTrack(ktracks);
-    if (!trackHad) {
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
+    if (!VtrackHad) {
       printf("ERROR: Could not receive track %d\n", ktracks);
       continue;
     }
+
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+    if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue; 
+    }
+    else{   
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); 
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; 
+    }
+
     if(ktracks == itrack) continue; //do not select the same electron
 
     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
     Double_t ptEle = -999;
     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
     Double_t pi = 3.14;
-    Float_t IPxy=-999.0, IPz=-999.0;
 
     dEdxHad = trackHad->GetTPCsignal();
     ptHad = trackHad->Pt();
     pHad = trackHad->P();
     ptEle = track->Pt();
-    trackHad->GetImpactParameters(IPxy,IPz);
 
-//    if(ptHad <2) continue;
+    //    if(ptHad <2) continue;
     if(ptHad > ptEle) continue;
     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, trackHad)) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, trackHad)) continue;
 
-    if(!fTrackCuts2->AcceptTrack(trackHad)) continue;
-  
-   // fHadronIPxy->Fill(IPxy);
-   // fHadronIPz->Fill(IPz);
-
-   // if(TMath::Abs(IPxy)>2.5) continue;
-   // fHadronPhi->Fill(trackHad->Phi());
-    
     phiEle = track->Phi();
     phiHad = trackHad->Phi();
     Dphi = phiEle - phiHad;
@@ -1247,12 +2071,12 @@ void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrel(Int_t itrack, AliESDtrac
     if(ptHad>2 && ptHad<4) DphiPt1->Fill(ptEle,Dphi);
     if(ptHad>4 && ptHad<6) DphiPt2->Fill(ptEle,Dphi);
     if(ptHad>6 && ptHad<8) DphiPt3->Fill(ptEle,Dphi);
-    if(ptHad>8 && ptHad<10) DphiPt4->Fill(ptEle,Dphi);
+    if(ptHad>4 && ptHad<10) DphiPt4->Fill(ptEle,Dphi);
 
   }
 }
 //_________________________________________
-void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartner(Int_t itrack,Int_t jtrack, AliESDtrack *track, TH2F *DphiPtNew, TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4)
+void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartner(Int_t itrack,Int_t jtrack, AliVTrack *track, TH2F *DphiPtNew, TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4)
 {
   //Construct Delta Phi between electrons and hadrons for electrons from invariant mass calculation excluding associated track
 
@@ -1261,39 +2085,127 @@ void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartner(Int_t itrack,In
   fTrackCuts2->SetRequireITSRefit(kTRUE);
   fTrackCuts2->SetEtaRange(-0.9,0.9);
   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
- // fTrackCuts2->SetMaxChi2PerClusterTPC(3.5);
   fTrackCuts2->SetMaxChi2PerClusterTPC(4);
-  fTrackCuts2->SetMinNClustersTPC(80);
-
-  for(Int_t ktracks = 0; ktracks<fESD->GetNumberOfTracks(); ktracks++){
-    AliESDtrack* trackHad = fESD->GetTrack(ktracks);
-    if (!trackHad) {
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
+    if (!VtrackHad) {
       printf("ERROR: Could not receive track %d\n", ktracks);
       continue;
     }
-    if(ktracks == itrack || ktracks == jtrack) continue; //do not select the same electron and associated track from inv mass cal
 
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+      if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue; 
+    }
+    else{   
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); 
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; 
+    }
+
+    if(ktracks == itrack || ktracks == jtrack) continue; //do not select the same electron and associated track from inv mass cal
 
     Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
     Double_t ptEle = -999;
     Double_t phiEle = -999, phiHad = -999, Dphi = -999;
     Double_t pi = 3.14;
-    Float_t IPxy=-999.0, IPz=-999.0;
 
     dEdxHad = trackHad->GetTPCsignal();
     ptHad = trackHad->Pt();
     pHad = trackHad->P();
     ptEle = track->Pt();
-    trackHad->GetImpactParameters(IPxy,IPz);
 
-//    if(ptHad <2) continue;
+    //    if(ptHad <2) continue;
     if(ptHad > ptEle) continue;
     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, trackHad)) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, trackHad)) continue;
 
-    if(!fTrackCuts2->AcceptTrack(trackHad)) continue;
-//    if(TMath::Abs(IPxy)>2.5) continue;
+    phiEle = track->Phi();
+    phiHad = trackHad->Phi();
+    Dphi = phiEle - phiHad;
+    if (Dphi > 3*pi/2)
+      Dphi = Dphi - 2*pi;
+    if (Dphi < -pi/2)
+      Dphi = Dphi + 2*pi;
+
+    if(ptHad>2) DphiPtNew->Fill(ptEle,Dphi);
+    if(ptHad>2 && ptHad<4) DphiPtNew1->Fill(ptEle,Dphi);
+    if(ptHad>4 && ptHad<6) DphiPtNew2->Fill(ptEle,Dphi);
+    if(ptHad>6 && ptHad<8) DphiPtNew3->Fill(ptEle,Dphi);
+    if(ptHad>4 && ptHad<10) DphiPtNew4->Fill(ptEle,Dphi);
+  }
+}
+//_________________________________________
+void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartnerDCAMet(Int_t itrack,AliVTrack *track,Int_t * AssoList, Int_t NAsso, TH2F *DphiPtNew, TH2F *DphiPtNew1,TH2F *DphiPtNew2,TH2F *DphiPtNew3,TH2F *DphiPtNew4)
+{
+  //Construct Delta Phi between electrons and hadrons for electrons from invariant mass calculation excluding associated track
+
+  fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
+  fTrackCuts2->SetRequireTPCRefit(kTRUE);
+  fTrackCuts2->SetRequireITSRefit(kTRUE);
+  fTrackCuts2->SetEtaRange(-0.9,0.9);
+  fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
+  fTrackCuts2->SetMaxChi2PerClusterTPC(4);
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
+    if (!VtrackHad) {
+      printf("ERROR: Could not receive track %d\n", ktracks);
+      continue;
+    }
+
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+    if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue;
+    }
+    else{
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
+    }
+    
+    if(ktracks == itrack ) continue; //do not select the same electron and associated track from inv mass cal
+    Bool_t IsPartner = kFALSE;
+    //Check if this track is a Non-HFE partner
+    for(Int_t i = 0; i < NAsso; i++)
+    {
+      if(AssoList[i]==ktracks) IsPartner=kTRUE;
+    }
+    if(IsPartner) continue;
+
+    Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
+    Double_t ptEle = -999;
+    Double_t phiEle = -999, phiHad = -999, Dphi = -999;
+    Double_t pi = 3.14;
+
+    dEdxHad = trackHad->GetTPCsignal();
+    ptHad = trackHad->Pt();
+    pHad = trackHad->P();
+    ptEle = track->Pt();
+
+    //    if(ptHad <2) continue;
+    if(ptHad > ptEle) continue;
+    if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
 
     phiEle = track->Phi();
     phiHad = trackHad->Phi();
@@ -1307,26 +2219,272 @@ void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelNoPartner(Int_t itrack,In
     if(ptHad>2 && ptHad<4) DphiPtNew1->Fill(ptEle,Dphi);
     if(ptHad>4 && ptHad<6) DphiPtNew2->Fill(ptEle,Dphi);
     if(ptHad>6 && ptHad<8) DphiPtNew3->Fill(ptEle,Dphi);
-    if(ptHad>8 && ptHad<10) DphiPtNew4->Fill(ptEle,Dphi);
+    if(ptHad>4 && ptHad<10) DphiPtNew4->Fill(ptEle,Dphi);
+  }
+}
+
+
+//_________________________________________
+void AliAnalysisTaskElecHadronCorrel::ElectronHadCorrelEtaFarSide(Int_t itrack, AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2,TH2F *DphiPt3,TH2F *DphiPt4)
+{
+  //Construct Delta Phi between electrons and hadrons for 1<eta(had)<1.6
+
+  fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
+  fTrackCuts2->SetRequireTPCRefit(kTRUE);
+  fTrackCuts2->SetRequireITSRefit(kTRUE);
+  fTrackCuts2->SetEtaRange(-0.9,0.9);
+  fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
+  fTrackCuts2->SetMaxChi2PerClusterTPC(4);
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
+    if (!VtrackHad) {
+      printf("ERROR: Could not receive track %d\n", ktracks);
+      continue;
+    }
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+    if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue;
+    }
+    else{
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
+    }
+
+    if(ktracks == itrack) continue; //do not select the same electron
+
+    Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
+    Double_t ptEle = -999;
+    Double_t phiEle = -999, phiHad = -999, Dphi = -999;
+    Double_t pi = 3.14;
+
+    dEdxHad = trackHad->GetTPCsignal();
+    ptHad = trackHad->Pt();
+    pHad = trackHad->P();
+    ptEle = track->Pt();
+
+    //    if(ptHad <2) continue;
+    if(ptHad > ptEle) continue;
+    if(trackHad->Eta()<1 || trackHad->Eta()>1.6) continue;
+
+    phiEle = track->Phi();
+    phiHad = trackHad->Phi();
+    Dphi = phiEle - phiHad;
+    if (Dphi > 3*pi/2)
+      Dphi = Dphi - 2*pi;
+    if (Dphi < -pi/2)
+      Dphi = Dphi + 2*pi;
+
+    if(ptHad>2) DphiPt->Fill(ptEle,Dphi);
+    if(ptHad>2 && ptHad<4) DphiPt1->Fill(ptEle,Dphi);
+    if(ptHad>4 && ptHad<6) DphiPt2->Fill(ptEle,Dphi);
+    if(ptHad>6 && ptHad<8) DphiPt3->Fill(ptEle,Dphi);
+    if(ptHad>4 && ptHad<10) DphiPt4->Fill(ptEle,Dphi);
+
+  }
+}
+//_________________________________________
+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)
+{
+  //Construct Delta Phi between electrons and hadrons in different Eta bins
+
+  fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
+  fTrackCuts2->SetRequireTPCRefit(kTRUE);
+  fTrackCuts2->SetRequireITSRefit(kTRUE);
+  fTrackCuts2->SetEtaRange(-0.9,0.9);
+  fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
+  fTrackCuts2->SetMaxChi2PerClusterTPC(4);
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
+    if (!VtrackHad) {
+      printf("ERROR: Could not receive track %d\n", ktracks);
+      continue;
+    }
+
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+    if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue;
+    }
+    else{
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
+    }
+
+    if(ktracks == itrack) continue; //do not select the same electron
+
+    Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
+    Double_t ptEle = -999;
+    Double_t phiEle = -999, phiHad = -999, Dphi = -999;
+    Double_t etaEle = -999, etaHad=-999, DEta=-999;
+    Double_t pi = 3.14;
+
+    dEdxHad = trackHad->GetTPCsignal();
+    ptHad = trackHad->Pt();
+    pHad = trackHad->P();
+    ptEle = track->Pt();
+
+    //    if(ptHad <2) continue;
+    if(ptHad > ptEle) continue;
+    if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
+
+    phiEle = track->Phi();
+    phiHad = trackHad->Phi();
+    Dphi = phiEle - phiHad;
+
+    if (Dphi > 3*pi/2)
+      Dphi = Dphi - 2*pi;
+    if (Dphi < -pi/2)
+      Dphi = Dphi + 2*pi;
+
+    etaEle = track->Eta();
+    etaHad = trackHad->Eta();
+    DEta = etaEle - etaHad;
+
+    if(TMath::Abs(DEta)<0.8){
+      if(ptHad>2) DphiPtEta1->Fill(ptEle,Dphi);
+      if(ptHad>2 && ptHad<4) DphiPtEta11->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<6) DphiPtEta12->Fill(ptEle,Dphi);
+      if(ptHad>6 && ptHad<8) DphiPtEta13->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<10) DphiPtEta14->Fill(ptEle,Dphi);
+    }
+
+    if(TMath::Abs(DEta)>0.8){
+      if(ptHad>2) DphiPtEta2->Fill(ptEle,Dphi);
+      if(ptHad>2 && ptHad<4) DphiPtEta21->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<6) DphiPtEta22->Fill(ptEle,Dphi);
+      if(ptHad>6 && ptHad<8) DphiPtEta23->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<10) DphiPtEta24->Fill(ptEle,Dphi);
+    }
   }
 }
-/*
 //_________________________________________
-void AliAnalysisTaskElecHadronCorrel::MixedEvent(AliESDtrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2)
+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)
 {
+  //Construct Delta Phi between electrons and hadrons in different Eta bins (exclude associated track)
+
+  fTrackCuts2->SetAcceptKinkDaughters(kFALSE);
+  fTrackCuts2->SetRequireTPCRefit(kTRUE);
+  fTrackCuts2->SetRequireITSRefit(kTRUE);
+  fTrackCuts2->SetEtaRange(-0.9,0.9);
+  fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
+  fTrackCuts2->SetMaxChi2PerClusterTPC(4);
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);
+    if (!VtrackHad) {
+      printf("ERROR: Could not receive track %d\n", ktracks);
+      continue;
+    }
+
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+    if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue;
+    }
+    else{
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad);
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue;
+    }
+
+    if(ktracks == itrack || ktracks == jtrack) continue; //do not select the same electron and associated track from inv mass cal
+
+    Double_t ptHad= -999, pHad=-999., dEdxHad = -999;
+    Double_t ptEle = -999;
+    Double_t phiEle = -999, phiHad = -999, Dphi = -999;
+    Double_t etaEle = -999, etaHad=-999, DEta=-999;
+    Double_t pi = 3.14;
+
+    dEdxHad = trackHad->GetTPCsignal();
+    ptHad = trackHad->Pt();
+    pHad = trackHad->P();
+    ptEle = track->Pt();
 
-  const AliESDVertex *pVtx = fESD->GetPrimaryVertex();
+    //    if(ptHad <2) continue;
+    if(ptHad > ptEle) continue;
+    if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
+
+    phiEle = track->Phi();
+    phiHad = trackHad->Phi();
+    Dphi = phiEle - phiHad;
+
+    if (Dphi > 3*pi/2)
+      Dphi = Dphi - 2*pi;
+    if (Dphi < -pi/2)
+      Dphi = Dphi + 2*pi;
+
+    etaEle = track->Eta();
+    etaHad = trackHad->Eta();
+    DEta = etaEle - etaHad;
+
+    if(TMath::Abs(DEta)<0.8){
+      if(ptHad>2) DphiPtEta1->Fill(ptEle,Dphi);
+      if(ptHad>2 && ptHad<4) DphiPtEta11->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<6) DphiPtEta12->Fill(ptEle,Dphi);
+      if(ptHad>6 && ptHad<8) DphiPtEta13->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<10) DphiPtEta14->Fill(ptEle,Dphi);
+    }
+
+    if(TMath::Abs(DEta)>0.8){
+      if(ptHad>2) DphiPtEta2->Fill(ptEle,Dphi);
+      if(ptHad>2 && ptHad<4) DphiPtEta21->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<6) DphiPtEta22->Fill(ptEle,Dphi);
+      if(ptHad>6 && ptHad<8) DphiPtEta23->Fill(ptEle,Dphi);
+      if(ptHad>4 && ptHad<10) DphiPtEta24->Fill(ptEle,Dphi);
+    }
+  }
+}
+
+//_________________________________________
+void AliAnalysisTaskElecHadronCorrel::MixedEvent(AliVTrack *track, TH2F *DphiPt, TH2F *DphiPt1,TH2F *DphiPt2, TH2F *DphiPt3, TH2F *DphiPt4)
+{
+
+  const AliAODVertex *pVtx = fAOD->GetPrimaryVertex();
   Double_t zVtx;
   zVtx = pVtx->GetZ();
 
+  AliCentrality *fCentrality1 = (AliCentrality*)fVevent->GetCentrality();
+  Double_t centvalue = fCentrality1->GetCentralityPercentile(fkCentralityMethod);
 
-  AliCentrality *fCentrality = (AliCentrality*)fESD->GetCentrality();
-  Double_t centvalue = fCentrality->GetCentralityPercentile("V0M");
-
-  AliEventPool* pool = fPoolMgr->GetEventPool(centvalue, zVtx); // Get the buffer associated with the current centrality and z-vtx
+  AliEventPool* pool;
+  pool = fPoolMgr->GetEventPool(centvalue, zVtx); // Get the buffer associated with the current centrality and z-vtx
   if (!pool)
+  {
     AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centvalue, zVtx));
-
+    return;
+  }
   //  pool->PrintInfo();
   if (pool->GetCurrentNEvents() >= 5) // start mixing when 5 events are in the buffer
   {
@@ -1335,7 +2493,7 @@ void AliAnalysisTaskElecHadronCorrel::MixedEvent(AliESDtrack *track, TH2F *DphiP
     fMixStat->Fill(pool->GetCurrentNEvents(),centvalue);
     fMixStat1->Fill(pool->GetCurrentNEvents(),zVtx);
 
-   // cout << "nMix = " << nMix << " tracks in pool = " << pool->NTracksInPool() << endl;
+    // cout << "nMix = " << nMix << " tracks in pool = " << pool->NTracksInPool() << endl;
     for (Int_t jMix=0; jMix<nMix; jMix++)  // mix with each event in the buffer
     {
       TObjArray* bgTracks = pool->GetEvent(jMix);
@@ -1361,15 +2519,16 @@ void AliAnalysisTaskElecHadronCorrel::MixedEvent(AliESDtrack *track, TH2F *DphiP
           Dphi = Dphi - 2*pi;
         if (Dphi < -pi/2)
           Dphi = Dphi + 2*pi;
-        DphiPt->Fill(ptEle,Dphi);
+        if(ptmixtrk>2) DphiPt->Fill(ptEle,Dphi);
         if(ptmixtrk>2 && ptmixtrk<4) DphiPt1->Fill(ptEle,Dphi);
         if(ptmixtrk>4 && ptmixtrk<6) DphiPt2->Fill(ptEle,Dphi);
+        if(ptmixtrk>6 && ptmixtrk<8) DphiPt3->Fill(ptEle,Dphi);
+        if(ptmixtrk>4 && ptmixtrk<10) DphiPt4->Fill(ptEle,Dphi);
       }
     }
-
   }
-
 }
+
 //___________________________________________
 TObjArray*  AliAnalysisTaskElecHadronCorrel::CloneAndReduceTrackList()
 {
@@ -1381,18 +2540,37 @@ TObjArray*  AliAnalysisTaskElecHadronCorrel::CloneAndReduceTrackList()
   fTrackCuts2->SetEtaRange(-0.9,0.9);
   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);
   fTrackCuts2->SetMaxChi2PerClusterTPC(3.5);
-  fTrackCuts2->SetMinNClustersTPC(80);
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
 
   TObjArray* tracksClone = new TObjArray;
   tracksClone->SetOwner(kTRUE);
 
-  for(Int_t ktracks = 0; ktracks<fESD->GetNumberOfTracks(); ktracks++){
-    AliESDtrack* track = fESD->GetTrack(ktracks);
-    if (!track) {
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){
+    AliVParticle* Vtrack = fVevent->GetTrack(ktracks);
+    if (!Vtrack) {
       printf("ERROR: Could not receive track %d\n", ktracks);
       continue;
     }
 
+    AliVTrack *track = dynamic_cast<AliVTrack*>(Vtrack);
+    if(!track) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrack = dynamic_cast<AliAODTrack*>(Vtrack);
+      if(!atrack) continue;
+      if(!atrack->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrack->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrack->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrack->GetTPCNcls() < fTPCNClsHad) continue;
+    }
+    else{
+      AliESDtrack *etrack = dynamic_cast<AliESDtrack*>(Vtrack);
+      if(!etrack) continue;
+      if(!fTrackCuts2->AcceptTrack(etrack)) continue;
+    }
+
     //   if(ktracks == iTrack) continue;
     Double_t eta=-999,ptHad= -999, pHad=-999., phi=-999.0;
     Int_t label=-9999, id=-999;
@@ -1402,78 +2580,90 @@ TObjArray*  AliAnalysisTaskElecHadronCorrel::CloneAndReduceTrackList()
     phi= track->Phi();
     label= track->GetLabel();
     id=track->GetID();
-    
+
+    if(track->Eta()<-0.9 || track->Eta()>0.9) continue;
     if(ptHad <2) continue;
-    if(!fTrackCuts2->AcceptTrack(track)) continue;
 
-    AliVParticle* particle = (AliVParticle*) fESD->GetTrack(ktracks);
+    AliVParticle* particle = (AliVParticle*) fVevent->GetTrack(ktracks);
     tracksClone->Add(new AliehDPhiBasicParticle(particle->Eta(), particle->Phi(), particle->Pt(), particle->Charge()));
 
   }
-
   return tracksClone;
 }
-*/
+
 //___________________________________________
 void AliAnalysisTaskElecHadronCorrel::HadronInfo(Int_t itrack)
 {
   //Hadron information
+
   fTrackCuts2->SetAcceptKinkDaughters(kFALSE);                                           
   fTrackCuts2->SetRequireTPCRefit(kTRUE);                                                
   fTrackCuts2->SetRequireITSRefit(kTRUE);                                                
   fTrackCuts2->SetEtaRange(-0.9,0.9);
   fTrackCuts2->SetRequireSigmaToVertex(kTRUE);                                           
- // fTrackCuts2->SetMaxChi2PerClusterTPC(3.5);                                             
   fTrackCuts2->SetMaxChi2PerClusterTPC(4);                                             
-  fTrackCuts2->SetMinNClustersTPC(80);                                                   
-
-  for(Int_t ktracks = 0; ktracks<fESD->GetNumberOfTracks(); ktracks++){                  
-    AliESDtrack* trackHad = fESD->GetTrack(ktracks);                                     
-    if (!trackHad) {
+  fTrackCuts2->SetMinNClustersTPC(fTPCNClsHad);                                                   
+  fTrackCuts2->SetMaxDCAToVertexZ(3.2);
+  fTrackCuts2->SetMaxDCAToVertexXY(2.4);
+  fTrackCuts2->SetDCAToVertex2D(kTRUE);
+
+  for(Int_t ktracks = 0; ktracks<fVevent->GetNumberOfTracks(); ktracks++){                  
+    AliVParticle* VtrackHad = fVevent->GetTrack(ktracks);                                     
+    if (!VtrackHad) {
       printf("ERROR: Could not receive track %d\n", ktracks);                            
       continue;                                                                          
     }
-    
+
+    AliVTrack *trackHad = dynamic_cast<AliVTrack*>(VtrackHad);
+    if(!trackHad) continue;
+
+    if(IsAODanalysis()) {
+      AliAODTrack *atrackHad = dynamic_cast<AliAODTrack*>(VtrackHad);
+      if(!atrackHad) continue;
+      if(!atrackHad->TestFilterMask(AliAODTrack::kTrkTPCOnly)) continue;
+      if((!(atrackHad->GetStatus()&AliESDtrack::kITSrefit)|| (!(atrackHad->GetStatus()&AliESDtrack::kTPCrefit)))) continue;
+      if(atrackHad->GetTPCNcls() < fTPCNClsHad) continue; 
+    }
+    else{   
+      AliESDtrack *etrackHad = dynamic_cast<AliESDtrack*>(VtrackHad); 
+      if(!etrackHad) continue;
+      if(!fTrackCuts2->AcceptTrack(etrackHad)) continue; 
+    }
+
     if(ktracks == itrack) continue; //do not select the same electron
-    
+
     Double_t ptHad= -999;
-    Float_t IPxy=-999.0, IPz=-999.0;                                                     
     ptHad = trackHad->Pt();
-    trackHad->GetImpactParameters(IPxy,IPz);
-    
+
     if(trackHad->Eta()<-0.9 || trackHad->Eta()>0.9) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepRecKineITSTPC, trackHad)) continue;
-//    if(!ProcessCutStep(AliHFEcuts::kStepHFEcutsTPC, trackHad)) continue;
+    // cout << "pt had = " << ptHad <<endl;
 
-    if(!fTrackCuts2->AcceptTrack(trackHad)) continue;                                    
     if(ptHad<2) continue;
 
     fHadronPhi->Fill(trackHad->Phi());
     fHadronPhiPt->Fill(trackHad->Phi(),ptHad);
     if (trackHad->Eta() >0 && trackHad->Eta() <0.9) fHadronPhiTPChalf->Fill(trackHad->Phi());
 
-    fHadronIPxy->Fill(IPxy);
-    fHadronIPz->Fill(IPz);
     fHadronPt->Fill(ptHad);
   }
 }
 //_________________________________________
-void AliAnalysisTaskElecHadronCorrel::CheckCentrality(AliESDEvent* event, Bool_t &centralitypass)
+void AliAnalysisTaskElecHadronCorrel::CheckCentrality(AliVEvent* event, Bool_t &centralitypass)
 {
   // Check if event is within the set centrality range. Falls back to V0 centrality determination if no method is set
   if (!fkCentralityMethod) AliFatal("No centrality method set! FATAL ERROR!");
   fCentrality = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethod);
-//  cout << "--------------Centrality evaluated-------------------------"<<endl;
+  // cout << "Centrality evaluated-------------------------: " << fCentrality <<endl;
 
   if ((fCentrality <= fCentralityMin) || (fCentrality > fCentralityMax))
   {
     fCentralityNoPass->Fill(fCentrality);
-//    cout << "--------------Fill no pass-------------------------"<<endl;
+    //  cout << "--------------Fill no pass-------------------------"<<endl;
     centralitypass = kFALSE;
   }else
   {
     fCentralityPass->Fill(fCentrality);
-//    cout << "--------------Fill pass-------------------------"<<endl;
+    //  cout << "--------------Fill pass-------------------------"<<endl;
     centralitypass = kTRUE;
   }