This commit is contained in:
maliakal_d 2020-08-31 14:17:09 +02:00
parent 7ca1609c58
commit e4274e3f95
3 changed files with 103 additions and 21 deletions

View File

@ -346,7 +346,7 @@ class Detector(CppDetectorApi):
return ut.reduce_time(self.getDelayAfterTriggerLeft()) return ut.reduce_time(self.getDelayAfterTriggerLeft())
def start(self): def start(self):
"""Start detector""" """Start detector acquisition. Status changes to RUNNING or WAITING and automatically returns to idle at the end of acquisition."""
self.startDetector() self.startDetector()
def rx_start(self): def rx_start(self):
@ -358,7 +358,7 @@ class Detector(CppDetectorApi):
self.stopReceiver() self.stopReceiver()
def stop(self): def stop(self):
"""Stop detector""" """Abort detector acquisition. Status changes to IDLE or STOPPED"""
self.stopDetector() self.stopDetector()
# Time # Time
@ -369,6 +369,7 @@ class Detector(CppDetectorApi):
@property @property
def startingfnum(self): def startingfnum(self):
"""[Eiger][Jungfrau] Starting frame number for next acquisition. Stopping acquiistion might result in different frame numbers for different modules. """
return element_if_equal(self.getStartingFrameNumber()) return element_if_equal(self.getStartingFrameNumber())
@startingfnum.setter @startingfnum.setter
@ -460,7 +461,7 @@ class Detector(CppDetectorApi):
Example Example
-------- --------
>>> d.rx_discardpolicy = slsdet.frameDiscardPolicy.NO_DISCARD >>> d.rx_discardpolicy = frameDiscardPolicy.NO_DISCARD
>>> d.rx_discardpolicy >>> d.rx_discardpolicy
frameDiscardPolicy.NO_DISCARD frameDiscardPolicy.NO_DISCARD
""" """
@ -528,7 +529,7 @@ class Detector(CppDetectorApi):
Example Example
-------- --------
d.fformat = slsdet.fileFormat.BINARY d.fformat = fileFormat.BINARY
""" """
return element_if_equal(self.getFileFormat()) return element_if_equal(self.getFileFormat())
@ -849,6 +850,13 @@ class Detector(CppDetectorApi):
@property @property
def status(self): def status(self):
"""Gets detector status. Enum: runStatus
Notes
-----
Options: IDLE, ERROR, WAITING, RUN_FINISHED, TRANSMITTING, RUNNING, STOPPED
>>> d.status
runStatus.IDLE
"""
return element_if_equal(self.getDetectorStatus()) return element_if_equal(self.getDetectorStatus())
@property @property
@ -1076,6 +1084,22 @@ class Detector(CppDetectorApi):
@property @property
def subexptime(self): def subexptime(self):
"""
[Eiger] Exposure time of EIGER subframes in 32 bit mode.
Note
----
Subperiod = subexptime + subdeadtime.
:getter: always returns in seconds. To get in datetime.delta, use getSubExptime
Examples
-----------
>>> d.subexptime = 1.230203
>>> d.subexptime = datetime.timedelta(seconds = 1.23, microseconds = 203)
>>> d.subexptime
1.230203
>>> d.getSubExptime()
[datetime.timedelta(seconds = 1, microseconds = 203)]
"""
res = self.getSubExptime() res = self.getSubExptime()
return reduce_time(res) return reduce_time(res)
@ -1085,8 +1109,24 @@ class Detector(CppDetectorApi):
@property @property
def subdeadtime(self): def subdeadtime(self):
"""
[Eiger] Dead time of EIGER subframes in 32 bit mode, accepts either a value in seconds or datetime.timedelta
Note
----
Subperiod = subexptime + subdeadtime.
:getter: always returns in seconds. To get in datetime.delta, use getSubDeadTime
Examples
-----------
>>> d.subdeadtime = 1.230203
>>> d.subdeadtime = datetime.timedelta(seconds = 1.23, microseconds = 203)
>>> d.subdeadtime
1.230203
>>> d.getSubDeadTime()
[datetime.timedelta(seconds = 1, microseconds = 203)]
"""
res = self.getSubDeadTime() res = self.getSubDeadTime()
reduce_time(res) return reduce_time(res)
@subdeadtime.setter @subdeadtime.setter
def subdeadtime(self, t): def subdeadtime(self, t):
@ -1196,6 +1236,14 @@ class Detector(CppDetectorApi):
@property @property
@element @element
def storagecells(self): def storagecells(self):
"""
[Jungfrau] Number of additional storage cells.
Note
----
For advanced users only. \n
Options: 0 - 15. Default is 0.
The #images = #frames x #triggers x (#storagecells + 1)
"""
return self.getNumberOfAdditionalStorageCells() return self.getNumberOfAdditionalStorageCells()
@storagecells.setter @storagecells.setter
@ -1205,6 +1253,14 @@ class Detector(CppDetectorApi):
@property @property
@element @element
def storagecell_start(self): def storagecell_start(self):
"""
[Jungfrau] Storage cell that stores the first acquisition of the series.
Note
----
For advanced users only.
Options 0-15. Default is 15. \n
"""
return self.getStorageCellStart() return self.getStorageCellStart()
@storagecell_start.setter @storagecell_start.setter
@ -1214,6 +1270,23 @@ class Detector(CppDetectorApi):
@property @property
@element @element
def storagecell_delay(self): def storagecell_delay(self):
"""
[Jungfrau] Additional time delay between 2 consecutive exposures in burst mode, accepts either a value in seconds or datetime.timedelta
Note
-----
For advanced users only \n
Value: 0-1638375 ns (resolution of 25ns) \n
:getter: always returns in seconds. To get in datetime.delta, use getStorageCellDelay
Examples
-----------
>>> d.storagecell_delay = 0.00056
>>> d.storagecell_delay = datetime.timedelta(microseconds = 45)
>>> d.storagecell_delay
4.5e-05
>>> d.getStorageCellDelay()
[datetime.timedelta(microseconds=45)]
"""
return ut.reduce_time(self.getStorageCellDelay()) return ut.reduce_time(self.getStorageCellDelay())
@storagecell_delay.setter @storagecell_delay.setter
@ -1370,7 +1443,7 @@ class Detector(CppDetectorApi):
Examples Examples
-------- --------
>>> d.romode = slsdet.readoutMode.ANALOG_ONLY >>> d.romode = readoutMode.ANALOG_ONLY
>>> d.romode >>> d.romode
readoutMode.ANALOG_ONLY readoutMode.ANALOG_ONLY
""" """

