XtalOptimizer: Add lattice rotation-only optimizer

This commit is contained in:
2026-03-04 11:26:10 +01:00
parent cd561dd3d9
commit 939bb02ce2
3 changed files with 172 additions and 6 deletions
+6 -6
View File
@@ -103,20 +103,20 @@ void IndexAndRefine::RefineGeometryIfNeeded(DataMessage &msg, IndexAndRefine::In
.max_time = 0.04 // 40 ms is max allowed time for the operation
};
if (experiment.IsRotationIndexing()) {
data.refine_beam_center = false;
data.refine_rotation_axis = false;
data.refine_unit_cell = false;
}
if (outcome.symmetry.crystal_system == gemmi::CrystalSystem::Trigonal)
data.crystal_system = gemmi::CrystalSystem::Hexagonal;
switch (experiment.GetIndexingSettings().GetGeomRefinementAlgorithm()) {
case GeomRefinementAlgorithmEnum::None:
break;
case GeomRefinementAlgorithmEnum::BeamCenter:
if (XtalOptimizer(data, msg.spots)) {
if (experiment.IsRotationIndexing()) {
XtalOptimizerRotationOnly(data, msg.spots, 0.2);
XtalOptimizerRotationOnly(data, msg.spots, 0.1);
XtalOptimizerRotationOnly(data, msg.spots, 0.05);
} else if (XtalOptimizer(data, msg.spots)) {
outcome.experiment.BeamX_pxl(data.geom.GetBeamX_pxl())
.BeamY_pxl(data.geom.GetBeamY_pxl());
outcome.beam_center_updated = true;