]> git.uio.no Git - u/mrichter/AliRoot.git/blob - 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
1 #ifndef ALIANAPARTCORRBASECLASS_H
2 #define ALIANAPARTCORRBASECLASS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5 /* $Id: $ */
6
7 //_________________________________________________________________________
8 // Base class for analysis algorithms
9 //-- Author: Gustavo Conesa (INFN-LNF)
10
11 #include <cstdlib>
12
13 //ROOT
14 class TClonesArray ;
15 class TObjArray ;
16 #include <TList.h> 
17 #include <TObject.h>
18 class TObjString;
19
20 //Analysis
21 class AliESDCaloCluster;
22 class AliAODCaloCluster;
23 class AliAODCaloCells;
24 #include "AliCaloTrackReader.h"   
25 #include "AliCaloPID.h"
26 #include "AliFiducialCut.h"
27 #include "AliIsolationCut.h"
28 #include "AliMCAnalysisUtils.h"
29 #include "AliNeutralMesonSelection.h"
30 #include "AliCalorimeterUtils.h" 
31 class AliStack ; 
32 class AliHeader ; 
33 class AliGenEventHeader ; 
34 #include "AliAODPWG4ParticleCorrelation.h"
35 class AliEMCALGeoUtils;
36 class AliPHOSGeoUtils;
37
38 class AliAnaPartCorrBaseClass : public TObject {
39         
40  public:   
41   AliAnaPartCorrBaseClass() ; // default ctor
42   virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
43   
44  private:
45   AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
46   AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
47   
48  public:
49   //    virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
50   virtual void AddAODParticle(AliAODPWG4Particle part) ;
51   
52 //      virtual void ConnectAODCaloClusters();
53   virtual void ConnectAODPHOSCells();
54   virtual void ConnectAODEMCALCells();
55   virtual void ConnectInputOutputAODBranches();
56   
57   virtual TList * GetCreateOutputObjects()      { return (new TList) ;}
58   //virtual TList * GetAnalysisOutputContainer()  { return fAnaOutContainer ;} 
59         
60   virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }  
61   virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
62   
63   virtual void Init() {;}
64   virtual void InitParameters() ;
65   
66   virtual void Print(const Option_t * ) const ;
67   
68   virtual void MakeAnalysisFillAOD()  {;}
69   
70   virtual void MakeAnalysisFillHistograms() {;}
71   
72   virtual void MakeMixingAnalysisFillHistograms() {;}
73         
74   virtual TObjString * GetAnalysisCuts() {return 0x0;}
75         
76   virtual Int_t GetDebug() const  { return fDebug ; }
77   virtual void SetDebug(Int_t d)   { fDebug = d ; }
78   
79   virtual Int_t GetEventNumber() const ;
80                 
81   virtual AliCaloTrackReader * GetReader() const {return fReader ; }
82   virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
83   
84   //Calorimeter helper class access methods
85   AliEMCALGeoUtils *  GetEMCALGeometry() const { return fCaloUtils->GetEMCALGeometry(); }
86   AliPHOSGeoUtils  *  GetPHOSGeometry()  const { return fCaloUtils->GetPHOSGeometry() ; }
87
88   Int_t GetModuleNumberCellIndexes(const Int_t absId, const TString calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const {
89           return fCaloUtils->GetModuleNumberCellIndexes(absId, calo, icol, irow,iRCU);}
90   Int_t GetModuleNumber(AliAODPWG4Particle * part) const {
91           return fCaloUtils->GetModuleNumber(part, fReader->GetInputEvent());}
92   Int_t GetModuleNumber(AliESDCaloCluster * cluster) const {
93           return fCaloUtils->GetModuleNumber(cluster);}
94   Int_t GetModuleNumber(AliAODCaloCluster * cluster) const {
95           return fCaloUtils->GetModuleNumber(cluster);}
96         
97   virtual void Terminate(TList * /*outputList*/) {;}
98         
99   //analysis AOD branch
100   virtual TClonesArray * GetCreateOutputAODBranch() ;
101   virtual TString GetInputAODName() const {return fInputAODName ; }
102   virtual void SetInputAODName(TString name)   { fInputAODName = name; }        
103   virtual TString GetOutputAODName()  const {return fOutputAODName ; }
104   virtual void SetOutputAODName(TString name)   { fNewAOD = kTRUE ; fOutputAODName = name; }
105   virtual Bool_t NewOutputAOD() const {return fNewAOD;}
106   virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
107   virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
108   virtual AliCalorimeterUtils * GetCaloUtils() const {return fCaloUtils ; }
109   void SetCaloUtils(AliCalorimeterUtils * caloutils) { fCaloUtils = caloutils ; }       
110         
111   virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
112   virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
113
114   virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
115   virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
116   virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
117         
118 //      virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
119   virtual TClonesArray* GetAODCaloClusters() const ;
120   virtual TClonesArray* GetAODTracks() const ;  
121   virtual AliAODCaloCells* GetAODCaloCells() const {return fAODCaloCells ;}
122   
123   virtual TObjArray* GetAODCTS() const ;
124   virtual TObjArray* GetAODEMCAL() const ;
125   virtual TObjArray* GetAODPHOS() const ;
126   
127   virtual TString       GetBaseParametersList();
128   
129   virtual TNamed * GetEMCALCells() const ;
130   virtual TNamed * GetPHOSCells() const ;
131   
132   virtual AliStack * GetMCStack() const ;
133   virtual AliHeader* GetMCHeader() const ;
134   virtual AliGenEventHeader* GetMCGenEventHeader() const ;
135   
136   //Analysis helpers classes pointers setters and getters
137   virtual AliCaloPID * GetCaloPID() {if(!fCaloPID) fCaloPID = new AliCaloPID(); return  fCaloPID ;}
138   virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
139   
140   virtual AliFiducialCut * GetFiducialCut() {if(fFidCut) fFidCut = new AliFiducialCut(); return  fFidCut ;}
141   virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
142   
143   virtual AliIsolationCut * GetIsolationCut() {if(!fIC) fIC = new AliIsolationCut();  return  fIC ;}
144   virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
145   
146   virtual AliMCAnalysisUtils * GetMCAnalysisUtils()  {if(!fMCUtils) fMCUtils = new AliMCAnalysisUtils(); return  fMCUtils ;}
147   virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}   
148   
149   virtual AliNeutralMesonSelection * GetNeutralMesonSelection()  {if(!fNMS) fNMS = new AliNeutralMesonSelection(); return  fNMS ;}
150   virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
151         
152   virtual Bool_t     IsDataMC()       {return fDataMC ; }
153   virtual void SwitchOnDataMC()       {fDataMC = kTRUE ; if(!fMCUtils)fMCUtils = new AliMCAnalysisUtils();}
154   virtual void SwitchOffDataMC()      {fDataMC = kFALSE ; }
155
156   virtual Bool_t IsFiducialCutOn()       { return fCheckFidCut ; }
157   virtual void SwitchOnFiducialCut()     { fCheckFidCut = kTRUE;  if(!fFidCut)fFidCut = new AliFiducialCut();}
158   virtual void SwitchOffFiducialCut()    { fCheckFidCut = kFALSE;}
159   
160   virtual Bool_t IsCaloPIDOn()       { return fCheckCaloPID ; }
161   virtual void SwitchOnCaloPID()     { fCheckCaloPID = kTRUE; if(!fCaloPID)fCaloPID = new AliCaloPID();}
162   virtual void SwitchOffCaloPID()    { fCheckCaloPID = kFALSE;}
163   
164   virtual Bool_t IsCaloPIDRecalculationOn()       { return fRecalculateCaloPID ; }
165   virtual void SwitchOnCaloPIDRecalculation()     { fRecalculateCaloPID  = kTRUE;}
166   virtual void SwitchOffCaloPIDRecalculation()    { fRecalculateCaloPID  = kFALSE;}
167   
168   virtual Float_t    GetMaxPt()         const {return fMaxPt ; }
169   virtual Float_t    GetMinPt()         const {return fMinPt ; }
170   virtual void SetMaxPt(Float_t pt)           {fMaxPt = pt ; }
171   virtual void SetMinPt(Float_t pt)           {fMinPt = pt ; }
172   virtual void SetPtCutRange(Double_t ptmin, Double_t ptmax)
173   {  fMaxPt=ptmax;   fMinPt=ptmin;}
174   
175   //Histogrammes setters and getters
176   //Pt, Energy 
177   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
178     fHistoPtBins = n ;
179     fHistoPtMax = max ;
180     fHistoPtMin = min ;
181   }
182   
183   virtual Int_t   GetHistoPtBins()  const { return fHistoPtBins; }
184   virtual Float_t GetHistoPtMin()   const { return fHistoPtMin ; }
185   virtual Float_t GetHistoPtMax()   const { return fHistoPtMax ; }
186   
187   //Azimuthal angle
188   virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
189     fHistoPhiBins  = n ;
190     fHistoPhiMax   = max ;
191     fHistoPhiMin   = min ;
192   }
193   
194   virtual Int_t   GetHistoPhiBins()  const { return fHistoPhiBins; }
195   virtual Float_t GetHistoPhiMin()   const { return fHistoPhiMin ; }
196   virtual Float_t GetHistoPhiMax()   const { return fHistoPhiMax ; }
197   
198   //Pseudorapidity-rapidity
199   virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
200     fHistoEtaBins = n ;
201     fHistoEtaMax  = max ;
202     fHistoEtaMin  = min ;
203   }
204   
205   virtual Int_t   GetHistoEtaBins()  const { return fHistoEtaBins; }
206   virtual Float_t GetHistoEtaMin()   const { return fHistoEtaMin ; }
207   virtual Float_t GetHistoEtaMax()   const { return fHistoEtaMax ; }
208   
209   //Mass
210   virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
211         fHistoMassBins = n ;
212         fHistoMassMax  = max ;
213         fHistoMassMin  = min ;
214   }
215         
216   virtual Int_t   GetHistoMassBins()  const { return fHistoMassBins ; }
217   virtual Float_t GetHistoMassMin()   const { return fHistoMassMin ; }
218   virtual Float_t GetHistoMassMax()   const { return fHistoMassMax ; }
219         
220   //Asymetry
221   virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
222         fHistoAsymBins = n ;
223         fHistoAsymMax  = max ;
224         fHistoAsymMin  = min ;
225   }
226         
227   virtual Int_t   GetHistoAsymmetryBins()  const { return fHistoAsymBins ; }
228   virtual Float_t GetHistoAsymmetryMin()   const { return fHistoAsymMin ; }
229   virtual Float_t GetHistoAsymmetryMax()   const { return fHistoAsymMax ; }     
230         
231  private:    
232   
233   Bool_t  fDataMC ;             // Flag to access MC data when using ESD or AOD     
234   Int_t   fDebug ;              // Debug level
235   Bool_t  fCheckFidCut ;        // Do analysis for clusters in defined region         
236   Bool_t  fCheckCaloPID ;       // Do analysis for calorimeters
237   Bool_t  fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
238   Float_t fMinPt ;              // Maximum pt of (trigger) particles in the analysis
239   Float_t fMaxPt ;              // Minimum pt of (trigger) particles in the analysis
240         
241   AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
242   
243   TClonesArray* fInputAODBranch ;    //! Selected input particles branch
244   TString       fInputAODName ;      //  Name of input AOD branch;
245   TClonesArray* fOutputAODBranch ;   //! Selected output particles branch
246   Bool_t        fNewAOD ;            //  Flag, new aod branch added to the analysis or not.
247   TString       fOutputAODName ;     //  Name of output AOD branch;
248   TString       fOutputAODClassName; //  Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)   
249   TString       fAODObjArrayName ;   // Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
250   TString       fAddToHistogramsName;// Add this string to histograms name
251   
252   //TClonesArray* fAODCaloClusters ;  //! selected PHOS/EMCAL CaloClusters
253   AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
254   
255   //Analysis helper classes access pointers
256   AliCaloPID               * fCaloPID; //! PID calculation
257   AliFiducialCut           * fFidCut;  //! Acceptance cuts
258   AliIsolationCut          * fIC;      //! Isolation cut 
259   AliMCAnalysisUtils       * fMCUtils; //! MonteCarlo Analysis utils 
260   AliNeutralMesonSelection * fNMS;     //! Neutral Meson Selection
261   AliCalorimeterUtils      * fCaloUtils ; //  Pointer to CalorimeterUtils
262
263   //TList * fAnaOutContainer;   // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame
264
265   //Histograms binning and range    
266   Int_t   fHistoPtBins   ;  // Number of bins in pt axis
267   Float_t fHistoPtMax    ;  // Maximum value of pt histogram range
268   Float_t fHistoPtMin    ;  // Minimum value of pt histogram range
269   Int_t   fHistoPhiBins  ;  // Number of bins in phi axis
270   Float_t fHistoPhiMax   ;  // Maximum value of phi histogram range
271   Float_t fHistoPhiMin   ;  // Minimum value of phi histogram range
272   Int_t   fHistoEtaBins  ;  // Number of bins in eta axis
273   Float_t fHistoEtaMax   ;  // Maximum value of eta histogram range
274   Float_t fHistoEtaMin   ;  // Minimum value of eta histogram range
275   Int_t   fHistoMassBins ;  // Number of bins in mass axis
276   Float_t fHistoMassMax  ;  // Maximum value of mass histogram range
277   Float_t fHistoMassMin  ;  // Minimum value of mass histogram range
278   Int_t   fHistoAsymBins ;  // Number of bins in asymmetry axis
279   Float_t fHistoAsymMax  ;  // Maximum value of asymmetry histogram range
280   Float_t fHistoAsymMin  ;  // Minimum value of asymmetry histogram range
281         
282   ClassDef(AliAnaPartCorrBaseClass,7)
283     } ;
284
285
286 #endif //ALIANAPARTCORRBASECLASS_H
287
288
289