DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dunedaq::rawdatautils::wibeth Namespace Reference

Functions

uint32_t get_n_frames (daqdataformats::Fragment const &frag)
 Gets number of WIBEthFrames in a fragment.
 
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 (number of WIBEthFrames in the Fragment, 64)
 
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 WIBEthFrames, 64) Warning: It doesn't check that n_frames is a sensible value (can read out of bounds)
 
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 of WIBEthFrames in the Fragment)
 
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 WIBEthFrames) Warning: It doesn't check that n_frames is a sensible value (can read out of bounds)
 

Function Documentation

◆ get_n_frames()

uint32_t dunedaq::rawdatautils::wibeth::get_n_frames ( daqdataformats::Fragment const & frag)
extern

Gets number of WIBEthFrames in a fragment.

Definition at line 23 of file WIBEthUnpacker.cpp.

23 {
24 return (frag.get_size() - sizeof(daqdataformats::FragmentHeader)) / sizeof(fddetdataformats::WIBEthFrame);
25}
Class for accessing raw WIB eth frames, as used in ProtoDUNE-II.
The header for a DUNE Fragment.

◆ np_array_adc()

py::array_t< uint16_t > dunedaq::rawdatautils::wibeth::np_array_adc ( daqdataformats::Fragment const & frag)
extern

Unpacks a Fragment containing WIBEthFrames into a numpy array with the ADC values and dimension (number of WIBEthFrames in the Fragment, 64)

Definition at line 90 of file WIBEthUnpacker.cpp.

90 {
91 return np_array_adc_data(frag.get_data(), get_n_frames(frag));
92
93}

◆ np_array_adc_data()

py::array_t< uint16_t > dunedaq::rawdatautils::wibeth::np_array_adc_data ( void * data,
uint32_t n_frames )
extern

Unpacks data containing WIBEthFrames into a numpy array with the ADC values and dimension (number of WIBEthFrames, 64) Warning: It doesn't check that n_frames is a sensible value (can read out of bounds)

Definition at line 32 of file WIBEthUnpacker.cpp.

32 {
33
34 uint32_t n_ch = fddetdataformats::WIBEthFrame::s_num_channels;
35 uint32_t n_smpl = fddetdataformats::WIBEthFrame::s_time_samples_per_frame;
36
37 py::array_t<uint16_t> result(n_ch * n_smpl * n_frames);
38
39 py::buffer_info buf_res = result.request();
40
41 auto ptr_res = static_cast<uint16_t*>(buf_res.ptr);
42
43 for (size_t i=0; i<n_frames; ++i) {
44
45 auto fr = reinterpret_cast<fddetdataformats::WIBEthFrame*>(
46 static_cast<char*>(data) + i * sizeof(fddetdataformats::WIBEthFrame)
47 );
48
49 for (size_t j=0; j<n_smpl; ++j){
50 for (size_t k=0; k<n_ch; ++k){
51 ptr_res[(n_smpl*n_ch) * i + n_ch*j + k] = fr->get_adc(k, j);
52 }
53 }
54 }
55 result.resize({n_frames*n_smpl, n_ch});
56
57 return result;
58
59}

◆ np_array_timestamp()

py::array_t< uint64_t > dunedaq::rawdatautils::wibeth::np_array_timestamp ( daqdataformats::Fragment const & frag)
extern

Unpacks the timestamps in a Fragment containing WIBFrames into a numpy array with dimension (number of WIBEthFrames in the Fragment)

Definition at line 99 of file WIBEthUnpacker.cpp.

99 {
100 return np_array_timestamp_data(frag.get_data(), get_n_frames(frag));
101}

◆ np_array_timestamp_data()

py::array_t< uint64_t > dunedaq::rawdatautils::wibeth::np_array_timestamp_data ( void * data,
uint32_t n_frames )
extern

Unpacks data containing WIBEthFrames into a numpy array with the timestamps with dimension (number of WIBEthFrames) Warning: It doesn't check that n_frames is a sensible value (can read out of bounds)

Definition at line 66 of file WIBEthUnpacker.cpp.

66 {
67
68 uint32_t n_smpl = fddetdataformats::WIBEthFrame::s_time_samples_per_frame;
69
70 py::array_t<uint64_t> result(n_smpl*n_frames);
71
72 auto ptr = static_cast<uint64_t*>(result.request().ptr);
73
74 for (size_t i=0; i<n_frames; ++i) {
75 auto fr = reinterpret_cast<fddetdataformats::WIBEthFrame*>(
76 static_cast<char*>(data) + i * sizeof(fddetdataformats::WIBEthFrame)
77 );
78 uint64_t ts_0 = fr->get_timestamp();
79 for(size_t j=0; j<n_smpl; ++j )
80 ptr[i*n_smpl+j] = ts_0+32*j;
81 }
82
83 return result;
84}
uint64_t get_timestamp() const
Get the starting 64-bit timestamp of the frame.