#include <ROBFragment.h>
Inheritance diagram for eformat::old::ROBFragment:
Public Member Functions | |
ROBFragment (const uint32_t *it) | |
virtual | ~ROBFragment () |
virtual bool | check () const |
bool | check_tree () const |
uint32_t | lvl1_id () const |
uint32_t | bc_id () const |
uint32_t | lvl1_trigger_type () const |
uint32_t | detev_type () const |
eformat::old::RODFragment | rod (size_t n) const |
uint32_t | marker () const |
uint32_t | fragment_size_word () const |
uint32_t | header_size_word () const |
uint32_t | version () const |
uint32_t | source_id () const |
uint32_t | run_no () const |
uint32_t | nstatus () const |
const uint32_t * | status () const |
uint32_t | noffset () const |
const uint32_t * | offset (void) const |
uint32_t | nspecific () const |
const uint32_t * | specific_header (void) const |
const uint32_t * | child (size_t n) const |
Private Attributes | |
const uint32_t * | m_start |
my last word |
Definition at line 28 of file ROBFragment.h.
eformat::old::ROBFragment::ROBFragment | ( | const uint32_t * | it | ) |
To build a fragment given the containing buffer. I need to know where the fragment starts in order to do that.
it | The exact position where this fragment should start. |
Definition at line 18 of file ROBFragment24.cxx.
00019 : eformat::old::Header(it, eformat::ROB), 00020 m_start(specific_header()) 00021 { 00022 }
virtual eformat::old::ROBFragment::~ROBFragment | ( | ) | [inline, virtual] |
uint32_t eformat::old::ROBFragment::bc_id | ( | ) | const [inline] |
Returns the bunch crossing identifier
Definition at line 63 of file ROBFragment.h.
References m_start.
00063 { return m_start[1]; }
bool eformat::old::ROBFragment::check | ( | ) | const [virtual] |
Says if the the fragment is valid. This may throw exceptions.
Reimplemented from eformat::old::Header.
Definition at line 24 of file ROBFragment24.cxx.
References eformat::old::Header::check(), EFORMAT_SIZE_CHECK, and eformat::old::Header::nspecific().
Referenced by check_tree(), and rod().
00025 { 00026 eformat::old::Header::check(); //< first do a generic check 00027 if (nspecific() != 4) throw EFORMAT_SIZE_CHECK(4, nspecific()); 00028 return true; 00029 }
bool eformat::old::ROBFragment::check_tree | ( | ) | const |
Says if the the fragment is valid. This may throw exceptions.
Definition at line 31 of file ROBFragment24.cxx.
References eformat::old::RODFragment::check(), check(), eformat::old::Header::child(), eformat::old::Header::fragment_size_word(), eformat::old::Header::header_size_word(), genRecEmupikp::i, eformat::old::Header::noffset(), and eformat::old::Header::offset().
00032 { 00033 check(); // check myself 00034 for (size_t i=0; i<noffset(); ++i) { 00035 size_t rod_size = 0; 00036 //typical 00037 if (noffset() == 1) rod_size = fragment_size_word() - header_size_word(); 00038 else { //more atypical, have to calculate 00039 if (i != noffset() - 1) rod_size = (0xffffff & offset()[i+1]); 00040 else rod_size = fragment_size_word(); 00041 rod_size -= (0xffffff & offset()[i]); 00042 } 00043 eformat::old::RODFragment f(child(i), rod_size); 00044 f.check(); 00045 } 00046 return true; 00047 }
const uint32_t * eformat::old::Header::child | ( | size_t | n | ) | const [inherited] |
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
n | The fragment position, starting at zero, of the child fragment you would like to get. |
Definition at line 39 of file Header24.cxx.
References EFORMAT_NO_SUCH_CHILD, eformat::old::Header::m_start, eformat::old::Header::noffset(), and eformat::old::Header::offset().
Referenced by eformat::old::SubDetectorFragment::check_tree(), eformat::old::ROSFragment::check_tree(), check_tree(), eformat::old::FullEventFragment::check_tree(), eformat::old::convert(), and rod().
00040 { 00041 if (n >= noffset()) throw EFORMAT_NO_SUCH_CHILD(n, noffset()); 00042 return &m_start[0xffffff & offset()[n]]; 00043 }
uint32_t eformat::old::ROBFragment::detev_type | ( | ) | const [inline] |
Returns the detector event type
Definition at line 73 of file ROBFragment.h.
References m_start.
00073 { return m_start[3]; }
uint32_t eformat::old::Header::fragment_size_word | ( | ) | const [inline, inherited] |
Returns the size, in words, of the current fragment.
Definition at line 72 of file Header.h.
References eformat::old::Header::m_start.
Referenced by check_tree(), and rod().
00072 { return m_start[1]; }
uint32_t eformat::old::Header::header_size_word | ( | ) | const [inline, inherited] |
Returns the size, in words, of the current header. That does include the specific part of the header.
Definition at line 78 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::Header::check(), check_tree(), and rod().
00078 { return m_start[2]; }
uint32_t eformat::old::ROBFragment::lvl1_id | ( | ) | const [inline] |
Returns the lvl1 identifier
Definition at line 58 of file ROBFragment.h.
References m_start.
00058 { return m_start[0]; }
uint32_t eformat::old::ROBFragment::lvl1_trigger_type | ( | ) | const [inline] |
Returns the lvl1 trigger type
Definition at line 68 of file ROBFragment.h.
References m_start.
00068 { return m_start[2]; }
uint32_t eformat::old::Header::marker | ( | ) | const [inline, inherited] |
Returns the fragment type.
Definition at line 67 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::Header::Header().
00067 { return m_start[0]; }
uint32_t eformat::old::Header::noffset | ( | ) | const [inline, inherited] |
Returns the number of offset words available. This will also determine the number of child fragments available to this super-fragment.
Definition at line 110 of file Header.h.
References eformat::old::Header::m_start, and eformat::old::Header::nstatus().
Referenced by eformat::old::Header::check(), eformat::old::SubDetectorFragment::check_tree(), eformat::old::ROSFragment::check_tree(), check_tree(), eformat::old::FullEventFragment::check_tree(), eformat::old::Header::child(), eformat::old::convert(), eformat::old::Header::nspecific(), rod(), and eformat::old::Header::specific_header().
uint32_t eformat::old::Header::nspecific | ( | ) | const [inline, inherited] |
Returns the number of specific words available in the specific header part
Definition at line 123 of file Header.h.
References eformat::old::Header::m_start, eformat::old::Header::noffset(), and eformat::old::Header::nstatus().
Referenced by eformat::old::SubDetectorFragment::check(), eformat::old::ROSFragment::check(), check(), eformat::old::Header::check(), and eformat::old::FullEventFragment::check().
uint32_t eformat::old::Header::nstatus | ( | ) | const [inline, inherited] |
Returns the number of status words available
Definition at line 98 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::Header::check(), eformat::old::convert(), eformat::old::Header::noffset(), eformat::old::Header::nspecific(), eformat::old::Header::offset(), and eformat::old::Header::specific_header().
00098 { return m_start[6]; }
const uint32_t* eformat::old::Header::offset | ( | void | ) | const [inline, inherited] |
Returns the offset words, as an iterator to the offset words available.
Definition at line 116 of file Header.h.
References eformat::old::Header::m_start, and eformat::old::Header::nstatus().
Referenced by check_tree(), eformat::old::Header::child(), and rod().
eformat::old::RODFragment eformat::old::ROBFragment::rod | ( | size_t | n | ) | const |
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
n | The fragment position, starting at zero, of the child fragment you would like to get. |
Definition at line 49 of file ROBFragment24.cxx.
References eformat::old::RODFragment::check(), check(), eformat::old::Header::child(), eformat::old::Header::fragment_size_word(), eformat::old::Header::header_size_word(), eformat::old::Header::noffset(), and eformat::old::Header::offset().
00050 { 00051 check(); 00052 size_t rod_size = 0; 00053 //typical 00054 if (noffset() == 1) 00055 rod_size = fragment_size_word() - header_size_word(); 00056 else { //more atypical, have to calculate 00057 if (n != noffset() - 1) rod_size = (0xffffff & offset()[n+1]); 00058 else rod_size = fragment_size_word(); 00059 rod_size -= (0xffffff & offset()[n]); 00060 } 00061 eformat::old::RODFragment f(child(n), rod_size); 00062 f.check(); 00063 return f; 00064 }
uint32_t eformat::old::Header::run_no | ( | ) | const [inline, inherited] |
Returns the current run number.
Definition at line 93 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::convert().
00093 { return m_start[5]; }
uint32_t eformat::old::Header::source_id | ( | ) | const [inline, inherited] |
Returns the full source identifier.
Definition at line 88 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::convert().
00088 { return m_start[4]; }
const uint32_t* eformat::old::Header::specific_header | ( | void | ) | const [inline, inherited] |
Returns an iterator to the start of the specific header part (this includes the number of specific header fragments)
Definition at line 130 of file Header.h.
References eformat::old::Header::m_start, eformat::old::Header::noffset(), and eformat::old::Header::nstatus().
const uint32_t* eformat::old::Header::status | ( | ) | const [inline, inherited] |
Returns the status words, as an iterator to the status words available.
Definition at line 104 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::convert().
00104 { return &m_start[7]; }
uint32_t eformat::old::Header::version | ( | ) | const [inline, inherited] |
Returns the formatting version.
Definition at line 83 of file Header.h.
References eformat::old::Header::m_start.
Referenced by eformat::old::Header::check().
00083 { return m_start[3]; }
const uint32_t* eformat::old::ROBFragment::m_start [private] |
my last word
Reimplemented from eformat::old::Header.
Definition at line 86 of file ROBFragment.h.
Referenced by bc_id(), detev_type(), lvl1_id(), and lvl1_trigger_type().