Skip to main content

RuleSet

Struct RuleSet 

Source
pub struct RuleSet { /* private fields */ }
Expand description

A collection of selection rules for testing whether a two-body decay channel is allowed.

Each rule enables one conservation or symmetry check. Each enabled rule is associated with a RulePolicy which dictates how permissively it should be applied to the given particles.

§Notes

The default angular policy doesn’t actually enforce any rules, as angular momentum conservation and coupling rules are handled by other methods.

All constructors assume a permissive enforcement policy, i.e. if a property is unknown for one or more particles involved, that check is skipped.

Implementations§

Source§

impl RuleSet

Source

pub fn angular() -> Self

Construct a rule set with no non-angular selection rules enabled.

This is useful when only the angular-momentum coupling constraints should be applied: $S \in |j_a - j_b|, \ldots, j_a + j_b$ and $J \in |L - S|, \ldots, L + S$.

Source

pub fn strong() -> Self

Construct a rule set appropriate for ordinary strong two-body decays.

This enables parity, isospin, isospin projection, electric charge, flavor quantum numbers, baryon number, and identical-particle exchange symmetry.

Charge-conjugation parity and G-parity are left disabled because they are only meaningful for certain channels and should be enabled explicitly when applicable.

Source

pub fn electromagnetic() -> Self

Construct a rule set appropriate for electromagnetic two-body decays.

This enables parity, electric charge, flavor quantum numbers, baryon number, isospin-projection conservation, and identical-particle exchange symmetry.

Total isospin is not enabled because electromagnetic interactions break isospin symmetry.

Source

pub fn weak() -> Self

Construct a rule set appropriate for weak two-body decays.

This enables electric charge, baryon number, individual lepton-family numbers, total lepton number, and identical-particle exchange symmetry.

Parity, isospin, strangeness, charm, bottomness, and topness are not enabled because weak interactions can violate or change them.

Source

pub fn enforce_mut(&mut self, rule: RuleKind) -> &mut Self

Enable a rule in place using permissive missing-input handling.

Source

pub fn enforce_strict_mut(&mut self, rule: RuleKind) -> &mut Self

Enable a rule in place and reject candidates with missing inputs.

Source

pub fn set_policy_mut( &mut self, rule: RuleKind, policy: RulePolicy, ) -> &mut Self

Assign an explicit policy to a rule in place.

Source

pub fn ignore_mut( &mut self, rule: RuleKind, reason: impl Into<String>, ) -> &mut Self

Ignore a rule in place and record the supplied reason.

Source

pub fn ignore_without_reason_mut(&mut self, rule: RuleKind) -> &mut Self

Ignore a rule in place without recording a reason.

Source

pub fn diagnose_only_mut( &mut self, rule: RuleKind, reason: impl Into<String>, ) -> &mut Self

Make a rule diagnostic-only in place and record the supplied reason.

Source

pub fn diagnose_only_without_reason_mut(&mut self, rule: RuleKind) -> &mut Self

Make a rule diagnostic-only in place without recording a reason.

Source

pub fn disable_mut(&mut self, rule: RuleKind) -> &mut Self

Remove a rule from this set in place.

Source

pub fn with_unknown_policy_mut( &mut self, rule: RuleKind, unknown: UnknownPolicy, ) -> &mut Self

Change a rule’s missing-input policy in place.

The rule is enabled with RulePolicy::enforce if it was not already configured.

Source

pub fn enforce(self, rule: RuleKind) -> Self

Return a copy with a permissively enforced rule.

Source

pub fn enforce_strict(self, rule: RuleKind) -> Self

Return a copy with a strictly enforced rule.

Source

pub fn set_policy(self, rule: RuleKind, policy: RulePolicy) -> Self

Return a copy with an explicit policy assigned to a rule.

Source

pub fn ignore(self, rule: RuleKind, reason: impl Into<String>) -> Self

Return a copy which ignores a rule for the supplied reason.

Source

pub fn ignore_without_reason(self, rule: RuleKind) -> Self

Return a copy which ignores a rule without recording a reason.

Source

pub fn diagnose_only(self, rule: RuleKind, reason: impl Into<String>) -> Self

Return a copy which evaluates a rule only for diagnostics.

Source

pub fn diagnose_only_without_reason(self, rule: RuleKind) -> Self

Return a copy which evaluates a rule only for diagnostics, without a reason.

Source

pub fn disable(self, rule: RuleKind) -> Self

Return a copy with a rule removed.

Source

pub fn with_unknown_policy(self, rule: RuleKind, unknown: UnknownPolicy) -> Self

Return a copy with the selected missing-input policy.

Source

pub fn policy(&self, rule: RuleKind) -> Option<&RulePolicy>

Retrieve the configured policy for a rule.

Source

pub fn enabled_rules(&self) -> impl Iterator<Item = RuleKind> + '_

Iterate over the configured rules in stable RuleKind order.

Source

pub fn check( &self, parent: &ParticleProperties, daughters: (&ParticleProperties, &ParticleProperties), l: L, s: S, ) -> bool

Return whether a two-body partial-wave candidate satisfies this rule set.

Source

pub fn evaluate( &self, parent: &ParticleProperties, daughters: (&ParticleProperties, &ParticleProperties), l: L, s: S, ) -> RuleReport

Evaluate every configured rule and return a detailed report.

Trait Implementations§

Source§

impl Clone for RuleSet

Source§

fn clone(&self) -> RuleSet

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RuleSet

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RuleSet

Source§

fn default() -> RuleSet

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for RuleSet

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for RuleSet

Source§

impl Hash for RuleSet

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for RuleSet

Source§

fn eq(&self, other: &RuleSet) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for RuleSet

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for RuleSet

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

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

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.