Stills keep an overloaded observation as a lower bound instead of dropping it

The stills merge dropped every observation with a saturated pixel. On a still the saturated
observations are the fully recorded ones of the strongest low-resolution reflections, so what
survived were their partial observations, whose partiality correction then set the merged
intensity: on clipped CCD stills the merged low-resolution intensities came out at 0.4-0.6x of
the deposited ones, a ramp no Wilson B absorbs, invisible to CC1/2 and R_split.

The pixels are really clipped (flat-topped plateaus a few per mille wide, a pile-up in the
pixel-value histogram from the per-pixel ADC limit), so the auto ceiling is right; the drop was
the defect. A still now keeps the observation: the box sum with every saturated pixel counted at
the saturation limit, unflagged and marked clipped, counted in BraggIntegrationCounts and
reported as OVERLOADED_REFLECTIONS_KEPT. Rotation data (IsRotationIndexing) are unchanged and
keep the flag for the rocking-event drop.

Measured on a clipped-CCD stills subset (dimple R-free, deposited free set): dropped 0.247,
lower bound 0.230 (same as switching saturation off). A Kabsch fit to the unsaturated wings read
lower than the lower bound (0.237), and inflating the lower bound's sigma lost (0.255).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
leonarski_fandClaude Opus 5.5 committed 2026-10-22 10:36:33 +02:00
1 parent 987e812e23
commit 72cc542d78
15 files changed
+152 -20

No files matched your search

+2
View File
@@ -226,6 +226,7 @@ void MXAnalysisWithoutFPGA::Analyze(DataMessage &output,
probe_counts.profile_fallback += after.profile_fallback - before.profile_fallback;
probe_counts.overlapped += after.overlapped - before.overlapped;
probe_counts.overlapped_major += after.overlapped_major - before.overlapped_major;
probe_counts.overloads_kept += after.overloads_kept - before.overloads_kept;
return ret;
};
@@ -484,6 +485,7 @@ BraggIntegrationCounts MXAnalysisWithoutFPGA::BraggCounts() const {
c.profile_fallback -= probe_counts.profile_fallback;
c.overlapped -= probe_counts.overlapped;
c.overlapped_major -= probe_counts.overlapped_major;
c.overloads_kept -= probe_counts.overloads_kept;
return c;
}