end-of-line normalization
[u/mrichter/AliRoot.git] / PWGGA / EMCALTasks / AliAnalysisTaskEMCALCaloTrackCorr.h
index 8836cb8..8638da3 100644 (file)
-#ifndef ALIANALYSISTASKEMCALCALOTRACKCORR_cxx\r
-#define ALIANALYSISTASKEMCALCALOTRACKCORR_cxx\r
-\r
-class TList;\r
-class TH1F;\r
-class TH2F;\r
-class TH1I;\r
-class TString;\r
-class TGeoHMatrix;\r
-class TClonesArray;\r
-class AliEMCALGeometry;\r
-class AliEMCALRecoUtils;\r
-class AliESDtrackCuts;\r
-class AliESDEvent;\r
-class AliMCEvent;\r
-class AliStack;\r
-class AliVCluster;\r
-class AliFiducialCut;\r
-class AliCaloTrackParticle;\r
-class AliCentrality;\r
-class AliEventplane;\r
-class AliAnalysisManager;\r
-class AliInputEventHandler;\r
-\r
-\r
-#include "AliAnalysisTaskSE.h"\r
-\r
-class AliAnalysisTaskEMCALCaloTrackCorr : public AliAnalysisTaskSE {\r
-public:\r
-  AliAnalysisTaskEMCALCaloTrackCorr(const char *name = "AliAnalysisTaskEMCALCaloTrackCorr");\r
-  virtual ~AliAnalysisTaskEMCALCaloTrackCorr() {}\r
-  \r
-  virtual void   UserCreateOutputObjects();\r
-  virtual void   UserExec(Option_t *option);\r
-  virtual void   Terminate(Option_t *);\r
-\r
-//  virtual  AliFiducialCut  *GetFiducialCut() { if(!fFidCut)  \r
-//                      fFidCut = new AliFiducialCut(); return  fFidCut ; } \r
-\r
-\r
-  enum type {kPtThresholdIC=0, kSumPtInConeIC=1, kPtFracationIC=2, kSumPtFracationIC=3};\r
-  enum particleInCone { kIsolatedNeutralAndCharged=0, kIsolatedOnlyNeutral=1, kIsolatedOnlyCharged=2  };  \r
-\r
-  Int_t    GetMinNCells()           const { return fMinNCells  ; }\r
-  Double_t GetMinE()                const { return fMinE       ; }\r
-  Double_t GetMinDistBad()          const { return fMinDistBad ; }  \r
-\r
-  Int_t    GetDebug()               const { return fDebug ; }\r
-  void     SetDebug(Int_t deb)            { fDebug = deb  ; }\r
-\r
-  Bool_t   IsDataMC()               const { return kMC ; }\r
-  void     SetMC(Bool_t mc)               { kMC = mc   ; }\r
-\r
-  TString  GetDataType()            const { return fDataType ; }\r
-  void     SetDataType(TString data)      { fDataType = data ; }\r
-\r
-  Int_t    GetHistoPtBins()         const { return fHistoPtBins  ; }\r
-  Float_t  GetHistoPtMin()          const { return fHistoPtMin   ; }\r
-  Float_t  GetHistoPtMax()          const { return fHistoPtMax   ; }\r
-\r
-  void    SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)\r
-          {fHistoPtBins = n; fHistoPtMax = max; fHistoPtMin = min;}\r
-\r
-  Int_t    GetHistoPhiBins()        const { return fHistoPhiBins  ; }\r
-  Float_t  GetHistoPhiMin()         const { return fHistoPhiMin   ; }\r
-  Float_t  GetHistoPhiMax()         const { return fHistoPhiMax   ; }\r
-\r
-  void    SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) \r
-          {fHistoPhiBins = n; fHistoPhiMax = max; fHistoPhiMin = min;}\r
-\r
-  Int_t    GetHistoEtaBins()        const { return fHistoEtaBins  ; }\r
-  Float_t  GetHistoEtaMin()         const { return fHistoEtaMin   ; }\r
-  Float_t  GetHistoEtaMax()         const { return fHistoEtaMax   ; }\r
-\r
-  void    SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) \r
-          {fHistoEtaBins = n; fHistoEtaMax = max; fHistoEtaMin = min;}\r
-\r
-\r
-\r
-  Float_t  GetConeR()               const { return fSetConeR          ; }\r
-  Float_t  GetPtThreshold()         const { return fSetPtThreshold    ; }\r
-  Float_t  GetSumPtThreshold()      const { return fSetSumPtThreshold ; }\r
-  Float_t  GetPtFraction()          const { return fSetPtFraction     ; }\r
-  TString  GetICMethod()            const { return fICMethod          ; }\r
-  TString  GetParticleTypeInCone()  const { return fParticlesInCone    ; }\r
-  \r
-  void   SetMinNCells(Int_t n)                { fMinNCells   = n  ; }\r
-  void   SetMinE(Double_t pt)                 { fMinE        = pt ; }\r
-  void   SetMinDistBad(Double_t fn)           { fMinDistBad = fn ; }\r
-  \r
-  void   SetConeR(Float_t r)              { fSetConeR          = r       ; }\r
-  void   SetPtThreshold(Float_t pt)       { fSetPtThreshold    = pt      ; }\r
-  void   SetSumPtThreshold(Float_t s)     { fSetSumPtThreshold = s       ; }\r
-  void   SetPtFraction(Float_t pt)        { fSetPtFraction     = pt      ; }\r
-  void   SetICMethod(Int_t iMethod )      { fICMethod          = iMethod ; }\r
-  void   SetParticleTypeInCone(Int_t i)   { fParticlesInCone    = i       ; }\r
\r
-  void   SwitchOnAnaIsolated()            { kDoIsolatedAna = kTRUE  ; }\r
-  void   SwitchOffAnaIsolated()           { kDoIsolatedAna = kFALSE ; }\r
-\r
-  void   SwitchOnTrackMultBins()          { kDoTrackMultBins = kTRUE ; }\r
-  void   SwitchOffTrackMultBins()         { kDoTrackMultBins = kTRUE ; }\r
-\r
-  void   SetAnaUELeftRightOrNearAway(Bool_t leftright, Bool_t nearaway) {\r
-                                                   kUELeftRight = leftright,\r
-                                                   kUENearAway  = nearaway ; }\r
-  void   SwitchOnTwoTracksCorr()     { kTwoTracksCorr = kTRUE    ; }\r
-  void   SwitchOffTwoTracksCorr()    { kTwoTracksCorr = kFALSE   ; }  \r
-\r
-  void   SelectDecayPhotonCorr(Bool_t decayphoton) {kDecayPhotonCorr = decayphoton;}\r
-\r
-  void   SetAnaMCTruthOrPrimaryCorr(Bool_t kAnatruth, Bool_t kAnaprimary){\r
-                                             kAnaMCTruthCorr = kAnatruth,\r
-                                             kAnaMCPrimaryCorr = kAnaprimary ; }\r
-\r
-  void   SetAnaMCPrimaryParticle(Bool_t kpi0, Bool_t keta, Bool_t kphoton){\r
-                                                    kAnaPi0Prim = kpi0,\r
-                                                    kAnaEtaPrim = keta,\r
-                                                    kAnaPhotonPrim = kphoton ; }\r
-  // Taking the absolute leading as the trigger or not\r
-  Bool_t  DoAbsoluteLeading()         const { return kMakeAbsoluteLeading   ; }\r
-  void    SwitchOnAbsoluteLeading()         { kMakeAbsoluteLeading = kTRUE  ; }\r
-  void    SwitchOffAbsoluteLeading()        { kMakeAbsoluteLeading = kFALSE ; }\r
-\r
-  // Taking the near side leading as the trigger or not\r
-  Bool_t  DoNearSideLeading()         const { return kMakeNearSideLeading   ; }\r
-  void    SwitchOnNearSideLeading()         { kMakeNearSideLeading = kTRUE  ; }\r
-  void    SwitchOffNearSideLeading()        { kMakeNearSideLeading = kFALSE ; }\r
-  \r
-  void    SwitchOnInAcceptance()            { kPhotonInAcceptance = kTRUE   ; }\r
-  void    SwitchOffInAcceptance()           { kPhotonInAcceptance = kFALSE  ; }\r
\r
-  void    SwitchOnAnaMapping()              { kAnaDecayMapping = kTRUE  ; }\r
-  void    SwitchOffAnaMapping()             { kAnaDecayMapping = kFALSE ; }\r
-\r
-//  Bool_t  IsFiducialCutOn()           const { return fCheckFidCut           ; }\r
-//  void    SwitchOnFiducialCut()             { fCheckFidCut = kTRUE;\r
- //                                  if(!fFidCut)fFidCut = new AliFiducialCut();}\r
-//  void    SwitchOffFiducialCut()            { fCheckFidCut = kFALSE         ; }\r
-\r
-  void    SetNTriggPtBins(Int_t nbins)      { fNTriggPtBins = nbins ; }\r
-  Int_t   GetNTriggPtBins()           const { return fNTriggPtBins  ; }\r
-  void    SetTriggerBins(Float_t *ptTriggBins);\r
-\r
-  void    SetNAssocPtBins(Int_t mbins)      { fNAssocPtBins = mbins ; }\r
-  Int_t   GetNAssocPtBins()           const { return fNAssocPtBins  ; }\r
-  void    SetAssociatedBins(Float_t *ptAssocBins);\r
-\r
-  Float_t GetDeltaPhiMaxCut()         const { return fDeltaPhiMaxCut ; }\r
-  Float_t GetDeltaPhiMinCut()         const { return fDeltaPhiMinCut ; }\r
-  void     SetDeltaPhiCutRange(Float_t phimin, Float_t phimax)\r
-                {fDeltaPhiMaxCut = phimax;  fDeltaPhiMinCut = phimin ; } \r
\r
-  void   SetMixedEventsPool(Int_t n)        { nMixedEvents = n ; }\r
-  void   SwitchOnAnaMixEvent()              { kDoMixEventsAna = kTRUE    ; }\r
-  void   SwitchOffAnaMixEvent()             { kDoMixEventsAna = kFALSE   ; }\r
-\r
-  void   SwitchOnFillMesonAOD()             { kDoMesonFill = kTRUE  ; }\r
-  void   SwitchOffFillMesonAOD()            { kDoMesonFill = kFALSE ; }\r
-\r
-  void   SwitchOnFillMesonHistos()          { kNeutralMesonHistos = kTRUE  ; }\r
-  void   SwitchOffFillMesonHistos()         { kNeutralMesonHistos = kFALSE ; }\r
-\r
-  void   SwitchOnAnaMesonCorr()             { kDoMesonCorrAna = kTRUE  ; }\r
-  void   SwitchOffAnaMesonCorr()            { kDoMesonCorrAna = kFALSE ; }\r
-\r
-  void   SwitchOnAnaPhotonCorr()            { kDoPhotonCorrAna = kTRUE  ; }\r
-  void   SwitchOffAnaPhotonCorr()           { kDoPhotonCorrAna = kFALSE ; }  \r
-\r
-  void   SwitchOnEventTriggerAtSE()         { kEventTriggerAtSE = kTRUE ; }\r
-  void   SwitchOffEventTriggerAtSE()        { kEventTriggerAtSE = kFALSE; }\r
-\r
-  void   SwithchOnPhotonPairTimeCut()       { kPhotonPairTimeCut = kTRUE ;}\r
-  void   SwithchOffPhotonPairTimeCut()      { kPhotonPairTimeCut = kFALSE ;}\r
-\r
-  void   SwithchOnPhotonIDCut()             { kDoPhotonIDCut = kTRUE  ; }\r
-  void   SwithchOffPhotonIDCut()            { kDoPhotonIDCut = kFALSE ; }\r
-\r
-  TString GetAnaTypeInIsolated()         const { return fAnaTypeInIsolated ; }\r
-  void    SetAnaTypeInIsolated(TString & part) { fAnaTypeInIsolated = part ; }\r
-\r
-  Float_t GetDeltaPhiHRSize()           const { return fDeltaPhiHRSize   ; }\r
-  void SetDeltaPhiHRSize(Float_t fHRphi)       { fDeltaPhiHRSize = fHRphi ; }\r
-\r
-  Float_t  GetUeDeltaPhiSize()           const { return fUeDeltaPhiSize ; }\r
-  Float_t  GetUeDeltaPhiFix()            const { return fUeDeltaPhiFix  ; }\r
-  void     SetUeDeltaPhiFixAndSize(Float_t uefix, Float_t uesize)\r
-                    { fUeDeltaPhiFix = uefix,  fUeDeltaPhiSize = uesize ; }\r
-\r
-  void     SetAssociatedPtBegin(Float_t begin) {fptAssociatedBegin = begin;}\r
-\r
-  void     SetLargeCorrTrigger(Float_t ftrigger1, Float_t ftrigger2) \r
-                 {fptTriggerBegin = ftrigger1, fptTriggerEnd   = ftrigger2; }\r
-\r
-  void    SwitchOnAsymmetryCut()             { kDoAsymmetryCut = kTRUE  ; }\r
-  void    SwitchOffAsymmetryCut()            { kDoAsymmetryCut = kFALSE ; }\r
-  void    SetAsymmetryCut(Float_t asycut)    { fAsymmetryCut = asycut ; }\r
-\r
-  void    SwitchOnAODHybridTrackSelection()  { kDoSelectHybridTracks = kTRUE ;}\r
-  void    SwitchOffAODHybridTrackSelection() { kDoSelectHybridTracks = kFALSE;}  \r
-  void    SetAnaMesonType(TString fmesontype){ fAnaMesonType = fmesontype ; }\r
-\r
-  void    SetCentralityBin(Int_t min, Int_t max)\r
-                       { fCentralityBinMin = min; fCentralityBinMax = max ; }\r
-  void    SetCentralityClass(TString name)   { fCentralityClass   = name  ; }\r
-  \r
-  void    SetEventPlaneMethod(TString m)     { fEventPlaneMethod = m      ; }\r
-\r
-  UInt_t  GetEventTriggerMask()        const { return fEventTriggerMaks   ; }\r
-  void    SetEventTriggerMask(UInt_t evtTrig = AliVEvent::kAny)\r
-                                        { fEventTriggerMaks = evtTrig     ; }\r
-  void    SetNCentralityBins(Int_t fcenbins) { fNCentralityBins = fcenbins; }\r
-  void    SetNEventPlaneBins(Int_t fevbins)  { fNEventPlaneBins = fevbins ; }\r
-\r
-  void    SetEMCALLambda0Cut(Float_t l0min, Float_t l0max)\r
-                                   { fL0CutMin = l0min, fL0CutMax = l0max ; }\r
-  void    SetClusterTimeCut(Float_t timemin, Float_t timemax){\r
-                             fTimeCutMin = timemin, fTimeCutMax = timemax ; }\r
-  void    SetPhotonPairDeltaTimeCut(Float_t deltatime)\r
-                                         { fPhotonPairTimeCut = deltatime ; }\r
\r
-  void    SetTrackMatchedDPhiCut(Float_t dphicut){ fEMCALDPhiCut = dphicut; }\r
-  void    SetTrackMatchedDEtaCut(Float_t detacut){ fEMCALDEtaCut = detacut; }\r
-\r
-  void    SetMesonInMassRangeCut(Float_t inmass1, Float_t inmass2){\r
-                        fInvMassMinCut = inmass1, fInvMassMaxCut = inmass2 ; }\r
-\r
-  void    SetMesonInMassLeftRangeCut(Float_t leftmin, Float_t leftmax){\r
-                      fLeftBandMinCut = leftmin, fLeftBandMaxCut = leftmax ; }\r
-\r
-  void    SetMesonInMassRightRangeCut(Float_t rightmin, Float_t rightmax){\r
-                  fRightBandMinCut = rightmin, fRightBandMaxCut = rightmax ; }\r
\r
-  void    SetEMCALGeometryName(TString name) { fEMCALGeomName = name ; }\r
-\r
-  void    SetTrackCuts(AliESDtrackCuts * cuts);\r
\r
-  void    SetZvertexCut(Float_t fzcut) { fZVertexCut = fzcut ; }\r
-\r
-  void    SetTrackFilterMask(ULong_t bit)  { fTrackFilterMask = bit ; }\r
-  \r
\r
-private:\r
-  AliAnalysisTaskEMCALCaloTrackCorr(const AliAnalysisTaskEMCALCaloTrackCorr&); // not implemented\r
-  AliAnalysisTaskEMCALCaloTrackCorr& operator=(const AliAnalysisTaskEMCALCaloTrackCorr&); // not implemented\r
-\r
-  ////////////Add function\r
-  void    InitParameters();\r
\r
-  Bool_t  FillInputEvent();\r
-\r
-  Bool_t  SelectPair(AliCaloTrackParticle *mesonCandidate);\r
-  Bool_t  IsolatedPhoton(TClonesArray *fEMCALEventIsolated, \r
-                         TClonesArray *fCTSEventIsolated,\r
-                         Int_t fIndexPhotonCan,  Double_t ptPhotonCan,\r
-                         Double_t phiPhotonCan, Double_t etaPhotonCan);\r
-  void    FillInputPhoton();\r
-  void    FillInputMeson() ;\r
-  void    FillInputTrack() ;\r
-  Bool_t  MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg, \r
-                               Double_t phiTrigg, Double_t etaTrigg);\r
-  void    MakeChargedMixCorrelation(Double_t ptTriggMix,  Double_t phiTriggMix,\r
-                            Double_t etaTriggMix, TList *poolMix);\r
-private:\r
-  enum {kNtriggPtBins=10, kNassocPtBins=10};\r
-\r
-  AliAnalysisManager    *fManager;\r
-  AliInputEventHandler  *fInputHandler;\r
-\r
-  AliVEvent   *fEvent;\r
-  AliMCEvent    *fMCEvent;\r
-  AliStack      *fStack;\r
-  AliCentrality *fCentrality;\r
-  AliEventplane *fEventPlane;\r
-\r
-  AliEMCALRecoUtils *fEMCALRecU;\r
-  AliEMCALGeometry  *fEMCALGeom;\r
-  AliESDtrackCuts   *fESDtrackCuts;\r
-  //  AliFiducialCut    *fFidCut;\r
-\r
-  TList    *outputContainer;\r
-\r
-  TString  fEMCALGeomName; \r
-  TString  fCentralityClass;    \r
-  Int_t    fCentralityBinMin;\r
-  Int_t    fCentralityBinMax;\r
-  TString  fEventPlaneMethod;\r
-  UInt_t   fEventTriggerMaks;\r
-  Int_t    fNCentralityBins;\r
-  Int_t    fNEventPlaneBins;\r
\r
-  Int_t    fHistoPtBins ; \r
-  Float_t  fHistoPtMax  ; \r
-  Float_t  fHistoPtMin  ; \r
-  Int_t    fHistoPhiBins; \r
-  Float_t  fHistoPhiMax ;\r
-  Float_t  fHistoPhiMin ;\r
-  Int_t    fHistoEtaBins;\r
-  Float_t  fHistoEtaMax ;\r
-  Float_t  fHistoEtaMin ;\r
\r
-  Int_t    fMinNCells;\r
-  Float_t  fMinE;\r
-  Double_t fMinDistBad;\r
-  Float_t  fL0CutMin;\r
-  Float_t  fL0CutMax;\r
-  Float_t  fTimeCutMin;\r
-  Float_t  fTimeCutMax;\r
-  Float_t  fPhotonPairTimeCut;\r
-  Float_t  fEMCALDPhiCut;\r
-  Float_t  fEMCALDEtaCut;\r
-  Float_t  fZVertexCut; \r
-  Int_t    fDebug;         \r
-  TString  fAnaMesonType;\r
-  Float_t  fAsymmetryCut;\r
-  TString  fDataType;\r
-  ULong_t  fTrackFilterMask;\r
-\r
-  Float_t  fInvMassMinCut;\r
-  Float_t  fInvMassMaxCut;\r
-  Float_t  fLeftBandMinCut;\r
-  Float_t  fLeftBandMaxCut;\r
-  Float_t  fRightBandMinCut;\r
-  Float_t  fRightBandMaxCut;\r
-\r
-  Bool_t  kMC;\r
-  Bool_t  kNeutralMesonHistos;\r
-  Bool_t  kDoMixEventsAna;\r
-  Bool_t  kDoPhotonCorrAna;\r
-  Bool_t  kDoAsymmetryCut;\r
-  Bool_t  kDoSelectHybridTracks;\r
-  Bool_t  kDoMesonFill;\r
-  Bool_t  kDoMesonCorrAna;\r
-  Bool_t  kDoIsolatedAna;\r
-  Bool_t  kDoTrackMultBins;\r
-  Bool_t  kUELeftRight;\r
-  Bool_t  kUENearAway;\r
-  Bool_t  kDecayPhotonCorr;\r
-  Bool_t  kAnaMCTruthCorr;\r
-  Bool_t  kAnaMCPrimaryCorr;\r
-  Bool_t  kAnaPi0Prim;\r
-  Bool_t  kAnaEtaPrim;\r
-  Bool_t  kAnaPhotonPrim;\r
-  Bool_t  kMakeAbsoluteLeading;\r
-  Bool_t  kMakeNearSideLeading;\r
-  Bool_t  kTwoTracksCorr;\r
-  Bool_t  kPhotonInAcceptance;\r
-  Bool_t  kAnaDecayMapping;\r
-//  Bool_t  fCheckFidCut;\r
-  Bool_t  kEventTriggerAtSE;\r
-  Bool_t  kPhotonPairTimeCut;\r
-  Bool_t  kDoPhotonIDCut;\r
-\r
-  TH1F     *fhNEvents;        \r
-  Int_t    fnEvents;\r
-  TH1F     *fhNEventsAnalyized;\r
-  Int_t    fEventAnalyized;\r
-  TClonesArray  *fPhotonEvent;\r
-  TClonesArray  *fPhotonPairEvent;\r
-  TClonesArray  *fCTSEvent;\r
-  Int_t    nPhotonsEMCAL;\r
-  Int_t    nTracksCTS;\r
-  TString  fAnaTypeInIsolated;\r
-  Int_t    nMixedEvents;\r
-  Float_t  fSetConeR;\r
-  Float_t  fSetPtThreshold;\r
-  Float_t  fSetSumPtThreshold;\r
-  Float_t  fSetPtFraction;\r
-  Int_t    fICMethod;\r
-  Int_t    fParticlesInCone;\r
-\r
-  Float_t  *fTriggPtArray;\r
-  Int_t    fNTriggPtBins;\r
-  Float_t  fptTriggerBegin;\r
-  Float_t  fptTriggerEnd;\r
-  Float_t  *fAssocPtArray;\r
-  Int_t    fNAssocPtBins;\r
-  Float_t  fptAssociatedBegin;\r
-\r
-  Float_t  fDeltaPhiMaxCut;\r
-  Float_t  fDeltaPhiMinCut;\r
-  Float_t  fUeDeltaPhiSize;\r
-  Float_t  fUeDeltaPhiFix;\r
-  Float_t  fDeltaPhiHRSize;\r
-\r
-  TH1F * fhPhotonE;\r
-  TH2F * fhPhotonPtPhi;\r
-  TH2F * fhPhotonPtEta;\r
-  TH2F * fhPhotonPhiEta;\r
-\r
-  TH1F * fhMesonE;\r
-  TH2F * fhMesonPtPhi;\r
-  TH2F * fhMesonPtEta;\r
-  TH2F * fhMesonPhiEta;\r
-\r
-  TH2F * fhAnglePairNoCut;\r
-  TH2F * fhInvMassPairNoCut;\r
-  TH2F * fhAsyNoCut;\r
-  TH2F * fhInvMassPairAsyCut; \r
-  TH2F * fhAnglePairAsyCut;\r
-  TH2F * fhInvMassPairPhi;\r
-  TH2F * fhInvMassPairEta;\r
-  TH2F * fhInvMassPairAllCut;\r
-  TH2F * fhAnglePairAllCut;\r
-  TH2F * fhAsyAllCut;\r
-  TH2F * fhPi0DecayPhoton1;\r
-  TH2F * fhPi0DecayPhoton1Dphi;\r
-  TH2F * fhDecayPhoton1Pi0Dphi;\r
-  TH2F * fhPi0DecayPhoton2;\r
-  TH2F * fhPi0DecayPhoton2Dphi;\r
-  TH2F * fhDecayPhoton2Pi0Dphi;\r
-  TH2F * fhDecayPhoton1Photon2;\r
-  TH2F * fhDecayPhoton1Photon2Dphi;\r
-  TH2F * fhDecayPhoton2Photon1Dphi;\r
-\r
-  TH1F * fhNtracksAll;\r
-  TH1F * fhNtracksEMC7;\r
-  TH1F * fhNtracksAnyINT;\r
-  TH1F * fhNtracksCentral;\r
-  TH1F * fhNtracksSemiCentral;\r
-  TH1F * fhNtracksOtherTirgger;\r
-  TH1F * fhNtracksCorr;\r
-  TH2F * fhTrackPtPhi;\r
-  TH2F * fhTrackPtEta;\r
-  TH2F * fhTrackPhiEta;\r
-  TH2F * fhPtPhiLeading;        //! phi distribution vs pT of leading\r
-  TH2F * fhPtEtaLeading;        //! eta distribution vs pT of leading\r
-  TH2F * fhMixPtPhiLeading;        //! phi distribution vs pT of leading\r
-  TH2F * fhMixPtEtaLeading;        //! eta distribution vs pT of leading\r
\r
-  TH2F * fhDPhiTriggPtAssocPt;\r
-  TH2F * fhDEtaTriggPtAssocPt;\r
-  TH2F * fhAssocPtTriggPt;\r
-  TH2F * fhxELogTriggPt;\r
-  TH2F * fhpoutTriggPt;\r
-  TH2F * fhzTTriggPt;\r
-  TH2F * fhxETriggPt;       \r
-  TH2F * fhAssocPtTriggPtHR;\r
-  TH2F * fhxELogTriggPtHR;\r
-  TH2F * fhpoutTriggPtHR;\r
-  TH2F * fhzTTriggPtHR;\r
-  TH2F * fhxETriggPtHR;\r
-  TH2F * fhNUeAssocPtTriggPt;\r
-  TH2F * fhNUepoutTriggPt;\r
-  TH2F * fhNUexETriggPt;\r
-  TH2F * fhNUezTTriggPt;\r
-  TH2F * fhNUexELogTriggPt;\r
-  TH2F * fhNUeDPhiDEta;\r
-  TH2F * fhAUeAssocPtTriggPt;\r
-  TH2F * fhAUepoutTriggPt;\r
-  TH2F * fhAUezTTriggPt; \r
-  TH2F * fhAUexETriggPt;\r
-  TH2F * fhAUexELogTriggPt;\r
-  TH2F * fhAUeDPhiDEta;\r
-\r
-  TH2F * fhMCPtPhiLeading;        //! phi distribution vs pT of leading\r
-  TH2F * fhMCPtEtaLeading;        //! eta distribution vs pT of leading\r
-\r
-  TH2F * fhMCAssocPtTriggPt;\r
-  TH2F * fhMCxELogTriggPt;\r
-  TH2F * fhMCpoutTriggPt;\r
-  TH2F * fhMCzTTriggPt;\r
-  TH2F * fhMCxETriggPt;\r
-  TH2F * fhMCAssocPtTriggPtHR;\r
-  TH2F * fhMCxELogTriggPtHR;\r
-  TH2F * fhMCpoutTriggPtHR;\r
-  TH2F * fhMCzTTriggPtHR;\r
-  TH2F * fhMCxETriggPtHR;\r
-  TH2F * fhMCNUeAssocPtTriggPt;\r
-  TH2F * fhMCNUepoutTriggPt;\r
-  TH2F * fhMCNUexETriggPt;\r
-  TH2F * fhMCNUezTTriggPt;\r
-  TH2F * fhMCNUexELogTriggPt;\r
-  TH2F * fhMCAUeAssocPtTriggPt;\r
-  TH2F * fhMCAUepoutTriggPt;\r
-  TH2F * fhMCAUezTTriggPt;\r
-  TH2F * fhMCAUexETriggPt;\r
-  TH2F * fhMCAUexELogTriggPt;\r
-\r
-  TH2F * fhDPhiAssocPt15T;\r
-  TH2F * fhDEtaAssocPt15T;\r
-  TH2F * fhMixDPhiAssocPt15T;\r
-  TH2F * fhMixDEtaAssocPt15T;\r
-  TH2F * fhMCDPhiAssocPt15T;\r
-  TH2F * fhMCDEtaAssocPt15T;\r
-\r
-  TList* fListMixEvents[10][10][10]; \r
\r
-  TH2F  *fhDPhiTriggPtT[kNassocPtBins];\r
-  TH2F  *fhDEtaTriggPtT[kNassocPtBins];\r
-  TH2F  *fhMixDPhiTriggPtT[kNassocPtBins];\r
-  TH2F  *fhMixDEtaTriggPtT[kNassocPtBins];\r
-\r
-  TH2F  *fhDPhiSumPtBin[kNtriggPtBins][kNassocPtBins];\r
-  TH2F  *fhDEtaSumPtBin[kNtriggPtBins][kNassocPtBins];\r
-  TH2F  *fhDPhiDEtaBin[kNtriggPtBins][kNassocPtBins];\r
-  TH2F  *fhMixDPhiDEtaBin[kNtriggPtBins][kNassocPtBins];\r
-\r
-  TH2F  *fhDPhiAssocPtA[kNtriggPtBins];\r
-  TH2F  *fhDEtaAssocPtA[kNtriggPtBins];\r
-  TH2F  *fhMixDPhiAssocPtA[kNtriggPtBins];\r
-  TH2F  *fhMixDEtaAssocPtA[kNtriggPtBins];\r
-\r
-  TH2F  *fhMCDPhiTriggPtT[kNassocPtBins];\r
-  TH2F  *fhMCDEtaTriggPtT[kNassocPtBins];\r
-\r
-  TH2F  *fhMCDPhiSumPtBin[kNtriggPtBins][kNassocPtBins];\r
-  TH2F  *fhMCDEtaSumPtBin[kNtriggPtBins][kNassocPtBins];\r
-  TH2F  *fhMCDPhiDEtaBin[kNtriggPtBins][kNassocPtBins];\r
-\r
-  TH2F  *fhMCDPhiAssocPtA[kNtriggPtBins];\r
-  TH2F  *fhMCDEtaAssocPtA[kNtriggPtBins];\r
-\r
-  ClassDef(AliAnalysisTaskEMCALCaloTrackCorr, 1); // example of analysis\r
-};\r
-\r
-#endif\r
+#ifndef ALIANALYSISTASKEMCALCALOTRACKCORR_cxx
+#define ALIANALYSISTASKEMCALCALOTRACKCORR_cxx
+
+class TList;
+class TH1F;
+class TH2F;
+class TH1I;
+class TString;
+class TGeoHMatrix;
+class TClonesArray;
+class AliEMCALGeometry;
+class AliEMCALRecoUtils;
+class AliESDtrackCuts;
+class AliESDEvent;
+class AliMCEvent;
+class AliStack;
+class AliVCluster;
+class AliFiducialCut;
+class AliCaloTrackParticle;
+class AliCentrality;
+class AliEventplane;
+class AliAnalysisManager;
+class AliInputEventHandler;
+
+
+#include "AliAnalysisTaskSE.h"
+
+class AliAnalysisTaskEMCALCaloTrackCorr : public AliAnalysisTaskSE {
+public:
+  AliAnalysisTaskEMCALCaloTrackCorr(const char *name = "AliAnalysisTaskEMCALCaloTrackCorr");
+  virtual ~AliAnalysisTaskEMCALCaloTrackCorr() {}
+  
+  virtual void   UserCreateOutputObjects();
+  virtual void   UserExec(Option_t *option);
+  virtual void   Terminate(Option_t *);
+
+//  virtual  AliFiducialCut  *GetFiducialCut() { if(!fFidCut)  
+//                      fFidCut = new AliFiducialCut(); return  fFidCut ; } 
+
+
+  enum type {kPtThresholdIC=0, kSumPtInConeIC=1, kPtFracationIC=2, kSumPtFracationIC=3};
+  enum particleInCone { kIsolatedNeutralAndCharged=0, kIsolatedOnlyNeutral=1, kIsolatedOnlyCharged=2  };  
+
+  Int_t    GetMinNCells()           const { return fMinNCells  ; }
+  Double_t GetMinE()                const { return fMinE       ; }
+  Double_t GetMinDistBad()          const { return fMinDistBad ; }  
+
+  Int_t    GetDebug()               const { return fDebug ; }
+  void     SetDebug(Int_t deb)            { fDebug = deb  ; }
+
+  Bool_t   IsDataMC()               const { return kMC ; }
+  void     SetMC(Bool_t mc)               { kMC = mc   ; }
+
+  TString  GetDataType()            const { return fDataType ; }
+  void     SetDataType(TString data)      { fDataType = data ; }
+
+  Int_t    GetHistoPtBins()         const { return fHistoPtBins  ; }
+  Float_t  GetHistoPtMin()          const { return fHistoPtMin   ; }
+  Float_t  GetHistoPtMax()          const { return fHistoPtMax   ; }
+
+  void    SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n)
+          {fHistoPtBins = n; fHistoPtMax = max; fHistoPtMin = min;}
+
+  Int_t    GetHistoPhiBins()        const { return fHistoPhiBins  ; }
+  Float_t  GetHistoPhiMin()         const { return fHistoPhiMin   ; }
+  Float_t  GetHistoPhiMax()         const { return fHistoPhiMax   ; }
+
+  void    SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) 
+          {fHistoPhiBins = n; fHistoPhiMax = max; fHistoPhiMin = min;}
+
+  Int_t    GetHistoEtaBins()        const { return fHistoEtaBins  ; }
+  Float_t  GetHistoEtaMin()         const { return fHistoEtaMin   ; }
+  Float_t  GetHistoEtaMax()         const { return fHistoEtaMax   ; }
+
+  void    SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) 
+          {fHistoEtaBins = n; fHistoEtaMax = max; fHistoEtaMin = min;}
+
+
+
+  Float_t  GetConeR()               const { return fSetConeR          ; }
+  Float_t  GetPtThreshold()         const { return fSetPtThreshold    ; }
+  Float_t  GetSumPtThreshold()      const { return fSetSumPtThreshold ; }
+  Float_t  GetPtFraction()          const { return fSetPtFraction     ; }
+  TString  GetICMethod()            const { return fICMethod          ; }
+  TString  GetParticleTypeInCone()  const { return fParticlesInCone    ; }
+  
+  void   SetMinNCells(Int_t n)                { fMinNCells   = n  ; }
+  void   SetMinE(Double_t pt)                 { fMinE        = pt ; }
+  void   SetMinDistBad(Double_t fn)           { fMinDistBad = fn ; }
+  
+  void   SetConeR(Float_t r)              { fSetConeR          = r       ; }
+  void   SetPtThreshold(Float_t pt)       { fSetPtThreshold    = pt      ; }
+  void   SetSumPtThreshold(Float_t s)     { fSetSumPtThreshold = s       ; }
+  void   SetPtFraction(Float_t pt)        { fSetPtFraction     = pt      ; }
+  void   SetICMethod(Int_t iMethod )      { fICMethod          = iMethod ; }
+  void   SetParticleTypeInCone(Int_t i)   { fParticlesInCone    = i       ; }
+  void   SwitchOnAnaIsolated()            { kDoIsolatedAna = kTRUE  ; }
+  void   SwitchOffAnaIsolated()           { kDoIsolatedAna = kFALSE ; }
+
+  void   SwitchOnTrackMultBins()          { kDoTrackMultBins = kTRUE ; }
+  void   SwitchOffTrackMultBins()         { kDoTrackMultBins = kTRUE ; }
+
+  void   SetAnaUELeftRightOrNearAway(Bool_t leftright, Bool_t nearaway) {
+                                                   kUELeftRight = leftright,
+                                                   kUENearAway  = nearaway ; }
+  void   SwitchOnTwoTracksCorr()     { kTwoTracksCorr = kTRUE    ; }
+  void   SwitchOffTwoTracksCorr()    { kTwoTracksCorr = kFALSE   ; }  
+
+  void   SelectDecayPhotonCorr(Bool_t decayphoton) {kDecayPhotonCorr = decayphoton;}
+
+  void   SetAnaMCTruthOrPrimaryCorr(Bool_t kAnatruth, Bool_t kAnaprimary){
+                                             kAnaMCTruthCorr = kAnatruth,
+                                             kAnaMCPrimaryCorr = kAnaprimary ; }
+
+  void   SetAnaMCPrimaryParticle(Bool_t kpi0, Bool_t keta, Bool_t kphoton){
+                                                    kAnaPi0Prim = kpi0,
+                                                    kAnaEtaPrim = keta,
+                                                    kAnaPhotonPrim = kphoton ; }
+  // Taking the absolute leading as the trigger or not
+  Bool_t  DoAbsoluteLeading()         const { return kMakeAbsoluteLeading   ; }
+  void    SwitchOnAbsoluteLeading()         { kMakeAbsoluteLeading = kTRUE  ; }
+  void    SwitchOffAbsoluteLeading()        { kMakeAbsoluteLeading = kFALSE ; }
+
+  // Taking the near side leading as the trigger or not
+  Bool_t  DoNearSideLeading()         const { return kMakeNearSideLeading   ; }
+  void    SwitchOnNearSideLeading()         { kMakeNearSideLeading = kTRUE  ; }
+  void    SwitchOffNearSideLeading()        { kMakeNearSideLeading = kFALSE ; }
+  
+  void    SwitchOnInAcceptance()            { kPhotonInAcceptance = kTRUE   ; }
+  void    SwitchOffInAcceptance()           { kPhotonInAcceptance = kFALSE  ; }
+  void    SwitchOnAnaMapping()              { kAnaDecayMapping = kTRUE  ; }
+  void    SwitchOffAnaMapping()             { kAnaDecayMapping = kFALSE ; }
+
+//  Bool_t  IsFiducialCutOn()           const { return fCheckFidCut           ; }
+//  void    SwitchOnFiducialCut()             { fCheckFidCut = kTRUE;
+ //                                  if(!fFidCut)fFidCut = new AliFiducialCut();}
+//  void    SwitchOffFiducialCut()            { fCheckFidCut = kFALSE         ; }
+
+  void    SetNTriggPtBins(Int_t nbins)      { fNTriggPtBins = nbins ; }
+  Int_t   GetNTriggPtBins()           const { return fNTriggPtBins  ; }
+  void    SetTriggerBins(Float_t *ptTriggBins);
+
+  void    SetNAssocPtBins(Int_t mbins)      { fNAssocPtBins = mbins ; }
+  Int_t   GetNAssocPtBins()           const { return fNAssocPtBins  ; }
+  void    SetAssociatedBins(Float_t *ptAssocBins);
+
+  Float_t GetDeltaPhiMaxCut()         const { return fDeltaPhiMaxCut ; }
+  Float_t GetDeltaPhiMinCut()         const { return fDeltaPhiMinCut ; }
+  void     SetDeltaPhiCutRange(Float_t phimin, Float_t phimax)
+                {fDeltaPhiMaxCut = phimax;  fDeltaPhiMinCut = phimin ; } 
+  void   SetMixedEventsPool(Int_t n)        { nMixedEvents = n ; }
+  void   SwitchOnAnaMixEvent()              { kDoMixEventsAna = kTRUE    ; }
+  void   SwitchOffAnaMixEvent()             { kDoMixEventsAna = kFALSE   ; }
+
+  void   SwitchOnFillMesonAOD()             { kDoMesonFill = kTRUE  ; }
+  void   SwitchOffFillMesonAOD()            { kDoMesonFill = kFALSE ; }
+
+  void   SwitchOnFillMesonHistos()          { kNeutralMesonHistos = kTRUE  ; }
+  void   SwitchOffFillMesonHistos()         { kNeutralMesonHistos = kFALSE ; }
+
+  void   SwitchOnAnaMesonCorr()             { kDoMesonCorrAna = kTRUE  ; }
+  void   SwitchOffAnaMesonCorr()            { kDoMesonCorrAna = kFALSE ; }
+
+  void   SwitchOnAnaPhotonCorr()            { kDoPhotonCorrAna = kTRUE  ; }
+  void   SwitchOffAnaPhotonCorr()           { kDoPhotonCorrAna = kFALSE ; }  
+
+  void   SwitchOnEventTriggerAtSE()         { kEventTriggerAtSE = kTRUE ; }
+  void   SwitchOffEventTriggerAtSE()        { kEventTriggerAtSE = kFALSE; }
+
+  void   SwithchOnPhotonPairTimeCut()       { kPhotonPairTimeCut = kTRUE ;}
+  void   SwithchOffPhotonPairTimeCut()      { kPhotonPairTimeCut = kFALSE ;}
+
+  void   SwithchOnPhotonIDCut()             { kDoPhotonIDCut = kTRUE  ; }
+  void   SwithchOffPhotonIDCut()            { kDoPhotonIDCut = kFALSE ; }
+
+  TString GetAnaTypeInIsolated()         const { return fAnaTypeInIsolated ; }
+  void    SetAnaTypeInIsolated(TString & part) { fAnaTypeInIsolated = part ; }
+
+  Float_t GetDeltaPhiHRSize()           const { return fDeltaPhiHRSize   ; }
+  void SetDeltaPhiHRSize(Float_t fHRphi)       { fDeltaPhiHRSize = fHRphi ; }
+
+  Float_t  GetUeDeltaPhiSize()           const { return fUeDeltaPhiSize ; }
+  Float_t  GetUeDeltaPhiFix()            const { return fUeDeltaPhiFix  ; }
+  void     SetUeDeltaPhiFixAndSize(Float_t uefix, Float_t uesize)
+                    { fUeDeltaPhiFix = uefix,  fUeDeltaPhiSize = uesize ; }
+
+  void     SetAssociatedPtBegin(Float_t begin) {fptAssociatedBegin = begin;}
+
+  void     SetLargeCorrTrigger(Float_t ftrigger1, Float_t ftrigger2) 
+                 {fptTriggerBegin = ftrigger1, fptTriggerEnd   = ftrigger2; }
+
+  void    SwitchOnAsymmetryCut()             { kDoAsymmetryCut = kTRUE  ; }
+  void    SwitchOffAsymmetryCut()            { kDoAsymmetryCut = kFALSE ; }
+  void    SetAsymmetryCut(Float_t asycut)    { fAsymmetryCut = asycut ; }
+
+  void    SwitchOnAODHybridTrackSelection()  { kDoSelectHybridTracks = kTRUE ;}
+  void    SwitchOffAODHybridTrackSelection() { kDoSelectHybridTracks = kFALSE;}  
+  void    SetAnaMesonType(TString fmesontype){ fAnaMesonType = fmesontype ; }
+
+  void    SetCentralityBin(Int_t min, Int_t max)
+                       { fCentralityBinMin = min; fCentralityBinMax = max ; }
+  void    SetCentralityClass(TString name)   { fCentralityClass   = name  ; }
+  
+  void    SetEventPlaneMethod(TString m)     { fEventPlaneMethod = m      ; }
+
+  UInt_t  GetEventTriggerMask()        const { return fEventTriggerMaks   ; }
+  void    SetEventTriggerMask(UInt_t evtTrig = AliVEvent::kAny)
+                                        { fEventTriggerMaks = evtTrig     ; }
+  void    SetNCentralityBins(Int_t fcenbins) { fNCentralityBins = fcenbins; }
+  void    SetNEventPlaneBins(Int_t fevbins)  { fNEventPlaneBins = fevbins ; }
+
+  void    SetEMCALLambda0Cut(Float_t l0min, Float_t l0max)
+                                   { fL0CutMin = l0min, fL0CutMax = l0max ; }
+  void    SetClusterTimeCut(Float_t timemin, Float_t timemax){
+                             fTimeCutMin = timemin, fTimeCutMax = timemax ; }
+  void    SetPhotonPairDeltaTimeCut(Float_t deltatime)
+                                         { fPhotonPairTimeCut = deltatime ; }
+  void    SetTrackMatchedDPhiCut(Float_t dphicut){ fEMCALDPhiCut = dphicut; }
+  void    SetTrackMatchedDEtaCut(Float_t detacut){ fEMCALDEtaCut = detacut; }
+
+  void    SetMesonInMassRangeCut(Float_t inmass1, Float_t inmass2){
+                        fInvMassMinCut = inmass1, fInvMassMaxCut = inmass2 ; }
+
+  void    SetMesonInMassLeftRangeCut(Float_t leftmin, Float_t leftmax){
+                      fLeftBandMinCut = leftmin, fLeftBandMaxCut = leftmax ; }
+
+  void    SetMesonInMassRightRangeCut(Float_t rightmin, Float_t rightmax){
+                  fRightBandMinCut = rightmin, fRightBandMaxCut = rightmax ; }
+  void    SetEMCALGeometryName(TString name) { fEMCALGeomName = name ; }
+
+  void    SetTrackCuts(AliESDtrackCuts * cuts);
+  void    SetZvertexCut(Float_t fzcut) { fZVertexCut = fzcut ; }
+
+  void    SetTrackFilterMask(ULong_t bit)  { fTrackFilterMask = bit ; }
+  
+private:
+  AliAnalysisTaskEMCALCaloTrackCorr(const AliAnalysisTaskEMCALCaloTrackCorr&); // not implemented
+  AliAnalysisTaskEMCALCaloTrackCorr& operator=(const AliAnalysisTaskEMCALCaloTrackCorr&); // not implemented
+
+  ////////////Add function
+  void    InitParameters();
+  Bool_t  FillInputEvent();
+
+  Bool_t  SelectPair(AliCaloTrackParticle *mesonCandidate);
+  Bool_t  IsolatedPhoton(TClonesArray *fEMCALEventIsolated, 
+                         TClonesArray *fCTSEventIsolated,
+                         Int_t fIndexPhotonCan,  Double_t ptPhotonCan,
+                         Double_t phiPhotonCan, Double_t etaPhotonCan);
+  void    FillInputPhoton();
+  void    FillInputMeson() ;
+  void    FillInputTrack() ;
+  Bool_t  MakeChargedCorrelation(Int_t fTrackIndex, Double_t ptTrigg, 
+                               Double_t phiTrigg, Double_t etaTrigg);
+  void    MakeChargedMixCorrelation(Double_t ptTriggMix,  Double_t phiTriggMix,
+                            Double_t etaTriggMix, TList *poolMix);
+private:
+  enum {kNtriggPtBins=10, kNassocPtBins=10};
+
+  AliAnalysisManager    *fManager;
+  AliInputEventHandler  *fInputHandler;
+
+  AliVEvent   *fEvent;
+  AliMCEvent    *fMCEvent;
+  AliStack      *fStack;
+  AliCentrality *fCentrality;
+  AliEventplane *fEventPlane;
+
+  AliEMCALRecoUtils *fEMCALRecU;
+  AliEMCALGeometry  *fEMCALGeom;
+  AliESDtrackCuts   *fESDtrackCuts;
+  //  AliFiducialCut    *fFidCut;
+
+  TList    *outputContainer;
+
+  TString  fEMCALGeomName; 
+  TString  fCentralityClass;    
+  Int_t    fCentralityBinMin;
+  Int_t    fCentralityBinMax;
+  TString  fEventPlaneMethod;
+  UInt_t   fEventTriggerMaks;
+  Int_t    fNCentralityBins;
+  Int_t    fNEventPlaneBins;
+  Int_t    fHistoPtBins ; 
+  Float_t  fHistoPtMax  ; 
+  Float_t  fHistoPtMin  ; 
+  Int_t    fHistoPhiBins; 
+  Float_t  fHistoPhiMax ;
+  Float_t  fHistoPhiMin ;
+  Int_t    fHistoEtaBins;
+  Float_t  fHistoEtaMax ;
+  Float_t  fHistoEtaMin ;
+  Int_t    fMinNCells;
+  Float_t  fMinE;
+  Double_t fMinDistBad;
+  Float_t  fL0CutMin;
+  Float_t  fL0CutMax;
+  Float_t  fTimeCutMin;
+  Float_t  fTimeCutMax;
+  Float_t  fPhotonPairTimeCut;
+  Float_t  fEMCALDPhiCut;
+  Float_t  fEMCALDEtaCut;
+  Float_t  fZVertexCut; 
+  Int_t    fDebug;         
+  TString  fAnaMesonType;
+  Float_t  fAsymmetryCut;
+  TString  fDataType;
+  ULong_t  fTrackFilterMask;
+
+  Float_t  fInvMassMinCut;
+  Float_t  fInvMassMaxCut;
+  Float_t  fLeftBandMinCut;
+  Float_t  fLeftBandMaxCut;
+  Float_t  fRightBandMinCut;
+  Float_t  fRightBandMaxCut;
+
+  Bool_t  kMC;
+  Bool_t  kNeutralMesonHistos;
+  Bool_t  kDoMixEventsAna;
+  Bool_t  kDoPhotonCorrAna;
+  Bool_t  kDoAsymmetryCut;
+  Bool_t  kDoSelectHybridTracks;
+  Bool_t  kDoMesonFill;
+  Bool_t  kDoMesonCorrAna;
+  Bool_t  kDoIsolatedAna;
+  Bool_t  kDoTrackMultBins;
+  Bool_t  kUELeftRight;
+  Bool_t  kUENearAway;
+  Bool_t  kDecayPhotonCorr;
+  Bool_t  kAnaMCTruthCorr;
+  Bool_t  kAnaMCPrimaryCorr;
+  Bool_t  kAnaPi0Prim;
+  Bool_t  kAnaEtaPrim;
+  Bool_t  kAnaPhotonPrim;
+  Bool_t  kMakeAbsoluteLeading;
+  Bool_t  kMakeNearSideLeading;
+  Bool_t  kTwoTracksCorr;
+  Bool_t  kPhotonInAcceptance;
+  Bool_t  kAnaDecayMapping;
+//  Bool_t  fCheckFidCut;
+  Bool_t  kEventTriggerAtSE;
+  Bool_t  kPhotonPairTimeCut;
+  Bool_t  kDoPhotonIDCut;
+
+  TH1F     *fhNEvents;        
+  Int_t    fnEvents;
+  TH1F     *fhNEventsAnalyized;
+  Int_t    fEventAnalyized;
+  TClonesArray  *fPhotonEvent;
+  TClonesArray  *fPhotonPairEvent;
+  TClonesArray  *fCTSEvent;
+  Int_t    nPhotonsEMCAL;
+  Int_t    nTracksCTS;
+  TString  fAnaTypeInIsolated;
+  Int_t    nMixedEvents;
+  Float_t  fSetConeR;
+  Float_t  fSetPtThreshold;
+  Float_t  fSetSumPtThreshold;
+  Float_t  fSetPtFraction;
+  Int_t    fICMethod;
+  Int_t    fParticlesInCone;
+
+  Float_t  *fTriggPtArray;
+  Int_t    fNTriggPtBins;
+  Float_t  fptTriggerBegin;
+  Float_t  fptTriggerEnd;
+  Float_t  *fAssocPtArray;
+  Int_t    fNAssocPtBins;
+  Float_t  fptAssociatedBegin;
+
+  Float_t  fDeltaPhiMaxCut;
+  Float_t  fDeltaPhiMinCut;
+  Float_t  fUeDeltaPhiSize;
+  Float_t  fUeDeltaPhiFix;
+  Float_t  fDeltaPhiHRSize;
+
+  TH1F * fhPhotonE;
+  TH2F * fhPhotonPtPhi;
+  TH2F * fhPhotonPtEta;
+  TH2F * fhPhotonPhiEta;
+
+  TH1F * fhMesonE;
+  TH2F * fhMesonPtPhi;
+  TH2F * fhMesonPtEta;
+  TH2F * fhMesonPhiEta;
+
+  TH2F * fhAnglePairNoCut;
+  TH2F * fhInvMassPairNoCut;
+  TH2F * fhAsyNoCut;
+  TH2F * fhInvMassPairAsyCut; 
+  TH2F * fhAnglePairAsyCut;
+  TH2F * fhInvMassPairPhi;
+  TH2F * fhInvMassPairEta;
+  TH2F * fhInvMassPairAllCut;
+  TH2F * fhAnglePairAllCut;
+  TH2F * fhAsyAllCut;
+  TH2F * fhPi0DecayPhoton1;
+  TH2F * fhPi0DecayPhoton1Dphi;
+  TH2F * fhDecayPhoton1Pi0Dphi;
+  TH2F * fhPi0DecayPhoton2;
+  TH2F * fhPi0DecayPhoton2Dphi;
+  TH2F * fhDecayPhoton2Pi0Dphi;
+  TH2F * fhDecayPhoton1Photon2;
+  TH2F * fhDecayPhoton1Photon2Dphi;
+  TH2F * fhDecayPhoton2Photon1Dphi;
+
+  TH1F * fhNtracksAll;
+  TH1F * fhNtracksEMC7;
+  TH1F * fhNtracksAnyINT;
+  TH1F * fhNtracksCentral;
+  TH1F * fhNtracksSemiCentral;
+  TH1F * fhNtracksOtherTirgger;
+  TH1F * fhNtracksCorr;
+  TH2F * fhTrackPtPhi;
+  TH2F * fhTrackPtEta;
+  TH2F * fhTrackPhiEta;
+  TH2F * fhPtPhiLeading;        //! phi distribution vs pT of leading
+  TH2F * fhPtEtaLeading;        //! eta distribution vs pT of leading
+  TH2F * fhMixPtPhiLeading;        //! phi distribution vs pT of leading
+  TH2F * fhMixPtEtaLeading;        //! eta distribution vs pT of leading
+  TH2F * fhDPhiTriggPtAssocPt;
+  TH2F * fhDEtaTriggPtAssocPt;
+  TH2F * fhAssocPtTriggPt;
+  TH2F * fhxELogTriggPt;
+  TH2F * fhpoutTriggPt;
+  TH2F * fhzTTriggPt;
+  TH2F * fhxETriggPt;       
+  TH2F * fhAssocPtTriggPtHR;
+  TH2F * fhxELogTriggPtHR;
+  TH2F * fhpoutTriggPtHR;
+  TH2F * fhzTTriggPtHR;
+  TH2F * fhxETriggPtHR;
+  TH2F * fhNUeAssocPtTriggPt;
+  TH2F * fhNUepoutTriggPt;
+  TH2F * fhNUexETriggPt;
+  TH2F * fhNUezTTriggPt;
+  TH2F * fhNUexELogTriggPt;
+  TH2F * fhNUeDPhiDEta;
+  TH2F * fhAUeAssocPtTriggPt;
+  TH2F * fhAUepoutTriggPt;
+  TH2F * fhAUezTTriggPt; 
+  TH2F * fhAUexETriggPt;
+  TH2F * fhAUexELogTriggPt;
+  TH2F * fhAUeDPhiDEta;
+
+  TH2F * fhMCPtPhiLeading;        //! phi distribution vs pT of leading
+  TH2F * fhMCPtEtaLeading;        //! eta distribution vs pT of leading
+
+  TH2F * fhMCAssocPtTriggPt;
+  TH2F * fhMCxELogTriggPt;
+  TH2F * fhMCpoutTriggPt;
+  TH2F * fhMCzTTriggPt;
+  TH2F * fhMCxETriggPt;
+  TH2F * fhMCAssocPtTriggPtHR;
+  TH2F * fhMCxELogTriggPtHR;
+  TH2F * fhMCpoutTriggPtHR;
+  TH2F * fhMCzTTriggPtHR;
+  TH2F * fhMCxETriggPtHR;
+  TH2F * fhMCNUeAssocPtTriggPt;
+  TH2F * fhMCNUepoutTriggPt;
+  TH2F * fhMCNUexETriggPt;
+  TH2F * fhMCNUezTTriggPt;
+  TH2F * fhMCNUexELogTriggPt;
+  TH2F * fhMCAUeAssocPtTriggPt;
+  TH2F * fhMCAUepoutTriggPt;
+  TH2F * fhMCAUezTTriggPt;
+  TH2F * fhMCAUexETriggPt;
+  TH2F * fhMCAUexELogTriggPt;
+
+  TH2F * fhDPhiAssocPt15T;
+  TH2F * fhDEtaAssocPt15T;
+  TH2F * fhMixDPhiAssocPt15T;
+  TH2F * fhMixDEtaAssocPt15T;
+  TH2F * fhMCDPhiAssocPt15T;
+  TH2F * fhMCDEtaAssocPt15T;
+
+  TList* fListMixEvents[10][10][10]; 
+  TH2F  *fhDPhiTriggPtT[kNassocPtBins];
+  TH2F  *fhDEtaTriggPtT[kNassocPtBins];
+  TH2F  *fhMixDPhiTriggPtT[kNassocPtBins];
+  TH2F  *fhMixDEtaTriggPtT[kNassocPtBins];
+
+  TH2F  *fhDPhiSumPtBin[kNtriggPtBins][kNassocPtBins];
+  TH2F  *fhDEtaSumPtBin[kNtriggPtBins][kNassocPtBins];
+  TH2F  *fhDPhiDEtaBin[kNtriggPtBins][kNassocPtBins];
+  TH2F  *fhMixDPhiDEtaBin[kNtriggPtBins][kNassocPtBins];
+
+  TH2F  *fhDPhiAssocPtA[kNtriggPtBins];
+  TH2F  *fhDEtaAssocPtA[kNtriggPtBins];
+  TH2F  *fhMixDPhiAssocPtA[kNtriggPtBins];
+  TH2F  *fhMixDEtaAssocPtA[kNtriggPtBins];
+
+  TH2F  *fhMCDPhiTriggPtT[kNassocPtBins];
+  TH2F  *fhMCDEtaTriggPtT[kNassocPtBins];
+
+  TH2F  *fhMCDPhiSumPtBin[kNtriggPtBins][kNassocPtBins];
+  TH2F  *fhMCDEtaSumPtBin[kNtriggPtBins][kNassocPtBins];
+  TH2F  *fhMCDPhiDEtaBin[kNtriggPtBins][kNassocPtBins];
+
+  TH2F  *fhMCDPhiAssocPtA[kNtriggPtBins];
+  TH2F  *fhMCDEtaAssocPtA[kNtriggPtBins];
+
+  ClassDef(AliAnalysisTaskEMCALCaloTrackCorr, 1); // example of analysis
+};
+
+#endif