32 uint16_t
id = old_id & 0x00ff;
33 uint8_t sd = ( old_id >> 8 ) & 0xff;
34 uint8_t md = ( old_id >> 16 ) & 0xff;
108 "Propose an equivalent of the source identifier 0x", old_id,
109 " [v2.4], for the 3.0 format, to eformat developers.",
110 "The subdetector identifier field will be zero'd for now.");
128 "Propose an equivalent of the source identifier 0x", old_id,
129 " [v2.4], for the 3.0 format, to eformat developers.",
130 "The subdetector identifier field will be zero'd for now.");
139 "Propose an equivalent of the source identifier 0x", old_id,
140 " [v2.4], for the 3.0 format, to eformat developers.",
141 "The subdetector identifier field will be zero'd for now.");
150 "Propose an equivalent of the source identifier 0x", old_id,
151 " [v2.4], for the 3.0 format, to eformat developers.",
152 "The subdetector identifier field will be zero'd for now.");
157 ERS_DEBUG_3(
"Source identifier 0x%x [v2.4] was converted to 0x%x [v3.0]",
176uint32_t
convert_ros(
const uint32_t* src, uint32_t* dest, uint32_t max)
186 if (version.
major2() == MAJOR_DEFAULT_VERSION) {
187 memcpy(dest, src,
sizeof(uint32_t)*src[1]);
190 if (version.
major2() != MAJOR_OLD_VERSION)
207 std::vector<eformat::write::ROBFragment*> acc_rob;
209 for (
size_t k=0; k<ros.
noffset(); ++k) {
213 for (
size_t l=0; l<rob.
noffset(); ++l) {
220 (old::convert_source(source_id), rod.
run_no(), rod.
lvl1_id(),
233 acc_rob.push_back(nrob);
243 for (
size_t i=0; i<acc_rob.size(); ++i)
delete acc_rob[i];
263 memcpy(dest, src,
sizeof(uint32_t)*src[1]);
288 std::vector<eformat::write::SubDetectorFragment*> acc_sd;
289 std::vector<eformat::write::ROSFragment*> acc_ros;
290 std::vector<eformat::write::ROBFragment*> acc_rob;
292 for (
size_t i=0; i<fe.
noffset(); ++i) {
305 for (
size_t j=0; j<sd.
noffset(); ++j) {
319 for (
size_t k=0; k<ros.
noffset(); ++k) {
323 for (
size_t l=0; l<rob.
noffset(); ++l) {
343 acc_rob.push_back(nrob);
349 acc_ros.push_back(nros);
354 acc_sd.push_back(nsd);
363 for (
size_t i=0; i<acc_rob.size(); ++i)
delete acc_rob[i];
364 for (
size_t i=0; i<acc_ros.size(); ++i)
delete acc_ros[i];
365 for (
size_t i=0; i<acc_sd.size(); ++i)
delete acc_sd[i];
Exception thrown when versions do not match.
#define EFORMAT_BAD_VERSION(current, supported)
Definition of the ROD header entity, following the description of the Event Format note,...
Declares a type that can perform the conversion between source identifier components and the its 32-b...
Defines a helper class to encode and decode version numbers.
Defines the wrong-marker exception, to be used when the wrong marker is found on the event stream.
#define EFORMAT_WRONG_MARKER(current, expected)
Defines the Event Fragment entity. The definition is based on the update of ATL-DAQ-98-129,...
Defines the ROB fragment entity as described in the Event Format note.
Describes the ROS fragment as defined in the Event Format note, version 2.4.
Defines the subdetector fragment entity. The definition is based on the update of ATL-DAQ-98-129,...
A set of utilities to convert old eformat (v2.4) tags into new (v3) ones.
uint32_t convert_ros(const uint32_t *src, uint32_t *dest, uint32_t max)
Helps the user to define and build a FullEvent fragment.