mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
WIP
This commit is contained in:
parent
7457c56533
commit
26958e99ef
@ -56,11 +56,8 @@ struct sharedMultiSlsDetector {
|
|||||||
/** Number of detectors operated at once */
|
/** Number of detectors operated at once */
|
||||||
slsDetectorDefs::xy numberOfDetector;
|
slsDetectorDefs::xy numberOfDetector;
|
||||||
|
|
||||||
/** total number of channels for all detectors */
|
/** max number of channels for complete detector*/
|
||||||
slsDetectorDefs::xy numberOfChannels;
|
slsDetectorDefs::xy numberOfChannels;
|
||||||
|
|
||||||
/** max number of channels for complete detector*/
|
|
||||||
slsDetectorDefs::xy maxNumberOfChannels;
|
|
||||||
|
|
||||||
/** flag for acquiring */
|
/** flag for acquiring */
|
||||||
bool acquiringFlag;
|
bool acquiringFlag;
|
||||||
@ -374,25 +371,18 @@ class multiSlsDetector : public virtual slsDetectorDefs {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the total number of channels of all sls detectors including gap pixels
|
* 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
|
* @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
|
* @returns the total number of channels of all sls detectors including gap pixels
|
||||||
*/
|
*/
|
||||||
slsDetectorDefs::xy getNumberOfChannels(int detPos = -1);//
|
slsDetectorDefs::xy getNumberOfChannels(int detPos = -1) const;//
|
||||||
|
|
||||||
/**
|
|
||||||
* 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; //
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Must be set before setting hostname
|
||||||
* Sets maximum number of channels of all sls detectors in each
|
* Sets maximum number of channels of all sls detectors in each
|
||||||
* dimension d from shared memory
|
* dimension d from shared memory
|
||||||
* @param c maximum number of channels of all sls detectors
|
* @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)
|
* Get Quad Type (Only for Eiger Quad detector hardware)
|
||||||
|
@ -101,15 +101,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
int size() const;
|
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
|
* Returns the size of detector/multi detector
|
||||||
|
@ -66,21 +66,15 @@ defs::xy Detector::getModuleGeometry() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Result<defs::xy> Detector::getModuleSize(Positions pos) 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);
|
return pimpl->Parallel(&slsDetector::getNumberOfChannels, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
defs::xy Detector::getDetectorSize() const {
|
defs::xy Detector::getDetectorSize() const {
|
||||||
return pimpl->getMaxNumberOfChannels();
|
return pimpl->getNumberOfChannels();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Detector::setDetectorSize(const defs::xy value) {
|
void Detector::setDetectorSize(const defs::xy value) {
|
||||||
pimpl->setMaxNumberOfChannels(value);
|
pimpl->setNumberOfChannels(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
Result<bool> Detector::getQuad(Positions pos) const {
|
Result<bool> Detector::getQuad(Positions pos) const {
|
||||||
|
@ -280,8 +280,6 @@ void multiSlsDetector::initializeDetectorStructure() {
|
|||||||
multi_shm()->numberOfDetector.y = 0;
|
multi_shm()->numberOfDetector.y = 0;
|
||||||
multi_shm()->numberOfChannels.x = 0;
|
multi_shm()->numberOfChannels.x = 0;
|
||||||
multi_shm()->numberOfChannels.y = 0;
|
multi_shm()->numberOfChannels.y = 0;
|
||||||
multi_shm()->maxNumberOfChannels.x = 0;
|
|
||||||
multi_shm()->maxNumberOfChannels.y = 0;
|
|
||||||
multi_shm()->acquiringFlag = false;
|
multi_shm()->acquiringFlag = false;
|
||||||
multi_shm()->receiver_upstream = false;
|
multi_shm()->receiver_upstream = false;
|
||||||
}
|
}
|
||||||
@ -453,7 +451,7 @@ void multiSlsDetector::updateDetectorSize() {
|
|||||||
|
|
||||||
const slsDetectorDefs::xy det_size = detectors[0]->getNumberOfChannels();
|
const slsDetectorDefs::xy det_size = detectors[0]->getNumberOfChannels();
|
||||||
|
|
||||||
int maxy = multi_shm()->maxNumberOfChannels.y;
|
int maxy = multi_shm()->numberOfChannels.y;
|
||||||
if (maxy == 0) {
|
if (maxy == 0) {
|
||||||
maxy = det_size.y * size();
|
maxy = det_size.y * size();
|
||||||
}
|
}
|
||||||
@ -483,7 +481,6 @@ void multiSlsDetector::updateDetectorSize() {
|
|||||||
for (auto &d : detectors) {
|
for (auto &d : detectors) {
|
||||||
d->updateMultiSize(multi_shm()->numberOfDetector);
|
d->updateMultiSize(multi_shm()->numberOfDetector);
|
||||||
}
|
}
|
||||||
multi_shm()->maxNumberOfChannels = multi_shm()->numberOfChannels;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
slsDetectorDefs::detectorType multiSlsDetector::getDetectorTypeAsEnum() const {
|
slsDetectorDefs::detectorType multiSlsDetector::getDetectorTypeAsEnum() const {
|
||||||
@ -519,7 +516,7 @@ slsDetectorDefs::xy multiSlsDetector::getNumberOfDetectors() const {
|
|||||||
return multi_shm()->numberOfDetector;
|
return multi_shm()->numberOfDetector;
|
||||||
}
|
}
|
||||||
|
|
||||||
slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) {
|
slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) const {
|
||||||
// single
|
// single
|
||||||
if (detPos >= 0) {
|
if (detPos >= 0) {
|
||||||
return detectors[detPos]->getNumberOfChannels();
|
return detectors[detPos]->getNumberOfChannels();
|
||||||
@ -529,12 +526,11 @@ slsDetectorDefs::xy multiSlsDetector::getNumberOfChannels(int detPos) {
|
|||||||
return multi_shm()->numberOfChannels;
|
return multi_shm()->numberOfChannels;
|
||||||
}
|
}
|
||||||
|
|
||||||
slsDetectorDefs::xy multiSlsDetector::getMaxNumberOfChannels() const {
|
void multiSlsDetector::setNumberOfChannels(const slsDetectorDefs::xy c) {
|
||||||
return multi_shm()->maxNumberOfChannels;
|
if (size() > 1) {
|
||||||
}
|
throw RuntimeError("Set the number of channels before setting hostname.");
|
||||||
|
}
|
||||||
void multiSlsDetector::setMaxNumberOfChannels(const slsDetectorDefs::xy c) {
|
multi_shm()->numberOfChannels = c;
|
||||||
multi_shm()->maxNumberOfChannels = c;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int multiSlsDetector::getQuad(int detPos) {
|
int multiSlsDetector::getQuad(int detPos) {
|
||||||
|
@ -3306,7 +3306,7 @@ std::string slsDetectorCommand::cmdDetectorSize(int narg, const char * const arg
|
|||||||
slsDetectorDefs::xy res;
|
slsDetectorDefs::xy res;
|
||||||
res.x = val;
|
res.x = val;
|
||||||
res.y = val2;
|
res.y = val2;
|
||||||
myDet->setMaxNumberOfChannels(res);
|
myDet->setNumberOfChannels(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cmd=="quad"){
|
if(cmd=="quad"){
|
||||||
@ -3342,7 +3342,7 @@ std::string slsDetectorCommand::cmdDetectorSize(int narg, const char * const arg
|
|||||||
ROI roi = myDet->getROI(detPos);
|
ROI roi = myDet->getROI(detPos);
|
||||||
return (std::string("[") + std::to_string(roi.xmin) + std::string(",") + std::to_string(roi.xmax) + std::string("]"));
|
return (std::string("[") + std::to_string(roi.xmin) + std::string(",") + std::to_string(roi.xmax) + std::string("]"));
|
||||||
} else if (cmd == "detsizechan") {
|
} else if (cmd == "detsizechan") {
|
||||||
slsDetectorDefs::xy res = myDet->getMaxNumberOfChannels();
|
slsDetectorDefs::xy res = myDet->getNumberOfChannels();
|
||||||
sprintf(ans, "%d %d", res.x, res.y);
|
sprintf(ans, "%d %d", res.x, res.y);
|
||||||
return std::string(ans);
|
return std::string(ans);
|
||||||
} else if (cmd=="quad") {
|
} else if (cmd=="quad") {
|
||||||
|
@ -8,13 +8,6 @@ int slsDetectorUsers::size() const {
|
|||||||
return detector.size();
|
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){
|
int slsDetectorUsers::getDetectorSize(int &nx, int &ny, int detPos){
|
||||||
slsDetectorDefs::xy res = detector.getNumberOfChannels();
|
slsDetectorDefs::xy res = detector.getNumberOfChannels();
|
||||||
nx=res.x;
|
nx=res.x;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user