mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 23:30:03 +02:00

* WIP * WIP virtual delays, imagetest for saturation * WIP, vertical and horizontal * WIP * gap pixels work, fixed 32 bit data out (10gbe=0) for virtual servers * quad works (also in virtual), handling gappixels and quad * jungfrau gapppixels work * jungfrau: done * complete image or missing packets given in json header and gui * eiger virtual 4 bit mode bug fix * working version of zmq add json header, except printout * printout bug * fix for json para * to map WIP * map done * map print , mapwith result left * json result works, testing added * updated server binaries * compiling on rhels7, variable size char array iniitalization * zmqsocket parsing didnt need Document * const to map, json para is strings not map * json add header: mapping cleaner without insert make_pair
61 lines
1.5 KiB
C++
Executable File
61 lines
1.5 KiB
C++
Executable File
#include <cstring>
|
|
#include <unistd.h>
|
|
#pragma once
|
|
/**
|
|
@short data structure to hold the detector data after postprocessing
|
|
*/
|
|
class detectorData {
|
|
public:
|
|
/**
|
|
* Constructor
|
|
* @param progress progress index
|
|
* @param fname file name prefix
|
|
* @param nx number of detector channels (1D detector) or dimension in x (2D detector)
|
|
* @param ny dimension in y (2D detector)
|
|
* @param d pointer to data in char* format
|
|
* @param dbytes number of bytes of image pointed to by cval pointer
|
|
* @param dr dynamic range or bits per pixel
|
|
* @param fIndex file index
|
|
* @param complete true if complete image, else missing packets
|
|
*/
|
|
detectorData(double progress, std::string fname, int x, int y, char *d, int dbytes, int dr, uint64_t fIndex, bool complete) :
|
|
progressIndex(progress), fileName(fname), fileIndex(fIndex), nx(x), ny(y), data(d), databytes(dbytes), dynamicRange(dr), completeImage(complete) {};
|
|
|
|
/**
|
|
* Destructor
|
|
* 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;
|
|
int databytes;
|
|
int dynamicRange;
|
|
bool completeImage;
|
|
};
|