broadened_cross_sections_for_transmission

Function broadened_cross_sections_for_transmission 

Source
pub fn broadened_cross_sections_for_transmission(
    energies: &[f64],
    resonance_data: &[ResonanceData],
    temperature_k: f64,
    instrument: &InstrumentParams,
    thickness_atoms_barn: f64,
    cancel: Option<&AtomicBool>,
) -> Result<Vec<Vec<f64>>, TransmissionError>
Expand description

Compute Doppler+resolution-broadened cross-sections using SAMMY’s Beer-Lambert-aware pipeline for transmission data.

For transmission data, SAMMY applies resolution broadening to the transmission T = exp(-nd×σ_D) rather than to σ_D directly. Due to Jensen’s inequality (the exponential is convex), direct σ broadening overestimates the effective cross section at resonance peaks. This function implements SAMMY’s correct pipeline:

  1. Evaluate unbroadened σ on extended grid
  2. Doppler-broaden σ → σ_D
  3. Convert to transmission: T = exp(-nd × σ_D)
  4. Resolution-broaden T → T_broadened
  5. Convert back: σ_eff = -ln(T_broadened) / nd

SAMMY Ref: DopplerAndResolutionBroadener.cpp — resolution broadening is applied after Beer-Lambert conversion in the SAMMY pipeline.

§Arguments

  • energies — Energy grid in eV (sorted ascending).
  • resonance_data — Resonance parameters for each isotope.
  • temperature_k — Sample temperature for Doppler broadening.
  • instrument — Instrument resolution parameters.
  • thickness_atoms_barn — Sample thickness n×d (atoms/barn). Must be > 0.
  • cancel — Optional cancellation token.

§Returns

One effective cross-section vector per isotope on success.