DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
trgdataformats
pybindsrc
trigger_activity.cpp
Go to the documentation of this file.
1
8
9
#include "
trgdataformats/TriggerObjectOverlay.hpp
"
10
11
#include <pybind11/pybind11.h>
12
#include <pybind11/stl.h>
13
#include <cstring>
14
15
namespace
py = pybind11;
16
17
// NOLINTBEGIN(build/unsigned)
18
19
namespace
dunedaq::trgdataformats::python
{
20
21
/*
22
Doesn't work
23
*/
24
struct
TriggerActivityHolder
{
25
26
27
TriggerActivityHolder
(
void
*
ptr
,
size_t
size
) {
28
m_size
=
size
;
29
m_data
.reset(
new
uint8_t[
m_size
]);
30
std::memcpy(
m_data
.get(),
ptr
,
size
);
31
}
32
33
TriggerActivity
*
ptr
() {
return
reinterpret_cast<
TriggerActivity
*
>
(
m_data
.get()); }
34
35
size_t
m_size
;
36
std::unique_ptr<uint8_t[]>
m_data
;
37
38
};
39
40
void
41
register_trigger_activity
(py::module& m)
42
{
43
44
45
py::class_<TriggerActivityData> trigger_activity_data(m,
"TriggerActivityData"
, py::buffer_protocol());
46
trigger_activity_data
47
.def(py::init())
48
.def(py::init([](py::capsule capsule) {
49
auto
tp = *
static_cast<
TriggerActivityData
*
>
(capsule.get_pointer());
50
return
tp;
51
} ))
52
.def(py::init([](py::bytes bytes){
53
py::buffer_info info(py::buffer(bytes).request());
54
auto
tp = *
static_cast<
TriggerActivityData
*
>
(info.ptr);
55
return
tp;
56
}))
57
.def_property_readonly_static(
"s_trigger_activity_version"
, [](py::object
/*self*/
) {
return
TriggerActivityData::s_trigger_activity_version
; })
58
.def_property_readonly_static(
"s_invalid_channel"
, [](py::object
/*self*/
) {
return
TriggerActivityData::s_invalid_channel
; })
59
.def_property_readonly(
"version"
, [](
TriggerActivityData
& self) -> uint16_t {
return
self.
version
;})
60
.def_property_readonly(
"time_start"
, [](
TriggerActivityData
& self) -> uint64_t {
return
self.
time_start
;})
61
.def_property_readonly(
"time_end"
, [](
TriggerActivityData
& self) -> uint64_t {
return
self.
time_end
;})
62
.def_property_readonly(
"time_peak"
, [](
TriggerActivityData
& self) -> uint64_t {
return
self.
time_peak
;})
63
.def_property_readonly(
"time_activity"
, [](
TriggerActivityData
& self) -> uint64_t {
return
self.
time_activity
;})
64
.def_property_readonly(
"channel_start"
, [](
TriggerActivityData
& self) ->
channel_t
{
return
self.
channel_start
;})
65
.def_property_readonly(
"channel_end"
, [](
TriggerActivityData
& self) ->
channel_t
{
return
self.
channel_end
;})
66
.def_property_readonly(
"channel_peak"
, [](
TriggerActivityData
& self) ->
channel_t
{
return
self.
channel_peak
;})
67
.def_property_readonly(
"adc_integral"
, [](
TriggerActivityData
& self) -> uint32_t {
return
self.
adc_integral
;})
68
.def_property_readonly(
"adc_peak"
, [](
TriggerActivityData
& self) -> uint32_t {
return
self.
adc_peak
;})
69
.def_property_readonly(
"detid"
, [](
TriggerActivityData
& self) -> uint16_t {
return
self.
detid
;})
70
.def_property_readonly(
"type"
, [](
TriggerActivityData
& self) ->
TriggerActivityData::Type
{
return
self.
type
;})
71
.def_property_readonly(
"algorithm"
, [](
TriggerActivityData
& self) ->
TriggerActivityData::Algorithm
{
return
self.
algorithm
;})
72
.def_static(
"sizeof"
, [](){
return
sizeof
(
TriggerActivityData
); })
73
;
74
75
76
py::enum_<TriggerActivityData::Type>(trigger_activity_data,
"Type"
)
77
.value(
"kUnknown"
,
TriggerActivityData::Type::kUnknown
)
78
.value(
"kTPC"
,
TriggerActivityData::Type::kTPC
)
79
.value(
"kPDS"
,
TriggerActivityData::Type::kPDS
);
80
81
py::enum_<TriggerActivityData::Algorithm>(trigger_activity_data,
"Algorithm"
)
82
.value(
"kUnknown"
,
TriggerActivityData::Algorithm::kUnknown
)
83
.value(
"kSupernova"
,
TriggerActivityData::Algorithm::kSupernova
)
84
.value(
"kPrescale"
,
TriggerActivityData::Algorithm::kPrescale
)
85
.value(
"kADCSimpleWindow"
,
TriggerActivityData::Algorithm::kADCSimpleWindow
)
86
.value(
"kHorizontalMuon"
,
TriggerActivityData::Algorithm::kHorizontalMuon
)
87
.value(
"kMichelElectron"
,
TriggerActivityData::Algorithm::kMichelElectron
)
88
.value(
"kDBSCAN"
,
TriggerActivityData::Algorithm::kDBSCAN
)
89
.value(
"kPlaneCoincidence"
,
TriggerActivityData::Algorithm::kPlaneCoincidence
)
90
.value(
"kBundle"
,
TriggerActivityData::Algorithm::kBundle
)
91
.value(
"kChannelDistance"
,
TriggerActivityData::Algorithm::kChannelDistance
)
92
.value(
"kChannelAdjacency"
,
TriggerActivityData::Algorithm::kChannelAdjacency
)
93
.value(
"kSWIFT"
,
TriggerActivityData::Algorithm::kSWIFT
)
94
.value(
"kProtoDUNEBSMWindow"
,
TriggerActivityData::Algorithm::kProtoDUNEBSMWindow
);
95
96
py::class_<TriggerActivity>(m,
"TriggerActivityOverlay"
, py::buffer_protocol())
97
.def(py::init())
98
.def(py::init([](py::capsule capsule) {
99
auto
tp = *
static_cast<
TriggerActivity
*
>
(capsule.get_pointer());
100
return
tp;
101
} ))
102
.def_property_readonly(
"data"
, [](
TriggerActivity
& self) ->
TriggerActivityData
& {
return
self.data;})
103
.def(
"__len__"
, [](
TriggerActivity
& self){
return
self.n_inputs; })
104
.def(
"sizeof"
, [](
TriggerActivity
& self){
return
sizeof
(
TriggerActivity
)+self.n_inputs*
sizeof
(
TriggerPrimitive
); })
105
;
106
107
108
py::class_<TriggerActivityHolder>(m,
"TriggerActivity"
, py::buffer_protocol())
109
// .def(py::init())
110
.def(py::init([](py::capsule capsule) {
111
auto
ta_ptr =
static_cast<
TriggerActivity
*
>
(capsule.get_pointer());
112
TriggerActivityHolder
tah(ta_ptr,
sizeof
(
TriggerActivity
)+ta_ptr->n_inputs*
sizeof
(
TriggerPrimitive
));
113
return
tah;
114
}))
115
.def(py::init([](py::bytes bytes){
116
py::buffer_info info(py::buffer(bytes).request());
117
TriggerActivityHolder
tah(info.ptr, info.size);
118
119
return
tah;
120
}))
121
122
.def(
"get_bytes"
,
123
[](
TriggerActivityHolder
& tah) -> py::bytes {
124
return
py::bytes(
reinterpret_cast<
char
*
>
(tah.
ptr
()), tah.
m_size
);
125
}, py::return_value_policy::reference_internal
126
)
127
.def_property_readonly(
"data"
, [](
TriggerActivityHolder
& self) ->
TriggerActivityData
& {
return
self.ptr()->data;})
128
.def(
"n_inputs"
, [](
TriggerActivityHolder
& self){
return
self.ptr()->n_inputs; })
129
.def(
"__len__"
, [](
TriggerActivityHolder
& self){
return
self.ptr()->n_inputs; })
130
.def(
"__getitem__"
,
131
[](
TriggerActivityHolder
&self,
size_t
i) ->
const
TriggerPrimitive
& {
132
if
(i >= self.ptr()->n_inputs) {
133
throw
py::index_error();
134
}
135
return
self.ptr()->inputs[i];
136
}, py::return_value_policy::reference_internal)
137
.def(
"sizeof"
, [](
TriggerActivityHolder
& self){
return
self.m_size; })
138
139
;
140
}
// NOLINT function length, while long enough to trip the linter, is fine
141
142
}
// namespace dunedaq::trgdataformats::python
143
144
static_assert
(
145
dunedaq::trgdataformats::TriggerActivityData::s_trigger_activity_version
== 2,
146
"Version of TriggerActivityData appears to have changed; as a developer please update the Python bindings in this file before updating this static_assert"
);
147
148
// NOLINTEND(build/unsigned)
dunedaq::trgdataformats::python
Definition
module.cpp:16
dunedaq::trgdataformats::python::register_trigger_activity
void register_trigger_activity(pybind11::module &)
dunedaq::trgdataformats::channel_t
uint32_t channel_t
Definition
Types.hpp:56
dunedaq::trgdataformats::TriggerActivity
TriggerObjectOverlay< TriggerActivityData, TriggerPrimitive > TriggerActivity
Definition
TriggerObjectOverlay.hpp:50
dunedaq::size
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size
Definition
FelixIssues.hpp:30
dunedaq::trgdataformats::TriggerActivityData
Definition
TriggerActivityData.hpp:25
dunedaq::trgdataformats::TriggerActivityData::Algorithm
Algorithm
Definition
TriggerActivityData.hpp:34
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kSWIFT
@ kSWIFT
Definition
TriggerActivityData.hpp:46
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kChannelAdjacency
@ kChannelAdjacency
Definition
TriggerActivityData.hpp:45
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kProtoDUNEBSMWindow
@ kProtoDUNEBSMWindow
Definition
TriggerActivityData.hpp:47
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kUnknown
@ kUnknown
Definition
TriggerActivityData.hpp:35
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kHorizontalMuon
@ kHorizontalMuon
Definition
TriggerActivityData.hpp:39
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kChannelDistance
@ kChannelDistance
Definition
TriggerActivityData.hpp:43
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kADCSimpleWindow
@ kADCSimpleWindow
Definition
TriggerActivityData.hpp:38
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kBundle
@ kBundle
Definition
TriggerActivityData.hpp:44
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kPrescale
@ kPrescale
Definition
TriggerActivityData.hpp:37
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kDBSCAN
@ kDBSCAN
Definition
TriggerActivityData.hpp:41
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kPlaneCoincidence
@ kPlaneCoincidence
Definition
TriggerActivityData.hpp:42
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kMichelElectron
@ kMichelElectron
Definition
TriggerActivityData.hpp:40
dunedaq::trgdataformats::TriggerActivityData::Algorithm::kSupernova
@ kSupernova
Definition
TriggerActivityData.hpp:36
dunedaq::trgdataformats::TriggerActivityData::algorithm
Algorithm algorithm
Definition
TriggerActivityData.hpp:65
dunedaq::trgdataformats::TriggerActivityData::channel_peak
channel_t channel_peak
Definition
TriggerActivityData.hpp:60
dunedaq::trgdataformats::TriggerActivityData::s_invalid_channel
static constexpr channel_t s_invalid_channel
Definition
TriggerActivityData.hpp:51
dunedaq::trgdataformats::TriggerActivityData::time_activity
timestamp_t time_activity
Definition
TriggerActivityData.hpp:57
dunedaq::trgdataformats::TriggerActivityData::adc_integral
uint64_t adc_integral
Definition
TriggerActivityData.hpp:61
dunedaq::trgdataformats::TriggerActivityData::Type
Type
Definition
TriggerActivityData.hpp:27
dunedaq::trgdataformats::TriggerActivityData::Type::kUnknown
@ kUnknown
Definition
TriggerActivityData.hpp:28
dunedaq::trgdataformats::TriggerActivityData::Type::kPDS
@ kPDS
Definition
TriggerActivityData.hpp:30
dunedaq::trgdataformats::TriggerActivityData::Type::kTPC
@ kTPC
Definition
TriggerActivityData.hpp:29
dunedaq::trgdataformats::TriggerActivityData::type
Type type
Definition
TriggerActivityData.hpp:64
dunedaq::trgdataformats::TriggerActivityData::time_peak
timestamp_t time_peak
Definition
TriggerActivityData.hpp:56
dunedaq::trgdataformats::TriggerActivityData::adc_peak
uint16_t adc_peak
Definition
TriggerActivityData.hpp:62
dunedaq::trgdataformats::TriggerActivityData::channel_end
channel_t channel_end
Definition
TriggerActivityData.hpp:59
dunedaq::trgdataformats::TriggerActivityData::time_end
timestamp_t time_end
Definition
TriggerActivityData.hpp:55
dunedaq::trgdataformats::TriggerActivityData::s_trigger_activity_version
static constexpr version_t s_trigger_activity_version
Definition
TriggerActivityData.hpp:50
dunedaq::trgdataformats::TriggerActivityData::version
version_t version
Definition
TriggerActivityData.hpp:53
dunedaq::trgdataformats::TriggerActivityData::channel_start
channel_t channel_start
Definition
TriggerActivityData.hpp:58
dunedaq::trgdataformats::TriggerActivityData::time_start
timestamp_t time_start
Definition
TriggerActivityData.hpp:54
dunedaq::trgdataformats::TriggerActivityData::detid
detid_t detid
Definition
TriggerActivityData.hpp:63
dunedaq::trgdataformats::TriggerPrimitive
A single energy deposition on a TPC or PDS channel.
Definition
TriggerPrimitive.hpp:32
dunedaq::trgdataformats::python::TriggerActivityHolder
Definition
trigger_activity.cpp:24
dunedaq::trgdataformats::python::TriggerActivityHolder::m_data
std::unique_ptr< uint8_t[]> m_data
Definition
trigger_activity.cpp:36
dunedaq::trgdataformats::python::TriggerActivityHolder::ptr
TriggerActivity * ptr()
Definition
trigger_activity.cpp:33
dunedaq::trgdataformats::python::TriggerActivityHolder::TriggerActivityHolder
TriggerActivityHolder(void *ptr, size_t size)
Definition
trigger_activity.cpp:27
dunedaq::trgdataformats::python::TriggerActivityHolder::m_size
size_t m_size
Definition
trigger_activity.cpp:35
TriggerObjectOverlay.hpp
Generated on
for DUNE-DAQ by
1.18.0