XtalOptimizer: Bring back standard loss function for least squares
This commit is contained in:
@@ -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<XtalResidual, 1, 1, 1, 1, 2, 3, 3, 3>(
|
||||
new ceres::AutoDiffCostFunction<XtalResidual, 3, 1, 1, 1, 2, 3, 3, 3>(
|
||||
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<SpotToSave> &spots) {
|
||||
if (!XtalOptimizerInternal(data, spots, 0.3))
|
||||
return false;
|
||||
XtalOptimizerInternal(data, spots, 0.2);
|
||||
return XtalOptimizerInternal(data, spots, 0.1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user