RotationIndexer: Add refinement of extra lattices + limit number of extra lattices

This commit is contained in:
2026-06-05 15:57:22 +02:00
parent 5780548964
commit c3bb5e1f5f
@@ -80,8 +80,10 @@ void RotationIndexer::RunIndexing() {
if (indexer_result.lattice.size() > 1) {
auto ml_latt = MultiLatticeSearch(indexer_result.lattice);
for (auto &l : ml_latt) {
if (extra_lattices_.size() >= experiment.GetIndexingSettings().GetMaxExtraLattices())
break;
// Ignore lattices oriented by less then 3.0 degree
// Ignore lattices oriented by less than 3.0 degree
if (l.rotation_vector.Length() < 3.0 * M_PI / 180.0)
continue;
@@ -100,6 +102,12 @@ void RotationIndexer::RunIndexing() {
.index_ice_rings = experiment.GetIndexingSettings().GetIndexIceRings(),
.axis = axis_
};
// Quick refinement: orientation only. Cell size/angles, beam center,
// detector angles and rotation axis are all kept from the first lattice.
// XtalOptimizer always refines orientation; everything else is frozen above.
XtalOptimizer(data_multi, v_);
extra_lattices_.push_back(data_multi.latt);
}
}