57 std::unique_ptr<PixelRDO_Container> rdoCont = std::make_unique<PixelRDO_Container>(
m_idHelper->wafer_hash_max());
66 fmt.options.en_chip_id =
true;
67 fmt.options.en_eos =
true;
69 DecCore<PixelCallbacks::RDOCallback> core(
fmt, cb);
73 std::vector<const eformat::ROBFragment<const uint32_t*>*> ROBs;
81 std::vector<uint64_t> payload64;
82 std::array<std::vector<uint64_t>, 4> split_streams;
83 for (
const auto& ROB : ROBs){
84 const uint32_t* payload = ROB->rod_data();
85 uint32_t
length = ROB->rod_ndata();
91 payload64.resize(
length / 2);
92 for (uint32_t word = 0; word <
length; word += 2){
93 payload64[word / 2] = ((uint64_t)(payload[word]) << 32) | payload[word + 1];
110 core.decode(payload64);
114 for (
auto &v : split_streams) v.clear();
115 for (
const uint64_t& word64: payload64) split_streams[(word64 >> 61) & 0b11].push_back(word64);
116 for (uint8_t chipID = 0; chipID < 4; chipID++){
117 if (!split_streams[chipID].
empty()){
119 core.decode(split_streams[chipID]);
129 return StatusCode::SUCCESS;