ROOT logo
#ifndef ALIANAPARTICLEHADRONCORRELATION_H
#define ALIANAPARTICLEHADRONCORRELATION_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice     */

//_________________________________________________________________________
// Class that contains the algorithm for the analysis of
// particle - hadron correlations
// Particle (for example direct gamma) must be found in a previous analysis
//
//-- Author: Gustavo Conesa (LNF-INFN) (LPSC-IN2P3-CNRS)
//           Yaxian Mao (LPSC-IN2P3-CNRS) and (CNWU) first usable implementation.
//           Xiangrong Zhu (CNWU), implementtion of own mixing.
//

// --- Analysis system ---

#include "AliAnaCaloTrackCorrBaseClass.h"
class AliAODPWG4ParticleCorrelation ;

class AliAnaParticleHadronCorrelation : public AliAnaCaloTrackCorrBaseClass {
  
 public: 
  
  AliAnaParticleHadronCorrelation() ;          // default ctor
  virtual ~AliAnaParticleHadronCorrelation() ; // virtual dtor
  
  // General methods
      
  TObjString * GetAnalysisCuts();
  
  TList      * GetCreateOutputObjects();
  
  void         Init();
  
  void         InitParameters();

  void         FillEventMixPool() ;
    
  void         MakeAnalysisFillHistograms() ; 
  
  void         Print(const Option_t * opt) const;
  
  // Main analysis methods
  
  Bool_t       FindLeadingOppositeHadronInWindow(AliAODPWG4ParticleCorrelation * particle);
  
  Bool_t       GetDecayPhotonMomentum   (Int_t indexPhoton1, Int_t indexPhoton2, Int_t idetector);
  
  void         MakeChargedCorrelation   (AliAODPWG4ParticleCorrelation * particle) ;
  
  void         MakeNeutralCorrelation   (AliAODPWG4ParticleCorrelation * particle) ;
  
  void         MakeMCChargedCorrelation (Int_t triggerMCLable, Int_t histoIndex, Bool_t lostDecayPair) ;
  
  void         MakeChargedMixCorrelation(AliAODPWG4ParticleCorrelation * particle) ;
  
  // Filling histogram methods
  
  void         FillChargedAngularCorrelationHistograms  (Float_t ptAssoc,  Float_t ptTrig,      Int_t   assocBin,
                                                         Float_t phiAssoc, Float_t phiTrig,     Float_t deltaPhi,
                                                         Float_t etaAssoc, Float_t etaTrig,  
                                                         Int_t   decayTag, Float_t hmpidSignal, Int_t outTOF,
                                                         Int_t   cenbin,   Int_t   mcTag);
  
  void         FillChargedEventMixPool();
  
  Bool_t       FillChargedMCCorrelationHistograms       (Float_t mcAssocPt, Float_t mcAssocPhi, Float_t mcAssocEta,
                                                         Float_t mcTrigPt,  Float_t mcTrigPhi,  Float_t mcTrigEta,
                                                         Int_t histoIndex,  Bool_t  lostDecayPair);
  
  void         FillChargedMomentumImbalanceHistograms   (Float_t ptTrig,   Float_t ptAssoc, 
                                                         Float_t deltaPhi, Int_t cenbin, Int_t charge,
                                                         Int_t   assocBin, Int_t decayTag,
                                                         Int_t   outTOF,   Int_t mcTag );
  
  void         FillChargedUnderlyingEventHistograms     (Float_t ptTrig,   Float_t ptAssoc, 
                                                         Float_t deltaPhi, Int_t cenbin, Int_t outTOF);
  
  void         FillChargedUnderlyingEventSidesHistograms(Float_t ptTrig,   Float_t ptAssoc, 
                                                         Float_t deltaPhi);
  
  void         FillDecayPhotonCorrelationHistograms     (Float_t ptAssoc,  Float_t phiAssoc, Bool_t bChargedOrNeutral);
  
  void         FillNeutralEventMixPool();
  
  
  void         FillNeutralUnderlyingEventSidesHistograms(Float_t ptTrig,   Float_t ptAssoc, 
                                                         Float_t zT,       Float_t hbpZT, 
                                                         Float_t deltaPhi);  
    
  Int_t        GetMCTagHistogramIndex(Int_t tag);
  static const Int_t fgkNmcTypes = 10;

  Bool_t       IsTriggerTheEventLeadingParticle();
  
  // Parameter setter and getter
  
  Float_t      GetMinimumTriggerPt()       const { return GetMinPt()             ; }
  Float_t      GetMaximumTriggerPt()       const { return GetMaxPt()             ; }
  void         SetTriggerPtRange(Float_t min, Float_t max)
               { SetMinPt(min), SetMaxPt(max)                                    ; }
  

  Float_t      GetMaximumAssociatedPt()    const { return fMaxAssocPt            ; }
  Float_t      GetMinimumAssociatedPt()    const { return fMinAssocPt            ; }
  void         SetAssociatedPtRange(Float_t min, Float_t max)
               { fMaxAssocPt   = max ;           fMinAssocPt  = min              ; }

  Double_t     GetDeltaPhiMaxCut()         const { return fDeltaPhiMaxCut        ; }
  Double_t     GetDeltaPhiMinCut()         const { return fDeltaPhiMinCut        ; }
  void         SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
               { fDeltaPhiMaxCut   = phimax ;    fDeltaPhiMinCut   = phimin      ; }
  
  // Leading Hadron
  Double_t     GetLeadHadronPhiMaxCut()    const { return fMaxLeadHadPhi         ; }
  Double_t     GetLeadHadronPhiMinCut()    const { return fMinLeadHadPhi         ; }
  void         SetLeadHadronPhiCut(Float_t min, Float_t max)
               { fMaxLeadHadPhi = max ;          fMinLeadHadPhi  = min           ; }

  Double_t     GetLeadHadronPtMinCut()     const { return fMinLeadHadPt          ; }
  Double_t     GetLeadHadronPtMaxCut()     const { return fMaxLeadHadPt          ; }
  void         SetLeadHadronPtCut(Float_t min, Float_t max)
               { fMaxLeadHadPt  = max ;           fMinLeadHadPt  = min           ; }
  
  Bool_t       IsLeadHadronCutOn()        const { return fSelectLeadingHadronAngle   ; }
  void         SwitchOnLeadHadronSelection()    { fSelectLeadingHadronAngle = kTRUE  ; }
  void         SwitchOffLeadHadronSelection()   { fSelectLeadingHadronAngle = kFALSE ; }
  
  void         SwitchOnFillLeadHadronHistograms() { fFillLeadHadOppositeHisto = kTRUE  ; }
  void         SwitchOffFillLeadHadronHistograms(){ fFillLeadHadOppositeHisto = kFALSE ; }

  // UE
  
  Double_t     GetUeDeltaPhiMaxCut()       const { return fUeDeltaPhiMaxCut      ; }
  Double_t     GetUeDeltaPhiMinCut()       const { return fUeDeltaPhiMinCut      ; }
  
  void         SetUeDeltaPhiCutRange(Double_t uephimin, Double_t uephimax)
                  { fUeDeltaPhiMaxCut = uephimax ;  fUeDeltaPhiMinCut = uephimin ; }
  
  Bool_t       IsSeveralUEOn()             const { return fMakeSeveralUE         ; }
  void         SwitchOnSeveralUECalculation()    { fMakeSeveralUE      = kTRUE   ; }
  void         SwitchOffSeveralUECalculation()   { fMakeSeveralUE      = kFALSE  ; }

  // Do trigger-neutral correlation
  Bool_t       DoNeutralCorr()             const { return fNeutralCorr           ; }
  void         SwitchOnNeutralCorr()             { fNeutralCorr      = kTRUE     ; }
  void         SwitchOffNeutralCorr()            { fNeutralCorr      = kFALSE    ; }  
  
  // Taking the absolute leading as the trigger or not
  Bool_t       DoAbsoluteLeading()         const { return fMakeAbsoluteLeading   ; }
  void         SwitchOnAbsoluteLeading()         { fMakeAbsoluteLeading = kTRUE  ; }
  void         SwitchOffAbsoluteLeading()        { fMakeAbsoluteLeading = kFALSE ; }
  
  // Taking the near side leading as the trigger or not
  Bool_t       DoNearSideLeading()         const { return fMakeNearSideLeading   ; }
  void         SwitchOnNearSideLeading()         { fMakeNearSideLeading = kTRUE  ; }
  void         SwitchOffNearSideLeading()        { fMakeNearSideLeading = kFALSE ; }
  
