e26083f039b2a186a04d270e271c4822f4f061a3
Two things the pre-scan did regardless of what was asked of it. The spot width is read off the geometry as it stands. Candidates are excluded within MIN_BEAM_DISTANCE_PX of the beam centre and stratified into resolution bands about it, so with --estimate-beam-center the width was measured against the centre the pass was in the middle of correcting - a placeholder header centre both selects a different set of spots and labels them at the wrong resolution - and spot_width_measured_ then stopped the corrected pass from ever revisiting it. The width is now left to the second pass where one follows, which starts from the corrected centre; a run with no second pass measures it as before, a provisional radius being better than none. ShadowFinder::AddImage projects the whole image and ran for every frame of the shadow sample whether or not a shadow was wanted - with --detect-beam-stop=off, or on the second pass where the mask already holds one, that is the pass's largest per-frame cost paid for a result nobody reads. Now gated on want_shadow. The frame set is unchanged, so the mask is still built from the frames it was validated on. Gating it exposed the read-failure guard below, which asked the shadow finder how many frames it had seen. With the finder no longer fed, a pass that read every frame for the beam centre alone would have reported "no image could be read" and returned before placing it. Frames read are now counted directly. Inert on the shipped defaults, as intended: --estimate-beam-center is off by default, so the width deferral cannot fire, and the projection is wanted on the first pass. Verified by building the parent commit and this one and running eight crystals of the rotation battery through both at -N 10: every column identical - space group, unique reflections, observations, completeness, R_meas, CC1/2, <I/sigma> - on all eight. Warm-cache wall clock 1m03s against 1m02s, i.e. a wash; the saving only falls on passes that were discarding the result anyway. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016L1qig74oYQzfUJJZbbxFh
Jungfraujoch
Application to receive data from the PSI JUNGFRAU and EIGER detectors.
All documentation is now placed in docs/ subdirectory and for the current version hosted on Jungfraujoch Read The Docs page.
Languages
C++
75.4%
HTML
7.5%
C
6%
TypeScript
4.2%
Cuda
2.2%
Other
4.6%