00001
00002
00003
00004
00005
00006
00007 #ifndef TMIDASEVENT_H
00008 #define TMIDASEVENT_H
00009
00010 #include "TMidasBanks.h"
00011
00012 class TMidasEvent {
00013 public:
00014 TMidasEvent();
00015 TMidasEvent(const TMidasEvent &);
00016 ~TMidasEvent();
00017 TMidasEvent & operator=(const TMidasEvent &);
00018 void Clear(const Char_t * = "");
00019 void Print(const Char_t * = "") const;
00020 Int_t FindBank(const Char_t *, ULong_t *, ULong_t *, void **) const;
00021 Int_t LocateBank(const Char_t *, void *) const;
00022 Int_t SwapBytes(Bool_t);
00023 Char_t * GetData() const;
00024 const Char_t * GetBankList(UShort_t &) const;
00025 Short_t GetEventId() const;
00026 Short_t GetTriggerMask() const;
00027 ULong_t GetSerialNumber() const;
00028 ULong_t GetTimeStamp() const;
00029 ULong_t GetDataSize() const;
00030 EventHeader_t * GetEventHeader();
00031 void AllocateData();
00032 void Set(Char_t *);
00033 void SetData(Char_t *);
00034 void SetEventId(Short_t);
00035 void SetTriggerMask(Short_t);
00036 void SetSerialNumber(ULong_t);
00037 void SetTimeStamp(ULong_t);
00038 void SetDataSize(ULong_t);
00039 Bool_t IsGoodSize() const;
00040 Bool_t IsTriggerMask(Short_t) const;
00041 void SwapBytesEventHeader();
00042
00045 enum EEventId {kEV_BOR = 0x8000, kEV_EOR = 0x8001, kEV_MESS = 0x8002};
00046
00047 private:
00048 Int_t IterateBank(void *, Bank_t **, void *) const;
00049 Int_t IterateBank32(void *, Bank32_t **, void *) const;
00050
00053 const Int_t fBankListMax;
00056 const Int_t fStringBankListMax;
00059 Char_t *fData;
00064 Bool_t fAllocated;
00067 EventHeader_t fEventHeader;
00068 };
00069
00070 inline void TMidasEvent::SetEventId(Short_t eventId)
00071 {
00075 fEventHeader.fEventId = eventId;
00076 }
00077
00078 inline void TMidasEvent::SetTriggerMask(Short_t triggerMask)
00079 {
00083 fEventHeader.fTriggerMask = triggerMask;
00084 }
00085
00086 inline void TMidasEvent::SetSerialNumber(ULong_t serialNumber)
00087 {
00091 fEventHeader.fSerialNumber = serialNumber;
00092 }
00093
00094 inline void TMidasEvent::SetTimeStamp(ULong_t timeStamp)
00095 {
00099 fEventHeader.fTimeStamp = timeStamp;
00100 }
00101
00102 inline void TMidasEvent::SetDataSize(ULong_t dataSize)
00103 {
00107 fEventHeader.fDataSize = dataSize;
00108 }
00109
00110 inline void TMidasEvent::SetData(Char_t *data)
00111 {
00116 fData = data;
00117 fAllocated = false;
00118 }
00119
00120 inline Short_t TMidasEvent::GetEventId() const
00121 {
00125 return fEventHeader.fEventId;
00126 }
00127
00128 inline Short_t TMidasEvent::GetTriggerMask() const
00129 {
00133 return fEventHeader.fTriggerMask;
00134 }
00135
00136 inline ULong_t TMidasEvent::GetSerialNumber() const
00137 {
00142 return fEventHeader.fSerialNumber;
00143 }
00144
00145 inline ULong_t TMidasEvent::GetTimeStamp() const
00146 {
00150 return fEventHeader.fTimeStamp;
00151 }
00152
00153 inline ULong_t TMidasEvent::GetDataSize() const
00154 {
00158 return fEventHeader.fDataSize;
00159 }
00160
00161 inline Char_t * TMidasEvent::GetData() const
00162 {
00166 return fData;
00167 }
00168
00169 inline EventHeader_t * TMidasEvent::GetEventHeader()
00170 {
00174 return &fEventHeader;
00175 }
00176
00177 inline Bool_t TMidasEvent::IsGoodSize() const
00178 {
00182 return fEventHeader.fDataSize > 0 || fEventHeader.fDataSize <= 1024 * 1024;
00183 }
00184
00185 inline Bool_t TMidasEvent::IsTriggerMask(Short_t triggerMask) const
00186 {
00192 return fEventHeader.fTriggerMask == triggerMask;
00193 }
00194
00195 #endif // TMidasEvent.h