Skip to content

Occasional bad tracking bands after uxm relock #504

@dpdutcher

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions