diff --git a/image_analysis/IndexAndRefine.cpp b/image_analysis/IndexAndRefine.cpp index 4bfc522b..df0e5eb5 100644 --- a/image_analysis/IndexAndRefine.cpp +++ b/image_analysis/IndexAndRefine.cpp @@ -18,11 +18,10 @@ IndexAndRefine::IndexAndRefine(const DiffractionExperiment &x, IndexerThreadPool geom_(x.GetDiffractionGeometry()), updated_geom_(geom_), indexer_(indexer) { - auto axis = x.GetGoniometer(); if (indexer && axis && x.GetIndexingSettings().GetRotationIndexing()) { - float angle_norm_deg = std::fabs(axis_->GetIncrement_deg()); + float angle_norm_deg = std::fabs(axis->GetIncrement_deg()); if (angle_norm_deg > 1e-6) { axis_ = axis; if (x.GetImageNum() > min_images_for_indexing) { @@ -108,9 +107,9 @@ void IndexAndRefine::TryIndexRotationData() { } void IndexAndRefine::ProcessImage(DataMessage &msg, - const SpotFindingSettings &spot_finding_settings, - const CompressedImage &image, - BraggPrediction &prediction) { + const SpotFindingSettings &spot_finding_settings, + const CompressedImage &image, + BraggPrediction &prediction) { if (!indexer_) return; @@ -267,11 +266,12 @@ std::optional IndexAndRefine::Finalize(bool retry) { if (!indexed_lattice || retry) TryIndexRotationData(); - return RotationIndexerResult{ - .lattice = indexed_lattice.value(), - .search_result = search_result_, - .geom = geom_ - }; + if (indexed_lattice) + return RotationIndexerResult{ + .lattice = indexed_lattice.value(), + .search_result = search_result_, + .geom = geom_ + }; } return {}; } diff --git a/image_analysis/IndexAndRefine.h b/image_analysis/IndexAndRefine.h index cc1be5c6..005292d2 100644 --- a/image_analysis/IndexAndRefine.h +++ b/image_analysis/IndexAndRefine.h @@ -48,8 +48,8 @@ class IndexAndRefine { IndexerThreadPool *indexer_; - int64_t image_stride; - int64_t first_image_to_try_indexing; + int64_t image_stride = 1; + int64_t first_image_to_try_indexing = INT64_MAX; void TryIndexRotationData(); public: diff --git a/tools/jfjoch_indexing_test.cpp b/tools/jfjoch_indexing_test.cpp index 8c4fbc85..d45daef5 100644 --- a/tools/jfjoch_indexing_test.cpp +++ b/tools/jfjoch_indexing_test.cpp @@ -24,7 +24,7 @@ int main(int argc, char** argv) { IndexingSettings indexing_settings; indexing_settings.Algorithm(IndexingAlgorithmEnum::FFT); indexing_settings.RotationIndexing(true); - + indexing_settings.GeomRefinementAlgorithm(GeomRefinementAlgorithmEnum::BeamCenter); DiffractionExperiment experiment(reader.GetDataset()->experiment); experiment.ImportIndexingSettings(indexing_settings); experiment.SetUnitCell({}); diff --git a/viewer/JFJochImageReadingWorker.cpp b/viewer/JFJochImageReadingWorker.cpp index 11fca80e..53dc3b26 100644 --- a/viewer/JFJochImageReadingWorker.cpp +++ b/viewer/JFJochImageReadingWorker.cpp @@ -101,8 +101,9 @@ void JFJochImageReadingWorker::LoadImage(int64_t image_number, int64_t summation void JFJochImageReadingWorker::UpdateAzint_i(const JFJochReaderDataset *dataset) { if (dataset) { azint_mapping = std::make_unique(curr_experiment, dataset->pixel_mask); + index_and_refine = std::make_unique(curr_experiment, indexing.get()); image_analysis = std::make_unique(curr_experiment, *azint_mapping, dataset->pixel_mask, - indexing.get()); + *index_and_refine.get()); } } diff --git a/viewer/JFJochImageReadingWorker.h b/viewer/JFJochImageReadingWorker.h index 452f5934..f5cb5c86 100644 --- a/viewer/JFJochImageReadingWorker.h +++ b/viewer/JFJochImageReadingWorker.h @@ -52,6 +52,7 @@ private: std::shared_ptr current_image_ptr; std::unique_ptr azint_mapping; std::unique_ptr image_analysis; + std::unique_ptr index_and_refine; std::unique_ptr roi;