mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
veto
This commit is contained in:
parent
098d3e6d98
commit
6c753f3b50
@ -9,6 +9,7 @@ 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, is_iterable
|
from .utils import Geometry, to_geo, element, reduce_time, is_iterable
|
||||||
|
from . import utils as ut
|
||||||
from .registers import Register, Adc_register
|
from .registers import Register, Adc_register
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
@ -173,16 +174,14 @@ class Detector(CppDetectorApi):
|
|||||||
def exptime(self):
|
def exptime(self):
|
||||||
if self.type == detectorType.MYTHEN3:
|
if self.type == detectorType.MYTHEN3:
|
||||||
res = self.getExptimeForAllGates()
|
res = self.getExptimeForAllGates()
|
||||||
return reduce_time(res)
|
else:
|
||||||
res = self.getExptime()
|
res = self.getExptime()
|
||||||
return element_if_equal([it.total_seconds() for it in res])
|
return reduce_time(res)
|
||||||
|
|
||||||
|
|
||||||
@exptime.setter
|
@exptime.setter
|
||||||
def exptime(self, t):
|
def exptime(self, t):
|
||||||
if isinstance(t, dt.timedelta):
|
self.setExptime(ut.make_timedelta(t))
|
||||||
self.setExptime(t)
|
|
||||||
else:
|
|
||||||
self.setExptime(dt.timedelta(seconds=t))
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def gatedelay(self):
|
def gatedelay(self):
|
||||||
@ -193,57 +192,36 @@ class Detector(CppDetectorApi):
|
|||||||
if is_iterable(value):
|
if is_iterable(value):
|
||||||
if len(value) == 3:
|
if len(value) == 3:
|
||||||
for i,v in enumerate(value):
|
for i,v in enumerate(value):
|
||||||
if isinstance(v, dt.timedelta):
|
self.setGateDelay(i, ut.make_timedelta(v))
|
||||||
self.setGateDelay(i, v)
|
|
||||||
else:
|
|
||||||
self.setGateDelay(i, dt.timedelta(seconds = v))
|
|
||||||
else:
|
else:
|
||||||
if isinstance(value, dt.timedelta):
|
self.setGateDelay(-1, ut.make_timedelta(value))
|
||||||
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()
|
||||||
return element_if_equal([it.total_seconds() for it in res])
|
return reduce_time(res)
|
||||||
|
|
||||||
@subexptime.setter
|
@subexptime.setter
|
||||||
def subexptime(self, t):
|
def subexptime(self, t):
|
||||||
if isinstance(t, dt.timedelta):
|
self.setSubExptime(ut.make_timedelta(t))
|
||||||
self.setSubExptime(t)
|
|
||||||
else:
|
|
||||||
self.setSubExptime(dt.timedelta(seconds=t))
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def subdeadtime(self):
|
def subdeadtime(self):
|
||||||
res = self.getSubDeadTime()
|
res = self.getSubDeadTime()
|
||||||
return element_if_equal([it.total_seconds() for it in res])
|
reduce_time(res)
|
||||||
|
|
||||||
@subdeadtime.setter
|
@subdeadtime.setter
|
||||||
def subdeadtime(self, t):
|
def subdeadtime(self, t):
|
||||||
if isinstance(t, dt.timedelta):
|
self.setSubDeadTime(ut.make_timedelta(t))
|
||||||
self.setSubDeadTime(t)
|
|
||||||
else:
|
|
||||||
self.setSubDeadTime(dt.timedelta(seconds=t))
|
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def period(self):
|
def period(self):
|
||||||
res = self.getPeriod()
|
res = self.getPeriod()
|
||||||
return element_if_equal([it.total_seconds() for it in res])
|
reduce_time(res)
|
||||||
|
|
||||||
@period.setter
|
@period.setter
|
||||||
def period(self, t):
|
def period(self, t):
|
||||||
if isinstance(t, dt.timedelta):
|
self.setPeriod(ut.make_timedelta(t))
|
||||||
self.setPeriod(t)
|
|
||||||
else:
|
|
||||||
self.setPeriod(dt.timedelta(seconds=t))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Time
|
# Time
|
||||||
@property
|
@property
|
||||||
@ -770,6 +748,19 @@ class Detector(CppDetectorApi):
|
|||||||
def storeinram(self, value):
|
def storeinram(self, value):
|
||||||
self.setStoreInRamMode(value)
|
self.setStoreInRamMode(value)
|
||||||
|
|
||||||
|
"""
|
||||||
|
Gotthard2
|
||||||
|
"""
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def veto(self):
|
||||||
|
return self.getVeto()
|
||||||
|
|
||||||
|
@veto.setter
|
||||||
|
def veto(self, value):
|
||||||
|
self.setVeto(value)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Mythen3 specific
|
Mythen3 specific
|
||||||
|
@ -88,3 +88,8 @@ def eiger_register_to_time(register):
|
|||||||
exponent = register & 0b111
|
exponent = register & 0b111
|
||||||
return clocks*10**exponent / 100e6
|
return clocks*10**exponent / 100e6
|
||||||
|
|
||||||
|
def make_timedelta(t):
|
||||||
|
if isinstance(t, dt.timedelta):
|
||||||
|
return t
|
||||||
|
else:
|
||||||
|
return dt.timedelta(seconds=t)
|
||||||
|
@ -978,6 +978,14 @@ void init_det(py::module &m) {
|
|||||||
(void (Detector::*)(defs::timingSourceType, sls::Positions)) &
|
(void (Detector::*)(defs::timingSourceType, sls::Positions)) &
|
||||||
Detector::setTimingSource,
|
Detector::setTimingSource,
|
||||||
py::arg(), py::arg() = Positions{})
|
py::arg(), py::arg() = Positions{})
|
||||||
|
.def("getVeto",
|
||||||
|
(Result<bool>(Detector::*)(sls::Positions) const) &
|
||||||
|
Detector::getVeto,
|
||||||
|
py::arg() = Positions{})
|
||||||
|
.def("setVeto",
|
||||||
|
(void (Detector::*)(const bool, sls::Positions)) &
|
||||||
|
Detector::setVeto,
|
||||||
|
py::arg(), py::arg() = Positions{})
|
||||||
.def("getCounterMask",
|
.def("getCounterMask",
|
||||||
(Result<uint32_t>(Detector::*)(sls::Positions) const) &
|
(Result<uint32_t>(Detector::*)(sls::Positions) const) &
|
||||||
Detector::getCounterMask,
|
Detector::getCounterMask,
|
||||||
|
@ -9,10 +9,10 @@ from slsdet.utils import *
|
|||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
def test_iterable():
|
def test_iterable():
|
||||||
assert iterable(5) == False
|
assert is_iterable(5) == False
|
||||||
assert iterable('abc') == True
|
assert is_iterable('abc') == True
|
||||||
assert iterable([]) == True
|
assert is_iterable([]) == True
|
||||||
assert iterable(5.9) == False
|
assert is_iterable(5.9) == False
|
||||||
|
|
||||||
def test_reduce_time_to_single_value_from_list():
|
def test_reduce_time_to_single_value_from_list():
|
||||||
t = 3*[dt.timedelta(seconds = 1)]
|
t = 3*[dt.timedelta(seconds = 1)]
|
||||||
@ -25,7 +25,7 @@ def test_reduce_time_to_single_value_from_list_of_lists():
|
|||||||
|
|
||||||
def test_reduce_time_when_sublist_is_different():
|
def test_reduce_time_when_sublist_is_different():
|
||||||
t = [dt.timedelta(seconds = 1), dt.timedelta(seconds = 2), dt.timedelta(seconds = 1)]
|
t = [dt.timedelta(seconds = 1), dt.timedelta(seconds = 2), dt.timedelta(seconds = 1)]
|
||||||
tt = 4*t
|
tt = [t for i in range(4)]
|
||||||
assert reduce_time(tt) == [1,2,1]
|
assert reduce_time(tt) == [1,2,1]
|
||||||
|
|
||||||
|
|
||||||
@ -80,4 +80,17 @@ def test_list_to_mask():
|
|||||||
assert(list_to_bitmask([0]) == 1)
|
assert(list_to_bitmask([0]) == 1)
|
||||||
assert(list_to_bitmask([1]) == 2)
|
assert(list_to_bitmask([1]) == 2)
|
||||||
assert(list_to_bitmask([3]) == 8)
|
assert(list_to_bitmask([3]) == 8)
|
||||||
assert(list_to_bitmask([1,1,1]) == 2)
|
assert(list_to_bitmask([1,1,1]) == 2)
|
||||||
|
|
||||||
|
|
||||||
|
def test_make_timedelta_from_double():
|
||||||
|
t = 1.7
|
||||||
|
r = make_timedelta(t)
|
||||||
|
assert t == r.total_seconds()
|
||||||
|
assert r == dt.timedelta(seconds=t)
|
||||||
|
|
||||||
|
def test_make_timedelta_from_timedelta():
|
||||||
|
t = dt.timedelta(minutes=1)
|
||||||
|
r = make_timedelta(t)
|
||||||
|
assert 60 == r.total_seconds()
|
||||||
|
assert r == dt.timedelta(minutes=1)
|
Loading…
x
Reference in New Issue
Block a user