]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
QA: Fixes for PHOS: Enable study of exotic clusters, fix filling of grid of cells...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnaPartCorrBaseClass.h
index 0ce2696b67088a2e59692242071037a945cf72dc..92507f594ee13fcc8bf831dc21713f3abac9cc00 100755 (executable)
@@ -30,10 +30,11 @@ class AliStack ;
 class AliHeader ; 
 class AliGenEventHeader ; 
 #include "AliAODPWG4ParticleCorrelation.h"
-class AliEMCALGeoUtils;
+class AliEMCALGeometry;
 class AliPHOSGeoUtils;
 #include "AliMixedEvent.h" 
 #include "AliCentrality.h"
+#include "AliEventplane.h"
 
 class AliAnaPartCorrBaseClass : public TObject {
        
@@ -47,148 +48,185 @@ private:
   
 public:
 
-  virtual void AddAODParticle(AliAODPWG4Particle part) ;
   
-  virtual void ConnectInputOutputAODBranches();
+  //General methods, to be declared in deriving classes if needed
   
-  virtual TList * GetCreateOutputObjects()      { return (new TList) ;}
-       
-  virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }  
-  virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
+  virtual void MakeAnalysisFillAOD()  {;}
+  
+  virtual void MakeAnalysisFillHistograms() {;}  
   
+  AliVCluster* FindCluster(TObjArray* clusters, const Int_t id, Int_t & iclus, const Int_t first=0) ;
+
   virtual void Init() {;}
   virtual void InitParameters() ;
   
   virtual void Print(const Option_t * ) const ;
+       
+  virtual void Terminate(TList * /*outputList*/) {;}
+    
   
-  virtual void MakeAnalysisFillAOD()  {;}
-  
-  virtual void MakeAnalysisFillHistograms() {;}
-       
-  virtual TObjString * GetAnalysisCuts() {return 0x0;}
+  //Histograms, cuts 
+  virtual TList * GetCreateOutputObjects()              { return (new TList)          ; }
        
-  virtual Int_t GetDebug() const  { return fDebug ; }
-  virtual void SetDebug(Int_t d)   { fDebug = d ; }
+  virtual void    AddToHistogramsName(TString add)      { fAddToHistogramsName = add  ; }  
+  virtual TString GetAddedHistogramsStringToName()const { return fAddToHistogramsName ; }
   
-  virtual Int_t GetEventNumber() const ;
-  
-  virtual AliCaloTrackReader * GetReader() const {return fReader ; }
+  virtual TObjString * GetAnalysisCuts()                { return 0x0                  ; }
+  TString              GetBaseParametersList();
+
+  //Getters, setters
+  virtual Int_t   GetDebug()                      const { return fDebug               ; }
+  virtual void    SetDebug(Int_t d)                     { fDebug = d                  ; }
+
+  virtual Int_t   GetEventNumber() const ;
+
+  virtual AliCaloTrackReader * GetReader()            const { return fReader   ; }
   virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
     
-  //Calorimeter helper class access methods
-  AliEMCALGeoUtils *  GetEMCALGeometry() const { return fCaloUtils->GetEMCALGeometry(); }
-  AliPHOSGeoUtils  *  GetPHOSGeometry()  const { return fCaloUtils->GetPHOSGeometry() ; }
+  //Calorimeter specific access methods
+  AliCalorimeterUtils * GetCaloUtils()            const { return fCaloUtils                     ; }
+  void    SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils                ; }    
+
+  AliEMCALGeometry *  GetEMCALGeometry()          const { return fCaloUtils->GetEMCALGeometry() ; }
+  AliPHOSGeoUtils  *  GetPHOSGeometry()           const { return fCaloUtils->GetPHOSGeometry()  ; }
   
   Int_t GetModuleNumberCellIndexes(const Int_t absId, const TString calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const {
          return fCaloUtils->GetModuleNumberCellIndexes(absId, calo, icol, irow,iRCU);}
   Int_t GetModuleNumber(AliAODPWG4Particle * part) const {
          return fCaloUtils->GetModuleNumber(part, fReader->GetInputEvent());}
-  Int_t GetModuleNumber(AliVCluster * cluster) const {
+  Int_t GetModuleNumber(AliVCluster * cluster)     const {
          return fCaloUtils->GetModuleNumber(cluster);}
        
   //Centrality
-  AliCentrality* GetCentrality() const  { return fReader->GetCentrality() ;}
-  void SetCentralityClass(TString name)    { fCentralityClass   = name       ;}
-  void SetCentralityOpt(Int_t opt)         { fCentralityOpt     = opt        ;}
-  TString GetCentralityClass()     const   { return fCentralityClass         ;}
-  Int_t   GetCentralityPercent()   const   { return fCentralityOpt           ;}
-  Int_t   GetEventCentrality()     const ;
-  virtual void Terminate(TList * /*outputList*/) {;}
+  AliCentrality* GetCentrality()       const { return fReader->GetCentrality()       ; }
+  Int_t          GetEventCentrality()  const { return fReader->GetEventCentrality()  ; }
        
-  //analysis AOD branch
+  //Event plane
+  AliEventplane* GetEventPlane()       const { return fReader->GetEventPlane()       ; }           
+  TString        GetEventPlaneMethod() const { return fReader->GetEventPlaneMethod() ; }
+  
+  //AOD branch
+  virtual void AddAODParticle(AliAODPWG4Particle part) ;
+  virtual void ConnectInputOutputAODBranches();
+  
   virtual TClonesArray * GetCreateOutputAODBranch() ;
-  virtual TString GetInputAODName() const {return fInputAODName ; }
-  virtual void SetInputAODName(TString name)   { fInputAODName = name; }       
-  virtual TString GetOutputAODName()  const {return fOutputAODName ; }
-  virtual void SetOutputAODName(TString name)   { fNewAOD = kTRUE ; fOutputAODName = name; }
-  virtual Bool_t NewOutputAOD() const {return fNewAOD;}
-  virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
-  virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
-  virtual AliCalorimeterUtils * GetCaloUtils() const {return fCaloUtils ; }
-  void SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils ; }      
-       
-  virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
-  virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
+  virtual TString GetInputAODName()          const { return fInputAODName  ; }
+  virtual void SetInputAODName(TString name)       { fInputAODName = name  ; } 
+  virtual TString GetOutputAODName()         const { return fOutputAODName ; }
+  virtual void SetOutputAODName(TString name)      { fNewAOD = kTRUE ; fOutputAODName = name; }
+  virtual Bool_t NewOutputAOD()              const { return fNewAOD        ; }
+  virtual TString GetOutputAODClassName()    const { return fOutputAODClassName ; }
+  virtual void SetOutputAODClassName(TString name) { fOutputAODClassName = name ; }
+       
+  virtual TString GetAODObjArrayName()       const { return fAODObjArrayName ; }
+  virtual void SetAODObjArrayName(TString name)    { fAODObjArrayName = name ; }
   
-  virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
-  virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
+  virtual TClonesArray* GetInputAODBranch()  const { return fInputAODBranch  ; }
+  virtual TClonesArray* GetOutputAODBranch() const { if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ; }
   virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
        
-  virtual TClonesArray* GetAODCaloClusters() const ;
-  virtual TClonesArray* GetAODTracks() const ; 
-  virtual AliVCaloCells* GetPHOSCells()  const {return fReader->GetPHOSCells()  ;}
-  virtual AliVCaloCells* GetEMCALCells() const {return fReader->GetEMCALCells() ;}
+  //Track cluster arrays access methods
+  virtual TClonesArray*  GetAODCaloClusters() const ;
+  virtual TClonesArray*  GetAODTracks()       const ;  
+  virtual AliVCaloCells* GetPHOSCells()       const { return fReader->GetPHOSCells()  ;}
+  virtual AliVCaloCells* GetEMCALCells()      const { return fReader->GetEMCALCells() ;}
+  virtual TObjArray*     GetCTSTracks()       const ;
+  virtual TObjArray*     GetEMCALClusters()   const ;
+  virtual TObjArray*     GetPHOSClusters()    const ;
+  
+  //MC event acces methods
+  virtual AliStack *                 GetMCStack()          const ;
+  virtual AliHeader*                 GetMCHeader()         const ;
+  virtual AliGenEventHeader        * GetMCGenEventHeader() const ;
+  
+  //Analysis helpers classes pointers setters and getters
+  virtual AliCaloPID               * GetCaloPID()                { if(!fCaloPID) fCaloPID = new AliCaloPID();           return  fCaloPID ; }
+  virtual AliFiducialCut           * GetFiducialCut()            { if(!fFidCut)  fFidCut = new AliFiducialCut();        return  fFidCut  ; }
+  virtual AliIsolationCut          * GetIsolationCut()           { if(!fIC)      fIC = new AliIsolationCut();           return  fIC      ; }
+  virtual AliMCAnalysisUtils       * GetMCAnalysisUtils()        { if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils();   return  fMCUtils ; }
+  virtual AliNeutralMesonSelection * GetNeutralMesonSelection()  { if(!fNMS)     fNMS = new AliNeutralMesonSelection(); return  fNMS     ; }
 
-  virtual TObjArray* GetAODCTS() const ;
-  virtual TObjArray* GetAODEMCAL() const ;
-  virtual TObjArray* GetAODPHOS() const ;
+  virtual void SetCaloPID(AliCaloPID * const pid)                             { fCaloPID = pid     ; }
+  virtual void SetFiducialCut(AliFiducialCut * const fc)                      { fFidCut  = fc      ; }
+  virtual void SetIsolationCut(AliIsolationCut * const ic)                    { fIC      = ic      ; }
+  virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils)         { fMCUtils = mcutils ; } 
+  virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS     = nms     ; }
+       
+  virtual Bool_t IsDataMC()                   const { return fDataMC                ; }
+  virtual void   SwitchOnDataMC()                   { fDataMC = kTRUE ; if(!fMCUtils)fMCUtils = new AliMCAnalysisUtils();}
+  virtual void   SwitchOffDataMC()                  { fDataMC = kFALSE              ; }
   
-  virtual TString      GetBaseParametersList();
+  virtual Bool_t IsFiducialCutOn()            const { return fCheckFidCut           ; }
+  virtual void   SwitchOnFiducialCut()              { fCheckFidCut = kTRUE;  if(!fFidCut)fFidCut = new AliFiducialCut();}
+  virtual void   SwitchOffFiducialCut()             { fCheckFidCut = kFALSE         ; }
     
