There are different overbiasing methods that use different configurations:
- bias_to_rfrac uses util. overbias_dets
|
sdl.overbias_dets(S, cfg, bias_groups=bias_groups) |
- This uses per-bias group settings from
cfg.dev.bias_groups, namely overbias_voltage and cool_voltage, as well as cfg.dev.exp['overbias_wait']. As applied, the voltage values must be specified in actual Volts.
- This uses the pysmurf function
S.set_tes_bias_bipolar
- Sidenote: cool_voltage is used in a confusing way here, where it gets applied in high current mode, but then (if
high_current_mode=False, which it is by default) it switches to low current mode with const_current = False. This means either (a) cool_voltage is applying more power than we want it to, or (b) there's a sudden drop in power that could potentially latch detectors.
- take_iv uses the pysmurf function
S.overbias_tes_all , wrapped in a helper function overbias_and_sweep
- This uses settings from
cfg.dev.exp['iv_defaults'] for overbias_voltage, overbias_wait, cool_wait, and cool_voltage.
cool_voltage is only applied if the IV is run serially over bias_groups. I have no idea why. But at least it gets applied in low current mode.
- S.overbias_tes_all does not take per-bias line values; it only accepts floats that get applied to all specified bias lines.
This is confusing. The overbiasing that happens for an IV curve and the overbiasing that happens for biasing the detectors in transition is the same process and should be identical between steps, and therefore should only be specified in one place (the need for IV curve to have a large bias_high, in order to have a long enough normal branch to fit Rn, is a distinct step separate from driving the TESs normal). Also, more granular control over per-bias lines is better than being forced to apply the same values to every bias line.
So, I propose that:
- take_iv be moved to use
util.overbias_dets
- The current mode switch in
util.overbias_dets be moved to after setting the bias to cool_voltage.
- The overbias parameters be moved out of
cfg.dev.exp['iv_defaults'] and into cfg.dev.bias_groups, where they are specified per-bias group. Also move overbias_wait here, so that it's not off on its own.
a. This will have a side-effect of making scheduler calls to take_iv less flexible, as these parameters won't be accessible. I can think about that more though.
There are different overbiasing methods that use different configurations:
sodetlib/sodetlib/operations/bias_dets.py
Line 139 in 04e2791
cfg.dev.bias_groups, namelyoverbias_voltageandcool_voltage, as well ascfg.dev.exp['overbias_wait']. As applied, the voltage values must be specified in actual Volts.S.set_tes_bias_bipolarhigh_current_mode=False, which it is by default) it switches to low current mode withconst_current = False. This means either (a) cool_voltage is applying more power than we want it to, or (b) there's a sudden drop in power that could potentially latch detectors.S.overbias_tes_all, wrapped in a helper functionoverbias_and_sweepsodetlib/sodetlib/operations/iv.py
Line 639 in 04e2791
cfg.dev.exp['iv_defaults']for overbias_voltage, overbias_wait, cool_wait, and cool_voltage.cool_voltageis only applied if the IV is run serially over bias_groups. I have no idea why. But at least it gets applied in low current mode.This is confusing. The overbiasing that happens for an IV curve and the overbiasing that happens for biasing the detectors in transition is the same process and should be identical between steps, and therefore should only be specified in one place (the need for IV curve to have a large bias_high, in order to have a long enough normal branch to fit Rn, is a distinct step separate from driving the TESs normal). Also, more granular control over per-bias lines is better than being forced to apply the same values to every bias line.
So, I propose that:
util.overbias_detsutil.overbias_detsbe moved to after setting the bias tocool_voltage.cfg.dev.exp['iv_defaults']and intocfg.dev.bias_groups, where they are specified per-bias group. Also moveoverbias_waithere, so that it's not off on its own.a. This will have a side-effect of making scheduler calls to take_iv less flexible, as these parameters won't be accessible. I can think about that more though.