  // Do decay-hadron correlation if it is pi0 trigger
  Bool_t       IsPi0Trigger()              const { return fPi0Trigger            ; }
  void         SwitchOnPi0TriggerDecayCorr()     { fPi0Trigger          = kTRUE  ; }
  void         SwitchOffPi0TriggerDecayCorr()    { fPi0Trigger          = kFALSE ; }
  
  Bool_t       IsDecayTrigger()            const { return fDecayTrigger          ; }
  void         SwitchOnDecayTriggerDecayCorr()   { fDecayTrigger        = kTRUE  ; }
  void         SwitchOffDecayTriggerDecayCorr()  { fDecayTrigger        = kFALSE ; }  
  void         SetNDecayBits(Int_t n)            { fNDecayBits = n               ; }
  void         SetDecayBits(Int_t i, UInt_t bit) { if(i < 4) fDecayBits[i] = bit ; }
  
  Bool_t       IsHMPIDCorrelation()        const { return fHMPIDCorrelation      ; }
  void         SwitchOnHMPIDCorrelation()        { fHMPIDCorrelation    = kTRUE  ; }
  void         SwitchOffHMPIDCorrelation()       { fHMPIDCorrelation    = kFALSE ; }  
  
  void         SwitchOnFillBradHistograms()      { fFillBradHisto       = kTRUE  ; }
  void         SwitchOffFillBradHistograms()     { fFillBradHisto       = kFALSE ; }  
    
  Bool_t       OnlyIsolated()              const { return fSelectIsolated        ; }
  void         SelectIsolated(Bool_t s)          { fSelectIsolated   = s         ; }

  void         SetPi0AODBranchName(TString n)    { fPi0AODBranchName = n         ; }
  
  void         SetNAssocPtBins(Int_t n) ;     
  void         SetAssocPtBinLimit(Int_t ibin, Float_t pt) ;
  
  Bool_t       IsMixStoredInReaderOn()     const { return fUseMixStoredInReader  ; }
  void         SwitchOnUseMixStoredInReader()    { fUseMixStoredInReader = kTRUE ; }
  void         SwitchOffUseMixStoredInReader()   { fUseMixStoredInReader = kFALSE; }
  
  void         SwitchOnFillNeutralInMixedEvent() { fFillNeutralEventMixPool = kTRUE  ; }
  void         SwitchOffFillNeutralInMixedEvent(){ fFillNeutralEventMixPool = kFALSE ; }
  
  void         SetM02Cut(Float_t min=0, Float_t max=10)  { fM02MinCut   = min ; fM02MaxCut  = max ; }

  void         SwitchOnCorrelationVzBin()        { fCorrelVzBin          = kTRUE  ; }
  void         SwitchOffCorrelationVzBin()       { fCorrelVzBin          = kFALSE ; }  
  
  void         SwitchOnFillTriggerAODWithReferences()   { fFillAODWithReferences = kTRUE  ; }
  void         SwitchOffFillTriggerAODWithReferences()  { fFillAODWithReferences = kFALSE ; }

  void         SwitchOnCheckNeutralClustersForLeading() { fCheckLeadingWithNeutralClusters = kTRUE  ; }
  void         SwitchOffCheckNeutralClustersForLeading(){ fCheckLeadingWithNeutralClusters = kFALSE ; }
  
  void         SwitchOnFillEtaGapHistograms()    { fFillEtaGapsHisto    = kTRUE  ; }
  void         SwitchOffFillEtaGapHistograms()   { fFillEtaGapsHisto    = kFALSE ; }
  
  void         SwitchOnFillPtImbalancePerPtABinHistograms()  { fFillMomImbalancePtAssocBinsHisto = kTRUE  ; }
  void         SwitchOffFillPtImbalancePerPtABinHistograms() { fFillMomImbalancePtAssocBinsHisto = kFALSE ; }
  
  void         SetMCGenType(Int_t min = 0, Int_t max = 6) { if(min >= 0 && min < fgkNmcTypes) fMCGenTypeMin = min ;
                                                            if(max >= 0 && max < fgkNmcTypes) fMCGenTypeMax = max ; }
  
 private:

  Bool_t       fFillAODWithReferences;         // Add to the trigger particle AOD the reference to the tracks or neutrals in correlation.
  Bool_t       fCheckLeadingWithNeutralClusters;// Compare the trigger candidate to Leading pT with the clusters pT, by default only charged
  Float_t      fMaxAssocPt ;                   // Maximum associated hadron pt
  Float_t      fMinAssocPt ;                   // Minimum associated hadron pt
  Double_t     fDeltaPhiMaxCut ;               // Minimum Delta Phi Gamma-Hadron
  Double_t     fDeltaPhiMinCut ;               // Maximum Delta Phi Gamma-Hadron
  Bool_t       fSelectIsolated ;               // Select only trigger particles isolated
  Bool_t       fMakeSeveralUE ;                // Do analysis for several underlying events contribution
  Double_t     fUeDeltaPhiMaxCut ;             // Minimum Delta Phi Gamma-Underlying Hadron
  Double_t     fUeDeltaPhiMinCut ;             // Maximum Delta Phi Gamma-Underlying Hadron
  TString      fPi0AODBranchName;              // Name of AOD branch with pi0, not trigger
  Bool_t       fNeutralCorr ;                  // switch the analysis with neutral particles
  Bool_t       fPi0Trigger ;                   // switch the analysis with decay photon from pi0 trigger
  Bool_t       fDecayTrigger ;                 // switch the analysis with decay photon from photon trigger
  Int_t        fNDecayBits ;                   // in case of study of decay triggers, select the decay bit
  UInt_t       fDecayBits[4] ;                 // in case of study of decay triggers, select the decay bit
  Bool_t       fMakeAbsoluteLeading ;          // requesting absolute leading triggers
  Bool_t       fMakeNearSideLeading ;          // requesting near side leading (+-90ยบ from trigger particle) triggers
  Int_t        fLeadingTriggerIndex ;          // Store here per event the trigger index, to avoid too many loops
  Bool_t       fHMPIDCorrelation    ;          // Correlate with particles on HMPID or its acceptance
  Bool_t       fFillBradHisto ;                // DPhi histograms calculated differently
  Int_t        fNAssocPtBins ;                 // Number of associated pT bins under study
  Float_t      fAssocPtBinLimit[20] ;          // Associated pT under study
  Bool_t       fCorrelVzBin ;                  // Fill one histogram per vz bin
  
  TList **     fListMixTrackEvents ;           //![GetNCentrBin()*GetNZvertBin()*GetNRPBin()] Containers for tracks in stored events for mixing
  TList **     fListMixCaloEvents ;            //![GetNCentrBin()*GetNZvertBin()*GetNRPBin()] Containers for calo clusters in stored events for mixing

  Bool_t       fUseMixStoredInReader;          // Signal if in the current event the pool was filled
  Bool_t       fFillNeutralEventMixPool;       // Add clusters to pool if requested
  
  Float_t      fM02MaxCut   ;                  // Study photon clusters with l0 smaller than cut
  Float_t      fM02MinCut   ;                  // Study photon clusters with l0 larger than cut
  
  Bool_t       fSelectLeadingHadronAngle;      // Select events with leading particle within a range
  Bool_t       fFillLeadHadOppositeHisto;      // Fill histograms for leading hadrons in opposite side of trigger
  
  Float_t      fMinLeadHadPhi;                 // Minimum angle between the trigger and leading hadron
  Float_t      fMaxLeadHadPhi;                 // Maximum ange between the trigger and leading hadron
  Float_t      fMinLeadHadPt;                  // Minimum pT of leading hadron
  Float_t      fMaxLeadHadPt;                  // Maximum pT of leading hadron

  Bool_t       fFillEtaGapsHisto;              // Fill azimuthal correlation histograms in 2 eta gaps, |eta|>0.8 and |eta|<0.01
  Bool_t       fFillMomImbalancePtAssocBinsHisto; // momentum imbalance histograms in bins of pT associated
  
  Int_t        fMCGenTypeMin;                  // Of the fgkNmcTypes possible types, select those between fMCGenTypeMin and fMCGenTypeMax
  Int_t        fMCGenTypeMax;                  // Of the fgkNmcTypes possible types, select those between fMCGenTypeMin and fMCGenTypeMax
  
  TVector3       fTrackVector;                 //! track momentum vector
  TLorentzVector fMomentum;                    //! trigger momentum
  TLorentzVector fDecayMom1;                   //! decay particle momentum
  TLorentzVector fDecayMom2;                   //! decay particle momentum
  
  //Histograms

