]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
remove mechanism to avoid dependencies on PHOS and EMCAL Utils
[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
19 //Analysis
20 class AliAODCaloCluster;
21 class AliAODCaloCells;
22 class AliCaloTrackReader ;   
23 class AliCaloPID ;
24 class AliFidutialCut ;
25 class AliIsolationCut ;
26 class AliMCAnalysisUtils ;
27 class AliNeutralMesonSelection ;
28 class AliStack ; 
29 class AliHeader ; 
30 class AliGenEventHeader ; 
31 #include "AliAODPWG4ParticleCorrelation.h"
32
33 class AliAnaPartCorrBaseClass : public TObject {
34         
35 public: 
36         
37   AliAnaPartCorrBaseClass() ; // default ctor
38   AliAnaPartCorrBaseClass(const AliAnaPartCorrBaseClass & g) ; // cpy ctor
39   AliAnaPartCorrBaseClass & operator = (const AliAnaPartCorrBaseClass & g) ;//cpy assignment
40   virtual ~AliAnaPartCorrBaseClass() ; //virtual dtor
41   
42 //      virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
43   virtual void AddAODParticle(AliAODPWG4Particle part) ;
44   
45 //      virtual void ConnectAODCaloClusters();
46   virtual void ConnectAODPHOSCells();
47   virtual void ConnectAODEMCALCells();
48   virtual void ConnectInputOutputAODBranches();
49   
50   virtual TList * GetCreateOutputObjects() { return (new TList) ;}
51   
52   virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }  
53   virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
54   
55   virtual void Init() {;}
56   virtual void InitParameters() ;
57   
58   virtual void Print(const Option_t * ) const ;
59   
60   virtual void MakeAnalysisFillAOD()  {;}
61   
62   virtual void MakeAnalysisFillHistograms() {;}
63   
64   virtual Int_t GetDebug() const  { return fDebug ; }
65   virtual void SetDebug(Int_t d)   { fDebug = d ; }
66   
67   virtual Int_t GetEventNumber() const ;
68                 
69   virtual AliCaloTrackReader * GetReader() const {return fReader ; }
70   virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
71   
72   virtual void Terminate(TList * /*outputList*/) {;}
73         
74   //analysis AOD branch
75   virtual TClonesArray * GetCreateOutputAODBranch() ;
76   virtual TString GetInputAODName() const {return fInputAODName ; }
77   virtual void SetInputAODName(TString name)   { fInputAODName = name; }        
78   virtual TString GetOutputAODName()  const {return fOutputAODName ; }
79   virtual void SetOutputAODName(TString name)   { fNewAOD = kTRUE ; fOutputAODName = name; }
80   virtual Bool_t NewOutputAOD() const {return fNewAOD;}
81   virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
82   virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
83   
84   virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
85   virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
86
87   virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
88   virtual TClonesArray* GetOutputAODBranch() const {return fOutputAODBranch ;}
89   virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
90         
91 //      virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
92   virtual TClonesArray* GetAODCaloClusters() const ;
93   virtual TClonesArray* GetAODTracks() const ;  
94   virtual AliAODCaloCells* GetAODCaloCells() const {return fAODCaloCells ;}
95   
96   virtual TObjArray* GetAODCTS() const ;
97   virtual TObjArray* GetAODEMCAL() const ;
98   virtual TObjArray* GetAODPHOS() const ;
99   
100   virtual TString       GetBaseParametersList();
101   
102   virtual TNamed * GetEMCALCells() const ;
103   virtual TNamed * GetPHOSCells() const ;
104   
105   virtual AliStack * GetMCStack() const ;
106   virtual AliHeader* GetMCHeader() const ;
107   virtual AliGenEventHeader* GetMCGenEventHeader() const ;
108   
109   //Analysis helpers classes pointers setters and getters
110   virtual AliCaloPID * GetCaloPID() const {return  fCaloPID ;}
111   virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
112   
113   virtual AliFidutialCut * GetFidutialCut() const {return  fFidCut ;}
114   virtual void SetFidutialCut(AliFidutialCut * const fc) { fFidCut = fc ;}
115   
116   virtual AliIsolationCut * GetIsolationCut() const {return  fIC ;}
117   virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
118   
119   virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return  fMCUtils ;}
120   virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}   
121   
122   virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return  fNMS ;}
123   virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
124   
125   virtual Bool_t     IsDataMC() const {return fDataMC ; }
126   virtual void SwitchOnDataMC()    {fDataMC = kTRUE ; }
127   virtual void SwitchOffDataMC()    {fDataMC = kFALSE ; }
128   
129   virtual Bool_t IsFidutialCutOn() const {return fCheckFidCut ; }
130   virtual void SwitchOnFidutialCut() { fCheckFidCut = kTRUE;}
131   virtual void SwitchOffFidutialCut() { fCheckFidCut = kFALSE;}
132   
133   virtual Bool_t IsCaloPIDOn() const {return fCheckCaloPID ; }
134   virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
135   virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
136   
137   virtual Bool_t IsCaloPIDRecalculationOn() const {return fRecalculateCaloPID ; }
138   virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID  = kTRUE;}
139   virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID  = kFALSE;}
140   
141   virtual Float_t    GetMaxPt()         const {return fMaxPt ; }
142   virtual Float_t    GetMinPt()         const {return fMinPt ; }
143   virtual void SetMaxPt(Float_t pt)              {fMaxPt = pt ; }
144   virtual void SetMinPt(Float_t pt)              {fMinPt = pt ; }
145   void SetPtCutRange(Double_t ptmin, Double_t ptmax)
146   {  fMaxPt=ptmax;   fMinPt=ptmin;}
147   
148   //Histogrammes setters and getters
149   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
150     fHistoNPtBins = n ;
151     fHistoPtMax = max ;
152     fHistoPtMin = min ;
153   }
154   
155   Int_t   GetHistoNPtBins() const { return fHistoNPtBins ; }
156   Float_t GetHistoPtMin()   const { return fHistoPtMin ; }
157   Float_t GetHistoPtMax()   const { return fHistoPtMax ; }
158   
159   virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
160     fHistoNPhiBins = n ;
161     fHistoPhiMax = max ;
162     fHistoPhiMin = min ;
163   }
164   
165   Int_t   GetHistoNPhiBins() const { return fHistoNPhiBins ; }
166   Float_t GetHistoPhiMin()   const { return fHistoPhiMin ; }
167   Float_t GetHistoPhiMax()   const { return fHistoPhiMax ; }
168   
169   virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
170     fHistoNEtaBins = n ;
171     fHistoEtaMax = max ;
172     fHistoEtaMin = min ;
173   }
174   
175   Int_t   GetHistoNEtaBins() const { return fHistoNEtaBins ; }
176   Float_t GetHistoEtaMin()   const { return fHistoEtaMin ; }
177   Float_t GetHistoEtaMax()   const { return fHistoEtaMax ; }
178     
179  private:    
180   
181   Bool_t  fDataMC ;             // Flag to access MC data when using ESD or AOD     
182   Int_t   fDebug ;              // Debug level
183   Bool_t  fCheckFidCut ;        // Do analysis for clusters in defined region         
184   Bool_t  fCheckCaloPID ;       // Do analysis for calorimeters
185   Bool_t  fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
186   Float_t fMinPt ;              // Maximum pt of (trigger) particles in the analysis
187   Float_t fMaxPt ;              // Minimum pt of (trigger) particles in the analysis
188         
189   AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
190   
191   TClonesArray* fInputAODBranch ;    //! Selected input particles branch
192   TString       fInputAODName ;      //  Name of input AOD branch;
193   TClonesArray* fOutputAODBranch ;   //! Selected output particles branch
194   Bool_t        fNewAOD ;            //  Flag, new aod branch added to the analysis or not.
195   TString       fOutputAODName ;     //  Name of output AOD branch;
196   TString       fOutputAODClassName; //  Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)   
197   TString       fAODObjArrayName ;   // Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
198   TString       fAddToHistogramsName;// Add this string to histograms name
199   
200   //TClonesArray* fAODCaloClusters ;  //! selected PHOS/EMCAL CaloClusters
201   AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
202   
203   //Analysis helper classes access pointers
204   AliCaloPID               * fCaloPID; // PID calculation
205   AliFidutialCut           * fFidCut;  // Acceptance cuts
206   AliIsolationCut          * fIC;      // Isolation cut 
207   AliMCAnalysisUtils       * fMCUtils; // MonteCarlo Analysis utils 
208   AliNeutralMesonSelection * fNMS;     // Neutral Meson Selection
209   
210   //Histograms binning and range    
211   Int_t   fHistoNPtBins ;  // Number of bins in pt axis
212   Float_t fHistoPtMax ;    // Maximum value of pt histogram range
213   Float_t fHistoPtMin ;    // Minimum value of pt histogram range
214   Int_t   fHistoNPhiBins ; // Number of bins in phi axis
215   Float_t fHistoPhiMax ;   // Maximum value of phi histogram range
216   Float_t fHistoPhiMin ;   // Minimum value of phi histogram range
217   Int_t   fHistoNEtaBins ; // Number of bins in eta axis
218   Float_t fHistoEtaMax ;   // Maximum value of eta histogram range
219   Float_t fHistoEtaMin ;   // Minimum value of eta histogram range
220   
221   ClassDef(AliAnaPartCorrBaseClass,5)
222     } ;
223
224
225 #endif //ALIANAPARTCORRBASECLASS_H
226
227
228