client gives now 3d positions of detector to be configured in udp header, only in jungfrau firmware till now

This commit is contained in:
Dhanya Maliakal
2017-09-22 15:28:57 +02:00
parent 5a8f30fee8
commit 663fd557ff
8 changed files with 76 additions and 22 deletions

View File

@ -116,6 +116,8 @@ multiSlsDetector::multiSlsDetector(int id) : slsDetectorUtils(), shmId(-1)
thisMultiDetector->onlineFlag = ONLINE_FLAG;
thisMultiDetector->receiverOnlineFlag = OFFLINE_FLAG;
thisMultiDetector->numberOfDetectors=0;
thisMultiDetector->numberOfDetector[X]=0;
thisMultiDetector->numberOfDetector[Y]=0;
for (int id=0; id<MAXDET; ++id) {
thisMultiDetector->detectorIds[id]=-1;
thisMultiDetector->offsetX[id]=0;
@ -433,6 +435,8 @@ void multiSlsDetector::updateOffsets(){//cannot paralllize due to slsdetector ca
thisMultiDetector->numberOfChannel[Y] = 0;
thisMultiDetector->maxNumberOfChannel[X] = 0;
thisMultiDetector->maxNumberOfChannel[Y] = 0;
thisMultiDetector->numberOfDetector[X] = 0;
thisMultiDetector->numberOfDetector[Y] = 0;
for (int i=0; i<thisMultiDetector->numberOfDetectors; ++i) {
@ -455,6 +459,8 @@ void multiSlsDetector::updateOffsets(){//cannot paralllize due to slsdetector ca
numY += detectors[i]->getTotalNumberOfChannels(Y);
maxX += detectors[i]->getMaxNumberOfChannels(X);
maxY += detectors[i]->getMaxNumberOfChannels(Y);
++thisMultiDetector->numberOfDetector[X];
++thisMultiDetector->numberOfDetector[Y];
#ifdef VERBOSE
cout<<"incrementing in both direction"<<endl;
#endif
@ -466,6 +472,7 @@ void multiSlsDetector::updateOffsets(){//cannot paralllize due to slsdetector ca
prevChanY = detectors[i]->getTotalNumberOfChannels(Y);
numY += detectors[i]->getTotalNumberOfChannels(Y);
maxY += detectors[i]->getMaxNumberOfChannels(Y);
++thisMultiDetector->numberOfDetector[Y];
#ifdef VERBOSE
cout<<"incrementing in y direction"<<endl;
#endif
@ -483,6 +490,7 @@ void multiSlsDetector::updateOffsets(){//cannot paralllize due to slsdetector ca
prevChanX = detectors[i]->getTotalNumberOfChannels(X);
numX += detectors[i]->getTotalNumberOfChannels(X);
maxX += detectors[i]->getMaxNumberOfChannels(X);
++thisMultiDetector->numberOfDetector[X];
#ifdef VERBOSE
cout<<"incrementing in x direction"<<endl;
#endif
@ -791,24 +799,6 @@ int multiSlsDetector::addSlsDetector(detectorType t, int pos) {
void multiSlsDetector::getNumberOfDetectors(int& nx, int& ny) {
nx = 0; ny = 0;
int offsetx = -1, offsety = -1;
for (int i = 0; i < thisMultiDetector->numberOfDetectors; ++i) {
if (thisMultiDetector->offsetX[i] > offsetx) {
++nx;
offsetx = thisMultiDetector->offsetX[i];
}
if (thisMultiDetector->offsetY[i] > offsety) {
++ny;
offsety = thisMultiDetector->offsetY[i];
}
}
}
int multiSlsDetector::getDetectorOffset(int pos, int &ox, int &oy) {
ox=-1;

View File

@ -67,6 +67,9 @@ class multiSlsDetector : public slsDetectorUtils {
/** Number of detectors operated at once */
int numberOfDetectors;
/** Number of detectors operated at once */
int numberOfDetector[2];
/** Ids of the detectors to be operated at once */
int detectorIds[MAXDET];
@ -329,11 +332,17 @@ class multiSlsDetector : public slsDetectorUtils {
\returns number of detectors */
int getNumberOfDetectors() {return thisMultiDetector->numberOfDetectors;};
/**returns number of detectors in dimension d
* \param d dimension d
* \returns number of detectors in dimension d
*/
int getNumberOfDetectors(dimension d) {return thisMultiDetector->numberOfDetector[d];};
/** returns the number of detectors in each direction
\param nx number of detectors in x direction
\param ny number of detectors in y direction
*/
void getNumberOfDetectors(int& nx, int& ny);
void getNumberOfDetectors(int& nx, int& ny){nx=thisMultiDetector->numberOfDetector[X];ny=thisMultiDetector->numberOfDetector[Y];};
int getMaxMods();
int getNMods();