processing_time_s is set inside RunPipeline, so it measures one pass. A rotation
two-pass run integrates everything twice and the beam-stop / beam-centre
pre-scan happens before either pass, none of which the reported number saw: on
an 18 Mpx dataset it printed 7.58 s for a run that took 23.46 s.
Time the run in Run(), where every pass is inside, and report that. The last
pass is still printed alongside it when there was more than one, because the
gap between them is what the second pass costs. The frame rate and throughput
stay per-pass: they say how fast rugnux moves through images, which running a
second pass does not change.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>