diff --git a/image_analysis/geom_refinement/XtalOptimizer.cpp b/image_analysis/geom_refinement/XtalOptimizer.cpp index 54fe8d3a..a3e6ac39 100644 --- a/image_analysis/geom_refinement/XtalOptimizer.cpp +++ b/image_analysis/geom_refinement/XtalOptimizer.cpp @@ -126,10 +126,9 @@ struct XtalResidual { auto e_pred_hkl = e_latt.transpose() * e_obs_recip; - T dh = exp_h - e_pred_hkl[0]; - T dk = exp_k - e_pred_hkl[1]; - T dl = exp_l - e_pred_hkl[2]; - residual[0] = ceres::sqrt(dh * dh + dk * dk + dl * dl); + residual[0] = exp_h - e_pred_hkl[0]; + residual[1] = exp_k - e_pred_hkl[1]; + residual[2] = exp_l - e_pred_hkl[2]; return true; } @@ -456,14 +455,14 @@ bool XtalOptimizerInternal(XtalOptimizerData &data, continue; problem.AddResidualBlock( - new ceres::AutoDiffCostFunction( + new ceres::AutoDiffCostFunction( new XtalResidual(pt.x, pt.y, data.geom.GetWavelength_A(), data.geom.GetPixelSize_mm(), gonio_back_rot, h, k, l, data.crystal_system)), - new ceres::CauchyLoss(loss_scale), + nullptr, &beam_x, &beam_y, &distance_mm, @@ -608,5 +607,6 @@ bool XtalOptimizerInternal(XtalOptimizerData &data, bool XtalOptimizer(XtalOptimizerData &data, const std::vector &spots) { if (!XtalOptimizerInternal(data, spots, 0.3)) return false; + XtalOptimizerInternal(data, spots, 0.2); return XtalOptimizerInternal(data, spots, 0.1); }