  //trigger particles
  TH1F *       fhPtTriggerInput;               //! pT distribution of trigger particles before selection
  TH1F *       fhPtTriggerSSCut;               //! pT distribution of trigger particles after shower shape selection
  TH1F *       fhPtTriggerIsoCut;              //! pT distribution of trigger particles after isolation cut selection
  TH1F *       fhPtTriggerFidCut;              //! pT distribution of trigger particles after fiducial selection
  TH1F *       fhPtTrigger;                    //! pT distribution of trigger particles
  TH1F *       fhPtTriggerVtxBC0;              //! pT distribution of trigger particles
  TH1F *       fhPtTriggerPileUp[7];           //! pT distribution of trigger particles
  TH2F *       fhPtTriggerVzBin;               //! pT distribution of trigger particles vs vz bin
  TH2F *       fhPtTriggerBin;                 //! pT distribution of trigger particles, vs mixing bin
  TH2F *       fhPhiTrigger;                   //! phi distribution vs pT of trigger particles
  TH2F *       fhEtaTrigger;                   //! eta distribution vs pT of trigger particles
  
  TH1F *       fhPtTriggerMC[fgkNmcTypes];     //! pT distribution of trigger particles, check the origin of the cluster : "Photon","Pi0","Pi0Decay","EtaDecay","OtherDecay","Electron","Hadron"

  TH1F *       fhPtDecayTrigger[4];            //! pT distribution of trigger particles, tagged as decay
  TH1F *       fhPtDecayTriggerMC[4][fgkNmcTypes];//! pT distribution of trigger particles, tagged as decay, check the origin of the cluster
  
  TH2F *       fhPtTriggerCentrality;          //! pT distribution of trigger particles vs centrality
  TH2F *       fhPtTriggerEventPlane;          //! pT distribution of trigger particles vs centrality
  TH2F *       fhTriggerEventPlaneCentrality;  //! event plane vs centrality for trigger particles
  
  TH1F *       fhPtTriggerMixed;               //! pT distribution of trigger particles, used in mixing
  TH2F *       fhPtTriggerMixedVzBin;          //! pT distribution of trigger particles, used in mixing, vs vz bin
  TH2F *       fhPtTriggerMixedBin;            //! pT distribution of trigger particles vs mixing bin
  TH2F *       fhPhiTriggerMixed;              //! phi distribution vs pT of trigger particles, used in mixing
  TH2F *       fhEtaTriggerMixed;              //! eta distribution vs pT of trigger particles, used in mixing  

  // Leading hadron in the opposite side of the trigger
  TH2F *       fhPtLeadingOppositeHadron;        //! pT trigger : pT distribution of leading hadron oposite to trigger
  TH2F *       fhPtDiffPhiLeadingOppositeHadron; //! pT trigger : difference phi distribution of leading hadron oposite and trigger
  TH2F *       fhPtDiffEtaLeadingOppositeHadron; //! pT trigger: difference eta distribution of leading hadron oposite and trigger
  TH1F *       fhPtNoLeadingOppositeHadron;      //! pT trigger for events without opposite hadrons
  TH2F *       fhEtaPhiNoLeadingOppositeHadron;  //! location of trigger when no hadron is found on the opposite side

  //trigger-charged histograms
  TH2F *       fhDeltaPhiDeltaEtaCharged ;     //! differences of eta and phi between trigger and charged hadrons
  TH2F *       fhPhiCharged  ;                 //! Phi distribution of charged particles
  TH2F *       fhEtaCharged  ;                 //! Eta distribution of charged particles
  TH2F *       fhDeltaPhiCharged  ;            //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhDeltaEtaCharged  ;            //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT
  TH2F *       fhDeltaPhiChargedPt  ;          //! Difference of charged particle phi and trigger particle  phi as function of charged particle pT
  TH2F *       fhDeltaPhiUeChargedPt ;         //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
  TH1F *       fhUePart;                       //! UE particles distribution vs pt trig
  TH2F *       fhXECharged  ;                  //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhXECharged_Cone2  ;            //! Trigger particle -charged hadron momentum imbalance histogram in cone2 (5pi/6-7pi/6)
  TH2F *       fhXEUeCharged  ;                //! Trigger particle -underlying charged hadron momentum imbalance histogram  
  TH2F *       fhXEPosCharged  ;               //! Trigger particle -positive charged hadron momentum imbalance histogram
  TH2F *       fhXENegCharged  ;               //! Trigger particle -negative charged hadron momentum imbalance histogram 
  TH2F *       fhPtHbpXECharged  ;             //! Trigger particle -charged hadron momentum HBP histogram
  TH2F *       fhPtHbpXECharged_Cone2  ;       //! Trigger particle -charged hadron momentum HBP histogram in cone2 (5pi/6-7pi/6)
  TH2F *       fhPtHbpXEUeCharged  ;           //! Trigger particle -underlying charged hadron momentum HBP histogram  
  TH2F *       fhZTCharged  ;                  //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTUeCharged  ;                //! Trigger particle -underlying charged hadron momentum imbalance histogram  
  TH2F *       fhZTPosCharged  ;               //! Trigger particle -positive charged hadron momentum imbalance histogram
  TH2F *       fhZTNegCharged  ;               //! Trigger particle -negative charged hadron momentum imbalance histogram 
  TH2F *       fhPtHbpZTCharged  ;             //! Trigger particle -charged hadron momentum HBP histogram
  TH2F *       fhPtHbpZTUeCharged  ;           //! Trigger particle -underlying charged hadron momentum HBP histogram  
  
  TH2F *       fhXEChargedMC[fgkNmcTypes]  ;   //! Trigger particle -charged hadron momentum imbalance histogram, check the origin of the cluster : decay photon (pi0, eta, other), merged photon (pi0), hadron, rest of photons (prompt, FSR, ISR)
  TH2F *       fhDeltaPhiChargedMC[fgkNmcTypes];//! Trigger particle -charged hadron delta phi histogram, check the origin of the cluster : decay photon (pi0, eta, other), merged photon (pi0), hadron, rest of photons (prompt, FSR, ISR)

  TH2F *       fhDeltaPhiDeltaEtaChargedPtA3GeV;//! differences of eta and phi between trigger and charged hadrons, pTa > 3 GeV
  TH2F *       fhDeltaPhiChargedPtA3GeV  ;      //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
  TH2F *       fhDeltaEtaChargedPtA3GeV  ;      //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT, pTa > 3 GeV
  
  // Events tagged as pileup by SDD,EMCal, or combination
  TH2F *       fhDeltaPhiChargedPileUp[7]  ;    //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhDeltaEtaChargedPileUp[7]  ;    //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT
  TH2F *       fhDeltaPhiChargedPtA3GeVPileUp[7] ; //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
  TH2F *       fhDeltaEtaChargedPtA3GeVPileUp[7] ; //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT, pTa > 3 GeV
  TH2F *       fhXEChargedPileUp[7]  ;          //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhXEUeChargedPileUp[7]  ;        //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTChargedPileUp[7]  ;          //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTUeChargedPileUp[7]  ;        //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhPtTrigChargedPileUp[7] ;       //! trigger and correlated particl pt, to be used for mean value for kt
  
  TH2F *       fhDeltaPhiChargedOtherBC  ;       //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhDeltaPhiChargedPtA3GeVOtherBC ; //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
  TH2F *       fhXEChargedOtherBC  ;             //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhXEUeChargedOtherBC  ;           //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTChargedOtherBC  ;             //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTUeChargedOtherBC  ;           //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhPtTrigChargedOtherBC ;          //! trigger and correlated particl pt, to be used for mean value for kt

  TH2F *       fhDeltaPhiChargedBC0  ;           //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhDeltaPhiChargedPtA3GeVBC0 ;     //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
  TH2F *       fhXEChargedBC0  ;                 //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhXEUeChargedBC0  ;               //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTChargedBC0  ;                 //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTUeChargedBC0  ;               //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhPtTrigChargedBC0 ;              //! trigger and correlated particl pt, to be used for mean value for kt

  TH2F *       fhDeltaPhiChargedVtxBC0  ;        //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhDeltaPhiChargedPtA3GeVVtxBC0 ;  //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
  TH2F *       fhXEChargedVtxBC0  ;              //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhXEUeChargedVtxBC0  ;            //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTChargedVtxBC0  ;              //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhZTUeChargedVtxBC0  ;            //! Trigger particle -charged hadron momentum imbalance histogram
  TH2F *       fhPtTrigChargedVtxBC0 ;           //! trigger and correlated particl pt, to be used for mean value for kt
  
