From 4ff30920ce0f2809e46a00f22b21316638665396 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Wed, 17 Jun 2026 11:41:04 +0200 Subject: [PATCH] devices: fix on bec det_z device --- src/aare/daq/devices.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/aare/daq/devices.py b/src/aare/daq/devices.py index bfa463bf..c7c5da6c 100644 --- a/src/aare/daq/devices.py +++ b/src/aare/daq/devices.py @@ -41,9 +41,7 @@ class BeamlineDevices: self.exp_shutter = ExperimentalHutchShutter(beamline=self._beamline) #faster to define the dtz object here than in functions and then use - self.__dtz_rbk = self.bec_worker.dev.det_z.position - self.__dtz_llm= self.bec_worker.dev.det_z.low_limit - self.__dtz_hlm= self.bec_worker.dev.det_z.high_limit + self.__dtz = self.bec_worker.dev.det_z self.dtz_mod = cfg_get('daq.detector_distance_limit_modifier', 1.0) #TODO convert epics pvs to BEC self.__sample_cam = epicsAD(f"{BEAMLINE}-ES-MS:") @@ -265,20 +263,20 @@ class BeamlineDevices: # Detector Z @property def dtz(self) -> float: - return self.__dtz_rbk + return self.__dtz.read()['det_z']['value'] @dtz.setter def dtz(self, value: float): self.set_dtz(value, wait=True) def set_dtz(self, value: float, /, wait: bool = True): - if value < self.__dtz_llm: + if value < self.__dtz.low_limit: #raise ValueError(f"Detector distance cannot be less than {self.detector_distance_minimum} mm") - logger.warning(f"Requested detector distance {value} is less than minimum: {self.__dtz_llm}, setting to minimum") - value = self.__dtz_llm + self.dtz_mod - if value > self.__dtz_hlm: - logger.warning(f"Requested detector distance {value} is greater than maximum: {self.__dtz_hlm}, setting to maximum") - value = self.__dtz_hlm - self.dtz_mod + logger.warning(f"Requested detector distance {value} is less than minimum: {self.__dtz.low_limit}, setting to minimum") + value = self.__dtz.low_limit + self.dtz_mod + if value > self.__dtz.high_limit: + logger.warning(f"Requested detector distance {value} is greater than maximum: {self.__dtz.high_limit}, setting to maximum") + value = self.__dtz.high_limit - self.dtz_mod if wait: status = self.bec_worker.det_z(value, timeout=60) return status @@ -288,11 +286,13 @@ class BeamlineDevices: @property def dtz_low(self) -> float: - return self.__dtz_llm + logger.info(f"dtz_low: {self.__dtz.low_limit}") + return self.__dtz.low_limit @property def dtz_high(self) -> float: - return self.__dtz_hlm + logger.info(f"dtz_high: {self.__dtz.high_limit}") + return self.__dtz.high_limit @property def aerotech_pos(self) -> AerotechCoordinate: