mirror of
https://github.com/slsdetectorgroup/aare.git
synced 2025-04-19 21:30:02 +02:00
Modified moench05 transform (#103)
Moench05 transforms: - moench05: Works with the updated firmware and better data compression (adcenable10g=0xFF0F) - moench05_old: Works with the previous data and can be used with adcenable10g=0xFFFFFFFF - moench05_1g: For the 1g data acquisition only with adcenable=0x2202
This commit is contained in:
commit
a3f813f9b4
@ -7,6 +7,8 @@ namespace aare {
|
|||||||
|
|
||||||
NDArray<ssize_t, 2> GenerateMoench03PixelMap();
|
NDArray<ssize_t, 2> GenerateMoench03PixelMap();
|
||||||
NDArray<ssize_t, 2> GenerateMoench05PixelMap();
|
NDArray<ssize_t, 2> GenerateMoench05PixelMap();
|
||||||
|
NDArray<ssize_t, 2> GenerateMoench05PixelMap1g();
|
||||||
|
NDArray<ssize_t, 2> GenerateMoench05PixelMapOld();
|
||||||
|
|
||||||
//Matterhorn02
|
//Matterhorn02
|
||||||
NDArray<ssize_t, 2>GenerateMH02SingleCounterPixelMap();
|
NDArray<ssize_t, 2>GenerateMH02SingleCounterPixelMap();
|
||||||
|
@ -9,6 +9,24 @@ class Moench05Transform:
|
|||||||
|
|
||||||
def __call__(self, data):
|
def __call__(self, data):
|
||||||
return np.take(data.view(np.uint16), self.pixel_map)
|
return np.take(data.view(np.uint16), self.pixel_map)
|
||||||
|
|
||||||
|
|
||||||
|
class Moench05Transform1g:
|
||||||
|
#Could be moved to C++ without changing the interface
|
||||||
|
def __init__(self):
|
||||||
|
self.pixel_map = _aare.GenerateMoench05PixelMap1g()
|
||||||
|
|
||||||
|
def __call__(self, data):
|
||||||
|
return np.take(data.view(np.uint16), self.pixel_map)
|
||||||
|
|
||||||
|
|
||||||
|
class Moench05TransformOld:
|
||||||
|
#Could be moved to C++ without changing the interface
|
||||||
|
def __init__(self):
|
||||||
|
self.pixel_map = _aare.GenerateMoench05PixelMapOld()
|
||||||
|
|
||||||
|
def __call__(self, data):
|
||||||
|
return np.take(data.view(np.uint16), self.pixel_map)
|
||||||
|
|
||||||
|
|
||||||
class Matterhorn02Transform:
|
class Matterhorn02Transform:
|
||||||
@ -25,4 +43,6 @@ class Matterhorn02Transform:
|
|||||||
|
|
||||||
#on import generate the pixel maps to avoid doing it every time
|
#on import generate the pixel maps to avoid doing it every time
|
||||||
moench05 = Moench05Transform()
|
moench05 = Moench05Transform()
|
||||||
|
moench05_1g = Moench05Transform1g()
|
||||||
|
moench05_old = Moench05TransformOld()
|
||||||
matterhorn02 = Matterhorn02Transform()
|
matterhorn02 = Matterhorn02Transform()
|
@ -20,6 +20,14 @@ void define_pixel_map_bindings(py::module &m) {
|
|||||||
.def("GenerateMoench05PixelMap", []() {
|
.def("GenerateMoench05PixelMap", []() {
|
||||||
auto ptr = new NDArray<ssize_t,2>(GenerateMoench05PixelMap());
|
auto ptr = new NDArray<ssize_t,2>(GenerateMoench05PixelMap());
|
||||||
return return_image_data(ptr);
|
return return_image_data(ptr);
|
||||||
|
})
|
||||||
|
.def("GenerateMoench05PixelMap1g", []() {
|
||||||
|
auto ptr = new NDArray<ssize_t,2>(GenerateMoench05PixelMap1g());
|
||||||
|
return return_image_data(ptr);
|
||||||
|
})
|
||||||
|
.def("GenerateMoench05PixelMapOld", []() {
|
||||||
|
auto ptr = new NDArray<ssize_t,2>(GenerateMoench05PixelMapOld());
|
||||||
|
return return_image_data(ptr);
|
||||||
})
|
})
|
||||||
.def("GenerateMH02SingleCounterPixelMap", []() {
|
.def("GenerateMH02SingleCounterPixelMap", []() {
|
||||||
auto ptr = new NDArray<ssize_t,2>(GenerateMH02SingleCounterPixelMap());
|
auto ptr = new NDArray<ssize_t,2>(GenerateMH02SingleCounterPixelMap());
|
||||||
|
@ -31,6 +31,49 @@ NDArray<ssize_t, 2> GenerateMoench03PixelMap() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
NDArray<ssize_t, 2> GenerateMoench05PixelMap() {
|
NDArray<ssize_t, 2> GenerateMoench05PixelMap() {
|
||||||
|
std::array<int, 3> adc_numbers = {5, 9, 1};
|
||||||
|
NDArray<ssize_t, 2> order_map({160, 150});
|
||||||
|
int n_pixel = 0;
|
||||||
|
for (int row = 0; row < 160; row++) {
|
||||||
|
for (int i_col = 0; i_col < 50; i_col++) {
|
||||||
|
n_pixel = row * 50 + i_col;
|
||||||
|
for (int i_sc = 0; i_sc < 3; i_sc++) {
|
||||||
|
int col = 50 * i_sc + i_col;
|
||||||
|
int adc_nr = adc_numbers[i_sc];
|
||||||
|
int i_analog = n_pixel * 12 + adc_nr;
|
||||||
|
|
||||||
|
// analog_frame[row * 150 + col] = analog_data[i_analog] & 0x3FFF;
|
||||||
|
order_map(row, col) = i_analog;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return order_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
NDArray<ssize_t, 2> GenerateMoench05PixelMap1g() {
|
||||||
|
std::array<int, 3> adc_numbers = {1, 2, 0};
|
||||||
|
NDArray<ssize_t, 2> order_map({160, 150});
|
||||||
|
int n_pixel = 0;
|
||||||
|
for (int row = 0; row < 160; row++) {
|
||||||
|
for (int i_col = 0; i_col < 50; i_col++) {
|
||||||
|
n_pixel = row * 50 + i_col;
|
||||||
|
for (int i_sc = 0; i_sc < 3; i_sc++) {
|
||||||
|
int col = 50 * i_sc + i_col;
|
||||||
|
int adc_nr = adc_numbers[i_sc];
|
||||||
|
int i_analog = n_pixel * 3 + adc_nr;
|
||||||
|
|
||||||
|
|
||||||
|
// analog_frame[row * 150 + col] = analog_data[i_analog] & 0x3FFF;
|
||||||
|
order_map(row, col) = i_analog;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return order_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
NDArray<ssize_t, 2> GenerateMoench05PixelMapOld() {
|
||||||
std::array<int, 3> adc_numbers = {9, 13, 1};
|
std::array<int, 3> adc_numbers = {9, 13, 1};
|
||||||
NDArray<ssize_t, 2> order_map({160, 150});
|
NDArray<ssize_t, 2> order_map({160, 150});
|
||||||
int n_pixel = 0;
|
int n_pixel = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user