ATLAS Offline Software
Loading...
Searching...
No Matches
offline_eformat::v40::FullEventFragment Class Reference

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

#include <v40_FullEventFragment.h>

Inheritance diagram for offline_eformat::v40::FullEventFragment:
Collaboration diagram for offline_eformat::v40::FullEventFragment:

Public Member Functions

 FullEventFragment (const uint32_t *it)
 To build a fragment given the containing buffer.
 FullEventFragment ()
 Builds an empty, otherwise useless FullEventFragment.
 FullEventFragment (const FullEventFragment &other)
 Copy constructor.
 FullEventFragment (const eformat::helper::u32list &blob)
 Constructor that only works with T=<real pointer>.
 FullEventFragment (const eformat::helper::u32slice &blob)
 Constructor that only works with T=<real pointer>.
virtual ~FullEventFragment ()
 Destructor virtualisation.
FullEventFragmentoperator= (const FullEventFragment &other)
 Copy operator.
FullEventFragmentassign (const uint32_t *it)
 Manual re-assignment.
bool check_impl (const uint16_t version=eformat::MAJOR_V40_VERSION, bool exc=true) const
 Says if the the fragment is valid.
bool check (const uint16_t version=eformat::MAJOR_V40_VERSION) const
 Says if the the fragment is valid.
bool check_noex (const uint16_t version=eformat::MAJOR_V40_VERSION) const
 Says if the the fragment is valid.
bool check_tree_impl (const uint16_t version=eformat::MAJOR_V40_VERSION, const uint16_t rod_version=eformat::MAJOR_V31_VERSION, const bool exc=true) const
 Says if the Fragment and all children are valid.
bool check_tree (const uint16_t version=eformat::MAJOR_V40_VERSION, const uint16_t rod_version=eformat::MAJOR_V31_VERSION) const
 Says if the Fragment and all children are valid.
bool check_tree_noex (const uint16_t version=eformat::MAJOR_V40_VERSION, const uint16_t rod_version=eformat::MAJOR_V31_VERSION) const
 Says if the Fragment, all children and all RODs are valid, without throwing exceptions.
void problems (std::vector< eformat::FragmentProblem > &p, const uint16_t version=eformat::MAJOR_V40_VERSION) const
 Tells which problems the current fragment has.
void problems_tree (std::vector< eformat::helper::ProblemContainer > &p, const uint16_t version=eformat::MAJOR_V40_VERSION, const uint16_t rod_version=eformat::MAJOR_V31_VERSION) const
 Tells which problems the current fragment and all the children have.
void robs (std::vector< ROBFragment > &robs) const
 Retrieves a vector of all ROBs from this fragment.
void robs (std::vector< ROBFragment > &good, std::vector< ROBFragment > &bad, const uint16_t version=eformat::MAJOR_V40_VERSION, const uint16_t rod_version=eformat::MAJOR_V31_VERSION) const
 Retrieves vectors of good and bad ROBs from this fragment, separated.
uint32_t bc_time_seconds () const
 Returns amount of seconds since the (unix) origin, for the bunch crossing time.
uint32_t bc_time_nanoseconds () const
 Returns amount of nanoseconds aditionally to the amount of seconds returned by bc_time_seconds, for the bunch crossing time.
uint32_t global_id () const
 Returns the global identifier.
uint32_t run_type () const
 Returns the run type.
uint32_t run_no () const
 Returns the run number.
uint16_t lumi_block () const
 Returns the luminosity block number.
uint32_t lvl1_id () const
 Returns the lvl1 identifier.
uint16_t bc_id () const
 Returns the bunch crossing identifier.
uint8_t lvl1_trigger_type () const
 Returns the lvl1 trigger type.
uint32_t nlvl1_trigger_info () const
 Returns the number of lvl1 trigger info words.
const uint32_t * lvl1_trigger_info () const
 Returns an iterator to the first of the LVL1 trigger info words.
void lvl1_trigger_info (const uint32_t *&it) const
uint32_t nlvl2_trigger_info () const
 Returns the number of lvl2 trigger info words.
const uint32_t * lvl2_trigger_info () const
 Returns an iterator to the first of the LVL2 trigger info words.
void lvl2_trigger_info (const uint32_t *&it) const
uint32_t nevent_filter_info () const
 Returns the number of Event Filter words.
const uint32_t * event_filter_info () const
 Returns an iterator to the first of the EF info words.
void event_filter_info (const uint32_t *&it) const
uint32_t nstream_tag () const
 Returns the number of stream tag words.
