mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 23:30:03 +02:00
exptime
This commit is contained in:
parent
f4ba46c19b
commit
b543708d9d
@ -5,9 +5,10 @@ from _slsdet import IpAddr, MacAddr
|
|||||||
runStatus = slsDetectorDefs.runStatus
|
runStatus = slsDetectorDefs.runStatus
|
||||||
speedLevel = slsDetectorDefs.speedLevel
|
speedLevel = slsDetectorDefs.speedLevel
|
||||||
dacIndex = slsDetectorDefs.dacIndex
|
dacIndex = slsDetectorDefs.dacIndex
|
||||||
|
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
|
from .utils import Geometry, to_geo, element, reduce_time
|
||||||
from .registers import Register, Adc_register
|
from .registers import Register, Adc_register
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
@ -170,6 +171,9 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def exptime(self):
|
def exptime(self):
|
||||||
|
if self.type == detectorType.MYTHEN3:
|
||||||
|
res = self.getExptimeForAllGates()
|
||||||
|
return reduce_time(res)
|
||||||
res = self.getExptime()
|
res = self.getExptime()
|
||||||
return element_if_equal([it.total_seconds() for it in res])
|
return element_if_equal([it.total_seconds() for it in res])
|
||||||
|
|
||||||
|
@ -7,10 +7,17 @@ but not directly used in controlling the detector
|
|||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import _slsdet #C++ lib
|
import _slsdet #C++ lib
|
||||||
import functools
|
import functools
|
||||||
|
import datetime as dt
|
||||||
|
|
||||||
Geometry = namedtuple('Geometry', ['x', 'y'])
|
Geometry = namedtuple('Geometry', ['x', 'y'])
|
||||||
|
|
||||||
|
def iterable(item):
|
||||||
|
try:
|
||||||
|
iter(item)
|
||||||
|
except TypeError:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def get_set_bits(mask):
|
def get_set_bits(mask):
|
||||||
"""
|
"""
|
||||||
Return a list of the set bits in a python integer
|
Return a list of the set bits in a python integer
|
||||||
@ -41,6 +48,9 @@ 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):
|
||||||
|
return mylist
|
||||||
|
|
||||||
if all_equal(mylist):
|
if all_equal(mylist):
|
||||||
if len(mylist) == 0:
|
if len(mylist) == 0:
|
||||||
return None
|
return None
|
||||||
@ -49,6 +59,13 @@ def element_if_equal(mylist):
|
|||||||
else:
|
else:
|
||||||
return mylist
|
return mylist
|
||||||
|
|
||||||
|
def reduce_time(mylist):
|
||||||
|
res = element_if_equal(element_if_equal(mylist))
|
||||||
|
if isinstance(res, dt.timedelta):
|
||||||
|
return res.total_seconds()
|
||||||
|
else:
|
||||||
|
return [r.total_seconds() for r in res]
|
||||||
|
|
||||||
def element(func):
|
def element(func):
|
||||||
"""
|
"""
|
||||||
Wrapper to return either list or element
|
Wrapper to return either list or element
|
||||||
|
@ -5,7 +5,28 @@ Testing functions from utils.py
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from sls_detector.utils import *
|
from slsdet.utils import *
|
||||||
|
import datetime as dt
|
||||||
|
|
||||||
|
def test_iterable():
|
||||||
|
assert iterable(5) == False
|
||||||
|
assert iterable('abc') == True
|
||||||
|
assert iterable([]) == True
|
||||||
|
assert iterable(5.9) == False
|
||||||
|
|
||||||
|
def test_reduce_time_to_single_value_from_list():
|
||||||
|
t = 3*[dt.timedelta(seconds = 1)]
|
||||||
|
assert reduce_time(t) == 1
|
||||||
|
|
||||||
|
def test_reduce_time_to_single_value_from_list_of_lists():
|
||||||
|
t = 3*[dt.timedelta(seconds = 3.3)]
|
||||||
|
tt = 5*t
|
||||||
|
assert reduce_time(tt) == 3.3
|
||||||
|
|
||||||
|
def test_reduce_time_when_sublist_is_different():
|
||||||
|
t = [dt.timedelta(seconds = 1), dt.timedelta(seconds = 2), dt.timedelta(seconds = 1)]
|
||||||
|
tt = 4*t
|
||||||
|
assert reduce_time(tt) == [1,2,1]
|
||||||
|
|
||||||
|
|
||||||
def test_convert_zero():
|
def test_convert_zero():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user