This commit is contained in:
Erik Frojdh 2020-01-08 15:33:28 +01:00
parent c223f00511
commit 71b0ed271e
6 changed files with 131 additions and 6 deletions

View File

@ -29,7 +29,7 @@ set( PYTHON_FILES
eiger.py eiger.py
errors.py errors.py
experimental.py experimental.py
# jungfrau_ctb.py ctb.py
# jungfrau.py # jungfrau.py
registers.py registers.py
utils.py utils.py

View File

@ -4,12 +4,10 @@ import numpy as np
sys.path.append(os.path.join(os.getcwd(), 'bin')) sys.path.append(os.path.join(os.getcwd(), 'bin'))
# from sls_detector import Eiger, Jungfrau, Detector, defs # from sls_detector import Eiger, Jungfrau, Detector, defs
from sls_detector import Detector, Eiger, DetectorDacs, Dac from sls_detector import Detector, Eiger, DetectorDacs, Dac, Ctb
from sls_detector import dacIndex from sls_detector import dacIndex
d = Detector() d = Detector()
e = Eiger() e = Eiger()
c = Ctb()
# from sls_detector.eiger import EigerVcmp
# v = EigerVcmp(d)

View File

@ -1,5 +1,6 @@
# from .detector import Detector, DetectorError, free_shared_memory # from .detector import Detector, DetectorError, free_shared_memory
from .eiger import Eiger from .eiger import Eiger
from .ctb import Ctb
from .dacs import DetectorDacs, Dac from .dacs import DetectorDacs, Dac
from .experimental import Detector from .experimental import Detector

121
python/sls_detector/ctb.py Normal file
View File

@ -0,0 +1,121 @@
from .experimental import Detector
from .utils import element_if_equal
from .dacs import DetectorDacs
import _sls_detector
dacIndex = _sls_detector.slsDetectorDefs.dacIndex
from .detector_property import DetectorProperty
class CtbDacs(DetectorDacs):
"""
Eiger specific dacs
"""
_dacs = [('dac0', dacIndex(0), 0, 4000, 1400),
('dac1', dacIndex(1), 0, 4000, 1200),
('dac2', dacIndex(2), 0, 4000, 900),
('dac3', dacIndex(3), 0, 4000, 1050),
('dac4', dacIndex(4), 0, 4000, 1400),
('dac5', dacIndex(5), 0, 4000, 655),
('dac6', dacIndex(6), 0, 4000, 2000),
('dac7', dacIndex(7), 0, 4000, 1400),
('dac8', dacIndex(8), 0, 4000, 850),
('dac9', dacIndex(9), 0, 4000, 2000),
('dac10', dacIndex(10), 0, 4000, 2294),
('dac11', dacIndex(11), 0, 4000, 983),
('dac12', dacIndex(12), 0, 4000, 1475),
('dac13', dacIndex(13), 0, 4000, 1200),
('dac14', dacIndex(14), 0, 4000, 1600),
('dac15', dacIndex(15), 0, 4000, 1455),
('dac16', dacIndex(16), 0, 4000, 0),
('dac17', dacIndex(17), 0, 4000, 1000),
]
_dacnames = [_d[0] for _d in _dacs]
from .utils import element
class Ctb(Detector):
def __init__(self, id = 0):
super().__init__(id)
self._frozen = False
self._dacs = CtbDacs(self)
@property
def dacs(self):
return self._dacs
@property
@element
def v_a(self):
return self.getDAC(dacIndex.V_POWER_A, True)
@v_a.setter
def v_a(self, value):
self.setDAC(dacIndex.V_POWER_A, value, True)
@property
@element
def v_b(self):
return self.getDAC(dacIndex.V_POWER_B, True)
@v_b.setter
def v_b(self, value):
self.setDAC(dacIndex.V_POWER_B, value, True)
@property
@element
def v_c(self):
return self.getDAC(dacIndex.V_POWER_C, True)
@v_c.setter
def v_c(self, value):
self.setDAC(dacIndex.V_POWER_C, value, True)
@property
@element
def v_d(self):
return self.getDAC(dacIndex.V_POWER_D, True)
@v_d.setter
def v_d(self, value):
self.setDAC(dacIndex.V_POWER_D, value, True)
@property
@element
def v_io(self):
return self.getDAC(dacIndex.V_POWER_IO, True)
@v_io.setter
def v_io(self, value):
self.setDAC(dacIndex.V_POWER_IO, value, True)
@property
@element
def v_limit(self):
return self.getDAC(dacIndex.V_LIMIT, True)
@v_limit.setter
def v_limit(self, value):
self.setDAC(dacIndex.V_LIMIT, value, True)
@property
@element
def im_a(self):
return self.getMeasuredCurrent(dacIndex.I_POWER_A)
@property
@element
def im_b(self):
return self.getMeasuredCurrent(dacIndex.I_POWER_B)
@property
@element
def im_c(self):
return self.getMeasuredCurrent(dacIndex.I_POWER_C)
@property
@element
def im_d(self):
return self.getMeasuredCurrent(dacIndex.I_POWER_D)
@property
@element
def im_io(self):
return self.getMeasuredCurrent(dacIndex.I_POWER_IO)

View File

@ -45,7 +45,6 @@ class EigerVcmp:
else: else:
dacs = _dacs[::-1] dacs = _dacs[::-1]
for d in dacs: for d in dacs:
print(d, i)
self.set.append(lambda x, d=d, i=i : detector.setDAC(d, x, False, [i])) self.set.append(lambda x, d=d, i=i : detector.setDAC(d, x, False, [i]))
self.get.append(lambda d=d, i=i : detector.getDAC(d, False, [i])[0]) self.get.append(lambda d=d, i=i : detector.getDAC(d, False, [i])[0])

View File

@ -4,6 +4,7 @@ but not directly used in controlling the detector
""" """
from collections import namedtuple from collections import namedtuple
import _sls_detector #C++ lib import _sls_detector #C++ lib
import functools
Geometry = namedtuple('Geometry', ['x', 'y']) Geometry = namedtuple('Geometry', ['x', 'y'])
@ -28,6 +29,11 @@ def element_if_equal(mylist):
else: else:
return mylist return mylist
def element(func):
@functools.wraps(func)
def wrapper(self, *args, **kwargs):
return element_if_equal(func(self, *args, **kwargs))
return wrapper
def eiger_register_to_time(register): def eiger_register_to_time(register):
""" """