13#include "eformat/write/SubDetectorFragment.h"
14#include "eformat/write/FullEventFragment.h"
15#include "eformat/HeaderMarker.h"
16#include "eformat/Status.h"
17#include "ers/StreamFactory.h"
21(uint32_t source_id, uint32_t use_time,
22 uint32_t global_id, uint32_t run_no,
23 uint32_t lvl1_id, uint32_t lvl1_type,
24 uint32_t lvl2_info,
const uint32_t* ef_info)
36 m_header[7] = use_time;
40 m_header[11] = lvl1_type;
41 m_header[12] = lvl2_info;
42 memcpy(&m_header[13], ef_info, 4*
sizeof(uint32_t));
45 set(m_node[0], m_header, 6, &m_node[1]);
47 set(m_node[2], &m_header[6], 11, 0);
48 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
49 "Built (write) full event from scratch, with",
55(uint32_t source_id, uint32_t global_id, uint32_t run_no,
56 uint32_t lvl1_id, uint32_t lvl1_type,
57 uint32_t lvl2_info,
const uint32_t* ef_info)
69 m_header[7] = std::time(0);
73 m_header[11] = lvl1_type;
74 m_header[12] = lvl2_info;
75 memcpy(&m_header[13], ef_info, 4*
sizeof(uint32_t));
78 set(m_node[0], m_header, 6, &m_node[1]);
80 set(m_node[2], &m_header[6], 11, 0);
81 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
82 "Built (write) full event from scratch, with",
93 set(m_node[0], fe, 6, &m_node[1]);
94 set(m_node[1], &fe[6], fe[5], &m_node[2]);
95 set(m_node[2], &fe[6+fe[5]], 11, 0);
98 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
99 "Built (write) full event from contiguos memory, with",
110 set(m_node[0], fe->
base, 6, &m_node[1]);
111 set(m_node[1], &fe->
base[6], fe->
base[5], &m_node[2]);
116 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
117 "Built (write) full event from paged memory, with",
133 m_header[7] = std::time(0);
145 set(m_node[0], m_header, 6, &m_node[1]);
147 set(m_node[2], &m_header[6], 11, 0);
148 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
149 "Built empty (write) full event from scratch, with",
161 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
162 "Built (write) full event from copy, with",
168eformat::write::FullEventFragment::operator=
171 memcpy(
reinterpret_cast<void*
>(m_header),
172 reinterpret_cast<const void*
>(other.m_node[0].base),
174 memcpy(
reinterpret_cast<void*
>(m_header+6),
175 reinterpret_cast<const void*
>(other.m_node[2].base),
176 11*
sizeof(uint32_t));
179 set(m_node[0], m_header, 6, &m_node[1]);
180 set(m_node[1], other.m_node[1].base, other.m_node[1].size_word, &m_node[2]);
181 set(m_node[2], &m_header[6], 11, 0);
182 ERS_DEBUG_3(
"%s Source Id. = 0x%x, LVL1 Id. = %d and Run Number = %d",
183 "Copied (write) full event, with",
190(uint32_t
n,
const uint32_t* status)
192 m_node[0].base[1] -= m_node[0].base[5];
193 m_node[0].base[2] -= m_node[0].base[5];
194 m_node[1].size_word = m_node[0].base[5] =
n;
195 m_node[0].base[1] +=
n;
196 m_node[0].base[2] +=
n;
197 m_node[1].base =
const_cast<uint32_t*
>(status);
203 ERS_DEBUG_3(
"%s Source Id. = 0x%x to full event with Source Id. = 0x%x",
204 "Appending subdetector with",
210 if (m_last) m_last->next(sd);
217 uint32_t retval = 3 + m_extra_count;
219 retval += curr->page_count();
230 while (last->
next) last = last->
next;
235 while (last->
next) last = last->
next;