  //if several UE calculation is on, most useful for jet-jet events contribution
  TH2F *       fhDeltaPhiUeLeftCharged  ;      //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
  TH2F *       fhDeltaPhiUeLeftUpCharged;      //! Difference of charged particle from underlying events phi and trigger particle  phi
  TH2F *       fhDeltaPhiUeRightUpCharged;     //! Difference of charged particle from underlying events phi and trigger particle  phi 
  TH2F *       fhDeltaPhiUeLeftDownCharged;    //! Difference of charged particle from underlying events phi and trigger particle  phi 
  TH2F *       fhDeltaPhiUeRightDownCharged;   //! Difference of charged particle from underlying events phi and trigger particle  phi 
  TH2F *       fhXEUeLeftCharged  ;            //! Trigger particle -underlying charged hadron momentum imbalance histogram 
  TH2F *       fhXEUeLeftUpCharged  ;          //! Trigger particle -underlying charged hadron momentum imbalance histogram
  TH2F *       fhXEUeRightUpCharged ;          //! Trigger particle -underlying charged hadron momentum imbalance histogram  
  TH2F *       fhXEUeLeftDownCharged  ;        //! Trigger particle -underlying charged hadron momentum imbalance histogram 
  TH2F *       fhXEUeRightDownCharged ;        //! Trigger particle -underlying charged hadron momentum imbalance histogram  
  TH2F *       fhPtHbpXEUeLeftCharged  ;       //! Trigger particle -underlying charged hadron momentum HBP histogram 
  TH2F *       fhZTUeLeftCharged  ;            //! Trigger particle -underlying charged hadron momentum imbalance histogram
  TH2F *       fhPtHbpZTUeLeftCharged  ;       //! Trigger particle -underlying charged hadron momentum HBP histogram
  
  //for pout and kt extraction
  TH2F *       fhPtTrigPout  ;                 //! Pout =associated pt*sin(delta phi) distribution vs trigger pt 
  TH2F *       fhPtTrigCharged ;               //! trigger and correlated particl pt, to be used for mean value for kt	
  
  //if different multiplicity analysis asked
  TH2F **      fhDeltaPhiChargedMult ;         //![GetNCentrBin()] differences of phi between trigger and charged hadrons: multiplicity bin
  TH2F **      fhDeltaEtaChargedMult ;         //![GetNCentrBin()] differences of eta between trigger and charged hadrons: multiplicity bin
  TH2F **      fhXEMult  ;                     //![GetNCentrBin()] Trigger particle -charged hadron momentum imbalance histogram: multiplicity bin
  TH2F **      fhXEUeMult  ;                   //![GetNCentrBin()] Trigger particle -UE charged hadron momentum imbalance histogram: multiplicity bin
  TH2F **      fhZTMult  ;                     //![GetNCentrBin()] Trigger particle -charged hadron momentum imbalance histogram: multiplicity bin
  TH2F **      fhZTUeMult  ;                   //![GetNCentrBin()] Trigger particle -UE charged hadron momentum imbalance histogram: multiplicity bin
  
  TH2F *       fhAssocPtBkg;                   //! Trigger pT vs associated pT for background
  TH2F **      fhDeltaPhiDeltaEtaAssocPtBin;   //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function eta difference, for different associated bins
  TH2F **      fhDeltaPhiAssocPtBin;           //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt and vz bins
  TH2F **      fhDeltaPhiAssocPtBinDEta08;     //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt and vz bins for Delta eta > 0.8
  TH2F **      fhDeltaPhiAssocPtBinDEta0 ;     //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt and vz bins for Delta eta = 0
  TH2F **      fhDeltaPhiAssocPtBinHMPID;      //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt and vz bins, track with HMPID
  TH2F **      fhDeltaPhiAssocPtBinHMPIDAcc;   //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt and vz bins, track with HMPIDAcc
  TH2F **      fhDeltaPhiBradAssocPtBin;       //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi Brad (?) for different associated pt bins
  TH2F *       fhDeltaPhiBrad;                 //! Trigger pT vs dPhi Brad (?) for different associated pt bins
  TH2F **      fhXEAssocPtBin ;                //![fNAssocPtBins] Trigger pT vs xE for different associated pt bins
  TH2F **      fhZTAssocPtBin ;                //![fNAssocPtBins] Trigger pT vs zT for different associated pt bins
  TH2F **      fhXEVZ ;                        //![GetNZvertBin()] Trigger pT vs xE for different vz bins
  TH2F **      fhZTVZ ;                        //![GetNZvertBin()] Trigger pT vs zT for different vz bins

  //trigger-neutral histograms
  TH2F *       fhDeltaPhiDeltaEtaNeutral ;     //! differences of eta and phi between trigger and neutral hadrons (pi0)
  TH2F *       fhPhiNeutral   ;                //! Phi distribution of neutral particles  
  TH2F *       fhEtaNeutral   ;                //! Eta distribution of neutral particles
  TH2F *       fhDeltaPhiNeutral   ;           //! Difference of neutral particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhDeltaEtaNeutral  ;            //! Difference of neutral particle eta and trigger particle  eta as function of  trigger particle pT
  TH2F *       fhDeltaPhiNeutralPt  ;          //! Difference of neutral particle phi and trigger particle  phi as function of neutral particle particle pT
  TH2F *       fhDeltaPhiUeNeutralPt ;         //! Difference of neutral particle phi and trigger particle  phi as function of neutral particle particle pT  
  TH2F *       fhXENeutral  ;                  //! Trigger particle - neutral hadron momentum imbalance histogram 
  TH2F *       fhXEUeNeutral  ;                //! Trigger particle - neutral hadron momentum imbalance histogram 
  TH2F *       fhPtHbpXENeutral  ;             //! Trigger particle - neutral particle momentum HBP histogram
  TH2F *       fhPtHbpXEUeNeutral  ;           //! Trigger particle - underlying neutral hadron momentum HBP histogram  
  TH2F *       fhZTNeutral  ;                  //! Trigger particle - neutral hadron momentum imbalance histogram 
  TH2F *       fhZTUeNeutral  ;                //! Trigger particle - neutral hadron momentum imbalance histogram 
  TH2F *       fhPtHbpZTNeutral  ;             //! Trigger particle - neutral particle momentum HBP histogram
  TH2F *       fhPtHbpZTUeNeutral  ;           //! Trigger particle - underlying neutral hadron momentum HBP histogram  
  
  // If several UE calculation is on,
  TH2F *       fhDeltaPhiUeLeftNeutral  ;      //! Difference of charged particle from underlying events phi and trigger particle  phi as function of neutral particle pT
  TH2F *       fhXEUeLeftNeutral  ;            //! Trigger particle -underlying neutral hadron momentum imbalance histogram
  TH2F *       fhPtHbpXEUeLeftNeutral  ;       //! Trigger particle -underlying neutral hadron momentum HBP histogram
  TH2F *       fhZTUeLeftNeutral  ;            //! Trigger particle -underlying neutral hadron momentum imbalance histogram
  TH2F *       fhPtHbpZTUeLeftNeutral  ;       //! Trigger particle -underlying neutral hadron momentum HBP histogram
  
  // Pi0/Eta trigger correlation, recover input photons
  TH2F *       fhPtPi0DecayRatio ;             //! for pi0 trigger pt and ratio of decay photon pt
  TH2F *       fhDeltaPhiPi0DecayCharged  ;    //! Difference of charged particle phi and decay photon from pi0/eta trigger
  TH2F *       fhXEPi0DecayCharged ;           //! Trigger particle (decay from pi0/eta trigger)-charged hadron momentum imbalance histogram
  TH2F *       fhZTPi0DecayCharged ;           //! Trigger particle (decay from pi0/eta trigger)-charged hadron momentum imbalance histogram

  TH2F *       fhDeltaPhiPi0DecayNeutral  ;    //! Difference of neutral particle phi and decay photon from pi0/eta trigger
  TH2F *       fhXEPi0DecayNeutral ;           //! Trigger particle (decay from pi0/eta trigger)-neutral hadron momentum imbalance histogram
  TH2F *       fhZTPi0DecayNeutral ;           //! Trigger particle (decay from pi0/eta trigger)-neutral hadron momentum imbalance histogram

  // Decay photon trigger correlation
  TH2F *       fhDeltaPhiDecayCharged[4]  ;    //! Difference of charged particle phi and photon decay trigger
  TH2F *       fhXEDecayCharged[4] ;           //! Trigger particle (decay from pi0)-charged hadron momentum imbalance histogram
  TH2F *       fhZTDecayCharged[4] ;           //! Trigger particle (decay from pi0)-charged hadron momentum imbalance histogram
  TH2F **      fhDeltaPhiDecayChargedAssocPtBin;//![fNAssocPtBins*GetNZvertBin()] Tagged as decay (fDecayBits[0]) Trigger pT vs dPhi for different associated pt bins
  
