pub struct Voigt { /* private fields */ }Expand description
A Voigt line-shape Amplitude.
The normalized profile is
V(m; m_0, \Gamma, \sigma) =
\frac{\operatorname{Re}[w(z)]}{\sigma \sqrt{2\pi}},
\qquad
z = \frac{m - m_0 + i\Gamma/2}{\sigma\sqrt{2}},where $w(z)$ is the Faddeeva function. Here $\Gamma$ is the Lorentzian full
width at half maximum and $\sigma$ is the Gaussian resolution width. This amplitude
returns $\sqrt{V}$ so its norm-squared is the normalized Voigt profile.
Implementations§
Source§impl Voigt
impl Voigt
Sourcepub fn new(
name: &str,
mass: Parameter,
width: Parameter,
sigma: Parameter,
resonance_mass: &Mass,
) -> Result<Expression, LadduError>
pub fn new( name: &str, mass: Parameter, width: Parameter, sigma: Parameter, resonance_mass: &Mass, ) -> Result<Expression, LadduError>
Construct a Voigt with the given name, mass, width, and Gaussian sigma.
This uses the given resonance_mass as the input mass. width is the Lorentzian full
width at half maximum and sigma is the Gaussian resolution width.
Trait Implementations§
Source§impl Amplitude for Voigt
impl Amplitude for Voigt
Source§fn register(
&mut self,
resources: &mut Resources,
) -> Result<AmplitudeID, LadduError>
fn register( &mut self, resources: &mut Resources, ) -> Result<AmplitudeID, LadduError>
This method should be used to tell the
Resources manager about all of
the free parameters and cached values used by this Amplitude. It should end by
returning an AmplitudeID, which can be obtained from the
Resources::register_amplitude method. Read moreSource§fn semantic_key(&self) -> Option<AmplitudeSemanticKey>
fn semantic_key(&self) -> Option<AmplitudeSemanticKey>
Optional semantic identity key for same-name deduplication. Read more
Source§fn real_valued_hint(&self) -> bool
fn real_valued_hint(&self) -> bool
Optional hint that this amplitude always evaluates to a purely real complex value. Read more
Source§fn bind(&mut self, metadata: &DatasetMetadata) -> Result<(), LadduError>
fn bind(&mut self, metadata: &DatasetMetadata) -> Result<(), LadduError>
Bind this
Amplitude to a concrete Dataset by using the provided metadata to wire up
Variables or other dataset-specific state. This will
be invoked when a Expression is loaded with data, after register
has already succeeded. The default implementation is a no-op for amplitudes that do not
depend on metadata.Source§fn precompute(&self, event: &NamedEventView<'_>, cache: &mut Cache)
fn precompute(&self, event: &NamedEventView<'_>, cache: &mut Cache)
Source§fn compute(&self, parameters: &Parameters, cache: &Cache) -> Complex<f64>
fn compute(&self, parameters: &Parameters, cache: &Cache) -> Complex<f64>
This method constitutes the main machinery of an
Amplitude, returning the actual
calculated value for a particular set of Parameters and event Cache.Source§fn compute_gradient(
&self,
parameters: &Parameters,
cache: &Cache,
gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>,
)
fn compute_gradient( &self, parameters: &Parameters, cache: &Cache, gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>, )
This method yields the gradient of a particular
Amplitude at a point specified
by a set of Parameters. See those structs, as well as
Cache, for documentation on their available methods. For the most part,
Parameters and the Cache are key-value storage accessed by ParameterIDs and
several different types of cache
IDs. If the analytic version of the gradient is known, this method can be overwritten to
improve performance for some derivative-using methods of minimization. The default
implementation calculates a central finite difference across all parameters, regardless of
whether or not they are used in the Amplitude. Read moreSource§fn dependence_hint(&self) -> ExpressionDependence
fn dependence_hint(&self) -> ExpressionDependence
Optional dependence hint used by expression-IR diagnostics/planning. Read more
Source§fn precompute_all(&self, dataset: &Dataset, resources: &mut Resources)
fn precompute_all(&self, dataset: &Dataset, resources: &mut Resources)
Evaluate
Amplitude::precompute over columnar event views in a Dataset.Source§fn central_difference_with_indices(
&self,
indices: &[usize],
parameters: &Parameters,
cache: &Cache,
gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>,
)
fn central_difference_with_indices( &self, indices: &[usize], parameters: &Parameters, cache: &Cache, gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>, )
A helper function to implement a central difference only on indices which correspond to
free parameters in the
Amplitude. For example, if an Amplitude contains free
parameters registered to indices 1, 3, and 5 of the its internal parameters array, then
running this with those indices will compute a central finite difference derivative for
those coordinates only, since the rest can be safely assumed to be zero.Source§fn into_expression(self) -> Result<Expression, LadduError>where
Self: Sized + 'static,
fn into_expression(self) -> Result<Expression, LadduError>where
Self: Sized + 'static,
Convenience helper to wrap an amplitude into an
Expression. Read moreSource§impl<'de> Deserialize<'de> for Voigt
impl<'de> Deserialize<'de> for Voigt
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Voigt, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Voigt, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Serialize for Voigt
impl Serialize for Voigt
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl Freeze for Voigt
impl !RefUnwindSafe for Voigt
impl Send for Voigt
impl Sync for Voigt
impl Unpin for Voigt
impl UnsafeUnpin for Voigt
impl !UnwindSafe for Voigt
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Converts
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>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.