#ifndef CBMTRDMODULERECT_H #define CBMTRDMODULERECT_H #include "CbmTrdModuleRec.h" #include class TGraphErrors; class TF1; /** * \brief Triangular pad module; Cluster finding and hit reconstruction algorithms **/ class CbmTrdModuleRecT : public CbmTrdModuleRec { public: enum CbmTrdModuleRecTconfig{ kVerbose = 0 // steer verbosity on/off ,kDraw // steer graphic representation on/off }; /** \brief Default constructor.*/ CbmTrdModuleRecT(); /** \brief Constructor with placement */ CbmTrdModuleRecT(Int_t mod, Int_t ly=-1, Int_t rot=0); virtual ~CbmTrdModuleRecT(); /** \brief Add digi to local module **/ virtual Bool_t AddDigi(CbmTrdDigi *d, Int_t id); /** \brief Config task with the following settings * \param[in] v verbosity toggle * \param[in] d drawing toggle */ virtual inline void Config(Bool_t v, Bool_t d); /** \brief Count RO channels (R or T) with data**/ virtual Int_t GetOverThreshold() const; /** \brief Steering routine for finding digits clusters **/ virtual Int_t FindClusters(); /** \brief Steering routine for building hits **/ virtual Bool_t MakeHits(); /** \brief Steering routine for converting cluster to hit **/ virtual CbmTrdHit* MakeHit(Int_t cId, const CbmTrdCluster *c, std::vector *digis); protected: private: CbmTrdModuleRecT(const CbmTrdModuleRecT &ref); const CbmTrdModuleRecT& operator=(const CbmTrdModuleRecT &ref); Bool_t CDRAW() const { return TESTBIT(fConfigMap, kDraw);} Bool_t CWRITE() const { return TESTBIT(fConfigMap, kVerbose);} UChar_t fConfigMap;// task configuration settings ULong64_t fT0; //! start time of event/time slice [clk] std::map> fBuffer; //row-wise organized clusters static Double_t fgDT[3]; //! FASP delay wrt signal static TGraphErrors *fgEdep; //! data handler for cluster PRF static TF1 *fgPRF; //! fitter for cluster PRF static TGraphErrors *fgT; //! data handler for cluster TRF ClassDef(CbmTrdModuleRecT, 1) // Triangular pad module; Cluster finding and hit reconstruction algorithms }; void CbmTrdModuleRecT::Config(Bool_t v, Bool_t d) { if(v) SETBIT(fConfigMap, kVerbose); else CLRBIT(fConfigMap, kVerbose); printf("CbmTrdModuleRecT::Verbose[%c]\n", CWRITE()?'y':'n'); if(d) SETBIT(fConfigMap, kDraw); else CLRBIT(fConfigMap, kDraw); printf("CbmTrdModuleRecT::Draw[%c]\n", CDRAW()?'y':'n'); } #endif