]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrBase/AliAnaPartCorrBaseClass.h
Correct memory leaks.
[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 AliFiducialCut ;
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   //virtual TList * GetAnalysisOutputContainer()  { return fAnaOutContainer ;} 
52         
53   virtual void AddToHistogramsName(TString add) { fAddToHistogramsName = add; }  
54   virtual TString GetAddedHistogramsStringToName() {return fAddToHistogramsName ;}
55   
56   virtual void Init() {;}
57   virtual void InitParameters() ;
58   
59   virtual void Print(const Option_t * ) const ;
60   
61   virtual void MakeAnalysisFillAOD()  {;}
62   
63   virtual void MakeAnalysisFillHistograms() {;}
64   
65   virtual Int_t GetDebug() const  { return fDebug ; }
66   virtual void SetDebug(Int_t d)   { fDebug = d ; }
67   
68   virtual Int_t GetEventNumber() const ;
69                 
70   virtual AliCaloTrackReader * GetReader() const {return fReader ; }
71   virtual void SetReader(AliCaloTrackReader * const reader) { fReader = reader ; }
72   
73   virtual void Terminate(TList * /*outputList*/) {;}
74         
75   //analysis AOD branch
76   virtual TClonesArray * GetCreateOutputAODBranch() ;
77   virtual TString GetInputAODName() const {return fInputAODName ; }
78   virtual void SetInputAODName(TString name)   { fInputAODName = name; }        
79   virtual TString GetOutputAODName()  const {return fOutputAODName ; }
80   virtual void SetOutputAODName(TString name)   { fNewAOD = kTRUE ; fOutputAODName = name; }
81   virtual Bool_t NewOutputAOD() const {return fNewAOD;}
82   virtual TString GetOutputAODClassName() const {return fOutputAODClassName;}
83   virtual void SetOutputAODClassName(TString name) {fOutputAODClassName = name; }
84   
85   virtual TString GetAODObjArrayName() const {return fAODObjArrayName;}
86   virtual void SetAODObjArrayName(TString name) {fAODObjArrayName = name; }
87
88   virtual TClonesArray* GetInputAODBranch() const {return fInputAODBranch ;}
89   virtual TClonesArray* GetOutputAODBranch() const {if(fNewAOD) return fOutputAODBranch; else return fInputAODBranch ;}
90   virtual TClonesArray* GetAODBranch(TString aodBranchName) const ;
91         
92 //      virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
93   virtual TClonesArray* GetAODCaloClusters() const ;
94   virtual TClonesArray* GetAODTracks() const ;  
95   virtual AliAODCaloCells* GetAODCaloCells() const {return fAODCaloCells ;}
96   
97   virtual TObjArray* GetAODCTS() const ;
98   virtual TObjArray* GetAODEMCAL() const ;
99   virtual TObjArray* GetAODPHOS() const ;
100   
101   virtual TString       GetBaseParametersList();
102   
103   virtual TNamed * GetEMCALCells() const ;
104   virtual TNamed * GetPHOSCells() const ;
105   
106   virtual AliStack * GetMCStack() const ;
107   virtual AliHeader* GetMCHeader() const ;
108   virtual AliGenEventHeader* GetMCGenEventHeader() const ;
109   
110   //Analysis helpers classes pointers setters and getters
111   virtual AliCaloPID * GetCaloPID() const {return  fCaloPID ;}
112   virtual void SetCaloPID(AliCaloPID * const pid) { fCaloPID = pid ;}
113   
114   virtual AliFiducialCut * GetFiducialCut() const {return  fFidCut ;}
115   virtual void SetFiducialCut(AliFiducialCut * const fc) { fFidCut = fc ;}
116   
117   virtual AliIsolationCut * GetIsolationCut() const {return  fIC ;}
118   virtual void SetIsolationCut(AliIsolationCut * const ic) { fIC = ic ;}
119   
120   virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return  fMCUtils ;}
121   virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * const mcutils) { fMCUtils = mcutils ;}   
122   
123   virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return  fNMS ;}
124   virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * const nms) { fNMS = nms ;}
125   
126   virtual Bool_t     IsDataMC() const {return fDataMC ; }
127   virtual void SwitchOnDataMC()    {fDataMC = kTRUE ; }
128   virtual void SwitchOffDataMC()    {fDataMC = kFALSE ; }
129   
130   virtual Bool_t IsFiducialCutOn() const {return fCheckFidCut ; }
131   virtual void SwitchOnFiducialCut() { fCheckFidCut = kTRUE;}
132   virtual void SwitchOffFiducialCut() { fCheckFidCut = kFALSE;}
133   
134   virtual Bool_t IsCaloPIDOn() const {return fCheckCaloPID ; }
135   virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
136   virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
137   
138   virtual Bool_t IsCaloPIDRecalculationOn() const {return fRecalculateCaloPID ; }
139   virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID  = kTRUE;}
140   virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID  = kFALSE;}
141   
142   virtual Float_t    GetMaxPt()         const {return fMaxPt ; }
143   virtual Float_t    GetMinPt()         const {return fMinPt ; }
144   virtual void SetMaxPt(Float_t pt)              {fMaxPt = pt ; }
145   virtual void SetMinPt(Float_t pt)              {fMinPt = pt ; }
146   void SetPtCutRange(Double_t ptmin, Double_t ptmax)
147   {  fMaxPt=ptmax;   fMinPt=ptmin;}
148   
149   //Histogrammes setters and getters
150   //Pt, Energy 
151   virtual void SetHistoPtRangeAndNBins(Float_t min, Float_t max, Int_t n) {
152     fHistoPtBins = n ;
153     fHistoPtMax = max ;
154     fHistoPtMin = min ;
155   }
156   
157   Int_t   GetHistoPtBins()  const { return fHistoPtBins; }
158   Float_t GetHistoPtMin()   const { return fHistoPtMin ; }
159   Float_t GetHistoPtMax()   const { return fHistoPtMax ; }
160   
161   //Azimuthal angle
162   virtual void SetHistoPhiRangeAndNBins(Float_t min, Float_t max, Int_t n) {
163     fHistoPhiBins  = n ;
164     fHistoPhiMax   = max ;
165     fHistoPhiMin   = min ;
166   }
167   
168   Int_t   GetHistoPhiBins()  const { return fHistoPhiBins; }
169   Float_t GetHistoPhiMin()   const { return fHistoPhiMin ; }
170   Float_t GetHistoPhiMax()   const { return fHistoPhiMax ; }
171   
172   //Pseudorapidity-rapidity
173   virtual void SetHistoEtaRangeAndNBins(Float_t min, Float_t max, Int_t n) {
174     fHistoEtaBins = n ;
175     fHistoEtaMax  = max ;
176     fHistoEtaMin  = min ;
177   }
178   
179   Int_t   GetHistoEtaBins()  const { return fHistoEtaBins; }
180   Float_t GetHistoEtaMin()   const { return fHistoEtaMin ; }
181   Float_t GetHistoEtaMax()   const { return fHistoEtaMax ; }
182   
183   //Mass
184   virtual void SetHistoMassRangeAndNBins(Float_t min, Float_t max, Int_t n) {
185         fHistoMassBins = n ;
186         fHistoMassMax  = max ;
187         fHistoMassMin  = min ;
188   }
189         
190   Int_t   GetHistoMassBins()  const { return fHistoMassBins ; }
191   Float_t GetHistoMassMin()   const { return fHistoMassMin ; }
192   Float_t GetHistoMassMax()   const { return fHistoMassMax ; }
193         
194   //Asymetry
195   virtual void SetHistoAsymmetryRangeAndNBins(Float_t min, Float_t max, Int_t n) {
196         fHistoAsymBins = n ;
197         fHistoAsymMax  = max ;
198         fHistoAsymMin  = min ;
199   }
200         
201   Int_t   GetHistoAsymmetryBins()  const { return fHistoAsymBins ; }
202   Float_t GetHistoAsymmetryMin()   const { return fHistoAsymMin ; }
203   Float_t GetHistoAsymmetryMax()   const { return fHistoAsymMax ; }     
204         
205  private:    
206   
207   Bool_t  fDataMC ;             // Flag to access MC data when using ESD or AOD     
208   Int_t   fDebug ;              // Debug level
209   Bool_t  fCheckFidCut ;        // Do analysis for clusters in defined region         
210   Bool_t  fCheckCaloPID ;       // Do analysis for calorimeters
211   Bool_t  fRecalculateCaloPID ; // Recalculate PID or use PID weights in calorimeters
212   Float_t fMinPt ;              // Maximum pt of (trigger) particles in the analysis
213   Float_t fMaxPt ;              // Minimum pt of (trigger) particles in the analysis
214         
215   AliCaloTrackReader * fReader; // Acces to ESD/AOD/MC data
216   
217   TClonesArray* fInputAODBranch ;    //! Selected input particles branch
218   TString       fInputAODName ;      //  Name of input AOD branch;
219   TClonesArray* fOutputAODBranch ;   //! Selected output particles branch
220   Bool_t        fNewAOD ;            //  Flag, new aod branch added to the analysis or not.
221   TString       fOutputAODName ;     //  Name of output AOD branch;
222   TString       fOutputAODClassName; //  Type of aod objects to be stored in the TClonesArray (AliAODPWG4Particle, AliAODPWG4ParticleCorrelation ...)   
223   TString       fAODObjArrayName ;   // Name of ref array kept in a TList in AliAODParticleCorrelation with clusters or track references.
224   TString       fAddToHistogramsName;// Add this string to histograms name
225   
226   //TClonesArray* fAODCaloClusters ;  //! selected PHOS/EMCAL CaloClusters
227   AliAODCaloCells * fAODCaloCells ; //! selected PHOS/EMCAL CaloCells
228   
229   //Analysis helper classes access pointers
230   AliCaloPID               * fCaloPID; // PID calculation
231   AliFiducialCut           * fFidCut;  // Acceptance cuts
232   AliIsolationCut          * fIC;      // Isolation cut 
233   AliMCAnalysisUtils       * fMCUtils; // MonteCarlo Analysis utils 
234   AliNeutralMesonSelection * fNMS;     // Neutral Meson Selection
235   
236   //TList * fAnaOutContainer;   // Temporal histogram output container, contents to be added to the main container passed to the main analysis frame
237
238   //Histograms binning and range    
239   Int_t   fHistoPtBins   ;  // Number of bins in pt axis
240   Float_t fHistoPtMax    ;  // Maximum value of pt histogram range
241   Float_t fHistoPtMin    ;  // Minimum value of pt histogram range
242   Int_t   fHistoPhiBins  ;  // Number of bins in phi axis
243   Float_t fHistoPhiMax   ;  // Maximum value of phi histogram range
244   Float_t fHistoPhiMin   ;  // Minimum value of phi histogram range
245   Int_t   fHistoEtaBins  ;  // Number of bins in eta axis
246   Float_t fHistoEtaMax   ;  // Maximum value of eta histogram range
247   Float_t fHistoEtaMin   ;  // Minimum value of eta histogram range
248   Int_t   fHistoMassBins ;  // Number of bins in mass axis
249   Float_t fHistoMassMax  ;  // Maximum value of mass histogram range
250   Float_t fHistoMassMin  ;  // Minimum value of mass histogram range
251   Int_t   fHistoAsymBins ;  // Number of bins in asymmetry axis
252   Float_t fHistoAsymMax  ;  // Maximum value of asymmetry histogram range
253   Float_t fHistoAsymMin  ;  // Minimum value of asymmetry histogram range
254         
255   ClassDef(AliAnaPartCorrBaseClass,6)
256     } ;
257
258
259 #endif //ALIANAPARTCORRBASECLASS_H
260
261
262