diff --git a/slsDetectorCalibration/gotthardModuleData.h b/slsDetectorCalibration/gotthardModuleData.h index 297f95989..d7aa9ba6a 100644 --- a/slsDetectorCalibration/gotthardModuleData.h +++ b/slsDetectorCalibration/gotthardModuleData.h @@ -13,9 +13,6 @@ #define FRAMEMASK 0xFFFFFFFE #define PACKETMASK 1 #define FRAMEOFFSET 0x1 -#define SHORT_FRAMEMASK 0xFFFFFFFF -#define SHORT_PACKETMASK 0 -#define SHORT_FRAMEOFFSET 0 class gotthardModuleData : public slsReceiverData { @@ -32,8 +29,7 @@ public: */ - gotthardModuleData(double c=0, bool s=-1): slsReceiverData(X_PIXELS, Y_PIXELS, NPACKETS, BUFFERSIZE), xtalk(c),shortFrame(s) { - + gotthardModuleData(double c=0, int s=-1): slsReceiverData(X_PIXELS, Y_PIXELS, NPACKETS, BUFFERSIZE), xtalk(c),shortFrame(s) { if(shortFrame == -1) shortFrame = 0; @@ -84,19 +80,31 @@ public: setDataMap(dMap); setDataMask(dMask); - if(shortFrame){ - setFrameIndexMask(FRAMEMASK); - setPacketIndexMask(PACKETMASK); - setFrameIndexOffset(FRAMEOFFSET); - }else{ - setFrameIndexMask(SHORT_FRAMEMASK); - setPacketIndexMask(SHORT_PACKETMASK); - setFrameIndexOffset(SHORT_FRAMEOFFSET); - } }; + /** + + Returns the frame number for the given dataset. + \param buff pointer to the dataset + \returns frame number + + */ + + int getFrameNumber(char *buff){ + int np=(*(int*)buff); + + if(shortFrame) + return np; + + //gotthards frame header must be incremented + ++np; + //packet index should be 1 or 2 + return ((np&FRAMEMASK)>>FRAMEOFFSET); + }; + + /** gets the packets number (last packet is labelled with 0 and is replaced with 40) @@ -109,9 +117,11 @@ public: if(shortFrame) return 1; - int np=(*(int*)buff)&0x1; + int np=(*(int*)buff); + //gotthards frame header must be incremented ++np; - return np; + //packet index should be 1 or 2 + return ((np&PACKETMASK)+1); }; diff --git a/slsDetectorCalibration/moench02ModuleData.h b/slsDetectorCalibration/moench02ModuleData.h index 6f39a9643..f248fd1a4 100644 --- a/slsDetectorCalibration/moench02ModuleData.h +++ b/slsDetectorCalibration/moench02ModuleData.h @@ -65,10 +65,6 @@ class moench02ModuleData : public slsReceiverData { setDataMap(dMap); setDataMask(dMask); - setFrameIndexMask(0xffffff00); - setPacketIndexMask(0xff); - setFrameIndexOffset(8); - }; diff --git a/slsDetectorCalibration/slsDetectorData.h b/slsDetectorCalibration/slsDetectorData.h index ffa239373..3ca006476 100644 --- a/slsDetectorCalibration/slsDetectorData.h +++ b/slsDetectorCalibration/slsDetectorData.h @@ -191,31 +191,6 @@ class slsDetectorData { */ virtual double getValue(char *data, int ix, int iy=0) {return (double)getChannel(data, ix, iy);}; - /** - - Sets frame index mask for the given dataset. Virtual func: works for slsDetectorReceiver packets, but can be overloaded. - \param m frame index mask - - */ - - virtual void setFrameIndexMask(uint32_t m)=0; - - /** - - Sets the packet index mask for the given dataset. Virtual func: works for slsDetectorReceiver packets, but can be overloaded. - \param m packet index mask - - */ - - virtual void setPacketIndexMask(uint32_t m)=0; - - /** - - Sets the frame index offset for the given dataset. Virtual func: works for slsDetectorReceiver packets, but can be overloaded. - \param o frame index offset - */ - - virtual void setFrameIndexOffset(int o)=0; /** @@ -234,10 +209,10 @@ class slsDetectorData { \param buff pointer to the dataset \returns packet number number - +*/ virtual int getPacketNumber(char *buff)=0; - */ + /* /** diff --git a/slsDetectorCalibration/slsReceiverData.h b/slsDetectorCalibration/slsReceiverData.h index 0e5b3529c..5a58096fb 100644 --- a/slsDetectorCalibration/slsReceiverData.h +++ b/slsDetectorCalibration/slsReceiverData.h @@ -23,35 +23,9 @@ class slsReceiverData : public slsDetectorData { \param dROI Array of size nx*ny. The elements are 1s if the channel is good or in the ROI, 0 is bad or out of the ROI. NULL (default) means all 1s. */ - slsReceiverData(int npx, int npy, int np, int psize, int **dMap=NULL, dataType **dMask=NULL, int **dROI=NULL): slsDetectorData(npx, npy, np*psize, dMap, dMask, dROI), nPackets(np), packetSize(psize),frameIndexMask(0),packetIndexMask(0),frameIndexOffset(0) {}; + slsReceiverData(int npx, int npy, int np, int psize, int **dMap=NULL, dataType **dMask=NULL, int **dROI=NULL): slsDetectorData(npx, npy, np*psize, dMap, dMask, dROI), nPackets(np), packetSize(psize) {}; - /** - - Sets frame index mask for the given dataset. Virtual func: works for slsDetectorReceiver packets, but can be overloaded. - \param m frame index mask - - */ - - virtual void setFrameIndexMask(uint32_t m) {frameIndexMask = m;}; - - /** - - Sets the packet index mask for the given dataset. Virtual func: works for slsDetectorReceiver packets, but can be overloaded. - \param m packet index mask - - */ - - virtual void setPacketIndexMask(uint32_t m) {packetIndexMask = m;}; - - /** - - Sets the frame index offset for the given dataset. Virtual func: works for slsDetectorReceiver packets, but can be overloaded. - \param o frame index offset - */ - - virtual void setFrameIndexOffset(int o) {frameIndexOffset = o;}; - /** Returns the frame number for the given dataset. Virtual func: works for slsDetectorReceiver data (also for each packet), but can be overloaded. @@ -60,7 +34,7 @@ class slsReceiverData : public slsDetectorData { */ - virtual int getFrameNumber(char *buff){return ((*(int*)buff)&(frameIndexMask))>>frameIndexOffset;};/*{return ((*(int*)buff)&(0xffffff00))>>8;};*/ + virtual int getFrameNumber(char *buff){return ((*(int*)buff)&(0xffffff00))>>8;}; /** @@ -70,7 +44,7 @@ class slsReceiverData : public slsDetectorData { */ - virtual int getPacketNumber(char *buff) {return (*(int*)buff)&packetIndexMask;};/*{return (*(int*)buff)&0xff;};*/ + virtual int getPacketNumber(char *buff){return (*(int*)buff)&0xff;}; @@ -99,11 +73,11 @@ class slsReceiverData : public slsDetectorData { retval=NULL; np=0; } else if (pnum==1) { - fnum=fn; retval=p; if (np>0) /*cout << "*Incomplete frame number " << fnum << endl;*/ np=0; + fnum=fn; } else if (fn!=fnum) { if (fnum!=-1) { /* cout << " **Incomplete frame number " << fnum << " pnum " << pnum << " " << getFrameNumber(p) << endl;*/ @@ -190,9 +164,6 @@ class slsReceiverData : public slsDetectorData { private: const int nPackets; /**