0dc44641aa249c234bd62a8f57ee68e6fd578eec
[u/mrichter/AliRoot.git] / PWG4 / AliAnaBaseClass.h
1 #ifndef AliAnaBaseClass_H
2 #define AliAnaBaseClass_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 /* History of cvs commits:
8  *
9  * $Log$
10  
11  *
12  */
13
14 //_________________________________________________________________________
15 // Base class for analysis algorithms
16 //-- Author: Gustavo Conesa (INFN-LNF)
17
18 //ROOT
19 class TClonesArray ;
20 #include <TList.h>
21 #include <TObject.h>
22
23 //Analysis
24 class AliAODCaloCluster;
25 class AliAODCaloCells;
26 #include "AliAODParticleCorrelation.h"
27 class AliCaloTrackReader ;   
28 #include "AliCaloPID.h"
29 class AliFidutialCut ;
30 class AliIsolationCut ;
31 class AliNeutralMesonSelection ;
32 /* class AliStack ; */
33 /* class AliHeader ; */
34 /* class AliGenEventHeader ; */
35 #include "AliStack.h"
36 #include "AliHeader.h"
37 #include "AliGenEventHeader.h"
38
39 class AliAnaBaseClass : public TObject {
40        
41   public: 
42        
43        AliAnaBaseClass() ; // default ctor
44        AliAnaBaseClass(const AliAnaBaseClass & g) ; // cpy ctor
45        AliAnaBaseClass & operator = (const AliAnaBaseClass & g) ;//cpy assignment
46        virtual ~AliAnaBaseClass() ; //virtual dtor
47               
48        virtual void AddAODCaloCluster(AliAODCaloCluster calo) ;
49        virtual void AddAODParticleCorrelation(AliAODParticleCorrelation pc) ;
50
51        virtual void ConnectAODCaloClusters();
52        virtual void ConnectAODPHOSCells();
53        virtual void ConnectAODEMCALCells();
54
55        virtual TList * GetCreateOutputObjects(){ return (new TList) ;}
56        
57        virtual void Print(const Option_t * ) const {;}
58        
59        virtual void MakeAnalysisFillAOD()  {;}
60        
61        virtual void MakeAnalysisFillHistograms() {;}
62   
63        virtual Int_t GetDebug() const  { return fDebug ; }
64        virtual void SetDebug(Int_t d)   { fDebug = d ; }
65
66        virtual AliCaloTrackReader * GetReader() const {return fReader ; }
67        virtual void SetReader(AliCaloTrackReader * reader) { fReader = reader ; }
68
69        virtual TClonesArray* GetAODBranch() const {return fAODBranch ;}
70        virtual TClonesArray* GetAODCaloClusters() const {return fAODCaloClusters ;}
71        virtual AliAODCaloCells* GetAODCaloCells() const {return fAODCaloCells ;}
72
73        virtual TClonesArray* GetAODCTS() const ;
74        virtual TClonesArray* GetAODEMCAL() const ;
75        virtual TClonesArray* GetAODPHOS() const ;
76        
77        virtual TNamed * GetEMCALCells() const ;
78        virtual TNamed * GetPHOSCells() const ;
79
80        virtual AliStack * GetMCStack() const ;
81        virtual AliHeader* GetMCHeader() const ;
82        virtual AliGenEventHeader* GetMCGenEventHeader() const ;
83
84        virtual void SetAODBranch(TClonesArray * tca) { fAODBranch = tca ; }
85
86        virtual AliCaloPID * GetCaloPID() const {return  fCaloPID ;}
87        virtual void SetCaloPID(AliCaloPID * pid) { fCaloPID = pid ;}
88
89        virtual AliFidutialCut * GetFidutialCut() const {return  fFidCut ;}
90        virtual void SetFidutialCut(AliFidutialCut * fc) { fFidCut = fc ;}
91
92        virtual AliIsolationCut * GetIsolationCut() const {return  fIC ;}
93        virtual void SetIsolationCut(AliIsolationCut * fc) { fIC = fc ;}
94        
95        virtual AliNeutralMesonSelection * GetNeutralMesonSelection() const {return  fNMS ;}
96        virtual void SetNeutralMesonSelection(AliNeutralMesonSelection * nms) { fNMS = nms ;}
97
98        virtual Bool_t     IsDataMC() const {return fDataMC ; }
99        virtual void SwitchOnDataMC()    {fDataMC = kTRUE ; }
100        virtual void SwitchOffDataMC()    {fDataMC = kFALSE ; }
101        
102        virtual Bool_t IsFidutialCutOn() {return fCheckFidCut ; }
103        virtual void SwitchOnFidutialCut() { fCheckFidCut = kTRUE;}
104        virtual void SwitchOffFidutialCut() { fCheckFidCut = kFALSE;}
105        
106        virtual Bool_t IsCaloPIDOn() {return fCheckCaloPID ; }
107        virtual void SwitchOnCaloPID() { fCheckCaloPID = kTRUE;}
108        virtual void SwitchOffCaloPID() { fCheckCaloPID = kFALSE;}
109        
110        virtual Bool_t IsCaloPIDRecalculationOn() {return fRecalculateCaloPID ; }
111        virtual void SwitchOnCaloPIDRecalculation() { fRecalculateCaloPID  = kTRUE;}
112        virtual void SwitchOffCaloPIDRecalculation() { fRecalculateCaloPID  = kFALSE;}
113        
114        virtual Float_t    GetMaxPt()         const {return fMaxPt ; }
115        virtual Float_t    GetMinPt()         const {return fMinPt ; }
116        virtual void SetMaxPt(Float_t pt)              {fMaxPt = pt ; }
117        virtual void SetMinPt(Float_t pt)              {fMinPt = pt ; }
118        void SetPtCutRange(Double_t ptmin, Double_t ptmax)
119        {  fMaxPt=ptmax;   fMinPt=ptmin;}
120        
121        virtual void InitParameters() ;
122     
123  private:    
124
125        Bool_t fDataMC ; //Flag to access MC data when using ESD or AOD     
126        Int_t fDebug ; // Debug level
127        Bool_t fCheckFidCut ; // Do analysis for clusters in defined region         
128        Bool_t fCheckCaloPID ; // Do analysis for calorimeters
129        Bool_t fRecalculateCaloPID ; //Recalculate PID or use PID weights in calorimeters
130        Float_t fMinPt ; //Maximum pt of (trigger) particles in the analysis
131        Float_t fMaxPt ; //Minimum pt of (trigger) particles in the analysis
132  
133        AliCaloTrackReader * fReader; //Acces to ESD/AOD/MC data
134
135        TClonesArray* fAODBranch ;        //! selected particles branch
136        TClonesArray* fAODCaloClusters ;     //! selected PHOS/EMCAL CaloClusters
137        AliAODCaloCells * fAODCaloCells ;     //! selected PHOS/EMCAL CaloCells
138        AliCaloPID * fCaloPID; // PID calculation
139        AliFidutialCut * fFidCut; //Acceptance cuts
140        AliIsolationCut * fIC; // Isolation cut 
141        AliNeutralMesonSelection * fNMS; // Neutral Meson Selection
142
143        ClassDef(AliAnaBaseClass,1)
144  } ;
145
146
147 #endif //AliAnaBaseClass_H
148
149
150