]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
If not needed do not create the histograms in the neutral meson selection task
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliAnaPartCorrBaseClass.h
index 1fb841c47f040550487de318b8943c5c7301565d..61eb8e20e7b2929cd8c7cad3ce995e47ef292b09 100755 (executable)
@@ -15,31 +15,38 @@ class TClonesArray ;
 class TObjArray ;
 #include <TList.h> 
 #include <TObject.h>
+class TObjString;
 
 //Analysis
+class AliESDCaloCluster;
 class AliAODCaloCluster;
 class AliAODCaloCells;
-class AliCaloTrackReader ;   
-class AliCaloPID ;
-class AliFidutialCut ;
-class AliIsolationCut ;
-class AliMCAnalysisUtils ;
-class AliNeutralMesonSelection ;
+#include "AliCaloTrackReader.h"   
+#include "AliCaloPID.h"
+#include "AliFiducialCut.h"
+#include "AliIsolationCut.h"
+#include "AliMCAnalysisUtils.h"
+#include "AliNeutralMesonSelection.h"
+#include "AliCalorimeterUtils.h" 
 class AliStack ; 
 class AliHeader ; 
 class AliGenEventHeader ; 
 #include "AliAODPWG4ParticleCorrelation.h"
+class AliEMCALGeoUtils;
+class AliPHOSGeoUtils;
 
 class AliAnaPartCorrBaseClass : public TObject {
        
-public: 
-       
+ public:   
   AliAnaPartCorrBaseClass() ; // default ctor
+  virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
+  
+ private:
   AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
   AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
-  virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
   
-//     virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
+ public:
+  //   virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
   virtual void AddAODParticle(AliAODPWG4Particle part) ;
   
 //     virtual void ConnectAODCaloClusters();
@@ -47,8 +54,9 @@ public:
   virtual void ConnectAODEMCALCells();
   virtual void ConnectInputOutputAODBranches();
   
-  virtual TList * GetCreateOutputObjects() { return (new TList) ;}
-  
+  virtual TList * GetCreateOutputObjects()      { return (new TList) ;}
+  //virtual TList * GetAnalysisOutputContainer()  { return fAnaOutContainer ;} 
+       
   virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }  
   virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
   
@@ -61,14 +69,31 @@ public:
   
   virtual void MakeAnalysisFillHistograms() {;}
   
+  virtual void MakeMixingAnalysisFillHistograms() {;}
+       
+  virtual TObjString * GetAnalysisCuts() {return 0x0;}
+       
   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 * reader) { fReader = reader ; }
+  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() ; }
+
+  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(AliESDCaloCluster * cluster) const {
+         return fCaloUtils->GetModuleNumber(cluster);}
+  Int_t GetModuleNumber(AliAODCaloCluster * cluster) const {
+         return fCaloUtils->GetModuleNumber(cluster);}
+       
   virtual void Terminate(TList * /*outputList*/) {;}
        
   //analysis AOD branch
@@ -80,13 +105,16 @@ public:
   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 TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
-  virtual TClonesArray* GetOutputAODBranch() const {return fOutputAODBranch ;}
-
+  virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
+  virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
+       
 //     virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
   virtual TClonesArray* GetAODCaloClusters() const ;
   virtual TClonesArray* GetAODTracks() const ; 
@@ -106,75 +134,100 @@ public:
   virtual AliGenEventHeader* GetMCGenEventHeader() const ;
   
   //Analysis helpers classes pointers setters and getters
-  virtual AliCaloPID * GetCaloPID() const {return  fCaloPID ;}
-  virtual void SetCaloPID(AliCaloPID * pid) { fCaloPID = pid ;}
-  
-  virtual AliFidutialCut * GetFidutialCut() const {return  fFidCut ;}
-  virtual void SetFidutialCut(AliFidutialCut * fc) { fFidCut = fc ;}
+  virtual AliCaloPID * GetCaloPID() {if(!fCaloPID) fCaloPID = new AliCaloPID(); return  fCaloPID ;}
+  virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
   
-  virtual AliIsolationCut * GetIsolationCut() const {return  fIC ;}
-  virtual void SetIsolationCut(AliIsolationCut * fc) { fIC = fc ;}
+  virtual AliFiducialCut * GetFiducialCut() {if(fFidCut) fFidCut = new AliFiducialCut(); return  fFidCut ;}
+  virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
   
-  virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return  fMCUtils ;}
-  virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * mcutils) { fMCUtils = mcutils ;}        
+  virtual AliIsolationCut * GetIsolationCut() {if(!fIC) fIC = new AliIsolationCut();  return  fIC ;}
+  virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
   
-  virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return  fNMS ;}
-  virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * nms) { fNMS = nms ;}
+  virtual AliMCAnalysisUtils * GetMCAnalysisUtils()  {if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils(); return  fMCUtils ;}
+  virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}  
   
