forward_model_from_base_xs

Function forward_model_from_base_xs 

Source
pub fn forward_model_from_base_xs(
    energies: &[f64],
    base_xs: &[Vec<f64>],
    resonance_data: &[ResonanceData],
    thicknesses: &[f64],
    temperature_k: f64,
    instrument: Option<&InstrumentParams>,
) -> Result<Vec<f64>, TransmissionError>
Expand description

Compute a transmission spectrum from precomputed unbroadened cross-sections.

Applies Doppler broadening and Beer-Lambert using cached base XS, then resolution broadening on the total transmission (issue #442). This skips the expensive Reich-Moore calculation, making it suitable for use inside TransmissionFitModel::evaluate() when temperature is a free parameter.

Pipeline:

  1. Doppler-broaden base σ (via broadened_cross_sections_from_base)
  2. Accumulate total attenuation: Σᵢ nᵢ·σ_{D,i}
  3. Beer-Lambert: T = exp(−attenuation)
  4. Resolution: T_broad = R ⊗ T (when instrument is present)