const uint32_t * stream_tag () const
 Returns an iterator to the first of the stream tag words.
void stream_tag (const uint32_t *&it) const
virtual uint32_t nchildren () const
 Returns the number of children available.
const uint32_t * child (size_t n) const
 Returns the nth child fragment.
virtual void child (const uint32_t *&p, size_t n) const
const uint32_t * child_check (size_t n) const
 Returns the nth child fragment.
virtual void child_check (const uint32_t *&p, size_t n) const
virtual uint32_t children (const uint32_t **p, size_t max) const
 Returns all the children of this fragment.
void throws (bool b)
 If you set this parameter, objects of this type will throw exceptions.
bool throws () const
 Says if we are supposed to throw exceptions or not.
uint32_t marker () const
 Returns the fragment type.
uint32_t fragment_size_word () const
 Returns the size, in words, of the current fragment.
uint32_t header_size_word () const
 Returns the size, in words, of the current header.
uint32_t version () const
 Returns the formatting version.
uint32_t source_id () const
 Returns the full source identifier.
uint32_t nstatus () const
 Returns the number of status words available.
const uint32_t * start () const
 Sets the pointer to my start.
void start (const uint32_t *&it) const
const uint32_t * payload () const
 Sets the pointer to where the payload starts.
void payload (const uint32_t *&it) const
const uint32_t * end () const
 Sets the pointer to one-past my end position.
void end (const uint32_t *&it) const
uint32_t payload_size_word (void) const
 Returns the payload size.
const uint32_t * status () const
 Returns the status words, as an iterator to the status words available.
void status (const uint32_t *&it) const
uint32_t checksum_type () const
 Returns the check-sum type entry.
uint32_t nspecific () const
 Returns the number of specific words available in the specific header part.
const uint32_t * specific_header () const
 Returns an iterator to the start of the specific header part.
void specific_header (const uint32_t *&it) const
uint32_t checksum_value (void) const
 Access the check sum value of this fragment, if any.
uint32_t eval_checksum (void) const
 Evaluates the current (supposed) checksum for this fragment, taking into consideration the current setting for the checksum type.
bool checksum (void) const
 This will actually re-calculate the checksum and verify that the payload of the current fragment matches that.

Private Attributes

const uint32_t * m_start
 my start word
const uint32_t * m_top
 < representation

Detailed Description

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

Definition at line 35 of file v40_FullEventFragment.h.

Constructor & Destructor Documentation

◆ FullEventFragment() [1/5]

