Indexing: Fixes to better handling ice ring spots
Some checks failed
Build Packages / build:rpm (ubuntu2404_nocuda) (push) Successful in 13m3s
Build Packages / build:rpm (ubuntu2204_nocuda) (push) Successful in 14m8s
Build Packages / build:rpm (rocky8_nocuda) (push) Successful in 14m19s
Build Packages / Generate python client (push) Successful in 15s
Build Packages / build:rpm (rocky9_nocuda) (push) Successful in 14m38s
Build Packages / Create release (push) Has been skipped
Build Packages / build:rpm (rocky8) (push) Successful in 14m43s
Build Packages / build:rpm (rocky8_sls9) (push) Successful in 14m46s
Build Packages / Build documentation (push) Successful in 37s
Build Packages / build:rpm (ubuntu2204) (push) Successful in 14m46s
Build Packages / build:rpm (rocky9) (push) Successful in 15m13s
Build Packages / build:rpm (ubuntu2404) (push) Successful in 7m22s
Build Packages / Unit tests (push) Failing after 50m39s

This commit is contained in:
2025-12-17 21:11:01 +01:00
parent fe6e3cb15a
commit fc3d112596
4 changed files with 8 additions and 3 deletions

View File

@@ -90,6 +90,7 @@ void RotationIndexer::TryIndex() {
.min_spots = experiment.GetIndexingSettings().GetViableCellMinSpots(),
.refine_beam_center = true,
.refine_distance_mm = false,
.index_ice_rings = experiment.GetIndexingSettings().GetIndexIceRings(),
.axis = axis_
};

View File

@@ -413,8 +413,12 @@ bool XtalOptimizerInternal(XtalOptimizerData &data,
break;
}
const float tolerance_sq = tolerance * tolerance;
// Add residuals for each point
for (const auto &pt: spots) {
if (!data.index_ice_rings && pt.ice_ring)
continue;
Eigen::Matrix3d gonio_back_rot = Eigen::Matrix3d::Identity();
Coord recip = data.geom.DetectorToRecip(pt.x, pt.y);
@@ -442,10 +446,9 @@ bool XtalOptimizerInternal(XtalOptimizerData &data,
double norm_sq = (h - h_fp) * (h - h_fp) + (k - k_fp) * (k - k_fp) + (l - l_fp) * (l - l_fp);
if (norm_sq > tolerance * tolerance)
if (norm_sq > tolerance_sq)
continue;
problem.AddResidualBlock(
new ceres::AutoDiffCostFunction<XtalResidual, 3, 1, 1, 1, 2, 3, 3, 3>(
new XtalResidual(pt.x, pt.y,

View File

@@ -27,6 +27,8 @@ struct XtalOptimizerData {
bool refine_distance_mm = false;
bool refine_detector_angles = false;
bool index_ice_rings = true;
float max_time = 1.0;
std::optional<GoniometerAxis> axis;

View File

@@ -6,7 +6,6 @@
#include "AnalyzeIndexing.h"
#include "FitProfileRadius.h"
#include "spdlog/fmt/bundled/format.h"
namespace {
inline bool ok(float x) {