Rotation: a diagnostic that opens the prediction window on its own width
Prediction and partiality read one number, the per-image sigma_M, so a sigma_M that moves takes the integrated reflection population with it and there is no way to ask which of the two uses carries a downstream difference. --prediction-mosaicity fixes the width the prediction window opens to while the partiality keeps using the measured sigma_M, which separates them. Measured with it on a rotation crystal whose lattice search returns two different cells a few tens of microns of detector distance apart: widening the prediction window from the narrower branch's 0.203 deg to the wider branch's 0.272 deg adds 28% more partials and moves the merged statistics by less than half a percent (I/sigma 6.1 -> 6.2, R_meas 12.7 -> 12.6%, ISa 10.7 -> 10.9); narrowing the wide branch the other way removes 26% of its partials and recovers nothing. On a tetragonal reference crystal a 4.7x over-wide window costs 11%. The prediction window is not where a mosaicity difference turns into a merged-data difference - the captured-fraction gate and the partiality weighting downstream absorb a generous window. Diagnostic only; off by default, so nothing changes unless it is asked for.
This commit is contained in:
@@ -77,6 +77,20 @@ std::optional<float> BraggIntegrationSettings::GetFixedProfileRadius_recipA() co
|
||||
return fixed_profile_radius;
|
||||
}
|
||||
|
||||
BraggIntegrationSettings & BraggIntegrationSettings::ForcedPredictionMosaicity_deg(std::optional<float> input) {
|
||||
if (input) {
|
||||
check_finite("Prediction mosaicity", input.value());
|
||||
check_min("Prediction mosaicity [deg]", input.value(), 0.001);
|
||||
check_max("Prediction mosaicity [deg]", input.value(), 10.0);
|
||||
}
|
||||
forced_prediction_mosaicity_deg = input;
|
||||
return *this;
|
||||
}
|
||||
|
||||
std::optional<float> BraggIntegrationSettings::GetForcedPredictionMosaicity_deg() const {
|
||||
return forced_prediction_mosaicity_deg;
|
||||
}
|
||||
|
||||
BraggIntegrationSettings &BraggIntegrationSettings::Integrator(IntegratorMode input) {
|
||||
integrator_mode = input;
|
||||
return *this;
|
||||
|
||||
Reference in New Issue
Block a user