updates calculation of offset calibrated field magnitude Babs

This commit is contained in:
2026-06-09 14:21:22 +02:00
committed by zolliker
parent 74611ac7b2
commit 903ea1c113
2 changed files with 31 additions and 25 deletions
+8 -8
View File
@@ -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,
)
+23 -17
View File
@@ -604,7 +604,26 @@ class Compressor(Channel, Drivable):
self.sendcmd('Set:Compressor:Reset <CH>')
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)