pub struct ResolutionParams { /* private fields */ }Expand description
Resolution function parameters for time-of-flight instruments.
Implementations§
Source§impl ResolutionParams
impl ResolutionParams
Sourcepub fn new(
flight_path_m: f64,
delta_t_us: f64,
delta_l_m: f64,
delta_e_us: f64,
) -> Result<Self, ResolutionParamsError>
pub fn new( flight_path_m: f64, delta_t_us: f64, delta_l_m: f64, delta_e_us: f64, ) -> Result<Self, ResolutionParamsError>
Create validated resolution parameters.
delta_t_us and delta_l_m are W-parameters (σ = W/√2), not standard
deviations. If your instrument numbers are 1σ or FWHM, use
from_sigma or from_fwhm
instead of converting by hand.
§Arguments
flight_path_m— Flight path length in meters (must be > 0).delta_t_us— Timing width in microseconds, W-parameter (must be >= 0).delta_l_m— Flight path width in meters, W-parameter (must be >= 0).delta_e_us— Exponential tail parameter in SAMMY Deltae units (must be >= 0). When 0, pure Gaussian broadening is used.
§Errors
Returns ResolutionParamsError::InvalidFlightPath if flight_path_m <= 0.0
or is not finite.
Returns ResolutionParamsError::InvalidDeltaT if delta_t_us < 0.0 or is
not finite.
Returns ResolutionParamsError::InvalidDeltaL if delta_l_m < 0.0 or is
not finite.
Returns ResolutionParamsError::InvalidDeltaE if delta_e_us < 0.0 or is
not finite.
Sourcepub fn from_sigma(
flight_path_m: f64,
sigma_t_us: f64,
sigma_l_m: f64,
delta_e_us: f64,
) -> Result<Self, ResolutionParamsError>
pub fn from_sigma( flight_path_m: f64, sigma_t_us: f64, sigma_l_m: f64, delta_e_us: f64, ) -> Result<Self, ResolutionParamsError>
Create resolution parameters from standard deviations.
Instrument metrology is usually quoted as a 1σ jitter, while this type stores W-parameters. This constructor applies W = σ·√2 to the timing and flight-path terms, so a measured 1σ can be passed in directly.
delta_e_us is not a Gaussian width — it is SAMMY’s exponential tail
parameter Deltae — so it is passed through unchanged.
§Errors
Same as new, on the converted values.
Sourcepub fn from_fwhm(
flight_path_m: f64,
fwhm_t_us: f64,
fwhm_l_m: f64,
delta_e_us: f64,
) -> Result<Self, ResolutionParamsError>
pub fn from_fwhm( flight_path_m: f64, fwhm_t_us: f64, fwhm_l_m: f64, delta_e_us: f64, ) -> Result<Self, ResolutionParamsError>
Create resolution parameters from full widths at half maximum.
Applies W = FWHM/(2·√(ln 2)) to the timing and flight-path terms. This
is the measure SAMMY’s Deltag uses, so a value taken from a SAMMY
.inp timing field can be passed in directly.
delta_e_us is SAMMY’s exponential tail parameter, not a Gaussian
width, so it is passed through unchanged.
§Errors
Same as new, on the converted values.
Sourcepub fn flight_path_m(&self) -> f64
pub fn flight_path_m(&self) -> f64
Returns the flight path length in meters.
Sourcepub fn delta_t_us(&self) -> f64
pub fn delta_t_us(&self) -> f64
Total timing width in microseconds, as a W-parameter (σ = W/√2).
The factor of 2 in gaussian_width() comes from
the energy-TOF derivative dE/E = 2·dt/t, not from a width-measure
conversion — the convention is unchanged between time and energy.
Sourcepub fn delta_l_m(&self) -> f64
pub fn delta_l_m(&self) -> f64
Returns the flight path width in meters, as a W-parameter (σ = W/√2).
Sourcepub fn delta_e_us(&self) -> f64
pub fn delta_e_us(&self) -> f64
Returns the exponential tail parameter (SAMMY Deltae units).
Sourcepub fn has_exponential_tail(&self) -> bool
pub fn has_exponential_tail(&self) -> bool
Whether the exponential tail is active (Deltae > 0, SAMMY Iesopr=3).
Sourcepub fn exp_width(&self, energy_ev: f64) -> f64
pub fn exp_width(&self, energy_ev: f64) -> f64
Exponential tail width Widexp(E) in eV.
SAMMY Ref: rsl/mrsl4.f90 Wdsint lines 55-56 (Kedxfw=false path):
Widexp = E * Co2 * sqrt(E) where Co2 = 2·Deltae / (Sm2·Dist).
Combined: Widexp = 2·Deltae·E^(3/2) / (TOF_FACTOR·L).
Sourcepub fn gaussian_width(&self, energy_ev: f64) -> f64
pub fn gaussian_width(&self, energy_ev: f64) -> f64
Gaussian resolution width W_g(E) in eV — the W of exp(-x²/W_g²).
Combines timing and flight-path contributions in quadrature: W_g² = (2·Δt/t × E)² + (2·ΔL/L × E)²
where t = TOF_FACTOR × L / √E is the time-of-flight in μs. Δt and ΔL are
W-parameters too, so the convention carries through unchanged; the
standard deviation is W_g/√2 and the FWHM is fwhm.
Trait Implementations§
Source§impl Clone for ResolutionParams
impl Clone for ResolutionParams
Source§fn clone(&self) -> ResolutionParams
fn clone(&self) -> ResolutionParams
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ResolutionParams
impl Debug for ResolutionParams
impl Copy for ResolutionParams
Auto Trait Implementations§
impl Freeze for ResolutionParams
impl RefUnwindSafe for ResolutionParams
impl Send for ResolutionParams
impl Sync for ResolutionParams
impl Unpin for ResolutionParams
impl UnsafeUnpin for ResolutionParams
impl UnwindSafe for ResolutionParams
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