mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 12:57:13 +02:00
multi progress calculated in one function rather getting all of them from shm
This commit is contained in:
@ -877,24 +877,12 @@ void DetectorImpl::registerDataCallback(void (*userCallback)(detectorData *,
|
|||||||
}
|
}
|
||||||
|
|
||||||
double DetectorImpl::setTotalProgress() {
|
double DetectorImpl::setTotalProgress() {
|
||||||
int64_t nf = Parallel(&slsDetector::getNumberOfFramesFromShm, {})
|
int64_t tot = Parallel(&slsDetector::getTotalNumFramesToReceive, {})
|
||||||
.tsquash("Inconsistent number of frames");
|
.tsquash("Inconsistent number of total frames (#frames x #triggers(or bursts) x #storage cells)");
|
||||||
int64_t nc = Parallel(&slsDetector::getNumberOfTriggersFromShm, {})
|
if (tot == 0) {
|
||||||
.tsquash("Inconsistent number of triggers");
|
throw RuntimeError("Invalid Total Number of frames (0)");
|
||||||
if (nf == 0 || nc == 0) {
|
|
||||||
throw RuntimeError("Number of frames or triggers is 0");
|
|
||||||
}
|
}
|
||||||
|
totalProgress = tot;
|
||||||
int ns = 1;
|
|
||||||
if (multi_shm()->multiDetectorType == JUNGFRAU) {
|
|
||||||
ns =
|
|
||||||
Parallel(&slsDetector::getNumberOfAdditionalStorageCellsFromShm, {})
|
|
||||||
.tsquash("Inconsistent number of additional storage cells");
|
|
||||||
++ns;
|
|
||||||
}
|
|
||||||
|
|
||||||
totalProgress = nf * nc * ns;
|
|
||||||
FILE_LOG(logDEBUG1) << "nf " << nf << " nc " << nc << " ns " << ns;
|
|
||||||
FILE_LOG(logDEBUG1) << "Set total progress " << totalProgress << std::endl;
|
FILE_LOG(logDEBUG1) << "Set total progress " << totalProgress << std::endl;
|
||||||
return totalProgress;
|
return totalProgress;
|
||||||
}
|
}
|
||||||
|
@ -1219,25 +1219,25 @@ uint64_t slsDetector::getStartingFrameNumber() {
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int64_t slsDetector::getTotalNumFramesToReceive() {
|
||||||
|
int64_t repeats = shm()->nTriggers;
|
||||||
|
// gotthard2 & auto & burst mode, use nBursts instead of nTriggers
|
||||||
|
if (shm()->myDetectorType == GOTTHARD2) {
|
||||||
|
if (shm()->burstMode != BURST_OFF && shm()->timingMode == AUTO_TIMING) {
|
||||||
|
repeats = shm()->nBursts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (shm()->nFrames * repeats * (int64_t)(shm()->nAddStorageCells + 1));
|
||||||
|
}
|
||||||
|
|
||||||
void slsDetector::sendTotalNumFramestoReceiver() {
|
void slsDetector::sendTotalNumFramestoReceiver() {
|
||||||
if (shm()->useReceiverFlag) {
|
if (shm()->useReceiverFlag) {
|
||||||
int64_t repeats = shm()->nTriggers;
|
int64_t arg = getTotalNumFramesToReceive();
|
||||||
// gotthard2 & auto & burst mode, use nBursts instead of nTriggers
|
|
||||||
if (shm()->myDetectorType == GOTTHARD2) {
|
|
||||||
if (shm()->burstMode != BURST_OFF && shm()->timingMode == AUTO_TIMING) {
|
|
||||||
repeats = shm()->nBursts;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int64_t arg = shm()->nFrames * repeats * (shm()->nAddStorageCells + 1);
|
|
||||||
FILE_LOG(logDEBUG1) << "Sending total number of frames (#f x #t x #s) to Receiver: " << arg;
|
FILE_LOG(logDEBUG1) << "Sending total number of frames (#f x #t x #s) to Receiver: " << arg;
|
||||||
sendToReceiver(F_RECEIVER_SET_NUM_FRAMES, arg, nullptr);
|
sendToReceiver(F_RECEIVER_SET_NUM_FRAMES, arg, nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t slsDetector::getNumberOfFramesFromShm() {
|
|
||||||
return shm()->nFrames;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t slsDetector::getNumberOfFrames() {
|
int64_t slsDetector::getNumberOfFrames() {
|
||||||
int64_t prevVal = shm()->nFrames;
|
int64_t prevVal = shm()->nFrames;
|
||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
@ -1257,10 +1257,6 @@ void slsDetector::setNumberOfFrames(int64_t value) {
|
|||||||
sendTotalNumFramestoReceiver();
|
sendTotalNumFramestoReceiver();
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t slsDetector::getNumberOfTriggersFromShm() {
|
|
||||||
return shm()->nTriggers;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t slsDetector::getNumberOfTriggers() {
|
int64_t slsDetector::getNumberOfTriggers() {
|
||||||
int64_t prevVal = shm()->nTriggers;
|
int64_t prevVal = shm()->nTriggers;
|
||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
@ -1280,10 +1276,6 @@ void slsDetector::setNumberOfTriggers(int64_t value) {
|
|||||||
sendTotalNumFramestoReceiver();
|
sendTotalNumFramestoReceiver();
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t slsDetector::getNumberOfBurstsFromShm() {
|
|
||||||
return shm()->nBursts;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t slsDetector::getNumberOfBursts() {
|
int64_t slsDetector::getNumberOfBursts() {
|
||||||
int64_t prevVal = shm()->nBursts;
|
int64_t prevVal = shm()->nBursts;
|
||||||
int64_t retval = -1;
|
int64_t retval = -1;
|
||||||
@ -1303,10 +1295,6 @@ void slsDetector::setNumberOfBursts(int64_t value) {
|
|||||||
sendTotalNumFramestoReceiver();
|
sendTotalNumFramestoReceiver();
|
||||||
}
|
}
|
||||||
|
|
||||||
int slsDetector::getNumberOfAdditionalStorageCellsFromShm() {
|
|
||||||
return shm()->nAddStorageCells;
|
|
||||||
}
|
|
||||||
|
|
||||||
int slsDetector::getNumberOfAdditionalStorageCells() {
|
int slsDetector::getNumberOfAdditionalStorageCells() {
|
||||||
int prevVal = shm()->nAddStorageCells;
|
int prevVal = shm()->nAddStorageCells;
|
||||||
int retval = -1;
|
int retval = -1;
|
||||||
|
@ -530,32 +530,24 @@ class slsDetector : public virtual slsDetectorDefs {
|
|||||||
*/
|
*/
|
||||||
uint64_t getStartingFrameNumber();
|
uint64_t getStartingFrameNumber();
|
||||||
|
|
||||||
void sendTotalNumFramestoReceiver();
|
int64_t getTotalNumFramesToReceive();
|
||||||
|
|
||||||
int64_t getNumberOfFramesFromShm();
|
void sendTotalNumFramestoReceiver();
|
||||||
|
|
||||||
int64_t getNumberOfFrames();
|
int64_t getNumberOfFrames();
|
||||||
|
|
||||||
void setNumberOfFrames(int64_t value);
|
void setNumberOfFrames(int64_t value);
|
||||||
|
|
||||||
int64_t getNumberOfTriggersFromShm();
|
|
||||||
|
|
||||||
int64_t getNumberOfTriggers();
|
int64_t getNumberOfTriggers();
|
||||||
|
|
||||||
void setNumberOfTriggers(int64_t value);
|
void setNumberOfTriggers(int64_t value);
|
||||||
|
|
||||||
/** [Gotthard2] only in burst mode and in auto timing mode */
|
|
||||||
int64_t getNumberOfBurstsFromShm();
|
|
||||||
|
|
||||||
/** [Gotthard2] only in burst mode and in auto timing mode */
|
/** [Gotthard2] only in burst mode and in auto timing mode */
|
||||||
int64_t getNumberOfBursts();
|
int64_t getNumberOfBursts();
|
||||||
|
|
||||||
/** [Gotthard2] only in burst mode and in auto timing mode */
|
/** [Gotthard2] only in burst mode and in auto timing mode */
|
||||||
void setNumberOfBursts(int64_t value);
|
void setNumberOfBursts(int64_t value);
|
||||||
|
|
||||||
/** [Jungfrau] Advanced */
|
|
||||||
int getNumberOfAdditionalStorageCellsFromShm();
|
|
||||||
|
|
||||||
/** [Jungfrau] Advanced */
|
/** [Jungfrau] Advanced */
|
||||||
int getNumberOfAdditionalStorageCells();
|
int getNumberOfAdditionalStorageCells();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user