]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/AliTimeStamp.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliTimeStamp.cxx
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
18 ///////////////////////////////////////////////////////////////////////////////
19 //
20 //  Class to define Event Timestamp from : 
21 //
22 //               Orbit
23 //               Period counter
24 //               Seconds    |
25 //                  +       |   <===> Bunch cross 
26 //               Microsecs  | 
27 //
28 //////////////////////////////////////////////////////////////////////////////
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 //_____________________________________________________________________________
47 AliTimeStamp::AliTimeStamp():
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 //___________________________________________________________________________
72 AliTimeStamp::AliTimeStamp(const AliTimeStamp &stamp):
73  TObject(stamp),
74  fOrbit(stamp.fOrbit),
75  fPeriod(stamp.fPeriod),
76  fBunchCross(stamp.fBunchCross)
77 {
78  // copy constructor
79 }
80 //_____________________________________________________________________________
81 AliTimeStamp& AliTimeStamp::operator=(const AliTimeStamp &stamp)
82 {
83  //assignment operator
84  if(this==&stamp) return *this;
85  ((TObject *)this)->operator=(stamp);
86  fOrbit=stamp.fOrbit;
87  fPeriod=stamp.fPeriod;
88  fBunchCross=stamp.fBunchCross;
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 }