pub struct TraceDetectabilityReport {
pub peak_delta_t_per_ppm: f64,
pub peak_energy_ev: f64,
pub peak_snr: f64,
pub detectable: bool,
pub delta_t_spectrum: Vec<f64>,
pub energies: Vec<f64>,
pub opaque_fraction: f64,
}Expand description
Result of a trace-detectability analysis for a single matrix+trace pair.
Fields§
§peak_delta_t_per_ppm: f64Peak |ΔT| per ppm concentration at the most sensitive energy.
Linearized sensitivity metric: peak_delta_t / trace_ppm.
Accurate in the dilute-trace limit; at high concentrations the
actual per-ppm sensitivity is smaller due to Beer-Lambert
saturation (T = exp(−n·σ) is sub-linear in n).
peak_energy_ev: f64Energy at which peak contrast occurs (eV).
peak_snr: f64Estimated peak SNR at the given concentration and I₀.
detectable: boolWhether the combination is detectable (SNR > threshold).
delta_t_spectrum: Vec<f64>Energy-resolved |ΔT| spectrum for the given concentration.
energies: Vec<f64>Energies used (eV).
opaque_fraction: f64Fraction of energy bins where the matrix baseline transmission is
below OPAQUE_THRESHOLD (effectively zero due to underflow).
When this is close to 1.0, the matrix is essentially opaque across the entire energy range, and trace detection is physically impossible regardless of concentration or I₀.
Trait Implementations§
Source§impl Clone for TraceDetectabilityReport
impl Clone for TraceDetectabilityReport
Source§fn clone(&self) -> TraceDetectabilityReport
fn clone(&self) -> TraceDetectabilityReport
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 TraceDetectabilityReport
impl RefUnwindSafe for TraceDetectabilityReport
impl Send for TraceDetectabilityReport
impl Sync for TraceDetectabilityReport
impl Unpin for TraceDetectabilityReport
impl UnwindSafe for TraceDetectabilityReport
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