diff --git a/rugnux/Rugnux.cpp b/rugnux/Rugnux.cpp index 64980519..cf3b0308 100644 --- a/rugnux/Rugnux.cpp +++ b/rugnux/Rugnux.cpp @@ -40,6 +40,7 @@ #include "../image_analysis/lattice_search/LatticeSearch.h" #include "../image_analysis/scale_merge/TwinningAnalysis.h" #include "../image_analysis/scale_merge/HKLKey.h" +#include "../image_analysis/scale_merge/ScaleOnTheFly.h" #include "../image_analysis/scale_merge/StillsPartialityRefine.h" #include "../image_analysis/WriteReflections.h" #include "../image_analysis/bragg_integration/CalcISigma.h" @@ -1127,6 +1128,13 @@ ProcessResult Rugnux::RunPipeline(RugnuxObserver *observer, bool write_output, b StillsPartialityRefine refiner(experiment_); const double mean_tilt = refiner.Run(indexer->GetIntegrationOutcome(), config_.nthreads); logger.Info("Stills partiality post-refine: mean |dpsi| = {:.3f} deg", mean_tilt); + // The refine fits its OWN per-image scale, with no floor, and adopts it unconditionally + // when the image has no prior CC - which is exactly the state the guard above leaves. So + // the guard was protecting nothing: measured on a jet dataset, of 367 images it left + // unscaled only 8 were still unscaled in the output, and 53 reached the merge at or below + // a fiftieth of the run median, the worst at a 4525th. Whatever produced the final scale, + // it is the final scale that has to be credible. + ScaleOnTheFly::RejectCollapsedScales(indexer->GetIntegrationOutcome()); } const std::vector &merge_input = indexer->GetIntegrationOutcome();