mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-21 19:30:03 +02:00
179 lines
3.9 KiB
Python
Executable File
179 lines
3.9 KiB
Python
Executable File
from functools import partial
|
|
from collections.abc import Iterable
|
|
from collections import namedtuple
|
|
import socket
|
|
|
|
from .detector import Detector
|
|
from .utils import element_if_equal
|
|
from .adcs import DetectorAdcs, Adc
|
|
from .dacs import DetectorDacs
|
|
from .detector_property import DetectorProperty
|
|
from .registers import Register, Adc_register
|
|
|
|
class JungfrauCTBDacs(DetectorDacs):
|
|
_dacs = [('dac0', 0, 4000, 1400),
|
|
('dac1', 0, 4000, 1200),
|
|
('dac2', 0, 4000, 900),
|
|
('dac3', 0, 4000, 1050),
|
|
('dac4', 0, 4000, 1400),
|
|
('dac5', 0, 4000, 655),
|
|
('dac6', 0, 4000, 2000),
|
|
('dac7', 0, 4000, 1400),
|
|
('dac8', 0, 4000, 850),
|
|
('dac9', 0, 4000, 2000),
|
|
('dac10', 0, 4000, 2294),
|
|
('dac11', 0, 4000, 983),
|
|
('dac12', 0, 4000, 1475),
|
|
('dac13', 0, 4000, 1200),
|
|
('dac14', 0, 4000, 1600),
|
|
('dac15', 0, 4000, 1455),
|
|
('dac16', 0, 4000, 0),
|
|
('dac17', 0, 4000, 1000),
|
|
]
|
|
_dacnames = [_d[0] for _d in _dacs]
|
|
|
|
|
|
|
|
class JungfrauCTB(Detector):
|
|
def __init__(self, id = 0):
|
|
super().__init__(id)
|
|
self._dacs = JungfrauCTBDacs(self)
|
|
self._register = Register(self)
|
|
self._adc_register = Adc_register(self)
|
|
|
|
@property
|
|
def v_a(self):
|
|
return self._api.getDac_mV('v_a', -1)
|
|
|
|
@v_a.setter
|
|
def v_a(self, value):
|
|
self._api.setDac_mV('v_a', -1, value)
|
|
|
|
@property
|
|
def v_b(self):
|
|
return self._api.getDac_mV('v_b', -1)
|
|
|
|
@v_b.setter
|
|
def v_b(self, value):
|
|
self._api.setDac_mV('v_b', -1, value)
|
|
|
|
|
|
@property
|
|
def v_c(self):
|
|
return self._api.getDac_mV('v_c', -1)
|
|
|
|
@v_c.setter
|
|
def v_c(self, value):
|
|
self._api.setDac_mV('v_c', -1, value)
|
|
|
|
@property
|
|
def v_d(self):
|
|
return self._api.getDac_mV('v_d', -1)
|
|
|
|
@v_d.setter
|
|
def v_d(self, value):
|
|
self._api.setDac_mV('v_d', -1, value)
|
|
|
|
@property
|
|
def v_io(self):
|
|
return self._api.getDac_mV('v_io', -1)
|
|
|
|
@v_io.setter
|
|
def v_io(self, value):
|
|
self._api.setDac_mV('v_io', -1, value)
|
|
|
|
@property
|
|
def v_limit(self):
|
|
return self._api.getDac_mV('v_limit', -1)
|
|
|
|
@v_limit.setter
|
|
def v_limit(self, value):
|
|
self._api.setDac_mV('v_limit', -1, value)
|
|
|
|
@property
|
|
def adc_register(self):
|
|
return self._adc_register
|
|
|
|
# @property
|
|
# def register(self):
|
|
# return self._register
|
|
|
|
def adcOFF(self):
|
|
"""Switch off the ADC"""
|
|
self.adc_register[0x8] = 1
|
|
|
|
|
|
|
|
@property
|
|
def dacs(self):
|
|
"""
|
|
|
|
An instance of DetectorDacs used for accessing the dacs of a single
|
|
or multi detector.
|
|
|
|
Examples
|
|
---------
|
|
|
|
::
|
|
|
|
#JungfrauCTB
|
|
|
|
|
|
"""
|
|
return self._dacs
|
|
|
|
@property
|
|
def dbitpipeline(self):
|
|
return self._api.getDbitPipeline()
|
|
|
|
@dbitpipeline.setter
|
|
def dbitpipeline(self, value):
|
|
self._api.setDbitPipeline(value)
|
|
|
|
|
|
@property
|
|
def dbitphase(self):
|
|
return self._api.getDbitPhase()
|
|
|
|
@dbitphase.setter
|
|
def dbitphase(self, value):
|
|
self._api.setDbitPhase(value)
|
|
|
|
@property
|
|
def dbitclock(self):
|
|
return self._api.getDbitClock()
|
|
|
|
@dbitclock.setter
|
|
def dbitclock(self, value):
|
|
self._api.setDbitClock(value)
|
|
|
|
@property
|
|
def samples(self):
|
|
return self._api.getJCTBSamples()
|
|
|
|
@samples.setter
|
|
def samples(self, value):
|
|
self._api.setJCTBSamples(value)
|
|
|
|
@property
|
|
def readout_clock(self):
|
|
"""
|
|
Speed of the readout clock relative to the full speed
|
|
|
|
|
|
Examples
|
|
---------
|
|
|
|
::
|
|
|
|
|
|
|
|
|
|
"""
|
|
return self._api.getReadoutClockSpeed()
|
|
|
|
|
|
@readout_clock.setter
|
|
def readout_clock(self, value):
|
|
self._api.setReadoutClockSpeed(value)
|