diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index a66abfa57..248638f2e 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -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; + /** max number of channels for complete detector*/ + 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) diff --git a/slsDetectorSoftware/include/slsDetectorUsers.h b/slsDetectorSoftware/include/slsDetectorUsers.h index 46c5e4915..eacf25992 100755 --- a/slsDetectorSoftware/include/slsDetectorUsers.h +++ b/slsDetectorSoftware/include/slsDetectorUsers.h @@ -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 diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index aa79fd4ed..8f5bcbc0b 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -66,21 +66,15 @@ defs::xy Detector::getModuleGeometry() const { } Result 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 Detector::getQuad(Positions pos) const { diff --git a/slsDetectorSoftware/src/multiSlsDetector.cpp b/slsDetectorSoftware/src/multiSlsDetector.cpp index 0f3c801fa..e2f76a495 100755 --- a/slsDetectorSoftware/src/multiSlsDetector.cpp +++ b/slsDetectorSoftware/src/multiSlsDetector.cpp @@ -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::setMaxNumberOfChannels(const slsDetectorDefs::xy c) { - multi_shm()->maxNumberOfChannels = c; +void multiSlsDetector::setNumberOfChannels(const slsDetectorDefs::xy c) { + if (size() > 1) { + throw RuntimeError("Set the number of channels before setting hostname."); + } + multi_shm()->numberOfChannels = c; } int multiSlsDetector::getQuad(int detPos) { diff --git a/slsDetectorSoftware/src/slsDetectorCommand.cpp b/slsDetectorSoftware/src/slsDetectorCommand.cpp index cc3ac0423..7d56ba929 100755 --- a/slsDetectorSoftware/src/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/src/slsDetectorCommand.cpp @@ -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") { diff --git a/slsDetectorSoftware/src/slsDetectorUsers.cpp b/slsDetectorSoftware/src/slsDetectorUsers.cpp index bfdd47be9..7dd0069a8 100755 --- a/slsDetectorSoftware/src/slsDetectorUsers.cpp +++ b/slsDetectorSoftware/src/slsDetectorUsers.cpp @@ -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;