diff --git a/slsDetectorCalibration/Mythen3_01_jctbData.h b/slsDetectorCalibration/Mythen3_01_jctbData.h new file mode 100644 index 000000000..1fa016e2f --- /dev/null +++ b/slsDetectorCalibration/Mythen3_01_jctbData.h @@ -0,0 +1,99 @@ +#ifndef MYTHEN301JCTBDATA_H +#define MYTHEN301JCTBDATA_H + + +class mythen3_01_jctbData : public slsDetectorData { + + + public: + mythen3_01_jctbData( int nch=64*3,int dr=24, int off=5): slsDetectorData(64*3,1,dr*8*nch,NULL,NULL,NULL), dynamicRange(dr), serialOffset(off), frameNumber(0), numberOfCounters(nch) {}; + + virtual void getPixel(int ip, int &x, int &y) {x=-1; y=-1;}; + + virtual short unsigned int getChannel(char *data, int ix, int iy=0) { + int ret=-1; + short unsigned int *val=mythen03_frame(data,dynamicRange,numberOfCounters,serialOffset); + if (ix>=0 && ix=0) frameNumber=f; return frameNumber; }; + virtual int setDynamicRange(int d=-1) {if (d>0 && d<=24) dynamicRange=d; return dynamicRange;}; + virtual int setSerialOffset(int d=-1) {if (d>=0) serialOffset=d; return serialOffset;}; + virtual int setNumberOfCounters(int d=-1) {if (d>=0) numberOfCounters=d; return numberOfCounters;}; + + + private: + + int dynamicRange; + int serialOffset; + int frameNumber; + int numberOfCounters; + + + + +}; + +#endif diff --git a/slsDetectorCalibration/adcSar2_jctbData.h b/slsDetectorCalibration/adcSar2_jctbData.h new file mode 100644 index 000000000..0b0665aaf --- /dev/null +++ b/slsDetectorCalibration/adcSar2_jctbData.h @@ -0,0 +1,63 @@ +#ifndef ADCSAR2_JCTBDATA_H +#define ADCSAR2_JCTBDATA_H + + +class adcSar2_jctbData : public slsDetectorData { + + + public: + adcSar2_jctbData(int nsamples=1000): slsDetectorData(nsamples,1,nsamples*8,NULL,NULL,NULL){}; + + virtual void getPixel(int ip, int &x, int &y) {x=ip/8; y=1;}; + + virtual short unsigned int getChannel(char *data, int ix, int iy=0) { + int adcvalue=0; + int vv1= *((int16_t*) (data+8*ix)); + int vv2= *((int16_t*) (data+8*ix+2)); + for (int jj=0;jj<8;jj++){ + adcvalue=adcvalue+ (((vv1>>(jj*2)) & 0x1)<<(jj)); + } + for (int jj=0;jj<4;jj++){ + adcvalue=adcvalue+ (((vv2>>(jj*2)) & 0x1)<<(jj+8)); + } + return adcvalue; + }; + + virtual int getFrameNumber(char *buff) {return frameNumber;}; + + virtual char *findNextFrame(char *data, int &ndata, int dsize) { + ndata=dsize; + return data; + } + + virtual char *readNextFrame(ifstream &filebin) { + char *data=NULL; + if (filebin.is_open()) { + data=new char[dataSize]; + filebin.read(data,dataSize); + } + return data; + } + + /* virtual int **getData(char *ptr, int dsize=-1) { */ + /* int **val; */ + /* val=new int*[1]; */ + /* val[0]=mythen03_frame(ptr,dynamicRange,nx,serialOffset); */ + /* return val; */ + + /* } */ + + + + virtual int setFrameNumber(int f=0) {if (f>=0) frameNumber=f; return frameNumber; }; + + private: + + int frameNumber; + + + + +}; + +#endif diff --git a/slsDetectorCalibration/slsDetectorData.h b/slsDetectorCalibration/slsDetectorData.h index 36f7a4218..50cd3d49d 100644 --- a/slsDetectorCalibration/slsDetectorData.h +++ b/slsDetectorCalibration/slsDetectorData.h @@ -44,23 +44,27 @@ class slsDetectorData { ymap=new int[dsize/sizeof(dataType)]; - dataMask=new dataType*[ny]; - for(int i = 0; i < ny; i++) { - dataMask[i] = new dataType[nx]; - } - dataMap=new int*[ny]; - for(int i = 0; i < ny; i++) { - dataMap[i] = new int[nx]; - } + // if (dataMask==NULL) { + dataMask=new dataType*[ny]; + for(int i = 0; i < ny; i++) { + dataMask[i] = new dataType[nx]; + } + // } - dataROIMask=new int*[ny]; - for(int i = 0; i < ny; i++) { - dataROIMask[i] = new int[nx]; - for (int j=0; jdataSize) dsize=dataSize; + for (int ip=0; ip<(dsize/sizeof(dataType)); ip++) { + getPixel(ip,ix,iy); + if (ix>=0 && ix=0 && iy