Skip to content

Need a way to bookkeep fixed_tones and keep them on #430

@msilvafe

Description

@msilvafe

@swh76 has requested (a few times now) that we automate/integrate a standardized way to keep around fixed tones in the sodetlib standard operations to monitor background/environmental phase drifts that may couple into our data. @tristpinsm has volunteered to look into (and implement) this so I'm posting this issue here with what I think is holding us back from that at the moment and what I think would need to be added in order to get this into main.

Fixed tones can be used to track the background phase shifts in the cables and smurf warm electronics (see this paper for reference). They are additional probe tones turned on at locations where there are no cryogenic resonances and they have their feedback parameters disabled which then returns the I/Q stream at each fixed tone location since there's no resonator inducing a frequency shift the variation in the angle arctan(Q/I) comes from changes in the background phase delay (in the coaxial cabling and smurf electronics). To turn them on we need to modify some of the come sodetlib tuning functions to acknowledge the presence of fixed tones so that they're not turned off and get their feedback properly reset to disabled whenever relocking occurs. I think this basically would go as follows:

  1. Normal UFM setup
sodetlib.uxm_setup.setup_amps(<normal_args>)
sodetlib.uxm_setup.setup_phase_delay(<normal_args>)
sodetlib.uxm_setup.setup_tune(<normal_args>)
  1. Then turn on fixed tones and keep track of them
fixed_tones = np.zeros((8, 512)).astype(bool)
for fr in fixed_tone_frequencies:
    band, channel = S.set_fixed_tone(fr, tone_power=10)
    fixed_tones[band, channel] = True
  1. Then setup tracking, which needs to now take an additional argument fixed_tones which does not turn these off at the df & fptp.
fixed_tones = True for that band/channel
sodetlib.tracking.setup_tracking_params(<normal_args>, fixed_tones)
  1. For the tones that don't get turned off additionally we must reset their feedback to disabled after tracking setup is run as follows:
for band in bands:
    fea = S.get_feedback_enable_array(band)
    fea[fixed_tones[band]] = 0
    S.set_feedback_enable_array(band, fea)

The key steps are 3 and 4. Probably the fixed_tones boolean mask and/or the fixed_tone_frequencies should be stored in the device_cfg file. And if 4 is incorporated into a modification of sodetlib.tracking.setup_tracking_params then step 1 could be replaced with sodetlib.uxm_setup.uxm_setup if uxm_setup is also modified to take in the fixed tones and implement step 2. Relock will also need to be modified because the tune_file will not have the fixed tones in it so after load_tune is called step 2 will need to be run again right before the tracking step.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions