8 #include "GaudiKernel/GenericAddress.h" 
    9 #include "GaudiKernel/MsgStream.h" 
   10 #include "GaudiKernel/ISvcLocator.h" 
   12 #include "eformat/SourceIdentifier.h" 
   17 typedef std::map<uint32_t, ROBF*> 
ROBMAP;
 
   21    base_class(
name,svcloc)
 
   36    return(StatusCode::SUCCESS);
 
   43    eformat::helper::SourceIdentifier 
id = eformat::helper::SourceIdentifier(source_id);
 
   44    if (
id.subdetector_id() == eformat::TDAQ_LVL2 || 
id.subdetector_id() == eformat::TDAQ_EVENT_FILTER) {
 
   45       return(eformat::helper::SourceIdentifier(
id.subdetector_id(), 0).
code());
 
   56    ATH_MSG_DEBUG(
"original BS size = " << 4 * orgEvent->fragment_size_word());
 
   57    ATH_MSG_DEBUG(
"athena BS size = " << 4 * newEvent->fragment_size_word());
 
   61    const size_t MAX_ROBFRAGMENTS = 2048;
 
   62    std::vector<OFFLINE_FRAGMENTS_NAMESPACE::PointerType> orgRobF(MAX_ROBFRAGMENTS);
 
   63    std::vector<OFFLINE_FRAGMENTS_NAMESPACE::PointerType> newRobF(MAX_ROBFRAGMENTS);
 
   64    size_t orgrobcount = orgEvent->children(orgRobF.data(), MAX_ROBFRAGMENTS);
 
   65    if (orgrobcount == MAX_ROBFRAGMENTS) {
 
   69    size_t newrobcount = newEvent->children(newRobF.data(),MAX_ROBFRAGMENTS);
 
   70    if (newrobcount == MAX_ROBFRAGMENTS) {
 
   77    for (
size_t irob = 0; irob < orgrobcount; ++irob) {
 
   80       ATH_MSG_DEBUG(
"original ROBFragment, src ID = " << std::hex << rob->source_id());
 
   83    for (
size_t irob = 0; irob < newrobcount; ++irob) {
 
   85       ROBMAP::const_iterator 
it = robsToAdd.find(
reducedROBid(rob->source_id()));
 
   86       if (
it != robsToAdd.end()) {
 
   88      ATH_MSG_DEBUG(
"overwriting ROBFragment with src ID = " << std::hex << rob->source_id());
 
   91       ATH_MSG_DEBUG(
"new ROBFragment, src ID = " << std::hex << rob->source_id());
 
   99    mergedEventWrite->source_id(
event->source_id());
 
  100    mergedEventWrite->bc_time_seconds(
event->bc_time_seconds());
 
  101    mergedEventWrite->bc_time_nanoseconds(
event->bc_time_nanoseconds());
 
  102    mergedEventWrite->global_id(
event->global_id());
 
  103    mergedEventWrite->run_type(
event->run_type());
 
  104    mergedEventWrite->run_no(
event->run_no());
 
  105    mergedEventWrite->lumi_block(
event->lumi_block());
 
  106    mergedEventWrite->lvl1_id(
event->lvl1_id());
 
  107    mergedEventWrite->bc_id(
event->bc_id());
 
  108    mergedEventWrite->lvl1_trigger_type(
event->lvl1_trigger_type());
 
  111    mergedEventWrite->status(
event->nstatus(), 
tmp);
 
  112    event->lvl1_trigger_info(
tmp);
 
  113    mergedEventWrite->lvl1_trigger_info(
event->nlvl1_trigger_info(), 
tmp);
 
  114    event->lvl2_trigger_info(
tmp);
 
  115    mergedEventWrite->lvl2_trigger_info(
event->nlvl2_trigger_info(), 
tmp);
 
  116    event->event_filter_info(
tmp);
 
  117    mergedEventWrite->event_filter_info(
event->nevent_filter_info(), 
tmp);
 
  118    event->stream_tag(
tmp);
 
  119    mergedEventWrite->stream_tag(
event->nstream_tag(), 
tmp);
 
  120    mergedEventWrite->checksum_type(
event->checksum_type());
 
  123       mergedEventWrite->append(
it->second);
 
  126    uint32_t rawSize = mergedEventWrite->size_word();
 
  129    if (
count != rawSize) {
 
  136       delete it->second; 
it->second = 0;
 
  138    delete mergedEventWrite; mergedEventWrite = 0;
 
  140    if (
sc != StatusCode::SUCCESS) {
 
  147   ATH_MSG_FATAL(
name() << 
" does not implement the context-aware putEvent method");