# SPDX-License-Identifier: LGPL-3.0-or-other # Copyright (C) 2021 Contributors to the SLS Detector Package from .detector import Detector, freeze from .utils import element_if_equal from .dacs import NamedDacs from .powers import NamedPowers from .proxy import SlowAdcProxy from . import _slsdet dacIndex = _slsdet.slsDetectorDefs.dacIndex from .detector_property import DetectorProperty import numpy as np from .utils import element @freeze class Ctb(Detector): def __init__(self, id = 0): super().__init__(id) self._frozen = False self._dacs = NamedDacs(self) self._powers = NamedPowers(self) @property def dacs(self): return self._dacs @property def powers(self): return self._powers @property def powerlist(self): return self.getPowerNames() @powerlist.setter def powerlist(self, value): self.setPowerNames(value) @property def adclist(self): return self.getAdcNames() @adclist.setter def adclist(self, value): self.setAdcNames(value) @property def signallist(self): return self.getSignalNames() @signallist.setter def signallist(self, value): self.setSignalNames(value) @property def slowadc(self): """ [Ctb] Slow ADC channel in uV of all channels or specific ones from 0-7. Example ------- >>> d.slowadc 0: 0 uV 1: 0 uV 2: 0 uV 3: 0 uV 4: 0 uV 5: 0 uV 6: 0 uV 7: 0 uV >>> d.slowadc[3] 0 """ return SlowAdcProxy(self) @property def slowadclist(self): return self.getSlowADCNames() @slowadclist.setter def slowadclist(self, value): self.setSlowADCNames(value) @property def slowadcvalues(self): """[Chiptestboard][Xilinx CTB] Gets the slow adc values for every slow adc for this detector.""" return { slowadc.name.lower(): element_if_equal(np.array(self.getSlowADC(slowadc))) for slowadc in self.getSlowADCList() }