AliRoot Core  3dc7879 (3dc7879)
AliTimeStamp.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 /* $Id: AliTimeStamp.cxx 22322 2007-11-22 11:43:14Z cvetan $ */
17 
19 //
20 // Class to define Event Timestamp from :
21 //
22 // Orbit
23 // Period counter
24 // Seconds |
25 // + | <===> Bunch cross
26 // Microsecs |
27 //
29 
30 #include <Riostream.h>
31 
32 
33 #include "TObject.h"
34 
35 #include "AliLog.h"
36 #include "AliTimeStamp.h"
37 
38 using std::endl;
39 using std::cout;
40 ClassImp(AliTimeStamp)
41 
42 //_____________________________________________________________________________
43 
44 const Int_t AliTimeStamp::fNanosecPerBC = 25; // nanosecs per bunch cross
45 
46 //_____________________________________________________________________________
48  fOrbit(0),
49  fPeriod(0),
50  fBunchCross(0)
51 {
52  // Default constructor
53 }
54 
55 //_____________________________________________________________________________
56 AliTimeStamp::AliTimeStamp( UInt_t orbit, UInt_t period,
57  ULong64_t bunchcross ):
58  fOrbit(orbit),
59  fPeriod(period),
60  fBunchCross( bunchcross )
61 {
62 }
63 //_____________________________________________________________________________
64 AliTimeStamp::AliTimeStamp( UInt_t orbit, UInt_t period,
65  UInt_t seconds, UInt_t microsecs):
66  fOrbit(orbit),
67  fPeriod(period),
68  fBunchCross( (ULong64_t)((seconds*1000000.+microsecs)*1000./fNanosecPerBC+0.5) )
69 {
70 }
71 //___________________________________________________________________________
73  TObject(stamp),
74  fOrbit(stamp.fOrbit),
75  fPeriod(stamp.fPeriod),
77 {
78  // copy constructor
79 }
80 //_____________________________________________________________________________
82 {
83  //assignment operator
84  if(this==&stamp) return *this;
85  ((TObject *)this)->operator=(stamp);
86  fOrbit=stamp.fOrbit;
87  fPeriod=stamp.fPeriod;
89  return *this;
90 }
91 //_____________________________________________________________________________
92 void AliTimeStamp::SetTimeStamp( UInt_t orbit, UInt_t period,
93  ULong64_t bunchcross )
94 {
95  fOrbit = orbit;
96  fPeriod = period;
97  fBunchCross = bunchcross;
98 }
99 
100 //_____________________________________________________________________________
101 void AliTimeStamp::SetTimeStamp( UInt_t orbit, UInt_t period,
102  UInt_t seconds, UInt_t microsecs )
103 {
104  fOrbit = orbit;
105  fPeriod = period;
106  fBunchCross = (ULong64_t)((seconds*1000000.+microsecs)*1000./fNanosecPerBC+0.5);
107 }
108 
109 
110 
111 //_____________________________________________________________________________
112 Int_t AliTimeStamp::Compare( const TObject* obj ) const
113 {
114  // Compare
115 
116  if( fPeriod > ((AliTimeStamp*)obj)->fPeriod ) return 1;
117  else { if( fPeriod < ((AliTimeStamp*)obj)->fPeriod ) return -1;
118  else { if( fOrbit > ((AliTimeStamp*)obj)->fOrbit ) return 1;
119  else { if( fOrbit < ((AliTimeStamp*)obj)->fOrbit ) return -1;
120  else { if( fBunchCross > ((AliTimeStamp*)obj)->fBunchCross ) return 1;
121  else { if( fBunchCross < ((AliTimeStamp*)obj)->fBunchCross ) return -1;
122  else return 0;
123 }}}}}
124 
125 }
126 
127 //_____________________________________________________________________________
128 void AliTimeStamp::Print( const Option_t* ) const
129 {
130  // Print
131  cout << "Timestamp: " << endl;
132  cout << " Orbit: " << fOrbit << " Period: " << fPeriod << endl;
133  cout << " Bunch Cross: " << GetBunchCross() << endl;
134  cout << " Seconds: " << GetSeconds() << " MicroSecs: " << GetMicroSecs() << endl;
135 }
ULong64_t GetBunchCross() const
Definition: AliTimeStamp.h:38
UInt_t GetMicroSecs() const
Definition: AliTimeStamp.h:40
UInt_t GetSeconds() const
Definition: AliTimeStamp.h:39
AliTimeStamp & operator=(const AliTimeStamp &timestamp)
static const Int_t fNanosecPerBC
Definition: AliTimeStamp.h:51
void SetTimeStamp(UInt_t orbit, UInt_t period, ULong64_t bunchcross)
ULong64_t fBunchCross
Definition: AliTimeStamp.h:56
virtual Int_t Compare(const TObject *obj) const
virtual void Print(const Option_t *opt="") const
UInt_t fOrbit
nanosecs per bunch cross
Definition: AliTimeStamp.h:54
UInt_t fPeriod
Definition: AliTimeStamp.h:55