fc358720ede5cc9b9b020e77bc7fd503d1ff0cac
The first non-search merge on an ingest was made both ways (partials scaled, and the scale from the fulls alone) and PartialScalingWins picked one. When the prior is to scale the partials and that merge resolves its error model, the decision is the prior whatever the other arm says, so the fulls-alone merge was a whole final merge thrown away - 16% of all scaling time over the battery (238 of 258 decisions), e.g. ~1.5 s of a 22 s GPU run on an in-house cytochrome C set, 8-13 s on the largest open-arm sets. That arm is now made only when the partials' merge fails to resolve its error model (then the old sequence runs unchanged) or when the prior is the fulls (small molecules; unchanged). The partials' arm starts from g_partial = 1, the only state the fulls-alone arm left for the arm after it (corr is restored, g_full reset by the combine, device g/scaled cleared per call, the sweep / rejection / damage diagnostics reset where they are measured), so the merge is bit-identical to the one the pair returned. The log's decision line no longer quotes the fulls-alone ISa when that merge is not made. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K5K8jvPPbmCrbqnWkddTuB
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++
77.9%
HTML
6%
C
4.7%
TypeScript
3.4%
Cuda
3%
Other
4.9%