-  virtual AliStack * GetMCStack() const ;
-  virtual AliHeader* GetMCHeader() const ;
-  virtual AliGenEventHeader* GetMCGenEventHeader() const ;
+  virtual Bool_t IsCaloPIDOn()                const { return fCheckCaloPID          ; }
+  virtual void   SwitchOnCaloPID()                  { fCheckCaloPID = kTRUE; if(!fCaloPID)fCaloPID = new AliCaloPID();}
+  virtual void   SwitchOffCaloPID()                 { fCheckCaloPID = kFALSE        ; }
+  
+  //Cluster energy/momentum cut
+  virtual Float_t GetMaxPt()          const { return fMaxPt ; }
+  virtual Float_t GetMinPt()          const { return fMinPt ; }
+  virtual void    SetMaxPt(Float_t pt)      { fMaxPt = pt   ; }
+  virtual void    SetMinPt(Float_t pt)      { fMinPt = pt   ; }
+  virtual void    SetPtCutRange(Double_t ptmin, Double_t ptmax)
+  {  fMaxPt=ptmax;   fMinPt=ptmin; }
+  
+  virtual Float_t GetMaxEnergy()      const { return fMaxPt ; }
+  virtual Float_t GetMinEnergy()      const { return fMinPt ; }
+  virtual void    SetMaxEnergy(Float_t e)   { fMaxPt = e    ; }
+  virtual void    SetMinEnergy(Float_t e)   { fMinPt = e    ; }
+  virtual void    SetEnergyCutRange(Double_t emin, Double_t emax)
+  {  fMaxPt=emax;   fMinPt=emin; }
+  
+  //Cluster Pairs Time cut  
+  virtual void    SetPairTimeCut(Float_t t) { fPairTimeCut  = t   ; } //ns
+  virtual Float_t GetPairTimeCut()    const { return fPairTimeCut ; } //ns
+
+  //Setters for parameters of event buffers
+  virtual void SetMultiBin(Int_t n=1)    { fMultiBin  = n ;} //number of bins in Multiplicity  
+  virtual void SetNZvertBin(Int_t n=1)   { fNZvertBin = n ;} //number of bins for vertex position
+  virtual void SetNRPBin(Int_t n=1)      { fNrpBin    = n ;} //number of bins in reaction plain  
+  virtual void SetNCentrBin(Int_t n=1)   { fNCentrBin = n ;} //number of bins in centrality 
+  virtual void SetNMaxEvMix(Int_t n=20)  { fNmaxMixEv = n ;} //maximal number of events for mixing
+  virtual void SetMultiplicity(Int_t multimin, Int_t multimax) {fMinMulti = multimin ; fMaxMulti = multimax ; }
+  virtual void SwitchOnEventSelection()  { fUseSelectEvent = kTRUE  ; }
+  virtual void SwitchOffEventSelection() { fUseSelectEvent = kFALSE ; } 
+  //Getters for event selection
+  virtual Int_t   GetMultiBin()    const { return fMultiBin  ; } //number of bins in Multiplicity 
+  virtual Int_t   GetNZvertBin()   const { return fNZvertBin ; } //number of bins in vertex   
+  virtual Int_t   GetNRPBin()      const { return fNrpBin    ; } //number of bins in reaction plain 
+  virtual Int_t   GetNCentrBin()   const { return fNCentrBin ; } //number of bins in centrality
+  virtual Int_t   GetNMaxEvMix()   const { return fNmaxMixEv ; } //maximal number of events for mixin
+  virtual Float_t GetZvertexCut()  const { return GetReader()->GetZvertexCut();} //cut on vertex position  
+  virtual Int_t   GetMaxMulti()    const { return fMaxMulti  ; }  
+  virtual Int_t   GetMinMulti()    const { return fMinMulti  ; }  
   
-  //Analysis helpers classes pointers setters and getters
-  virtual AliCaloPID * GetCaloPID() {if(!fCaloPID) fCaloPID = new AliCaloPID(); return  fCaloPID ;}
-  virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
+  // Do correlation analysis with different event buffers
+  virtual Bool_t DoEventSelect()  const { return fUseSelectEvent ; }
   
-  virtual AliFiducialCut * GetFiducialCut() {if(!fFidCut) fFidCut = new AliFiducialCut(); return  fFidCut ;}
-  virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
+  //Mixed event
+  virtual AliMixedEvent * GetMixedEvent()         { return GetReader()->GetMixedEvent()  ; } 
+  virtual Int_t           GetNMixedEvent()  const { return GetReader()->GetNMixedEvent() ; } 
   
-  virtual AliIsolationCut * GetIsolationCut() {if(!fIC) fIC = new AliIsolationCut();  return  fIC ;}
-  virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
+  //Vertex methods
+  virtual void      GetVertex(Double_t vertex[3]) const { GetReader()->GetVertex(vertex) ; } 
+  virtual void      GetVertex(Double_t vertex[3], const Int_t evtIndex) const 
+  { GetReader()->GetVertex(vertex,evtIndex)                  ; } 
+  virtual Double_t* GetVertex(const Int_t evtIndex) const { return GetReader()->GetVertex(evtIndex) ; } 
   
-  virtual AliMCAnalysisUtils * GetMCAnalysisUtils()  {if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils(); return  fMCUtils ;}
-  virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}  
+       virtual Bool_t    IsTrackMatched(AliVCluster * cluster, AliVEvent* event) const 
+  { return fCaloPID->IsTrackMatched(cluster, fCaloUtils, event)                    ; } 
   
