DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
trgdataformats
pybindsrc
trigger_candidate.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
namespace
dunedaq
{
18
namespace
trgdataformats
{
19
namespace
python
{
20
21
/*
22
Doesn't work
23
*/
24
struct
TriggerCandidateHolder
{
25
26
27
TriggerCandidateHolder
(
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
TriggerCandidate
*
ptr
() {
return
reinterpret_cast<
TriggerCandidate
*
>
(
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_candidate
(py::module& m)
42
{
43
44
m.def(
"string_to_trigger_candidate_type"
, &
trgdataformats::string_to_trigger_candidate_type
);
45
m.def(
"trigger_candidate_type_to_string"
, &
trgdataformats::trigger_candidate_type_to_string
);
46
47
py::class_<TriggerCandidateData> trigger_candidate_data(m,
"TriggerCandidateData"
, py::buffer_protocol());
48
trigger_candidate_data
49
.def(py::init())
50
.def(py::init([](py::capsule capsule) {
51
auto
tp = *
static_cast<
TriggerCandidateData
*
>
(capsule.get_pointer());
52
return
tp;
53
} ))
54
.def(py::init([](py::bytes bytes){
55
py::buffer_info info(py::buffer(bytes).request());
56
auto
tp = *
static_cast<
TriggerCandidateData
*
>
(info.ptr);
57
return
tp;
58
}))
59
.def_property_readonly(
"version"
, [](
TriggerCandidateData
& self) -> uint16_t {
return
self.
version
;})
60
.def_property_readonly(
"time_start"
, [](
TriggerCandidateData
& self) -> uint64_t {
return
self.
time_start
;})
61
.def_property_readonly(
"time_end"
, [](
TriggerCandidateData
& self) -> uint64_t {
return
self.
time_end
;})
62
.def_property_readonly(
"time_candidate"
, [](
TriggerCandidateData
& self) -> uint64_t {
return
self.
time_candidate
;})
63
.def_property_readonly(
"detid"
, [](
TriggerCandidateData
& self) -> uint16_t {
return
self.
detid
;})
64
.def_property_readonly(
"type"
, [](
TriggerCandidateData
& self) ->
TriggerCandidateData::Type
{
return
self.
type
;})
65
.def_property_readonly(
"algorithm"
, [](
TriggerCandidateData
& self) ->
TriggerCandidateData::Algorithm
{
return
self.
algorithm
;})
66
.def_static(
"sizeof"
, [](){
return
sizeof
(
TriggerCandidateData
); })
67
;
68
69
py::enum_<TriggerCandidateData::Type>(trigger_candidate_data,
"Type"
)
70
.value(
"kUnknown"
,
TriggerCandidateData::Type::kUnknown
)
71
.value(
"kTiming"
,
TriggerCandidateData::Type::kTiming
)
72
.value(
"kTPCLowE"
,
TriggerCandidateData::Type::kTPCLowE
)
73
.value(
"kSupernova"
,
TriggerCandidateData::Type::kSupernova
)
74
.value(
"kRandom"
,
TriggerCandidateData::Type::kRandom
)
75
.value(
"kPrescale"
,
TriggerCandidateData::Type::kPrescale
)
76
.value(
"kADCSimpleWindow"
,
TriggerCandidateData::Type::kADCSimpleWindow
)
77
.value(
"kHorizontalMuon"
,
TriggerCandidateData::Type::kHorizontalMuon
)
78
.value(
"kMichelElectron"
,
TriggerCandidateData::Type::kMichelElectron
)
79
.value(
"kPlaneCoincidence"
,
TriggerCandidateData::Type::kPlaneCoincidence
)
80
.value(
"kBundle"
,
TriggerCandidateData::Type::kBundle
)
81
.value(
"kChannelDistance"
,
TriggerCandidateData::Type::kChannelDistance
)
82
.value(
"kDBSCAN"
,
TriggerCandidateData::Type::kDBSCAN
)
83
.value(
"kCTBFakeTrigger"
,
TriggerCandidateData::Type::kCTBFakeTrigger
)
84
.value(
"kCTBBeam"
,
TriggerCandidateData::Type::kCTBBeam
)
85
.value(
"kCTBBeamChkvHL"
,
TriggerCandidateData::Type::kCTBBeamChkvHL
)
86
.value(
"kCTBCustomD"
,
TriggerCandidateData::Type::kCTBCustomD
)
87
.value(
"kCTBCustomE"
,
TriggerCandidateData::Type::kCTBCustomE
)
88
.value(
"kCTBCustomF"
,
TriggerCandidateData::Type::kCTBCustomF
)
89
.value(
"kCTBCustomG"
,
TriggerCandidateData::Type::kCTBCustomG
)
90
.value(
"kCTBBeamChkvHLx"
,
TriggerCandidateData::Type::kCTBBeamChkvHLx
)
91
.value(
"kCTBBeamChkvHxL"
,
TriggerCandidateData::Type::kCTBBeamChkvHxL
)
92
.value(
"kCTBBeamChkvHxLx"
,
TriggerCandidateData::Type::kCTBBeamChkvHxLx
)
93
.value(
"kNeutronSourceCalib"
,
TriggerCandidateData::Type::kNeutronSourceCalib
)
94
.value(
"kChannelAdjacency"
,
TriggerCandidateData::Type::kChannelAdjacency
)
95
.value(
"kCIBFakeTrigger"
,
TriggerCandidateData::Type::kCIBFakeTrigger
)
96
.value(
"kCIBLaserTriggerP1"
,
TriggerCandidateData::Type::kCIBLaserTriggerP1
)
97
.value(
"kCIBLaserTriggerP2"
,
TriggerCandidateData::Type::kCIBLaserTriggerP2
)
98
.value(
"kCIBLaserTriggerP3"
,
TriggerCandidateData::Type::kCIBLaserTriggerP3
)
99
.value(
"kCTBOffSpillSnapshot"
,
TriggerCandidateData::Type::kCTBOffSpillSnapshot
)
100
.value(
"kCTBOffSpillCosmicJura"
,
TriggerCandidateData::Type::kCTBOffSpillCosmicJura
)
101
.value(
"kCTBOffSpillCRTCosmic"
,
TriggerCandidateData::Type::kCTBOffSpillCRTCosmic
)
102
.value(
"kCTBBeamSpillStart"
,
TriggerCandidateData::Type::kCTBBeamSpillStart
)
103
.value(
"kCTBBeamSpillSnapshot"
,
TriggerCandidateData::Type::kCTBBeamSpillSnapshot
)
104
.value(
"kCTBCustomC"
,
TriggerCandidateData::Type::kCTBCustomC
)
105
.value(
"kCTBCustomPulseTrain"
,
TriggerCandidateData::Type::kCTBCustomPulseTrain
)
106
.value(
"kDTSPulser"
,
TriggerCandidateData::Type::kDTSPulser
)
107
.value(
"kDTSCosmic"
,
TriggerCandidateData::Type::kDTSCosmic
)
108
.value(
"kSSPLEDCalibration"
,
TriggerCandidateData::Type::kSSPLEDCalibration
);
109
110
py::enum_<TriggerCandidateData::Algorithm>(trigger_candidate_data,
"Algorithm"
)
111
.value(
"kUnknown"
,
TriggerCandidateData::Algorithm::kUnknown
)
112
.value(
"kSupernova"
,
TriggerCandidateData::Algorithm::kSupernova
)
113
.value(
"kHSIEventToTriggerCandidate"
,
TriggerCandidateData::Algorithm::kHSIEventToTriggerCandidate
)
114
.value(
"kPrescale"
,
TriggerCandidateData::Algorithm::kPrescale
)
115
.value(
"kADCSimpleWindow"
,
TriggerCandidateData::Algorithm::kADCSimpleWindow
)
116
.value(
"kHorizontalMuon"
,
TriggerCandidateData::Algorithm::kHorizontalMuon
)
117
.value(
"kMichelElectron"
,
TriggerCandidateData::Algorithm::kMichelElectron
)
118
.value(
"kPlaneCoincidence"
,
TriggerCandidateData::Algorithm::kPlaneCoincidence
)
119
.value(
"kCustom"
,
TriggerCandidateData::Algorithm::kCustom
)
120
.value(
"kDBSCAN"
,
TriggerCandidateData::Algorithm::kDBSCAN
)
121
.value(
"kChannelDistance"
,
TriggerCandidateData::Algorithm::kChannelDistance
)
122
.value(
"kBundle"
,
TriggerCandidateData::Algorithm::kBundle
)
123
.value(
"kChannelAdjacency"
,
TriggerCandidateData::Algorithm::kChannelAdjacency
);
124
125
py::class_<TriggerCandidate>(m,
"TriggerCandidateOverlay"
, py::buffer_protocol())
126
.def(py::init([](py::capsule capsule) {
127
auto
tp = *
static_cast<
TriggerCandidate
*
>
(capsule.get_pointer());
128
return
tp;
129
} ))
130
.def_property_readonly(
"data"
, [](
TriggerCandidate
& self) ->
TriggerCandidateData
& {
return
self.data;})
131
.def(
"__len__"
, [](
TriggerCandidate
& self){
return
self.n_inputs; })
132
.def(
"sizeof"
, [](
TriggerCandidate
& self){
return
sizeof
(
TriggerCandidate
)+self.n_inputs*
sizeof
(
TriggerActivityData
); })
133
;
134
135
136
py::class_<TriggerCandidateHolder>(m,
"TriggerCandidate"
, py::buffer_protocol())
137
.def(py::init([](py::capsule capsule) {
138
auto
tc_ptr =
static_cast<
TriggerCandidate
*
>
(capsule.get_pointer());
139
TriggerCandidateHolder
tch(tc_ptr,
sizeof
(
TriggerCandidate
)+tc_ptr->n_inputs*
sizeof
(
TriggerActivityData
));
140
return
tch;
141
}))
142
.def(py::init([](py::bytes bytes){
143
py::buffer_info info(py::buffer(bytes).request());
144
145
TriggerCandidateHolder
tch(info.ptr, info.size);
146
147
return
tch;
148
}))
149
150
.def(
"get_bytes"
,
151
[](
TriggerCandidateHolder
& tch) -> py::bytes {
152
return
py::bytes(
reinterpret_cast<
char
*
>
(tch.
ptr
()), tch.
m_size
);
153
}, py::return_value_policy::reference_internal
154
)
155
.def_property_readonly(
"data"
, [](
TriggerCandidateHolder
& self) ->
TriggerCandidateData
& {
return
self.ptr()->data;})
156
.def(
"n_inputs"
, [](
TriggerCandidateHolder
& self){
return
self.ptr()->n_inputs; })
157
.def(
"__len__"
, [](
TriggerCandidateHolder
& self){
return
self.ptr()->n_inputs; })
158
.def(
"__getitem__"
,
159
[](
TriggerCandidateHolder
&self,
size_t
i) ->
const
TriggerActivityData
& {
160
if
(i >= self.ptr()->n_inputs) {
161
throw
py::index_error();
162
}
163
return
self.ptr()->inputs[i];
164
}, py::return_value_policy::reference_internal)
165
.def(
"sizeof"
, [](
TriggerCandidateHolder
& self){
return
self.m_size; })
166
;
167
}
168
169
}
// namespace python
170
}
// namespace trgdataformats
171
}
// namespace dunedaq
dunedaq::trgdataformats::python
Definition
module.cpp:16
dunedaq::trgdataformats::python::register_trigger_candidate
void register_trigger_candidate(pybind11::module &)
dunedaq::trgdataformats
Definition
TriggerActivityData.hpp:15
dunedaq::trgdataformats::trigger_candidate_type_to_string
std::string trigger_candidate_type_to_string(const TriggerCandidateData::Type &type)
Definition
TriggerCandidateData.hpp:157
dunedaq::trgdataformats::TriggerCandidate
TriggerObjectOverlay< TriggerCandidateData, TriggerActivityData > TriggerCandidate
Definition
TriggerObjectOverlay.hpp:33
dunedaq::trgdataformats::string_to_trigger_candidate_type
int string_to_trigger_candidate_type(const std::string &name)
Definition
TriggerCandidateData.hpp:147
dunedaq
Including Qt Headers.
Definition
module.cpp:16
dunedaq::size
FELIX Initialization std::string initerror FELIX queue timed std::string queuename Unexpected chunk size
Definition
FelixIssues.hpp:28
dunedaq::trgdataformats::TriggerActivityData
Definition
TriggerActivityData.hpp:18
dunedaq::trgdataformats::TriggerCandidateData
Definition
TriggerCandidateData.hpp:21
dunedaq::trgdataformats::TriggerCandidateData::type
Type type
Definition
TriggerCandidateData.hpp:94
dunedaq::trgdataformats::TriggerCandidateData::Type
Type
Definition
TriggerCandidateData.hpp:23
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeamChkvHLx
@ kCTBBeamChkvHLx
Definition
TriggerCandidateData.hpp:44
dunedaq::trgdataformats::TriggerCandidateData::Type::kChannelAdjacency
@ kChannelAdjacency
Definition
TriggerCandidateData.hpp:48
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBOffSpillSnapshot
@ kCTBOffSpillSnapshot
Definition
TriggerCandidateData.hpp:53
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBCustomD
@ kCTBCustomD
Definition
TriggerCandidateData.hpp:40
dunedaq::trgdataformats::TriggerCandidateData::Type::kUnknown
@ kUnknown
Definition
TriggerCandidateData.hpp:24
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeamSpillStart
@ kCTBBeamSpillStart
Definition
TriggerCandidateData.hpp:56
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBFakeTrigger
@ kCTBFakeTrigger
Definition
TriggerCandidateData.hpp:37
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBCustomE
@ kCTBCustomE
Definition
TriggerCandidateData.hpp:41
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBCustomF
@ kCTBCustomF
Definition
TriggerCandidateData.hpp:42
dunedaq::trgdataformats::TriggerCandidateData::Type::kHorizontalMuon
@ kHorizontalMuon
Definition
TriggerCandidateData.hpp:31
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeam
@ kCTBBeam
Definition
TriggerCandidateData.hpp:38
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBCustomG
@ kCTBCustomG
Definition
TriggerCandidateData.hpp:43
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBOffSpillCosmicJura
@ kCTBOffSpillCosmicJura
Definition
TriggerCandidateData.hpp:54
dunedaq::trgdataformats::TriggerCandidateData::Type::kChannelDistance
@ kChannelDistance
Definition
TriggerCandidateData.hpp:35
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeamChkvHL
@ kCTBBeamChkvHL
Definition
TriggerCandidateData.hpp:39
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBCustomPulseTrain
@ kCTBCustomPulseTrain
Definition
TriggerCandidateData.hpp:59
dunedaq::trgdataformats::TriggerCandidateData::Type::kCIBLaserTriggerP1
@ kCIBLaserTriggerP1
Definition
TriggerCandidateData.hpp:50
dunedaq::trgdataformats::TriggerCandidateData::Type::kDTSPulser
@ kDTSPulser
Definition
TriggerCandidateData.hpp:60
dunedaq::trgdataformats::TriggerCandidateData::Type::kTPCLowE
@ kTPCLowE
Definition
TriggerCandidateData.hpp:26
dunedaq::trgdataformats::TriggerCandidateData::Type::kTiming
@ kTiming
Definition
TriggerCandidateData.hpp:25
dunedaq::trgdataformats::TriggerCandidateData::Type::kCIBLaserTriggerP3
@ kCIBLaserTriggerP3
Definition
TriggerCandidateData.hpp:52
dunedaq::trgdataformats::TriggerCandidateData::Type::kDTSCosmic
@ kDTSCosmic
Definition
TriggerCandidateData.hpp:61
dunedaq::trgdataformats::TriggerCandidateData::Type::kADCSimpleWindow
@ kADCSimpleWindow
Definition
TriggerCandidateData.hpp:30
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeamChkvHxLx
@ kCTBBeamChkvHxLx
Definition
TriggerCandidateData.hpp:46
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeamChkvHxL
@ kCTBBeamChkvHxL
Definition
TriggerCandidateData.hpp:45
dunedaq::trgdataformats::TriggerCandidateData::Type::kCIBFakeTrigger
@ kCIBFakeTrigger
Definition
TriggerCandidateData.hpp:49
dunedaq::trgdataformats::TriggerCandidateData::Type::kBundle
@ kBundle
Definition
TriggerCandidateData.hpp:36
dunedaq::trgdataformats::TriggerCandidateData::Type::kPrescale
@ kPrescale
Definition
TriggerCandidateData.hpp:29
dunedaq::trgdataformats::TriggerCandidateData::Type::kDBSCAN
@ kDBSCAN
Definition
TriggerCandidateData.hpp:34
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBCustomC
@ kCTBCustomC
Definition
TriggerCandidateData.hpp:58
dunedaq::trgdataformats::TriggerCandidateData::Type::kPlaneCoincidence
@ kPlaneCoincidence
Definition
TriggerCandidateData.hpp:33
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBBeamSpillSnapshot
@ kCTBBeamSpillSnapshot
Definition
TriggerCandidateData.hpp:57
dunedaq::trgdataformats::TriggerCandidateData::Type::kSSPLEDCalibration
@ kSSPLEDCalibration
Definition
TriggerCandidateData.hpp:62
dunedaq::trgdataformats::TriggerCandidateData::Type::kMichelElectron
@ kMichelElectron
Definition
TriggerCandidateData.hpp:32
dunedaq::trgdataformats::TriggerCandidateData::Type::kNeutronSourceCalib
@ kNeutronSourceCalib
Definition
TriggerCandidateData.hpp:47
dunedaq::trgdataformats::TriggerCandidateData::Type::kSupernova
@ kSupernova
Definition
TriggerCandidateData.hpp:27
dunedaq::trgdataformats::TriggerCandidateData::Type::kRandom
@ kRandom
Definition
TriggerCandidateData.hpp:28
dunedaq::trgdataformats::TriggerCandidateData::Type::kCTBOffSpillCRTCosmic
@ kCTBOffSpillCRTCosmic
Definition
TriggerCandidateData.hpp:55
dunedaq::trgdataformats::TriggerCandidateData::Type::kCIBLaserTriggerP2
@ kCIBLaserTriggerP2
Definition
TriggerCandidateData.hpp:51
dunedaq::trgdataformats::TriggerCandidateData::time_candidate
timestamp_t time_candidate
Definition
TriggerCandidateData.hpp:88
dunedaq::trgdataformats::TriggerCandidateData::version
version_t version
Definition
TriggerCandidateData.hpp:85
dunedaq::trgdataformats::TriggerCandidateData::time_end
timestamp_t time_end
Definition
TriggerCandidateData.hpp:87
dunedaq::trgdataformats::TriggerCandidateData::time_start
timestamp_t time_start
Definition
TriggerCandidateData.hpp:86
dunedaq::trgdataformats::TriggerCandidateData::Algorithm
Algorithm
Definition
TriggerCandidateData.hpp:66
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kChannelAdjacency
@ kChannelAdjacency
Definition
TriggerCandidateData.hpp:79
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kUnknown
@ kUnknown
Definition
TriggerCandidateData.hpp:67
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kHorizontalMuon
@ kHorizontalMuon
Definition
TriggerCandidateData.hpp:72
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kChannelDistance
@ kChannelDistance
Definition
TriggerCandidateData.hpp:77
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kHSIEventToTriggerCandidate
@ kHSIEventToTriggerCandidate
Definition
TriggerCandidateData.hpp:69
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kADCSimpleWindow
@ kADCSimpleWindow
Definition
TriggerCandidateData.hpp:71
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kBundle
@ kBundle
Definition
TriggerCandidateData.hpp:78
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kPrescale
@ kPrescale
Definition
TriggerCandidateData.hpp:70
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kDBSCAN
@ kDBSCAN
Definition
TriggerCandidateData.hpp:76
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kPlaneCoincidence
@ kPlaneCoincidence
Definition
TriggerCandidateData.hpp:74
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kCustom
@ kCustom
Definition
TriggerCandidateData.hpp:75
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kMichelElectron
@ kMichelElectron
Definition
TriggerCandidateData.hpp:73
dunedaq::trgdataformats::TriggerCandidateData::Algorithm::kSupernova
@ kSupernova
Definition
TriggerCandidateData.hpp:68
dunedaq::trgdataformats::TriggerCandidateData::algorithm
Algorithm algorithm
Definition
TriggerCandidateData.hpp:95
dunedaq::trgdataformats::TriggerCandidateData::detid
detid_t detid
Definition
TriggerCandidateData.hpp:93
dunedaq::trgdataformats::python::TriggerCandidateHolder
Definition
trigger_candidate.cpp:24
dunedaq::trgdataformats::python::TriggerCandidateHolder::TriggerCandidateHolder
TriggerCandidateHolder(void *ptr, size_t size)
Definition
trigger_candidate.cpp:27
dunedaq::trgdataformats::python::TriggerCandidateHolder::m_data
std::unique_ptr< uint8_t[]> m_data
Definition
trigger_candidate.cpp:36
dunedaq::trgdataformats::python::TriggerCandidateHolder::m_size
size_t m_size
Definition
trigger_candidate.cpp:35
dunedaq::trgdataformats::python::TriggerCandidateHolder::ptr
TriggerCandidate * ptr()
Definition
trigger_candidate.cpp:33
TriggerObjectOverlay.hpp
Generated on
for DUNE-DAQ by
1.17.0