#ifndef ALIRAWEVENTHEADERBASE_H
#define ALIRAWEVENTHEADERBASE_H
#include <TObject.h>
class AliRawEventHeaderBase : public TObject {
public:
AliRawEventHeaderBase();
virtual ~AliRawEventHeaderBase() { if (fExtendedData) delete [] fExtendedData; }
void *HeaderBaseBegin() const { return (void *) &fSize; }
Int_t HeaderBaseSize() const { return (Long_t) &fVersion - (Long_t) &fSize + sizeof(fVersion); }
void *HeaderBegin() const;
Int_t HeaderSize() const;
Bool_t DataIsSwapped() const { return fIsSwapped; }
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; }
UInt_t GetHeadSize() const { return fHeadSize; }
UInt_t GetVersion() const { return fVersion; }
UInt_t GetMajorVersion() const { return ((fVersion>>16)&0x0000ffff); }
UInt_t GetMinorVersion() const { return (fVersion&0x0000ffff); }
UInt_t GetExtendedDataSize() const { return fExtendedDataSize; }
char* GetExtendedData() const { return fExtendedData; }
const char * GetTypeName() const;
static const char * GetTypeName(UInt_t eventType);
static AliRawEventHeaderBase* Create(char*& data);
void AllocateExtendedData(Int_t extsize);
Int_t ReadHeader(char*& data);
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;
Int_t GetFirstEqIndex() const { return fFirstEqIndex; }
Int_t GetLastEqIndex() const { return fLastEqIndex; }
void AddEqIndex(Int_t index);
void Reset();
enum EAliRawEventType {
kStartOfRun = 1,
kEndOfRun = 2,
kStartOfRunFiles = 3,
kEndOfRunFiles = 4,
kStartOfBurst = 5,
kEndOfBurst = 6,
kPhysicsEvent = 7,
kCalibrationEvent = 8,
kFormatError = 9,
kStartOfData = 10,
kEndOfData = 11,
kSystemSoftwareTriggerEvent = 12,
kDetectorSoftwareTriggerEvent = 13,
kSyncEvent = 14
};
private:
AliRawEventHeaderBase(const AliRawEventHeaderBase&);
AliRawEventHeaderBase& operator=(const AliRawEventHeaderBase&);
UInt_t fSize;
UInt_t fMagic;
UInt_t fHeadSize;
UInt_t fVersion;
UInt_t fExtendedDataSize;
UInt_t fExtendedAllocSize;
char *fExtendedData;
Bool_t fIsSwapped;
Int_t fHeaderSize;
void *fHeaderBegin;
Int_t fFirstEqIndex;
Int_t fLastEqIndex;
static const UInt_t fgkEventMagicNumber = 0xDA1E5AFE;
static const UInt_t fgkEventMagicNumberSwapped = 0xFE5A1EDA;
ClassDef(AliRawEventHeaderBase,4)
};
#define EVENT_HEADER_VERSION(AA,BB) AliRawEventHeaderV##AA##_##BB
#define INIT_HEADER_VARS
#define START_EVENT_HEADER(AA,BB) \
class AliRawEventHeaderV##AA##_##BB:public AliRawEventHeaderBase { \
public: \
AliRawEventHeaderV##AA##_##BB():AliRawEventHeaderBase(), \
INIT_HEADER_VARS {}; \
virtual ~AliRawEventHeaderV##AA##_##BB() {}; \
private:
#define END_EVENT_HEADER(AA,BB) \
ClassDef(AliRawEventHeaderV##AA##_##BB,1) \
};
#endif
AliRawEventHeaderBase.h:1 AliRawEventHeaderBase.h:2 AliRawEventHeaderBase.h:3 AliRawEventHeaderBase.h:4 AliRawEventHeaderBase.h:5 AliRawEventHeaderBase.h:6 AliRawEventHeaderBase.h:7 AliRawEventHeaderBase.h:8 AliRawEventHeaderBase.h:9 AliRawEventHeaderBase.h:10 AliRawEventHeaderBase.h:11 AliRawEventHeaderBase.h:12 AliRawEventHeaderBase.h:13 AliRawEventHeaderBase.h:14 AliRawEventHeaderBase.h:15 AliRawEventHeaderBase.h:16 AliRawEventHeaderBase.h:17 AliRawEventHeaderBase.h:18 AliRawEventHeaderBase.h:19 AliRawEventHeaderBase.h:20 AliRawEventHeaderBase.h:21 AliRawEventHeaderBase.h:22 AliRawEventHeaderBase.h:23 AliRawEventHeaderBase.h:24 AliRawEventHeaderBase.h:25 AliRawEventHeaderBase.h:26 AliRawEventHeaderBase.h:27 AliRawEventHeaderBase.h:28 AliRawEventHeaderBase.h:29 AliRawEventHeaderBase.h:30 AliRawEventHeaderBase.h:31 AliRawEventHeaderBase.h:32 AliRawEventHeaderBase.h:33 AliRawEventHeaderBase.h:34 AliRawEventHeaderBase.h:35 AliRawEventHeaderBase.h:36 AliRawEventHeaderBase.h:37 AliRawEventHeaderBase.h:38 AliRawEventHeaderBase.h:39 AliRawEventHeaderBase.h:40 AliRawEventHeaderBase.h:41 AliRawEventHeaderBase.h:42 AliRawEventHeaderBase.h:43 AliRawEventHeaderBase.h:44 AliRawEventHeaderBase.h:45 AliRawEventHeaderBase.h:46 AliRawEventHeaderBase.h:47 AliRawEventHeaderBase.h:48 AliRawEventHeaderBase.h:49 AliRawEventHeaderBase.h:50 AliRawEventHeaderBase.h:51 AliRawEventHeaderBase.h:52 AliRawEventHeaderBase.h:53 AliRawEventHeaderBase.h:54 AliRawEventHeaderBase.h:55 AliRawEventHeaderBase.h:56 AliRawEventHeaderBase.h:57 AliRawEventHeaderBase.h:58 AliRawEventHeaderBase.h:59 AliRawEventHeaderBase.h:60 AliRawEventHeaderBase.h:61 AliRawEventHeaderBase.h:62 AliRawEventHeaderBase.h:63 AliRawEventHeaderBase.h:64 AliRawEventHeaderBase.h:65 AliRawEventHeaderBase.h:66 AliRawEventHeaderBase.h:67 AliRawEventHeaderBase.h:68 AliRawEventHeaderBase.h:69 AliRawEventHeaderBase.h:70 AliRawEventHeaderBase.h:71 AliRawEventHeaderBase.h:72 AliRawEventHeaderBase.h:73 AliRawEventHeaderBase.h:74 AliRawEventHeaderBase.h:75 AliRawEventHeaderBase.h:76 AliRawEventHeaderBase.h:77 AliRawEventHeaderBase.h:78 AliRawEventHeaderBase.h:79 AliRawEventHeaderBase.h:80 AliRawEventHeaderBase.h:81 AliRawEventHeaderBase.h:82 AliRawEventHeaderBase.h:83 AliRawEventHeaderBase.h:84 AliRawEventHeaderBase.h:85 AliRawEventHeaderBase.h:86 AliRawEventHeaderBase.h:87 AliRawEventHeaderBase.h:88 AliRawEventHeaderBase.h:89 AliRawEventHeaderBase.h:90 AliRawEventHeaderBase.h:91 AliRawEventHeaderBase.h:92 AliRawEventHeaderBase.h:93 AliRawEventHeaderBase.h:94 AliRawEventHeaderBase.h:95 AliRawEventHeaderBase.h:96 AliRawEventHeaderBase.h:97 AliRawEventHeaderBase.h:98 AliRawEventHeaderBase.h:99 AliRawEventHeaderBase.h:100 AliRawEventHeaderBase.h:101 AliRawEventHeaderBase.h:102 AliRawEventHeaderBase.h:103 AliRawEventHeaderBase.h:104 AliRawEventHeaderBase.h:105 AliRawEventHeaderBase.h:106 AliRawEventHeaderBase.h:107 AliRawEventHeaderBase.h:108 AliRawEventHeaderBase.h:109 AliRawEventHeaderBase.h:110 AliRawEventHeaderBase.h:111 AliRawEventHeaderBase.h:112 AliRawEventHeaderBase.h:113 AliRawEventHeaderBase.h:114 AliRawEventHeaderBase.h:115 AliRawEventHeaderBase.h:116 AliRawEventHeaderBase.h:117 AliRawEventHeaderBase.h:118 AliRawEventHeaderBase.h:119 AliRawEventHeaderBase.h:120