-  virtual AliNeutralMesonSelection * GetNeutralMesonSelection()  {if(!fNMS) fNMS = new AliNeutralMesonSelection(); return  fNMS ;}
-  virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
-       
-  virtual Bool_t     IsDataMC()       {return fDataMC ; }
-  virtual void SwitchOnDataMC()       {fDataMC = kTRUE ; if(!fMCUtils)fMCUtils = new AliMCAnalysisUtils();}
-  virtual void SwitchOffDataMC()      {fDataMC = kFALSE ; }
-  
-  virtual Bool_t IsFiducialCutOn()       { return fCheckFidCut ; }
-  virtual void SwitchOnFiducialCut()     { fCheckFidCut = kTRUE;  if(!fFidCut)fFidCut = new AliFiducialCut();}
-  virtual void SwitchOffFiducialCut()    { fCheckFidCut = kFALSE;}
-  
-  virtual Bool_t IsCaloPIDOn()       { return fCheckCaloPID ; }
-  virtual void SwitchOnCaloPID()     { fCheckCaloPID = kTRUE; if(!fCaloPID)fCaloPID = new AliCaloPID();}
-  virtual void SwitchOffCaloPID()    { fCheckCaloPID = kFALSE;}
-  
-  virtual Bool_t IsCaloPIDRecalculationOn()       { return fRecalculateCaloPID ; }
-  virtual void SwitchOnCaloPIDRecalculation()     { fRecalculateCaloPID  = kTRUE;}
-  virtual void SwitchOffCaloPIDRecalculation()    { fRecalculateCaloPID  = kFALSE;}
-  
-  virtual Float_t    GetMaxPt()         const {return fMaxPt ; }
-  virtual Float_t    GetMinPt()         const {return fMinPt ; }
-  virtual void SetMaxPt(Float_t pt)           {fMaxPt = pt ; }
-  virtual void SetMinPt(Float_t pt)           {fMinPt = pt ; }
-  virtual void SetPtCutRange(Double_t ptmin, Double_t ptmax)
-  {  fMaxPt=ptmax;   fMinPt=ptmin;}
-  //Setters for parameters of event buffers
-  virtual void SetMultiBin(Int_t n=1) {fMultiBin=n ;} //number of bins in Multiplicity  
-  virtual void SetNZvertBin(Int_t n=1) {fNZvertBin=n ;} //number of bins for vertex position
-  virtual void SetNRPBin(Int_t n=1)    {fNrpBin=n ;}    //number of bins in reaction plain  
-  virtual void SetZvertexCut(Float_t zcut=40.){fZvtxCut=zcut ;} //cut on vertex position
-  virtual void SetMultiplicity(Int_t multimin, Int_t multimax) {fMinMulti = multimin ; fMaxMulti = multimax ; }
-  virtual void SwitchOnEventSelection()    {fUseSelectEvent = kTRUE ; }
-  virtual void SwitchOffEventSelection()   {fUseSelectEvent = kFALSE ; } 
-  //Getters for event selection
-  virtual Int_t GetMultiBin()  const       {return fMultiBin ;} //number of bins in Multiplicity 
-  virtual Int_t GetNZvertBin() const       {return fNZvertBin ;} //number of bins in vertex   
-  virtual Int_t GetNRPBin()    const       {return fNrpBin ;}    //number of bins in reaction plain 
-  //Getters for event selection
-  virtual Float_t GetZvertexCut() const {return fZvtxCut ;} //cut on vertex position  
-  virtual Int_t GetMaxMulti()     const {return fMaxMulti  ; }  
-  virtual Int_t GetMinMulti()     const {return fMinMulti  ; }  
+  //MULTIPLICITY
+  Int_t GetTrackMultiplicity()      const { return fReader->GetTrackMultiplicity() ; }
+  //VZERO
+  Int_t GetV0Signal(Int_t i )       const { return fReader->GetV0Signal(i)         ; }
+  Int_t GetV0Multiplicity(Int_t i ) const { return fReader->GetV0Multiplicity(i)   ; }
   
-  // Do correlation analysis with different event buffers
-  virtual Bool_t DoEventSelect() const {return fUseSelectEvent ; }
   
-  //Histogrammes setters and getters
+  //Histogrammes setters and getters (move to independend class to hold the parameters soon)
+  
   //Pt, Energy 
   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
     fHistoPtBins = n ;
@@ -196,9 +234,16 @@ public:
     fHistoPtMin = min ;
   }
   
-  virtual Int_t   GetHistoPtBins()  const { return fHistoPtBins; }
-  virtual Float_t GetHistoPtMin()   const { return fHistoPtMin ; }
-  virtual Float_t GetHistoPtMax()   const { return fHistoPtMax ; }
+  virtual Int_t   GetHistoPtBins() const { return fHistoPtBins ; }
+  virtual Float_t GetHistoPtMin()  const { return fHistoPtMin  ; }
+  virtual Float_t GetHistoPtMax()  const { return fHistoPtMax  ; }
+  virtual void SetHistoEnergyRangeAndNBins(Float_t min, Float_t max, Int_t n) {
+    SetHistoPtRangeAndNBins(min, max, n);
+  }
+  
+  virtual Int_t   GetHistoEnergyBins() const { return fHistoPtBins ; }
+  virtual Float_t GetHistoEnergyMin()  const { return fHistoPtMin  ; }
+  virtual Float_t GetHistoEnergyMax()  const { return fHistoPtMax  ; }
   
     //Azimuthal angle
   virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
@@ -230,8 +275,8 @@ public:
   }
        
   virtual Int_t   GetHistoMassBins()  const { return fHistoMassBins ; }
-  virtual Float_t GetHistoMassMin()   const { return fHistoMassMin ; }
-  virtual Float_t GetHistoMassMax()   const { return fHistoMassMax ; }
+  virtual Float_t GetHistoMassMin()   const { return fHistoMassMin  ; }
+  virtual Float_t GetHistoMassMax()   const { return fHistoMassMax  ; }
        
   //Asymetry
   virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
@@ -241,8 +286,8 @@ public:
   }
        
   virtual Int_t   GetHistoAsymmetryBins()  const { return fHistoAsymBins ; }
-  virtual Float_t GetHistoAsymmetryMin()   const { return fHistoAsymMin ; }
-  virtual Float_t GetHistoAsymmetryMax()   const { return fHistoAsymMax ; }    
+  virtual Float_t GetHistoAsymmetryMin()   const { return fHistoAsymMin  ; }
+  virtual Float_t GetHistoAsymmetryMax()   const { return fHistoAsymMax  ; }   
   
   
   //VZero
