mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-07 02:20:42 +02:00
CTB
This commit is contained in:
parent
c223f00511
commit
71b0ed271e
@ -29,7 +29,7 @@ set( PYTHON_FILES
|
||||
eiger.py
|
||||
errors.py
|
||||
experimental.py
|
||||
# jungfrau_ctb.py
|
||||
ctb.py
|
||||
# jungfrau.py
|
||||
registers.py
|
||||
utils.py
|
||||
|
@ -4,12 +4,10 @@ import numpy as np
|
||||
sys.path.append(os.path.join(os.getcwd(), 'bin'))
|
||||
# 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
|
||||
|
||||
|
||||
d = Detector()
|
||||
e = Eiger()
|
||||
|
||||
# from sls_detector.eiger import EigerVcmp
|
||||
# v = EigerVcmp(d)
|
||||
c = Ctb()
|
@ -1,5 +1,6 @@
|
||||
# from .detector import Detector, DetectorError, free_shared_memory
|
||||
from .eiger import Eiger
|
||||
from .ctb import Ctb
|
||||
from .dacs import DetectorDacs, Dac
|
||||
from .experimental import Detector
|
||||
|
||||
|
121
python/sls_detector/ctb.py
Normal file
121
python/sls_detector/ctb.py
Normal 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)
|
@ -45,7 +45,6 @@ class EigerVcmp:
|
||||
else:
|
||||
dacs = _dacs[::-1]
|
||||
for d in dacs:
|
||||
print(d, 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])
|
||||
|
||||
|
@ -4,6 +4,7 @@ but not directly used in controlling the detector
|
||||
"""
|
||||
from collections import namedtuple
|
||||
import _sls_detector #C++ lib
|
||||
import functools
|
||||
|
||||
Geometry = namedtuple('Geometry', ['x', 'y'])
|
||||
|
||||
@ -28,6 +29,11 @@ def element_if_equal(mylist):
|
||||
else:
|
||||
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):
|
||||
"""
|
||||
|
Loading…
x
Reference in New Issue
Block a user