diff --git a/image_analysis/IndexAndRefine.cpp b/image_analysis/IndexAndRefine.cpp index 1762839be..b3a285854 100644 --- a/image_analysis/IndexAndRefine.cpp +++ b/image_analysis/IndexAndRefine.cpp @@ -212,10 +212,17 @@ IndexAndRefine::IndexingOutcome IndexAndRefine::DetermineLatticeAndSymmetry(Data // hypothesis against the file's geometry - which is why a centre once scored 42/60 as a trial and // 5/60 when the same value was given on the command line. const DiffractionGeometry geom = experiment.GetDiffractionGeometry(); + // ffbidx fits a known cell with a trimmed score that already discounts the spots off the lattice, so + // the lean seed that rescues a de-novo search on a flooded frame buys it nothing - measured, a single + // call with every spot indexes the same frames and gives the merge more observations - while the + // escalation cost it up to three calls a frame. + const std::vector seed_caps = experiment.GetIndexingAlgorithm() == IndexingAlgorithmEnum::FFBIDX + ? std::vector{std::numeric_limits::max()} + : std::vector{30, 80, std::numeric_limits::max()}; if (frame_calls && frame_calls->lattice_found) { indexer_result = *frame_calls->lattice_found; any_executed = true; - } else for (size_t seed_cap : {size_t{30}, size_t{80}, std::numeric_limits::max()}) { + } else for (size_t seed_cap : seed_caps) { std::vector recip; recip.reserve(std::min(seed_cap, msg.spots.size())); for (const auto &i: msg.spots) {