@@ -253,8 +298,8 @@ public:
   }
        
   virtual Int_t GetHistoV0SignalBins()  const { return fHistoV0SBins ; }
-  virtual Int_t GetHistoV0SignalMin()   const { return fHistoV0SMin ; }
-  virtual Int_t GetHistoV0SignalMax()   const { return fHistoV0SMax ; }
+  virtual Int_t GetHistoV0SignalMin()   const { return fHistoV0SMin  ; }
+  virtual Int_t GetHistoV0SignalMax()   const { return fHistoV0SMax  ; }
        
   virtual void SetHistoV0MultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n) {
     fHistoV0MBins = n ;
@@ -263,8 +308,8 @@ public:
   }
        
   virtual Int_t GetHistoV0MultiplicityBins()  const { return fHistoV0MBins ; }
-  virtual Int_t GetHistoV0MultiplicityMin()   const { return fHistoV0MMin ; }
-  virtual Int_t GetHistoV0MultiplicityMax()   const { return fHistoV0MMax ; }
+  virtual Int_t GetHistoV0MultiplicityMin()   const { return fHistoV0MMin  ; }
+  virtual Int_t GetHistoV0MultiplicityMax()   const { return fHistoV0MMax  ; }
   
   virtual void SetHistoTrackMultiplicityRangeAndNBins(Int_t min, Int_t max, Int_t n) {
     fHistoTrMBins = n ;
@@ -273,28 +318,127 @@ public:
   }
        
   virtual Int_t GetHistoTrackMultiplicityBins()  const { return fHistoTrMBins ; }
-  virtual Int_t GetHistoTrackMultiplicityMin()   const { return fHistoTrMMin ; }
-  virtual Int_t GetHistoTrackMultiplicityMax()   const { return fHistoTrMMax ; }
+  virtual Int_t GetHistoTrackMultiplicityMin()   const { return fHistoTrMMin  ; }
+  virtual Int_t GetHistoTrackMultiplicityMax()   const { return fHistoTrMMax  ; }
   
-  virtual AliMixedEvent * GetMixedEvent()          { return GetReader()->GetMixedEvent() ; } 
-  virtual Int_t           GetNMixedEvent()   const { return GetReader()->GetNMixedEvent() ; } 
   
-  virtual void      GetVertex(Double_t vertex[3])   const { GetReader()->GetVertex(vertex) ; } 
-  virtual void      GetVertex(Double_t vertex[3],const Int_t evtIndex) const { GetReader()->GetVertex(vertex,evtIndex) ; } 
-  virtual Double_t* GetVertex(const Int_t evtIndex) const { return GetReader()->GetVertex(evtIndex) ; } 
-
-       virtual Bool_t IsTrackMatched(const AliVCluster * cluster) const { return fCaloPID->IsTrackMatched(cluster, fCaloUtils); } 
+  Int_t   GetHistoFinePtBins()           const { return fHistoFinePtBins     ; }
+  Float_t GetHistoFinePtMin()            const { return fHistoFinePtMin      ; }
+  Float_t GetHistoFinePtMax()            const { return fHistoFinePtMax      ; }       
   
