Decoding for ADC SAR 05 64->16bit (#124)

Co-authored-by: Patrick <patrick.sieberer@psi.ch>
This commit is contained in:
Erik Fröjdh
2025-02-05 14:40:26 +01:00
committed by GitHub
parent 078e5d81ec
commit 5a3ca2ae2d
5 changed files with 79 additions and 1 deletions

View File

@ -7,6 +7,7 @@
#include "aare/RawSubFile.hpp"
#include "aare/defs.hpp"
#include "aare/decode.hpp"
// #include "aare/fClusterFileV2.hpp"
#include <cstdint>
@ -23,6 +24,32 @@ using namespace ::aare;
void define_ctb_raw_file_io_bindings(py::module &m) {
m.def("adc_sar_05_decode64to16", [](py::array_t<uint8_t> input) {
if(input.ndim() != 2){
throw std::runtime_error("Only 2D arrays are supported at this moment");
}
//Create a 2D output array with the same shape as the input
std::vector<ssize_t> shape{input.shape(0), input.shape(1)/8};
py::array_t<uint16_t> output(shape);
//Create a view of the input and output arrays
NDView<uint64_t, 2> input_view(reinterpret_cast<uint64_t*>(input.mutable_data()), {output.shape(0), output.shape(1)});
NDView<uint16_t, 2> output_view(output.mutable_data(), {output.shape(0), output.shape(1)});
adc_sar_05_decode64to16(input_view, output_view);
// for (size_t i=0; i!=input_view.size(); ++i) {
// output_view(i) = decode_adc(input_view(i));
// }
return output;
});
py::class_<CtbRawFile>(m, "CtbRawFile")
.def(py::init<const std::filesystem::path &>())
.def("read_frame",