e7ef72ba407578cca7fa1c2178f243c2bc2c0b81
A rotation frame records the part of a reflection's rocking curve inside its own oscillation, and while the crystal turns through the curve the spot walks along its Debye ring. The predictor put every partial at the exact diffracting condition, so a partial recorded on the curve's flank was integrated pixels away from where its flux landed. The walk is largest where the reflection moves nearly tangent to the Ewald sphere (low |zeta|), whose curves are widest. The prediction now turns S about the beam by the rotation's component along the ring times the flux-weighted centre of the frame's slice of the curve (a truncated-normal mean, RockingSlice.h), on the CPU and the GPU predictor alike. 2theta is unchanged; a frame that straddles the condition symmetrically gets no shift. Measured (observed r1 centroid minus prediction, tangential, I/sig > 10): against the slice model correlation 0.93-0.98 before, 0.0 after; residual rms 1.0-1.8 px -> 0.35-0.48 px at |zeta| < 0.3. Emulated capture of low-|zeta| partials at high angle 0.50 -> 0.94 of a 12 px aperture. CPU runs on four rotation sets (400-800 frames): R_meas -0.03..-0.09 pp, ISa +1.2..+1.8, rejected observations roughly halved, space groups unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D1G8gJVAy6gp1K5Dz3NE5C
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++
78.1%
HTML
6%
C
4.8%
TypeScript
3.5%
Cuda
2.7%
Other
4.8%