-  void SwitchOnPlotsMaking()  {fMakePlots = kTRUE  ;}
-  void SwitchOffPlotsMaking() {fMakePlots = kFALSE ;}
-  Bool_t MakePlotsOn() const  {return fMakePlots;}
+  Int_t   GetHistodEdxBins()             const { return fHistodEdxBins       ; }
+  Float_t GetHistodEdxMin()              const { return fHistodEdxMin        ; }
+  Float_t GetHistodEdxMax()              const { return fHistodEdxMax        ; }       
+  
+  Int_t   GetHistoNClusterCellBins()     const { return fHistoNClusCellBins  ; }
+  Int_t   GetHistoNClusterCellMin()      const { return fHistoNClusCellMin   ; }
+  Int_t   GetHistoNClusterCellMax()      const { return fHistoNClusCellMax   ; }       
+  
+  Int_t   GetHistoNClustersBins()        const { return fHistoNClustersBins  ; }
+  Int_t   GetHistoNClustersMin()         const { return fHistoNClustersMin   ; }
+  Int_t   GetHistoNClustersMax()         const { return fHistoNClustersMax   ; }       
+  
+  Int_t   GetHistoNCellsBins()           const { return fHistoNCellsBins     ; }
+  Int_t   GetHistoNCellsMin()            const { return fHistoNCellsMin      ; }
+  Int_t   GetHistoNCellsMax()            const { return fHistoNCellsMax      ; }       
+  
+  Int_t   GetHistoPOverEBins()           const { return fHistoPOverEBins     ; }
+  Float_t GetHistoPOverEMin()            const { return fHistoPOverEMin      ; }
+  Float_t GetHistoPOverEMax()            const { return fHistoPOverEMax      ; }
+       
+  Int_t   GetHistodRBins()               const { return fHistodRBins         ; }
+  Float_t GetHistodRMin()                const { return fHistodRMin          ; }
+  Float_t GetHistodRMax()                const { return fHistodRMax          ; }       
+  
+  Int_t   GetHistoTimeBins()             const { return fHistoTimeBins       ; }
+  Float_t GetHistoTimeMin()              const { return fHistoTimeMin        ; }
+  Float_t GetHistoTimeMax()              const { return fHistoTimeMax        ; }       
+  
+  Int_t   GetHistoRatioBins()            const { return fHistoRatioBins      ; }
+  Float_t GetHistoRatioMin()             const { return fHistoRatioMin       ; }
+  Float_t GetHistoRatioMax()             const { return fHistoRatioMax       ; }       
+  
+  Int_t   GetHistoVertexDistBins()       const { return fHistoVertexDistBins ; }
+  Float_t GetHistoVertexDistMin()        const { return fHistoVertexDistMin  ; }
+  Float_t GetHistoVertexDistMax()        const { return fHistoVertexDistMax  ; }       
+  
+  Int_t   GetHistoRBins()                const { return fHistoRBins          ; }
+  Float_t GetHistoRMin()                 const { return fHistoRMin           ; }
+  Float_t GetHistoRMax()                 const { return fHistoRMax           ; }         
+  
+  Int_t   GetHistoXBins()                const { return fHistoXBins          ; }
+  Float_t GetHistoXMin()                 const { return fHistoXMin           ; }
+  Float_t GetHistoXMax()                 const { return fHistoXMax           ; }
+  
+  Int_t   GetHistoYBins()                const { return fHistoYBins          ; }
+  Float_t GetHistoYMin()                 const { return fHistoYMin           ; }
+  Float_t GetHistoYMax()                 const { return fHistoYMax           ; }       
+  
+  Int_t   GetHistoZBins()                const { return fHistoZBins          ; }
+  Float_t GetHistoZMin()                 const { return fHistoZMin           ; }
+  Float_t GetHistoZMax()                 const { return fHistoZMax           ; }       
+       
+  Int_t   GetHistoShowerShapeBins()      const { return fHistoSSBins         ; }
+  Float_t GetHistoShowerShapeMin()       const { return fHistoSSMin          ; }
+  Float_t GetHistoShowerShapeMax()       const { return fHistoSSMax          ; }       
+  
+  Int_t   GetHistoDiffTimeBins()         const { return fHistoDiffTimeBins   ; }
+       Float_t GetHistoDiffTimeMin()          const { return fHistoDiffTimeMin    ; }
+       Float_t GetHistoDiffTimeMax()          const { return fHistoDiffTimeMax    ; }  
+  
+  
+  virtual void SetHistoPOverERangeAndNBins      (Float_t min, Float_t max, Int_t n) {
+    fHistoPOverEBins     = n ; fHistoPOverEMax     = max ; fHistoPOverEMin     = min ; }
+  
+  virtual void SetHistoFinePtRangeAndNBins      (Float_t min, Float_t max, Int_t n) {
+    fHistoFinePtBins     = n ; fHistoFinePtMax     = max ; fHistoFinePtMin     = min ; }
+  
+  virtual void SetHistodEdxRangeAndNBins        (Float_t min, Float_t max, Int_t n) {
+    fHistodEdxBins       = n ; fHistodEdxMax       = max ; fHistodEdxMin       = min ; }
+  
+  virtual void SetHistodRRangeAndNBins          (Float_t min, Float_t max, Int_t n) {
+    fHistodRBins         = n ; fHistodRMax         = max ; fHistodRMin         = min ; }
+  
+  virtual void SetHistoTimeRangeAndNBins        (Float_t min, Float_t max, Int_t n) {
+    fHistoTimeBins       = n ; fHistoTimeMax       = max ; fHistoTimeMin       = min ; }       
+  
+  virtual void SetHistoNClusterCellRangeAndNBins(Int_t   min, Int_t   max, Int_t n) {
+    fHistoNClusCellBins  = n ; fHistoNClusCellMax  = max ; fHistoNClusCellMin  = min ; }
+  
+  virtual void SetHistoNClustersRangeAndNBins   (Int_t   min, Int_t   max, Int_t n) {
+    fHistoNClustersBins  = n ; fHistoNClustersMax  = max ; fHistoNClustersMin  = min ; }
+  
+  virtual void SetHistoNCellsRangeAndNBins      (Int_t   min, Int_t   max, Int_t n) {
+    fHistoNCellsBins     = n ; fHistoNCellsMax     = max ; fHistoNCellsMin     = min ; }
+  
+  virtual void SetHistoRatioRangeAndNBins       (Float_t min, Float_t max, Int_t n) {
+    fHistoRatioBins      = n ; fHistoRatioMax      = max ; fHistoRatioMin      = min ; }
+  
+  virtual void SetHistoVertexDistRangeAndNBins  (Float_t min, Float_t max, Int_t n) { 
+    fHistoVertexDistBins = n ; fHistoVertexDistMax = max ; fHistoVertexDistMin = min ; }
+  
+  virtual void SetHistoXRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
+    fHistoXBins          = n ; fHistoXMax          = max ; fHistoXMin          = min ; }
+  
+  virtual void SetHistoYRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
+    fHistoYBins          = n ; fHistoYMax          = max ; fHistoYMin          = min ; }
+  
+  virtual void SetHistoZRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
+    fHistoZBins         = n ; fHistoZMax           = max ; fHistoZMin          = min ; }
+  
+  virtual void SetHistoRRangeAndNBins           (Float_t min, Float_t max, Int_t n) {
+    fHistoRBins         = n ; fHistoRMax           = max ; fHistoRMin          = min ; }
+  
+  virtual void SetHistoShowerShapeRangeAndNBins (Float_t min, Float_t max, Int_t n) {
+    fHistoSSBins        = n ; fHistoSSMax          = max ; fHistoSSMin        = min ; }
+  
+  void         SetHistoDiffTimeRangeAndNBins(Float_t min, Float_t max, Int_t n) {
+    fHistoDiffTimeBins  = n ; fHistoDiffTimeMax   = max ; fHistoDiffTimeMin   = min   ; }
+         
+  void   SwitchOnPlotsMaking()  { fMakePlots = kTRUE  ; }
+  void   SwitchOffPlotsMaking() { fMakePlots = kFALSE ; }
+  Bool_t MakePlotsOn()    const { return fMakePlots   ; }
   
