diff --git a/python/slsdet/detector.py b/python/slsdet/detector.py index 3998b23a9..605226432 100755 --- a/python/slsdet/detector.py +++ b/python/slsdet/detector.py @@ -8,7 +8,7 @@ dacIndex = slsDetectorDefs.dacIndex detectorType = slsDetectorDefs.detectorType 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 import datetime as dt @@ -184,6 +184,26 @@ class Detector(CppDetectorApi): else: 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 def subexptime(self): res = self.getSubExptime() diff --git a/python/slsdet/utils.py b/python/slsdet/utils.py index 65d54145e..e21a956f9 100755 --- a/python/slsdet/utils.py +++ b/python/slsdet/utils.py @@ -11,7 +11,7 @@ import datetime as dt Geometry = namedtuple('Geometry', ['x', 'y']) -def iterable(item): +def is_iterable(item): try: iter(item) except TypeError: @@ -48,7 +48,7 @@ def all_equal(mylist): def element_if_equal(mylist): """If all elements are equal return only one element""" - if not iterable(mylist): + if not is_iterable(mylist): return mylist if all_equal(mylist): @@ -63,6 +63,8 @@ def reduce_time(mylist): res = element_if_equal(element_if_equal(mylist)) if isinstance(res, dt.timedelta): return res.total_seconds() + elif isinstance(res[0], list): + return [[item.total_seconds() for item in subl] for subl in res] else: return [r.total_seconds() for r in res]