46{
47
48
49
50 eformat::helper::Version version(0, eformat::MAJOR_V40_VERSION);
51
52 eformat::read::FullEventFragment fe(src);
53 fe.check();
54
55
56 uint32_t global_id = static_cast<uint32_t>(fe.global_id());
57
58
59 auto nfe = std::make_unique<v40_write::FullEventFragment>
60 (fe.source_id(), fe.bc_time_seconds(),
61 fe.bc_time_nanoseconds(),
62 global_id, fe.run_type(),
63 fe.run_no(), fe.lumi_block(),
64 fe.lvl1_id(), fe.bc_id(),
65 fe.lvl1_trigger_type());
66
67 nfe->lvl1_trigger_info(fe.nlvl1_trigger_info(), fe.lvl1_trigger_info());
68 nfe->lvl2_trigger_info(fe.nlvl2_trigger_info(), fe.lvl2_trigger_info());
69 nfe->event_filter_info(fe.nevent_filter_info(), fe.event_filter_info());
70 nfe->stream_tag(fe.nstream_tag(), fe.stream_tag());
71 nfe->status(fe.nstatus(), fe.status());
72 nfe->minor_version(version.minor_version());
73 nfe->checksum_type(event_checksum);
74
75 std::vector<v40_write::ROBFragment*> acc_rob;
76 for (size_t i=0; i<fe.nchildren(); ++i) {
77 try {
78 eformat::read::ROBFragment rob(fe.child(i));
79 rob.check(MAJOR_V50_VERSION);
82 rob.rod_run_no(),
83 rob.rod_lvl1_id(), rob.rod_bc_id(),
84 rob.rod_lvl1_trigger_type(),
85 rob.rod_detev_type(),
86 rob.rod_ndata(), rob.rod_data(),
87 rob.rod_status_position());
88 nrob->
status(rob.nstatus(), rob.status());
89 nrob->
rod_status(rob.rod_nstatus(), rob.rod_status());
90 eformat::helper::Version rob_version(rob.rod_version());
92 eformat::helper::Version rod_version(rob.rod_version());
95
96
97 nfe->append(nrob);
98
99 acc_rob.push_back(nrob);
100 }
101 catch (eformat::Issue& e) {
102 ers::warning(e);
104
105 continue;
106 }
107 }
108
109
110 const eformat::write::node_t*
top = nfe->bind();
111
113
114
115 for (
size_t i=0;
i<acc_rob.size(); ++
i)
delete acc_rob[i];
116
118}
#define EFORMAT_SKIPPED_FRAGMENT(ftype, ptype, sid)