#ifndef PNDANANDDETECTORDIGI_H #define PNDANANDDETECTORDIGI_H 1 #include #include "FairTimeStamp.h" #include "PndDetectorList.h" #include "TObject.h" class PndAnandDetectorDigi : public FairTimeStamp { friend std::ostream& operator<< (std::ostream& out, PndAnandDetectorDigi& digi){ out << "PndAnandDetectorDigi in: " << digi.GetStationId() << ", channelNr = " << digi.GetChannelNr() << ", timestamp "<< digi.GetTimeStamp() << ", from Point(s) "; std::vectorindices = digi.GetIndices(); for (unsigned int i = 0; i < indices.size(); i++){ out << indices[i] << " "; } out << std::endl; return out; } public: /** Default constructor **/ PndAnandDetectorDigi(); PndAnandDetectorDigi(Int_t iStationId, Int_t iChannel, Double_t time); /** Destructor **/ virtual ~PndAnandDetectorDigi(); /** Accessors **/ Int_t GetStationId() const { return fStationId; } Int_t GetChannelNr() const { return fChannelNr; } std::vector GetIndices() const { std::vector result; std::set myLinks = GetLinks(); for (std::set::iterator it = myLinks.begin(); it != myLinks.end(); it++){ result.push_back(it->GetIndex()); } return result; } Int_t GetNIndices() {return GetNLinks();} Int_t GetIndex(int i = 0) const{ return GetLink(i).GetIndex();} void AddIndex(int index){ AddLink(FairLink("PndAnandDetectorPoint", index)); } void AddIndex(std::vector index){ SetLinks(FairMultiLinkedData("PndAnandDetectorPoint", index)); } virtual bool equal(FairTimeStamp* data) { PndAnandDetectorDigi* myDigi = dynamic_cast (data); if (myDigi != 0){ if (fStationId == myDigi->GetStationId() ) return kTRUE; } return false; } virtual bool operator<(const PndAnandDetectorDigi& myDigi) const{ if (fStationId < myDigi.GetStationId()) return true; else if (fStationId > myDigi.GetStationId()) return false; if (fChannelNr < myDigi.GetChannelNr()) return true; else if (fChannelNr > myDigi.GetChannelNr()) return false; return false; } virtual bool operator>(const PndAnandDetectorDigi& myDigi) const{ if (fStationId > myDigi.GetStationId()) return true; else if (fStationId < myDigi.GetStationId()) return false; if (fChannelNr > myDigi.GetChannelNr()) return true; else if (fChannelNr < myDigi.GetChannelNr()) return false; return false; } virtual bool operator==(const PndAnandDetectorDigi& myDigi) const{ if (fStationId == myDigi.GetStationId()) if (fChannelNr == myDigi.GetChannelNr()) return true; return false; } private: Int_t fStationId; Int_t fChannelNr; ClassDef(PndAnandDetectorDigi,1); }; #endif