mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 14:38:14 +02:00

* roi structure expanded to have ymin and ymax * compile with 'detector roi' * wip * wip, rx_roi, rx_clearroi * wip rxroi * rxroi wip * wip rxroi * merge fix * wip * rx_roi works, impl wip, test * tests in, impl left * wip, rxroi impl * wip, rxroi impl * wip * setrx_Roi works, getrx_roi, wip * rx_roi impl done * wip, rxroi * wip, getrx_roi rxr ports * fix ports * wip * wip * fix positions on server side * wip * numports wip * wip * jungfrau top inner interface row increment * x, y detpos, wip * removed eiger row indices flipping in gui (bottom flipping maintained) * wip * wip, jungfrau numinterfaces2 * jungfrau virtual works * eiger, jungfrau, g2 virtual server works * eiger positions fix, wip * binaries in * minor printout * binaries in * merge fix * merge fix * removing getposition * setrxroi wip * set upto port * get messed, wip * roi multi to module works, wip * wip * roi dont return -1 * added rxroi metadata in master file * added rxroifromshm, not yet in detector * rx roi in gui with box, also for gap pixels (gappixels for jungfrau mess) * fix for segfault in gui with detaching roi box in gui * wip * m3 gui: slave timing modes should be discarded when squashing * fixed m3 virtual data, and fixed counters in gui asthetics * m3 roi works * wip, g2 * wip * handling g225um boards, and showing roi for gainplot as well * udpate python functions * fix for 1d and a2d roi written * fixed actual roi written to file * no virtual hdf5 when handling rx roi * test * minor * binarie in
54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#pragma once
|
|
#include <cstdint>
|
|
#include <string>
|
|
|
|
/**
|
|
@short data structure to hold the detector data after postprocessing
|
|
*/
|
|
class detectorData {
|
|
public:
|
|
detectorData(double progressIndex, std::string fileName, int nx, int ny, char *data, int databytes, int dynamicRange, uint64_t fileIndex, bool completeImage)
|
|
: progressIndex(progressIndex), fileName(fileName), fileIndex(fileIndex), nx(nx), ny(ny), data(data), databytes(databytes), dynamicRange(dynamicRange), completeImage(completeImage){};
|
|
|
|
detectorData(double progressIndex, std::string fileName, int nx, int ny, char *data, int databytes, int dynamicRange, uint64_t fileIndex, bool completeImage, std::array<int, 4> rxRoi)
|
|
: progressIndex(progressIndex), fileName(fileName), fileIndex(fileIndex), nx(nx), ny(ny), data(data), databytes(databytes), dynamicRange(dynamicRange), completeImage(completeImage), rxRoi(rxRoi) {};
|
|
/**
|
|
* data has to be deleted by caller
|
|
*/
|
|
~detectorData(){};
|
|
|
|
int64_t getChannel(int i) {
|
|
int off = dynamicRange / 8;
|
|
if (off == 1) {
|
|
char val = *(data + i);
|
|
return val;
|
|
}
|
|
if (off == 2) {
|
|
int16_t val = *((int16_t *)(data + i * off));
|
|
return val;
|
|
}
|
|
if (off == 4) {
|
|
int32_t val = *((int32_t *)(data + i * off));
|
|
return val;
|
|
}
|
|
if (off == 8) {
|
|
int64_t val = *((int64_t *)(data + i * off));
|
|
return val;
|
|
}
|
|
return -1;
|
|
}
|
|
// private:
|
|
double progressIndex;
|
|
std::string fileName;
|
|
uint64_t fileIndex;
|
|
int nx;
|
|
int ny;
|
|
char *data{nullptr};
|
|
int databytes;
|
|
int dynamicRange;
|
|
bool completeImage;
|
|
std::array<int,4> rxRoi{{-1, -1, -1, -1}};
|
|
};
|