00001
00002
00014 #ifndef EFORMAT_OLD_RODFRAGMENT_H
00015 #define EFORMAT_OLD_RODFRAGMENT_H
00016
00017 #include <stdint.h>
00018 #include <cstdlib>
00019
00020 namespace eformat {
00021
00022 namespace old {
00023
00032 class RODFragment {
00033
00034 public:
00035
00043 RODFragment (const uint32_t* it, size_t size_word);
00044
00048 virtual ~RODFragment() {}
00049
00053 virtual bool check () const;
00054
00058 inline uint32_t marker() const { return m_start[0]; }
00059
00063 uint32_t fragment_size_word() const;
00064
00069 inline uint32_t header_size_word() const { return m_start[1]; }
00070
00074 inline uint32_t trailer_size_word() const { return 3; }
00075
00079 inline uint32_t version() const { return m_start[2]; }
00080
00084 inline uint32_t source_id() const { return m_start[3]; }
00085
00089 inline uint32_t run_no() const { return m_start[4]; }
00090
00094 inline uint32_t lvl1_id() const { return m_start[5]; }
00095
00099 inline uint32_t bc_id() const { return m_start[6]; }
00100
00104 inline uint32_t lvl1_trigger_type() const { return m_start[7]; }
00105
00109 inline uint32_t detev_type() const { return m_start[8]; }
00110
00114 inline uint32_t nstatus () const { return m_start[m_size-3]; }
00115
00120 const uint32_t* status (void) const;
00121
00125 inline uint32_t ndata () const { return m_start[m_size-2]; }
00126
00130 const uint32_t* data (void) const;
00131
00137 inline uint32_t status_position () const { return m_start[m_size-1]; }
00138
00139 private:
00140
00141 const uint32_t* m_start;
00142 size_t m_size;
00143
00144 };
00145
00146 }
00147
00148 }
00149
00150 #endif