From bdfdd5dbdae89a9f1e8458bfb07e8ca991096f95 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 9 Aug 2019 11:55:27 +0200 Subject: [PATCH] WIP --- slsDetectorSoftware/include/Detector.h | 126 ++++++++++++++++-- .../include/multiSlsDetector.h | 6 +- slsDetectorSoftware/src/Detector.cpp | 112 +++++++++++----- 3 files changed, 195 insertions(+), 49 deletions(-) diff --git a/slsDetectorSoftware/include/Detector.h b/slsDetectorSoftware/include/Detector.h index 403fc8671..09f68284d 100644 --- a/slsDetectorSoftware/include/Detector.h +++ b/slsDetectorSoftware/include/Detector.h @@ -115,14 +115,6 @@ class Detector { Result getFileOverWrite(Positions pos = {}) const; void setFileOverWrite(bool value, Positions pos = {}); - // Time - Result getExptime(Positions pos = {}) const; - void setExptime(ns t, Positions pos = {}); - Result getSubExptime(Positions pos = {}) const; - void setSubExptime(ns t, Positions pos = {}); - Result getPeriod(Positions pos = {}) const; - void setPeriod(ns t, Positions pos = {}); - // dhanya /** * Get multidetector Id @@ -560,6 +552,33 @@ class Detector { */ void setNumberOfDigitalSamples(int64_t value, Positions pos = {}); + /** + * Get exposure time in ns + * @param pos detector position + * @returns exposure time in ns + */ + Result getExptime(Positions pos = {}) const; + + /** + * Set exposure time in ns + * @param value exposure time in ns + * @param pos detector position + */ + void setExptime(ns t, Positions pos = {}); + + /** + * Get period in ns + * @param pos detector position + * @returns period in ns + */ + Result getPeriod(Positions pos = {}) const; + + /** + * Set period in ns + * @param value period in ns + * @param pos detector position + */ + void setPeriod(ns t, Positions pos = {}); /** * Get delay after trigger in ns(Gotthard, Jungfrau) * @param pos detector position @@ -574,19 +593,32 @@ class Detector { */ void setDelayAfterTrigger(ns value, Positions pos = {}); + /** + * Get sub frame exposure time in ns (Eiger in 32 bit mode) + * @param pos detector position + * @returns sub frame exposure time in ns + */ + Result getSubExptime(Positions pos = {}) const; + + /** + * Set sub frame exposure time after trigger (Eiger in 32 bit mode) + * @param value sub frame exposure time in ns + * @param pos detector position + */ + void setSubExptime(ns t, Positions pos = {}); /** * Get sub frame dead time in ns (Eiger in 32 bit mode) * @param pos detector position - * @returns delay after trigger in ns + * @returns sub frame dead time in ns */ - Result getSubFrameDeadTime(Positions pos = {}) const; + Result getSubDeadTime(Positions pos = {}) const; /** * Set sub frame dead time after trigger (Eiger in 32 bit mode) - * @param value delay after trigger in ns + * @param value sub frame dead time in ns * @param pos detector position */ - void setSubFrameDeadTime(ns value, Positions pos = {}); + void setSubDeadTime(ns value, Positions pos = {}); /** * Get storage cell delay (Jungfrau) @@ -604,6 +636,76 @@ class Detector { */ void setStorageCellDelay(ns value, Positions pos = {}); + /** + * Get number of Frames left (Gotthard, Jungfrau, CTB) + * @param pos detector position + * @returns number of Frames left + */ + Result getNumberOfFramesLeft(Positions pos = {}) const; + + /** + * Get number of Cycles left (Gotthard, Jungfrau, CTB) + * @param pos detector position + * @returns number of Cycles left + */ + Result getNumberOfCyclesLeft(Positions pos = {}) const; + /** + * Get exposure time left in ns (Gotthard) + * @param pos detector position + * @returns exposure time left in ns + */ + Result getExptimeLeft(Positions pos = {}) const; + + /** + * Get period left in ns (Gotthard, Jungfrau, CTB) + * @param pos detector position + * @returns period left in ns + */ + Result getPeriodLeft(Positions pos = {}) const; + + /** + * Get delay after trigger left in ns(Gotthard, Jungfrau, CTB) + * @param pos detector position + * @returns delay after trigger left in ns + */ + Result getDelayAfterTriggerLeft(Positions pos = {}) const; + + /** + * Get number of frames from start up of detector (Jungfrau, CTB) + * @param pos detector position + * @returns number of frames from start up of detector + */ + Result getNumberOfFramesFromStart(Positions pos = {}) const; + + /** + * Get time from detector start in ns (Jungfrau, CTB) + * @param pos detector position + * @returns time from detector start in ns + */ + Result getActualTime(Positions pos = {}) const; + + /** + * Get timestamp at a frame start in ns(Jungfrau, CTB) + * @param pos detector position + * @returns timestamp at a frame start in ns + */ + Result getMeasurementTime(Positions pos = {}) const; + + /** + * Get measured period between previous two frames in ns (Eiger) + * @param pos detector position + * @returns measured period between previous two frames in ns + */ + Result getMeasuredPeriod(Positions pos = {}) const; + + /** + * Get measured sub frame period between previous two frames in ns (Eiger in + * 32 bit mode) + * @param pos detector position + * @returns measured sub frame period between previous two frames in ns + */ + Result getMeasuredSubFramePeriod(Positions pos = {}) const; + // Erik Result getFramesCaughtByReceiver(Positions pos = {}) const; diff --git a/slsDetectorSoftware/include/multiSlsDetector.h b/slsDetectorSoftware/include/multiSlsDetector.h index 1cf4076a0..34315ceaf 100755 --- a/slsDetectorSoftware/include/multiSlsDetector.h +++ b/slsDetectorSoftware/include/multiSlsDetector.h @@ -818,7 +818,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns sub frame dead time in ns, or s if specified */ - double getMeasuredPeriod(bool inseconds = false, int detPos = -1); + double getMeasuredPeriod(bool inseconds = false, int detPos = -1);// /** * Get sub period between previous two sub frames in 32 bit mode (EIGER) @@ -827,7 +827,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @param detPos -1 for all detectors in list or specific detector position * @returns sub frame dead time in ns, or s if specified */ - double getMeasuredSubFramePeriod(bool inseconds = false, int detPos = -1); + double getMeasuredSubFramePeriod(bool inseconds = false, int detPos = -1);// /** * Set/get timer value left in acquisition (not all implemented for all @@ -838,7 +838,7 @@ class multiSlsDetector : public virtual slsDetectorDefs { * @returns timer set value in ns or number of...(e.g. frames, * probes) */ - int64_t getTimeLeft(timerIndex index, int detPos = -1); + int64_t getTimeLeft(timerIndex index, int detPos = -1);// /** * Set speed diff --git a/slsDetectorSoftware/src/Detector.cpp b/slsDetectorSoftware/src/Detector.cpp index 4741a3bdd..b7812920f 100644 --- a/slsDetectorSoftware/src/Detector.cpp +++ b/slsDetectorSoftware/src/Detector.cpp @@ -51,11 +51,6 @@ Result Detector::getRegister(uint32_t addr, Positions pos) { return pimpl->Parallel(&slsDetector::readRegister, pos, addr); } -Result Detector::getExptime(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, - -1); -} - Result Detector::getStartingFrameNumber(Positions pos) const { return pimpl->Parallel(&slsDetector::getStartingFrameNumber, pos); } @@ -63,29 +58,6 @@ void Detector::setStartingFrameNumber(uint64_t value, Positions pos) { pimpl->Parallel(&slsDetector::setStartingFrameNumber, pos, value); } -void Detector::setExptime(ns t, Positions pos) { - pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, - t.count()); -} - -Result Detector::getSubExptime(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, - defs::SUBFRAME_ACQUISITION_TIME, -1); -} - -void Detector::setSubExptime(ns t, Positions pos) { - pimpl->Parallel(&slsDetector::setTimer, pos, - defs::SUBFRAME_ACQUISITION_TIME, t.count()); -} - -Result Detector::getPeriod(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, -1); -} - -void Detector::setPeriod(ns t, Positions pos) { - pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, t.count()); -} - // File void Detector::setFileName(const std::string &fname, Positions pos) { pimpl->Parallel(&slsDetector::setFileName, pos, fname); @@ -366,15 +338,18 @@ void Detector::setNumberOfCycles(int64_t value) { } Result Detector::getNumberOfStorageCells() const { - return pimpl->Parallel(&slsDetector::setTimer, {}, defs::STORAGE_CELL_NUMBER, -1); + return pimpl->Parallel(&slsDetector::setTimer, {}, + defs::STORAGE_CELL_NUMBER, -1); } void Detector::setNumberOfStorageCells(int64_t value) { - pimpl->Parallel(&slsDetector::setTimer, {}, defs::STORAGE_CELL_NUMBER, value); + pimpl->Parallel(&slsDetector::setTimer, {}, defs::STORAGE_CELL_NUMBER, + value); } Result Detector::getNumberOfAnalogSamples(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ANALOG_SAMPLES, -1); + return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ANALOG_SAMPLES, + -1); } void Detector::setNumberOfAnalogSamples(int64_t value, Positions pos) { @@ -382,13 +357,32 @@ void Detector::setNumberOfAnalogSamples(int64_t value, Positions pos) { } Result Detector::getNumberOfDigitalSamples(Positions pos) const { - return pimpl->Parallel(&slsDetector::setTimer, pos, defs::DIGITAL_SAMPLES, -1); + return pimpl->Parallel(&slsDetector::setTimer, pos, defs::DIGITAL_SAMPLES, + -1); } void Detector::setNumberOfDigitalSamples(int64_t value, Positions pos) { pimpl->Parallel(&slsDetector::setTimer, pos, defs::DIGITAL_SAMPLES, value); } +Result Detector::getExptime(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, + -1); +} + +void Detector::setExptime(ns t, Positions pos) { + pimpl->Parallel(&slsDetector::setTimer, pos, defs::ACQUISITION_TIME, + t.count()); +} + +Result Detector::getPeriod(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, -1); +} + +void Detector::setPeriod(ns t, Positions pos) { + pimpl->Parallel(&slsDetector::setTimer, pos, defs::FRAME_PERIOD, t.count()); +} + Result Detector::getDelayAfterTrigger(Positions pos) const { return pimpl->Parallel(&slsDetector::setTimer, pos, defs::DELAY_AFTER_TRIGGER, -1); @@ -399,12 +393,22 @@ void Detector::setDelayAfterTrigger(ns value, Positions pos) { value.count()); } -Result Detector::getSubFrameDeadTime(Positions pos) const { +Result Detector::getSubExptime(Positions pos) const { + return pimpl->Parallel(&slsDetector::setTimer, pos, + defs::SUBFRAME_ACQUISITION_TIME, -1); +} + +void Detector::setSubExptime(ns t, Positions pos) { + pimpl->Parallel(&slsDetector::setTimer, pos, + defs::SUBFRAME_ACQUISITION_TIME, t.count()); +} + +Result Detector::getSubDeadTime(Positions pos) const { return pimpl->Parallel(&slsDetector::setTimer, pos, defs::SUBFRAME_DEADTIME, -1); } -void Detector::setSubFrameDeadTime(ns value, Positions pos) { +void Detector::setSubDeadTime(ns value, Positions pos) { pimpl->Parallel(&slsDetector::setTimer, pos, defs::SUBFRAME_DEADTIME, value.count()); } @@ -419,6 +423,46 @@ void Detector::setStorageCellDelay(ns value, Positions pos) { value.count()); } +Result Detector::getNumberOfFramesLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAME_NUMBER); +} + +Result Detector::getNumberOfCyclesLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::CYCLES_NUMBER); +} + +Result Detector::getExptimeLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::ACQUISITION_TIME); +} + +Result Detector::getPeriodLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAME_PERIOD); +} + +Result Detector::getDelayAfterTriggerLeft(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::DELAY_AFTER_TRIGGER); +} + +Result Detector::getNumberOfFramesFromStart(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::FRAMES_FROM_START); +} + +Result Detector::getActualTime(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::ACTUAL_TIME); +} + +Result Detector::getMeasurementTime(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::MEASUREMENT_TIME); +} + +Result Detector::getMeasuredPeriod(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::MEASURED_PERIOD); +}; + +Result Detector::getMeasuredSubFramePeriod(Positions pos) const { + return pimpl->Parallel(&slsDetector::getTimeLeft, pos, defs::MEASURED_SUBPERIOD); +}; + // Erik Result Detector::getFramesCaughtByReceiver(Positions pos) const { return pimpl->Parallel(&slsDetector::getFramesCaughtByReceiver, pos);