]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RAW/AliRawEventHeaderBase.h
Fixes in order to treat correctly event and sub-event header extensions.
[u/mrichter/AliRoot.git] / RAW / AliRawEventHeaderBase.h
index 956e6f5ccc4f34beab95d87986d1aaf84d0a9f2f..da14989f5d1be64e528fadfc90ca461448bd42fe 100644 (file)
@@ -19,7 +19,7 @@
 class AliRawEventHeaderBase : public TObject {
 
 public:
-   AliRawEventHeaderBase() { fSize=fMagic=fHeadSize=fVersion=fExtendedDataSize=0; fExtendedData = 0x0; fIsSwapped = kFALSE; }
+   AliRawEventHeaderBase();
    virtual ~AliRawEventHeaderBase() { if (fExtendedData) delete [] fExtendedData; }
 
    void         *HeaderBaseBegin() { return (void *) &fSize; }
@@ -30,6 +30,8 @@ public:
    Bool_t        IsSwapped() const { return (fMagic == fgkEventMagicNumberSwapped) ? kTRUE : kFALSE; }
    Bool_t        IsValid() const { return IsSwapped() ? kTRUE : ((fMagic == fgkEventMagicNumber) ? kTRUE : kFALSE); }
    void          Swap();
+   UInt_t        SwapWord(UInt_t x) const;
+   void          SwapData(const void* data, const void* buf, UInt_t size);
 
    UInt_t        GetEventSize() const { return fSize; }
    UInt_t        GetMagic() const { return fMagic; }
@@ -40,14 +42,16 @@ public:
 
    UInt_t        GetExtendedDataSize() const { return fExtendedDataSize; }
    char*         GetExtendedData() const { return fExtendedData; }
-   void          SetExtendedDataSize(Int_t size) { fExtendedDataSize = size; }
-   void          SetExtendedData(char *data) { fExtendedData = data; }
 
-   const char *  GetTypeName();
+   const char *  GetTypeName() const;
    static AliRawEventHeaderBase* Create(char*& data);
+   void          AllocateExtendedData(Int_t extsize);
    Int_t         ReadHeader(char*& data);
-   UInt_t        Get(const char *datamember);
-   const UInt_t* GetP(const char *datamember);
+   Int_t         ReadExtendedData(char*& data);
+   UInt_t        Get(const char *datamember) const;
+   const UInt_t* GetP(const char *datamember) const;
+
+   void          Print( const Option_t* opt ="" ) const;
 
    // The following enumeration can be used once the kEventTypeMask has been
    // applied to the raw event type
@@ -60,16 +64,24 @@ public:
      kEndOfBurst =       6,    // END_OF_BURST
      kPhysicsEvent =     7,    // PHYSICS_EVENT
      kCalibrationEvent = 8,    // CALIBRATION_EVENT
-     kFormatError =      9     // EVENT_FORMAT_ERROR
+     kFormatError =      9,    // EVENT_FORMAT_ERROR
+     kStartOfData =      10,   // START_OF_DATA
+     kEndOfData =        11,   // END_OF_DATA
+     kSystemSoftwareTriggerEvent   = 12, // SYSTEM_SOFTWARE_TRIGGER_EVENT
+     kDetectorSoftwareTriggerEvent = 13  // DETECTOR_SOFTWARE_TRIGGER_EVENT
    };
 
 private:
+   AliRawEventHeaderBase(const AliRawEventHeaderBase&);
+   AliRawEventHeaderBase& operator=(const AliRawEventHeaderBase&);
+
    UInt_t fSize;          // size of event in bytes
    UInt_t fMagic;         // magic number used for consistency check
    UInt_t fHeadSize;      // size of header in bytes
    UInt_t fVersion;       // unique version identifier
 
    UInt_t fExtendedDataSize; // size of header extension data
+   UInt_t fExtendedAllocSize;//! size of allocated memory for header extension data
    char  *fExtendedData;  //[fExtendedDataSize] pointer to header extension data 
 
    Bool_t fIsSwapped;     // is data swapped
@@ -77,7 +89,7 @@ private:
    static const UInt_t fgkEventMagicNumber        = 0xDA1E5AFE; // magic word
    static const UInt_t fgkEventMagicNumberSwapped = 0xFE5A1EDA; // swapped magic word
 
-   ClassDef(AliRawEventHeaderBase,1)  // Alice raw event header base class
+   ClassDef(AliRawEventHeaderBase,2)  // Alice raw event header base class
 };
 
 #define EVENT_HEADER_VERSION(AA,BB) AliRawEventHeaderV##AA##_##BB