DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
unpack.cpp
Go to the documentation of this file.
1
8
15
16#include <pybind11/numpy.h>
17#include <pybind11/pybind11.h>
18#include <pybind11/stl.h>
19
20#include <fmt/core.h>
21
22namespace py = pybind11;
23
24namespace dunedaq {
25namespace rawdatautils {
26
28 uint64_t* data = static_cast<uint64_t*>(frag.get_data());
29 size_t data_size = (frag.get_size() - sizeof(daqdataformats::FragmentHeader))/8;
30
31 for ( size_t i(0); i<data_size; ++i) {
32 fmt::print("{:06d} 0x{:016x}\n", i, data[i]);
33 }
34
35}
36
37namespace wibeth {
38 extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
39 extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
40 extern py::array_t<uint16_t> np_array_adc_data(void* data, uint32_t n_frames);
41 extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment const& frag);
42 extern py::array_t<uint64_t> np_array_timestamp_data(void* data, uint32_t n_frames);
43}
44
45
46namespace daphne {
47 extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
48 extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
49 extern py::array_t<uint8_t> np_array_channels(daqdataformats::Fragment& frag);
50 extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
51 extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment& frag);
52 extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
53 extern py::array_t<uint8_t> np_array_channels_data(void* data, int nframes);
54
55 extern uint32_t get_n_frames_stream(daqdataformats::Fragment const& frag);
56 extern py::array_t<uint16_t> np_array_adc_stream(daqdataformats::Fragment& frag);
57 extern py::array_t<uint8_t> np_array_channels_stream(daqdataformats::Fragment& frag);
58 extern py::array_t<uint16_t> np_array_adc_stream_data(void* data, int nframes);
59 extern py::array_t<uint64_t> np_array_timestamp_stream(daqdataformats::Fragment& frag);
60 extern py::array_t<uint64_t> np_array_timestamp_stream_data(void* data, int nframes);
61 extern py::array_t<uint8_t> np_array_channels_stream_data(void* data, int nframes);
62
63}
64
65namespace daphneeth {
66 extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
67 extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment& frag);
68 extern py::array_t<uint8_t> np_array_channels(daqdataformats::Fragment& frag);
69 extern py::array_t<uint16_t> np_array_adc_data(void* data, int nframes);
70 extern py::array_t<uint64_t> np_array_timestamp(daqdataformats::Fragment& frag);
71 extern py::array_t<uint64_t> np_array_timestamp_data(void* data, int nframes);
72 extern py::array_t<uint8_t> np_array_channels_data(void* data, int nframes);
73
74 extern uint32_t get_n_frames_stream(daqdataformats::Fragment const& frag);
75 extern py::array_t<uint16_t> np_array_adc_stream(daqdataformats::Fragment& frag);
76 extern py::array_t<uint8_t> np_array_channels_stream(daqdataformats::Fragment& frag);
77 extern py::array_t<uint16_t> np_array_adc_stream_data(void* data, int nframes);
78 extern py::array_t<uint64_t> np_array_timestamp_stream(daqdataformats::Fragment& frag);
79 extern py::array_t<uint64_t> np_array_timestamp_stream_data(void* data, int nframes);
80 extern py::array_t<uint8_t> np_array_channels_stream_data(void* data, int nframes);
81
82}
83
84namespace tde {
85 extern uint32_t get_n_frames(daqdataformats::Fragment const& frag);
86 extern py::array_t<uint16_t> np_array_adc(daqdataformats::Fragment const& frag);
87 extern py::array_t<uint16_t> np_array_adc_data(void* data, uint32_t n_frames);
88 extern py::array_t<long double> np_array_timestamp(daqdataformats::Fragment const& frag);
89 extern py::array_t<long double> np_array_timestamp_data(void* data, uint32_t n_frames);
90
91}
92
93namespace unpack {
94namespace python {
95
96void
97register_unpack(py::module& m) {
98
99 m.def("print_hex_fragment", &print_hex_fragment);
100
101 py::module_ wibeth_module = m.def_submodule("wibeth");
102 wibeth_module.def("get_n_frames", &wibeth::get_n_frames);
103 wibeth_module.def("np_array_adc", &wibeth::np_array_adc);
104 wibeth_module.def("np_array_timestamp", &wibeth::np_array_timestamp);
105 wibeth_module.def("np_array_adc_data", &wibeth::np_array_adc_data);
106 wibeth_module.def("np_array_timestamp_data", &wibeth::np_array_timestamp_data);
107
108 py::module_ daphne_module = m.def_submodule("daphne");
109 daphne_module.def("get_n_frames", &daphne::get_n_frames);
110 daphne_module.def("np_array_adc", &daphne::np_array_adc);
111 daphne_module.def("np_array_timestamp", &daphne::np_array_timestamp);
112 daphne_module.def("np_array_adc_data", &daphne::np_array_adc_data);
113 daphne_module.def("np_array_timestamp_data", &daphne::np_array_timestamp_data);
114 daphne_module.def("np_array_channels_data", &daphne::np_array_channels_data);
115 daphne_module.def("np_array_channels", &daphne::np_array_channels);
116
117 daphne_module.def("get_n_frames_stream", &daphne::get_n_frames_stream);
118 daphne_module.def("np_array_adc_stream", &daphne::np_array_adc_stream);
119 daphne_module.def("np_array_timestamp_stream", &daphne::np_array_timestamp_stream);
120 daphne_module.def("np_array_adc_stream_data", &daphne::np_array_adc_stream_data);
121 daphne_module.def("np_array_timestamp_stream_data", &daphne::np_array_timestamp_stream_data);
122 daphne_module.def("np_array_channels_stream_data", &daphne::np_array_channels_stream_data);
123 daphne_module.def("np_array_channels_stream", &daphne::np_array_channels_stream);
124
125 py::module_ daphneeth_module = m.def_submodule("daphneeth");
126 daphneeth_module.def("get_n_frames", &daphneeth::get_n_frames);
127 daphneeth_module.def("np_array_adc", &daphneeth::np_array_adc);
128 daphneeth_module.def("np_array_timestamp", &daphneeth::np_array_timestamp);
129 daphneeth_module.def("np_array_adc_data", &daphneeth::np_array_adc_data);
130 daphneeth_module.def("np_array_timestamp_data", &daphneeth::np_array_timestamp_data);
131 daphneeth_module.def("np_array_channels_data", &daphneeth::np_array_channels_data);
132 daphneeth_module.def("np_array_channels", &daphneeth::np_array_channels);
133
134 daphneeth_module.def("get_n_frames_stream", &daphneeth::get_n_frames_stream);
135 daphneeth_module.def("np_array_adc_stream", &daphneeth::np_array_adc_stream);
136 daphneeth_module.def("np_array_timestamp_stream", &daphneeth::np_array_timestamp_stream);
137 daphneeth_module.def("np_array_adc_stream_data", &daphneeth::np_array_adc_stream_data);
138 daphneeth_module.def("np_array_timestamp_stream_data", &daphneeth::np_array_timestamp_stream_data);
139 daphneeth_module.def("np_array_channels_stream_data", &daphneeth::np_array_channels_stream_data);
140 daphneeth_module.def("np_array_channels_stream", &daphneeth::np_array_channels_stream);
141
142 py::module_ tde_module = m.def_submodule("tde");
143 tde_module.def("get_n_frames", &tde::get_n_frames);
144 tde_module.def("np_array_adc", &tde::np_array_adc);
145 tde_module.def("np_array_timestamp", &tde::np_array_timestamp);
146 tde_module.def("np_array_adc_data", &tde::np_array_adc_data);
147 tde_module.def("np_array_timestamp_data", &tde::np_array_timestamp_data);
148
149}
150
151} // namespace python
152} // namespace rawdatautils
153} // namespace dunedaq
154}
C++ Representation of a DUNE Fragment, wrapping the flat byte array that is the Fragment's "actual" f...
Definition Fragment.hpp:38
void * get_data() const
Get a pointer to the data payload in the Fragmnet.
Definition Fragment.hpp:153
fragment_size_t get_size() const
Get the total size of the Fragment in bytes, including header and all payload pieces.
Definition Fragment.hpp:147
py::array_t< uint16_t > np_array_adc_stream(daqdataformats::Fragment &frag)
Unpacks a Fragment containing DAPHNEStreamFrames into a numpy array with the ADC values and dimensi...
py::array_t< uint8_t > np_array_channels_stream(daqdataformats::Fragment &frag)
Unpacks channel numbers for Fragment that contains DAPHNEStreamFrames into a numpy array with dimensi...
py::array_t< uint64_t > np_array_timestamp_stream_data(void *data, int nframes)
Unpacks data containing DAPHNEStreamFrames into a numpy array with the timestamps with dimension (n...
py::array_t< uint16_t > np_array_adc_stream_data(void *data, int nframes)
Unpacks data containing DAPHNEStreamFrames into a numpy array with the ADC values and dimension (nu...
py::array_t< uint64_t > np_array_timestamp_stream(daqdataformats::Fragment &frag)
Unpacks the timestamps in a Fragment containing DAPHNEStreamFrames into a numpy array with dimensio...
uint32_t get_n_frames(daqdataformats::Fragment const &frag)
Gets number of DAPHNEFrames in a fragment.
py::array_t< uint8_t > np_array_channels_data(void *data, int nframes)
Unpacks channel numbers for DAPHNEFrames into a numpy array with dimensions (nframes).
uint32_t get_n_frames_stream(daqdataformats::Fragment const &frag)
Gets number of DAPHNEStreamFrames in a fragment.
py::array_t< uint8_t > np_array_channels_stream_data(void *data, int nframes)
Unpacks channel numbers for DAPHNEStreamFrames into a numpy array with dimensions (nframes,...
py::array_t< uint8_t > np_array_channels(daqdataformats::Fragment &frag)
Unpacks channel numbers for Fragment that contains DAPHNEFrames into a numpy array with dimensions.
py::array_t< uint64_t > np_array_timestamp_data(void *data, int nframes)
Unpacks data containing DAPHNEFrames into a numpy array with the timestamps with dimension (number of...
py::array_t< uint64_t > np_array_timestamp(daqdataformats::Fragment &frag)
Unpacks the timestamps in a Fragment containing WIBFrames into a numpy array with dimension (number o...
py::array_t< uint16_t > np_array_adc(daqdataformats::Fragment &frag)
Unpacks a Fragment containing DAPHNEFrames into a numpy array with the ADC values and dimension (numb...
py::array_t< uint16_t > np_array_adc_data(void *data, int nframes)
Unpacks data containing DAPHNEFrames into a numpy array with the ADC values and dimension (number of ...
py::array_t< uint16_t > np_array_adc_stream(daqdataformats::Fragment &frag)
Unpacks a Fragment containing DAPHNEStreamFrames into a numpy array with the ADC values and dimensi...
uint32_t get_n_frames(daqdataformats::Fragment const &frag)
Gets number of DAPHNEFrames in a fragment.
py::array_t< uint64_t > np_array_timestamp(daqdataformats::Fragment &frag)
Unpacks the timestamps in a Fragment containing WIBFrames into a numpy array with dimension (number o...
py::array_t< uint8_t > np_array_channels_data(void *data, int nframes)
Unpacks channel numbers for DAPHNEFrames into a numpy array with dimensions (nframes).
py::array_t< uint8_t > np_array_channels(daqdataformats::Fragment &frag)
Unpacks channel numbers for Fragment that contains DAPHNEFrames into a numpy array with dimensions.
uint32_t get_n_frames_stream(daqdataformats::Fragment const &frag)
Gets number of DAPHNEStreamFrames in a fragment.
py::array_t< uint64_t > np_array_timestamp_data(void *data, int nframes)
Unpacks data containing DAPHNEFrames into a numpy array with the timestamps with dimension (number of...
py::array_t< uint16_t > np_array_adc_stream_data(void *data, int nframes)
Unpacks data containing DAPHNEStreamFrames into a numpy array with the ADC values and dimension (nu...
py::array_t< uint8_t > np_array_channels_stream(daqdataformats::Fragment &frag)
Unpacks channel numbers for Fragment that contains DAPHNEStreamFrames into a numpy array with dimensi...
py::array_t< uint16_t > np_array_adc_data(void *data, int nframes)
Unpacks data containing DAPHNEFrames into a numpy array with the ADC values and dimension (number of ...
py::array_t< uint16_t > np_array_adc(daqdataformats::Fragment &frag)
Unpacks a Fragment containing DAPHNEFrames into a numpy array with the ADC values and dimension (numb...
py::array_t< uint8_t > np_array_channels_stream_data(void *data, int nframes)
Unpacks channel numbers for DAPHNEEthStreamFrames into a numpy array with dimensions (nframes,...
py::array_t< uint64_t > np_array_timestamp_stream_data(void *data, int nframes)
Unpacks data containing DAPHNEStreamFrames into a numpy array with the timestamps with dimension (n...
py::array_t< uint64_t > np_array_timestamp_stream(daqdataformats::Fragment &frag)
Unpacks the timestamps in a Fragment containing DAPHNEStreamFrames into a numpy array with dimensio...
py::array_t< uint16_t > np_array_adc(daqdataformats::Fragment const &frag)
Unpacks a Fragment containing TDEEthFrames into a numpy array with the ADC values and dimension (numb...
py::array_t< long double > np_array_timestamp(daqdataformats::Fragment const &frag)
Unpacks the timestamps in a Fragment containing TDEEthFrames into a numpy array with dimension (numbe...
py::array_t< long double > np_array_timestamp_data(void *data, uint32_t n_frames)
Unpacks data containing TDEEthFrames into a numpy array with the timestamps with dimension (number of...
uint32_t get_n_frames(daqdataformats::Fragment const &frag)
Gets number of TDEEthFrames in a fragment.
py::array_t< uint16_t > np_array_adc_data(void *data, uint32_t n_frames)
Unpacks data containing TDEEthFrames into a numpy array with the ADC values and dimension (number of ...
void register_unpack(py::module &)
Definition unpack.cpp:97
py::array_t< uint64_t > np_array_timestamp(daqdataformats::Fragment const &frag)
Unpacks the timestamps in a Fragment containing WIBFrames into a numpy array with dimension (number o...
py::array_t< uint16_t > np_array_adc(daqdataformats::Fragment const &frag)
Unpacks a Fragment containing WIBEthFrames into a numpy array with the ADC values and dimension (numb...
uint32_t get_n_frames(daqdataformats::Fragment const &frag)
Gets number of WIBEthFrames in a fragment.
py::array_t< uint16_t > np_array_adc_data(void *data, uint32_t n_frames)
Unpacks data containing WIBEthFrames into a numpy array with the ADC values and dimension (number of ...
py::array_t< uint64_t > np_array_timestamp_data(void *data, uint32_t n_frames)
Unpacks data containing WIBEthFrames into a numpy array with the timestamps with dimension (number of...
void print_hex_fragment(daqdataformats::Fragment const &frag)
Definition unpack.cpp:27
Including Qt Headers.
Definition module.cpp:16
The header for a DUNE Fragment.