mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-08-09 10:10:29 +02:00
python: moved powerlist to Ctb
This commit is contained in:
+10
-1
@@ -24,4 +24,13 @@ class Ctb(Detector):
|
||||
|
||||
@property
|
||||
def powers(self):
|
||||
return self._powers
|
||||
return self._powers
|
||||
|
||||
|
||||
@property
|
||||
def powerlist(self):
|
||||
return self.getPowerNames()
|
||||
|
||||
@powerlist.setter
|
||||
def powerlist(self, value):
|
||||
self.setPowerNames(value)
|
||||
@@ -2044,17 +2044,6 @@ class Detector(CppDetectorApi):
|
||||
def signallist(self, value):
|
||||
self.setSignalNames(value)
|
||||
|
||||
@property
|
||||
def powerlist(self):
|
||||
"""
|
||||
[Chiptestboard] List of names for every power for this board. 5 power supply
|
||||
|
||||
"""
|
||||
return self.getPowerNames()
|
||||
|
||||
@powerlist.setter
|
||||
def powerlist(self, value):
|
||||
self.setPowerNames(value)
|
||||
|
||||
@property
|
||||
def slowadclist(self):
|
||||
@@ -2076,17 +2065,10 @@ class Detector(CppDetectorApi):
|
||||
for dac in self.getDacList()
|
||||
}
|
||||
|
||||
@property
|
||||
def powervalues(self):
|
||||
"""[Chiptestboard] Gets the power values for every power for this detector."""
|
||||
return {
|
||||
power.name.lower(): element_if_equal(np.array(self.getPower(power)))
|
||||
for power in self.getPowerList()
|
||||
}
|
||||
|
||||
@property
|
||||
def slowadcvalues(self):
|
||||
"""[Chiptestboard] Gets the slow adc values for every slow adc for this detector."""
|
||||
"""[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()
|
||||
|
||||
+27
-29
@@ -64,42 +64,39 @@ class DetectorPowers:
|
||||
"""
|
||||
List implementation of the all the power supplies with its names.
|
||||
"""
|
||||
_direct_access = ['_detector', '_current', '_powernames']
|
||||
_direct_access = ['_detector', '_current']
|
||||
|
||||
def __init__(self, detector):
|
||||
self._frozen = False
|
||||
|
||||
self._detector = detector
|
||||
self._current = 0
|
||||
|
||||
#only get the powernames if we have modules attached
|
||||
if detector.size() == 0:
|
||||
self._powernames = ["VA", "VB", "VC", "VD", "VIO"]
|
||||
else:
|
||||
self._powernames = [n.replace(" ", "") for n in detector.getPowerNames()]
|
||||
|
||||
# Populate the powers
|
||||
for i,name in enumerate(self._powernames):
|
||||
#name, enum, low, high, default, detector
|
||||
setattr(self, name, Power(name, powerIndex(i), 0, detector))
|
||||
|
||||
self._frozen = True
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if not getattr(self, "_frozen", False):
|
||||
#durning init we need to be able to set up the class
|
||||
super().__setattr__(name, value)
|
||||
|
||||
@property
|
||||
def _powernames(self):
|
||||
# always get the latest list
|
||||
if hasattr(self._detector, 'powerlist'):
|
||||
return [n.replace(" ", "") for n in self._detector.powerlist]
|
||||
else:
|
||||
#Later we restrict us to manipulate powers and a few fields
|
||||
if name in self._direct_access or name == '_frozen':
|
||||
super().__setattr__(name, value)
|
||||
elif name in self._powernames:
|
||||
raise AttributeError(
|
||||
f"Cannot assign directly to power '{name}'. "
|
||||
f"Use '{name}.dac = value' or '{name}.enable = value'"
|
||||
)
|
||||
else:
|
||||
raise AttributeError(f'Power not found: {name}')
|
||||
return ["VA", "VB", "VC", "VD", "VIO"]
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name in self._powernames:
|
||||
idx = self._powernames.index(name)
|
||||
return Power(name, powerIndex(idx), 0, self._detector)
|
||||
raise AttributeError(f'Power not found: {name}')
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
if name in ("_detector", "_current", "_frozen"):
|
||||
super().__setattr__(name, value)
|
||||
elif name in self._powernames:
|
||||
raise AttributeError(
|
||||
f"Cannot assign directly to power '{name}'. "
|
||||
f"Use '{name}.dac = value' or '{name}.enable = value'"
|
||||
)
|
||||
else:
|
||||
raise AttributeError(f'Power not found: {name}')
|
||||
|
||||
def __next__(self):
|
||||
if self._current >= len(self._powernames):
|
||||
@@ -107,10 +104,11 @@ class DetectorPowers:
|
||||
raise StopIteration
|
||||
else:
|
||||
self._current += 1
|
||||
return self.__getattribute__(self._powernames[self._current-1])
|
||||
return getattr(self, self._powernames[self._current-1])
|
||||
# return self.__getattr__(self._powernames[self._current-1])
|
||||
|
||||
def __iter__(self):
|
||||
self._current = 0
|
||||
return self
|
||||
|
||||
def __repr__(self):
|
||||
|
||||
Reference in New Issue
Block a user