-  //MULTIPLICITY
-  Int_t GetTrackMultiplicity() const {return fReader->GetTrackMultiplicity();}
-  //VZERO
-  Int_t GetV0Signal(Int_t i )       const {return fReader->GetV0Signal(i);}
-  Int_t GetV0Multiplicity(Int_t i ) const {return fReader->GetV0Multiplicity(i);}
-
 private:    
   
   Bool_t   fDataMC ;             // Flag to access MC data when using ESD or AOD     
@@ -304,10 +448,12 @@ private:
   Bool_t   fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
   Float_t  fMinPt ;              // Maximum pt of (trigger) particles in the analysis
   Float_t  fMaxPt ;              // Minimum pt of (trigger) particles in the analysis
+  Float_t  fPairTimeCut;         // Maximum difference between time of cluster pairs (ns)
   Int_t    fMultiBin ;          // Number of bins in event container for multiplicity
   Int_t    fNZvertBin ;                 // Number of bins in event container for vertex position
   Int_t    fNrpBin ;              // Number of bins in event container for reaction plain
-  Float_t  fZvtxCut ;             // Cut on vertex position  
+  Int_t    fNCentrBin ;                 // Number of bins in event container for centrality
+  Int_t    fNmaxMixEv ;                 // Maximal number of events stored in buffer for mixing
   Int_t    fMaxMulti ;           // Maximum multiplicity of particles in the analysis
   Int_t    fMinMulti ;           // Maximum multiplicity of particles in the analysis
   Bool_t   fUseSelectEvent ;     // Select events based on multiplicity and vertex cuts
@@ -325,44 +471,89 @@ private:
   TString       fAODObjArrayName ;   //  Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
   TString       fAddToHistogramsName;//  Add this string to histograms name
   
-  TString       fCentralityClass;    // Name of selected centrality class     
-  Int_t         fCentralityOpt;      // Option for the returned value of the centrality, possible options 5, 10, 100
-  
   //Analysis helper classes access pointers
-  AliCaloPID               * fCaloPID; //! PID calculation
-  AliFiducialCut           * fFidCut;  //! Acceptance cuts
-  AliIsolationCut          * fIC;      //! Isolation cut 
-  AliMCAnalysisUtils       * fMCUtils; //! MonteCarlo Analysis utils 
-  AliNeutralMesonSelection * fNMS;     //! Neutral Meson Selection
-  AliCalorimeterUtils      * fCaloUtils ; //  Pointer to CalorimeterUtils
+  AliCaloPID               * fCaloPID; // PID calculation
+  AliFiducialCut           * fFidCut;  // Acceptance cuts
+  AliIsolationCut          * fIC;      // Isolation cut 
+  AliMCAnalysisUtils       * fMCUtils; // MonteCarlo Analysis utils 
+  AliNeutralMesonSelection * fNMS;     // Neutral Meson Selection
+  AliCalorimeterUtils      * fCaloUtils ; // Pointer to CalorimeterUtils
 
   //Histograms binning and range    
