#ifndef MARS_MTime #define MARS_MTime ///////////////////////////////////////////////////////////////////////////// // // // MTime // // // // A generalized MARS time stamp // // // ///////////////////////////////////////////////////////////////////////////// #ifndef MARS_MParContainer #include "MParContainer.h" #endif class MTime : public MParContainer { private: UInt_t fTimeStamp[2]; // type of raw event which should be processed by this task UInt_t fDuration; // time of validity public: MTime(const char *name=NULL, const char *title=NULL) { fName = name ? name : ClassName(); fTitle = title; SetTime(0, 0); } MTime(UInt_t t1, UInt_t t0) { SetTime(t1, t0); } MTime(MTime& t) { fTimeStamp[0] = t.fTimeStamp[0]; fTimeStamp[1] = t.fTimeStamp[1]; fDuration = t.fDuration; } void operator=(MTime &t) { fTimeStamp[0] = t.fTimeStamp[0]; fTimeStamp[1] = t.fTimeStamp[1]; fDuration = t.fDuration; } ~MTime() {} void Print(Option_t *t=NULL) const; void SetTime(UInt_t t1, UInt_t t0) { fTimeStamp[0] = t1; fTimeStamp[1] = t0; } void SetDuration(UInt_t t) { fDuration = t; } MTime *GetTime() { return this; } UInt_t GetTimeLo() { return fTimeStamp[0]; } UInt_t GetTimeHi() { return fTimeStamp[1]; } UInt_t GetDuration() { return fDuration; } ClassDef(MTime, 1) //A generalized MARS time stamp }; inline Double_t operator-(MTime &t1, MTime &t2) { return (Double_t)t1.GetTimeLo()-(Double_t)t2.GetTimeLo(); } inline Bool_t operator<(MTime &t1, MTime &t2) { return (t1.GetTimeHi()<=t2.GetTimeHi()) && (t1.GetTimeLo()(MTime &t1, MTime &t2) { return (t1.GetTimeHi()>=t2.GetTimeHi()) && (t1.GetTimeLo()>t2.GetTimeLo()); } inline Bool_t operator<=(MTime &t1, MTime &t2) { return (t1.GetTimeHi()<=t2.GetTimeHi()) && (t1.GetTimeLo()<=t2.GetTimeLo()); } inline Bool_t operator>=(MTime &t1, MTime &t2) { return (t1.GetTimeHi()>=t2.GetTimeHi()) && (t1.GetTimeLo()>=t2.GetTimeLo()); } inline Bool_t operator==(MTime &t1, MTime &t2) { return (t1.GetTimeLo()==t2.GetTimeLo()) && (t1.GetTimeHi()==t2.GetTimeHi()); } #endif