X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;ds=inline;f=EMCAL%2FAliEMCALReconstructor.h;h=ab7320c324dd109d56b0da3ebfd7205b742ee77a;hb=7d4725688861c538a2d62ce3fe45d2f90f6ae4b1;hp=76830df6c31c6bb06e33b76b9062118541fc31a4;hpb=0832a2bf627e84a7785d2d3149ed0b2e0ef761d2;p=u%2Fmrichter%2FAliRoot.git diff --git a/EMCAL/AliEMCALReconstructor.h b/EMCAL/AliEMCALReconstructor.h index 76830df6c31..ab7320c324d 100644 --- a/EMCAL/AliEMCALReconstructor.h +++ b/EMCAL/AliEMCALReconstructor.h @@ -10,16 +10,19 @@ //*-- //*-- Author: Yves Schutz (SUBATECH) //*-- Dmitri Peressounko (SUBATECH & Kurchatov Institute) +// Reconstruction class. Redesigned from the old AliReconstructionner class and +// derived from STEER/AliReconstructor. +// // --- ROOT system --- -#include "AliEMCALRecParam.h" -#include "AliReconstructor.h" -#include "AliEMCALTracker.h" - -class TList; class TClonesArray; class TTree; +// --- AliRoot header files --- +#include "AliReconstructor.h" +#include "AliEMCALTracker.h" +#include "AliEMCALRecParam.h" + class AliEMCALDigitizer ; class AliEMCALClusterizer ; class AliEMCALSDigitizer ; @@ -28,68 +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 - - virtual void Init(); - 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 ReadDigitsArrayFromTree(TTree *digitsTree) const; - static void SetRecParam(AliEMCALRecParam * recParam){ fgkRecParam = recParam;} - - void ReadDigitsArrayFromTree(TTree *digitsTree) const; - - TList *GetList() {return fList;} - static const AliEMCALRecParam* GetRecParam() { return dynamic_cast(AliReconstructor::GetRecoParam(6)); } - + static TClonesArray* GetDigitsArr() {return fgDigitsArr;} - -private: - Bool_t fDebug; //! verbosity controller - - TList *fList; //! List of hists (only for trigger now) - AliEMCALGeometry *fGeom; // pointer to the EMCAL geometry - - static AliEMCALClusterizer* fgClusterizer; // clusterizer - static const AliEMCALRecParam* fgkRecParam; // reconstruction - // parameters for EMCAL - static AliEMCALRawUtils* fgRawUtils; // raw utilities class - - // only need one per reco - static TClonesArray* fgDigitsArr; // Array with EMCAL digits - - ClassDef(AliEMCALReconstructor,6) // Reconstruction algorithm class (Base Class) + 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 +