mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-01-21 03:10:46 +01:00
python additions (#686)
* python: fixed versions when no receiver, added clearbusy, serialnumber and readoutspeedlist. commandline: modified versions to look like python versions * python: added clkphase, fixed clkdiv, maxphase * python added adcvpp * gaincaps for python --------- Co-authored-by: Erik Frojdh <erik.frojdh@gmail.com>
This commit is contained in:
@@ -16,6 +16,7 @@ defs = slsDetectorDefs
|
||||
from .utils import element_if_equal, all_equal, get_set_bits, list_to_bitmask
|
||||
from .utils import Geometry, to_geo, element, reduce_time, is_iterable, hostname_list
|
||||
from _slsdet import xy
|
||||
from .gaincaps import Mythen3GainCapsWrapper
|
||||
from . import utils as ut
|
||||
from .proxy import JsonProxy, SlowAdcProxy, ClkDivProxy, MaxPhaseProxy, ClkFreqProxy, PatLoopProxy, PatNLoopProxy, PatWaitProxy, PatWaitTimeProxy
|
||||
from .registers import Register, Adc_register
|
||||
@@ -231,7 +232,7 @@ class Detector(CppDetectorApi):
|
||||
"""
|
||||
[Jungfrau][Gotthard2][Myhten3][Gotthard][Ctb][Moench] Hardware version of detector.
|
||||
"""
|
||||
return ut.lhex(self.getHardwareVersion())
|
||||
return self.getHardwareVersion()
|
||||
|
||||
@property
|
||||
@element
|
||||
@@ -263,6 +264,12 @@ class Detector(CppDetectorApi):
|
||||
"""Receiver version """
|
||||
return self.getReceiverVersion()
|
||||
|
||||
@property
|
||||
@element
|
||||
def serialnumber(self):
|
||||
"""Jungfrau][Gotthard][Mythen3][Gotthard2][CTB][Moench] Serial number of detector """
|
||||
return ut.lhex(self.getSerialNumber())
|
||||
|
||||
@property
|
||||
@element
|
||||
def rx_threads(self):
|
||||
@@ -462,6 +469,47 @@ class Detector(CppDetectorApi):
|
||||
def blockingtrigger(self):
|
||||
self.sendSoftwareTrigger(True)
|
||||
|
||||
@property
|
||||
@element
|
||||
def gaincaps(self):
|
||||
"""
|
||||
[Mythen3] Gain caps. Enum: M3_GainCaps \n
|
||||
|
||||
Note
|
||||
----
|
||||
Options: M3_GainCaps, M3_C15sh, M3_C30sh, M3_C50sh, M3_C225ACsh, M3_C15pre
|
||||
|
||||
Example
|
||||
-------
|
||||
>>> d.gaincaps
|
||||
C15pre, C30sh
|
||||
>>> d.gaincaps = M3_GainCaps.M3_C30sh
|
||||
>>> d.gaincaps
|
||||
C30sh
|
||||
>>> d.gaincaps = M3_GainCaps.M3_C30sh | M3_GainCaps.M3_C15sh
|
||||
>>> d.gaincaps
|
||||
C15sh, C30sh
|
||||
"""
|
||||
res = [Mythen3GainCapsWrapper(it) for it in self.getGainCaps()]
|
||||
return res
|
||||
|
||||
@gaincaps.setter
|
||||
def gaincaps(self, caps):
|
||||
#convert to int if called with Wrapper
|
||||
if isinstance(caps, Mythen3GainCapsWrapper):
|
||||
self.setGainCaps(caps.value)
|
||||
elif isinstance(caps, dict):
|
||||
corr = {}
|
||||
for key, value in caps.items():
|
||||
if isinstance(value, Mythen3GainCapsWrapper):
|
||||
corr[key] = value.value
|
||||
else:
|
||||
corr[key] = value
|
||||
ut.set_using_dict(self.setGainCaps, corr)
|
||||
else:
|
||||
self.setGainCaps(caps)
|
||||
|
||||
|
||||
@property
|
||||
def exptime(self):
|
||||
"""
|
||||
@@ -656,6 +704,10 @@ class Detector(CppDetectorApi):
|
||||
"""Start detector acquisition. Status changes to RUNNING or WAITING and automatically returns to idle at the end of acquisition."""
|
||||
self.startDetector()
|
||||
|
||||
def clearbusy(self):
|
||||
"""If acquisition aborted during acquire command, use this to clear acquiring flag in shared memory before starting next acquisition"""
|
||||
self.clearAcquiringFlag()
|
||||
|
||||
def rx_start(self):
|
||||
"""Starts receiver listener for detector data packets and create a data file (if file write enabled)."""
|
||||
self.startReceiver()
|
||||
@@ -1732,6 +1784,11 @@ class Detector(CppDetectorApi):
|
||||
"""Gets the list of timing modes (timingMode) for this detector."""
|
||||
return self.getTimingModeList()
|
||||
|
||||
@property
|
||||
def readoutspeedlist(self):
|
||||
"""List of readout speed levels implemented for this detector."""
|
||||
return self.getReadoutSpeedList()
|
||||
|
||||
@property
|
||||
def templist(self):
|
||||
"""List of temperature enums (dacIndex) implemented for this detector."""
|
||||
@@ -1833,23 +1890,17 @@ class Detector(CppDetectorApi):
|
||||
|
||||
@property
|
||||
def versions(self):
|
||||
if self.type == detectorType.EIGER:
|
||||
return {'type': self.type,
|
||||
version_list = {'type': self.type,
|
||||
'package': self.packageversion,
|
||||
'client': self.clientversion,
|
||||
'firmware': self.firmwareversion,
|
||||
'detectorserver': self.detectorserverversion,
|
||||
'kernel': self.kernelversion,
|
||||
'receiver': self.rx_version}
|
||||
|
||||
return {'type': self.type,
|
||||
'package': self.packageversion,
|
||||
'client': self.clientversion,
|
||||
'firmware': self.firmwareversion,
|
||||
'detectorserver': self.detectorserverversion,
|
||||
'hardware':self.hardwareversion,
|
||||
'kernel': self.kernelversion,
|
||||
'receiver': self.rx_version}
|
||||
'kernel': self.kernelversion}
|
||||
if self.type != detectorType.EIGER:
|
||||
version_list ['hardware'] = self.hardwareversion
|
||||
if self.use_receiver:
|
||||
version_list ['receiver'] = self.rx_version
|
||||
return version_list
|
||||
|
||||
@property
|
||||
def virtual(self):
|
||||
@@ -3138,6 +3189,17 @@ class Detector(CppDetectorApi):
|
||||
def dbitclk(self, value):
|
||||
ut.set_using_dict(self.setDBITClock, value)
|
||||
|
||||
@property
|
||||
@element
|
||||
def adcvpp(self):
|
||||
"""[Ctb][Moench] Vpp of ADC. [0 -> 1V | 1 -> 1.14V | 2 -> 1.33V | 3 -> 1.6V | 4 -> 2V] \n
|
||||
Advanced User function!"""
|
||||
return self.getADCVpp(False)
|
||||
|
||||
@adcvpp.setter
|
||||
def adcvpp(self, value):
|
||||
ut.set_using_dict(self.setADCVpp, value, False)
|
||||
|
||||
@property
|
||||
@element
|
||||
def dbitpipeline(self):
|
||||
@@ -3748,6 +3810,23 @@ class Detector(CppDetectorApi):
|
||||
"""
|
||||
return self.getMeasuredCurrent(dacIndex.I_POWER_IO)
|
||||
|
||||
@property
|
||||
def clkphase(self):
|
||||
"""
|
||||
[Gotthard2][Mythen3] Phase shift of all clocks.
|
||||
|
||||
Example
|
||||
-------
|
||||
>>> d.clkphase[0] = 20
|
||||
>>> d.clkphase
|
||||
0: 20
|
||||
1: 10
|
||||
2: 20
|
||||
3: 10
|
||||
4: 10
|
||||
5: 5
|
||||
"""
|
||||
return ClkPhaseProxy(self)
|
||||
|
||||
@property
|
||||
def clkdiv(self):
|
||||
|
||||
Reference in New Issue
Block a user