#include <ROBFragment.h>
Inheritance diagram for eformat::old::ROBFragment:
Public Member Functions | |
uint32_t | bc_id () const |
uint32_t | bc_id () const |
virtual bool | check () const |
virtual bool | check () const |
bool | check_tree () const |
bool | check_tree () const |
const uint32_t * | child (size_t n) const |
const uint32_t * | child (size_t n) const |
uint32_t | detev_type () const |
uint32_t | detev_type () const |
uint32_t | fragment_size_word () const |
uint32_t | fragment_size_word () const |
uint32_t | header_size_word () const |
uint32_t | header_size_word () const |
uint32_t | lvl1_id () const |
uint32_t | lvl1_id () const |
uint32_t | lvl1_trigger_type () const |
uint32_t | lvl1_trigger_type () const |
uint32_t | marker () const |
uint32_t | marker () const |
uint32_t | noffset () const |
uint32_t | noffset () const |
uint32_t | nspecific () const |
uint32_t | nspecific () const |
uint32_t | nstatus () const |
uint32_t | nstatus () const |
const uint32_t * | offset (void) const |
const uint32_t * | offset (void) const |
ROBFragment (const uint32_t *it) | |
ROBFragment (const uint32_t *it) | |
eformat::old::RODFragment | rod (size_t n) const |
eformat::old::RODFragment | rod (size_t n) const |
uint32_t | run_no () const |
uint32_t | run_no () const |
uint32_t | source_id () const |
uint32_t | source_id () const |
const uint32_t * | specific_header (void) const |
const uint32_t * | specific_header (void) const |
const uint32_t * | status () const |
const uint32_t * | status () const |
uint32_t | version () const |
uint32_t | version () const |
virtual | ~ROBFragment () |
virtual | ~ROBFragment () |
Private Attributes | |
const uint32_t * | m_start |
my last word | |
const uint32_t * | m_start |
my last word |
|
To build a fragment given the containing buffer. I need to know where the fragment starts in order to do that.
00019 : eformat::old::Header(it, eformat::ROB), 00020 m_start(specific_header()) 00021 { 00022 }
|
|
Destructor virtualisation 00043 {}
|
|
To build a fragment given the containing buffer. I need to know where the fragment starts in order to do that.
|
|
Destructor virtualisation 00043 {}
|
|
Returns the bunch crossing identifier 00063 { return m_start[1]; }
|
|
Returns the bunch crossing identifier 00063 { return m_start[1]; }
|
|
Says if the the fragment is valid. This may throw exceptions. Reimplemented from eformat::old::Header. |
|
Says if the the fragment is valid. This may throw exceptions. Reimplemented from eformat::old::Header. 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 }
|
|
Says if the the fragment is valid. This may throw exceptions. |
|
Says if the the fragment is valid. This may throw exceptions. 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 }
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
00040 { 00041 if (n >= noffset()) throw EFORMAT_NO_SUCH_CHILD(n, noffset()); 00042 return &m_start[0xffffff & offset()[n]]; 00043 }
|
|
Returns the detector event type 00073 { return m_start[3]; }
|
|
Returns the detector event type 00073 { return m_start[3]; }
|
|
Returns the size, in words, of the current fragment. 00072 { return m_start[1]; }
|
|
Returns the size, in words, of the current fragment. 00072 { return m_start[1]; }
|
|
Returns the size, in words, of the current header. That does include the specific part of the header. 00078 { return m_start[2]; }
|
|
Returns the size, in words, of the current header. That does include the specific part of the header. 00078 { return m_start[2]; }
|
|
Returns the lvl1 identifier 00058 { return m_start[0]; }
|
|
Returns the lvl1 identifier 00058 { return m_start[0]; }
|
|
Returns the lvl1 trigger type 00068 { return m_start[2]; }
|
|
Returns the lvl1 trigger type 00068 { return m_start[2]; }
|
|
Returns the fragment type. 00067 { return m_start[0]; }
|
|
Returns the fragment type. 00067 { return m_start[0]; }
|
|
Returns the number of offset words available. This will also determine the number of child fragments available to this super-fragment.
|
|
Returns the number of offset words available. This will also determine the number of child fragments available to this super-fragment.
|
|
Returns the number of specific words available in the specific header part
|
|
Returns the number of specific words available in the specific header part
|
|
Returns the number of status words available 00098 { return m_start[6]; }
|
|
Returns the number of status words available 00098 { return m_start[6]; }
|
|
Returns the offset words, as an iterator to the offset words available.
|
|
Returns the offset words, as an iterator to the offset words available.
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
|
|
Returns the nth child fragment. If the nth fragment doesn't exist, an exception is thrown.
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 }
|
|
Returns the current run number. 00093 { return m_start[5]; }
|
|
Returns the current run number. 00093 { return m_start[5]; }
|
|
Returns the full source identifier. 00088 { return m_start[4]; }
|
|
Returns the full source identifier. 00088 { return m_start[4]; }
|
|
Returns an iterator to the start of the specific header part (this includes the number of specific header fragments)
|
|
Returns an iterator to the start of the specific header part (this includes the number of specific header fragments)
|
|
Returns the status words, as an iterator to the status words available. 00104 { return &m_start[7]; }
|
|
Returns the status words, as an iterator to the status words available. 00104 { return &m_start[7]; }
|
|
Returns the formatting version. 00083 { return m_start[3]; }
|
|
Returns the formatting version. 00083 { return m_start[3]; }
|
|
my last word
Reimplemented from eformat::old::Header. |
|
my last word
Reimplemented from eformat::old::Header. |