mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-22 03:40:04 +02:00
WIP
This commit is contained in:
parent
7457c56533
commit
26958e99ef
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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) {
|
||||
|
@ -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") {
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user