DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
time_slice.cpp
Go to the documentation of this file.
1
11
12#include <pybind11/pybind11.h>
13#include <pybind11/stl.h>
14
15#include <memory>
16#include <vector>
17
18namespace py = pybind11;
19
20namespace dunedaq {
21namespace daqdataformats {
22namespace python {
23
24void
25register_timeslice(py::module& m)
26{
27 py::class_<TimeSliceHeader>(m, "TimeSliceHeader")
28 .def_property_readonly_static("s_timeslice_header_marker",
29 [](const TimeSliceHeader& self) -> uint32_t { // NOLINT(build/unsigned)
30 return self.s_timeslice_header_marker;
31 })
32 .def_property_readonly_static("s_timeslice_header_version",
33 [](const TimeSliceHeader& self) -> uint32_t { // NOLINT(build/unsigned)
35 })
36 .def_property_readonly("timeslice_header_marker",
37 [](const TimeSliceHeader& self) -> uint32_t { // NOLINT(build/unsigned)
38 return self.timeslice_header_marker;
39 })
40 .def_property_readonly(
41 "version", [](const TimeSliceHeader& self) -> uint32_t { return self.version; }) // NOLINT(build/unsigned)
42 .def_property_readonly("timeslice_number",
43 [](const TimeSliceHeader& self) -> timeslice_number_t { return self.timeslice_number; })
44
45 .def_property_readonly("run_number", [](const TimeSliceHeader& self) -> run_number_t { return self.run_number; });
46
47 py::class_<TimeSlice> py_timeslice(m, "TimeSlice", pybind11::buffer_protocol());
48 py_timeslice.def(py::init<TimeSliceHeader const&>())
49 .def(py::init<timeslice_number_t, run_number_t>())
50 .def(
51 "get_header", [](TimeSlice& self) { return self.get_header(); }, py::return_value_policy::reference_internal)
52 // .def("set_header", &TimeSlice::set_header)
53 .def(
54 "get_fragments_ref",
55 [](TimeSlice& self) {
56 auto fragments = py::list();
57 for (auto& fragment : self.get_fragments_ref()) {
58 auto py_fragment = py::cast(*fragment, py::return_value_policy::reference);
59 fragments.append(py_fragment);
60 }
61 return fragments;
62 },
63 py::return_value_policy::reference_internal)
64 .def("get_total_size_bytes", &TimeSlice::get_total_size_bytes)
65 .def("get_sum_of_fragment_payload_sizes", &TimeSlice::get_sum_of_fragment_payload_sizes);
66} // NOLINT
67
68} // namespace python
69} // namespace daqdataformats
70} // namespace dunedaq
C++ Representation of a DUNE TimeSlice, consisting of a TimeSliceHeader object and a vector of pointe...
Definition TimeSlice.hpp:27
size_t get_total_size_bytes() const
Get size of timeslice from underlying TimeSliceHeader and Fragments.
Definition TimeSlice.hpp:85
size_t get_sum_of_fragment_payload_sizes() const
Get the sum of the fragment payload sizes.
Definition TimeSlice.hpp:98
void register_timeslice(py::module &)
uint32_t run_number_t
Type used to represent run number.
Definition Types.hpp:20
uint64_t timeslice_number_t
Type used to represent timeslice number.
Definition Types.hpp:49
Including Qt Headers.
Additional data fields associated with a TimeSliceHeader.
static constexpr uint32_t s_timeslice_header_marker
Marker bytes to identify a TimeSliceHeader entry in a raw data stream.
run_number_t run_number
Run Number for the TimeSlice.
uint32_t version
Version of the TimeSliceHeader structure.
uint32_t timeslice_header_marker
Marker bytes used to identify a TimeSliceHeader struct in a raw data stream.
static constexpr uint32_t s_timeslice_header_version
The current version of the TimeSliceHeader.
timeslice_number_t timeslice_number
Slice number of this TimeSlice within the stream.