#ifndef CBMTRDMODULEREC_H #define CBMTRDMODULEREC_H #include "CbmTrdModuleAbstract.h" #include "TGeoPhysicalNode.h" #include #include class CbmTrdDigi; class CbmTrdCluster; class CbmTrdHit; class TClonesArray; /** * \brief Abstract class for module wise cluster finding and hit reconstruction **/ class CbmTrdModuleRec : public CbmTrdModuleAbstract { public: /** * \brief Default constructor. **/ CbmTrdModuleRec(); /** * \brief Constructor with placement **/ CbmTrdModuleRec(Int_t mod, TGeoPhysicalNode* node, Int_t ly=-1, Int_t rot=0, Double_t x=0, Double_t y=0, Double_t z=0, Double_t dx=0, Double_t dy=0, Double_t dz=0); virtual ~CbmTrdModuleRec(); /** * \brief Add digi to local module **/ virtual Bool_t AddDigi(CbmTrdDigi *d, Int_t id) { return kTRUE; } /** * \brief Clear local storage **/ virtual void Clear(Option_t *opt=""); /** * \brief Reconstruct physics observables on hits **/ virtual Bool_t Finalize() { return kTRUE ;} /** * \brief Steering routine for finding digits clusters **/ virtual Int_t FindClusters() = 0; virtual Int_t GetOverThreshold() const { return 0;} virtual TClonesArray* GetClusters() { return fClusters;} virtual const TClonesArray* GetClusters() const { return fClusters;} virtual TClonesArray* GetHits() { return fHits;} virtual const TClonesArray* GetHits() const { return fHits;} /** * \brief Steering routine for building hits **/ virtual Bool_t MakeHits() = 0; /** * \brief Steering routine for converting cluster to hit **/ virtual CbmTrdHit* MakeHit(Int_t cId, const CbmTrdCluster *c, std::vector *digis) = 0; protected: UInt_t fCalled; ///< counter for the number of calls TClonesArray *fClusters; ///< module wise storage of reconstructed cluster TClonesArray *fHits; ///< module wise storage of reconstructed hits TGeoPhysicalNode *fNode; ///< Contain all information about the gas layer private: CbmTrdModuleRec(const CbmTrdModuleRec &ref); const CbmTrdModuleRec& operator=(const CbmTrdModuleRec &ref); ClassDef(CbmTrdModuleRec, 1) }; #endif