-  Int_t   fHistoPtBins   ;  // Number of bins in pt axis
-  Float_t fHistoPtMax    ;  // Maximum value of pt histogram range
-  Float_t fHistoPtMin    ;  // Minimum value of pt histogram range
-  Int_t   fHistoPhiBins  ;  // Number of bins in phi axis
-  Float_t fHistoPhiMax   ;  // Maximum value of phi histogram range
-  Float_t fHistoPhiMin   ;  // Minimum value of phi histogram range
-  Int_t   fHistoEtaBins  ;  // Number of bins in eta axis
-  Float_t fHistoEtaMax   ;  // Maximum value of eta histogram range
-  Float_t fHistoEtaMin   ;  // Minimum value of eta histogram range
-  Int_t   fHistoMassBins ;  // Number of bins in mass axis
-  Float_t fHistoMassMax  ;  // Maximum value of mass histogram range
-  Float_t fHistoMassMin  ;  // Minimum value of mass histogram range
-  Int_t   fHistoAsymBins ;  // Number of bins in asymmetry axis
-  Float_t fHistoAsymMax  ;  // Maximum value of asymmetry histogram range
-  Float_t fHistoAsymMin  ;  // Minimum value of asymmetry histogram range
-  Int_t   fHistoV0SBins  ;  // Number of bins in V0 signal axis
-  Int_t   fHistoV0SMax   ;  // Maximum value of V0 signal histogram range
-  Int_t   fHistoV0SMin   ;  // Minimum value of V0 signal histogram range
-  Int_t   fHistoV0MBins  ;  // Number of bins in V0 multiplicity axis
-  Int_t   fHistoV0MMax   ;  // Maximum value of V0 multiplicity histogram range
-  Int_t   fHistoV0MMin   ;  // Minimum value of V0 multiplicity histogram range
-  Int_t   fHistoTrMBins  ;  // Number of bins in V0 multiplicity axis
-  Int_t   fHistoTrMMax   ;  // Maximum value of track multiplicity histogram range
-  Int_t   fHistoTrMMin   ;  // Minimum value of track multiplicity histogram range
-  
-  ClassDef(AliAnaPartCorrBaseClass,14)
+  Int_t    fHistoPtBins   ;  // Number of bins in pt axis
+  Float_t  fHistoPtMax    ;  // Maximum value of pt histogram range
+  Float_t  fHistoPtMin    ;  // Minimum value of pt histogram range
+  Int_t    fHistoPhiBins  ;  // Number of bins in phi axis
+  Float_t  fHistoPhiMax   ;  // Maximum value of phi histogram range
+  Float_t  fHistoPhiMin   ;  // Minimum value of phi histogram range
+  Int_t    fHistoEtaBins  ;  // Number of bins in eta axis
+  Float_t  fHistoEtaMax   ;  // Maximum value of eta histogram range
+  Float_t  fHistoEtaMin   ;  // Minimum value of eta histogram range
+  Int_t    fHistoMassBins ;  // Number of bins in mass axis
+  Float_t  fHistoMassMax  ;  // Maximum value of mass histogram range
+  Float_t  fHistoMassMin  ;  // Minimum value of mass histogram range
+  Int_t    fHistoAsymBins ;  // Number of bins in asymmetry axis
+  Float_t  fHistoAsymMax  ;  // Maximum value of asymmetry histogram range
+  Float_t  fHistoAsymMin  ;  // Minimum value of asymmetry histogram range
+  Int_t    fHistoV0SBins  ;  // Number of bins in V0 signal axis
+  Int_t    fHistoV0SMax   ;  // Maximum value of V0 signal histogram range
+  Int_t    fHistoV0SMin   ;  // Minimum value of V0 signal histogram range
+  Int_t    fHistoV0MBins  ;  // Number of bins in V0 multiplicity axis
+  Int_t    fHistoV0MMax   ;  // Maximum value of V0 multiplicity histogram range
+  Int_t    fHistoV0MMin   ;  // Minimum value of V0 multiplicity histogram range
+  Int_t    fHistoTrMBins  ;  // Number of bins in V0 multiplicity axis
+  Int_t    fHistoTrMMax   ;  // Maximum value of track multiplicity histogram range
+  Int_t    fHistoTrMMin   ;  // Minimum value of track multiplicity histogram range
+  Int_t    fHistoFinePtBins;                  // fine binning for fhAmpId histogram
+  Float_t  fHistoFinePtMax;                   // maximum pt value for fhAmpId histogram
+  Float_t  fHistoFinePtMin;                   // minimum pt value for fhAmpId histogram
+  Int_t    fHistoPOverEBins;                  // p/E histogram number of bins
+  Float_t  fHistoPOverEMax;                   // p/E maximum value
+  Float_t  fHistoPOverEMin;                   // p/E minimum value
+  Int_t    fHistodEdxBins;                    // dEdx histogram number of bins
+  Float_t  fHistodEdxMax;                     // dEdx maximum value
+  Float_t  fHistodEdxMin;                     // dEdx minimum value
+  Int_t    fHistodRBins;                      // dR histogram number of bins
+  Float_t  fHistodRMax;                       // dR maximum value
+  Float_t  fHistodRMin;                       // dR minimum value
+  Int_t    fHistoTimeBins;                    // cell time histogram number of bins
+  Float_t  fHistoTimeMax;                     // cell time maximum value
+  Float_t  fHistoTimeMin;                     // cell time minimum value
+  Int_t    fHistoNClusCellBins;               // number of cells per cluster histogram number of bins
+  Int_t    fHistoNClusCellMax;                // number of cells per cluster maximum value
+  Int_t    fHistoNClusCellMin;                // number of cells per cluster minimum value
+  Int_t    fHistoNCellsBins;                  // number of cells histogram number of bins
+  Int_t    fHistoNCellsMax;                   // number of cells maximum value
+  Int_t    fHistoNCellsMin;                   // number of cells minimum value
+  Int_t    fHistoNClustersBins;               // number of clusters histogram number of bins
+  Int_t    fHistoNClustersMax;                // number of clusters maximum value
+  Int_t    fHistoNClustersMin;                // number of clusters minimum value  
+  Int_t    fHistoRatioBins;                   // ratio histogram number of bins
+  Float_t  fHistoRatioMax;                    // ratio maximum value
+  Float_t  fHistoRatioMin;                    // ratio minimum value
+  Int_t    fHistoVertexDistBins;              // vertex distance histogram number of bins
+  Float_t  fHistoVertexDistMax;               // vertex distance maximum value
+  Float_t  fHistoVertexDistMin;               // vertex distance minimum value 
+  Int_t    fHistoRBins;                       // r =sqrt(x^2+y^2+z^2) (cm) position histogram number of bins
+  Float_t  fHistoRMax;                        // r =sqrt(x^2+y^2+z^2) (cm)  maximum value
+  Float_t  fHistoRMin;                        // r =sqrt(x^2+y^2+z^2) (cm)  minimum value      
+  Int_t    fHistoXBins;                       // x (cm) position histogram number of bins
+  Float_t  fHistoXMax;                        // x (cm) position maximum value
+  Float_t  fHistoXMin;                        // x (cm) position minimum value
+  Int_t    fHistoYBins;                       // y (cm) position histogram number of bins
+  Float_t  fHistoYMax;                        // y (cm) position maximum value
+  Float_t  fHistoYMin;                        // y (cm) position minimum value
+  Int_t    fHistoZBins;                       // z (cm) position histogram number of bins
+  Float_t  fHistoZMax;                        // z (cm) position maximum value
+  Float_t  fHistoZMin;                        // z (cm) position minimum value
+  Int_t    fHistoSSBins;                      // Shower Shape parameter histogram number of bins
+  Float_t  fHistoSSMax;                       // Shower Shape parameter position maximum value
+  Float_t  fHistoSSMin;                       // Shower Shape parameter position minimum value
+  Int_t    fHistoDiffTimeBins;                // Difference cluster pair time parameter histogram number of bins
+  Float_t  fHistoDiffTimeMax;                 // Difference cluster pair time parameter position maximum value
+  Float_t  fHistoDiffTimeMin;                 // Difference cluster pair time parameter position minimum value  
+  
+  ClassDef(AliAnaPartCorrBaseClass,19)
 } ;