13#include "eformat/write/FullEventFragment.h"
14#include "eformat/HeaderMarker.h"
15#include "eformat/Status.h"
16#include "eformat/write/SubDetectorFragment.h"
17#include "ers/StreamFactory.h"
22 uint32_t
lvl1_id, uint32_t lvl1_type,
24 const uint32_t* ef_info )
25 : m_child( 0 ), m_last( 0 ), m_extra_count( 0 ) {
33 m_header[7] = use_time;
37 m_header[11] = lvl1_type;
38 m_header[12] = lvl2_info;
39 memcpy( &m_header[13], ef_info, 4 *
sizeof( uint32_t ) );
42 set( m_node[0], m_header, 6, &m_node[1] );
44 set( m_node[2], &m_header[6], 11, 0 );
45 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
52 uint32_t lvl1_type, uint32_t lvl2_info,
53 const uint32_t* ef_info )
54 : m_child( 0 ), m_last( 0 ), m_extra_count( 0 ) {
62 m_header[7] = std::time( 0 );
66 m_header[11] = lvl1_type;
67 m_header[12] = lvl2_info;
68 memcpy( &m_header[13], ef_info, 4 *
sizeof( uint32_t ) );
71 set( m_node[0], m_header, 6, &m_node[1] );
73 set( m_node[2], &m_header[6], 11, 0 );
74 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
80 : m_child( 0 ), m_last( 0 ), m_extra_count( 0 ) {
82 set( m_node[0], fe, 6, &m_node[1] );
83 set( m_node[1], &fe[6], fe[5], &m_node[2] );
84 set( m_node[2], &fe[6 + fe[5]], 11, 0 );
87 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
88 "Built (write) full event from contiguos memory, with",
source_id(),
lvl1_id(),
93 : m_child( 0 ), m_last( 0 ), m_extra_count( 0 ) {
95 set( m_node[0], fe->
base, 6, &m_node[1] );
96 set( m_node[1], &fe->
base[6], fe->
base[5], &m_node[2] );
97 set( m_node[2], &fe->
base[6 + fe->
base[5]], 11, 0 );
101 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
107 : m_child( 0 ), m_last( 0 ), m_extra_count( 0 ) {
115 m_header[7] = std::time( 0 );
127 set( m_node[0], m_header, 6, &m_node[1] );
129 set( m_node[2], &m_header[6], 11, 0 );
130 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
131 "Built empty (write) full event from scratch, with",
138 : m_child( 0 ), m_last( 0 ), m_extra_count( 0 ) {
140 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
147 memcpy(
reinterpret_cast<void*
>( m_header ),
148 reinterpret_cast<const void*
>( other.m_node[0].base ), 6 *
sizeof( uint32_t ) );
149 memcpy(
reinterpret_cast<void*
>( m_header + 6 ),
150 reinterpret_cast<const void*
>( other.m_node[2].base ), 11 *
sizeof( uint32_t ) );
153 set( m_node[0], m_header, 6, &m_node[1] );
154 set( m_node[1], other.m_node[1].base, other.m_node[1].size_word, &m_node[2] );
155 set( m_node[2], &m_header[6], 11, 0 );
156 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
163 m_node[0].base[1] -= m_node[0].base[5];
164 m_node[0].base[2] -= m_node[0].base[5];
165 m_node[1].size_word = m_node[0].base[5] =
n;
166 m_node[0].base[1] +=
n;
167 m_node[0].base[2] +=
n;
168 m_node[1].base =
const_cast<uint32_t*
>(
status );
172 ERS_DEBUG_3(
"%s Source Id. = 0x%x to full event with Source Id. = 0x%x",
178 if ( m_last ) m_last->next( sd );
184 uint32_t retval = 3 + m_extra_count;
196 while ( last->
next ) last = last->
next;
202 while ( last->
next ) last = last->
next;