#include <Riostream.h>
#include "TObject.h"
#include "AliLog.h"
#include "AliTimeStamp.h"
using std::endl;
using std::cout;
ClassImp(AliTimeStamp)
const Int_t AliTimeStamp::fNanosecPerBC = 25;
AliTimeStamp::AliTimeStamp():
fOrbit(0),
fPeriod(0),
fBunchCross(0)
{
}
AliTimeStamp::AliTimeStamp( UInt_t orbit, UInt_t period,
ULong64_t bunchcross ):
fOrbit(orbit),
fPeriod(period),
fBunchCross( bunchcross )
{
}
AliTimeStamp::AliTimeStamp( UInt_t orbit, UInt_t period,
UInt_t seconds, UInt_t microsecs):
fOrbit(orbit),
fPeriod(period),
fBunchCross( (ULong64_t)((seconds*1000000.+microsecs)*1000./fNanosecPerBC+0.5) )
{
}
AliTimeStamp::AliTimeStamp(const AliTimeStamp &stamp):
TObject(stamp),
fOrbit(stamp.fOrbit),
fPeriod(stamp.fPeriod),
fBunchCross(stamp.fBunchCross)
{
}
AliTimeStamp& AliTimeStamp::operator=(const AliTimeStamp &stamp)
{
if(this==&stamp) return *this;
((TObject *)this)->operator=(stamp);
fOrbit=stamp.fOrbit;
fPeriod=stamp.fPeriod;
fBunchCross=stamp.fBunchCross;
return *this;
}
void AliTimeStamp::SetTimeStamp( UInt_t orbit, UInt_t period,
ULong64_t bunchcross )
{
fOrbit = orbit;
fPeriod = period;
fBunchCross = bunchcross;
}
void AliTimeStamp::SetTimeStamp( UInt_t orbit, UInt_t period,
UInt_t seconds, UInt_t microsecs )
{
fOrbit = orbit;
fPeriod = period;
fBunchCross = (ULong64_t)((seconds*1000000.+microsecs)*1000./fNanosecPerBC+0.5);
}
Int_t AliTimeStamp::Compare( const TObject* obj ) const
{
if( fPeriod > ((AliTimeStamp*)obj)->fPeriod ) return 1;
else { if( fPeriod < ((AliTimeStamp*)obj)->fPeriod ) return -1;
else { if( fOrbit > ((AliTimeStamp*)obj)->fOrbit ) return 1;
else { if( fOrbit < ((AliTimeStamp*)obj)->fOrbit ) return -1;
else { if( fBunchCross > ((AliTimeStamp*)obj)->fBunchCross ) return 1;
else { if( fBunchCross < ((AliTimeStamp*)obj)->fBunchCross ) return -1;
else return 0;
}}}}}
}
void AliTimeStamp::Print( const Option_t* ) const
{
cout << "Timestamp: " << endl;
cout << " Orbit: " << fOrbit << " Period: " << fPeriod << endl;
cout << " Bunch Cross: " << GetBunchCross() << endl;
cout << " Seconds: " << GetSeconds() << " MicroSecs: " << GetMicroSecs() << endl;
}