CbmRoot
Loading...
Searching...
No Matches
TimeslicedDigiUnpacker.h
Go to the documentation of this file.
1/* Copyright (C) 2025 Jagiellonian University, Krakow
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Bartosz Sobol [committer] */
4
5#pragma once
6
8
9#include <boost/archive/binary_iarchive.hpp>
10#include <boost/iostreams/device/array.hpp>
11#include <boost/iostreams/stream.hpp>
12#include <boost/serialization/vector.hpp>
13
14
16{
17
18 template<class Digi, class MSMonitor, class MSAux>
19 class UnpackMS : public UnpackMSBase<Digi, MSMonitor, MSAux> {
21
22 public:
23 Result_t operator()(const uint8_t* msContent, const fles::MicrosliceDescriptor& msDescr,
24 const uint64_t /*tTimeslice*/) const override
25 {
26 Result_t result{};
27 auto& digis = std::get<0>(result);
28
29 boost::iostreams::basic_array_source<char> device((char*) msContent, msDescr.size);
30 boost::iostreams::stream<boost::iostreams::basic_array_source<char>> stream(device);
31 boost::archive::binary_iarchive{stream} >> digis;
32
33 return result;
34 }
35 };
36
37} // namespace cbm::algo::vt
std::tuple< std::vector< Digi_t >, Monitor_t, Aux_t > Result_t
Result_t operator()(const uint8_t *msContent, const fles::MicrosliceDescriptor &msDescr, const uint64_t) const override
typename UnpackMSBase< Digi, MSMonitor, MSAux >::Result_t Result_t