/** \file CbmPsdDigiMcbm.h ** \author Nikolay Karpushkin ** \date 09.10.2019 **/ /** \class CbmPsdDigiMcbm ** \brief Data class for PSD digital information ** \version 1.0 ** ** The information is encoded into 3*4 bytes (2 Double_t + 1 UInt_t). ** Unique Address: 32 bits following CbmPsdAddress ** Energy deposition: 32 bits double ** Time: 32 bits double ** **/ #ifndef CBMPSDDIGIMCBM_H #define CBMPSDDIGIMCBM_H 1 #include "CbmDigi.h" #include "CbmMatch.h" #include "CbmPsdAddress.h" class TString; #include class CbmPsdDigiMcbm : public CbmDigi { public: /** ** @brief Default constructor. **/ CbmPsdDigiMcbm(); /** ** @brief Constructor with assignment. ** @param[in] address Unique channel address. ** @param[in] edep Energy deposition ** @param[in] time Time [adc counts]. **/ CbmPsdDigiMcbm( UInt_t address, Double_t edep, Double_t time ); /** ** @brief Constructor with detailled assignment. ** @param[in] moduleID Module Identificator ** @param[in] sectionID Section Identificator ** @param[in] edep Energy deposition ** @param[in] time Time [adc counts]. **/ CbmPsdDigiMcbm( UInt_t moduleId, UInt_t sectionId, Double_t edep, Double_t time ); /** ** @brief Copy constructor. **/ CbmPsdDigiMcbm(const CbmPsdDigiMcbm&); /** Move constructor **/ CbmPsdDigiMcbm(CbmPsdDigiMcbm&&); /** Assignment operator **/ CbmPsdDigiMcbm& operator=(const CbmPsdDigiMcbm&); /** Move Assignment operator **/ CbmPsdDigiMcbm& operator=(CbmPsdDigiMcbm&&); /** ** @brief Destructor. **/ ~CbmPsdDigiMcbm(); /** Accessors **/ /** ** @brief Inherited from CbmDigi. **/ Int_t GetAddress() const { return fuAddress; }; /** ** @brief Inherited from CbmDigi. **/ Int_t GetSystemId() const { return CbmPsdAddress::GetSystemId(fuAddress); }; /** ** @brief Alias for GetEdep. **/ Double_t GetEdep() const { return fdEdep; }; /** ** @brief Alias for GetTime. **/ Double_t GetTime() const { return fdTime; }; /** ** @brief Module. **/ Double_t GetModuleID() const { return CbmPsdAddress::GetModuleId( GetAddress() ); }; /** ** @brief Section. **/ Double_t GetSectionID() const { return CbmPsdAddress::GetSectionId( GetAddress() ); }; virtual Bool_t operator <( const CbmPsdDigiMcbm& rhs) const; virtual Int_t Compare( const TObject* obj) const; virtual Int_t Compare( const CbmPsdDigiMcbm* obj) const; virtual Bool_t IsSortable() const { return kTRUE; }; /** Modifiers **/ void SetAddress(Int_t address) { fuAddress = address; }; void SetAddress( UInt_t moduleId, UInt_t sectionId ); void SetEdep(Double_t edep) { fdEdep = edep; } void SetTime(Double_t time) { fdTime = time; } void SetModuleID(UInt_t mod) { fModuleID = mod; } void SetSectionID(UInt_t sec) { fSectionID = sec; } std::string ToString() const; private: UInt_t fModuleID; UInt_t fSectionID; Double_t fdEdep; /// Energy deposition Double_t fdTime; /// Time of measurement UInt_t fuAddress; /// Unique channel address ClassDef(CbmPsdDigiMcbm, 1); }; #endif // CBMPSDDIGIMCBM_H