View File

@ -422,11 +422,12 @@ class Detector {
closes current data file (if file write enabled). */ closes current data file (if file write enabled). */
void stopReceiver(); void stopReceiver();
/** Non blocking: start detector acquisition /** Non blocking: start detector acquisition. Status changes to RUNNING or
* detector status changes from RUNNING to IDLE when finished */ * WAITING and automatically returns to idle at the end of acquisition. */
void startDetector(); void startDetector();
/** Non blocking: abort detector acquisition */ /** Non blocking: Abort detector acquisition. Status changes to IDLE or
* STOPPED */
void stopDetector(); void stopDetector();
/** IDLE, ERROR, WAITING, RUN_FINISHED, TRANSMITTING, RUNNING, STOPPED */ /** IDLE, ERROR, WAITING, RUN_FINISHED, TRANSMITTING, RUNNING, STOPPED */
@ -444,7 +445,8 @@ class Detector {
/** [Eiger][Jungfrau] */ /** [Eiger][Jungfrau] */
Result<uint64_t> getStartingFrameNumber(Positions pos = {}) const; Result<uint64_t> getStartingFrameNumber(Positions pos = {}) const;
/** [Eiger][Jungfrau] */ /** [Eiger][Jungfrau] Stopping acquiistion might result in different frame
* numbers for different modules.*/
void setStartingFrameNumber(uint64_t value, Positions pos = {}); void setStartingFrameNumber(uint64_t value, Positions pos = {});
/** [Eiger] Sends an internal software trigger to the detector */ /** [Eiger] Sends an internal software trigger to the detector */
@ -995,21 +997,23 @@ class Detector {
/** [Jungfrau] Advanced TODO naming */ /** [Jungfrau] Advanced TODO naming */
Result<int> getNumberOfAdditionalStorageCells(Positions pos = {}) const; Result<int> getNumberOfAdditionalStorageCells(Positions pos = {}) const;
/** [Jungfrau] Advanced */ /** [Jungfrau] Advanced \n
* Options: 0 - 15. Default: 0. \n
* The #images = #frames x #triggers x (#storagecells + 1) */
void setNumberOfAdditionalStorageCells(int value); void setNumberOfAdditionalStorageCells(int value);
/** [Jungfrau] Advanced */ /** [Jungfrau] Advanced */
Result<int> getStorageCellStart(Positions pos = {}) const; Result<int> getStorageCellStart(Positions pos = {}) const;
/** [Jungfrau] Advanced. Sets the storage cell storing the first acquisition /** [Jungfrau] Advanced. Sets the storage cell storing the first acquisition
* of the series. Options: 0-15 * of the series. Options: 0-15. Default: 15.
*/ */
void setStorageCellStart(int cell, Positions pos = {}); void setStorageCellStart(int cell, Positions pos = {});
/** [Jungfrau] Advanced*/ /** [Jungfrau] Advanced*/
Result<ns> getStorageCellDelay(Positions pos = {}) const; Result<ns> getStorageCellDelay(Positions pos = {}) const;
/** [Jungfrau] Advanced /** [Jungfrau] Advanced \n
* Options: (0-1638375 ns (resolution of 25ns) */ * Options: (0-1638375 ns (resolution of 25ns) */
void setStorageCellDelay(ns value, Positions pos = {}); void setStorageCellDelay(ns value, Positions pos = {});

View File

@ -1609,11 +1609,14 @@ class CmdProxy {
"\n\tStops receiver listener for detector data packets and closes " "\n\tStops receiver listener for detector data packets and closes "
"current data file (if file write enabled)."); "current data file (if file write enabled).");
EXECUTE_SET_COMMAND_NOID(start, startDetector, EXECUTE_SET_COMMAND_NOID(
"\n\tStarts detector state machine."); start, startDetector,
"\n\tStarts detector acquisition. Status changes to RUNNING or WAITING "
"and automatically returns to idle at the end of acquisition.");
EXECUTE_SET_COMMAND_NOID(stop, stopDetector, EXECUTE_SET_COMMAND_NOID(
"\n\tStops detector state machine."); stop, stopDetector,
"\n\tAbort detector acquisition. Status changes to IDLE or STOPPED.");
GET_COMMAND(rx_framescaught, getFramesCaught, GET_COMMAND(rx_framescaught, getFramesCaught,
"\n\tNumber of frames caught by receiver."); "\n\tNumber of frames caught by receiver.");
@ -1623,8 +1626,9 @@ class CmdProxy {
INTEGER_COMMAND(startingfnum, getStartingFrameNumber, INTEGER_COMMAND(startingfnum, getStartingFrameNumber,
setStartingFrameNumber, StringTo<uint64_t>, setStartingFrameNumber, StringTo<uint64_t>,
"[n_value]\n\t[Eiger[Jungfrau] Starting frame number for " "[n_value]\n\t[Eiger][Jungfrau] Starting frame number for "
"next acquisition."); "next acquisition. Stopping acquiistion might result in "
"different frame numbers for different modules.");
EXECUTE_SET_COMMAND( EXECUTE_SET_COMMAND(
trigger, sendSoftwareTrigger, trigger, sendSoftwareTrigger,
@ -1902,7 +1906,8 @@ class CmdProxy {
TIME_COMMAND(subdeadtime, getSubDeadTime, setSubDeadTime, TIME_COMMAND(subdeadtime, getSubDeadTime, setSubDeadTime,
"[duration] [(optional unit) ns|us|ms|s]\n\t[Eiger] Dead time " "[duration] [(optional unit) ns|us|ms|s]\n\t[Eiger] Dead time "
"of EIGER subframes. Subperiod = subexptime + subdeadtime."); "of EIGER subframes in 32 bit mode. Subperiod = subexptime + "
"subdeadtime.");
STRING_COMMAND( STRING_COMMAND(
settingspath, getSettingsPath, setSettingsPath, settingspath, getSettingsPath, setSettingsPath,
@ -1996,7 +2001,7 @@ class CmdProxy {
storagecell_delay, getStorageCellDelay, setStorageCellDelay, storagecell_delay, getStorageCellDelay, setStorageCellDelay,
"[duration (0-1638375 ns)] [(optional unit) ns|us|ms|s]\n\t[Jungfrau] " "[duration (0-1638375 ns)] [(optional unit) ns|us|ms|s]\n\t[Jungfrau] "
"Additional time delay between 2 consecutive exposures in burst mode " "Additional time delay between 2 consecutive exposures in burst mode "
"(total time gap = (ET + 1 + 86) * 25ns). For advanced users only."); "(resolution of 25ns). For advanced users only.");
/* Gotthard Specific */ /* Gotthard Specific */
TIME_GET_COMMAND(exptimel, getExptimeLeft, TIME_GET_COMMAND(exptimel, getExptimeLeft,