ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id: AliTimeStamp.cxx 22322 2007-11-22 11:43:14Z cvetan $ */

///////////////////////////////////////////////////////////////////////////////
//
//  Class to define Event Timestamp from : 
//
//               Orbit
//               Period counter
//               Seconds    |
//                  +       |   <===> Bunch cross 
//               Microsecs  | 
//
//////////////////////////////////////////////////////////////////////////////

#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;   // nanosecs per bunch cross
   
//_____________________________________________________________________________
AliTimeStamp::AliTimeStamp():
  fOrbit(0),        
  fPeriod(0),        
  fBunchCross(0)
{
 // Default constructor
}     

//_____________________________________________________________________________
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)
{
 // copy constructor
}
//_____________________________________________________________________________
AliTimeStamp& AliTimeStamp::operator=(const AliTimeStamp &stamp)
{
 //assignment operator
 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
{
  // Compare 

  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
{
   // Print
  cout << "Timestamp: " << endl;
  cout << "  Orbit: " << fOrbit << " Period: " << fPeriod << endl;
  cout << "  Bunch Cross: " << GetBunchCross() << endl;
  cout << "  Seconds: " << GetSeconds() << " MicroSecs: " << GetMicroSecs() << endl;
}
 AliTimeStamp.cxx:1
 AliTimeStamp.cxx:2
 AliTimeStamp.cxx:3
 AliTimeStamp.cxx:4
 AliTimeStamp.cxx:5
 AliTimeStamp.cxx:6
 AliTimeStamp.cxx:7
 AliTimeStamp.cxx:8
 AliTimeStamp.cxx:9
 AliTimeStamp.cxx:10
 AliTimeStamp.cxx:11
 AliTimeStamp.cxx:12
 AliTimeStamp.cxx:13
 AliTimeStamp.cxx:14
 AliTimeStamp.cxx:15
 AliTimeStamp.cxx:16
 AliTimeStamp.cxx:17
 AliTimeStamp.cxx:18
 AliTimeStamp.cxx:19
 AliTimeStamp.cxx:20
 AliTimeStamp.cxx:21
 AliTimeStamp.cxx:22
 AliTimeStamp.cxx:23
 AliTimeStamp.cxx:24
 AliTimeStamp.cxx:25
 AliTimeStamp.cxx:26
 AliTimeStamp.cxx:27
 AliTimeStamp.cxx:28
 AliTimeStamp.cxx:29
 AliTimeStamp.cxx:30
 AliTimeStamp.cxx:31
 AliTimeStamp.cxx:32
 AliTimeStamp.cxx:33
 AliTimeStamp.cxx:34
 AliTimeStamp.cxx:35
 AliTimeStamp.cxx:36
 AliTimeStamp.cxx:37
 AliTimeStamp.cxx:38
 AliTimeStamp.cxx:39
 AliTimeStamp.cxx:40
 AliTimeStamp.cxx:41
 AliTimeStamp.cxx:42
 AliTimeStamp.cxx:43
 AliTimeStamp.cxx:44
 AliTimeStamp.cxx:45
 AliTimeStamp.cxx:46
 AliTimeStamp.cxx:47
 AliTimeStamp.cxx:48
 AliTimeStamp.cxx:49
 AliTimeStamp.cxx:50
 AliTimeStamp.cxx:51
 AliTimeStamp.cxx:52
 AliTimeStamp.cxx:53
 AliTimeStamp.cxx:54
 AliTimeStamp.cxx:55
 AliTimeStamp.cxx:56
 AliTimeStamp.cxx:57
 AliTimeStamp.cxx:58
 AliTimeStamp.cxx:59
 AliTimeStamp.cxx:60
 AliTimeStamp.cxx:61
 AliTimeStamp.cxx:62
 AliTimeStamp.cxx:63
 AliTimeStamp.cxx:64
 AliTimeStamp.cxx:65
 AliTimeStamp.cxx:66
 AliTimeStamp.cxx:67
 AliTimeStamp.cxx:68
 AliTimeStamp.cxx:69
 AliTimeStamp.cxx:70
 AliTimeStamp.cxx:71
 AliTimeStamp.cxx:72
 AliTimeStamp.cxx:73
 AliTimeStamp.cxx:74
 AliTimeStamp.cxx:75
 AliTimeStamp.cxx:76
 AliTimeStamp.cxx:77
 AliTimeStamp.cxx:78
 AliTimeStamp.cxx:79
 AliTimeStamp.cxx:80
 AliTimeStamp.cxx:81
 AliTimeStamp.cxx:82
 AliTimeStamp.cxx:83
 AliTimeStamp.cxx:84
 AliTimeStamp.cxx:85
 AliTimeStamp.cxx:86
 AliTimeStamp.cxx:87
 AliTimeStamp.cxx:88
 AliTimeStamp.cxx:89
 AliTimeStamp.cxx:90
 AliTimeStamp.cxx:91
 AliTimeStamp.cxx:92
 AliTimeStamp.cxx:93
 AliTimeStamp.cxx:94
 AliTimeStamp.cxx:95
 AliTimeStamp.cxx:96
 AliTimeStamp.cxx:97
 AliTimeStamp.cxx:98
 AliTimeStamp.cxx:99
 AliTimeStamp.cxx:100
 AliTimeStamp.cxx:101
 AliTimeStamp.cxx:102
 AliTimeStamp.cxx:103
 AliTimeStamp.cxx:104
 AliTimeStamp.cxx:105
 AliTimeStamp.cxx:106
 AliTimeStamp.cxx:107
 AliTimeStamp.cxx:108
 AliTimeStamp.cxx:109
 AliTimeStamp.cxx:110
 AliTimeStamp.cxx:111
 AliTimeStamp.cxx:112
 AliTimeStamp.cxx:113
 AliTimeStamp.cxx:114
 AliTimeStamp.cxx:115
 AliTimeStamp.cxx:116
 AliTimeStamp.cxx:117
 AliTimeStamp.cxx:118
 AliTimeStamp.cxx:119
 AliTimeStamp.cxx:120
 AliTimeStamp.cxx:121
 AliTimeStamp.cxx:122
 AliTimeStamp.cxx:123
 AliTimeStamp.cxx:124
 AliTimeStamp.cxx:125
 AliTimeStamp.cxx:126
 AliTimeStamp.cxx:127
 AliTimeStamp.cxx:128
 AliTimeStamp.cxx:129
 AliTimeStamp.cxx:130
 AliTimeStamp.cxx:131
 AliTimeStamp.cxx:132
 AliTimeStamp.cxx:133
 AliTimeStamp.cxx:134
 AliTimeStamp.cxx:135