offline_eformat::v40::FullEventFragment::FullEventFragment ( 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
itThe exact position where this fragment should start.

Definition at line 17 of file v40_FullEventFragment.cxx.

18 : Header(it),
19 m_start()
20{
22}
const uint32_t * specific_header() const
Returns an iterator to the start of the specific header part.
Header()
Builds an empty, otherwise useless Header.

◆ FullEventFragment() [2/5]

offline_eformat::v40::FullEventFragment::FullEventFragment ( )

Builds an empty, otherwise useless FullEventFragment.

Definition at line 24 of file v40_FullEventFragment.cxx.

25 : Header(), m_start()
26{
27}

◆ FullEventFragment() [3/5]

offline_eformat::v40::FullEventFragment::FullEventFragment ( const FullEventFragment & other)

Copy constructor.

Parameters
otherThe fragment to be copied

Definition at line 29 of file v40_FullEventFragment.cxx.

31 : Header(other), m_start(other.m_start)
32{
33}

◆ FullEventFragment() [4/5]

offline_eformat::v40::FullEventFragment::FullEventFragment ( const eformat::helper::u32list & blob)

Constructor that only works with T=<real pointer>.

This constructor is pretty much like the one with the pointer, but it will fetch the pointer from the u32 blob. It is only used in the python bindings.

Parameters
blobThe blob which contains the block of data this fragment is in.

Definition at line 35 of file v40_FullEventFragment.cxx.

◆ FullEventFragment() [5/5]

offline_eformat::v40::FullEventFragment::FullEventFragment ( const eformat::helper::u32slice & blob)

Constructor that only works with T=<real pointer>.

This constructor is pretty much like the one with the pointer, but it will fetch the pointer from the u32 blob. It is only used in the python bindings.

Parameters
blobThe blob which contains the block of data this fragment is in.

Definition at line 43 of file v40_FullEventFragment.cxx.

45 : Header(blob.ptr()),
46 m_start()
47{
49}

◆ ~FullEventFragment()

offline_eformat::v40::FullEventFragment::~FullEventFragment ( )
virtual

Destructor virtualisation.

Definition at line 51 of file v40_FullEventFragment.cxx.

52{
53}

Member Function Documentation

◆ assign()

offline_eformat::v40::FullEventFragment & offline_eformat::v40::FullEventFragment::assign ( const uint32_t * it)

Manual re-assignment.

Parameters
itThe position pointing the first word of this fragment

Definition at line 65 of file v40_FullEventFragment.cxx.

67{
70 return *this;
71}
Header & assign(const uint32_t *it)
Reassign this header.

◆ bc_id()

uint16_t offline_eformat::v40::FullEventFragment::bc_id ( ) const

Returns the bunch crossing identifier.

Definition at line 330 of file v40_FullEventFragment.cxx.

331{
332 return m_start[7];
333}

◆ bc_time_nanoseconds()

uint32_t offline_eformat::v40::FullEventFragment::bc_time_nanoseconds ( ) const

Returns amount of nanoseconds aditionally to the amount of seconds returned by bc_time_seconds, for the bunch crossing time.

Definition at line 300 of file v40_FullEventFragment.cxx.

301{
302 return m_start[1];
303}

◆ bc_time_seconds()

uint32_t offline_eformat::v40::FullEventFragment::bc_time_seconds ( ) const

Returns amount of seconds since the (unix) origin, for the bunch crossing time.

Definition at line 295 of file v40_FullEventFragment.cxx.

296{
297 return m_start[0];
298}

◆ check()

bool offline_eformat::v40::FullEventFragment::check ( const uint16_t version = eformat::MAJOR_V40_VERSION) const

Says if the the fragment is valid.

This method throw exceptions.

Definition at line 135 of file v40_FullEventFragment.cxx.

136{
137 return this->check_impl(version, true);
138}
bool check_impl(const uint16_t version=eformat::MAJOR_V40_VERSION, bool exc=true) const
Says if the the fragment is valid.
uint32_t version() const
Returns the formatting version.

◆ check_impl()

bool offline_eformat::v40::FullEventFragment::check_impl ( const uint16_t version = eformat::MAJOR_V40_VERSION,
bool exc = true ) const

Says if the the fragment is valid.

You can control the exception behaviour.

Definition at line 96 of file v40_FullEventFragment.cxx.

100{
101
102 bool result = true;
103
104 //Fragment checking, only this header
105 try{
106 if (Header::marker() != eformat::FULL_EVENT) {
107 throw EFORMAT_WRONG_MARKER(marker(), eformat::FULL_EVENT);
108 }
109
110 if (Header::version() >> 16 != version) {
111 throw EFORMAT_BAD_VERSION(Header::version() >> 16, version);
112 }
113
114 uint32_t calculated = 20 + Header::nstatus() +
116 nstream_tag();
117 if (Header::header_size_word() != calculated) {
118 throw EFORMAT_SIZE_CHECK(calculated, Header::header_size_word());
119 }
120 }catch(eformat::WrongMarkerIssue &ex){
121 if(exc) throw ex;
122 result = false;
123 }catch(eformat::BadVersionIssue &ex){
124 if(exc) throw ex;
125 result = false;
126 }catch(eformat::SizeCheckIssue &ex){
127 if(exc) throw ex;
128 result = false;
129 }
130
131 return result;
132}
uint32_t nevent_filter_info() const
Returns the number of Event Filter words.
uint32_t nstream_tag() const
Returns the number of stream tag words.
uint32_t nlvl1_trigger_info() const
Returns the number of lvl1 trigger info words.
uint32_t nlvl2_trigger_info() const
Returns the number of lvl2 trigger info words.
uint32_t marker() const
Returns the fragment type.
uint32_t nstatus() const
Returns the number of status words available.
uint32_t header_size_word() const
Returns the size, in words, of the current header.
setEventNumber uint32_t

◆ check_noex()

bool offline_eformat::v40::FullEventFragment::check_noex ( const uint16_t version = eformat::MAJOR_V40_VERSION) const

Says if the the fragment is valid.

This does NOT throw exceptions.

Definition at line 140 of file v40_FullEventFragment.cxx.

141{
142 return this->check_impl(version, false);
143}

◆ check_tree()

bool offline_eformat::v40::FullEventFragment::check_tree ( const uint16_t version = eformat::MAJOR_V40_VERSION,
const uint16_t rod_version = eformat::MAJOR_V31_VERSION ) const

Says if the Fragment and all children are valid.

This throws exceptions.

Definition at line 186 of file v40_FullEventFragment.cxx.

189{
190 return this->check_tree_impl(version, rod_version, true);
191}
bool check_tree_impl(const uint16_t version=eformat::MAJOR_V40_VERSION, const uint16_t rod_version=eformat::MAJOR_V31_VERSION, const bool exc=true) const
Says if the Fragment and all children are valid.

◆ check_tree_impl()

bool offline_eformat::v40::FullEventFragment::check_tree_impl ( const uint16_t version = eformat::MAJOR_V40_VERSION,
const uint16_t rod_version = eformat::MAJOR_V31_VERSION,
const bool exc = true ) const

Says if the Fragment and all children are valid.

You can control the exception behaviour.

Definition at line 146 of file v40_FullEventFragment.cxx.

149{
150
151 if (!check_impl(version, exc)) return false; // check myself
152 uint32_t total = nchildren();
153 for (size_t i=0; i<total; ++i) {
154 const uint32_t* fp;
155 child(fp, i);
156 ROBFragment f(fp);
157 bool rob_check;
158 try{
159 rob_check = f.check(version, rod_version);
160 }catch(eformat::RODSizeCheckIssue &ex){
161 //In case of a truncated ROD fragment, we ignore and continue
162 //Anyway the ROB is good, hence we can safely navigate the event
163 continue;
164 }catch(eformat::WrongMarkerIssue &ex){
165 if(exc) throw ex;
166 rob_check = false;
167 }catch(eformat::BadVersionIssue &ex){
168 if(exc) throw ex;
169 rob_check = false;
170 }catch(eformat::SizeCheckIssue &ex){
171 if(exc) throw ex;
172 rob_check = false;
173 }catch(eformat::BadRodVersionIssue &ex){
174 if(exc) throw ex;
175 rob_check = false;
176 }catch(eformat::Issue &ex){
177 if(exc) throw ex;
178 rob_check = false;
179 }
180
181 if (!rob_check) return false;
182 }
183 return true;
184}
eformat::ROBFragment< PointerType > ROBFragment
Definition RawEvent.h:27
const uint32_t * child(size_t n) const
Returns the nth child fragment.
virtual uint32_t nchildren() const
Returns the number of children available.

◆ check_tree_noex()

bool offline_eformat::v40::FullEventFragment::check_tree_noex ( const uint16_t version = eformat::MAJOR_V40_VERSION,
const uint16_t rod_version = eformat::MAJOR_V31_VERSION ) const

Says if the Fragment, all children and all RODs are valid, without throwing exceptions.

Definition at line 193 of file v40_FullEventFragment.cxx.

196{
197 return this->check_tree_impl(version, rod_version, false);
198}

◆ checksum()

bool offline_eformat::v40::Header::checksum ( void ) const
inherited

This will actually re-calculate the checksum and verify that the payload of the current fragment matches that.

Only works with contiguous memory templates.

Definition at line 128 of file v40_Header.cxx.

129{
130 return (eval_checksum() == checksum_value());
131}
uint32_t eval_checksum(void) const
Evaluates the current (supposed) checksum for this fragment, taking into consideration the current se...
uint32_t checksum_value(void) const
Access the check sum value of this fragment, if any.

◆ checksum_type()

uint32_t offline_eformat::v40::Header::checksum_type ( ) const
inherited

Returns the check-sum type entry.

Definition at line 97 of file v40_Header.cxx.

98{
99 return m_top[6 + nstatus()];
100}
const uint32_t * m_top
< representation
Definition v40_Header.h:203

◆ checksum_value()

uint32_t offline_eformat::v40::Header::checksum_value ( void ) const
inherited

Access the check sum value of this fragment, if any.

Understand that if, checksum_type() resolves to eformat::NO_CHECKSUM, the returned value will have no meaning.

Definition at line 112 of file v40_Header.cxx.

113{
114 return (checksum_type()?m_top[fragment_size_word()-1]:0);
115}
uint32_t checksum_type() const
Returns the check-sum type entry.
uint32_t fragment_size_word() const
Returns the size, in words, of the current fragment.

◆ child() [1/2]

virtual void offline_eformat::v40::FullEventFragment::child ( const uint32_t *& p,
size_t n ) const
inlinevirtual

Definition at line 281 of file v40_FullEventFragment.h.

◆ child() [2/2]

const uint32_t * offline_eformat::v40::FullEventFragment::child ( size_t n) const

Returns the nth child fragment.

If the nth fragment doesn't exist, the behaviour is undefined.

Parameters
pA preallocated pointer you should provide.
nThe fragment position, starting at zero, of the child fragment you would like to get.

Definition at line 274 of file v40_FullEventFragment.cxx.

275{
276 const uint32_t* next = Header::payload();
277 for (size_t i=0; i<n; ++i) next += next[1];
278 return next;
279}
const uint32_t * payload() const
Sets the pointer to where the payload starts.

◆ child_check() [1/2]

virtual void offline_eformat::v40::FullEventFragment::child_check ( const uint32_t *& p,
size_t n ) const
inlinevirtual

Definition at line 296 of file v40_FullEventFragment.h.

297 { p = child_check(n); } //legacy
const uint32_t * child_check(size_t n) const
Returns the nth child fragment.

◆ child_check() [2/2]

const uint32_t * offline_eformat::v40::FullEventFragment::child_check ( size_t n) const

Returns the nth child fragment.

If the nth fragment doesn't exist, an exception is thrown.

Warning
Use this method with care, it is slower than the equivalent method that doesn't check.
Parameters
pA preallocated pointer you should provide.
nThe fragment position, starting at zero, of the child fragment you would like to get.

Definition at line 281 of file v40_FullEventFragment.cxx.

282{
283 uint32_t total = nchildren();
284 if (n >= total) throw EFORMAT_NO_SUCH_CHILD(n, total);
285 return child(n);
286}

◆ children()

uint32_t offline_eformat::v40::FullEventFragment::children ( const uint32_t ** p,
size_t max ) const
virtual

Returns all the children of this fragment.

The input to this method is a valid set of iterators to existing, pre-allocated pointers

Parameters
pA pointer to a set of preallocated const uint32_t*'s to set to the position of the children of this fragment.
maxThe maximum number of children, p can point to.
Returns
The number of children found on this fragment

Definition at line 288 of file v40_FullEventFragment.cxx.

289{
290 const uint32_t* payload_start;
291 Header::payload(payload_start);
292 return find_fragments(child_marker(static_cast<eformat::HeaderMarker>(Header::marker())), payload_start, Header::payload_size_word(), p, max);
293}
#define max(a, b)
Definition cfImp.cxx:41
uint32_t payload_size_word(void) const
Returns the payload size.

◆ end() [1/2]

const uint32_t * offline_eformat::v40::Header::end ( ) const
inherited

Sets the pointer to one-past my end position.

Parameters
itThe pointer to set

Definition at line 82 of file v40_Header.cxx.

83{
84 return m_top + fragment_size_word();
85}

◆ end() [2/2]

void offline_eformat::v40::Header::end ( const uint32_t *& it) const
inlineinherited

Definition at line 144 of file v40_Header.h.

144{ it = end(); } //legacy
const uint32_t * end() const
Sets the pointer to one-past my end position.

◆ eval_checksum()

uint32_t offline_eformat::v40::Header::eval_checksum ( void ) const
inherited

Evaluates the current (supposed) checksum for this fragment, taking into consideration the current setting for the checksum type.

Please note this value may be different from the actual checksum_value() if for any reason the fragment is corrupted.

Definition at line 123 of file v40_Header.cxx.

124{
125 return eformat::helper::checksum(checksum_type(), payload(), payload_size_word());
126}

◆ event_filter_info() [1/2]

const uint32_t * offline_eformat::v40::FullEventFragment::event_filter_info ( ) const

Returns an iterator to the first of the EF info words.

Parameters
itAn updateable iterator you should provide.

Definition at line 83 of file v40_FullEventFragment.cxx.

84{
86}

◆ event_filter_info() [2/2]

void offline_eformat::v40::FullEventFragment::event_filter_info ( const uint32_t *& it) const
inline

Definition at line 250 of file v40_FullEventFragment.h.

251 { it = event_filter_info(); }
const uint32_t * event_filter_info() const
Returns an iterator to the first of the EF info words.

◆ fragment_size_word()

uint32_t offline_eformat::v40::Header::fragment_size_word ( ) const
inherited

Returns the size, in words, of the current fragment.

Definition at line 47 of file v40_Header.cxx.

48{
49 return m_top[1];
50}

◆ global_id()

uint32_t offline_eformat::v40::FullEventFragment::global_id ( ) const

Returns the global identifier.

Definition at line 305 of file v40_FullEventFragment.cxx.

306{
307 return m_start[2];
308}

◆ header_size_word()

uint32_t offline_eformat::v40::Header::header_size_word ( ) const
inherited

Returns the size, in words, of the current header.

That does include the specific part of the header.

Definition at line 52 of file v40_Header.cxx.

53{
54 return m_top[2];
55}

◆ lumi_block()

uint16_t offline_eformat::v40::FullEventFragment::lumi_block ( ) const

Returns the luminosity block number.

Definition at line 320 of file v40_FullEventFragment.cxx.

321{
322 return m_start[5];
323}

◆ lvl1_id()

uint32_t offline_eformat::v40::FullEventFragment::lvl1_id ( ) const

Returns the lvl1 identifier.

Definition at line 325 of file v40_FullEventFragment.cxx.

326{
327 return m_start[6];
328}

◆ lvl1_trigger_info() [1/2]

const uint32_t * offline_eformat::v40::FullEventFragment::lvl1_trigger_info ( ) const

Returns an iterator to the first of the LVL1 trigger info words.

Parameters
itAn updateable iterator you should provide.

Definition at line 73 of file v40_FullEventFragment.cxx.

74{
75 return m_start + 10;
76}

◆ lvl1_trigger_info() [2/2]

void offline_eformat::v40::FullEventFragment::lvl1_trigger_info ( const uint32_t *& it) const
inline

Definition at line 222 of file v40_FullEventFragment.h.

223 { it = lvl1_trigger_info(); }
const uint32_t * lvl1_trigger_info() const
Returns an iterator to the first of the LVL1 trigger info words.

◆ lvl1_trigger_type()

uint8_t offline_eformat::v40::FullEventFragment::lvl1_trigger_type ( ) const

Returns the lvl1 trigger type.

Definition at line 335 of file v40_FullEventFragment.cxx.

336{
337 return m_start[8];
338}

◆ lvl2_trigger_info() [1/2]

const uint32_t * offline_eformat::v40::FullEventFragment::lvl2_trigger_info ( ) const

Returns an iterator to the first of the LVL2 trigger info words.

Parameters
itAn updateable iterator you should provide.

Definition at line 78 of file v40_FullEventFragment.cxx.

79{
80 return m_start + 11 + nlvl1_trigger_info();
81}

◆ lvl2_trigger_info() [2/2]

void offline_eformat::v40::FullEventFragment::lvl2_trigger_info ( const uint32_t *& it) const
inline

Definition at line 236 of file v40_FullEventFragment.h.

237 { it = lvl2_trigger_info(); }
const uint32_t * lvl2_trigger_info() const
Returns an iterator to the first of the LVL2 trigger info words.

◆ marker()

uint32_t offline_eformat::v40::Header::marker ( ) const
inherited

Returns the fragment type.

Definition at line 42 of file v40_Header.cxx.

43{
44 return m_top[0];
45}

◆ nchildren()

uint32_t offline_eformat::v40::FullEventFragment::nchildren ( ) const
virtual

Returns the number of children available.

Definition at line 269 of file v40_FullEventFragment.cxx.

270{
271 return children(0,0);
272}
virtual uint32_t children(const uint32_t **p, size_t max) const
Returns all the children of this fragment.

◆ nevent_filter_info()

uint32_t offline_eformat::v40::FullEventFragment::nevent_filter_info ( ) const

Returns the number of Event Filter words.

Definition at line 350 of file v40_FullEventFragment.cxx.

351{
353}

◆ nlvl1_trigger_info()

uint32_t offline_eformat::v40::FullEventFragment::nlvl1_trigger_info ( ) const

Returns the number of lvl1 trigger info words.

Definition at line 340 of file v40_FullEventFragment.cxx.

341{
342 return m_start[9];
343}

◆ nlvl2_trigger_info()

uint32_t offline_eformat::v40::FullEventFragment::nlvl2_trigger_info ( ) const

Returns the number of lvl2 trigger info words.

Definition at line 345 of file v40_FullEventFragment.cxx.

346{
347 return m_start[10+nlvl1_trigger_info()];
348}

◆ nspecific()

uint32_t offline_eformat::v40::Header::nspecific ( ) const
inherited

Returns the number of specific words available in the specific header part.

Definition at line 102 of file v40_Header.cxx.

103{
104 return header_size_word() - ( 7 + nstatus() );
105}

◆ nstatus()

uint32_t offline_eformat::v40::Header::nstatus ( ) const
inherited

Returns the number of status words available.

Definition at line 67 of file v40_Header.cxx.

68{
69 return m_top[5];
70}

◆ nstream_tag()

uint32_t offline_eformat::v40::FullEventFragment::nstream_tag ( ) const

Returns the number of stream tag words.

Definition at line 355 of file v40_FullEventFragment.cxx.

356{
357 return m_start[12+nlvl1_trigger_info() +
359}

◆ operator=()

offline_eformat::v40::FullEventFragment & offline_eformat::v40::FullEventFragment::operator= ( const FullEventFragment & other)

Copy operator.

Parameters
otherThe fragment to be copied

Definition at line 55 of file v40_FullEventFragment.cxx.

57{
58 if (this != &other) {
59 Header::operator=(other);
60 m_start=other.m_start;
61 }
62 return *this;
63}
Header & operator=(const Header &other)
Assigment operator.

◆ payload() [1/2]

const uint32_t * offline_eformat::v40::Header::payload ( ) const
inherited

Sets the pointer to where the payload starts.

Parameters
itThe pointer to set

Definition at line 77 of file v40_Header.cxx.

78{
79 return m_top + header_size_word();
80}

◆ payload() [2/2]

void offline_eformat::v40::Header::payload ( const uint32_t *& it) const
inlineinherited

Definition at line 136 of file v40_Header.h.

136{ it = payload(); } //legacy

◆ payload_size_word()

uint32_t offline_eformat::v40::Header::payload_size_word ( void ) const
inherited

Returns the payload size.

Definition at line 87 of file v40_Header.cxx.

88{
89 return fragment_size_word() - (header_size_word() + (checksum_type()?1:0));
90}

◆ problems()

void offline_eformat::v40::FullEventFragment::problems ( std::vector< eformat::FragmentProblem > & p,
const uint16_t version = eformat::MAJOR_V40_VERSION ) const

Tells which problems the current fragment has.

Definition at line 200 of file v40_FullEventFragment.cxx.

201 {
202 //Fragment checking, only this header
203 if (Header::marker() != eformat::FULL_EVENT)
204 p.push_back(eformat::WRONG_MARKER);
205 if ( Header::version() >> 16 != version )
206 p.push_back(eformat::UNSUPPORTED_VERSION);
207 uint32_t calculated = 20 + Header::nstatus() +
209 nstream_tag();
210 if (Header::header_size_word() != calculated)
211 p.push_back(eformat::WRONG_FRAGMENT_SIZE);
212}

◆ problems_tree()

void offline_eformat::v40::FullEventFragment::problems_tree ( std::vector< eformat::helper::ProblemContainer > & p,
const uint16_t version = eformat::MAJOR_V40_VERSION,
const uint16_t rod_version = eformat::MAJOR_V31_VERSION ) const

Tells which problems the current fragment and all the children have.

Definition at line 215 of file v40_FullEventFragment.cxx.

220{
221 std::vector<eformat::FragmentProblem> tmp;
222 this->problems(tmp, version);
223
224 if (!tmp.empty()){
225 eformat::helper::ProblemContainer pc(this->source_id(), tmp);
226 p.push_back(pc);
227 return;
228 }
229
230 uint32_t total = this->nchildren();
231 for (size_t i=0; i<total; ++i) {
232 const uint32_t* fp;
233 child(fp, i);
234 ROBFragment f(fp);
235 std::vector<eformat::FragmentProblem> tmp;
236 f.problems(tmp, version, rod_version);
237 eformat::helper::ProblemContainer pc(f.source_id(), tmp);
238 p.push_back(pc);
239 }
240}
void problems(std::vector< eformat::FragmentProblem > &p, const uint16_t version=eformat::MAJOR_V40_VERSION) const
Tells which problems the current fragment has.
uint32_t source_id() const
Returns the full source identifier.

◆ robs() [1/2]

void offline_eformat::v40::FullEventFragment::robs ( std::vector< ROBFragment > & good,
std::vector< ROBFragment > & bad,
const uint16_t version = eformat::MAJOR_V40_VERSION,
const uint16_t rod_version = eformat::MAJOR_V31_VERSION ) const

Retrieves vectors of good and bad ROBs from this fragment, separated.

Definition at line 254 of file v40_FullEventFragment.cxx.

258{
259 uint32_t total = nchildren();
260 for (size_t i=0; i<total; ++i) {
261 const uint32_t* fp;
262 child(fp, i);
263 ROBFragment f(fp);
264 if (f.check_noex(version, rod_version)) good.push_back(f);
265 else bad.push_back(f);
266 }
267}

◆ robs() [2/2]

void offline_eformat::v40::FullEventFragment::robs ( std::vector< ROBFragment > & robs) const

Retrieves a vector of all ROBs from this fragment.

Definition at line 242 of file v40_FullEventFragment.cxx.

244{
245 uint32_t total = nchildren();
246 r.reserve(total);
247 for (size_t i=0; i<total; ++i) {
248 const uint32_t* fp;
249 child(fp, i);
250 r.push_back(fp);
251 }
252}
int r
Definition globals.cxx:22

◆ run_no()

uint32_t offline_eformat::v40::FullEventFragment::run_no ( ) const

Returns the run number.

Definition at line 315 of file v40_FullEventFragment.cxx.

316{
317 return m_start[4];
318}

◆ run_type()

uint32_t offline_eformat::v40::FullEventFragment::run_type ( ) const

Returns the run type.

Definition at line 310 of file v40_FullEventFragment.cxx.

311{
312 return m_start[3];
313}

◆ source_id()

uint32_t offline_eformat::v40::Header::source_id ( ) const
inherited

Returns the full source identifier.

Definition at line 62 of file v40_Header.cxx.

63{
64 return m_top[4];
65}

◆ specific_header() [1/2]

const uint32_t * offline_eformat::v40::Header::specific_header ( ) const
inherited

Returns an iterator to the start of the specific header part.

Parameters
itAn updateable iterator you should provide.

Definition at line 107 of file v40_Header.cxx.

108{
109 return m_top + 7 + nstatus();
110}

◆ specific_header() [2/2]

void offline_eformat::v40::Header::specific_header ( const uint32_t *& it) const
inlineinherited

Definition at line 176 of file v40_Header.h.

177 { it = specific_header(); }

◆ start() [1/2]

const uint32_t * offline_eformat::v40::Header::start ( ) const
inherited

Sets the pointer to my start.

Parameters
itThe pointer to set

Definition at line 72 of file v40_Header.cxx.

73{
74 return m_top;
75}

◆ start() [2/2]

void offline_eformat::v40::Header::start ( const uint32_t *& it) const
inlineinherited

Definition at line 128 of file v40_Header.h.

128{ it = start(); } //legacy
const uint32_t * start() const
Sets the pointer to my start.

◆ status() [1/2]

const uint32_t * offline_eformat::v40::Header::status ( ) const
inherited

Returns the status words, as an iterator to the status words available.

Parameters
itAn updateable iterator you should provide.

Definition at line 92 of file v40_Header.cxx.

93{
94 return m_top + 6;
95}

◆ status() [2/2]

void offline_eformat::v40::Header::status ( const uint32_t *& it) const
inlineinherited

Definition at line 157 of file v40_Header.h.

157{ it = status(); } //legacy
const uint32_t * status() const
Returns the status words, as an iterator to the status words available.

◆ stream_tag() [1/2]

const uint32_t * offline_eformat::v40::FullEventFragment::stream_tag ( ) const

Returns an iterator to the first of the stream tag words.

Parameters
itAn updateable iterator you should provide.

Definition at line 88 of file v40_FullEventFragment.cxx.

89{
90 return m_start + 13 + nlvl1_trigger_info() + nlvl2_trigger_info() +
92}

◆ stream_tag() [2/2]

void offline_eformat::v40::FullEventFragment::stream_tag ( const uint32_t *& it) const
inline

Definition at line 264 of file v40_FullEventFragment.h.

265 { it = stream_tag(); }
const uint32_t * stream_tag() const
Returns an iterator to the first of the stream tag words.

◆ throws() [1/2]

bool offline_eformat::v40::Header::throws ( ) const
inherited

Says if we are supposed to throw exceptions or not.

◆ throws() [2/2]

void offline_eformat::v40::Header::throws ( bool b)
inherited

If you set this parameter, objects of this type will throw exceptions.

The default behavior is to throw.

◆ version()

uint32_t offline_eformat::v40::Header::version ( ) const
inherited

Returns the formatting version.

Definition at line 57 of file v40_Header.cxx.

58{
59 return m_top[3];
60}

Member Data Documentation

◆ m_start

const uint32_t* offline_eformat::v40::FullEventFragment::m_start
private

my start word

Definition at line 313 of file v40_FullEventFragment.h.

◆ m_top

const uint32_t* offline_eformat::v40::Header::m_top
privateinherited

< representation

my start word

Definition at line 203 of file v40_Header.h.


The documentation for this class was generated from the following files: