From 52d97b2d292cb57e7b8e20d8fb0dc7c755491754 Mon Sep 17 00:00:00 2001 From: x01da Date: Tue, 2 Jun 2026 13:24:14 +0200 Subject: [PATCH] fix: mo1_bragg calculator --- debye_bec/devices/mo1_bragg/mo1_bragg.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/debye_bec/devices/mo1_bragg/mo1_bragg.py b/debye_bec/devices/mo1_bragg/mo1_bragg.py index 2c673f7..ac5b85a 100644 --- a/debye_bec/devices/mo1_bragg/mo1_bragg.py +++ b/debye_bec/devices/mo1_bragg/mo1_bragg.py @@ -416,25 +416,31 @@ class Mo1Bragg(PSIDeviceBase, Mo1BraggPositioner): Returns: output (float): Converted angle or energy """ + self.calculator.calc_reset.put(0) self.calculator.calc_reset.put(1) status = CompareStatus(self.calculator.calc_done, 0) self.cancel_on_stop(status) status.wait(self.timeout_for_pvwait) + self.calculator.calc_reset.put(0) if mode == "AngleToEnergy": - self.calculator.calc_angle.put(inp) + in_signal = self.calculator.calc_angle + out_signal = self.calculator.calc_energy elif mode == "EnergyToAngle": - self.calculator.calc_energy.put(inp) + in_signal = self.calculator.calc_energy + out_signal = self.calculator.calc_angle + else: + raise Mo1BraggError(f'Unknown mode {mode}') + in_signal.put(inp) status = CompareStatus(self.calculator.calc_done, 1) self.cancel_on_stop(status) status.wait(self.timeout_for_pvwait) - time.sleep(0.25) # TODO needed still? Needed due to update frequency of softIOC - if mode == "AngleToEnergy": - return self.calculator.calc_energy.get() - elif mode == "EnergyToAngle": - return self.calculator.calc_angle.get() + status = CompareStatus(out_signal, 0, operation_success='>') + self.cancel_on_stop(status) + status.wait(self.timeout_for_pvwait) + return out_signal.get() def set_advanced_xas_settings( self, low: float, high: float, scan_time: float, p_kink: float, e_kink: float