pub struct BreitWigner { /* private fields */ }Expand description
A relativistic Breit-Wigner Amplitude, parameterized as follows:
I_{\ell}(m; m_0, \Gamma_0, m_1, m_2) = \frac{1}{\pi}\frac{m_0 \Gamma_0 B_{\ell}(m, m_1, m_2)}{(m_0^2 - m^2) - \imath m_0 \Gamma}where
\Gamma = \Gamma_0 \frac{m_0}{m} \frac{q(m, m_1, m_2)}{q(m_0, m_1, m_2)} \left(\frac{B_{\ell}(m, m_1, m_2)}{B_{\ell}(m_0, m_1, m_2)}\right)^2is the relativistic width correction, $q(m_a, m_b, m_c)$ is the breakup momentum of a particle with mass $m_a$ decaying into two particles with masses $m_b$ and $m_c$, $B_{\ell}(m_a, m_b, m_c)$ is the Blatt-Weisskopf barrier factor for the same decay assuming particle $a$ has angular momentum $\ell$, $m_0$ is the mass of the resonance, $\Gamma_0$ is the nominal width of the resonance, $m_1$ and $m_2$ are the masses of the decay products, and $m$ is the “input” mass.
Implementations§
Source§impl BreitWigner
impl BreitWigner
Sourcepub fn new(
name: &str,
mass: ParameterLike,
width: ParameterLike,
l: usize,
daughter_1_mass: &Mass,
daughter_2_mass: &Mass,
resonance_mass: &Mass,
) -> Box<BreitWigner>
pub fn new( name: &str, mass: ParameterLike, width: ParameterLike, l: usize, daughter_1_mass: &Mass, daughter_2_mass: &Mass, resonance_mass: &Mass, ) -> Box<BreitWigner>
Construct a BreitWigner with the given name, mass, width, and angular momentum (l).
This uses the given resonance_mass as the “input” mass and two daughter masses of the
decay products to determine phase-space and Blatt-Weisskopf factors.
Trait Implementations§
Source§impl Amplitude for BreitWigner
impl Amplitude for BreitWigner
Source§fn register(
&mut self,
resources: &mut Resources,
) -> Result<AmplitudeID, LadduError>
fn register( &mut self, resources: &mut Resources, ) -> Result<AmplitudeID, LadduError>
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.Source§fn compute(
&self,
parameters: &Parameters<'_>,
event: &Event,
_cache: &Cache,
) -> Complex<f64>
fn compute( &self, parameters: &Parameters<'_>, event: &Event, _cache: &Cache, ) -> Complex<f64>
Amplitude, returning the actual
calculated value for a particular Event and set of Parameters. See those
structs, as well as Cache, for documentation on their available methods. For the
most part, Events can be interacted with via
Variables, while Parameters and the
Cache are more like key-value storage accessed by
ParameterIDs and several different types of cache
IDs.Source§fn compute_gradient(
&self,
parameters: &Parameters<'_>,
event: &Event,
cache: &Cache,
gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>,
)
fn compute_gradient( &self, parameters: &Parameters<'_>, event: &Event, cache: &Cache, gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>, )
Amplitude at a point specified
by a particular Event and set of Parameters. See those structs, as well as
Cache, for documentation on their available methods. For the most part,
Events can be interacted with via Variables,
while Parameters and the Cache are more like 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 precompute(&self, event: &Event, cache: &mut Cache)
fn precompute(&self, event: &Event, cache: &mut Cache)
Source§fn precompute_all(&self, dataset: &Dataset, resources: &mut Resources)
fn precompute_all(&self, dataset: &Dataset, resources: &mut Resources)
Source§fn central_difference_with_indices(
&self,
indices: &[usize],
parameters: &Parameters<'_>,
event: &Event,
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<'_>, event: &Event, cache: &Cache, gradient: &mut Matrix<Complex<f64>, Dyn, Const<1>, VecStorage<Complex<f64>, Dyn, Const<1>>>, )
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§impl Clone for BreitWigner
impl Clone for BreitWigner
Source§fn clone(&self) -> BreitWigner
fn clone(&self) -> BreitWigner
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'de> Deserialize<'de> for BreitWigner
impl<'de> Deserialize<'de> for BreitWigner
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<BreitWigner, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<BreitWigner, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for BreitWigner
impl Serialize for BreitWigner
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,
Auto Trait Implementations§
impl Freeze for BreitWigner
impl RefUnwindSafe for BreitWigner
impl Send for BreitWigner
impl Sync for BreitWigner
impl Unpin for BreitWigner
impl UnwindSafe for BreitWigner
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,
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 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>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.