From 903ea1c1138426f5e9038366a52a0dad3eaadbe9 Mon Sep 17 00:00:00 2001 From: "Jonas A. Krieger" Date: Thu, 21 May 2026 10:31:16 +0200 Subject: [PATCH] updates calculation of offset calibrated field magnitude Babs --- cfg/main/flamemag_cfg.py | 16 ++++++++-------- frappy_psi/cryoltd.py | 40 +++++++++++++++++++++++----------------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/cfg/main/flamemag_cfg.py b/cfg/main/flamemag_cfg.py index 60161336..3ec49a33 100644 --- a/cfg/main/flamemag_cfg.py +++ b/cfg/main/flamemag_cfg.py @@ -41,7 +41,7 @@ Mod('B', ) Mod('Bx', - 'frappy_psi.cryoltd.ComponentField', + 'frappy_psi.cryoltd.CorrectedField', 'magnetic field x component', channel='VMX', main='main', @@ -55,10 +55,11 @@ Mod('Bx', max=23.0, ), tolerance=1.0, + offset=0.0, ) Mod('By', - 'frappy_psi.cryoltd.ComponentField', + 'frappy_psi.cryoltd.CorrectedField', 'magnetic field y component', channel='VMY', main='main', @@ -72,10 +73,11 @@ Mod('By', max=22.9, ), tolerance=1.0, + offset=0.0, ) Mod('Bz', - 'frappy_psi.cryoltd.ComponentField', + 'frappy_psi.cryoltd.CorrectedField', 'magnetic field z component', channel='VMZ', main='main', @@ -89,6 +91,7 @@ Mod('Bz', max=33.6, ), tolerance=1.0, + offset=0.0, ) Mod('compressorA', @@ -225,13 +228,10 @@ Mod('T_main_switch', main='main', ) -Mod('Calib', - 'frappy_psi.cryoltd.Absfield', '', +Mod('Babs', + 'frappy_psi.cryoltd.AbsField', '', main='B', bx='Bx', by='By', bz='Bz', - bx_offset=0.0, - by_offset=0.0, - bz_offset=0.0, ) diff --git a/frappy_psi/cryoltd.py b/frappy_psi/cryoltd.py index 2db87cd7..6506a17b 100644 --- a/frappy_psi/cryoltd.py +++ b/frappy_psi/cryoltd.py @@ -604,7 +604,26 @@ class Compressor(Channel, Drivable): self.sendcmd('Set:Compressor:Reset ') self._error_text = '' -class Absfield(Readable): +class CorrectedField(ComponentField): + """ + A component field, that keeps track of a calibration offset + """ + offset = Parameter('hysteresis offset=raw value - corrected value', FloatRange(unit='G'), + readonly=False, default=0.0) + corrected = Parameter('corrected value', FloatRange(unit='G'), + default=0.0) + + + # def read_value(self): + # value = super().read_value() + # self.corrected = value - self.offset + # return value + + def read_corrected(self): + return self.value- self.offset + + +class AbsField(Readable): """ Keep track of the magnet hysteresis and provide corrected readbacks """ @@ -613,22 +632,9 @@ class Absfield(Readable): by = Attached() bz = Attached() - bx_offset = Parameter('Hysteresis offset for Bx', FloatRange(unit='G'), - readonly=False, default=0.0) - by_offset = Parameter('Hysteresis offset for By', FloatRange(unit='G'), - readonly=False, default=0.0) - bz_offset = Parameter('Hysteresis offset for Bz', FloatRange(unit='G'), - readonly=False, default=0.0) - - - calib_bx = Parameter('hysteresis-corrected Bx', FloatRange(unit='G')) - calib_by = Parameter('hysteresis-corrected By', FloatRange(unit='G')) - calib_bz = Parameter('hysteresis-corrected Bz+B', FloatRange(unit='G')) + Blong = Parameter('hysteresis-corrected Bz+B', FloatRange(unit='G')) value = Parameter('hysteresis-corrected total magnitude of the field', FloatRange(unit='G')) def read_value(self): - self.calib_bx = self.bx.value - self.bx_offset - self.calib_by = self.by.value - self.by_offset - self.calib_bz = self.bz.value+self.main.value - self.bz_offset - - return sqrt(self.calib_bz ** 2 + self.calib_by** 2 + self.calib_bx** 2) + self.Blong = self.bz.corrected+self.main.value + return sqrt(self.Blong ** 2 + self.by.corrected** 2 + self.bx.corrected** 2)