PartCorr split in 2 Base and Dep; coding violations corrected; PHOS geometry can...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrBase / AliCaloTrackReader.h
1 #ifndef ALICALOTRACKREADER_H
2 #define ALICALOTRACKREADER_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 reading data: MonteCarlo, ESD or AOD, of PHOS EMCAL and 
9 // Central Barrel Tracking detectors.
10 // Not all MC particles/tracks/clusters are kept, some kinematical restrictions are done.
11 // Mother class of : AliCaloTrackESDReader: Fills ESD data in 3 TClonesArrays (PHOS, EMCAL, CTS)
12 //                 : AliCaloTrackMCReader: Fills Kinematics data in 3 TClonesArrays (PHOS, EMCAL, CTS)
13 //                 : AliCaloTrackAODReader: Fills AOD data in 3 TClonesArrays (PHOS, EMCAL, CTS) 
14 //                          
15 // -- Author: Gustavo Conesa (INFN-LNF)
16
17 // --- ROOT system ---
18 #include "TObject.h" 
19 class TClonesArray ; 
20 class TLorentzVector ;
21 class TString ;
22 #include "TArrayF.h"  
23
24 //--- ANALYSIS system ---
25 class AliStack ; 
26 class AliHeader ; 
27 class AliGenEventHeader ; 
28 #include "AliESDEvent.h" 
29 #include "AliAODEvent.h" 
30 #include "AliMCEvent.h" 
31 class AliLog ;
32 #include "AliFidutialCut.h"
33
34 class AliCaloTrackReader : public TObject {
35
36 public: 
37
38   AliCaloTrackReader() ; // ctor
39   AliCaloTrackReader(const AliCaloTrackReader & g) ; // cpy ctor
40   AliCaloTrackReader & operator = (const AliCaloTrackReader & g) ;//cpy assignment
41   virtual ~AliCaloTrackReader() ;//virtual dtor
42
43   enum inputDataType {kESD, kAOD, kMC};
44   
45   virtual void InitParameters();
46   virtual void Print(const Option_t * opt) const;
47
48   virtual Int_t GetDebug()         const { return fDebug ; }
49   virtual void  SetDebug(Int_t d)        { fDebug = d ; }
50   virtual Int_t GetDataType()      const { return fDataType ; }
51   virtual void  SetDataType(Int_t data ) { fDataType = data ; }
52
53
54   //Minimum pt setters and getters 
55   virtual Float_t  GetEMCALPtMin() const { return fEMCALPtMin  ; }
56   virtual Float_t  GetPHOSPtMin()  const { return fPHOSPtMin  ; }
57   virtual Float_t  GetCTSPtMin()   const { return fCTSPtMin  ; }
58
59   virtual void SetEMCALPtMin(Float_t  pt) { fEMCALPtMin = pt ; }
60   virtual void SetPHOSPtMin(Float_t  pt)  { fPHOSPtMin = pt ; }
61   virtual void SetCTSPtMin(Float_t  pt)   { fCTSPtMin = pt ; }
62   
63   //Input setters and getters
64
65   Bool_t IsCTSSwitchedOn()  const { return fFillCTS ; }
66   void SwitchOnCTS()    {fFillCTS = kTRUE ; }
67   void SwitchOffCTS()   {fFillCTS = kFALSE ; }
68
69   Bool_t IsEMCALSwitchedOn() const { return fFillEMCAL ; }
70   void SwitchOnEMCAL()  {fFillEMCAL = kTRUE ; }
71   void SwitchOffEMCAL() {fFillEMCAL = kFALSE ; }
72
73   Bool_t IsPHOSSwitchedOn()  const { return fFillPHOS ; }
74   void SwitchOnPHOS()   {fFillPHOS = kTRUE ; }
75   void SwitchOffPHOS()  {fFillPHOS = kFALSE ; }
76
77   Bool_t IsEMCALCellsSwitchedOn() const { return fFillEMCALCells ; }
78   void SwitchOnEMCALCells()  {fFillEMCALCells = kTRUE ; }
79   void SwitchOffEMCALCells() {fFillEMCALCells = kFALSE ; }
80
81   Bool_t IsPHOSCellsSwitchedOn()  const { return fFillPHOSCells ; }
82   void SwitchOnPHOSCells()   {fFillPHOSCells = kTRUE ; }
83   void SwitchOffPHOSCells()  {fFillPHOSCells = kFALSE ; }
84
85   virtual void FillInputEvent()  ;
86   virtual void FillInputCTS()   {;}
87   virtual void FillInputEMCAL() {;}
88   virtual void FillInputPHOS()  {;}
89   virtual void FillInputEMCALCells() {;}
90   virtual void FillInputPHOSCells()  {;}
91
92   virtual TClonesArray* GetAODCTS()   const {return fAODCTS ;}
93   virtual TClonesArray* GetAODEMCAL() const {return fAODEMCAL ;}
94   virtual TClonesArray* GetAODPHOS()  const {return fAODPHOS ;}
95   virtual TNamed* GetEMCALCells()     const {return fEMCALCells ;}
96   virtual TNamed* GetPHOSCells()      const {return fPHOSCells ;}
97
98   virtual AliStack*          GetStack()  const ;
99   virtual AliHeader*         GetHeader() const ;
100   virtual AliGenEventHeader* GetGenEventHeader() const ;
101   virtual AliESDEvent* GetESD() const {return fESD;}
102   virtual AliAODEvent* GetAOD() const {return fAOD;}
103   virtual AliMCEvent*  GetMC()  const {return fMC;}
104   virtual AliVEvent*   GetInputEvent()        const {return (new AliESDEvent());}
105   virtual void         GetVertex(Double_t * ) const {;}
106
107   virtual void SetESD( AliESDEvent* esd) {fESD = esd;}
108   virtual void SetAOD(AliAODEvent* aod)  {fAOD = aod;}
109   virtual void SetMC(AliMCEvent* mc)     {fMC  = mc;}
110
111   virtual void ResetLists();
112
113   virtual AliFidutialCut * GetFidutialCut() const {return  fFidutialCut ;}
114   virtual void SetFidutialCut(AliFidutialCut * fc) { fFidutialCut = fc ;}
115
116   virtual void SetInputEvent(TObject* /*esd*/, TObject* /*aod*/, TObject* /*mc*/) {;}
117
118  protected:
119   
120   Int_t            fDataType ;   // Select MC:Kinematics, Data:ESD/AOD, MCData:Both
121   Int_t            fDebug;       // Debugging level
122   AliFidutialCut * fFidutialCut; // Acceptance cuts
123
124   Float_t        fCTSPtMin;      // pT  Threshold on charged particles 
125   Float_t        fEMCALPtMin;    // pT Threshold on emcal clusters
126   Float_t        fPHOSPtMin;     // pT  Threshold on phos clusters
127
128   TClonesArray * fAODCTS ;        //! temporal array with tracks
129   TClonesArray * fAODEMCAL ;      //! temporal array with EMCAL CaloClusters
130   TClonesArray * fAODPHOS ;       //! temporal array with PHOS CaloClusters
131   TNamed *       fEMCALCells ;    //! temporal array with EMCAL CaloCells, ESD or AOD
132   TNamed *       fPHOSCells ;     //! temporal array with PHOS CaloCells, ESD or AOD
133
134   AliESDEvent *  fESD;            //! pointer to esd
135   AliAODEvent *  fAOD;            //! pointer to aod
136   AliMCEvent  *  fMC;             //! Monte Carlo Event Handler  
137
138   Bool_t         fFillCTS;        // use data from CTS
139   Bool_t         fFillEMCAL;      // use data from EMCAL
140   Bool_t         fFillPHOS;       // use data from PHOS
141   Bool_t         fFillEMCALCells; // use data from EMCAL
142   Bool_t         fFillPHOSCells;  // use data from PHOS
143
144   ClassDef(AliCaloTrackReader,1)
145 } ;
146
147
148 #endif //ALICALOTRACKREADER_H
149
150
151