48 {
49
51
52 ATH_MSG_DEBUG(
"original BS size = " << 4 * orgEvent->fragment_size_word());
53 ATH_MSG_DEBUG(
"athena BS size = " << 4 * newEvent->fragment_size_word());
54
55
56
58 std::vector<OFFLINE_FRAGMENTS_NAMESPACE::PointerType> orgRobF(
MAX_ROBFRAGMENTS);
59 std::vector<OFFLINE_FRAGMENTS_NAMESPACE::PointerType> newRobF(
MAX_ROBFRAGMENTS);
63 return false;
64 }
68 return false;
69 }
70
72
73 for (size_t irob = 0; irob < orgrobcount; ++irob) {
76 ATH_MSG_DEBUG(
"original ROBFragment, src ID = " << std::hex << rob->source_id());
77 }
78
79 for (size_t irob = 0; irob < newrobcount; ++irob) {
81 ROBMAP::const_iterator
it = robsToAdd.find(
reducedROBid(rob->source_id()));
82 if (it != robsToAdd.end()) {
84 ATH_MSG_DEBUG(
"overwriting ROBFragment with src ID = " << std::hex << rob->source_id());
85 }
87 ATH_MSG_DEBUG(
"new ROBFragment, src ID = " << std::hex << rob->source_id());
88 }
90
93 event = newEvent;
94 }
95 mergedEventWrite->source_id(
event->source_id());
96 mergedEventWrite->bc_time_seconds(
event->bc_time_seconds());
97 mergedEventWrite->bc_time_nanoseconds(
event->bc_time_nanoseconds());
98 mergedEventWrite->global_id(
event->global_id());
99 mergedEventWrite->run_type(
event->run_type());
100 mergedEventWrite->run_no(
event->run_no());
101 mergedEventWrite->lumi_block(
event->lumi_block());
102 mergedEventWrite->lvl1_id(
event->lvl1_id());
103 mergedEventWrite->bc_id(
event->bc_id());
104 mergedEventWrite->lvl1_trigger_type(
event->lvl1_trigger_type());
106 event->status(tmp);
107 mergedEventWrite->status(
event->nstatus(), tmp);
108 event->lvl1_trigger_info(tmp);
109 mergedEventWrite->lvl1_trigger_info(
event->nlvl1_trigger_info(), tmp);
110 event->lvl2_trigger_info(tmp);
111 mergedEventWrite->lvl2_trigger_info(
event->nlvl2_trigger_info(), tmp);
112 event->event_filter_info(tmp);
113 mergedEventWrite->event_filter_info(
event->nevent_filter_info(), tmp);
114 event->stream_tag(tmp);
115 mergedEventWrite->stream_tag(
event->nstream_tag(), tmp);
116 mergedEventWrite->checksum_type(
event->checksum_type());
117
118 for(ROBMAP::iterator it = robsToAdd.begin(), itEnd = robsToAdd.end(); it != itEnd; ++it) {
119 mergedEventWrite->append(
it->second);
120 }
121
122 uint32_t rawSize = mergedEventWrite->size_word();
124 uint32_t count = eformat::write::copy(*(mergedEventWrite->bind()), buffer, rawSize);
125 if (
count != rawSize) {
127 return false;
128 }
131 for(ROBMAP::iterator it = robsToAdd.begin(), itEnd = robsToAdd.end(); it != itEnd; ++it) {
132 delete it->second;
it->second =
nullptr;
133 }
134 delete mergedEventWrite; mergedEventWrite = nullptr;
136 if (
sc != StatusCode::SUCCESS) {
138 }
139 return(true);
140}
std::map< uint32_t, ROBF * > ROBMAP
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::ROBFragment ROBF
static const size_t MAX_ROBFRAGMENTS
OFFLINE_FRAGMENTS_NAMESPACE_WRITE::FullEventFragment RawEventWrite
data type for writing raw event
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Gaudi::Property< bool > m_overwriteHeader
uint32_t reducedROBid(uint32_t)
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
::StatusCode StatusCode
StatusCode definition for legacy code.