ATLAS Offline Software
Functions
offline_eformat::v50 Namespace Reference

Functions

uint32_t convert_to_40 (const uint32_t *src, uint32_t *dest, uint32_t max, eformat::CheckSum event_checksum, eformat::CheckSum rob_checksum)
 

Function Documentation

◆ convert_to_40()

uint32_t offline_eformat::v50::convert_to_40 ( const uint32_t *  src,
uint32_t *  dest,
uint32_t  max,
eformat::CheckSum  event_checksum,
eformat::CheckSum  rob_checksum 
)

Definition at line 42 of file v50_util.cxx.

46 {
47  // this has to do the opposite of what eformat::v40::convert
48  // is doing (for current = v50).
49 
50  eformat::helper::Version version(0, eformat::MAJOR_V40_VERSION);
51 
53  fe.check(); //this may throw
54 
55  // new version has 64-bit global id, cast it explicitly
56  uint32_t global_id = static_cast<uint32_t>(fe.global_id());
57 
58  //create the base FullEvent
59  v40_write::FullEventFragment nfe(fe.source_id(), fe.bc_time_seconds(),
60  fe.bc_time_nanoseconds(),
61  global_id, fe.run_type(),
62  fe.run_no(), fe.lumi_block(),
63  fe.lvl1_id(), fe.bc_id(),
64  fe.lvl1_trigger_type());
65 
66  nfe.lvl1_trigger_info(fe.nlvl1_trigger_info(), fe.lvl1_trigger_info());
67  nfe.lvl2_trigger_info(fe.nlvl2_trigger_info(), fe.lvl2_trigger_info());
68  nfe.event_filter_info(fe.nevent_filter_info(), fe.event_filter_info());
69  nfe.stream_tag(fe.nstream_tag(), fe.stream_tag());
70  nfe.status(fe.nstatus(), fe.status());
71  nfe.minor_version(version.minor_version());
72  nfe.checksum_type(event_checksum);
73 
74  std::vector<v40_write::ROBFragment*> acc_rob;
75  for (size_t i=0; i<fe.nchildren(); ++i) {
76  try {
77  eformat::read::ROBFragment rob(fe.child(i));
78  rob.check(MAJOR_V50_VERSION);
80  new v40_write::ROBFragment(rob.source_id(),
81  rob.rod_run_no(),
82  rob.rod_lvl1_id(), rob.rod_bc_id(),
83  rob.rod_lvl1_trigger_type(),
84  rob.rod_detev_type(),
85  rob.rod_ndata(), rob.rod_data(),
86  rob.rod_status_position());
87  nrob->status(rob.nstatus(), rob.status());
88  nrob->rod_status(rob.rod_nstatus(), rob.rod_status());
89  eformat::helper::Version rob_version(rob.rod_version());
90  nrob->minor_version(rob_version.minor_version());
91  eformat::helper::Version rod_version(rob.rod_version());
92  nrob->rod_minor_version(rod_version.minor_version());
93  nrob->checksum_type(rob_checksum);
94 
95  //make this new ROB part of the new ROS
96  nfe.append(nrob);
97  //make sure we don't forget to delete this guy
98  acc_rob.push_back(nrob);
99  }
100  catch (eformat::Issue& e) {
101  ers::warning(e);
102  ers::warning(EFORMAT_SKIPPED_FRAGMENT("ROB","FULL_EVENT",0));
103  //we skip this fragment, but do not loose the whole event
104  continue;
105  }
106  }
107 
108  //now the FullEvent is in `nfe', bind
109  const eformat::write::node_t* top = nfe.bind();
110  //memcpy the list of pages into contiguous memory
112 
113  //delete the allocated stuff
114  for (size_t i=0; i<acc_rob.size(); ++i) delete acc_rob[i];
115 
116  return retval;
117 }
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
max
#define max(a, b)
Definition: cfImp.cxx:41
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
WriteCellNoiseToCool.src
src
Definition: WriteCellNoiseToCool.py:513
Issue
Configuration Issue
Definition: PscIssues.h:31
EFORMAT_SKIPPED_FRAGMENT
#define EFORMAT_SKIPPED_FRAGMENT(ftype, ptype, sid)
perfmonmt-printer.dest
dest
Definition: perfmonmt-printer.py:189
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment
eformat::FullEventFragment< PointerType > FullEventFragment
Definition: RawEvent.h:26
LArCellBinning_test.retval
def retval
Definition: LArCellBinning_test.py:112
lumiFormat.i
int i
Definition: lumiFormat.py:85
OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment
eformat::ROBFragment< PointerType > ROBFragment
Definition: RawEvent.h:27
get_generator_info.version
version
Definition: get_generator_info.py:33
top
@ top
Definition: TruthClasses.h:64
calibdata.copy
bool copy
Definition: calibdata.py:27