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.
§Arguments
flight_path_m— Flight path length in meters (must be > 0).delta_t_us— Timing uncertainty in microseconds (must be >= 0).delta_l_m— Flight path uncertainty in meters (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 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 uncertainty (1σ Gaussian) in microseconds.
The factor of 2 in gaussian_width() comes from
the energy-TOF derivative dE/E = 2·dt/t, not from a σ-to-FWHM conversion.
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 σ_E(E) in eV.
Combines timing and flight-path contributions in quadrature: σ_E² = (2·Δt/t × E)² + (2·ΔL/L × E)²
where t = TOF_FACTOR × L / √E is the time-of-flight in μs.
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 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