remove unnecessary reinitialization of digits array per event, some cleaning of unuse...
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALReconstructor.h
1 #ifndef ALIEMCALRECONSTRUCTOR_H
2 #define ALIEMCALRECONSTRUCTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //_________________________________________________________________________
9 //  Wrapping class for reconstruction
10 //*--
11 //*-- Author: Yves Schutz (SUBATECH) 
12 //*--         Dmitri Peressounko (SUBATECH & Kurchatov Institute)
13 // Reconstruction class. Redesigned from the old AliReconstructionner class and 
14 // derived from STEER/AliReconstructor. 
15 // 
16
17 // --- ROOT system ---
18 class TClonesArray;
19 class TTree;
20
21 // --- AliRoot header files ---
22 #include "AliReconstructor.h" 
23 #include "AliEMCALTracker.h" 
24 #include "AliEMCALRecParam.h"
25
26 class AliEMCALDigitizer ;
27 class AliEMCALClusterizer ;
28 class AliEMCALSDigitizer ;
29 class AliEMCALRecParam;
30 class AliESDEvent ;
31 class AliRawReader ;
32 class AliEMCALRawUtils;
33 class AliEMCALGeometry;
34 class AliEMCALCalibData ;
35 class AliCaloCalibPedestal ;
36 class AliEMCALTriggerElectronics;
37 class AliEMCALTriggerData;
38
39 class AliEMCALReconstructor : public AliReconstructor {
40   
41  public:
42   
43   AliEMCALReconstructor() ; //ctor            
44   
45   virtual ~AliEMCALReconstructor() ; //dtor
46   
47   virtual  void  Init() {;}
48   virtual  void  InitClusterizer() const;
49   
50   using AliReconstructor::FillESD;
51   virtual void   FillESD(TTree* digitsTree, TTree* clustersTree, AliESDEvent* esd) const;
52   AliTracker*    CreateTracker () const {return new AliEMCALTracker;} 
53   using AliReconstructor::Reconstruct;
54   virtual void   Reconstruct(TTree* digitsTree, TTree* clustersTree) const ;
55   
56   virtual Bool_t HasDigitConversion() const {return kTRUE;};
57   virtual void   ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
58   
59   static void    SetRecParam(AliEMCALRecParam * recParam){ fgkRecParam = recParam;}
60   
61   void           ReadDigitsArrayFromTree(TTree *digitsTree) const;
62   
63   static const AliEMCALRecParam* GetRecParam() { 
64     return dynamic_cast<const AliEMCALRecParam*>(AliReconstructor::GetRecoParam(6)); }
65   
66   static TClonesArray* GetDigitsArr() {return fgDigitsArr;}
67   
68   void           FillMisalMatrixes(AliESDEvent* esd)const ;
69   
70  private:
71   
72   AliEMCALReconstructor(const AliEMCALReconstructor &); //Not implemented
73   AliEMCALReconstructor & operator = (const AliEMCALReconstructor &); //Not implemented
74   
75   AliEMCALGeometry           * fGeom;             // pointer to the EMCAL geometry
76   static AliEMCALClusterizer * fgClusterizer;     // clusterizer
77   static AliEMCALRawUtils    * fgRawUtils;        // raw utilities class 
78   
79   //Temporal arrays with clusters, digits, triggers, to be reused per event
80   static TClonesArray        * fgDigitsArr;       //-> Array with EMCAL digits
81   static TObjArray           * fgClustersArr;     //-> Array with EMCAL clusters
82   static TClonesArray        * fgTriggerDigits;   //-> Array with EMCAL trigger digits
83   
84   //OCDB
85   static const AliEMCALRecParam* fgkRecParam;     // reconstruction parameters for EMCAL
86   AliEMCALCalibData          * fCalibData   ;     //! Calibration database if aval
87   AliCaloCalibPedestal       * fPedestalData ;    //! Tower status database if aval
88   
89   //Trigger specific
90   static AliEMCALTriggerElectronics* fgTriggerProcessor; // Trigger preprocessor  
91   AliEMCALTriggerData        * fTriggerData;      // Trigger parameters data container
92   
93   ClassDef(AliEMCALReconstructor,11)  // Reconstruction algorithm class (Base Class)
94     
95     }; 
96
97 #endif // ALIEMCALRECONSTRUCTOR_H
98