#include "ICOMETContext.hxx" #include const int COMET::ICOMETContext::Invalid = 0xDEADBEEF; ClassImp(COMET::ICOMETContext); COMET::ICOMETContext::~ICOMETContext() {} COMET::ICOMETContext::ICOMETContext() : fPartition(Invalid), fRun(Invalid), fSubRun(Invalid), fEvent(Invalid), fSpill(Invalid), fTimeStamp(Invalid) {} COMET::ICOMETContext::ICOMETContext(int partition, int run, int subRun, int event, int spill, int stamp) : fPartition(partition), fRun(run), fSubRun(subRun), fEvent(event), fSpill(spill), fTimeStamp(stamp) {} int COMET::ICOMETContext::GetPartition() const {return fPartition;} int COMET::ICOMETContext::GetRun() const {return fRun;} int COMET::ICOMETContext::GetSubRun() const {return fSubRun;} int COMET::ICOMETContext::GetEvent() const {return fEvent;} int COMET::ICOMETContext::GetSpill() const {return fSpill;} int COMET::ICOMETContext::GetTimeStamp() const {return fTimeStamp;} std::string COMET::ICOMETContext::GetTimeStampString() const { std::time_t t = GetTimeStamp(); char buf[256]; std::strftime(buf,sizeof(buf),"'%Y-%m-%d %H:%M:%S'",std::gmtime(&t)); return std::string(buf); } void COMET::ICOMETContext::SetPartition(int v) {fPartition = v;} void COMET::ICOMETContext::SetRun(int v) {fRun = v;} void COMET::ICOMETContext::SetSubRun(int v) {fSubRun = v;} void COMET::ICOMETContext::SetEvent(int v) {fEvent = v;} void COMET::ICOMETContext::SetSpill(int v) {fSpill = v;} void COMET::ICOMETContext::SetTimeStamp(int v) {fTimeStamp = v;} bool COMET::ICOMETContext::IsMC() const { if (fPartition == Invalid) return false; if (fPartition & kMCData) return true; return false; } bool COMET::ICOMETContext::IsDetector() const { if (fPartition == Invalid) return false; if (fPartition & kMCData) return false; return true; } bool COMET::ICOMETContext::Valid() const { if (GetPartition()!=COMET::ICOMETContext::Invalid) return true; if (GetRun()!=COMET::ICOMETContext::Invalid) return true; if (GetSubRun()!=COMET::ICOMETContext::Invalid) return true; if (GetEvent()!=COMET::ICOMETContext::Invalid) return true; if (GetSpill()!=COMET::ICOMETContext::Invalid) return true; if (GetTimeStamp()!=COMET::ICOMETContext::Invalid) return true; return false; } std::ostream& operator<<(std::ostream& s, const COMET::ICOMETContext& c) { s << "<"; bool valid = false; if (c.GetPartition()!=COMET::ICOMETContext::Invalid) { s << "P: " << c.GetPartition(); valid = true; } if (c.GetRun()!=COMET::ICOMETContext::Invalid) { if (valid) s << " "; s << "R: " << c.GetRun(); valid = true; } if (c.GetSubRun()!=COMET::ICOMETContext::Invalid) { if (valid) s << " "; s << "SR: " << c.GetSubRun(); valid = true; } if (c.GetEvent()!=COMET::ICOMETContext::Invalid) { if (valid) s << " "; s << "E: " << c.GetEvent(); valid = true; } if (c.GetSpill()!=COMET::ICOMETContext::Invalid) { if (valid) s << " "; s << "S: " << c.GetSpill(); valid = true; } if (c.GetTimeStamp()!=COMET::ICOMETContext::Invalid) { if (valid) s << " "; std::time_t t = c.GetTimeStamp(); char buf[64]; std::strftime(buf,sizeof(buf),"%y/%m/%d %X %Z",std::gmtime(&t)); s << "T: " << buf; valid = true; } if (valid) { if (c.IsMC()) s << " MC"; else if (c.IsDetector()) s << " DET"; } else { s << "Invalid Context"; } s << ">"; return s; }