/** \file CbmPsdDigiMcbm.cpp ** \author Nikolay Karpushkin ** \date 09.10.2019 ** ** Code for Data class for PSD digital information **/ #include "CbmPsdDigiMcbm.h" // ROOT Headers #include "TString.h" CbmPsdDigiMcbm::CbmPsdDigiMcbm() : CbmDigi(), fdEdep(0.), fdTime(-1.), fuAddress(0) { } CbmPsdDigiMcbm::CbmPsdDigiMcbm( UInt_t address, Double_t edep, Double_t time) : CbmDigi(), fdEdep(edep), fdTime(time), fuAddress(address) { } CbmPsdDigiMcbm::CbmPsdDigiMcbm( UInt_t moduleId, UInt_t sectionId, Double_t edep, Double_t time) : CbmDigi(), fdEdep(edep), fdTime(time), fuAddress(0) { fuAddress = CbmPsdAddress::GetAddress( moduleId, sectionId ); } // --- Copy constructor CbmPsdDigiMcbm::CbmPsdDigiMcbm(const CbmPsdDigiMcbm& digiIn) : CbmDigi(digiIn), fdEdep(digiIn.fdEdep), fdTime(digiIn.fdTime), fuAddress(digiIn.fuAddress) { } // ----- Move constructor ----------------------------------------------- CbmPsdDigiMcbm::CbmPsdDigiMcbm(CbmPsdDigiMcbm&& other) : CbmDigi(std::forward(other)), fdEdep(other.fdEdep), fdTime(other.fdTime), fuAddress(other.fuAddress) { } // ------------------------------------------------------------------------- // ----- Assignment operator ----------- -------------------------------- CbmPsdDigiMcbm& CbmPsdDigiMcbm::operator=(const CbmPsdDigiMcbm& rhs) { if (this != &rhs) { CbmDigi::operator=(rhs); fdEdep = rhs.fdEdep; fdTime = rhs.fdTime; fuAddress = rhs.fuAddress; } return *this; } // ------------------------------------------------------------------------- // ----- Move Assignment operator -------------------------------------- CbmPsdDigiMcbm& CbmPsdDigiMcbm::operator=(CbmPsdDigiMcbm&& other) { if (this != &other) { CbmDigi::operator=(std::forward(other)); fdEdep = other.fdEdep; fdTime = other.fdTime; fuAddress = other.fuAddress; } return *this; } // ------------------------------------------------------------------------- CbmPsdDigiMcbm::~CbmPsdDigiMcbm() { } std::string CbmPsdDigiMcbm::ToString() const { TString string = Form( "CbmPsdDigiMcbm: address = 0x%08X Charge = %f Time = %f", fuAddress, fdEdep, fdTime); return string.Data(); } Bool_t CbmPsdDigiMcbm::operator <( const CbmPsdDigiMcbm& rhs) const { return (this->GetTime() < rhs.GetTime()) ? kTRUE : kFALSE; } Int_t CbmPsdDigiMcbm::Compare( const TObject* obj) const { return Compare( (CbmPsdDigiMcbm*) obj); } Int_t CbmPsdDigiMcbm::Compare( const CbmPsdDigiMcbm* obj) const { if( this->GetTime() < obj->GetTime() ) // hit ... obj return -1; else if( this->GetTime() > obj->GetTime() ) // obj ... hit return 1; // obj = hit else return 0; } void CbmPsdDigiMcbm::SetAddress( UInt_t moduleId, UInt_t sectionId ) { fuAddress = CbmPsdAddress::GetAddress( moduleId, sectionId ); } ClassImp(CbmPsdDigiMcbm)