From d4c812014ca062da9a5e8b9f45e6e0db3e53cb1c Mon Sep 17 00:00:00 2001 From: Wesley Robert Ketchum Date: Fri, 10 May 2024 09:39:04 +0200 Subject: [PATCH 1/3] fix the TriggerCandidate python binding --- pybindsrc/trigger_candidate.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pybindsrc/trigger_candidate.cpp b/pybindsrc/trigger_candidate.cpp index 2eb70a5..48b135b 100644 --- a/pybindsrc/trigger_candidate.cpp +++ b/pybindsrc/trigger_candidate.cpp @@ -112,18 +112,22 @@ register_trigger_candidate(py::module& m) py::class_(m, "TriggerCandidateOverlay", py::buffer_protocol()) - .def(py::init()) .def(py::init([](py::capsule capsule) { auto tp = *static_cast(capsule.get_pointer()); return tp; } )) .def_property_readonly("data", [](TriggerCandidate& self) -> TriggerCandidateData& {return self.data;}) .def("__len__", [](TriggerCandidate& self){ return self.n_inputs; }) - .def("sizeof", [](TriggerCandidate& self){ return sizeof(TriggerCandidate)+self.n_inputs*sizeof(TriggerPrimitive); }) + .def("sizeof", [](TriggerCandidate& self){ return sizeof(TriggerCandidate)+self.n_inputs*sizeof(TriggerActivityData); }) ; py::class_(m, "TriggerCandidate", py::buffer_protocol()) + .def(py::init([](py::capsule capsule) { + auto tc_ptr = static_cast(capsule.get_pointer()); + TriggerCandidateHolder tch(tc_ptr, sizeof(TriggerCandidate)+tc_ptr->n_inputs*sizeof(TriggerActivityData)); + return tch; + })) .def(py::init([](py::bytes bytes){ py::buffer_info info(py::buffer(bytes).request()); From 310007fa9e690f0e2de913b3ed76f429c590041d Mon Sep 17 00:00:00 2001 From: aeoranday Date: Mon, 4 Mar 2024 16:55:15 +0100 Subject: [PATCH 2/3] Corrected python enum names. --- pybindsrc/trigger_activity.cpp | 39 ++++++++++++------------ pybindsrc/trigger_candidate.cpp | 54 ++++++++++++++++----------------- pybindsrc/trigger_primitive.cpp | 27 ++++++++--------- 3 files changed, 58 insertions(+), 62 deletions(-) diff --git a/pybindsrc/trigger_activity.cpp b/pybindsrc/trigger_activity.cpp index a72d945..e4ec2a3 100644 --- a/pybindsrc/trigger_activity.cpp +++ b/pybindsrc/trigger_activity.cpp @@ -42,26 +42,8 @@ register_trigger_activity(py::module& m) { - py::enum_(m, "TriggerActivityData::Type") - .value("kUnknown", TriggerActivityData::Type::kUnknown) - .value("kTPC", TriggerActivityData::Type::kTPC) - .value("kPDS", TriggerActivityData::Type::kPDS) - .export_values(); - - py::enum_(m, "TriggerActivityData::Algorithm") - .value("kUnknown", TriggerActivityData::Algorithm::kUnknown) - .value("kSupernova", TriggerActivityData::Algorithm::kSupernova) - .value("kPrescale", TriggerActivityData::Algorithm::kPrescale) - .value("kADCSimpleWindow", TriggerActivityData::Algorithm::kADCSimpleWindow) - .value("kHorizontalMuon", TriggerActivityData::Algorithm::kHorizontalMuon) - .value("kMichelElectron", TriggerActivityData::Algorithm::kMichelElectron) - .value("kDBSCAN", TriggerActivityData::Algorithm::kDBSCAN) - .value("kBundle", TriggerActivityData::Algorithm::kBundle) - .value("kChannelDistance", TriggerActivityData::Algorithm::kChannelDistance) - .value("kChannelAdjacency", TriggerActivityData::Algorithm::kChannelAdjacency) - .export_values(); - - py::class_(m, "TriggerActivityData", py::buffer_protocol()) + py::class_ trigger_activity_data(m, "TriggerActivityData", py::buffer_protocol()); + trigger_activity_data .def(py::init()) .def(py::init([](py::capsule capsule) { auto tp = *static_cast(capsule.get_pointer()); @@ -89,6 +71,23 @@ register_trigger_activity(py::module& m) ; + py::enum_(trigger_activity_data, "Type") + .value("kUnknown", TriggerActivityData::Type::kUnknown) + .value("kTPC", TriggerActivityData::Type::kTPC) + .value("kPDS", TriggerActivityData::Type::kPDS); + + py::enum_(trigger_activity_data, "Algorithm") + .value("kUnknown", TriggerActivityData::Algorithm::kUnknown) + .value("kSupernova", TriggerActivityData::Algorithm::kSupernova) + .value("kPrescale", TriggerActivityData::Algorithm::kPrescale) + .value("kADCSimpleWindow", TriggerActivityData::Algorithm::kADCSimpleWindow) + .value("kHorizontalMuon", TriggerActivityData::Algorithm::kHorizontalMuon) + .value("kMichelElectron", TriggerActivityData::Algorithm::kMichelElectron) + .value("kDBSCAN", TriggerActivityData::Algorithm::kDBSCAN) + .value("kBundle", TriggerActivityData::Algorithm::kBundle) + .value("kChannelDistance", TriggerActivityData::Algorithm::kChannelDistance) + .value("kChannelAdjacency", TriggerActivityData::Algorithm::kChannelAdjacency); + py::class_(m, "TriggerActivityOverlay", py::buffer_protocol()) .def(py::init()) .def(py::init([](py::capsule capsule) { diff --git a/pybindsrc/trigger_candidate.cpp b/pybindsrc/trigger_candidate.cpp index 2eb70a5..1eb722d 100644 --- a/pybindsrc/trigger_candidate.cpp +++ b/pybindsrc/trigger_candidate.cpp @@ -43,7 +43,29 @@ register_trigger_candidate(py::module& m) m.def("string_to_fragment_type_value", &trgdataformats::string_to_fragment_type_value); - py::enum_(m, "TriggerCandidateData::Type") + py::class_ trigger_candidate_data(m, "TriggerCandidateData", py::buffer_protocol()); + trigger_candidate_data + .def(py::init()) + .def(py::init([](py::capsule capsule) { + auto tp = *static_cast(capsule.get_pointer()); + return tp; + } )) + .def(py::init([](py::bytes bytes){ + py::buffer_info info(py::buffer(bytes).request()); + auto tp = *static_cast(info.ptr); + return tp; + })) + .def_property_readonly("version", [](TriggerCandidateData& self) -> uint16_t {return self.version;}) + .def_property_readonly("time_start", [](TriggerCandidateData& self) -> uint64_t {return self.time_start;}) + .def_property_readonly("time_end", [](TriggerCandidateData& self) -> uint64_t {return self.time_end;}) + .def_property_readonly("time_candidate", [](TriggerCandidateData& self) -> uint64_t {return self.time_candidate;}) + .def_property_readonly("detid", [](TriggerCandidateData& self) -> uint16_t {return self.detid;}) + .def_property_readonly("type", [](TriggerCandidateData& self) -> TriggerCandidateData::Type {return self.type;}) + .def_property_readonly("algorithm", [](TriggerCandidateData& self) -> TriggerCandidateData::Algorithm {return self.algorithm;}) + .def_static("sizeof", [](){ return sizeof(TriggerCandidateData); }) + ; + + py::enum_(trigger_candidate_data, "Type") .value("kUnknown", TriggerCandidateData::Type::kUnknown) .value("kTiming", TriggerCandidateData::Type::kTiming) .value("kTPCLowE", TriggerCandidateData::Type::kTPCLowE) @@ -71,10 +93,9 @@ register_trigger_candidate(py::module& m) .value("kCIBFakeTrigger", TriggerCandidateData::Type::kCIBFakeTrigger) .value("kCIBLaserTriggerP1", TriggerCandidateData::Type::kCIBLaserTriggerP1) .value("kCIBLaserTriggerP2", TriggerCandidateData::Type::kCIBLaserTriggerP2) - .value("kCIBLaserTriggerP3", TriggerCandidateData::Type::kCIBLaserTriggerP3) - .export_values(); + .value("kCIBLaserTriggerP3", TriggerCandidateData::Type::kCIBLaserTriggerP3); - py::enum_(m, "TriggerCandidateData::Algorithm") + py::enum_(trigger_candidate_data, "Algorithm") .value("kUnknown", TriggerCandidateData::Algorithm::kUnknown) .value("kSupernova", TriggerCandidateData::Algorithm::kSupernova) .value("kHSIEventToTriggerCandidate", TriggerCandidateData::Algorithm::kHSIEventToTriggerCandidate) @@ -86,30 +107,7 @@ register_trigger_candidate(py::module& m) .value("kDBSCAN", TriggerCandidateData::Algorithm::kDBSCAN) .value("kChannelDistance", TriggerCandidateData::Algorithm::kChannelDistance) .value("kBundle", TriggerCandidateData::Algorithm::kBundle) - .value("kChannelAdjacency", TriggerCandidateData::Algorithm::kChannelAdjacency) - .export_values(); - - py::class_(m, "TriggerCandidateData", py::buffer_protocol()) - .def(py::init()) - .def(py::init([](py::capsule capsule) { - auto tp = *static_cast(capsule.get_pointer()); - return tp; - } )) - .def(py::init([](py::bytes bytes){ - py::buffer_info info(py::buffer(bytes).request()); - auto tp = *static_cast(info.ptr); - return tp; - })) - .def_property_readonly("version", [](TriggerCandidateData& self) -> uint16_t {return self.version;}) - .def_property_readonly("time_start", [](TriggerCandidateData& self) -> uint64_t {return self.time_start;}) - .def_property_readonly("time_end", [](TriggerCandidateData& self) -> uint64_t {return self.time_end;}) - .def_property_readonly("time_candidate", [](TriggerCandidateData& self) -> uint64_t {return self.time_candidate;}) - .def_property_readonly("detid", [](TriggerCandidateData& self) -> uint16_t {return self.detid;}) - .def_property_readonly("type", [](TriggerCandidateData& self) -> TriggerCandidateData::Type {return self.type;}) - .def_property_readonly("algorithm", [](TriggerCandidateData& self) -> TriggerCandidateData::Algorithm {return self.algorithm;}) - .def_static("sizeof", [](){ return sizeof(TriggerCandidateData); }) - ; - + .value("kChannelAdjacency", TriggerCandidateData::Algorithm::kChannelAdjacency); py::class_(m, "TriggerCandidateOverlay", py::buffer_protocol()) .def(py::init()) diff --git a/pybindsrc/trigger_primitive.cpp b/pybindsrc/trigger_primitive.cpp index 5fef7c0..eef6ba9 100644 --- a/pybindsrc/trigger_primitive.cpp +++ b/pybindsrc/trigger_primitive.cpp @@ -20,20 +20,8 @@ register_trigger_primitive(py::module& m) { - py::enum_(m, "TriggerPrimitive::Type") - .value("kUnknown", TriggerPrimitive::Type::kUnknown) - .value("kTPC", TriggerPrimitive::Type::kTPC) - .value("kPDS", TriggerPrimitive::Type::kPDS) - .export_values(); - - py::enum_(m, "TriggerPrimitive::Algorithm") - .value("kUnknown", TriggerPrimitive::Algorithm::kUnknown) - .value("kSimpleThreshold", TriggerPrimitive::Algorithm::kSimpleThreshold) - .value("kAbsRunningSum", TriggerPrimitive::Algorithm::kAbsRunningSum) - .value("kRunningSum", TriggerPrimitive::Algorithm::kRunningSum) - .export_values(); - - py::class_(m, "TriggerPrimitive", py::buffer_protocol()) + py::class_ trigger_primitive(m, "TriggerPrimitive", py::buffer_protocol()); + trigger_primitive .def(py::init()) .def(py::init([](py::capsule capsule) { auto tp = *static_cast(capsule.get_pointer()); @@ -53,6 +41,17 @@ register_trigger_primitive(py::module& m) .def_static("sizeof", [](){ return sizeof(TriggerPrimitive); }) ; + py::enum_(trigger_primitive, "Type") + .value("kUnknown", TriggerPrimitive::Type::kUnknown) + .value("kTPC", TriggerPrimitive::Type::kTPC) + .value("kPDS", TriggerPrimitive::Type::kPDS); + + py::enum_(trigger_primitive, "Algorithm") + .value("kUnknown", TriggerPrimitive::Algorithm::kUnknown) + .value("kSimpleThreshold", TriggerPrimitive::Algorithm::kSimpleThreshold) + .value("kAbsRunningSum", TriggerPrimitive::Algorithm::kAbsRunningSum) + .value("kRunningSum", TriggerPrimitive::Algorithm::kRunningSum); + } } // namespace dunedaq::trgdataformats::python From a44775a74d22facc536e8128f3421f83bfde9ab4 Mon Sep 17 00:00:00 2001 From: Wesley Robert Ketchum Date: Thu, 16 May 2024 18:22:46 +0200 Subject: [PATCH 3/3] WRK: version v1.2.2 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea4f2e2..0612baf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.12) -project(trgdataformats VERSION 1.2.1) +project(trgdataformats VERSION 1.2.2) find_package(daq-cmake REQUIRED)