pub struct SpectrumFitResult {Show 14 fields
pub densities: Vec<f64>,
pub uncertainties: Option<Vec<f64>>,
pub reduced_chi_squared: f64,
pub converged: bool,
pub iterations: usize,
pub temperature_k: Option<f64>,
pub temperature_k_unc: Option<f64>,
pub anorm: f64,
pub background: [f64; 3],
pub back_d: Option<f64>,
pub back_f: Option<f64>,
pub t0_us: Option<f64>,
pub l_scale: Option<f64>,
pub deviance_per_dof: Option<f64>,
}Expand description
Result of fitting a single spectrum.
Fields§
§densities: Vec<f64>Fitted areal densities (atoms/barn), one per isotope.
uncertainties: Option<Vec<f64>>Uncertainty on each density.
None when covariance computation was skipped.
reduced_chi_squared: f64Reduced chi-squared of the fit.
converged: boolWhether the fit converged.
iterations: usizeNumber of iterations.
temperature_k: Option<f64>Fitted temperature in Kelvin (only when fit_temperature is true).
temperature_k_unc: Option<f64>1-sigma uncertainty on the fitted temperature (from covariance matrix).
anorm: f64Fitted normalization scale (SAMMY Anorm). When background
fitting is disabled, the pipeline emits 1.0 (memo 35 §P1
convention — λ̂ absorbs the scale).
background: [f64; 3]Fitted background polynomial coefficients [BackA, BackB, BackC]
for the SAMMY-style 6-term background:
bg(E) = BackA + BackB / √E + BackC · √E + BackD · exp(-BackF / √E)Both LM-transmission and counts-KL solver paths use the same
SAMMY semantics here — the legacy alpha-fitting [b0, b1, alpha_2] layout was removed when fit_counts_poisson was
retired in PR #450. When background fitting is disabled, the
pipeline emits [0.0, 0.0, 0.0].
back_d: Option<f64>Fitted exponential background amplitude (SAMMY BackD).
None when the exponential tail is not fitted; Some(value)
when the LM transmission background was active with
fit_back_d=true. Mirrors Self::t0_us /
Self::l_scale semantics so the GUI overlay can
distinguish “unfit” from “fitted to zero” without an ambiguous
0.0 sentinel.
back_f: Option<f64>Fitted exponential background decay constant (SAMMY BackF).
None when the exponential tail is not fitted; Some(value)
when the LM transmission background was active with
fit_back_f=true. Paired with Self::back_d — SAMMY
requires both flags toggled together (see
validate_transmission_background).
t0_us: Option<f64>Fitted TOF offset in microseconds (SAMMY TZERO t₀).
None when energy-scale fitting is not enabled.
l_scale: Option<f64>Fitted flight-path scale factor (SAMMY TZERO L₀, dimensionless).
None when energy-scale fitting is not enabled.
deviance_per_dof: Option<f64>Conditional binomial deviance divided by (n − k)
(memo 35 §P1.2 — primary GOF for the counts-KL dispatch, i.e.
SolverConfig::PoissonKL on InputData::Counts or
InputData::CountsWithNuisance).
Some(D/dof) when the counts-KL (joint-Poisson) path was used;
None for the LM path and for transmission + PoissonKL (those
populate reduced_chi_squared with Pearson χ² / (n−k) instead).
Trait Implementations§
Source§impl Clone for SpectrumFitResult
impl Clone for SpectrumFitResult
Source§fn clone(&self) -> SpectrumFitResult
fn clone(&self) -> SpectrumFitResult
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for SpectrumFitResult
impl RefUnwindSafe for SpectrumFitResult
impl Send for SpectrumFitResult
impl Sync for SpectrumFitResult
impl Unpin for SpectrumFitResult
impl UnsafeUnpin for SpectrumFitResult
impl UnwindSafe for SpectrumFitResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more