#ifndef DESERIALIZER_H #define DESERIALIZER_H #include #include "slsDetectorData.h" class deserializer : public slsDetectorData { public: deserializer( std::vector dbl, int nch=64*3,int dr=24, int off=2): slsDetectorData(nch,1,nch*dr*8+off*8,NULL,NULL,NULL), dynamicRange(dr), serialOffset(off), frameNumber(0), numberOfCounters(nch), dbitlist(dbl) {}; deserializer( std::vector dbl, int nch,int dr, int off, int ds): slsDetectorData(nch,1,ds,NULL,NULL,NULL), dynamicRange(dr), serialOffset(off), frameNumber(0), numberOfCounters(nch), dbitlist(dbl) {}; virtual void getPixel(int ip, int &x, int &y) {x=-1; y=-1;}; virtual int getChannel(char *data, int ix, int iy=0) { int ret=-1; if (ix>=0 && ix dbl, int dr=24, int nch=64*3, int off=5) { // off=0; //int iarg; cout <<"** deserializer: " << endl; cout << "** Number of chans:\t" << nch << endl; cout << "** Serial Offset:\t" << off << endl; cout << "** Dynamic range:\t" << dr << endl; int64_t word, *wp, ww,one=1, bit ; int* val=new int[nch]; int ioff=0; int idr=0; int ib=0; int iw=0; int ii=0; int ich; int nb=dbl.size(); idr=0; for (ib=0; ib1060) */ /* cout << iw << " " << idr << " " << ib << " " << bit << " " << ich << " " << val[ich] << " ** " ; */ bit=dbl[ib]; ww=one<1060) */ /* cout << val[ich] << " " << hex << word << " " << ww << " " << (word&(ww)) << dec < dbl, int dr=24, int nch=64*3, int off=5) { // off=0; //int iarg; // int64_t word; int* val=new int[nch]; //int ioff=0; int idr=0; int ib=0; int iw=0; int ii=0; int ich; int nb=dbl.size(); int bit; char *dval; idr=0; for (ib=0; ib1060) */ /* cout << iw << " " << idr << " " << ib << " " << bit << " " << ich << " " << val[ich] << " ** " ; */ bit=dbl[ib]; //ioff=off; idr=0; for (iw=0; iw<(nch*dr/nb)/8; iw++) { val[ich]|=(*dval)<=dr) { idr=0; ich++; } } ii++; // ib++; }//end for return val; } virtual int setFrameNumber(int f=0) {if (f>=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;}; virtual std::vector setDBitList(std::vector dbl) {dbitlist=dbl; return dbitlist;}; virtual std::vector getDBitList() {return dbitlist;}; private: int dynamicRange; int serialOffset; int frameNumber; int numberOfCounters; std::vector dbitlist; }; #endif