change definition of TRU fitter, remove unneeded class dependencies
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALReconstructor.h
index 7559243..ab7320c 100644 (file)
 //*--
 //*-- Author: Yves Schutz (SUBATECH) 
 //*--         Dmitri Peressounko (SUBATECH & Kurchatov Institute)
-
+// Reconstruction class. Redesigned from the old AliReconstructionner class and 
+// derived from STEER/AliReconstructor. 
+// 
 
 // --- ROOT system ---
+class TClonesArray;
+class TTree;
 
+// --- AliRoot header files ---
 #include "AliReconstructor.h" 
 #include "AliEMCALTracker.h" 
+#include "AliEMCALRecParam.h"
+
 class AliEMCALDigitizer ;
 class AliEMCALClusterizer ;
 class AliEMCALSDigitizer ;
@@ -24,55 +31,97 @@ class AliESDEvent ;
 class AliRawReader ;
 class AliEMCALRawUtils;
 class AliEMCALGeometry;
-
-// --- Standard library ---
-
-// --- AliRoot header files ---
+class AliEMCALCalibData ;
+class AliCaloCalibPedestal ;
+class AliEMCALTriggerElectronics;
+class AliEMCALTriggerData;
 
 class AliEMCALReconstructor : public AliReconstructor {
-
-public:
-
+  
+ public:
+  
   AliEMCALReconstructor() ; //ctor            
-  AliEMCALReconstructor(const AliEMCALReconstructor & rec);
-   
+  
   virtual ~AliEMCALReconstructor() ; //dtor
-
-  Bool_t       Debug() const { return fDebug ; }
-
+  
+  virtual  void  Init() {;}
+  virtual  void  InitClusterizer() const;
+  
   using AliReconstructor::FillESD;
-  virtual void FillESD(TTree* digitsTree, TTree* clustersTree, 
-                      AliESDEvent* esd) const;
-  AliTracker*  CreateTracker () const 
-  {return new AliEMCALTracker;} 
+  virtual void   FillESD(TTree* digitsTree, TTree* clustersTree, AliESDEvent* esd) const;
+  AliTracker*    CreateTracker () const {return new AliEMCALTracker;} 
   using AliReconstructor::Reconstruct;
-  virtual void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
-
-  virtual Bool_t             HasDigitConversion() const {return kTRUE;};
-  virtual void               ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
+  virtual void   Reconstruct(TTree* digitsTree, TTree* clustersTree) const ;
   
+  virtual Bool_t HasDigitConversion() const {return kTRUE;};
+  virtual void   ConvertDigits(AliRawReader* rawReader, TTree* digitsTree) const;
   
-  AliEMCALReconstructor & operator = (const AliEMCALReconstructor & /*rvalue*/)  {
-    // assignement operator requested by coding convention but not needed
-    Fatal("operator =", "not implemented") ;
-    return *this ; 
-  }
+  static void    SetRecParam(AliEMCALRecParam * recParam){ fgkRecParam = recParam;}
   
-  void SetRecParam(AliEMCALRecParam * recParam){ fgkRecParam = recParam;}
-
-  void InitRecParam() const;
-  static const AliEMCALRecParam* GetRecParam(){ return fgkRecParam;}
-
-private:
+  void           ReadDigitsArrayFromTree(TTree *digitsTree) const;
   
-  Bool_t fDebug; //! verbosity controller
-  static AliEMCALRecParam*   fgkRecParam; // reconstruction parameters for EMCAL
-  static AliEMCALRawUtils*   fgRawUtils;  // raw utilities class -
-                                         // only need one per reco
-  AliEMCALGeometry         *fGeom;           // pointer to the EMCAL geometry
-
-  ClassDef(AliEMCALReconstructor,3)  // Reconstruction algorithm class (Base Class)
+  static const AliEMCALRecParam* GetRecParam() { 
+    return dynamic_cast<const AliEMCALRecParam*>(AliReconstructor::GetRecoParam(6)); }
+  
+  static TClonesArray* GetDigitsArr() {return fgDigitsArr;}
+  
+  void           FillMisalMatrixes(AliESDEvent* esd)const ;
+
+  //New class used to sort the matched tracks
+  class  AliEMCALMatch : public TObject
+  {
+  public:
+    AliEMCALMatch();
+    AliEMCALMatch(const AliEMCALMatch& copy);
+    AliEMCALMatch& operator = (const AliEMCALMatch& source) ;
+    virtual ~AliEMCALMatch() { }
+    //----------------------------------------------------------------------------
+    Int_t     Compare(const TObject *obj) const;
+    Bool_t    IsSortable() const {return kTRUE;}
+    Double_t  GetDistance() const {return fDistance;}
+    Double_t  GetdEta() const {return fdEta;}
+    Double_t  GetdPhi() const {return fdPhi;}
+    Int_t     GetIndexT() const {return fIndexT;}
+    void      SetIndexT(Int_t itr) {fIndexT=itr;}
+    void      SetDistance(Double_t dist) {fDistance=dist;}
+    void      SetdEta(Double_t dEta) {fdEta=dEta;}
+    void      SetdPhi(Double_t dPhi) {fdPhi=dPhi;}
+  private:
+    Int_t      fIndexT;      // track index in 'fTracks' array
+    Double_t   fDistance;    // track - cluster distance
+    Double_t   fdEta;        // track - cluster residual in eta
+    Double_t   fdPhi;        // track - cluster residual in phi
+  };
+  Bool_t CalculateResidual(AliESDtrack *track, AliESDCaloCluster *cluster, Float_t &dEta, Float_t &dPhi) const;
+  
+ private:
+  
+  AliEMCALReconstructor(const AliEMCALReconstructor &); //Not implemented
+  AliEMCALReconstructor & operator = (const AliEMCALReconstructor &); //Not implemented
+  
+  AliEMCALGeometry           * fGeom;             // pointer to the EMCAL geometry
+  static AliEMCALClusterizer * fgClusterizer;     // clusterizer
+  static AliEMCALRawUtils    * fgRawUtils;        // raw utilities class 
+  
+  //Temporal arrays with clusters, digits, triggers, to be reused per event
+  static TClonesArray        * fgDigitsArr;       //-> Array with EMCAL digits
+  static TObjArray           * fgClustersArr;     //-> Array with EMCAL clusters
+  static TClonesArray        * fgTriggerDigits;   //-> Array with EMCAL trigger digits
+  
+  //OCDB
+  static const AliEMCALRecParam* fgkRecParam;     // reconstruction parameters for EMCAL
+  AliEMCALCalibData          * fCalibData   ;     //! Calibration database if aval
+  AliCaloCalibPedestal       * fPedestalData ;    //! Tower status database if aval
+  
+  //Trigger specific
+  static AliEMCALTriggerElectronics* fgTriggerProcessor; // Trigger preprocessor  
+  AliEMCALTriggerData        * fTriggerData;      // Trigger parameters data container
 
+  //Track matching
+  TList                      * fMatches;          //! collection of matches between tracks and clusters
+  
+  ClassDef(AliEMCALReconstructor,12)  // Reconstruction algorithm class (Base Class)
 }; 
 
 #endif // ALIEMCALRECONSTRUCTOR_H
+