BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
eformat::write::ROSFragment Class Reference

forward More...

#include <ROSFragment.h>

Public Member Functions

 ROSFragment (uint32_t source_id, uint32_t run_no, uint32_t lvl1_id, uint32_t bc_id)
 ROSFragment (uint32_t *ros)
 ROSFragment (eformat::write::node_t *ros)
 ROSFragment ()
 ROSFragment (const ROSFragment &other)
virtual ~ROSFragment ()
ROSFragmentoperator= (const ROSFragment &other)
void status (uint32_t n, const uint32_t *status)
uint32_t nstatus (void) const
const uint32_t * status (void) const
void minor_version (uint16_t v)
uint16_t minor_version (void) const
void source_id (uint32_t s)
uint32_t source_id (void) const
void run_no (uint32_t s)
uint32_t run_no (void) const
void lvl1_id (uint32_t s)
uint32_t lvl1_id (void) const
void bc_id (uint32_t s)
uint32_t bc_id (void) const
uint32_t meta_size_word (void) const
uint32_t size_word (void) const
void append (eformat::write::ROBFragment *rob)
const ROBFragmentfirst_child (void) const
void size_change (uint32_t o, uint32_t n)
const SubDetectorFragmentparent (void) const
void parent (eformat::write::SubDetectorFragment *sd)
const ROSFragmentnext (void) const
void next (const ROSFragment *n)
uint32_t page_count (void) const
const eformat::write::node_tbind (void)
const eformat::write::node_textra (void)
 ROSFragment (uint32_t source_id, uint32_t run_no, uint32_t lvl1_id, uint32_t bc_id)
 ROSFragment (uint32_t *ros)
 ROSFragment (eformat::write::node_t *ros)
 ROSFragment ()
 ROSFragment (const ROSFragment &other)
virtual ~ROSFragment ()
ROSFragmentoperator= (const ROSFragment &other)
void status (uint32_t n, const uint32_t *status)
uint32_t nstatus (void) const
const uint32_t * status (void) const
void minor_version (uint16_t v)
uint16_t minor_version (void) const
void source_id (uint32_t s)
uint32_t source_id (void) const
void run_no (uint32_t s)
uint32_t run_no (void) const
void lvl1_id (uint32_t s)
uint32_t lvl1_id (void) const
void bc_id (uint32_t s)
uint32_t bc_id (void) const
uint32_t meta_size_word (void) const
uint32_t size_word (void) const
void append (eformat::write::ROBFragment *rob)
const ROBFragmentfirst_child (void) const
void size_change (uint32_t o, uint32_t n)
const SubDetectorFragmentparent (void) const
void parent (eformat::write::SubDetectorFragment *sd)
const ROSFragmentnext (void) const
void next (const ROSFragment *n)
uint32_t page_count (void) const
const eformat::write::node_tbind (void)
const eformat::write::node_textra (void)
 ROSFragment (uint32_t source_id, uint32_t run_no, uint32_t lvl1_id, uint32_t bc_id)
 ROSFragment (uint32_t *ros)
 ROSFragment (eformat::write::node_t *ros)
 ROSFragment ()
 ROSFragment (const ROSFragment &other)
virtual ~ROSFragment ()
ROSFragmentoperator= (const ROSFragment &other)
void status (uint32_t n, const uint32_t *status)
uint32_t nstatus (void) const
const uint32_t * status (void) const
void minor_version (uint16_t v)
uint16_t minor_version (void) const
void source_id (uint32_t s)
uint32_t source_id (void) const
void run_no (uint32_t s)
uint32_t run_no (void) const
void lvl1_id (uint32_t s)
uint32_t lvl1_id (void) const
void bc_id (uint32_t s)
uint32_t bc_id (void) const
uint32_t meta_size_word (void) const
uint32_t size_word (void) const
void append (eformat::write::ROBFragment *rob)
const ROBFragmentfirst_child (void) const
void size_change (uint32_t o, uint32_t n)
const SubDetectorFragmentparent (void) const
void parent (eformat::write::SubDetectorFragment *sd)
const ROSFragmentnext (void) const
void next (const ROSFragment *n)
uint32_t page_count (void) const
const eformat::write::node_tbind (void)
const eformat::write::node_textra (void)

Detailed Description

forward

Defines a helper class to aid the creation of ROS fragments.

Definition at line 27 of file Event/eformat/include/eformat/write/ROSFragment.h.

Constructor & Destructor Documentation

◆ ROSFragment() [1/15]

eformat::write::ROSFragment::ROSFragment ( uint32_t source_id,
uint32_t run_no,
uint32_t lvl1_id,
uint32_t bc_id )

Builds a new ROS fragment from scratch

Parameters
source_idThe source identifier to be using for this ROS
run_noThe run number for this ROS
lvl1_idThe LVL1 identifier for this ROS
bc_idThe bunch crossing identifier for this ROS

Definition at line 19 of file ROSFragment.cxx.

