Protection to skip PYTHIA events with large jet energy compared to pTHard
[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 TRefArrays (PHOS, EMCAL, CTS)
12 //                 : AliCaloTrackMCReader: Fills Kinematics data in 3 TRefArrays (PHOS, EMCAL, CTS)
13 //                 : AliCaloTrackAODReader: Fills AOD data in 3 TRefArrays (PHOS, EMCAL, CTS) 
14 //                          
15 // -- Author: Gustavo Conesa (INFN-LNF)
16
17 // --- ROOT system ---
18 #include "TObject.h" 
19 class TRefArray ; 
20 class TLorentzVector ;
21 #include "TString.h"
22 class TRefArray;
23 class TArrayF;  
24
25 //--- ANALYSIS system ---
26 class AliStack ; 
27 class AliHeader ; 
28 class AliGenEventHeader ; 
29 class AliVEvent;
30 class AliAODEvent;  
31 class AliMCEvent;
32 class AliFidutialCut;
33 class AliMCAnalysisUtils;
34
35 class AliCaloTrackReader : public TObject {
36
37  public: 
38   
39   AliCaloTrackReader() ; // ctor
40   AliCaloTrackReader(const AliCaloTrackReader & g) ; // cpy ctor
41   AliCaloTrackReader & operator = (const AliCaloTrackReader & g) ;//cpy assignment
42   virtual ~AliCaloTrackReader() ;//virtual dtor
43
44   enum inputDataType {kESD, kAOD, kMC};
45   
46   virtual void InitParameters();
47   virtual void Print(const Option_t * opt) const;
48
49   virtual Int_t GetDebug()         const { return fDebug ; }
50   virtual void  SetDebug(Int_t d)        { fDebug = d ; }
51   virtual Int_t GetDataType()      const { return fDataType ; }
52   virtual void  SetDataType(Int_t data ) { fDataType = data ; }
53
54   virtual Int_t   GetEventNumber()     const {return fEventNumber ; }
55   virtual TString GetCurrentFileName() const {return fCurrentFileName ; }
56         
57   //Minimum pt setters and getters 
58   virtual Float_t  GetEMCALPtMin() const { return fEMCALPtMin  ; }
59   virtual Float_t  GetPHOSPtMin()  const { return fPHOSPtMin  ; }
60   virtual Float_t  GetCTSPtMin()   const { return fCTSPtMin  ; }
61
62   virtual void SetEMCALPtMin(Float_t  pt) { fEMCALPtMin = pt ; }
63   virtual void SetPHOSPtMin(Float_t  pt)  { fPHOSPtMin = pt ; }
64   virtual void SetCTSPtMin(Float_t  pt)   { fCTSPtMin = pt ; }
65   
66   //Input setters and getters
67
68   Bool_t IsCTSSwitchedOn()  const { return fFillCTS ; }
69   void SwitchOnCTS()    {fFillCTS = kTRUE ; }
70   void SwitchOffCTS()   {fFillCTS = kFALSE ; }
71
72   Bool_t IsEMCALSwitchedOn() const { return fFillEMCAL ; }
73   void SwitchOnEMCAL()  {fFillEMCAL = kTRUE ; }
74   void SwitchOffEMCAL() {fFillEMCAL = kFALSE ; }
75
76   Bool_t IsPHOSSwitchedOn()  const { return fFillPHOS ; }
77   void SwitchOnPHOS()   {fFillPHOS = kTRUE ; }
78   void SwitchOffPHOS()  {fFillPHOS = kFALSE ; }
79
80   Bool_t IsEMCALCellsSwitchedOn() const { return fFillEMCALCells ; }
81   void SwitchOnEMCALCells()  {fFillEMCALCells = kTRUE ; }
82   void SwitchOffEMCALCells() {fFillEMCALCells = kFALSE ; }
83
84   Bool_t IsPHOSCellsSwitchedOn()  const { return fFillPHOSCells ; }
85   void SwitchOnPHOSCells()   {fFillPHOSCells = kTRUE ; }
86   void SwitchOffPHOSCells()  {fFillPHOSCells = kFALSE ; }
87
88   virtual Bool_t FillInputEvent(const Int_t iEntry, const char *currentFileName)  ;
89   virtual void FillInputCTS()   {;}
90   virtual void FillInputEMCAL() {;}
91   virtual void FillInputPHOS()  {;}
92   virtual void FillInputEMCALCells() {;}
93   virtual void FillInputPHOSCells()  {;}
94
95   virtual TRefArray* GetAODCTS()   const {return fAODCTS ;}
96   virtual TRefArray* GetAODEMCAL() const {return fAODEMCAL ;}
97   virtual TRefArray* GetAODPHOS()  const {return fAODPHOS ;}
98   virtual TNamed* GetEMCALCells()  const {return fEMCALCells ;}
99   virtual TNamed* GetPHOSCells()   const {return fPHOSCells ;}
100
101   virtual AliStack*    GetStack()      const ;
102   virtual AliHeader*   GetHeader()     const ;
103   virtual AliGenEventHeader* GetGenEventHeader() const ;
104   virtual AliVEvent*   GetInputEvent()  const {return fInputEvent;}
105   virtual AliAODEvent* GetOutputEvent() const {return fOutputEvent;}
106   virtual AliMCEvent*  GetMC()          const {return fMC;}
107   virtual void         GetVertex(Double_t * ) const {;}
108
109   virtual void SetInputEvent(AliVEvent* input)  {fInputEvent  = input;}
110   virtual void SetOutputEvent(AliAODEvent* aod) {fOutputEvent = aod;}
111   virtual void SetMC(AliMCEvent* mc)            {fMC  = mc;}
112
113   virtual void ResetLists();
114
115   virtual AliFidutialCut * GetFidutialCut() const {return  fFidutialCut ;}
116   virtual void SetFidutialCut(AliFidutialCut * fc) { fFidutialCut = fc ;}
117
118   virtual AliMCAnalysisUtils * GetMCAnalysisUtils() const {return  fMCUtils ;}
119   virtual void SetMCAnalysisUtils(AliMCAnalysisUtils * mcutils) { fMCUtils = mcutils ;} 
120         
121   virtual Bool_t IsPtHardAndJetPtComparisonSet() const {return  fComparePtHardAndJetPt ;}
122   virtual void SetPtHardAndJetPtComparison(Bool_t compare) { fComparePtHardAndJetPt = compare ;}        
123         
124   virtual void SetInputOutputMCEvent(AliVEvent* /*esd*/, AliAODEvent* /*aod*/, AliMCEvent* /*mc*/) {;}
125
126  protected:
127   Int_t            fEventNumber; // Event number
128   TString          fCurrentFileName; // Current file name under analysis
129   Int_t            fDataType ;   // Select MC:Kinematics, Data:ESD/AOD, MCData:Both
130   Int_t            fDebug;       // Debugging level
131   AliFidutialCut * fFidutialCut; // Acceptance cuts
132   AliMCAnalysisUtils * fMCUtils; // MonteCarlo Analysis utils 
133   Bool_t           fComparePtHardAndJetPt; //In MonteCarlo, jet events, reject fake events with wrong jet energy.
134         
135   Float_t        fCTSPtMin;      // pT Threshold on charged particles 
136   Float_t        fEMCALPtMin;    // pT Threshold on emcal clusters
137   Float_t        fPHOSPtMin;     // pT Threshold on phos clusters
138
139   TRefArray *    fAODCTS ;        //! temporal referenced array with tracks
140   TRefArray *    fAODEMCAL ;      //! temporal referenced array with EMCAL CaloClusters
141   TRefArray *    fAODPHOS ;       //! temporal referenced array with PHOS CaloClusters
142   TNamed *       fEMCALCells ;    //! temporal array with EMCAL CaloCells, ESD or AOD
143   TNamed *       fPHOSCells ;     //! temporal array with PHOS CaloCells, ESD or AOD
144
145   AliVEvent   *  fInputEvent;     //! pointer to esd or aod input
146   AliAODEvent *  fOutputEvent;    //! pointer to aod output
147   AliMCEvent  *  fMC;             //! Monte Carlo Event Handler  
148
149   Bool_t         fFillCTS;        // use data from CTS
150   Bool_t         fFillEMCAL;      // use data from EMCAL
151   Bool_t         fFillPHOS;       // use data from PHOS
152   Bool_t         fFillEMCALCells; // use data from EMCAL
153   Bool_t         fFillPHOSCells;  // use data from PHOS
154
155   ClassDef(AliCaloTrackReader,5)
156 } ;
157
158
159 #endif //ALICALOTRACKREADER_H
160
161
162