#ifndef ALITIMESTAMP_H
#define ALITIMESTAMP_H
#include <cmath>
class TObject;
class AliTimeStamp : public TObject {
public:
AliTimeStamp();
AliTimeStamp( UInt_t orbit, UInt_t period, ULong64_t bunchCross );
AliTimeStamp( UInt_t orbit, UInt_t period,
UInt_t seconds, UInt_t microsecs );
virtual ~AliTimeStamp() {}
AliTimeStamp( const AliTimeStamp ×tamp );
AliTimeStamp& operator=(const AliTimeStamp& timestamp);
UInt_t GetOrbit() const { return fOrbit; }
UInt_t GetPeriod() const { return fPeriod; }
ULong64_t GetBunchCross() const { return fBunchCross; }
UInt_t GetSeconds() const { return (UInt_t)(fBunchCross/1000000000.*fNanosecPerBC); }
UInt_t GetMicroSecs() const { return (UInt_t)(fmod(fBunchCross *fNanosecPerBC, 1000000000.)/1000 ); }
virtual Bool_t IsSortable() const { return kTRUE; }
void SetTimeStamp( UInt_t orbit, UInt_t period, ULong64_t bunchcross );
void SetTimeStamp( UInt_t orbit, UInt_t period,
UInt_t seconds, UInt_t microsecs );
virtual Int_t Compare( const TObject* obj ) const;
virtual void Print( const Option_t* opt ="" ) const;
static const Int_t fNanosecPerBC;
protected:
UInt_t fOrbit;
UInt_t fPeriod;
ULong64_t fBunchCross;
private:
ClassDef( AliTimeStamp, 1 )
};
#endif