-  virtual Bool_t     IsDataMC() const {return fDataMC ; }
-  virtual void SwitchOnDataMC()    {fDataMC = kTRUE ; }
-  virtual void SwitchOffDataMC()    {fDataMC = kFALSE ; }
-  
-  virtual Bool_t IsFidutialCutOn() const {return fCheckFidCut ; }
-  virtual void SwitchOnFidutialCut() { fCheckFidCut = kTRUE;}
-  virtual void SwitchOffFidutialCut() { fCheckFidCut = kFALSE;}
+  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() const {return fCheckCaloPID ; }
-  virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
-  virtual void SwitchOffCaloPID() { fCheckCaloPID = 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() const {return fRecalculateCaloPID ; }
-  virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID  = kTRUE;}
-  virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID  = 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 ; }
-  void SetPtCutRange(Double_t ptmin, Double_t ptmax)
+  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;}
   
   //Histogrammes setters and getters
+  //Pt, Energy 
   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
-    fHistoNPtBins = n ;
+    fHistoPtBins = n ;
     fHistoPtMax = max ;
     fHistoPtMin = min ;
   }
   
-  Int_t   GetHistoNPtBins() const { return fHistoNPtBins ; }
-  Float_t GetHistoPtMin()   const { return fHistoPtMin ; }
-  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 ; }
   
+  //Azimuthal angle
   virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
-    fHistoNPhiBins = n ;
-    fHistoPhiMax = max ;
-    fHistoPhiMin = min ;
+    fHistoPhiBins  = n ;
+    fHistoPhiMax   = max ;
+    fHistoPhiMin   = min ;
   }
   
-  Int_t   GetHistoNPhiBins() const { return fHistoNPhiBins ; }
-  Float_t GetHistoPhiMin()   const { return fHistoPhiMin ; }
-  Float_t GetHistoPhiMax()   const { return fHistoPhiMax ; }
+  virtual Int_t   GetHistoPhiBins()  const { return fHistoPhiBins; }
+  virtual Float_t GetHistoPhiMin()   const { return fHistoPhiMin ; }
+  virtual Float_t GetHistoPhiMax()   const { return fHistoPhiMax ; }
   
+  //Pseudorapidity-rapidity
   virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
-    fHistoNEtaBins = n ;
-    fHistoEtaMax = max ;
-    fHistoEtaMin = min ;
+    fHistoEtaBins = n ;
+    fHistoEtaMax  = max ;
+    fHistoEtaMin  = min ;
   }
   
-  Int_t   GetHistoNEtaBins() const { return fHistoNEtaBins ; }
-  Float_t GetHistoEtaMin()   const { return fHistoEtaMin ; }
-  Float_t GetHistoEtaMax()   const { return fHistoEtaMax ; }
-    
+  virtual Int_t   GetHistoEtaBins()  const { return fHistoEtaBins; }
+  virtual Float_t GetHistoEtaMin()   const { return fHistoEtaMin ; }
+  virtual Float_t GetHistoEtaMax()   const { return fHistoEtaMax ; }
+  
+  //Mass
+  virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
+       fHistoMassBins = n ;
+       fHistoMassMax  = max ;
+       fHistoMassMin  = min ;
+  }
+       
+  virtual Int_t   GetHistoMassBins()  const { return fHistoMassBins ; }
+  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) {
+       fHistoAsymBins = n ;
+       fHistoAsymMax  = max ;
+       fHistoAsymMin  = min ;
+  }
+       
+  virtual Int_t   GetHistoAsymmetryBins()  const { return fHistoAsymBins ; }
+  virtual Float_t GetHistoAsymmetryMin()   const { return fHistoAsymMin ; }
+  virtual Float_t GetHistoAsymmetryMax()   const { return fHistoAsymMax ; }    
+       
  private:    
   
   Bool_t  fDataMC ;             // Flag to access MC data when using ESD or AOD     
@@ -200,24 +253,33 @@ public:
   AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
   
   //Analysis helper classes access pointers
-  AliCaloPID               * fCaloPID; // PID calculation
-  AliFidutialCut           * fFidCut;  // Acceptance cuts
-  AliIsolationCut          * fIC;      // Isolation cut 
-  AliMCAnalysisUtils       * fMCUtils; // MonteCarlo Analysis utils 
-  AliNeutralMesonSelection * fNMS;     // Neutral Meson Selection
-  
+  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
+
+  //TList * fAnaOutContainer;  // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame
+
   //Histograms binning and range    
-  Int_t   fHistoNPtBins ;  // 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   fHistoNPhiBins ; // 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   fHistoNEtaBins ; // Number of bins in eta axis
-  Float_t fHistoEtaMax ;   // Maximum value of eta histogram range
-  Float_t fHistoEtaMin ;   // Minimum value of eta histogram range
-  
-  ClassDef(AliAnaPartCorrBaseClass,5)
+  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
+       
+  ClassDef(AliAnaPartCorrBaseClass,7)
     } ;