gatedelay

This commit is contained in:
Erik Frojdh 2020-05-27 14:02:33 +02:00
parent 0fca9fba79
commit 20bfe92573
2 changed files with 25 additions and 3 deletions

View File

@ -8,7 +8,7 @@ dacIndex = slsDetectorDefs.dacIndex
detectorType = slsDetectorDefs.detectorType detectorType = slsDetectorDefs.detectorType
from .utils import element_if_equal, all_equal, get_set_bits, list_to_bitmask from .utils import element_if_equal, all_equal, get_set_bits, list_to_bitmask
from .utils import Geometry, to_geo, element, reduce_time from .utils import Geometry, to_geo, element, reduce_time, is_iterable
from .registers import Register, Adc_register from .registers import Register, Adc_register
import datetime as dt import datetime as dt
@ -184,6 +184,26 @@ class Detector(CppDetectorApi):
else: else:
self.setExptime(dt.timedelta(seconds=t)) self.setExptime(dt.timedelta(seconds=t))
@property
def gatedelay(self):
return reduce_time(self.getGateDelayForAllGates())
@gatedelay.setter
def gatedelay(self, value):
if is_iterable(value):
if len(value) == 3:
for i,v in enumerate(value):
if isinstance(v, dt.timedelta):
self.setGateDelay(i, v)
else:
self.setGateDelay(i, dt.timedelta(seconds = v))
else:
if isinstance(value, dt.timedelta):
self.setGateDelay(-1, value)
else:
self.setGateDelay(-1, dt.timedelta(seconds=value))
@property @property
def subexptime(self): def subexptime(self):
res = self.getSubExptime() res = self.getSubExptime()

View File

@ -11,7 +11,7 @@ import datetime as dt
Geometry = namedtuple('Geometry', ['x', 'y']) Geometry = namedtuple('Geometry', ['x', 'y'])
def iterable(item): def is_iterable(item):
try: try:
iter(item) iter(item)
except TypeError: except TypeError:
@ -48,7 +48,7 @@ def all_equal(mylist):
def element_if_equal(mylist): def element_if_equal(mylist):
"""If all elements are equal return only one element""" """If all elements are equal return only one element"""
if not iterable(mylist): if not is_iterable(mylist):
return mylist return mylist
if all_equal(mylist): if all_equal(mylist):
@ -63,6 +63,8 @@ def reduce_time(mylist):
res = element_if_equal(element_if_equal(mylist)) res = element_if_equal(element_if_equal(mylist))
if isinstance(res, dt.timedelta): if isinstance(res, dt.timedelta):
return res.total_seconds() return res.total_seconds()
elif isinstance(res[0], list):
return [[item.total_seconds() for item in subl] for subl in res]
else: else:
return [r.total_seconds() for r in res] return [r.total_seconds() for r in res]