  // If the data is MC, correlation with generated particles
  // check the origin of the cluster : decay photon (pi0, eta, other), merged photon (pi0),
  // hadron, rest of photons (prompt, FSR, ISR)
  TH1F *       fhMCPtTrigger[fgkNmcTypes];               //! MC pure pT distribution of trigger particles
  TH2F *       fhMCPhiTrigger[fgkNmcTypes];              //! MC pure Phi distribution of trigger particles
  TH2F *       fhMCEtaTrigger[fgkNmcTypes];              //! MC pure Eta distribution of trigger particles
  TH1F *       fhMCPtTriggerNotLeading[fgkNmcTypes];     //! MC pure pT distribution of trigger not leading particles
  TH2F *       fhMCPhiTriggerNotLeading[fgkNmcTypes];    //! MC pure Phi distribution of trigger not leading particles
  TH2F *       fhMCEtaTriggerNotLeading[fgkNmcTypes];    //! MC pure Eta distribution of trigger not leading particles
  TH2F *       fhMCEtaCharged[fgkNmcTypes];              //! MC pure particles charged primary pt vs eta (both associated)
  TH2F *       fhMCPhiCharged[fgkNmcTypes];              //! MC pure particles charged primary pt vs phi (both associated)
  TH2F *       fhMCDeltaEtaCharged[fgkNmcTypes];         //! MC pure particles charged trigger primary pt vs delta eta (associated-trigger)
  TH2F *       fhMCDeltaPhiCharged[fgkNmcTypes];         //! MC pure particles charged trigger primary pt vs delta phi (associated-trigger)
  TH2F *       fhMCDeltaPhiDeltaEtaCharged[fgkNmcTypes]; //! MC pure particles charged associated primary pt vs delta phi (associated-trigger), in away side
  TH2F *       fhMCDeltaPhiChargedPt[fgkNmcTypes];       //! MC pure particles charged delta phi vs delta eta (associated-trigger)
  TH2F *       fhMCPtXECharged[fgkNmcTypes];             //! MC pure particles charged trigger primary pt vs xE
  TH2F *       fhMCPtXEUeCharged[fgkNmcTypes];           //! MC pure particles charged trigger primary pt vs xE (underlying event)
  TH2F *       fhMCPtXEUeLeftCharged[fgkNmcTypes];       //! MC pure particles charged trigger primary pt vs xE (underlying event,left cone)
  TH2F *       fhMCPtHbpXECharged[fgkNmcTypes];          //! MC pure particles charged trigger primary pt vs ln(1/xE)
  TH2F *       fhMCPtHbpXEUeCharged[fgkNmcTypes];        //! MC pure particles charged trigger primary pt vs ln(1/xE) (underlying event)
  TH2F *       fhMCPtHbpXEUeLeftCharged[fgkNmcTypes];    //! MC pure particles charged trigger primary pt vs ln(1/xE) (underlying event, left cone)
  TH1F *       fhMCUePart[fgkNmcTypes];                  //! MC pure UE particles distribution vs pt trig
  TH2F *       fhMCPtZTCharged[fgkNmcTypes];             //! MC pure particles charged trigger primary pt vs zT
  TH2F *       fhMCPtZTUeCharged[fgkNmcTypes];           //! MC pure particles charged trigger primary pt vs zT (underlying event)
  TH2F *       fhMCPtZTUeLeftCharged[fgkNmcTypes];       //! MC pure particles charged trigger primary pt vs zT (underlying event, left cone)
  TH2F *       fhMCPtHbpZTCharged[fgkNmcTypes];          //! MC pure particles charged trigger primary pt vs ln(1/zT)
  TH2F *       fhMCPtHbpZTUeCharged[fgkNmcTypes];        //! MC pure particles charged trigger primary pt vs ln(1/zT) (underlying event)
  TH2F *       fhMCPtHbpZTUeLeftCharged[fgkNmcTypes];    //! MC pure particles charged trigger primary pt vs ln(1/zT) (underlying event, left cone)
  TH2F *       fhMCPtTrigPout[fgkNmcTypes];              //! MC pure particles charged trigger primary pt vs pOut
  TH2F *       fhMCPtAssocDeltaPhi[fgkNmcTypes];         //! MC pure particles charged associated primary pt vs delta phi (associated-trigger)

  // Mixing
  TH1I *       fhNEventsTrigger;               //! number of analyzed triggered events
  TH2F *       fhNtracksMB;                    //! total number of tracks in MB events
  TH2F *       fhNclustersMB;                  //! total number of clusters in MB events
  TH2F *       fhMixDeltaPhiCharged  ;         //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
  TH2F *       fhMixDeltaPhiDeltaEtaCharged  ; //! Difference of charged particle phi and trigger particle  phi as function eta difference
  TH2F *       fhMixXECharged;                 //! xE for mixed event
  TH2F *       fhMixXEUeCharged;               //! xE for mixed event in Ue region
  TH2F *       fhMixHbpXECharged;              //! ln(1/xE) for mixed event
  TH2F **      fhMixDeltaPhiChargedAssocPtBin; //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, for different associated bins
  TH2F **      fhMixDeltaPhiChargedAssocPtBinDEta08;   //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, for different associated bins, delta eta > 0.8
  TH2F **      fhMixDeltaPhiChargedAssocPtBinDEta0;    //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, for different associated bins, delta eta = 0
  TH2F **      fhMixDeltaPhiDeltaEtaChargedAssocPtBin; //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function eta difference, for different associated bins

  TH1I *       fhEventBin;                     //! Number of triggers in a particular event bin (cen,vz,rp)
  TH1I *       fhEventMixBin;                  //! Number of triggers mixed in a particular bin (cen,vz,rp)
  TH1I *       fhEventMBBin;                   //! Number of MB events in a particular bin (cen,vz,rp)
  
  AliAnaParticleHadronCorrelation(              const AliAnaParticleHadronCorrelation & ph) ; // cpy ctor
  AliAnaParticleHadronCorrelation & operator = (const AliAnaParticleHadronCorrelation & ph) ; // cpy assignment
	
  ClassDef(AliAnaParticleHadronCorrelation,35)
} ;
 

