multi progress calculated in one function rather getting all of them from shm

This commit is contained in:
2020-02-26 11:17:49 +01:00
parent fe3a7b0faf
commit 80304c2eaf
3 changed files with 20 additions and 52 deletions

View File

@ -877,24 +877,12 @@ void DetectorImpl::registerDataCallback(void (*userCallback)(detectorData *,
}
double DetectorImpl::setTotalProgress() {
int64_t nf = Parallel(&slsDetector::getNumberOfFramesFromShm, {})
.tsquash("Inconsistent number of frames");
int64_t nc = Parallel(&slsDetector::getNumberOfTriggersFromShm, {})
.tsquash("Inconsistent number of triggers");
if (nf == 0 || nc == 0) {
throw RuntimeError("Number of frames or triggers is 0");
int64_t tot = Parallel(&slsDetector::getTotalNumFramesToReceive, {})
.tsquash("Inconsistent number of total frames (#frames x #triggers(or bursts) x #storage cells)");
if (tot == 0) {
throw RuntimeError("Invalid Total Number of frames (0)");
}
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;
totalProgress = tot;
FILE_LOG(logDEBUG1) << "Set total progress " << totalProgress << std::endl;
return totalProgress;
}

View File

@ -1219,25 +1219,25 @@ uint64_t slsDetector::getStartingFrameNumber() {
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() {
if (shm()->useReceiverFlag) {
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;
}
}
int64_t arg = shm()->nFrames * repeats * (shm()->nAddStorageCells + 1);
int64_t arg = getTotalNumFramesToReceive();
FILE_LOG(logDEBUG1) << "Sending total number of frames (#f x #t x #s) to Receiver: " << arg;
sendToReceiver(F_RECEIVER_SET_NUM_FRAMES, arg, nullptr);
}
}
int64_t slsDetector::getNumberOfFramesFromShm() {
return shm()->nFrames;
}
int64_t slsDetector::getNumberOfFrames() {
int64_t prevVal = shm()->nFrames;
int64_t retval = -1;
@ -1257,10 +1257,6 @@ void slsDetector::setNumberOfFrames(int64_t value) {
sendTotalNumFramestoReceiver();
}
int64_t slsDetector::getNumberOfTriggersFromShm() {
return shm()->nTriggers;
}
int64_t slsDetector::getNumberOfTriggers() {
int64_t prevVal = shm()->nTriggers;
int64_t retval = -1;
@ -1280,10 +1276,6 @@ void slsDetector::setNumberOfTriggers(int64_t value) {
sendTotalNumFramestoReceiver();
}
int64_t slsDetector::getNumberOfBurstsFromShm() {
return shm()->nBursts;
}
int64_t slsDetector::getNumberOfBursts() {
int64_t prevVal = shm()->nBursts;
int64_t retval = -1;
@ -1303,10 +1295,6 @@ void slsDetector::setNumberOfBursts(int64_t value) {
sendTotalNumFramestoReceiver();
}
int slsDetector::getNumberOfAdditionalStorageCellsFromShm() {
return shm()->nAddStorageCells;
}
int slsDetector::getNumberOfAdditionalStorageCells() {
int prevVal = shm()->nAddStorageCells;
int retval = -1;

View File

@ -530,32 +530,24 @@ class slsDetector : public virtual slsDetectorDefs {
*/
uint64_t getStartingFrameNumber();
void sendTotalNumFramestoReceiver();
int64_t getTotalNumFramesToReceive();
int64_t getNumberOfFramesFromShm();
void sendTotalNumFramestoReceiver();
int64_t getNumberOfFrames();
void setNumberOfFrames(int64_t value);
int64_t getNumberOfTriggersFromShm();
int64_t getNumberOfTriggers();
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 */
int64_t getNumberOfBursts();
/** [Gotthard2] only in burst mode and in auto timing mode */
void setNumberOfBursts(int64_t value);
/** [Jungfrau] Advanced */
int getNumberOfAdditionalStorageCellsFromShm();
/** [Jungfrau] Advanced */
int getNumberOfAdditionalStorageCells();