/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-
struct AliRawDataHeader {
AliRawDataHeader() :
fSize(0xFFFFFFFF),
- fEventID1(0),
- fL1TriggerType(0),
- fVersion(1),
+ fWord2(2<<24),
fEventID2(0),
fAttributesSubDetectors(0),
- fStatusMiniEventID(0),
+ fStatusMiniEventID(0x10000), // status bit 4: no L1/L2 trigger information
fTriggerClassLow(0),
fROILowTriggerClassHigh(0),
fROIHigh(0)
{}
+ // Adding virtual destructor breaks
+ // C++ struct backward compatibility
+ // Do not uncomment the line below!!!
+ // virtual ~AliRawDataHeader() {}
+
+ UShort_t GetEventID1() const
+ {
+ return (UShort_t)( fWord2 & 0xFFF );
+ };
+
+ UInt_t GetEventID2() const
+ {
+ return fEventID2;
+ };
+
+ UChar_t GetL1TriggerMessage() const
+ {
+ return (UChar_t)( (fWord2 >> 14) & 0x3FF );
+ };
+
+ UChar_t GetVersion() const
+ {
+ return (UChar_t)( (fWord2 >> 24) & 0xFF );
+ };
+
UChar_t GetAttributes() const
{return (fAttributesSubDetectors >> 24) & 0xFF;};
Bool_t TestAttribute(Int_t index) const
UInt_t GetStatus() const
{return (fStatusMiniEventID >> 12) & 0xFFFF;};
UInt_t GetMiniEventID() const
- {return fStatusMiniEventID & 0x7FF;};
+ {return fStatusMiniEventID & 0xFFF;};
ULong64_t GetTriggerClasses() const
- {return ((ULong64_t) (fROILowTriggerClassHigh & 0x1FFFF)) << 32 + fTriggerClassLow;}
+ {return (((ULong64_t) (fROILowTriggerClassHigh & 0x3FFFF)) << 32) | fTriggerClassLow;}
ULong64_t GetROI() const
- {return ((ULong64_t) fROIHigh) << 32 + ((fROILowTriggerClassHigh >> 28) & 0xF);}
+ {return (((ULong64_t) fROIHigh) << 4) | ((fROILowTriggerClassHigh >> 28) & 0xF);}
+
+ void SetTriggerClass(ULong64_t mask)
+ {fTriggerClassLow = (UInt_t)(mask & 0xFFFFFFFF); // low bits of trigger class
+ fROILowTriggerClassHigh = (UInt_t)((mask >> 32) & 0x3FFFF); // low bits of ROI data (bits 28-31) and high bits of trigger class (bits 0-17)
+ };
UInt_t fSize; // size of the raw data in bytes
- UShort_t fEventID1; // bunch crossing number
- UChar_t fL1TriggerType; // level 1 trigger type
- UChar_t fVersion; // version of the data header format
+ UInt_t fWord2; // bunch crossing, L1 trigger message and fomrat version
UInt_t fEventID2; // orbit number
UInt_t fAttributesSubDetectors; // block attributes (bits 24-31) and participating sub detectors
UInt_t fStatusMiniEventID; // status & error bits (bits 12-27) and mini event ID (bits 0-11)