Adedde sturctures for moench03 10Gb data

This commit is contained in:
2015-06-23 09:15:23 +02:00
parent e16cda9509
commit 1941ecb3c3
5 changed files with 894 additions and 34 deletions

View File

@@ -40,8 +40,8 @@ class slsDetectorData {
slsDetectorData(int npx, int npy, int dsize, int **dMap=NULL, dataType **dMask=NULL, int **dROI=NULL): nx(npx), ny(npy), dataSize(dsize) {
xmap=new int[nx*ny];
ymap=new int[nx*ny];
xmap=new int[dsize/sizeof(dataType)];
ymap=new int[dsize/sizeof(dataType)];
dataMask=new dataType*[ny];
for(int i = 0; i < ny; i++) {
@@ -228,42 +228,44 @@ class slsDetectorData {
virtual dataType getChannel(char *data, int ix, int iy, int dr) {
dataType m=0;
uint64_t t;
int numBytes,divFactor,newix,pixelval;
//cout <<"ix:"<<ix<<" nx:"<<nx<<" iy:"<<ny<<" ny:"<<ny<<" datamap[iy][ix]:"<< dataMap[iy][ix] <<"datasize:"<< dataSize <<endl;
if (ix>=0 && ix<nx && iy>=0 && iy<ny && dataMap[iy][ix]>=0 && dataMap[iy][ix]<dataSize) {
m=dataMask[iy][ix];
/////All this stuff should go to eiger detector!!!!!!!!!!!!!!!
/* int numBytes,divFactor,newix,pixelval; */
numBytes = (nx * iy + ix);
divFactor=2;
if(dr == 4) divFactor = 16;
else if (dr == 8) divFactor = 8;
else if (dr == 16) divFactor = 4;
/* //cout <<"ix:"<<ix<<" nx:"<<nx<<" iy:"<<ny<<" ny:"<<ny<<" datamap[iy][ix]:"<< dataMap[iy][ix] <<"datasize:"<< dataSize <<endl; */
/* if (ix>=0 && ix<nx && iy>=0 && iy<ny && dataMap[iy][ix]>=0 && dataMap[iy][ix]<dataSize) { */
/* m=dataMask[iy][ix]; */
pixelval = numBytes % divFactor;
newix = ix - pixelval;
/* numBytes = (nx * iy + ix); */
/* divFactor=2; */
/* if(dr == 4) divFactor = 16; */
/* else if (dr == 8) divFactor = 8; */
/* else if (dr == 16) divFactor = 4; */
//cout <<"pixelval:"<<pixelval<<" newix:"<<newix<<endl;
//cout <<"64:"<< hex<<((uint64_t)(*((uint64_t*)(((char*)data)+(dataMap[iy][newix])))))<<endl;
t = (be64toh((uint64_t)(*((uint64_t*)(((char*)data)+(dataMap[iy][newix]))))));
//cout<<"t:"<<t<<endl;
/* pixelval = numBytes % divFactor; */
/* newix = ix - pixelval; */
}else
cprintf(RED,"outside limits\n");
/* //cout <<"pixelval:"<<pixelval<<" newix:"<<newix<<endl; */
/* //cout <<"64:"<< hex<<((uint64_t)(*((uint64_t*)(((char*)data)+(dataMap[iy][newix])))))<<endl; */
/* t = (be64toh((uint64_t)(*((uint64_t*)(((char*)data)+(dataMap[iy][newix])))))); */
/* //cout<<"t:"<<t<<endl; */
if(dr == 4)
//uint8_t value = t >> (pixelval*4); cout <<"value:"<< value << endl;
return ((t >> (pixelval*4)) & 0xf)^m;
else if(dr == 8)
//uint8_t value = t >> (pixelval*8); cout <<"value:"<< value << endl;
return ((t >> (pixelval*8)) & 0xff)^m;
else if(dr == 16){
//uint16_t value = t >> (pixelval*16); cout <<"value:"<< value << endl;
return ((t >> (pixelval*16)) & 0xffff)^m;
}else{
//uint32_t value = t >> (pixelval*32); cout <<"value:"<< value << endl;
return ((t >> (pixelval*32)) & 0xffffffff)^m;
}
/* }/\* else *\/ */
/* /\* cprintf(RED,"outside limits\n"); *\/ */
/* if(dr == 4) */
/* //uint8_t value = t >> (pixelval*4); cout <<"value:"<< value << endl; */
/* return ((t >> (pixelval*4)) & 0xf)^m; */
/* else if(dr == 8) */
/* //uint8_t value = t >> (pixelval*8); cout <<"value:"<< value << endl; */
/* return ((t >> (pixelval*8)) & 0xff)^m; */
/* else if(dr == 16){ */
/* //uint16_t value = t >> (pixelval*16); cout <<"value:"<< value << endl; */
/* return ((t >> (pixelval*16)) & 0xffff)^m; */
/* }else{ */
/* //uint32_t value = t >> (pixelval*32); cout <<"value:"<< value << endl; */
/* return ((t >> (pixelval*32)) & 0xffffffff)^m; */
/* } */
};
/**