decay

import ampform.helicity.decay

Extract two-body decay info from a StateTransition.

class StateWithID(particle: Particle, spin_projection: SupportsFloat, id: int)[source]

Bases: qrules.transition.State

Extension of State that embeds the state ID.

classmethod from_transition(transition: StateTransition, state_id: int) StateWithID[source]
id: int
particle: Particle
spin_projection: float
class TwoBodyDecay(parent: StateWithID, children: Tuple[StateWithID, StateWithID], interaction: InteractionProperties)[source]

Bases: object

Two-body sub-decay in a StateTransition.

This container class ensures that:

  1. a selected node in a StateTransition is indeed a 1-to-2 body decay

  2. its two children are sorted by whether they decay further or not (see get_helicity_angle_label, formulate_wigner_d, and formulate_clebsch_gordan_coefficients).

  3. the TwoBodyDecay is hashable, so that it can be used as a key (see set_dynamics.)

children: Tuple[StateWithID, StateWithID]
extract_angular_momentum() int[source]
classmethod from_transition(transition: StateTransition, node_id: int) TwoBodyDecay[source]
interaction: InteractionProperties
parent: StateWithID
get_helicity_info(transition: StateTransition, node_id: int) Tuple[State, Tuple[State, State]][source]

Extract in- and outgoing states for a two-body decay node.

get_sorted_states(transition: StateTransition, state_ids: Iterable[int]) List[State][source]

Get a sorted list of State instances.

In order to ensure correct naming of amplitude coefficients the list has to be sorted by name. The same coefficient names have to be created for two transitions that only differ from a kinematic standpoint (swapped external edges).