From c8d28a89211d9ea30481063754a5ea8073dea2e5 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Sat, 29 Nov 2025 19:02:57 +0100 Subject: [PATCH] RotationIndexer: Add resulting data --- image_analysis/RotationIndexer.cpp | 12 ++++++++---- image_analysis/RotationIndexer.h | 8 ++++---- tools/jfjoch_indexing_test.cpp | 16 ++++++++-------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/image_analysis/RotationIndexer.cpp b/image_analysis/RotationIndexer.cpp index f4be2a0e..b654ade7 100644 --- a/image_analysis/RotationIndexer.cpp +++ b/image_analysis/RotationIndexer.cpp @@ -102,7 +102,7 @@ void RotationIndexer::TryIndex() { } } -std::optional RotationIndexer::ProcessImage(int64_t image, const std::vector &spots) { +std::optional RotationIndexer::ProcessImage(int64_t image, const std::vector &spots) { std::unique_lock ul(m); // For non-rotation just ignore the whole procedure @@ -142,7 +142,7 @@ std::optional RotationIndexer::ProcessImage(int64_t i }; if (XtalOptimizer(data, spots)) - return RotatinIndexerImageResult{ + return RotationIndexerResult{ .lattice = data.latt, .search_result = search_result_, .geom = data.geom @@ -152,8 +152,12 @@ std::optional RotationIndexer::ProcessImage(int64_t i } -std::optional RotationIndexer::Finalize(bool retry) { +std::optional RotationIndexer::Finalize(bool retry) { if (!indexed_lattice || retry) TryIndex(); - return indexed_lattice; + return RotationIndexerResult{ + .lattice = indexed_lattice.value(), + .search_result = search_result_, + .geom = geom_ + }; } diff --git a/image_analysis/RotationIndexer.h b/image_analysis/RotationIndexer.h index 1be994e1..44339ec6 100644 --- a/image_analysis/RotationIndexer.h +++ b/image_analysis/RotationIndexer.h @@ -18,7 +18,7 @@ // 3. If indexing is successful - lattice is provided that is used by subsequent images // 4. If indexing is not-successful - accumulation procedure is continued -struct RotatinIndexerImageResult { +struct RotationIndexerResult { CrystalLattice lattice; LatticeSearchResult search_result; DiffractionGeometry geom; @@ -28,7 +28,7 @@ class RotationIndexer { mutable std::mutex m; const DiffractionExperiment& experiment; - constexpr static int64_t max_spots = 32768; + constexpr static int64_t max_spots = 60000; constexpr static float min_accum_angle_deg = 20.0; constexpr static float stride_angle_deg = 0.5; constexpr static int64_t min_images_for_indexing = 10; @@ -57,8 +57,8 @@ class RotationIndexer { 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 ProcessImage(int64_t image, const std::vector& spots); + std::optional Finalize(bool retry); }; diff --git a/tools/jfjoch_indexing_test.cpp b/tools/jfjoch_indexing_test.cpp index b484af5c..b8bb3909 100644 --- a/tools/jfjoch_indexing_test.cpp +++ b/tools/jfjoch_indexing_test.cpp @@ -61,19 +61,19 @@ int main(int argc, char** argv) { } auto latt_1 = rot_index.Finalize(false); if (latt_1) { - auto uc = latt_1->GetUnitCell(); + auto uc = latt_1->lattice.GetUnitCell(); logger.Info("Unit cell {} {} {} {} {} {}", uc.a, uc.b, uc.c, uc.alpha, uc.beta, uc.gamma); - logger.Info("Latt1 {} {} {}", latt_1->Vec0().x, latt_1->Vec0().y, latt_1->Vec0().z); - logger.Info("Latt1 {} {} {}", latt_1->Vec1().x, latt_1->Vec1().y, latt_1->Vec1().z); - logger.Info("Latt1 {} {} {}", latt_1->Vec2().x, latt_1->Vec2().y, latt_1->Vec2().z); + logger.Info("Latt1 {} {} {}", latt_1->lattice.Vec0().x, latt_1->lattice.Vec0().y, latt_1->lattice.Vec0().z); + logger.Info("Latt1 {} {} {}", latt_1->lattice.Vec1().x, latt_1->lattice.Vec1().y, latt_1->lattice.Vec1().z); + logger.Info("Latt1 {} {} {}", latt_1->lattice.Vec2().x, latt_1->lattice.Vec2().y, latt_1->lattice.Vec2().z); } auto latt_2 = rot_index.Finalize(true); if (latt_2) { - auto uc = latt_2->GetUnitCell(); + auto uc = latt_2->lattice.GetUnitCell(); logger.Info("Unit cell {} {} {} {} {} {}", uc.a, uc.b, uc.c, uc.alpha, uc.beta, uc.gamma); - logger.Info("Latt1 {} {} {}", latt_2->Vec0().x, latt_2->Vec0().y, latt_2->Vec0().z); - logger.Info("Latt1 {} {} {}", latt_2->Vec1().x, latt_2->Vec1().y, latt_2->Vec1().z); - logger.Info("Latt1 {} {} {}", latt_2->Vec2().x, latt_2->Vec2().y, latt_2->Vec2().z); + logger.Info("Latt1 {} {} {}", latt_2->lattice.Vec0().x, latt_2->lattice.Vec0().y, latt_2->lattice.Vec0().z); + logger.Info("Latt1 {} {} {}", latt_2->lattice.Vec1().x, latt_2->lattice.Vec1().y, latt_2->lattice.Vec1().z); + logger.Info("Latt1 {} {} {}", latt_2->lattice.Vec2().x, latt_2->lattice.Vec2().y, latt_2->lattice.Vec2().z); } } \ No newline at end of file