#endif //ALIANAPARTICLEHADRONCORRELATION_H



 AliAnaParticleHadronCorrelation.h:1
 AliAnaParticleHadronCorrelation.h:2
 AliAnaParticleHadronCorrelation.h:3
 AliAnaParticleHadronCorrelation.h:4
 AliAnaParticleHadronCorrelation.h:5
 AliAnaParticleHadronCorrelation.h:6
 AliAnaParticleHadronCorrelation.h:7
 AliAnaParticleHadronCorrelation.h:8
 AliAnaParticleHadronCorrelation.h:9
 AliAnaParticleHadronCorrelation.h:10
 AliAnaParticleHadronCorrelation.h:11
 AliAnaParticleHadronCorrelation.h:12
 AliAnaParticleHadronCorrelation.h:13
 AliAnaParticleHadronCorrelation.h:14
 AliAnaParticleHadronCorrelation.h:15
 AliAnaParticleHadronCorrelation.h:16
 AliAnaParticleHadronCorrelation.h:17
 AliAnaParticleHadronCorrelation.h:18
 AliAnaParticleHadronCorrelation.h:19
 AliAnaParticleHadronCorrelation.h:20
 AliAnaParticleHadronCorrelation.h:21
 AliAnaParticleHadronCorrelation.h:22
 AliAnaParticleHadronCorrelation.h:23
 AliAnaParticleHadronCorrelation.h:24
 AliAnaParticleHadronCorrelation.h:25
 AliAnaParticleHadronCorrelation.h:26
 AliAnaParticleHadronCorrelation.h:27
 AliAnaParticleHadronCorrelation.h:28
 AliAnaParticleHadronCorrelation.h:29
 AliAnaParticleHadronCorrelation.h:30
 AliAnaParticleHadronCorrelation.h:31
 AliAnaParticleHadronCorrelation.h:32
 AliAnaParticleHadronCorrelation.h:33
 AliAnaParticleHadronCorrelation.h:34
 AliAnaParticleHadronCorrelation.h:35
 AliAnaParticleHadronCorrelation.h:36
 AliAnaParticleHadronCorrelation.h:37
 AliAnaParticleHadronCorrelation.h:38
 AliAnaParticleHadronCorrelation.h:39
 AliAnaParticleHadronCorrelation.h:40
 AliAnaParticleHadronCorrelation.h:41
 AliAnaParticleHadronCorrelation.h:42
 AliAnaParticleHadronCorrelation.h:43
 AliAnaParticleHadronCorrelation.h:44
 AliAnaParticleHadronCorrelation.h:45
 AliAnaParticleHadronCorrelation.h:46
 AliAnaParticleHadronCorrelation.h:47
 AliAnaParticleHadronCorrelation.h:48
 AliAnaParticleHadronCorrelation.h:49
 AliAnaParticleHadronCorrelation.h:50
 AliAnaParticleHadronCorrelation.h:51
 AliAnaParticleHadronCorrelation.h:52
 AliAnaParticleHadronCorrelation.h:53
 AliAnaParticleHadronCorrelation.h:54
 AliAnaParticleHadronCorrelation.h:55
 AliAnaParticleHadronCorrelation.h:56
 AliAnaParticleHadronCorrelation.h:57
 AliAnaParticleHadronCorrelation.h:58
 AliAnaParticleHadronCorrelation.h:59
 AliAnaParticleHadronCorrelation.h:60
 AliAnaParticleHadronCorrelation.h:61
 AliAnaParticleHadronCorrelation.h:62
 AliAnaParticleHadronCorrelation.h:63
 AliAnaParticleHadronCorrelation.h:64
 AliAnaParticleHadronCorrelation.h:65
 AliAnaParticleHadronCorrelation.h:66
 AliAnaParticleHadronCorrelation.h:67
 AliAnaParticleHadronCorrelation.h:68
 AliAnaParticleHadronCorrelation.h:69
 AliAnaParticleHadronCorrelation.h:70
 AliAnaParticleHadronCorrelation.h:71
 AliAnaParticleHadronCorrelation.h:72
 AliAnaParticleHadronCorrelation.h:73
 AliAnaParticleHadronCorrelation.h:74
 AliAnaParticleHadronCorrelation.h:75
 AliAnaParticleHadronCorrelation.h:76
 AliAnaParticleHadronCorrelation.h:77
 AliAnaParticleHadronCorrelation.h:78
 AliAnaParticleHadronCorrelation.h:79
 AliAnaParticleHadronCorrelation.h:80
 AliAnaParticleHadronCorrelation.h:81
 AliAnaParticleHadronCorrelation.h:82
 AliAnaParticleHadronCorrelation.h:83
 AliAnaParticleHadronCorrelation.h:84
 AliAnaParticleHadronCorrelation.h:85
 AliAnaParticleHadronCorrelation.h:86
 AliAnaParticleHadronCorrelation.h:87
 AliAnaParticleHadronCorrelation.h:88
 AliAnaParticleHadronCorrelation.h:89
 AliAnaParticleHadronCorrelation.h:90
 AliAnaParticleHadronCorrelation.h:91
 AliAnaParticleHadronCorrelation.h:92
 AliAnaParticleHadronCorrelation.h:93
 AliAnaParticleHadronCorrelation.h:94
 AliAnaParticleHadronCorrelation.h:95
 AliAnaParticleHadronCorrelation.h:96
 AliAnaParticleHadronCorrelation.h:97
 AliAnaParticleHadronCorrelation.h:98
 AliAnaParticleHadronCorrelation.h:99
 AliAnaParticleHadronCorrelation.h:100
 AliAnaParticleHadronCorrelation.h:101
 AliAnaParticleHadronCorrelation.h:102
 AliAnaParticleHadronCorrelation.h:103
 AliAnaParticleHadronCorrelation.h:104
 AliAnaParticleHadronCorrelation.h:105
 AliAnaParticleHadronCorrelation.h:106
 AliAnaParticleHadronCorrelation.h:107
 AliAnaParticleHadronCorrelation.h:108
 AliAnaParticleHadronCorrelation.h:109
 AliAnaParticleHadronCorrelation.h:110
 AliAnaParticleHadronCorrelation.h:111
 AliAnaParticleHadronCorrelation.h:112
 AliAnaParticleHadronCorrelation.h:113
 AliAnaParticleHadronCorrelation.h:114
 AliAnaParticleHadronCorrelation.h:115
 AliAnaParticleHadronCorrelation.h:116
 AliAnaParticleHadronCorrelation.h:117
 AliAnaParticleHadronCorrelation.h:118
 AliAnaParticleHadronCorrelation.h:119
 AliAnaParticleHadronCorrelation.h:120
 AliAnaParticleHadronCorrelation.h:121
 AliAnaParticleHadronCorrelation.h:122
 AliAnaParticleHadronCorrelation.h:123
 AliAnaParticleHadronCorrelation.h:124
 AliAnaParticleHadronCorrelation.h:125
 AliAnaParticleHadronCorrelation.h:126
 AliAnaParticleHadronCorrelation.h:127
 AliAnaParticleHadronCorrelation.h:128
 AliAnaParticleHadronCorrelation.h:129
 AliAnaParticleHadronCorrelation.h:130
 AliAnaParticleHadronCorrelation.h:131
 AliAnaParticleHadronCorrelation.h:132
 AliAnaParticleHadronCorrelation.h:133
 AliAnaParticleHadronCorrelation.h:134
 AliAnaParticleHadronCorrelation.h:135
 AliAnaParticleHadronCorrelation.h:136
 AliAnaParticleHadronCorrelation.h:137
 AliAnaParticleHadronCorrelation.h:138
 AliAnaParticleHadronCorrelation.h:139
 AliAnaParticleHadronCorrelation.h:140
 AliAnaParticleHadronCorrelation.h:141
 AliAnaParticleHadronCorrelation.h:142
 AliAnaParticleHadronCorrelation.h:143
 AliAnaParticleHadronCorrelation.h:144
 AliAnaParticleHadronCorrelation.h:145
 AliAnaParticleHadronCorrelation.h:146
 AliAnaParticleHadronCorrelation.h:147
 AliAnaParticleHadronCorrelation.h:148
 AliAnaParticleHadronCorrelation.h:149
 AliAnaParticleHadronCorrelation.h:150
 AliAnaParticleHadronCorrelation.h:151
 AliAnaParticleHadronCorrelation.h:152
 AliAnaParticleHadronCorrelation.h:153
 AliAnaParticleHadronCorrelation.h:154
 AliAnaParticleHadronCorrelation.h:155
 AliAnaParticleHadronCorrelation.h:156
 AliAnaParticleHadronCorrelation.h:157
 AliAnaParticleHadronCorrelation.h:158
 AliAnaParticleHadronCorrelation.h:159
 AliAnaParticleHadronCorrelation.h:160
 AliAnaParticleHadronCorrelation.h:161
 AliAnaParticleHadronCorrelation.h:162
 AliAnaParticleHadronCorrelation.h:163
 AliAnaParticleHadronCorrelation.h:164
 AliAnaParticleHadronCorrelation.h:165
 AliAnaParticleHadronCorrelation.h:166
 AliAnaParticleHadronCorrelation.h:167
 AliAnaParticleHadronCorrelation.h:168
 AliAnaParticleHadronCorrelation.h:169
 AliAnaParticleHadronCorrelation.h:170
 AliAnaParticleHadronCorrelation.h:171
 AliAnaParticleHadronCorrelation.h:172
 AliAnaParticleHadronCorrelation.h:173
 AliAnaParticleHadronCorrelation.h:174
 AliAnaParticleHadronCorrelation.h:175
 AliAnaParticleHadronCorrelation.h:176
 AliAnaParticleHadronCorrelation.h:177
 AliAnaParticleHadronCorrelation.h:178
 AliAnaParticleHadronCorrelation.h:179
 AliAnaParticleHadronCorrelation.h:180
 AliAnaParticleHadronCorrelation.h:181
 AliAnaParticleHadronCorrelation.h:182
 AliAnaParticleHadronCorrelation.h:183
 AliAnaParticleHadronCorrelation.h:184
 AliAnaParticleHadronCorrelation.h:185
 AliAnaParticleHadronCorrelation.h:186
 AliAnaParticleHadronCorrelation.h:187
 AliAnaParticleHadronCorrelation.h:188
 AliAnaParticleHadronCorrelation.h:189
 AliAnaParticleHadronCorrelation.h:190
 AliAnaParticleHadronCorrelation.h:191
 AliAnaParticleHadronCorrelation.h:192
 AliAnaParticleHadronCorrelation.h:193
 AliAnaParticleHadronCorrelation.h:194
 AliAnaParticleHadronCorrelation.h:195
 AliAnaParticleHadronCorrelation.h:196
 AliAnaParticleHadronCorrelation.h:197
 AliAnaParticleHadronCorrelation.h:198
 AliAnaParticleHadronCorrelation.h:199
 AliAnaParticleHadronCorrelation.h:200
 AliAnaParticleHadronCorrelation.h:201
 AliAnaParticleHadronCorrelation.h:202
 AliAnaParticleHadronCorrelation.h:203
 AliAnaParticleHadronCorrelation.h:204
 AliAnaParticleHadronCorrelation.h:205
 AliAnaParticleHadronCorrelation.h:206
 AliAnaParticleHadronCorrelation.h:207
 AliAnaParticleHadronCorrelation.h:208
 AliAnaParticleHadronCorrelation.h:209
 AliAnaParticleHadronCorrelation.h:210
 AliAnaParticleHadronCorrelation.h:211
 AliAnaParticleHadronCorrelation.h:212
 AliAnaParticleHadronCorrelation.h:213
 AliAnaParticleHadronCorrelation.h:214
 AliAnaParticleHadronCorrelation.h:215
 AliAnaParticleHadronCorrelation.h:216
 AliAnaParticleHadronCorrelation.h:217
 AliAnaParticleHadronCorrelation.h:218
 AliAnaParticleHadronCorrelation.h:219
 AliAnaParticleHadronCorrelation.h:220
 AliAnaParticleHadronCorrelation.h:221
 AliAnaParticleHadronCorrelation.h:222
 AliAnaParticleHadronCorrelation.h:223
 AliAnaParticleHadronCorrelation.h:224
 AliAnaParticleHadronCorrelation.h:225
 AliAnaParticleHadronCorrelation.h:226
 AliAnaParticleHadronCorrelation.h:227
 AliAnaParticleHadronCorrelation.h:228
 AliAnaParticleHadronCorrelation.h:229
 AliAnaParticleHadronCorrelation.h:230
 AliAnaParticleHadronCorrelation.h:231
 AliAnaParticleHadronCorrelation.h:232
 AliAnaParticleHadronCorrelation.h:233
 AliAnaParticleHadronCorrelation.h:234
 AliAnaParticleHadronCorrelation.h:235
 AliAnaParticleHadronCorrelation.h:236
 AliAnaParticleHadronCorrelation.h:237
 AliAnaParticleHadronCorrelation.h:238
 AliAnaParticleHadronCorrelation.h:239
 AliAnaParticleHadronCorrelation.h:240
 AliAnaParticleHadronCorrelation.h:241
 AliAnaParticleHadronCorrelation.h:242
 AliAnaParticleHadronCorrelation.h:243
 AliAnaParticleHadronCorrelation.h:244
 AliAnaParticleHadronCorrelation.h:245
 AliAnaParticleHadronCorrelation.h:246
 AliAnaParticleHadronCorrelation.h:247
 AliAnaParticleHadronCorrelation.h:248
 AliAnaParticleHadronCorrelation.h:249
 AliAnaParticleHadronCorrelation.h:250
 AliAnaParticleHadronCorrelation.h:251
 AliAnaParticleHadronCorrelation.h:252
 AliAnaParticleHadronCorrelation.h:253
 AliAnaParticleHadronCorrelation.h:254
 AliAnaParticleHadronCorrelation.h:255
 AliAnaParticleHadronCorrelation.h:256
 AliAnaParticleHadronCorrelation.h:257
 AliAnaParticleHadronCorrelation.h:258
 AliAnaParticleHadronCorrelation.h:259
 AliAnaParticleHadronCorrelation.h:260
 AliAnaParticleHadronCorrelation.h:261
 AliAnaParticleHadronCorrelation.h:262
 AliAnaParticleHadronCorrelation.h:263
 AliAnaParticleHadronCorrelation.h:264
 AliAnaParticleHadronCorrelation.h:265
 AliAnaParticleHadronCorrelation.h:266
 AliAnaParticleHadronCorrelation.h:267
 AliAnaParticleHadronCorrelation.h:268
 AliAnaParticleHadronCorrelation.h:269
 AliAnaParticleHadronCorrelation.h:270
 AliAnaParticleHadronCorrelation.h:271
 AliAnaParticleHadronCorrelation.h:272
 AliAnaParticleHadronCorrelation.h:273
 AliAnaParticleHadronCorrelation.h:274
 AliAnaParticleHadronCorrelation.h:275
 AliAnaParticleHadronCorrelation.h:276
 AliAnaParticleHadronCorrelation.h:277
 AliAnaParticleHadronCorrelation.h:278
 AliAnaParticleHadronCorrelation.h:279
 AliAnaParticleHadronCorrelation.h:280
 AliAnaParticleHadronCorrelation.h:281
 AliAnaParticleHadronCorrelation.h:282
 AliAnaParticleHadronCorrelation.h:283
 AliAnaParticleHadronCorrelation.h:284
 AliAnaParticleHadronCorrelation.h:285
 AliAnaParticleHadronCorrelation.h:286
 AliAnaParticleHadronCorrelation.h:287
 AliAnaParticleHadronCorrelation.h:288
 AliAnaParticleHadronCorrelation.h:289
 AliAnaParticleHadronCorrelation.h:290
 AliAnaParticleHadronCorrelation.h:291
 AliAnaParticleHadronCorrelation.h:292
 AliAnaParticleHadronCorrelation.h:293
 AliAnaParticleHadronCorrelation.h:294
 AliAnaParticleHadronCorrelation.h:295
 AliAnaParticleHadronCorrelation.h:296
 AliAnaParticleHadronCorrelation.h:297
 AliAnaParticleHadronCorrelation.h:298
 AliAnaParticleHadronCorrelation.h:299
 AliAnaParticleHadronCorrelation.h:300
 AliAnaParticleHadronCorrelation.h:301
 AliAnaParticleHadronCorrelation.h:302
 AliAnaParticleHadronCorrelation.h:303
 AliAnaParticleHadronCorrelation.h:304
 AliAnaParticleHadronCorrelation.h:305
 AliAnaParticleHadronCorrelation.h:306
 AliAnaParticleHadronCorrelation.h:307
 AliAnaParticleHadronCorrelation.h:308
 AliAnaParticleHadronCorrelation.h:309
 AliAnaParticleHadronCorrelation.h:310
 AliAnaParticleHadronCorrelation.h:311
 AliAnaParticleHadronCorrelation.h:312
 AliAnaParticleHadronCorrelation.h:313
 AliAnaParticleHadronCorrelation.h:314
 AliAnaParticleHadronCorrelation.h:315
 AliAnaParticleHadronCorrelation.h:316
 AliAnaParticleHadronCorrelation.h:317
 AliAnaParticleHadronCorrelation.h:318
 AliAnaParticleHadronCorrelation.h:319
 AliAnaParticleHadronCorrelation.h:320
 AliAnaParticleHadronCorrelation.h:321
 AliAnaParticleHadronCorrelation.h:322
 AliAnaParticleHadronCorrelation.h:323
 AliAnaParticleHadronCorrelation.h:324
 AliAnaParticleHadronCorrelation.h:325
 AliAnaParticleHadronCorrelation.h:326
 AliAnaParticleHadronCorrelation.h:327
 AliAnaParticleHadronCorrelation.h:328
 AliAnaParticleHadronCorrelation.h:329
 AliAnaParticleHadronCorrelation.h:330
 AliAnaParticleHadronCorrelation.h:331
 AliAnaParticleHadronCorrelation.h:332
 AliAnaParticleHadronCorrelation.h:333
 AliAnaParticleHadronCorrelation.h:334
 AliAnaParticleHadronCorrelation.h:335
 AliAnaParticleHadronCorrelation.h:336
 AliAnaParticleHadronCorrelation.h:337
 AliAnaParticleHadronCorrelation.h:338
 AliAnaParticleHadronCorrelation.h:339
 AliAnaParticleHadronCorrelation.h:340
 AliAnaParticleHadronCorrelation.h:341
 AliAnaParticleHadronCorrelation.h:342
 AliAnaParticleHadronCorrelation.h:343
 AliAnaParticleHadronCorrelation.h:344
 AliAnaParticleHadronCorrelation.h:345
 AliAnaParticleHadronCorrelation.h:346
 AliAnaParticleHadronCorrelation.h:347
 AliAnaParticleHadronCorrelation.h:348
 AliAnaParticleHadronCorrelation.h:349
 AliAnaParticleHadronCorrelation.h:350
 AliAnaParticleHadronCorrelation.h:351
 AliAnaParticleHadronCorrelation.h:352
 AliAnaParticleHadronCorrelation.h:353
 AliAnaParticleHadronCorrelation.h:354
 AliAnaParticleHadronCorrelation.h:355
 AliAnaParticleHadronCorrelation.h:356
 AliAnaParticleHadronCorrelation.h:357
 AliAnaParticleHadronCorrelation.h:358
 AliAnaParticleHadronCorrelation.h:359
 AliAnaParticleHadronCorrelation.h:360
 AliAnaParticleHadronCorrelation.h:361
 AliAnaParticleHadronCorrelation.h:362
 AliAnaParticleHadronCorrelation.h:363
 AliAnaParticleHadronCorrelation.h:364
 AliAnaParticleHadronCorrelation.h:365
 AliAnaParticleHadronCorrelation.h:366
 AliAnaParticleHadronCorrelation.h:367
 AliAnaParticleHadronCorrelation.h:368
 AliAnaParticleHadronCorrelation.h:369
 AliAnaParticleHadronCorrelation.h:370
 AliAnaParticleHadronCorrelation.h:371
 AliAnaParticleHadronCorrelation.h:372
 AliAnaParticleHadronCorrelation.h:373
 AliAnaParticleHadronCorrelation.h:374
 AliAnaParticleHadronCorrelation.h:375
 AliAnaParticleHadronCorrelation.h:376
 AliAnaParticleHadronCorrelation.h:377
 AliAnaParticleHadronCorrelation.h:378
 AliAnaParticleHadronCorrelation.h:379
 AliAnaParticleHadronCorrelation.h:380
 AliAnaParticleHadronCorrelation.h:381
 AliAnaParticleHadronCorrelation.h:382
 AliAnaParticleHadronCorrelation.h:383
 AliAnaParticleHadronCorrelation.h:384
 AliAnaParticleHadronCorrelation.h:385
 AliAnaParticleHadronCorrelation.h:386
 AliAnaParticleHadronCorrelation.h:387
 AliAnaParticleHadronCorrelation.h:388
 AliAnaParticleHadronCorrelation.h:389
 AliAnaParticleHadronCorrelation.h:390
 AliAnaParticleHadronCorrelation.h:391
 AliAnaParticleHadronCorrelation.h:392
 AliAnaParticleHadronCorrelation.h:393
 AliAnaParticleHadronCorrelation.h:394
 AliAnaParticleHadronCorrelation.h:395
 AliAnaParticleHadronCorrelation.h:396
 AliAnaParticleHadronCorrelation.h:397
 AliAnaParticleHadronCorrelation.h:398
 AliAnaParticleHadronCorrelation.h:399
 AliAnaParticleHadronCorrelation.h:400
 AliAnaParticleHadronCorrelation.h:401
 AliAnaParticleHadronCorrelation.h:402
 AliAnaParticleHadronCorrelation.h:403
 AliAnaParticleHadronCorrelation.h:404
 AliAnaParticleHadronCorrelation.h:405
 AliAnaParticleHadronCorrelation.h:406
 AliAnaParticleHadronCorrelation.h:407
 AliAnaParticleHadronCorrelation.h:408
 AliAnaParticleHadronCorrelation.h:409
 AliAnaParticleHadronCorrelation.h:410
 AliAnaParticleHadronCorrelation.h:411
 AliAnaParticleHadronCorrelation.h:412
 AliAnaParticleHadronCorrelation.h:413
 AliAnaParticleHadronCorrelation.h:414
 AliAnaParticleHadronCorrelation.h:415
 AliAnaParticleHadronCorrelation.h:416
 AliAnaParticleHadronCorrelation.h:417
 AliAnaParticleHadronCorrelation.h:418
 AliAnaParticleHadronCorrelation.h:419
 AliAnaParticleHadronCorrelation.h:420
 AliAnaParticleHadronCorrelation.h:421
 AliAnaParticleHadronCorrelation.h:422
 AliAnaParticleHadronCorrelation.h:423
 AliAnaParticleHadronCorrelation.h:424
 AliAnaParticleHadronCorrelation.h:425
 AliAnaParticleHadronCorrelation.h:426
 AliAnaParticleHadronCorrelation.h:427
 AliAnaParticleHadronCorrelation.h:428
 AliAnaParticleHadronCorrelation.h:429
 AliAnaParticleHadronCorrelation.h:430
 AliAnaParticleHadronCorrelation.h:431
 AliAnaParticleHadronCorrelation.h:432
 AliAnaParticleHadronCorrelation.h:433
 AliAnaParticleHadronCorrelation.h:434
 AliAnaParticleHadronCorrelation.h:435
 AliAnaParticleHadronCorrelation.h:436
 AliAnaParticleHadronCorrelation.h:437
 AliAnaParticleHadronCorrelation.h:438
 AliAnaParticleHadronCorrelation.h:439
 AliAnaParticleHadronCorrelation.h:440
 AliAnaParticleHadronCorrelation.h:441
 AliAnaParticleHadronCorrelation.h:442
 AliAnaParticleHadronCorrelation.h:443
 AliAnaParticleHadronCorrelation.h:444
 AliAnaParticleHadronCorrelation.h:445
 AliAnaParticleHadronCorrelation.h:446
 AliAnaParticleHadronCorrelation.h:447
 AliAnaParticleHadronCorrelation.h:448
 AliAnaParticleHadronCorrelation.h:449
 AliAnaParticleHadronCorrelation.h:450
 AliAnaParticleHadronCorrelation.h:451
 AliAnaParticleHadronCorrelation.h:452
 AliAnaParticleHadronCorrelation.h:453
 AliAnaParticleHadronCorrelation.h:454
 AliAnaParticleHadronCorrelation.h:455
 AliAnaParticleHadronCorrelation.h:456
 AliAnaParticleHadronCorrelation.h:457
 AliAnaParticleHadronCorrelation.h:458
 AliAnaParticleHadronCorrelation.h:459
 AliAnaParticleHadronCorrelation.h:460
 AliAnaParticleHadronCorrelation.h:461
 AliAnaParticleHadronCorrelation.h:462
 AliAnaParticleHadronCorrelation.h:463
 AliAnaParticleHadronCorrelation.h:464
 AliAnaParticleHadronCorrelation.h:465
 AliAnaParticleHadronCorrelation.h:466
 AliAnaParticleHadronCorrelation.h:467
 AliAnaParticleHadronCorrelation.h:468
 AliAnaParticleHadronCorrelation.h:469
 AliAnaParticleHadronCorrelation.h:470
 AliAnaParticleHadronCorrelation.h:471
 AliAnaParticleHadronCorrelation.h:472
 AliAnaParticleHadronCorrelation.h:473
 AliAnaParticleHadronCorrelation.h:474
 AliAnaParticleHadronCorrelation.h:475
 AliAnaParticleHadronCorrelation.h:476
 AliAnaParticleHadronCorrelation.h:477
 AliAnaParticleHadronCorrelation.h:478
 AliAnaParticleHadronCorrelation.h:479
 AliAnaParticleHadronCorrelation.h:480
 AliAnaParticleHadronCorrelation.h:481
 AliAnaParticleHadronCorrelation.h:482
 AliAnaParticleHadronCorrelation.h:483
 AliAnaParticleHadronCorrelation.h:484
 AliAnaParticleHadronCorrelation.h:485
 AliAnaParticleHadronCorrelation.h:486
 AliAnaParticleHadronCorrelation.h:487
 AliAnaParticleHadronCorrelation.h:488
 AliAnaParticleHadronCorrelation.h:489
 AliAnaParticleHadronCorrelation.h:490
 AliAnaParticleHadronCorrelation.h:491
 AliAnaParticleHadronCorrelation.h:492
 AliAnaParticleHadronCorrelation.h:493
 AliAnaParticleHadronCorrelation.h:494
 AliAnaParticleHadronCorrelation.h:495
 AliAnaParticleHadronCorrelation.h:496
 AliAnaParticleHadronCorrelation.h:497
 AliAnaParticleHadronCorrelation.h:498
 AliAnaParticleHadronCorrelation.h:499
 AliAnaParticleHadronCorrelation.h:500
 AliAnaParticleHadronCorrelation.h:501
 AliAnaParticleHadronCorrelation.h:502
 AliAnaParticleHadronCorrelation.h:503
 AliAnaParticleHadronCorrelation.h:504
 AliAnaParticleHadronCorrelation.h:505
 AliAnaParticleHadronCorrelation.h:506
 AliAnaParticleHadronCorrelation.h:507
 AliAnaParticleHadronCorrelation.h:508
 AliAnaParticleHadronCorrelation.h:509
 AliAnaParticleHadronCorrelation.h:510
 AliAnaParticleHadronCorrelation.h:511