pub struct SelectionRules {
pub rules: RuleSet,
pub max_l: L,
}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§
§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.
max_l: LMaximum 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}$.
Implementations§
Source§impl SelectionRules
impl SelectionRules
Sourcepub fn new(rules: RuleSet, max_l: L) -> Self
pub fn new(rules: RuleSet, max_l: L) -> Self
Construct a partial-wave scanner from a rule set and maximum orbital angular momentum.
Sourcepub fn angular(max_l: L) -> Self
pub fn angular(max_l: L) -> Self
Construct a scanner which applies only angular-momentum coupling.
Sourcepub fn electromagnetic(max_l: L) -> Self
pub fn electromagnetic(max_l: L) -> Self
Construct a scanner configured for electromagnetic decays.
Sourcepub fn coupled_spins(a: J, b: J) -> Vec<S> ⓘ
pub fn coupled_spins(a: J, b: J) -> Vec<S> ⓘ
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 scan_partial_waves(
&self,
parent: &ParticleProperties,
daughters: (&ParticleProperties, &ParticleProperties),
) -> PartialWaveScan
pub fn scan_partial_waves( &self, parent: &ParticleProperties, daughters: (&ParticleProperties, &ParticleProperties), ) -> PartialWaveScan
Generate all candidates and retain detailed reports for accepted and rejected waves.
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
impl Eq for SelectionRules
Source§impl Hash for SelectionRules
impl Hash for SelectionRules
Source§impl PartialEq for SelectionRules
impl PartialEq 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.impl<T> Scalar 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.