Files
leonarski_f 774357818f
Build Packages / Create release (push) Successful in 7s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 5m15s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 9m23s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 18m4s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 22m46s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 22m53s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 23m46s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 26m46s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 27m34s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 28m34s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 29m42s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 22m46s
Build Packages / Generate python client (push) Successful in 31s
Build Packages / Build documentation (push) Successful in 1m10s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 23m22s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 26m58s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 28m33s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 23m21s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 26m13s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 28m8s
Build Packages / Unit tests (push) Successful in 1h32m27s
Build Packages / Validation Battery (push) Successful in 33m19s
Metal integration engine: with the frame's curve, the correction over the pixels read, at their 2 theta, as on the CPU
Mirrors fac2a1742 in the Metal engine, which since d0b4de2bd runs frames with a handed-over curve
itself and so differed from the CPU engine there:
- box_sums sums the curve over the readable disk pixels and over the ring pixels behind the
  background, clip_sums over the pixels the clip keeps, in whole 1/BRAGG_CURVE_FIXED counts
  (curve_fixed = CurveFixed); integer sums, so independent of visit order;
- the curve is read at each reflection's CurveRadius (computed on the host, buffer curve_r), and the
  clip offset follows it there instead of at the distance from the PONI.
The sums travel in the shared pass-A structs (BraggBoxSums::curve_disk/curve_ring, 96 -> 112 bytes;
BraggClipSums::curve, 16 -> 24 bytes), which the CPU engine now fills instead of three locals, and
the correction (BraggCurveCorrection, double) moved from RunImpl into FinishPassA, which the Metal
engine already calls with the kernels' sums - so the GPU does no double arithmetic and the CPU's
result is unchanged.

Tests: [Metal] ShadowEdgeBitIdenticalToCPU (the beam-stop shadow on a tilted detector of
BraggIntegrationEngineCPU_RadialCurveOverThePixelsRead, 48 reflections, box sum and Gaussian fit);
[portable] ShadowEdgeReachesItsModes (CPU: beam off the PONI, rings next to the shadow lose pixels,
the correction cuts the background error from ~3 counts to below 0.6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu
(cherry picked from commit 7af57c66da67fcb8d56f6f90278e57fa11075ff9)
2026-10-24 12:38:08 +02:00
..
2026-10-16 15:34:43 +02:00
2026-06-08 08:30:35 +02:00
2026-09-29 15:57:32 +02:00
2026-10-16 15:34:43 +02:00
2026-10-19 07:03:28 +02:00
2026-10-16 15:34:43 +02:00
2026-09-22 06:48:37 +02:00
2026-09-29 15:57:32 +02:00
2026-09-29 15:57:32 +02:00
2026-07-03 19:18:56 +02:00
2026-10-21 11:20:01 +02:00
2026-09-22 06:48:37 +02:00
2026-09-29 15:57:32 +02:00
2026-10-19 07:03:28 +02:00
2026-10-19 07:03:28 +02:00