eformat::old::ROBFragment Class Reference

#include <ROBFragment.h>

Inheritance diagram for eformat::old::ROBFragment:

eformat::old::Header List of all members.

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

Detailed Description

Describes how to access the contents of a subdetector fragment, as prescribed by the event format note.

Definition at line 28 of file ROBFragment.h.


Constructor & Destructor Documentation

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.

Parameters:
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]

Destructor virtualisation

Definition at line 43 of file ROBFragment.h.

00043 {}


Member Function Documentation

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.

Parameters:
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().

00110 { return m_start[7 + nstatus()]; }

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().

00124       { return m_start[8 + nstatus() + noffset()]; }

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().

00117       { return &m_start[8 + nstatus()]; }

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.

Parameters:
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().

00131       { return &m_start[9 + nstatus() + noffset()]; }

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]; }


Member Data Documentation

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().


Generated on Tue Nov 29 23:36:30 2016 for BOSS_7.0.2 by  doxygen 1.4.7