From 448552ee32be8f3b122ee424c252b648acc19a1b Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Mon, 1 Dec 2025 20:05:56 +0100 Subject: [PATCH] JFJochReceiver: Don't retry to get rotation indexing solution if it is already found --- image_analysis/IndexAndRefine.cpp | 4 ++-- image_analysis/IndexAndRefine.h | 2 +- image_analysis/RotationIndexer.cpp | 6 +++--- image_analysis/RotationIndexer.h | 2 +- receiver/JFJochReceiver.cpp | 2 +- tests/RotationIndexerTest.cpp | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/image_analysis/IndexAndRefine.cpp b/image_analysis/IndexAndRefine.cpp index 85564ffd..4f500567 100644 --- a/image_analysis/IndexAndRefine.cpp +++ b/image_analysis/IndexAndRefine.cpp @@ -156,8 +156,8 @@ void IndexAndRefine::ProcessImage(DataMessage &msg, } } -std::optional IndexAndRefine::Finalize(bool retry) { +std::optional IndexAndRefine::Finalize() { if (rotation_indexer) - return rotation_indexer->Finalize(retry); + return rotation_indexer->Finalize(); return {}; } diff --git a/image_analysis/IndexAndRefine.h b/image_analysis/IndexAndRefine.h index 0f186ad6..d2a7eeeb 100644 --- a/image_analysis/IndexAndRefine.h +++ b/image_analysis/IndexAndRefine.h @@ -29,7 +29,7 @@ public: IndexAndRefine(const DiffractionExperiment &x, IndexerThreadPool *indexer); void SetLattice(const CrystalLattice &lattice); void ProcessImage(DataMessage &msg, const SpotFindingSettings &settings, const CompressedImage &image, BraggPrediction &prediction); - std::optional Finalize(bool retry); + std::optional Finalize(); }; diff --git a/image_analysis/RotationIndexer.cpp b/image_analysis/RotationIndexer.cpp index 9743a42c..2c1eb498 100644 --- a/image_analysis/RotationIndexer.cpp +++ b/image_analysis/RotationIndexer.cpp @@ -111,7 +111,7 @@ std::optional RotationIndexer::ProcessImage(int64_t image const auto rot = axis_->GetTransformation(image); - if (image >= last_accumulated_image + image_stride) { + if (!indexed_lattice && image >= last_accumulated_image + image_stride) { v_.reserve(v_.size() + spots.size()); coords_.reserve(coords_.size() + spots.size()); @@ -143,8 +143,8 @@ std::optional RotationIndexer::ProcessImage(int64_t image return {}; } -std::optional RotationIndexer::Finalize(bool retry) { - if (!indexed_lattice || retry) +std::optional RotationIndexer::Finalize() { + if (!indexed_lattice) TryIndex(); if (!indexed_lattice) return std::nullopt; diff --git a/image_analysis/RotationIndexer.h b/image_analysis/RotationIndexer.h index 3cf4cb6a..0ff6e59c 100644 --- a/image_analysis/RotationIndexer.h +++ b/image_analysis/RotationIndexer.h @@ -56,7 +56,7 @@ public: RotationIndexer(const DiffractionExperiment& x, IndexerThreadPool& indexer); void SetLattice(const CrystalLattice &lattice); std::optional ProcessImage(int64_t image, const std::vector& spots); - std::optional Finalize(bool retry); + std::optional Finalize(); }; #endif //JFJOCH_ROTATIONINDEXER_H \ No newline at end of file diff --git a/receiver/JFJochReceiver.cpp b/receiver/JFJochReceiver.cpp index e474e9d2..ad25b042 100644 --- a/receiver/JFJochReceiver.cpp +++ b/receiver/JFJochReceiver.cpp @@ -154,7 +154,7 @@ void JFJochReceiver::SendEndMessage() { message.az_int_result["dataset"] = plots.GetAzIntProfile(); - const auto rotation_indexer_ret = indexer.Finalize(true); + const auto rotation_indexer_ret = indexer.Finalize(); if (rotation_indexer_ret.has_value()) { message.rotation_lattice = rotation_indexer_ret->lattice; message.rotation_lattice_type = LatticeMessage{ diff --git a/tests/RotationIndexerTest.cpp b/tests/RotationIndexerTest.cpp index 65fc5ee3..a0498748 100644 --- a/tests/RotationIndexerTest.cpp +++ b/tests/RotationIndexerTest.cpp @@ -74,7 +74,7 @@ TEST_CASE("RotationIndexer") { CHECK(cnt == 20); - auto ret = indexer.Finalize(false); + auto ret = indexer.Finalize(); REQUIRE(ret.has_value()); auto uc = ret->lattice.GetUnitCell(); auto uc_ref = latt_base.GetUnitCell();