ROOT logo
#ifndef ALITIMESTAMP_H
#define ALITIMESTAMP_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

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

///////////////////////////////////////////////////////////////////////////////
//
//  Class to define Event Timestamp from : 
//
//               Orbit
//               Period counter
//               Seconds    |
//                  +       | ===> Bunch cross 
//               Microsecs  | 
//
//////////////////////////////////////////////////////////////////////////////
#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 &timestamp );
         AliTimeStamp&   operator=(const AliTimeStamp& timestamp);
              
      // Getters
               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; }
     // Setters
                 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;   //! nanosecs per bunch cross
              
protected:
              UInt_t    fOrbit;         // Orbit
              UInt_t    fPeriod;        // Period counter
           ULong64_t    fBunchCross;    // Bunch Cross 
//              UInt_t    fSeconds;       // Seconds 
//              UInt_t    fMicroSecs;     // Microsecs  
                         
private:                         

   ClassDef( AliTimeStamp, 1 )  // Define a timestamp
};                                                                         


#endif
 AliTimeStamp.h:1
 AliTimeStamp.h:2
 AliTimeStamp.h:3
 AliTimeStamp.h:4
 AliTimeStamp.h:5
 AliTimeStamp.h:6
 AliTimeStamp.h:7
 AliTimeStamp.h:8
 AliTimeStamp.h:9
 AliTimeStamp.h:10
 AliTimeStamp.h:11
 AliTimeStamp.h:12
 AliTimeStamp.h:13
 AliTimeStamp.h:14
 AliTimeStamp.h:15
 AliTimeStamp.h:16
 AliTimeStamp.h:17
 AliTimeStamp.h:18
 AliTimeStamp.h:19
 AliTimeStamp.h:20
 AliTimeStamp.h:21
 AliTimeStamp.h:22
 AliTimeStamp.h:23
 AliTimeStamp.h:24
 AliTimeStamp.h:25
 AliTimeStamp.h:26
 AliTimeStamp.h:27
 AliTimeStamp.h:28
 AliTimeStamp.h:29
 AliTimeStamp.h:30
 AliTimeStamp.h:31
 AliTimeStamp.h:32
 AliTimeStamp.h:33
 AliTimeStamp.h:34
 AliTimeStamp.h:35
 AliTimeStamp.h:36
 AliTimeStamp.h:37
 AliTimeStamp.h:38
 AliTimeStamp.h:39
 AliTimeStamp.h:40
 AliTimeStamp.h:41
 AliTimeStamp.h:42
 AliTimeStamp.h:43
 AliTimeStamp.h:44
 AliTimeStamp.h:45
 AliTimeStamp.h:46
 AliTimeStamp.h:47
 AliTimeStamp.h:48
 AliTimeStamp.h:49
 AliTimeStamp.h:50
 AliTimeStamp.h:51
 AliTimeStamp.h:52
 AliTimeStamp.h:53
 AliTimeStamp.h:54
 AliTimeStamp.h:55
 AliTimeStamp.h:56
 AliTimeStamp.h:57
 AliTimeStamp.h:58
 AliTimeStamp.h:59
 AliTimeStamp.h:60
 AliTimeStamp.h:61
 AliTimeStamp.h:62
 AliTimeStamp.h:63
 AliTimeStamp.h:64
 AliTimeStamp.h:65
 AliTimeStamp.h:66