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