This commit is contained in:
maliakal_d 2019-08-19 10:48:05 +02:00
parent 7457c56533
commit 26958e99ef
6 changed files with 16 additions and 52 deletions

View File

@ -56,11 +56,8 @@ struct sharedMultiSlsDetector {
/** Number of detectors operated at once */
slsDetectorDefs::xy numberOfDetector;
/** total number of channels for all detectors */
slsDetectorDefs::xy numberOfChannels;
/** max number of channels for complete detector*/
slsDetectorDefs::xy maxNumberOfChannels;
slsDetectorDefs::xy numberOfChannels;
/** flag for acquiring */
bool acquiringFlag;
@ -374,25 +371,18 @@ class multiSlsDetector : public virtual slsDetectorDefs {
/**
* Returns the total number of channels of all sls detectors including gap pixels
* @param d dimension d
* @param detPos -1 for all detectors in list or specific detector position
* @returns the total number of channels of all sls detectors including gap pixels
*/
slsDetectorDefs::xy getNumberOfChannels(int detPos = -1);//
/**
* Returns maximum number of channels of all sls detectors in each
* dimension d from shared memory
* @returns maximum number of channels of all sls detectors
*/
slsDetectorDefs::xy getMaxNumberOfChannels() const; //
slsDetectorDefs::xy getNumberOfChannels(int detPos = -1) const;//
/**
* Must be set before setting hostname
* Sets maximum number of channels of all sls detectors in each
* dimension d from shared memory
* @param c maximum number of channels of all sls detectors
*/
void setMaxNumberOfChannels(const slsDetectorDefs::xy c); //
void setNumberOfChannels(const slsDetectorDefs::xy c); //
/**
* Get Quad Type (Only for Eiger Quad detector hardware)

View File

@ -101,15 +101,6 @@ public:
*/
int size() const;
/**
* Returns the maximum number of channels of all detectors
* (provided by user in config file using detsizechan command)
* number of channels in x and y are calculated according to these dimensions
* @param nx number of channels in horizontal
* @param ny number of channels in vertical
* @returns the maximum number of channels of all detectors
*/
int getMaximumDetectorSize(int &nx, int &ny);
/**
* Returns the size of detector/multi detector

View File

@ -66,21 +66,15 @@ defs::xy Detector::getModuleGeometry() const {
}
Result<defs::xy> Detector::getModuleSize(Positions pos) const {
if (pos.empty() ||
(pos.size() == 1 &&
pos[0] == -1)) { // TODO: also check condition that pos.size ==
// pimpl->size()?? for other occurences as well
return {pimpl->getNumberOfChannels()};
}
return pimpl->Parallel(&slsDetector::getNumberOfChannels, pos);
}
defs::xy Detector::getDetectorSize() const {
return pimpl->getMaxNumberOfChannels();
return pimpl->getNumberOfChannels();
}
void Detector::setDetectorSize(const defs::xy value) {
pimpl->setMaxNumberOfChannels(value);
pimpl->setNumberOfChannels(value);
}
Result<bool> Detector::getQuad(Positions pos) const {

View File

@ -280,8 +280,6 @@ void multiSlsDetector::initializeDetectorStructure() {
multi_shm()->numberOfDetector.y = 0;
multi_shm()->numberOfChannels.x = 0;
multi_shm()->numberOfChannels.y = 0;
multi_shm()->maxNumberOfChannels.x = 0;
multi_shm()->maxNumberOfChannels.y = 0;
multi_shm()->acquiringFlag = false;
multi_shm()->receiver_upstream = false;
}
@ -453,7 +451,7 @@ void multiSlsDetector::updateDetectorSize() {
const slsDetectorDefs::xy det_size = detectors[0]->getNumberOfChannels();
int maxy = multi_shm()->maxNumberOfChannels.y;
int maxy = multi_shm()->numberOfChannels.y;
if (maxy == 0) {
maxy = det_size.y * size();
}
@ -483,7 +481,6 @@ void multiSlsDetector::updateDetectorSize() {
for (auto &d : detectors) {
d->updateMultiSize(multi_shm()->numberOfDetector);
}
multi_shm()->maxNumberOfChannels = multi_shm()->numberOfChannels;
}
slsDetectorDefs::detectorType multiSlsDetector::getDetectorTypeAsEnum() const {
@ -519,7 +516,7 @@ slsDetectorDefs::xy multiSlsDetector::getNumberOfDetectors() const {
return multi_shm()->numberOfDetector;
}
slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) {
slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) const {
// single
if (detPos >= 0) {
return detectors[detPos]->getNumberOfChannels();
@ -529,12 +526,11 @@ slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) {
return multi_shm()->numberOfChannels;
}
slsDetectorDefs::xy multiSlsDetector::getMaxNumberOfChannels() const {
return multi_shm()->maxNumberOfChannels;
void multiSlsDetector::setNumberOfChannels(const slsDetectorDefs::xy c) {
if (size() > 1) {
throw RuntimeError("Set the number of channels before setting hostname.");
}
void multiSlsDetector::setMaxNumberOfChannels(const slsDetectorDefs::xy c) {
multi_shm()->maxNumberOfChannels = c;
multi_shm()->numberOfChannels = c;
}
int multiSlsDetector::getQuad(int detPos) {

View File

@ -3306,7 +3306,7 @@ std::string slsDetectorCommand::cmdDetectorSize(int narg, const char * const arg
slsDetectorDefs::xy res;
res.x = val;
res.y = val2;
myDet->setMaxNumberOfChannels(res);
myDet->setNumberOfChannels(res);
}
if(cmd=="quad"){
@ -3342,7 +3342,7 @@ std::string slsDetectorCommand::cmdDetectorSize(int narg, const char * const arg
ROI roi = myDet->getROI(detPos);
return (std::string("[") + std::to_string(roi.xmin) + std::string(",") + std::to_string(roi.xmax) + std::string("]"));
} else if (cmd == "detsizechan") {
slsDetectorDefs::xy res = myDet->getMaxNumberOfChannels();
slsDetectorDefs::xy res = myDet->getNumberOfChannels();
sprintf(ans, "%d %d", res.x, res.y);
return std::string(ans);
} else if (cmd=="quad") {

View File

@ -8,13 +8,6 @@ int slsDetectorUsers::size() const {
return detector.size();
}
int slsDetectorUsers::getMaximumDetectorSize(int &nx, int &ny){
slsDetectorDefs::xy res = detector.getMaxNumberOfChannels();
nx=res.x;
ny=res.y;
return nx*ny;
}
int slsDetectorUsers::getDetectorSize(int &nx, int &ny, int detPos){
slsDetectorDefs::xy res = detector.getNumberOfChannels();
nx=res.x;