Skip to content

Occasional bad tracking bands after uxm relock #504

Description

@dpdutcher

On the occasional uxm_relock, one or more bands on a given module will lose a large amount of good tracking channels. The official advice is to wait and see if they're recovered by the next uxm_relock. Note that uxm_relock does not disable bad tracking channels , so I don't think we're actually losing these channels, but if it happens on 2+ bands, then we will lose time while a relock is done.

Below is such a dropout happening on Uv41 band 2 before being recovered, and later a dropout on band 5.
Image

The drop of good resonators is the sudden decrease in r2 (tracking quality), which has a cutoff of r2>0.9. Here I plot the r2 histograms for band 2 for the relock where resonators dropped out ("Bad") as well as that of the "Good" relock immediately preceding it:

Image

Digging into this, I saw the tracking quality was computed over segments of the TOD defined by the pysmurf function make_sync_flags. This takes the sync signal of pysmurf (also called flux_ramp_strobe), which is 1 when the flux ramp is resetting and 0 when not, and identifies the starts+ends of those sync=1 blocks, though it only returns the start indices.
There is a rescaling of the x-axis, but for the bad relock, the sync flags are [ 0 149 299 449 599], and for the good relock they are [ 2 152 302 452 602].

Image

compute_tracking_quality chunks up the data based on these indices, with all chunks being made to have the length of the shortest chunk:

seg_size = np.min(np.diff(sync_idxs))

This is a problem when the data starts with the flux ramp resetting (sync_idxs[0] = 0), in which case the first segment will be shorter than the rest, and all subsequent segments will use the wrong length. Indeed this was the case in the Uv41 band 2 example above.

To try fixing this, I recomputed the tracking quality ignoring sync_idx=0, obtaining the following plot

Image

I repeated the same test on Uv56 band 2, which had a similar brief drop out of resonators:

Image

There may be a smarter way to catch this in the pysmurf function make_sync_flags, but for now, I think this can be fixed with a one-line edit to compute_tracking_quality. There is at least one other reference to make_sync_flags in tracking.py, but I don't think it's necessary to fix that instance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    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