21 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
22 m_header[0] = eformat::ROS; // marker
23 m_header[1] = 11; // this header size + status size
24 m_header[2] = 11; // this header size + status size
25 m_header[3] = eformat::DEFAULT_VERSION; // format version
26 m_header[4] = source_id;
27 m_header[5] = 1; // number of status
28 m_header[6] = 3; // number of fragment specific
29 m_header[7] = run_no;
30 m_header[8] = lvl1_id;
31 m_header[9] = bc_id;
32
33 // now initialize pages
34 set( m_node[0], m_header, 6, &m_node[1] );
35 set( m_node[1], &eformat::DEFAULT_STATUS, 1, &m_node[2] );
36 set( m_node[2], &m_header[6], 4, 0 );
37 ERS_DEBUG_3( "%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
38 "Built (write) ros fragment from scratch, with", ROSFragment::source_id(),
40}
#define ERS_DEBUG_3(...)
void set(node_t &i, const uint32_t *b, size_t l, node_t *n=0)
Definition node.cxx:16

Referenced by next(), next(), operator=(), and ROSFragment().

◆ ROSFragment() [2/15]

eformat::write::ROSFragment::ROSFragment ( uint32_t * ros)

Builds a new ROS fragment from an existing ROS fragment in contiguous memory.

Parameters
rosThe existing ROS fragment

Definition at line 42 of file ROSFragment.cxx.

43 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
44 // now initialize pages
45 set( m_node[0], ros, 6, &m_node[1] );
46 set( m_node[1], &ros[6], ros[5], &m_node[2] );
47 set( m_node[2], &ros[6 + ros[5]], 4, &m_extra );
48 eformat::write::set( m_extra, &ros[10 + ros[5]], ros[1] - ros[2] );
49 ++m_extra_count;
50 ERS_DEBUG_3( "%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
51 "Built (write) ros fragment from contiguous memory, with", source_id(),
52 lvl1_id(), run_no() );
53}

◆ ROSFragment() [3/15]

eformat::write::ROSFragment::ROSFragment ( eformat::write::node_t * ros)

Builds a new ROS fragment from an existing ROS fragment in non-contiguous memory. The top-level fragment header is expected to be on a contiguous area of memory, together with the first word of the first child fragment (i.e. the ROB header marker). The following data can be spread around.

Parameters
rosThe existing ROS fragment, as a list of nodes, pre-concatenated by the caller.

Definition at line 55 of file ROSFragment.cxx.

56 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
57 // now initialize pages
58 set( m_node[0], ros->base, 6, &m_node[1] );
59 set( m_node[1], &ros->base[6], ros->base[5], &m_node[2] );
60 set( m_node[2], &ros->base[6 + ros->base[5]], 4, &m_extra );
61 eformat::write::set( m_extra, &ros->base[10 + ros->base[5]], ros->size_word - ros->base[2],
62 ros->next );
63 m_extra_count += eformat::write::count( m_extra );
64 ERS_DEBUG_3( "%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
65 "Built (write) ros fragment from paged memory, with", source_id(), lvl1_id(),
66 run_no() );
67}
uint32_t count(const node_t &list)
Definition node.cxx:38
uint32_t * base
The base address for this page.
size_t size_word
The size, in 4-byte words for this page.

◆ ROSFragment() [4/15]

eformat::write::ROSFragment::ROSFragment ( )

Builds a new empty ROS fragment, otherwise invalid. This is useful for array builds and standard containers.

Definition at line 69 of file ROSFragment.cxx.

70 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
71 m_header[0] = eformat::ROS; // marker
72 m_header[1] = 11; // this header size + status size
73 m_header[2] = 11; // this header size + status size
74 m_header[3] = eformat::DEFAULT_VERSION; // format version
75 m_header[4] = 0; // source identifier
76 m_header[5] = 1; // number of status
77 m_header[6] = 3; // number of fragment specific
78 m_header[7] = 0; // run number
79 m_header[8] = 0; // LVL1 identifier
80 m_header[9] = 0; // bunch crossing identifier
81
82 // now initialize pages
83 set( m_node[0], m_header, 6, &m_node[1] );
84 set( m_node[1], &eformat::DEFAULT_STATUS, 1, &m_node[2] );
85 set( m_node[2], &m_header[6], 4, 0 );
86 ERS_DEBUG_3( "%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
87 "Built empty (write) ros fragment from scratch, with", ROSFragment::source_id(),
89}

◆ ROSFragment() [5/15]

eformat::write::ROSFragment::ROSFragment ( const ROSFragment & other)

Copy constructor. This will only copy the meta data, not the fragment relationships and block-data (children, parent and status block) contained in the to-be-copied fragment. If you wish this fragment has the same parents, and children of the copied fragment, you have to do this operation manually, after copying. If you wish to make a copy of the status as well, do it manually and then assign it to this fragment using the status() method.

Parameters
otherThe other fragment to take the meta data from.

Definition at line 91 of file ROSFragment.cxx.

92 : m_parent( 0 ), m_child( 0 ), m_last( 0 ), m_next( 0 ), m_extra_count( 0 ) {
93 *this = other;
94 ERS_DEBUG_3( "%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
95 "Built (write) ros fragment from copy, with", ROSFragment::source_id(),
97}
Index other(Index i, Index j)

◆ ~ROSFragment() [1/3]

virtual eformat::write::ROSFragment::~ROSFragment ( )
inlinevirtual

Base destructor

Definition at line 82 of file Event/eformat/include/eformat/write/ROSFragment.h.

82{}

◆ ROSFragment() [6/15]

eformat::write::ROSFragment::ROSFragment ( uint32_t source_id,
uint32_t run_no,
uint32_t lvl1_id,
uint32_t bc_id )

Builds a new ROS fragment from scratch

Parameters
source_idThe source identifier to be using for this ROS
run_noThe run number for this ROS
lvl1_idThe LVL1 identifier for this ROS
bc_idThe bunch crossing identifier for this ROS

◆ ROSFragment() [7/15]

eformat::write::ROSFragment::ROSFragment ( uint32_t * ros)

Builds a new ROS fragment from an existing ROS fragment in contiguous memory.

Parameters
rosThe existing ROS fragment

◆ ROSFragment() [8/15]

eformat::write::ROSFragment::ROSFragment ( eformat::write::node_t * ros)

Builds a new ROS fragment from an existing ROS fragment in non-contiguous memory. The top-level fragment header is expected to be on a contiguous area of memory, together with the first word of the first child fragment (i.e. the ROB header marker). The following data can be spread around.

Parameters
rosThe existing ROS fragment, as a list of nodes, pre-concatenated by the caller.

◆ ROSFragment() [9/15]

eformat::write::ROSFragment::ROSFragment ( )

Builds a new empty ROS fragment, otherwise invalid. This is useful for array builds and standard containers.

◆ ROSFragment() [10/15]

eformat::write::ROSFragment::ROSFragment ( const ROSFragment & other)

Copy constructor. This will only copy the meta data, not the fragment relationships and block-data (children, parent and status block) contained in the to-be-copied fragment. If you wish this fragment has the same parents, and children of the copied fragment, you have to do this operation manually, after copying. If you wish to make a copy of the status as well, do it manually and then assign it to this fragment using the status() method.

Parameters
otherThe other fragment to take the meta data from.

◆ ~ROSFragment() [2/3]

virtual eformat::write::ROSFragment::~ROSFragment ( )
inlinevirtual

Base destructor

Definition at line 82 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

82{}

◆ ROSFragment() [11/15]

eformat::write::ROSFragment::ROSFragment ( uint32_t source_id,
uint32_t run_no,
uint32_t lvl1_id,
uint32_t bc_id )

Builds a new ROS fragment from scratch

Parameters
source_idThe source identifier to be using for this ROS
run_noThe run number for this ROS
lvl1_idThe LVL1 identifier for this ROS
bc_idThe bunch crossing identifier for this ROS

◆ ROSFragment() [12/15]

eformat::write::ROSFragment::ROSFragment ( uint32_t * ros)

Builds a new ROS fragment from an existing ROS fragment in contiguous memory.

Parameters
rosThe existing ROS fragment

◆ ROSFragment() [13/15]

eformat::write::ROSFragment::ROSFragment ( eformat::write::node_t * ros)

Builds a new ROS fragment from an existing ROS fragment in non-contiguous memory. The top-level fragment header is expected to be on a contiguous area of memory, together with the first word of the first child fragment (i.e. the ROB header marker). The following data can be spread around.

Parameters
rosThe existing ROS fragment, as a list of nodes, pre-concatenated by the caller.

◆ ROSFragment() [14/15]

eformat::write::ROSFragment::ROSFragment ( )

Builds a new empty ROS fragment, otherwise invalid. This is useful for array builds and standard containers.

◆ ROSFragment() [15/15]

eformat::write::ROSFragment::ROSFragment ( const ROSFragment & other)

Copy constructor. This will only copy the meta data, not the fragment relationships and block-data (children, parent and status block) contained in the to-be-copied fragment. If you wish this fragment has the same parents, and children of the copied fragment, you have to do this operation manually, after copying. If you wish to make a copy of the status as well, do it manually and then assign it to this fragment using the status() method.

Parameters
otherThe other fragment to take the meta data from.

◆ ~ROSFragment() [3/3]

virtual eformat::write::ROSFragment::~ROSFragment ( )
inlinevirtual

Base destructor

Definition at line 82 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

82{}

Member Function Documentation

◆ append() [1/3]

void eformat::write::ROSFragment::append ( eformat::write::ROBFragment * rob)

Appends a new ROB fragment to this ROS fragment.

Warning
This will change the page structure of the last ROB fragment inserted here, in order to concatenate the ROB fragments together. Please note that this operation is not compatible with multiple threads of operation, if you would like to share eformat::write::ROBFragment's between threads. A better strategy would be create, for every thread of operation, a proper ROBFragment instead.
Parameters
robThe ROB fragment to be appended to myself

Definition at line 134 of file ROSFragment.cxx.

134 {
135 ERS_DEBUG_3( "%s Source Id. = 0x%x to ros fragment with Source Id. = 0x%x",
136 "Appending rob fragment with", rob->source_id(), source_id() );
137 rob->parent( this );
138 uint32_t old_size = m_node[0].base[1];
139 m_node[0].base[1] += rob->size_word();
140
141 // adjust `m_last' and `m_child' to point to the new last ROB
142 if ( m_last ) m_last->next( rob );
143 else m_child = rob;
144 m_last = rob;
145
146 // propagate changes to my parent
147 if ( m_parent ) m_parent->size_change( old_size, m_node[0].base[1] );
148}

Referenced by Builder::append2event(), eformat::old::convert(), convert_ros(), and main().

◆ append() [2/3]

void eformat::write::ROSFragment::append ( eformat::write::ROBFragment * rob)

Appends a new ROB fragment to this ROS fragment.

Warning
This will change the page structure of the last ROB fragment inserted here, in order to concatenate the ROB fragments together. Please note that this operation is not compatible with multiple threads of operation, if you would like to share eformat::write::ROBFragment's between threads. A better strategy would be create, for every thread of operation, a proper ROBFragment instead.
Parameters
robThe ROB fragment to be appended to myself

◆ append() [3/3]

void eformat::write::ROSFragment::append ( eformat::write::ROBFragment * rob)

Appends a new ROB fragment to this ROS fragment.

Warning
This will change the page structure of the last ROB fragment inserted here, in order to concatenate the ROB fragments together. Please note that this operation is not compatible with multiple threads of operation, if you would like to share eformat::write::ROBFragment's between threads. A better strategy would be create, for every thread of operation, a proper ROBFragment instead.
Parameters
robThe ROB fragment to be appended to myself

◆ bc_id() [1/6]

void eformat::write::ROSFragment::bc_id ( uint32_t s)
inline

Changes the bunch crossing identifier in this fragment

Parameters
sThe new value to set

Definition at line 171 of file Event/eformat/include/eformat/write/ROSFragment.h.

171{ m_node[2].base[3] = s; }
XmlRpcServer s

Referenced by ROSFragment().

◆ bc_id() [2/6]

void eformat::write::ROSFragment::bc_id ( uint32_t s)
inline

Changes the bunch crossing identifier in this fragment

Parameters
sThe new value to set

Definition at line 171 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

171{ m_node[2].base[3] = s; }

◆ bc_id() [3/6]

void eformat::write::ROSFragment::bc_id ( uint32_t s)
inline

Changes the bunch crossing identifier in this fragment

Parameters
sThe new value to set

Definition at line 171 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

171{ m_node[2].base[3] = s; }

◆ bc_id() [4/6]

uint32_t eformat::write::ROSFragment::bc_id ( void ) const
inline

Returns the bunch crossing identifier for this fragment

Definition at line 176 of file Event/eformat/include/eformat/write/ROSFragment.h.

176{ return m_node[2].base[3]; }

◆ bc_id() [5/6]

uint32_t eformat::write::ROSFragment::bc_id ( void ) const
inline

Returns the bunch crossing identifier for this fragment

Definition at line 176 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

176{ return m_node[2].base[3]; }

◆ bc_id() [6/6]

uint32_t eformat::write::ROSFragment::bc_id ( void ) const
inline

Returns the bunch crossing identifier for this fragment

Definition at line 176 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

176{ return m_node[2].base[3]; }

◆ bind() [1/3]

const eformat::write::node_t * eformat::write::ROSFragment::bind ( void )

Returns the first node of a list of nodes that represent the fragment you have constructed. To make use of it, just browse the list as defined in node.h

Definition at line 157 of file ROSFragment.cxx.

157 {
158 // the header is already concatenated by construction
159 eformat::write::node_t* last = &m_node[2];
160 if ( m_extra_count )
161 {
162 last = &m_extra;
163 while ( last->next ) last = last->next;
164 }
165 for ( const ROBFragment* curr = m_child; curr; curr = curr->next() )
166 {
167 last->next = const_cast<eformat::write::node_t*>( curr->bind() );
168 while ( last->next ) last = last->next; // advance until end
169 }
170 return m_node;
171}
struct eformat::write::node_t node_t

Referenced by convert_ros().

◆ bind() [2/3]

const eformat::write::node_t * eformat::write::ROSFragment::bind ( void )

Returns the first node of a list of nodes that represent the fragment you have constructed. To make use of it, just browse the list as defined in node.h

◆ bind() [3/3]

const eformat::write::node_t * eformat::write::ROSFragment::bind ( void )

Returns the first node of a list of nodes that represent the fragment you have constructed. To make use of it, just browse the list as defined in node.h

◆ extra() [1/3]

const eformat::write::node_t * eformat::write::ROSFragment::extra ( void )
inline

Return the extra node of the fragment for OHFiller_write. lifei

Definition at line 267 of file Event/eformat/include/eformat/write/ROSFragment.h.

267{ return &m_extra; };

◆ extra() [2/3]

const eformat::write::node_t * eformat::write::ROSFragment::extra ( void )
inline

Return the extra node of the fragment for OHFiller_write. lifei

Definition at line 267 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

267{ return &m_extra; };

◆ extra() [3/3]

const eformat::write::node_t * eformat::write::ROSFragment::extra ( void )
inline

Return the extra node of the fragment for OHFiller_write. lifei

Definition at line 267 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

267{ return &m_extra; };

◆ first_child() [1/3]

const ROBFragment * eformat::write::ROSFragment::first_child ( void ) const
inline

This returns the first child of this fragment. The system operates as a concatenated list of fragments. From this child you can get to the next.

Definition at line 210 of file Event/eformat/include/eformat/write/ROSFragment.h.

210{ return m_child; }

Referenced by RawDataCnvSvc::commitOutput().

◆ first_child() [2/3]

const ROBFragment * eformat::write::ROSFragment::first_child ( void ) const
inline

This returns the first child of this fragment. The system operates as a concatenated list of fragments. From this child you can get to the next.

Definition at line 210 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

210{ return m_child; }

◆ first_child() [3/3]

const ROBFragment * eformat::write::ROSFragment::first_child ( void ) const
inline

This returns the first child of this fragment. The system operates as a concatenated list of fragments. From this child you can get to the next.

Definition at line 210 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

210{ return m_child; }

◆ lvl1_id() [1/6]

void eformat::write::ROSFragment::lvl1_id ( uint32_t s)
inline

Changes the lvl1 identifier in this fragment

Parameters
sThe new value to set

Definition at line 159 of file Event/eformat/include/eformat/write/ROSFragment.h.

159{ m_node[2].base[2] = s; }

Referenced by operator=(), ROSFragment(), ROSFragment(), and ROSFragment().

◆ lvl1_id() [2/6]

void eformat::write::ROSFragment::lvl1_id ( uint32_t s)
inline

Changes the lvl1 identifier in this fragment

Parameters
sThe new value to set

Definition at line 159 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

159{ m_node[2].base[2] = s; }

◆ lvl1_id() [3/6]

void eformat::write::ROSFragment::lvl1_id ( uint32_t s)
inline

Changes the lvl1 identifier in this fragment

Parameters
sThe new value to set

Definition at line 159 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

159{ m_node[2].base[2] = s; }

◆ lvl1_id() [4/6]

uint32_t eformat::write::ROSFragment::lvl1_id ( void ) const
inline

Returns the lvl1 identifier for this fragment

Definition at line 164 of file Event/eformat/include/eformat/write/ROSFragment.h.

164{ return m_node[2].base[2]; }

Referenced by ROSFragment(), and ROSFragment().

◆ lvl1_id() [5/6]

uint32_t eformat::write::ROSFragment::lvl1_id ( void ) const
inline

Returns the lvl1 identifier for this fragment

Definition at line 164 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

164{ return m_node[2].base[2]; }

◆ lvl1_id() [6/6]

uint32_t eformat::write::ROSFragment::lvl1_id ( void ) const
inline

Returns the lvl1 identifier for this fragment

Definition at line 164 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

164{ return m_node[2].base[2]; }

◆ meta_size_word() [1/3]

uint32_t eformat::write::ROSFragment::meta_size_word ( void ) const
inline

Returns the total size for the meta data (everything that does not encompass the contents of the m_data pointer in the private representation of this class) in the fragment, in words

Definition at line 183 of file Event/eformat/include/eformat/write/ROSFragment.h.

183{ return m_node[0].base[2]; }

◆ meta_size_word() [2/3]

uint32_t eformat::write::ROSFragment::meta_size_word ( void ) const
inline

Returns the total size for the meta data (everything that does not encompass the contents of the m_data pointer in the private representation of this class) in the fragment, in words

Definition at line 183 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

183{ return m_node[0].base[2]; }

◆ meta_size_word() [3/3]

uint32_t eformat::write::ROSFragment::meta_size_word ( void ) const
inline

Returns the total size for the meta data (everything that does not encompass the contents of the m_data pointer in the private representation of this class) in the fragment, in words

Definition at line 183 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

183{ return m_node[0].base[2]; }

◆ minor_version() [1/6]

void eformat::write::ROSFragment::minor_version ( uint16_t v)
inline

Changes the minor version number of the fragment

Parameters
vThe new minor version for this header

Definition at line 121 of file Event/eformat/include/eformat/write/ROSFragment.h.

121 {
122 m_node[0].base[3] = eformat::DEFAULT_VERSION | v;
123 }
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition KarLud.h:35

Referenced by eformat::old::convert(), and convert_ros().

◆ minor_version() [2/6]

void eformat::write::ROSFragment::minor_version ( uint16_t v)
inline

Changes the minor version number of the fragment

Parameters
vThe new minor version for this header

Definition at line 121 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

121 {
122 m_node[0].base[3] = eformat::DEFAULT_VERSION | v;
123 }

◆ minor_version() [3/6]

void eformat::write::ROSFragment::minor_version ( uint16_t v)
inline

Changes the minor version number of the fragment

Parameters
vThe new minor version for this header

Definition at line 121 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

121 {
122 m_node[0].base[3] = eformat::DEFAULT_VERSION | v;
123 }

◆ minor_version() [4/6]

uint16_t eformat::write::ROSFragment::minor_version ( void ) const
inline

Returns the minor version number of the fragment

Definition at line 128 of file Event/eformat/include/eformat/write/ROSFragment.h.

128{ return 0xffff & m_node[0].base[3]; }

◆ minor_version() [5/6]

uint16_t eformat::write::ROSFragment::minor_version ( void ) const
inline

Returns the minor version number of the fragment

Definition at line 128 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

128{ return 0xffff & m_node[0].base[3]; }

◆ minor_version() [6/6]

uint16_t eformat::write::ROSFragment::minor_version ( void ) const
inline

Returns the minor version number of the fragment

Definition at line 128 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

128{ return 0xffff & m_node[0].base[3]; }

◆ next() [1/6]

void eformat::write::ROSFragment::next ( const ROSFragment * n)
inline

Sets the next sibling

Parameters
nThe sibling following this fragment

Definition at line 243 of file Event/eformat/include/eformat/write/ROSFragment.h.

243{ m_next = n; }
const Int_t n

◆ next() [2/6]

void eformat::write::ROSFragment::next ( const ROSFragment * n)
inline

Sets the next sibling

Parameters
nThe sibling following this fragment

Definition at line 243 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

243{ m_next = n; }

◆ next() [3/6]

void eformat::write::ROSFragment::next ( const ROSFragment * n)
inline

Sets the next sibling

Parameters
nThe sibling following this fragment

Definition at line 243 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

243{ m_next = n; }

◆ next() [4/6]

const ROSFragment * eformat::write::ROSFragment::next ( void ) const
inline

Returns the next sibling

Definition at line 236 of file Event/eformat/include/eformat/write/ROSFragment.h.

236{ return m_next; }

Referenced by RawDataCnvSvc::commitOutput(), and eformat::write::SubDetectorFragment::page_count().

◆ next() [5/6]

const ROSFragment * eformat::write::ROSFragment::next ( void ) const
inline

Returns the next sibling

Definition at line 236 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

236{ return m_next; }

◆ next() [6/6]

const ROSFragment * eformat::write::ROSFragment::next ( void ) const
inline

Returns the next sibling

Definition at line 236 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

236{ return m_next; }

◆ nstatus() [1/3]

uint32_t eformat::write::ROSFragment::nstatus ( void ) const
inline

Returns the number of status wors in this fragment

Definition at line 109 of file Event/eformat/include/eformat/write/ROSFragment.h.

109{ return m_node[0].base[5]; }

◆ nstatus() [2/3]

uint32_t eformat::write::ROSFragment::nstatus ( void ) const
inline

Returns the number of status wors in this fragment

Definition at line 109 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

109{ return m_node[0].base[5]; }

◆ nstatus() [3/3]

uint32_t eformat::write::ROSFragment::nstatus ( void ) const
inline

Returns the number of status wors in this fragment

Definition at line 109 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

109{ return m_node[0].base[5]; }

◆ operator=() [1/3]

eformat::write::ROSFragment & eformat::write::ROSFragment::operator= ( const ROSFragment & other)

Assigment operator. This will only copy the meta data, not the fragment relationships and block-data (children and parent and status block) contained in the to-be-copied fragment. If you wish this fragment has the same parents, and children of the copied fragment, you have to do this operation manually, after copying. If you wish to make a copy of the status as well, do it manually and then assign it to this fragment using the status() method.

Parameters
otherThe other fragment to take the meta data from.

Definition at line 100 of file ROSFragment.cxx.

100 {
101 memcpy( reinterpret_cast<void*>( m_header ),
102 reinterpret_cast<const void*>( other.m_node[0].base ), 6 * sizeof( uint32_t ) );
103 memcpy( reinterpret_cast<void*>( m_header + 6 ),
104 reinterpret_cast<const void*>( other.m_node[2].base ), 4 * sizeof( uint32_t ) );
105
106 // now initialize pages
107 set( m_node[0], m_header, 6, &m_node[1] );
108 set( m_node[1], other.m_node[1].base, other.m_node[1].size_word, &m_node[2] );
109 set( m_node[2], &m_header[6], 4, 0 );
110 ERS_DEBUG_3( "%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
111 "Copied (write) ros fragment, with", ROSFragment::source_id(),
113 return *this;
114}

◆ operator=() [2/3]

ROSFragment & eformat::write::ROSFragment::operator= ( const ROSFragment & other)

Assigment operator. This will only copy the meta data, not the fragment relationships and block-data (children and parent and status block) contained in the to-be-copied fragment. If you wish this fragment has the same parents, and children of the copied fragment, you have to do this operation manually, after copying. If you wish to make a copy of the status as well, do it manually and then assign it to this fragment using the status() method.

Parameters
otherThe other fragment to take the meta data from.

◆ operator=() [3/3]

ROSFragment & eformat::write::ROSFragment::operator= ( const ROSFragment & other)

Assigment operator. This will only copy the meta data, not the fragment relationships and block-data (children and parent and status block) contained in the to-be-copied fragment. If you wish this fragment has the same parents, and children of the copied fragment, you have to do this operation manually, after copying. If you wish to make a copy of the status as well, do it manually and then assign it to this fragment using the status() method.

Parameters
otherThe other fragment to take the meta data from.

◆ page_count() [1/3]

uint32_t eformat::write::ROSFragment::page_count ( void ) const

Returns the total number of (raw memory) pages this fragment is composed of.

Warning
This operation navigates at a potentially large list of child page nodes (for a full ATLAS event this should be bigger than 2,000 pages when built from scratch). If you don't do your bookkeeping, avoid calling this too often.

Definition at line 150 of file ROSFragment.cxx.

150 {
151 uint32_t retval = 3 + m_extra_count;
152 for ( const ROBFragment* curr = m_child; curr; curr = curr->next() )
153 retval += curr->page_count();
154 return retval;
155}

◆ page_count() [2/3]

uint32_t eformat::write::ROSFragment::page_count ( void ) const

Returns the total number of (raw memory) pages this fragment is composed of.

Warning
This operation navigates at a potentially large list of child page nodes (for a full ATLAS event this should be bigger than 2,000 pages when built from scratch). If you don't do your bookkeeping, avoid calling this too often.

◆ page_count() [3/3]

uint32_t eformat::write::ROSFragment::page_count ( void ) const

Returns the total number of (raw memory) pages this fragment is composed of.

Warning
This operation navigates at a potentially large list of child page nodes (for a full ATLAS event this should be bigger than 2,000 pages when built from scratch). If you don't do your bookkeeping, avoid calling this too often.

◆ parent() [1/6]

void eformat::write::ROSFragment::parent ( eformat::write::SubDetectorFragment * sd)
inline

This sets the parent fragment

Parameters
sdThe SubDetectorFragment parent fragment of this ROS

Definition at line 231 of file Event/eformat/include/eformat/write/ROSFragment.h.

231{ m_parent = sd; }

◆ parent() [2/6]

void eformat::write::ROSFragment::parent ( eformat::write::SubDetectorFragment * sd)
inline

This sets the parent fragment

Parameters
sdThe SubDetectorFragment parent fragment of this ROS

Definition at line 231 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

231{ m_parent = sd; }

◆ parent() [3/6]

void eformat::write::ROSFragment::parent ( eformat::write::SubDetectorFragment * sd)
inline

This sets the parent fragment

Parameters
sdThe SubDetectorFragment parent fragment of this ROS

Definition at line 231 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

231{ m_parent = sd; }

◆ parent() [4/6]

const SubDetectorFragment * eformat::write::ROSFragment::parent ( void ) const
inline

This returns the parent fragment

Definition at line 224 of file Event/eformat/include/eformat/write/ROSFragment.h.

224{ return m_parent; }

Referenced by eformat::write::SubDetectorFragment::append().

◆ parent() [5/6]

const SubDetectorFragment * eformat::write::ROSFragment::parent ( void ) const
inline

This returns the parent fragment

Definition at line 224 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

224{ return m_parent; }

◆ parent() [6/6]

const SubDetectorFragment * eformat::write::ROSFragment::parent ( void ) const
inline

This returns the parent fragment

Definition at line 224 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

224{ return m_parent; }

◆ run_no() [1/6]

void eformat::write::ROSFragment::run_no ( uint32_t s)
inline

Changes the run number

Parameters
sThe new value to set

Definition at line 147 of file Event/eformat/include/eformat/write/ROSFragment.h.

147{ m_node[2].base[1] = s; }

Referenced by operator=(), ROSFragment(), ROSFragment(), and ROSFragment().

◆ run_no() [2/6]

void eformat::write::ROSFragment::run_no ( uint32_t s)
inline

Changes the run number

Parameters
sThe new value to set

Definition at line 147 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

147{ m_node[2].base[1] = s; }

◆ run_no() [3/6]

void eformat::write::ROSFragment::run_no ( uint32_t s)
inline

Changes the run number

Parameters
sThe new value to set

Definition at line 147 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

147{ m_node[2].base[1] = s; }

◆ run_no() [4/6]

uint32_t eformat::write::ROSFragment::run_no ( void ) const
inline

Returns the run number for this fragment

Definition at line 152 of file Event/eformat/include/eformat/write/ROSFragment.h.

152{ return m_node[2].base[1]; }

Referenced by ROSFragment(), and ROSFragment().

◆ run_no() [5/6]

uint32_t eformat::write::ROSFragment::run_no ( void ) const
inline

Returns the run number for this fragment

Definition at line 152 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

152{ return m_node[2].base[1]; }

◆ run_no() [6/6]

uint32_t eformat::write::ROSFragment::run_no ( void ) const
inline

Returns the run number for this fragment

Definition at line 152 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

152{ return m_node[2].base[1]; }

◆ size_change() [1/3]

void eformat::write::ROSFragment::size_change ( uint32_t o,
uint32_t n )

This method is used by children of this fragment to notify fragment size changes.

Parameters
oThe old size, in 32-bit words
nThe new size, in 32-bit words

Definition at line 127 of file ROSFragment.cxx.

127 {
128 uint32_t old_size = m_node[0].base[1];
129 m_node[0].base[1] -= o;
130 m_node[0].base[1] += n;
131 if ( m_parent ) m_parent->size_change( old_size, m_node[0].base[1] );
132}

Referenced by eformat::write::SubDetectorFragment::append().

◆ size_change() [2/3]

void eformat::write::ROSFragment::size_change ( uint32_t o,
uint32_t n )

This method is used by children of this fragment to notify fragment size changes.

Parameters
oThe old size, in 32-bit words
nThe new size, in 32-bit words

◆ size_change() [3/3]

void eformat::write::ROSFragment::size_change ( uint32_t o,
uint32_t n )

This method is used by children of this fragment to notify fragment size changes.

Parameters
oThe old size, in 32-bit words
nThe new size, in 32-bit words

◆ size_word() [1/3]

uint32_t eformat::write::ROSFragment::size_word ( void ) const
inline

Returns the total size for this fragment, in words

Definition at line 188 of file Event/eformat/include/eformat/write/ROSFragment.h.

188{ return m_node[0].base[1]; }

Referenced by eformat::write::SubDetectorFragment::append().

◆ size_word() [2/3]

uint32_t eformat::write::ROSFragment::size_word ( void ) const
inline

Returns the total size for this fragment, in words

Definition at line 188 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

188{ return m_node[0].base[1]; }

◆ size_word() [3/3]

uint32_t eformat::write::ROSFragment::size_word ( void ) const
inline

Returns the total size for this fragment, in words

Definition at line 188 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

188{ return m_node[0].base[1]; }

◆ source_id() [1/6]

void eformat::write::ROSFragment::source_id ( uint32_t s)
inline

Changes the source identifier for this fragment

Parameters
sThe new value to set

Definition at line 135 of file Event/eformat/include/eformat/write/ROSFragment.h.

135{ m_node[0].base[4] = s; }

Referenced by append(), eformat::write::SubDetectorFragment::append(), operator=(), ROSFragment(), ROSFragment(), and ROSFragment().

◆ source_id() [2/6]

void eformat::write::ROSFragment::source_id ( uint32_t s)
inline

Changes the source identifier for this fragment

Parameters
sThe new value to set

Definition at line 135 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

135{ m_node[0].base[4] = s; }

◆ source_id() [3/6]

void eformat::write::ROSFragment::source_id ( uint32_t s)
inline

Changes the source identifier for this fragment

Parameters
sThe new value to set

Definition at line 135 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

135{ m_node[0].base[4] = s; }

◆ source_id() [4/6]

uint32_t eformat::write::ROSFragment::source_id ( void ) const
inline

Returns the source identifier for this fragment

Definition at line 140 of file Event/eformat/include/eformat/write/ROSFragment.h.

140{ return m_node[0].base[4]; }

Referenced by ROSFragment(), and ROSFragment().

◆ source_id() [5/6]

uint32_t eformat::write::ROSFragment::source_id ( void ) const
inline

Returns the source identifier for this fragment

Definition at line 140 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

140{ return m_node[0].base[4]; }

◆ source_id() [6/6]

uint32_t eformat::write::ROSFragment::source_id ( void ) const
inline

Returns the source identifier for this fragment

Definition at line 140 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

140{ return m_node[0].base[4]; }

◆ status() [1/6]

void eformat::write::ROSFragment::status ( uint32_t n,
const uint32_t * status )

Changes the number of status words and the status words themselves from the fragment

Parameters
nHow many status words this fragment is supposed to have.
statusA pointer to n pre-allocated words

Definition at line 116 of file ROSFragment.cxx.

116 {
117 if ( m_parent )
118 m_parent->size_change( m_node[0].base[1], m_node[0].base[1] - m_node[0].base[5] + n );
119 m_node[0].base[1] -= m_node[0].base[5]; // remove count from previous status
120 m_node[0].base[2] -= m_node[0].base[5]; // remove count from previous status
121 m_node[1].size_word = m_node[0].base[5] = n; // set new values
122 m_node[0].base[1] += n;
123 m_node[0].base[2] += n;
124 m_node[1].base = const_cast<uint32_t*>( status );
125}
void status(uint32_t n, const uint32_t *status)

Referenced by Builder::append2event(), eformat::old::convert(), convert_ros(), and status().

◆ status() [2/6]

void eformat::write::ROSFragment::status ( uint32_t n,
const uint32_t * status )

Changes the number of status words and the status words themselves from the fragment

Parameters
nHow many status words this fragment is supposed to have.
statusA pointer to n pre-allocated words

◆ status() [3/6]

void eformat::write::ROSFragment::status ( uint32_t n,
const uint32_t * status )

Changes the number of status words and the status words themselves from the fragment

Parameters
nHow many status words this fragment is supposed to have.
statusA pointer to n pre-allocated words

◆ status() [4/6]

const uint32_t * eformat::write::ROSFragment::status ( void ) const
inline

Returns a pointer to the first status word to be used by this fragment

Definition at line 114 of file Event/eformat/include/eformat/write/ROSFragment.h.

114{ return m_node[1].base; }

◆ status() [5/6]

const uint32_t * eformat::write::ROSFragment::status ( void ) const
inline

Returns a pointer to the first status word to be used by this fragment

Definition at line 114 of file InstallArea/x86_64-el9-gcc13-dbg/include/eformat/write/ROSFragment.h.

114{ return m_node[1].base; }

◆ status() [6/6]

const uint32_t * eformat::write::ROSFragment::status ( void ) const
inline

Returns a pointer to the first status word to be used by this fragment

Definition at line 114 of file InstallArea/x86_64-el9-gcc13-opt/include/eformat/write/ROSFragment.h.

114{ return m_node[1].base; }

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