From ca03ff7e6b33bdeb68f90d68d1482700ddd54077 Mon Sep 17 00:00:00 2001 From: Alice Date: Mon, 2 Feb 2026 13:44:04 +0100 Subject: [PATCH] renamed Matterhorn decoders --- include/aare/PixelMap.hpp | 5 ++-- python/aare/transform.py | 30 +++++++++++++------ .../src/{pixel_map.hpp => bind_PixelMap.hpp} | 30 +++++++++++++++---- python/src/module.cpp | 2 +- src/PixelMap.cpp | 4 +-- 5 files changed, 52 insertions(+), 19 deletions(-) rename python/src/{pixel_map.hpp => bind_PixelMap.hpp} (59%) diff --git a/include/aare/PixelMap.hpp b/include/aare/PixelMap.hpp index 929e810..ba45fd5 100644 --- a/include/aare/PixelMap.hpp +++ b/include/aare/PixelMap.hpp @@ -21,8 +21,9 @@ NDArray GenerateMH02FourCounterPixelMap(); * @param dynamic_range Dynamic range of the detector (16, 8, or 4) * @param n_counters Number of counters (1 to 4) */ -NDArray GenerateMatterhorn2PixelMap(const size_t dynamic_range = 16, - const size_t n_counters = 1); +NDArray +GenerateMatterhorn10PixelMap(const size_t dynamic_range = 16, + const size_t n_counters = 1); // Eiger NDArray GenerateEigerFlipRowsPixelMap(); diff --git a/python/aare/transform.py b/python/aare/transform.py index d1492e4..2813045 100644 --- a/python/aare/transform.py +++ b/python/aare/transform.py @@ -40,19 +40,31 @@ class Moench05TransformOld: def __call__(self, data): return np.take(data.view(np.uint16), self.pixel_map) - - -class Matterhorn02Transform: + +class Matterhorn02TransceiverTransform: + #Could be moved to C++ without changing the interface def __init__(self): - self.pixel_map = _aare.GenerateMH02FourCounterPixelMap() + self.pixel_map = _aare.GenerateMH02SingleCounterPixelMap() def __call__(self, data): - counters = int(data.size / 48**2 / 2) - if counters == 1: - return np.take(data.view(np.uint16), self.pixel_map[0]) - else: - return np.take(data.view(np.uint16), self.pixel_map[0:counters]) + return np.take(data.view(np.uint16), self.pixel_map) +# TODO: give a reasonable name +class Matterhorn02Transform: + def __init__(self, dynamic_range : int, num_counters : int): + self.pixel_map = _aare.GenerateMatterhorn2PixelMap(dynamic_range, num_counters) + self.dynamic_range = dynamic_range + self.num_counters = num_counters + + def __call__(self, data): + if self.dynamic_range == 16: + return np.take(data.view(np.uint16), self.pixel_map) + elif self.dynamic_range == 8: + return np.take(data.view(np.uint8), self.pixel_map) + else: + return 0 + #return np.take(data.view()) # TODO need to expand to 8 bits + class Mythen302Transform: """ Transform Mythen 302 test chip data from a buffer of bytes (uint8_t) diff --git a/python/src/pixel_map.hpp b/python/src/bind_PixelMap.hpp similarity index 59% rename from python/src/pixel_map.hpp rename to python/src/bind_PixelMap.hpp index ed5e550..05d683e 100644 --- a/python/src/pixel_map.hpp +++ b/python/src/bind_PixelMap.hpp @@ -33,15 +33,35 @@ void define_pixel_map_bindings(py::module &m) { new NDArray(GenerateMoench05PixelMapOld()); return return_image_data(ptr); }) + + .def("GenerateMoench04AnalogPixelMap", + []() { + auto ptr = + new NDArray(GenerateMoench04AnalogPixelMap()); + return return_image_data(ptr); + }) + .def("GenerateMH02SingleCounterPixelMap", []() { auto ptr = new NDArray( GenerateMH02SingleCounterPixelMap()); return return_image_data(ptr); }) - .def("GenerateMH02FourCounterPixelMap", []() { - auto ptr = - new NDArray(GenerateMH02FourCounterPixelMap()); - return return_image_data(ptr); - }); + .def("GenerateMH02FourCounterPixelMap", + []() { + auto ptr = + new NDArray(GenerateMH02FourCounterPixelMap()); + return return_image_data(ptr); + }) + + .def( + "GenerateMatterhorn10PixelMap", + [](const size_t dynamic_range, const size_t n_counters) { + auto ptr = new NDArray( + GenerateMatterhorn10PixelMap(dynamic_range, n_counters)); + return return_image_data(ptr); + }, + py::arg("dynamic_range") = 16, py::arg("n_counters") = 1, + R"( + Generate pixel map for Matterhorn02 detector)"); } \ No newline at end of file diff --git a/python/src/module.cpp b/python/src/module.cpp index f78d2d4..4986f1f 100644 --- a/python/src/module.cpp +++ b/python/src/module.cpp @@ -14,12 +14,12 @@ #include "bind_calibration.hpp" // TODO! migrate the other names +#include "bind_PixelMap.hpp" #include "ctb_raw_file.hpp" #include "file.hpp" #include "fit.hpp" #include "jungfrau_data_file.hpp" #include "pedestal.hpp" -#include "pixel_map.hpp" #include "raw_file.hpp" #include "raw_master_file.hpp" #include "raw_sub_file.hpp" diff --git a/src/PixelMap.cpp b/src/PixelMap.cpp index 1f879e2..17b30c6 100644 --- a/src/PixelMap.cpp +++ b/src/PixelMap.cpp @@ -165,8 +165,8 @@ NDArray GenerateMH02FourCounterPixelMap() { return order_map; } -NDArray GenerateMatterhorn2PixelMap(const size_t dynamic_range, - const size_t n_counters) { +NDArray GenerateMatterhorn10PixelMap(const size_t dynamic_range, + const size_t n_counters) { constexpr size_t n_cols = 256; constexpr size_t n_rows = 256; NDArray pixel_map(