pub struct SelectionRules {
pub max_l: OrbitalAngularMomentum,
pub rules: RuleSet,
}Expand description
Configuration for generating and filtering allowed two-body partial waves.
SelectionRules combines a maximum orbital angular momentum with a
RuleSet. Candidate waves are generated from angular-momentum coupling
and are then filtered by the enabled rules.
The generated waves satisfy
$S \in |j_a - j_b|, \ldots, j_a + j_b$
and
$J \in |L - S|, \ldots, L + S$,
with $0 \le L \le L_\text{max}$.
Fields§
§max_l: OrbitalAngularMomentumMaximum orbital angular momentum $L_\text{max}$ considered when
generating candidate partial waves.
The solver scans all integer values
$L = 0, 1, \ldots, L_\text{max}$.
rules: RuleSetConservation and symmetry rules used to filter candidate waves.
Angular-momentum compatibility is handled by
SelectionRules::allowed_partial_waves. The RuleSet applies
additional checks such as parity, charge, isospin, flavor quantum
numbers, $C$-parity, $G$-parity, and identical-particle symmetry.
Implementations§
Source§impl SelectionRules
impl SelectionRules
Sourcepub fn coupled_spins(
a: AngularMomentum,
b: AngularMomentum,
) -> Vec<AngularMomentum>
pub fn coupled_spins( a: AngularMomentum, b: AngularMomentum, ) -> Vec<AngularMomentum>
Return all possible coupled total spins from two daughter spins.
Given daughter spins $j_a$ and $j_b$, this returns
$S = |j_a - j_b|, |j_a - j_b| + 1, \ldots, j_a + j_b$.
Internally angular momenta are stored as doubled values, so the returned sequence advances by two in the doubled representation.
Sourcepub fn allowed_partial_waves(
&self,
parent: &ParticleProperties,
daughters: (&ParticleProperties, &ParticleProperties),
) -> Vec<AllowedPartialWave>
pub fn allowed_partial_waves( &self, parent: &ParticleProperties, daughters: (&ParticleProperties, &ParticleProperties), ) -> Vec<AllowedPartialWave>
Generate all allowed two-body partial waves for a parent and two daughters.
The parent spin is interpreted as the total angular momentum $J$ of
the resonance. The daughter spins are coupled to possible total-spin
values $S$, and each $S$ is combined with orbital angular momenta
$L = 0, 1, \ldots, L_\text{max}$.
A candidate wave is kept when:
- $
L$ and $S$ can couple to the parent $J$. - The enabled
RuleSetchecks do not reject it.
Returns an empty vector if the parent spin or either daughter spin is unknown.
The returned AllowedPartialWave includes the underlying
PartialWave together with channel-dependent inferred quantum numbers,
such as final-state parity and, when meaningful, $C$-parity.
Trait Implementations§
Source§impl Clone for SelectionRules
impl Clone for SelectionRules
Source§fn clone(&self) -> SelectionRules
fn clone(&self) -> SelectionRules
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SelectionRules
impl Debug for SelectionRules
Source§impl Default for SelectionRules
impl Default for SelectionRules
Source§impl Hash for SelectionRules
impl Hash for SelectionRules
Source§impl PartialEq for SelectionRules
impl PartialEq for SelectionRules
Source§fn eq(&self, other: &SelectionRules) -> bool
fn eq(&self, other: &SelectionRules) -> bool
self and other values to be equal, and is used by ==.impl Eq for SelectionRules
impl StructuralPartialEq for SelectionRules
Auto Trait Implementations§
impl Freeze for SelectionRules
impl RefUnwindSafe for SelectionRules
impl Send for SelectionRules
impl Sync for SelectionRules
impl Unpin for SelectionRules
impl UnsafeUnpin for SelectionRules
impl UnwindSafe for SelectionRules
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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<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.