includes handling dynamic range for multiple receivers for eiger

This commit is contained in:
Maliakal Dhanya
2015-01-14 10:18:54 +01:00
parent f88cc1c47d
commit d1aa3021fb
2 changed files with 19 additions and 9 deletions

View File

@ -4540,7 +4540,7 @@ int* multiSlsDetector::readFrameFromReceiver(char* fName, int &fIndex){
}
int n;
int i,k,offsetX, offsetY, maxX, maxY;;
int i,k,offsetX, offsetY, maxX, maxY; double dr;
int* retval=new int[nel];
int *retdet, *p=retval;
string fullFName="";
@ -4557,15 +4557,22 @@ int* multiSlsDetector::readFrameFromReceiver(char* fName, int &fIndex){
retdet=detectors[id]->readFrameFromReceiver(fName,fIndex);
if(detectors[id]->getErrorMask())
setErrorMask(getErrorMask()|(1<<id));
if (retdet) {
if ((retdet) &&(fIndex!=-1)) {
n=detectors[id]->getDataBytes();
if(getDetectorsType() == EIGER){
k=detectors[id]->getMaxNumberOfChannels(X)*2;/**bit mode*/
offsetY = ((maxY - (thisMultiDetector->offsetY[id] + detectors[id]->getMaxNumberOfChannels(Y))) * maxX)*2;/**bit mode*/
offsetX = thisMultiDetector->offsetX[id]*2;
cout << "fname:"<<fName<<" findex:"<<fIndex<<endl;
cout<<"n:"<<n<<endl;
cout<<"maxchan:"<<detectors[id]->getMaxNumberOfChannels()<<" n:"<<n<<endl;
dr = (double)n/detectors[id]->getMaxNumberOfChannels();
cout << "dr:"<<dr<<endl;
k=(int)(detectors[id]->getMaxNumberOfChannels(X)*dr);//bit mode
cout << "k:"<<k<<endl;
offsetY = (int)(((maxY - (thisMultiDetector->offsetY[id] + detectors[id]->getMaxNumberOfChannels(Y))) * maxX)*dr);//bit mode
offsetX = (int)(thisMultiDetector->offsetX[id]*dr);
cout << "offsetY"<<offsetY<< " offsetX:"<<offsetX<<endl;
for(i=0; i< 256;i++){
memcpy((((char*)p) + offsetY + offsetX + (i*maxX*2)/**bit mode*/) ,(((char*)retdet) + (i*k)),k);
memcpy((((char*)p) + offsetY + offsetX + ((int)(i*maxX*dr))) ,(((char*)retdet) + (i*k)),k);//bit mode
}
}
else{