conservation_rules

Collection of quantum number conservation rules for particle reactions.

Contains: - Functors for quantum number condition checks.

class AbstractConditionFunctor[source]

Bases: abc.ABC

Abstract interface of a condition functor.

abstract check(qn_names, in_edges, out_edges, int_node)[source]
class BaryonNumberConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for BaryonNumber conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class CParityConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Check for \(C\)-parity conservation.

Implements \(C_{in} = C_{out}\).

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class ChargeConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for Charge conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class CharmConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for Charmness conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class ClebschGordanCheckHelicityToCanonical[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Implement Clebsch-Gordan checks.

For \(S_1, S_2\) to \(S\) and the \(L,S\) to \(J\) coupling based on the conversion of helicity to canonical amplitude sums.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class DefinedForAllEdges[source]

Bases: expertsystem.state.conservation_rules.AbstractConditionFunctor

Check if a graph has all edges defined.

check(qn_names, in_edges, out_edges, int_node)[source]
class DefinedForAllOutgoingEdges[source]

Bases: expertsystem.state.conservation_rules.AbstractConditionFunctor

Check if all outgoing edges are defined.

check(qn_names, in_edges, out_edges, int_node)[source]
class DefinedForInteractionNode[source]

Bases: expertsystem.state.conservation_rules.AbstractConditionFunctor

Check if all interaction nodes are defined.

check(qn_names, in_edges, out_edges, int_node)[source]
class DefinedIfOtherQnNotDefinedInOutSeparate(other_qn_names)[source]

Bases: expertsystem.state.conservation_rules.AbstractConditionFunctor

Implements logic for…

check(qn_names, in_edges, out_edges, int_node)[source]
check_edge_set(qn_names, edges, int_node)[source]
static find_in_dict(name, props)[source]
class ElectronLNConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for ElectronLN conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class GParityConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Check for \(G\)-parity conservation.

Implements for \(G_{in} = G_{out}\).

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class GellMannNishijimaRule[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)[source]

Check the Gell-Mann–Nishijima formula.

\(Q=I_3+\frac{Y}{2}\) for each particle.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class HelicityConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)[source]

Implementation of helicity conservation.

Check for \(|\lambda_2-\lambda_3| \leq S_1\).

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class IdenticalParticleSymmetrization[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)[source]

Implementation of particle symmetrization.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class IsoSpinConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Check for isospin conservation.

Implements

\[|I_1 - I_2| \leq I \leq |I_1 + I_2|\]

Also checks \(I_{1,z} + I_{2,z} = I_z\) and if Clebsch-Gordan coefficients are all 0.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class MassConservation(width_factor)[source]

Bases: expertsystem.state.conservation_rules.Rule

Mass conservation rule.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)[source]

Implements mass conservation.

\(M_{out} - N \cdot W_{out} < M_{in} + N \cdot W_{in}\)

It makes sure that the net mass outgoing state \(M_{out}\) is smaller than the net mass of the ingoing state \(M_{in}\). Also the width \(W\) of the states is taken into account.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class MuonLNConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for MuonLN conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class ParityConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Implement \(P_{in} = P_{out} \cdot (-1)^L\).

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class ParityConservationHelicity[source]

Bases: expertsystem.state.conservation_rules.Rule

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Implements parity conservation for helicity formalism.

Check the following:

\[A_{-\lambda_1-\lambda_2} = P_1 P_2 P_3 (-1)^{S_2+S_3-S_1} A_{\lambda_1\lambda_2}\]

Notice that only the special case \(\lambda_1=\lambda_2=0\) may return False.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class Rule[source]

Bases: object

Interface for rules.

A Rule performs checks on an InteractionNode and its attached Edge s. The __call__ method contains actual rule logic and has to be overwritten.

For additive quantum numbers the decorator additive_quantum_number_rule can simplify the constrution of the appropriate Rule.

Besides the rule logic itself, a Rule also has the responsibility of stating its run conditions. These can be separated into two categories:

  • variable conditions

  • toplogical conditions

Note: currently only variable conditions are being used.

Variable conditions can easily be added to rules via the rule_conditions decorator.

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)bool[source]

Call self as a function.

check_requirements(in_edges, out_edges, int_node)[source]
get_required_qn_names()[source]
class SpinConservation(use_projection=True)[source]

Bases: expertsystem.state.conservation_rules.Rule

Check for spin conservation.

Implements

\[|S_1 - S_2| \leq S \leq |S_1 + S_2|\]

and

\[|L - S| \leq J \leq |L + S|\]

Also checks \(M_1 + M_2 = M\) and if Clebsch-Gordan coefficients are all 0.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, interaction_qns)[source]

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class StrangenessConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for Strangeness conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
class TauLNConservation[source]

Bases: expertsystem.state.conservation_rules.Rule

Decorated via additive_quantum_number_rule.

Check for TauLN conservation.

Required quantum numbers:

__call__(ingoing_part_qns, outgoing_part_qns, _)

Call self as a function.

check_requirements(in_edges, out_edges, int_node)
get_required_qn_names()
additive_quantum_number_rule(quantum_number: expertsystem.state.particle.StateQuantumNumberNames)[source]

Class decorator for creating an additive conservation Rule.

Use this decorator to create a conservation Rule for a quantum number to which an additive conservation rule applies:

\[\sum q_{in} = \sum q_{out}\]
Parameters

quantum_number (StateQuantumNumberNames) – Quantum number to which you want to apply the additive conservation check.

is_particle_antiparticle_pair(pid1, pid2)[source]
rule_conditions(variable_conditions)[source]