13#include "eformat/write/ROBFragment.h"
14#include "eformat/write/ROSFragment.h"
15#include "eformat/HeaderMarker.h"
16#include "eformat/Status.h"
18#include "ers/StreamFactory.h"
27 uint32_t ndata,
const uint32_t*
data, uint32_t status_position)
32 m_header[1] = 21 + ndata;
42 m_rod_header[4] = run_no;
43 m_rod_header[5] = lvl1_id;
44 m_rod_header[6] = bc_id;
45 m_rod_header[7] = lvl1_type;
46 m_rod_header[8] = detev_type;
48 m_rod_trailer[1] = ndata;
52 set(m_node[0], m_header, 6, &m_node[1]);
54 set(m_node[2], &m_header[6], 1, &m_node[3]);
56 set(m_node[3], m_rod_header, 9, &m_node[4]);
58 set(m_node[5],
data, ndata, &m_node[6]);
61 set(m_node[3], m_rod_header, 9, &m_node[5]);
62 set(m_node[5],
data, ndata, &m_node[4]);
65 set(m_node[6], m_rod_trailer, 3, 0);
66 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
67 "Built (write) rob/rod fragment from scratch, with",
96 set(m_node[0], m_header, 6, &m_node[1]);
98 set(m_node[2], &m_header[6], 1, &m_node[3]);
100 set(m_node[3], m_rod_header, 9, &m_node[4]);
102 set(m_node[5], 0, 0, &m_node[6]);
105 set(m_node[3], m_rod_header, 9, &m_node[5]);
106 set(m_node[5], 0, 0, &m_node[4]);
109 set(m_node[6], m_rod_trailer, 3, 0);
110 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
111 "Built (write) empty rob/rod fragment, with",
121 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
122 "Built new (write) rob/rod fragment from copy, with",
134 m_header[4] = rod[3];
139 set(m_node[0], m_header, 6, &m_node[1]);
141 set(m_node[2], &m_header[6], 1, &m_node[3]);
144 set(m_node[3], rod, 9, &m_node[4]);
145 set(m_node[4], &rod[9], m_node[6].base[0], &m_node[5]);
146 set(m_node[5], &rod[9+m_node[6].base[0]], m_node[6].base[1], &m_node[6]);
149 set(m_node[3], rod, 9, &m_node[5]);
150 set(m_node[4], &rod[9+m_node[6].base[1]], m_node[6].base[0], &m_node[6]);
151 set(m_node[5], &rod[9], m_node[6].base[1], &m_node[4]);
153 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
154 "Built (write) rob/rod fragment from rod on memory, with",
163 set(m_node[0], rob, 6, &m_node[1]);
164 set(m_node[1], &rob[6], rob[5], &m_node[2]);
165 set(m_node[2], &rob[6+rob[5]], 1, &m_node[3]);
166 set(m_node[6], &rob[rob[1]-3], 3, 0);
168 set(m_node[3], &rob[rob[2]], 9, &m_node[4]);
169 set(m_node[4], &rob[rob[2]+9], m_node[6].base[0], &m_node[5]);
170 set(m_node[5], &rob[rob[2]+9+m_node[6].base[0]], m_node[6].base[1],
174 set(m_node[3], &rob[rob[2]], 9, &m_node[5]);
175 set(m_node[4], &rob[rob[2]+9+m_node[6].base[1]], m_node[6].base[0],
177 set(m_node[5], &rob[rob[2]+9], m_node[6].base[1], &m_node[4]);
179 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
180 "Built (write) rob/rod fragment from cont. memory, with",
188 memcpy(
reinterpret_cast<void*
>(m_header),
189 reinterpret_cast<const void*
>(other.m_node[0].base),
191 m_header[6] = other.m_node[2].base[0];
192 memcpy(
reinterpret_cast<void*
>(m_rod_header),
193 reinterpret_cast<const void*
>(other.m_node[3].base),
195 memcpy(
reinterpret_cast<void*
>(m_rod_trailer),
196 reinterpret_cast<const void*
>(other.m_node[6].base),
200 set(m_node[0], m_header, 6, &m_node[1]);
201 set(m_node[1], other.m_node[1].base, other.m_node[1].size_word, &m_node[2]);
202 set(m_node[2], &m_header[6], 1, &m_node[3]);
204 set(m_node[3], m_rod_header, 9, &m_node[4]);
205 set(m_node[4], other.m_node[4].base,
206 other.m_node[4].size_word, &m_node[5]);
207 set(m_node[5], other.m_node[5].base,
208 other.m_node[5].size_word, &m_node[6]);
211 set(m_node[3], m_rod_header, 9, &m_node[5]);
212 set(m_node[5], other.m_node[5].base,
213 other.m_node[5].size_word, &m_node[4]);
214 set(m_node[4], other.m_node[4].base,
215 other.m_node[4].size_word, &m_node[6]);
217 set(m_node[6], m_rod_trailer, 3, 0);
218 ERS_DEBUG_3(
"%s Source Id. = 0x%x., LVL1 Id. = %d, Run Number = %d",
219 "Copied (write) rob/rod fragment with",
227 if (m_parent) m_parent->size_change(m_node[0].base[1],
228 m_node[0].base[1]-m_node[0].base[5]+
n);
229 m_node[0].base[1] -= m_node[0].base[5];
230 m_node[0].base[2] -= m_node[0].base[5];
231 m_node[1].size_word = m_node[0].base[5] =
n;
232 m_node[0].base[1] +=
n;
233 m_node[0].base[2] +=
n;
234 m_node[1].base =
const_cast<uint32_t*
>(status);
238 const uint32_t* status)
240 if (m_parent) m_parent->size_change(m_node[0].base[1],
241 m_node[0].base[1]-m_node[6].base[0]+
n);
242 m_node[0].base[1] -= m_node[6].base[0];
243 m_node[4].size_word = m_node[6].base[0] =
n;
244 m_node[0].base[1] +=
n;
245 m_node[4].base =
const_cast<uint32_t*
>(status);
250 if (
v == m_node[6].base[2])
return;
251 m_node[6].base[2] =
v;
253 m_node[3].next = &m_node[4];
254 m_node[4].next = &m_node[5];
255 m_node[5].next = &m_node[6];
258 m_node[3].next = &m_node[5];
259 m_node[5].next = &m_node[4];
260 m_node[4].next = &m_node[6];
266 if (m_parent) m_parent->size_change(m_node[0].base[1],
267 m_node[0].base[1]-m_node[6].base[1]+
n);
270 m_node[0].base[1] -= m_node[6].base[1];
271 m_node[5].size_word = m_node[6].base[1] =
n;
272 m_node[0].base[1] +=
n;
273 m_node[5].base =
const_cast<uint32_t*
>(
data);
**********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