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
|
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
|
||||||
|
@ -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)
|
|
@ -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
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:
|
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])
|
||||||
|
|
||||||
|
@ -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):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user