mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-06 18:10:40 +02:00
more jf stuff
This commit is contained in:
parent
a708da5455
commit
104d91e8c6
82
python/api-tests/test_detector.py
Normal file
82
python/api-tests/test_detector.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
import pytest
|
||||||
|
import datetime as dt
|
||||||
|
from slsdet import Detector, timingMode, detectorType
|
||||||
|
|
||||||
|
not_eiger = pytest.mark.skipif(
|
||||||
|
Detector().type == detectorType.EIGER, reason="Does not work for eiger"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def det():
|
||||||
|
from slsdet import Detector
|
||||||
|
|
||||||
|
return Detector()
|
||||||
|
|
||||||
|
|
||||||
|
def test_frames(det):
|
||||||
|
for n in [1, 100, 3245, 10000]:
|
||||||
|
det.frames = n
|
||||||
|
assert det.frames == n
|
||||||
|
det.frames = 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_triggers(det):
|
||||||
|
for n in [1, 100, 3245, 10000]:
|
||||||
|
det.triggers = n
|
||||||
|
assert det.triggers == n
|
||||||
|
det.triggers = 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_exptime(det):
|
||||||
|
det.exptime = 1
|
||||||
|
assert det.exptime == 1
|
||||||
|
det.exptime = dt.timedelta(milliseconds=10)
|
||||||
|
assert det.exptime == 0.01
|
||||||
|
det.exptime = 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_period(det):
|
||||||
|
det.period = 3.2
|
||||||
|
assert det.period == 3.2
|
||||||
|
|
||||||
|
p = dt.timedelta(microseconds=1020)
|
||||||
|
det.period = p
|
||||||
|
assert det.period == 0.001020
|
||||||
|
r = det.getPeriod()
|
||||||
|
assert r[0] == p
|
||||||
|
det.period = 0
|
||||||
|
assert det.period == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_lock(det):
|
||||||
|
for l in [True, False]:
|
||||||
|
det.lock = l
|
||||||
|
assert det.lock == l
|
||||||
|
|
||||||
|
|
||||||
|
def test_timing(det):
|
||||||
|
# auto and trigger is available for all det
|
||||||
|
for m in [timingMode.TRIGGER_EXPOSURE, timingMode.AUTO_TIMING]:
|
||||||
|
det.timing = m
|
||||||
|
assert det.timing == m
|
||||||
|
|
||||||
|
@not_eiger
|
||||||
|
def test_delay(det):
|
||||||
|
det.delay = 1
|
||||||
|
assert det.delay == 1
|
||||||
|
|
||||||
|
t = dt.timedelta(microseconds=1)
|
||||||
|
det.delay = t
|
||||||
|
assert det.delay == t.total_seconds()
|
||||||
|
|
||||||
|
r = det.getDelayAfterTrigger()[0]
|
||||||
|
assert r == t
|
||||||
|
|
||||||
|
det.delay = 0
|
||||||
|
assert det.delay == 0
|
||||||
|
|
||||||
|
|
||||||
|
@not_eiger
|
||||||
|
def test_delayl(det):
|
||||||
|
assert det.delayl == 0
|
@ -1,5 +1,14 @@
|
|||||||
import pytest
|
import pytest
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
from slsdet import Detector, detectorType
|
||||||
|
|
||||||
|
"""
|
||||||
|
These tests are designed to work the API and catch
|
||||||
|
any changes in behavior or naming. Tests are expected
|
||||||
|
to pass with a virtual detector or a real one
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def jf():
|
def jf():
|
||||||
@ -7,21 +16,74 @@ def jf():
|
|||||||
return Jungfrau()
|
return Jungfrau()
|
||||||
|
|
||||||
|
|
||||||
|
jungfrautest = pytest.mark.skipif(
|
||||||
|
Detector().type != detectorType.JUNGFRAU, reason="Only valid for Jungfrau"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
def test_storagecells(jf):
|
def test_storagecells(jf):
|
||||||
for i in range(16):
|
for i in range(16):
|
||||||
jf.storagecells = i
|
jf.storagecells = i
|
||||||
assert jf.storagecells == i
|
assert jf.storagecells == i
|
||||||
jf.storagecells = 0 #default
|
jf.storagecells = 0 # default
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
def test_storagecell_start(jf):
|
def test_storagecell_start(jf):
|
||||||
for i in range(16):
|
for i in range(16):
|
||||||
jf.storagecell_start = i
|
jf.storagecell_start = i
|
||||||
assert jf.storagecell_start == i
|
assert jf.storagecell_start == i
|
||||||
jf.storagecells = 15 #default
|
jf.storagecells = 15 # default
|
||||||
|
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
def test_storagecell_delay(jf):
|
def test_storagecell_delay(jf):
|
||||||
for t in [0.001, 0.0002, 0.0013]:
|
for t in [0.001, 0.0002, 0.0013]:
|
||||||
jf.storagecell_delay = t
|
jf.storagecell_delay = t
|
||||||
assert jf.storagecell_delay == t
|
assert jf.storagecell_delay == t
|
||||||
jf.storagecell_delay = 0 #default
|
jf.storagecell_delay = 0 # default
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_temp_event(jf):
|
||||||
|
# hard to test with virtual server
|
||||||
|
assert jf.temp_event == 0
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_temp_threshold(jf):
|
||||||
|
for th in [0, 10, 43, 72]:
|
||||||
|
jf.temp_threshold = th
|
||||||
|
assert jf.temp_threshold == th
|
||||||
|
jf.temp_threshold = 0
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_auto_comp_disable(jf):
|
||||||
|
for v in [True, False]:
|
||||||
|
jf.auto_comp_disable = v
|
||||||
|
assert jf.auto_comp_disable == v
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_numinterfaces(jf):
|
||||||
|
for n in [2, 1]:
|
||||||
|
jf.numinterfaces = n
|
||||||
|
assert jf.numinterfaces == n
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_dr(jf):
|
||||||
|
assert jf.dr == 16
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_temp_control(jf):
|
||||||
|
for v in [True, False]:
|
||||||
|
jf.temp_control = v
|
||||||
|
assert jf.temp_control == v
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_startingfnum(jf):
|
||||||
|
for n in [10, 127, 43321, 1]:
|
||||||
|
jf.startingfnum = n
|
||||||
|
assert jf.startingfnum == n
|
||||||
|
|
||||||
|
@jungfrautest
|
||||||
|
def test_selinterface(jf):
|
||||||
|
for i in [1, 0]:
|
||||||
|
jf.selinterface = i
|
||||||
|
assert jf.selinterface == i
|
@ -15,7 +15,7 @@ pycmd += ['vrf', 'vtr', 'vrs', 'vtgstv', 'vsvn', 'vtrim',
|
|||||||
'vpreamp', 'vref_comp', 'vref_comp_fe vref_ds', 'vref_h_adc',
|
'vpreamp', 'vref_comp', 'vref_comp_fe vref_ds', 'vref_h_adc',
|
||||||
'vref_l_adc', 'iodelay', 'list', 'vref_ds', 'vis', 'vpl',
|
'vref_l_adc', 'iodelay', 'list', 'vref_ds', 'vis', 'vpl',
|
||||||
'vref_comp_fe', 'vph', 'vout_cm', 'vcp', 'vcn', 'vcmp_ll', 'vcmp_lr'
|
'vref_comp_fe', 'vph', 'vout_cm', 'vcp', 'vcn', 'vcmp_ll', 'vcmp_lr'
|
||||||
, 'vcmp_rl', 'vcmp_rr']
|
, 'vcmp_rl', 'vcmp_rr', 'daclist', 'dacvalues', 'vcal', 'vcas']
|
||||||
|
|
||||||
missing = []
|
missing = []
|
||||||
for c in cmd:
|
for c in cmd:
|
||||||
|
@ -3,6 +3,7 @@ from _slsdet import slsDetectorDefs
|
|||||||
from _slsdet import IpAddr, MacAddr
|
from _slsdet import IpAddr, MacAddr
|
||||||
|
|
||||||
runStatus = slsDetectorDefs.runStatus
|
runStatus = slsDetectorDefs.runStatus
|
||||||
|
timingMode = slsDetectorDefs.timingMode
|
||||||
speedLevel = slsDetectorDefs.speedLevel
|
speedLevel = slsDetectorDefs.speedLevel
|
||||||
dacIndex = slsDetectorDefs.dacIndex
|
dacIndex = slsDetectorDefs.dacIndex
|
||||||
detectorType = slsDetectorDefs.detectorType
|
detectorType = slsDetectorDefs.detectorType
|
||||||
@ -17,6 +18,7 @@ from functools import wraps
|
|||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import socket
|
import socket
|
||||||
|
|
||||||
|
|
||||||
def freeze(cls):
|
def freeze(cls):
|
||||||
cls._frozen = False
|
cls._frozen = False
|
||||||
|
|
||||||
@ -61,15 +63,12 @@ class Detector(CppDetectorApi):
|
|||||||
self._register = Register(self)
|
self._register = Register(self)
|
||||||
self._adc_register = Adc_register(self)
|
self._adc_register = Adc_register(self)
|
||||||
|
|
||||||
|
|
||||||
# CONFIGURATION
|
# CONFIGURATION
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return self.size()
|
return self.size()
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '{}(id = {})'.format(self.__class__.__name__,
|
return "{}(id = {})".format(self.__class__.__name__, self.getShmId())
|
||||||
self.getShmId())
|
|
||||||
|
|
||||||
|
|
||||||
def free(self):
|
def free(self):
|
||||||
self.freeSharedMemory()
|
self.freeSharedMemory()
|
||||||
@ -92,7 +91,6 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def hostname(self):
|
def hostname(self):
|
||||||
print('getting host!')
|
|
||||||
return self.getHostname()
|
return self.getHostname()
|
||||||
|
|
||||||
@hostname.setter
|
@hostname.setter
|
||||||
@ -110,7 +108,7 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def server_version(self):
|
def server_version(self):
|
||||||
#TODO! handle hex print
|
# TODO! handle hex print
|
||||||
return element_if_equal(self.getDetectorServerVersion())
|
return element_if_equal(self.getDetectorServerVersion())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -131,7 +129,7 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@dr.setter
|
@dr.setter
|
||||||
def dr(self, dr):
|
def dr(self, dr):
|
||||||
self.setDynamicRange(dr)
|
self.setDynamicRange(dr)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def module_geometry(self):
|
def module_geometry(self):
|
||||||
@ -178,56 +176,38 @@ class Detector(CppDetectorApi):
|
|||||||
res = self.getExptime()
|
res = self.getExptime()
|
||||||
return reduce_time(res)
|
return reduce_time(res)
|
||||||
|
|
||||||
|
|
||||||
@exptime.setter
|
@exptime.setter
|
||||||
def exptime(self, t):
|
def exptime(self, t):
|
||||||
self.setExptime(ut.make_timedelta(t))
|
self.setExptime(ut.make_timedelta(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):
|
|
||||||
self.setGateDelay(i, ut.make_timedelta(v))
|
|
||||||
else:
|
|
||||||
self.setGateDelay(-1, ut.make_timedelta(value))
|
|
||||||
|
|
||||||
@property
|
|
||||||
def subexptime(self):
|
|
||||||
res = self.getSubExptime()
|
|
||||||
return reduce_time(res)
|
|
||||||
|
|
||||||
@subexptime.setter
|
|
||||||
def subexptime(self, t):
|
|
||||||
self.setSubExptime(ut.make_timedelta(t))
|
|
||||||
|
|
||||||
@property
|
|
||||||
def subdeadtime(self):
|
|
||||||
res = self.getSubDeadTime()
|
|
||||||
reduce_time(res)
|
|
||||||
|
|
||||||
@subdeadtime.setter
|
|
||||||
def subdeadtime(self, t):
|
|
||||||
self.setSubDeadTime(ut.make_timedelta(t))
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def period(self):
|
def period(self):
|
||||||
res = self.getPeriod()
|
res = self.getPeriod()
|
||||||
reduce_time(res)
|
return reduce_time(res)
|
||||||
|
|
||||||
@period.setter
|
@period.setter
|
||||||
def period(self, t):
|
def period(self, t):
|
||||||
self.setPeriod(ut.make_timedelta(t))
|
self.setPeriod(ut.make_timedelta(t))
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def delay(self):
|
||||||
|
return ut.reduce_time(self.getDelayAfterTrigger())
|
||||||
|
|
||||||
|
@delay.setter
|
||||||
|
def delay(self, t):
|
||||||
|
self.setDelayAfterTrigger(ut.make_timedelta(t))
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def delayl(self):
|
||||||
|
return ut.reduce_time(self.getDelayAfterTriggerLeft())
|
||||||
|
|
||||||
|
|
||||||
# Time
|
# Time
|
||||||
@property
|
@property
|
||||||
def rx_framescaught(self):
|
def rx_framescaught(self):
|
||||||
return element_if_equal(self.getFramesCaught())
|
return element_if_equal(self.getFramesCaught())
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def startingfnum(self):
|
def startingfnum(self):
|
||||||
@ -236,10 +216,7 @@ class Detector(CppDetectorApi):
|
|||||||
@startingfnum.setter
|
@startingfnum.setter
|
||||||
def startingfnum(self, value):
|
def startingfnum(self, value):
|
||||||
self.setStartingFrameNumber(value)
|
self.setStartingFrameNumber(value)
|
||||||
|
# TODO! add txdelay
|
||||||
|
|
||||||
|
|
||||||
#TODO! add txdelay
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def use_receiver(self):
|
def use_receiver(self):
|
||||||
@ -305,14 +282,21 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def rx_lastclient(self):
|
def rx_lastclient(self):
|
||||||
return element_if_equal(self.getRxLastClientIP())
|
return element_if_equal(self.getRxLastClientIP())
|
||||||
|
# FILE
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def numinterfaces(self):
|
||||||
|
return self.getNumberofUDPInterfaces()
|
||||||
|
|
||||||
#FILE
|
@numinterfaces.setter
|
||||||
|
def numinterfaces(self, value):
|
||||||
|
self.setNumberofUDPInterfaces(value)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def fformat(self):
|
def fformat(self):
|
||||||
return element_if_equal(self.getFileFormat())
|
return element_if_equal(self.getFileFormat())
|
||||||
|
|
||||||
@fformat.setter
|
@fformat.setter
|
||||||
def fformat(self, format):
|
def fformat(self, format):
|
||||||
self.setFileFormat(format)
|
self.setFileFormat(format)
|
||||||
@ -423,14 +407,13 @@ class Detector(CppDetectorApi):
|
|||||||
def zmqip(self, ip):
|
def zmqip(self, ip):
|
||||||
self.setClientZmqIp(ip)
|
self.setClientZmqIp(ip)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def udp_dstip(self):
|
def udp_dstip(self):
|
||||||
return element_if_equal(self.getDestinationUDPIP())
|
return element_if_equal(self.getDestinationUDPIP())
|
||||||
|
|
||||||
@udp_dstip.setter
|
@udp_dstip.setter
|
||||||
def udp_dstip(self, ip):
|
def udp_dstip(self, ip):
|
||||||
if ip == 'auto':
|
if ip == "auto":
|
||||||
ip = socket.gethostbyname(self.rx_hostname)
|
ip = socket.gethostbyname(self.rx_hostname)
|
||||||
self.setDestinationUDPIP(IpAddr(ip))
|
self.setDestinationUDPIP(IpAddr(ip))
|
||||||
|
|
||||||
@ -440,7 +423,7 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@udp_dstip2.setter
|
@udp_dstip2.setter
|
||||||
def udp_dstip2(self, ip):
|
def udp_dstip2(self, ip):
|
||||||
if ip == 'auto':
|
if ip == "auto":
|
||||||
ip = socket.gethostbyname(self.rx_hostname)
|
ip = socket.gethostbyname(self.rx_hostname)
|
||||||
self.setDestinationUDPIP2(IpAddr(ip))
|
self.setDestinationUDPIP2(IpAddr(ip))
|
||||||
|
|
||||||
@ -460,7 +443,6 @@ class Detector(CppDetectorApi):
|
|||||||
def udp_dstmac2(self, mac):
|
def udp_dstmac2(self, mac):
|
||||||
self.setDestinationUDPMAC2(MacAddr(mac))
|
self.setDestinationUDPMAC2(MacAddr(mac))
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def udp_srcip(self):
|
def udp_srcip(self):
|
||||||
return element_if_equal(self.getSourceUDPIP())
|
return element_if_equal(self.getSourceUDPIP())
|
||||||
@ -517,7 +499,6 @@ class Detector(CppDetectorApi):
|
|||||||
def src_udpip(self, ip):
|
def src_udpip(self, ip):
|
||||||
self.setSourceUDPIP(IpAddr(ip))
|
self.setSourceUDPIP(IpAddr(ip))
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def src_udpmac2(self):
|
def src_udpmac2(self):
|
||||||
return element_if_equal(self.getSourceUDPMAC2())
|
return element_if_equal(self.getSourceUDPMAC2())
|
||||||
@ -554,8 +535,6 @@ class Detector(CppDetectorApi):
|
|||||||
def rx_status(self):
|
def rx_status(self):
|
||||||
return element_if_equal(self.getReceiverStatus())
|
return element_if_equal(self.getReceiverStatus())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def rx_udpsocksize(self):
|
def rx_udpsocksize(self):
|
||||||
return element_if_equal(self.getRxUDPSocketBufferSize())
|
return element_if_equal(self.getRxUDPSocketBufferSize())
|
||||||
@ -570,7 +549,7 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def trimbits(self):
|
def trimbits(self):
|
||||||
return NotImplementedError('trimbits are set only')
|
return NotImplementedError("trimbits are set only")
|
||||||
|
|
||||||
@trimbits.setter
|
@trimbits.setter
|
||||||
def trimbits(self, fname):
|
def trimbits(self, fname):
|
||||||
@ -604,7 +583,6 @@ class Detector(CppDetectorApi):
|
|||||||
def adcreg(self):
|
def adcreg(self):
|
||||||
return self._adc_register
|
return self._adc_register
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def led(self):
|
def led(self):
|
||||||
return element_if_equal(self.getLEDEnable())
|
return element_if_equal(self.getLEDEnable())
|
||||||
@ -645,11 +623,11 @@ class Detector(CppDetectorApi):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def timing(self):
|
def timing(self):
|
||||||
return element_if_equal(self.getTimingMode())
|
return element_if_equal(self.getTimingMode())
|
||||||
|
|
||||||
@timing.setter
|
@timing.setter
|
||||||
def timing(self, mode):
|
def timing(self, mode):
|
||||||
self.setTimingMode(mode)
|
self.setTimingMode(mode)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def trimen(self):
|
def trimen(self):
|
||||||
@ -663,8 +641,6 @@ class Detector(CppDetectorApi):
|
|||||||
def vthreshold(self):
|
def vthreshold(self):
|
||||||
return element_if_equal(self.getDAC(dacIndex.THRESHOLD))
|
return element_if_equal(self.getDAC(dacIndex.THRESHOLD))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def type(self):
|
def type(self):
|
||||||
return element_if_equal(self.getDetectorType())
|
return element_if_equal(self.getDetectorType())
|
||||||
@ -677,10 +653,27 @@ class Detector(CppDetectorApi):
|
|||||||
def rx_missingpackets(self):
|
def rx_missingpackets(self):
|
||||||
return element_if_equal(self.getNumMissingPackets())
|
return element_if_equal(self.getNumMissingPackets())
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Some Eiger stuff, does this have to be here or can we move it to subclass?
|
Some Eiger stuff, does this have to be here or can we move it to subclass?
|
||||||
"""
|
"""
|
||||||
|
@property
|
||||||
|
def subexptime(self):
|
||||||
|
res = self.getSubExptime()
|
||||||
|
return reduce_time(res)
|
||||||
|
|
||||||
|
@subexptime.setter
|
||||||
|
def subexptime(self, t):
|
||||||
|
self.setSubExptime(ut.make_timedelta(t))
|
||||||
|
|
||||||
|
@property
|
||||||
|
def subdeadtime(self):
|
||||||
|
res = self.getSubDeadTime()
|
||||||
|
reduce_time(res)
|
||||||
|
|
||||||
|
@subdeadtime.setter
|
||||||
|
def subdeadtime(self, t):
|
||||||
|
self.setSubDeadTime(ut.make_timedelta(t))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def partialreset(self):
|
def partialreset(self):
|
||||||
return element_if_equal(self.getPartialReset())
|
return element_if_equal(self.getPartialReset())
|
||||||
@ -692,7 +685,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def tengiga(self):
|
def tengiga(self):
|
||||||
return element_if_equal(self.getTenGiga())
|
return element_if_equal(self.getTenGiga())
|
||||||
|
|
||||||
@tengiga.setter
|
@tengiga.setter
|
||||||
def tengiga(self, value):
|
def tengiga(self, value):
|
||||||
self.setTenGiga(value)
|
self.setTenGiga(value)
|
||||||
@ -739,7 +732,6 @@ class Detector(CppDetectorApi):
|
|||||||
res = self.getMeasuredSubFramePeriod()
|
res = self.getMeasuredSubFramePeriod()
|
||||||
return element_if_equal([it.total_seconds() for it in res])
|
return element_if_equal([it.total_seconds() for it in res])
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def storeinram(self):
|
def storeinram(self):
|
||||||
return element_if_equal(self.getStoreInRamMode())
|
return element_if_equal(self.getStoreInRamMode())
|
||||||
@ -748,11 +740,19 @@ class Detector(CppDetectorApi):
|
|||||||
def storeinram(self, value):
|
def storeinram(self, value):
|
||||||
self.setStoreInRamMode(value)
|
self.setStoreInRamMode(value)
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Jungfrau specific
|
Jungfrau specific
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def auto_comp_disable(self):
|
||||||
|
return self.getAutoCompDisable()
|
||||||
|
|
||||||
|
@auto_comp_disable.setter
|
||||||
|
def auto_comp_disable(self, value):
|
||||||
|
self.setAutoCompDisable(value)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def storagecells(self):
|
def storagecells(self):
|
||||||
@ -780,9 +780,49 @@ class Detector(CppDetectorApi):
|
|||||||
def storagecell_delay(self, t):
|
def storagecell_delay(self, t):
|
||||||
self.setStorageCellDelay(ut.make_timedelta(t))
|
self.setStorageCellDelay(ut.make_timedelta(t))
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def temp_threshold(self):
|
||||||
|
return self.getThresholdTemperature()
|
||||||
|
|
||||||
|
@temp_threshold.setter
|
||||||
|
def temp_threshold(self, value):
|
||||||
|
self.setThresholdTemperature(value)
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def temp_event(self):
|
||||||
|
return self.getTemperatureEvent()
|
||||||
|
|
||||||
|
@temp_event.setter
|
||||||
|
def temp_event(self, value):
|
||||||
|
if value != 0:
|
||||||
|
raise ValueError("Value needs to be 0 for reset. Setting not allowed")
|
||||||
|
self.resetTemperatureEvent()
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def temp_control(self):
|
||||||
|
return self.getTemperatureControl()
|
||||||
|
|
||||||
|
@temp_control.setter
|
||||||
|
def temp_control(self, value):
|
||||||
|
self.setTemperatureControl(value)
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
@element
|
||||||
|
def selinterface(self):
|
||||||
|
return self.getSelectedUDPInterface()
|
||||||
|
|
||||||
|
@selinterface.setter
|
||||||
|
def selinterface(self, i):
|
||||||
|
self.selectUDPInterface(i)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Gotthard2
|
Gotthard2
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def veto(self):
|
def veto(self):
|
||||||
@ -793,11 +833,23 @@ class Detector(CppDetectorApi):
|
|||||||
self.setVeto(value)
|
self.setVeto(value)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Mythen3 specific
|
Mythen3 specific
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@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):
|
||||||
|
self.setGateDelay(i, ut.make_timedelta(v))
|
||||||
|
else:
|
||||||
|
self.setGateDelay(-1, ut.make_timedelta(value))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def counters(self):
|
def counters(self):
|
||||||
mask = self.getCounterMask()
|
mask = self.getCounterMask()
|
||||||
@ -807,11 +859,10 @@ class Detector(CppDetectorApi):
|
|||||||
else:
|
else:
|
||||||
return [get_set_bits(m) for m in mask]
|
return [get_set_bits(m) for m in mask]
|
||||||
|
|
||||||
|
|
||||||
@counters.setter
|
@counters.setter
|
||||||
def counters(self, values):
|
def counters(self, values):
|
||||||
self.setCounterMask(list_to_bitmask(values))
|
self.setCounterMask(list_to_bitmask(values))
|
||||||
|
|
||||||
"""
|
"""
|
||||||
CTB stuff
|
CTB stuff
|
||||||
"""
|
"""
|
||||||
@ -859,7 +910,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def dbitclk(self):
|
def dbitclk(self):
|
||||||
return element_if_equal(self.getDBITClock())
|
return element_if_equal(self.getDBITClock())
|
||||||
|
|
||||||
@dbitclk.setter
|
@dbitclk.setter
|
||||||
def dbitclk(self, value):
|
def dbitclk(self, value):
|
||||||
self.setDBITClock(value)
|
self.setDBITClock(value)
|
||||||
@ -899,7 +950,7 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def adcphase(self):
|
def adcphase(self):
|
||||||
return element_if_equal(self.getADCPhase())
|
return element_if_equal(self.getADCPhase())
|
||||||
|
|
||||||
@adcphase.setter
|
@adcphase.setter
|
||||||
def adcphase(self, value):
|
def adcphase(self, value):
|
||||||
self.setADCPhase(value)
|
self.setADCPhase(value)
|
||||||
@ -923,10 +974,10 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
def syncclk(self):
|
def syncclk(self):
|
||||||
return element_if_equal(self.getSYNCClock())
|
return element_if_equal(self.getSYNCClock())
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pattern(self):
|
def pattern(self):
|
||||||
#TODO! Clean fix
|
# TODO! Clean fix
|
||||||
print("Set only")
|
print("Set only")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@ -1015,7 +1066,6 @@ class Detector(CppDetectorApi):
|
|||||||
def patwaittime2(self, nclk):
|
def patwaittime2(self, nclk):
|
||||||
self.setPatternWaitTime(2, nclk)
|
self.setPatternWaitTime(2, nclk)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def patloop0(self):
|
def patloop0(self):
|
||||||
return element_if_equal(self.getPatternLoopAddresses(0))
|
return element_if_equal(self.getPatternLoopAddresses(0))
|
||||||
@ -1064,7 +1114,6 @@ class Detector(CppDetectorApi):
|
|||||||
def patnloop2(self, n):
|
def patnloop2(self, n):
|
||||||
self.setPatternLoopCycles(2, n)
|
self.setPatternLoopCycles(2, n)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def v_a(self):
|
def v_a(self):
|
||||||
@ -1142,4 +1191,4 @@ class Detector(CppDetectorApi):
|
|||||||
@property
|
@property
|
||||||
@element
|
@element
|
||||||
def im_io(self):
|
def im_io(self):
|
||||||
return self.getMeasuredCurrent(dacIndex.I_POWER_IO)
|
return self.getMeasuredCurrent(dacIndex.I_POWER_IO)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user