Compatibility with ROOT trunk
[u/mrichter/AliRoot.git] / JETAN / AliJetReader.h
1 #ifndef ALIJETREADER_H
2 #define ALIJETREADER_H
3  
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6  
7 // Jet reader base class
8 // manages the reading of input for jet algorithms
9 // Authors: jgcn@mda.cinvestav.mx
10 //          Magali Estienne <magali.estienne@subatech.in2p3.fr>  
11
12 #include <TObject.h>
13 #include <TChain.h>
14 #include <TArrayI.h>
15
16 class TTree;
17 class TChain;
18 class TTask;
19 class TClonesArray;
20 class TRefArray;
21 class AliEMCALGeometry;
22 class AliJetReaderHeader;
23 class AliESDEvent;
24 class AliHeader;
25 class AliJetUnitArray;
26 class AliJetHadronCorrection;
27 class AliJet;
28 class AliJetFillUnitArray;
29 class AliOADBContainer;
30
31
32 class AliJetReader : public TObject 
33 {
34  public: 
35   AliJetReader();
36   virtual ~AliJetReader();
37
38   // Getters
39   virtual TClonesArray*       GetMomentumArray()     const {return fMomentumArray;}
40   virtual TRefArray*          GetReferences()        const {return 0;}   
41   virtual TClonesArray        *GetUnitArray() const {return fUnitArray;}  
42   virtual AliJetReaderHeader* GetReaderHeader()      const {return fReaderHeader;}
43   virtual AliHeader           *GetAliHeader() const  {return fAliHeader;}
44   virtual Int_t               GetSignalFlag(Int_t i) const {return fSignalFlag[i];}
45   virtual Int_t               GetCutFlag(Int_t i)    const {return fCutFlag[i];}
46   virtual Int_t               GetArrayInitialised()  const {return fArrayInitialised;}
47   virtual Int_t               GetNumCandidate()      const {return fNumCandidate;} 
48   virtual Int_t               GetNumCandidateCut()   const {return fNumCandidateCut;}
49   
50   // Setters
51   virtual Bool_t FillMomentumArray() {return kTRUE;}
52   virtual Bool_t ReadEventLoader(Int_t) {return kTRUE;}
53   virtual void   InitUnitArray() {}
54   virtual void   InitParameters() {}
55   virtual void   CreateTasks(TChain* /*tree*/) {}
56   virtual Bool_t ExecTasks(Bool_t /*procid*/, TRefArray* /*refArray*/) {return kFALSE;}
57   // Correction of hadronic energy 
58   virtual void   SetHadronCorrector(AliJetHadronCorrection*) {;} 
59   virtual void   SetApplyMIPCorrection(Bool_t /*val*/){;}
60   virtual void   SetApplyFractionHadronicCorrection(Bool_t /*val*/){;}
61   virtual void   SetFractionHadronicCorrection(Double_t /*val*/){;}
62   virtual void   SetApplyElectronCorrection(Int_t /*flag*/) {;}
63   virtual void   SetReaderHeader(AliJetReaderHeader* header) 
64   {fReaderHeader = header;}
65   virtual void   SetESD(AliESDEvent* esd) { fESD = esd;}
66
67   // Others
68   virtual void   OpenInputFiles() {}
69   virtual void   SetInputEvent(const TObject* /*esd*/, const TObject* /*aod*/, const TObject* /*mc*/) {;}
70   virtual void   ConnectTree(TTree* /*tree*/, TObject* /*data*/) {}
71   virtual Bool_t GetGenJets(AliJet* /*genJets*/) {return kFALSE;}
72   
73   void ClearArray();
74   
75   virtual const TString GetJetanOADBPath()  {return fJetanOADBpath.Data();}
76   void SetJetanOADBPath(TString name) {fJetanOADBpath = name;}
77  
78   virtual void SetDebug(Int_t debug = 0) {fDebug = debug;}
79   
80  protected:
81   AliJetReader(const AliJetReader& rJetReader);
82   AliJetReader& operator = (const AliJetReader& rhsr);
83   Bool_t SetEMCALGeometry();
84   
85
86   TString                         fJetanOADBpath;          //! path to official OADB, to be set by the task
87   static AliEMCALGeometry         *fGeom;                  //! EMCAL Geometry 
88   TChain                          *fChain;                 // chain for reconstructed tracks
89   TChain                          *fTree;                  // tree for reconstructed tracks
90   TClonesArray                    *fMomentumArray;         // array of particle momenta
91   TClonesArray                    *fArrayMC;               //! array of mc particles
92   TTask                           *fFillUnitArray;         //! task list for filling the UnitArray
93   AliESDEvent                     *fESD;                   // pointer to esd
94   AliJetReaderHeader              *fReaderHeader;          // pointer to header
95   AliHeader                       *fAliHeader;             // AliHeader
96   TArrayI                          fSignalFlag;            // to flag if a particle comes from pythia or
97                                                            // from the underlying event
98   TArrayI                          fCutFlag;               // to flag if a particle passed the pt cut or not
99   TClonesArray                    *fUnitArray;             // array of digit position and energy 
100   Bool_t                           fArrayInitialised;      // To check that array of units is initialised  
101   AliJetFillUnitArray             *fFillUAFromTracks;      // For charged particle task
102   AliJetFillUnitArray             *fFillUAFromEMCalDigits; // For neutral particle task
103   Int_t                            fNumCandidate;          // Number of entries different from zero in unitarray
104   Int_t                            fNumCandidateCut;       // Number of entries different from zero in unitarray
105                                                            // which pass pt cut
106   AliJetHadronCorrection          *fHadronCorrector;       //! Pointer to hadronic correction 
107   Int_t                            fHCorrection;           //  Hadron correction flag 
108   Int_t                            fECorrection;           //  Electron correction flag 
109   Bool_t                           fEFlag;                 //  Electron correction flag 
110   Int_t                            fDebug;                //! Debug option
111
112   ClassDef(AliJetReader,1)
113 };
114  
115 #endif