jfjoch_broker: Fixes around indexing, aiming to handle multi-lattice crystals (work in progress, it is not fully integrated)
jfjoch_writer: Save mean(I), stddev(I), and count(I) for each azimuthal bin
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144.
* jfjoch_broker: Improve azimuthal integration (add <I^2> calculation)
* jfjoch_broker: Fixes around indexing, aiming to handle multi-lattice crystals (work in progress, it is not fully integrated)
* jfjoch_writer: Save mean(I), stddev(I), and count(I) for each azimuthal bin
Members are constructed in declaration order, not initializer-list
order. azint_bins and npixel were computed from the integration
reference before that reference member was bound, which is undefined
behavior and could leave both with garbage values (propagating to
GPU buffer sizes). Reorder declarations so integration is bound first.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The GPU kernels exclude sentinel pixels (saturated/masked), but the
CPU path summed them blindly, corrupting the azimuthal integration
result and diverging from the GPU output. Skip them on the CPU too,
deriving the sentinels from the pixel type via std::numeric_limits:
the max value (saturated) for any type, plus the min value
(masked/bad) for signed types.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
cudaGetDeviceProperties and the two host-to-device cudaMemcpy calls
in the constructor were not error-checked, unlike the calls in Run().
Wrap them in cuda_err() so failures throw instead of passing silently.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This is an UNSTABLE release. The release has significant modifications for data processing - in case of troubles go back to 1.0.0-rc.144.