From 70a03b87ffa711fa5dceab8857a1d69e4b5711e4 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Sat, 29 Nov 2025 20:21:26 +0100 Subject: [PATCH] IndexingSettings: Add rotation indexer specific settings --- common/IndexingSettings.cpp | 31 +++++++++++++++++++++++++++++++ common/IndexingSettings.h | 11 +++++++++++ 2 files changed, 42 insertions(+) diff --git a/common/IndexingSettings.cpp b/common/IndexingSettings.cpp index d36cca4e..a3b9588d 100644 --- a/common/IndexingSettings.cpp +++ b/common/IndexingSettings.cpp @@ -166,6 +166,37 @@ IndexingSettings & IndexingSettings::IndexIceRings(bool input) { return *this; } +IndexingSettings & IndexingSettings::RotationIndexing(bool input) { + enable_rotation_indexing = input; + return*this; +} + +IndexingSettings & IndexingSettings::RotationIndexingMinAngularRange_deg(float input) { + check_finite("Rotation indexing minimum angular range (deg.)", input); + check_min("Rotation indexing minimum angular range (deg.)", input, 1.0); + rotation_indexing_min_angular_range_deg = input; + return *this; +} + +IndexingSettings & IndexingSettings::RotationIndexingAngularStride_deg(float input) { + check_finite("Rotation indexing angular stride (deg.)", input); + check_min("Rotation indexing angular stride (deg.)", input, 0.0); + rotation_indexing_angular_stride_deg = input; + return *this; +} + +bool IndexingSettings::GetRotationIndexing() const { + return enable_rotation_indexing; +} + +float IndexingSettings::GetRotationIndexingMinAngularRange_deg() const { + return rotation_indexing_min_angular_range_deg; +} + +float IndexingSettings::GetRotationIndexingAngularStride_deg() const { + return rotation_indexing_angular_stride_deg; +} + bool IndexingSettings::GetIndexIceRings() const { return index_ice_rings; } diff --git a/common/IndexingSettings.h b/common/IndexingSettings.h index 0fd86b87..fe14db96 100644 --- a/common/IndexingSettings.h +++ b/common/IndexingSettings.h @@ -24,6 +24,11 @@ class IndexingSettings { int64_t viable_cell_min_spots = 9; bool index_ice_rings = false; + + bool enable_rotation_indexing = false; + float rotation_indexing_min_angular_range_deg = 20.0; + float rotation_indexing_angular_stride_deg = 0.5; + GeomRefinementAlgorithmEnum refinement = GeomRefinementAlgorithmEnum::BeamCenter; public: IndexingSettings(); @@ -41,6 +46,9 @@ public: IndexingSettings& UnitCellDistTolerance(float input); IndexingSettings& GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum input); IndexingSettings& IndexIceRings(bool input); + IndexingSettings& RotationIndexing(bool input); + IndexingSettings& RotationIndexingMinAngularRange_deg(float input); + IndexingSettings& RotationIndexingAngularStride_deg(float input); [[nodiscard]] int64_t GetViableCellMinSpots() const; [[nodiscard]] IndexingAlgorithmEnum GetAlgorithm() const; @@ -55,6 +63,9 @@ public: [[nodiscard]] int64_t GetIndexingThreads() const; [[nodiscard]] float GetUnitCellDistTolerance() const; [[nodiscard]] bool GetIndexIceRings() const; + [[nodiscard]] bool GetRotationIndexing() const; + [[nodiscard]] float GetRotationIndexingMinAngularRange_deg() const; + [[nodiscard]] float GetRotationIndexingAngularStride_deg() const; };