helicity

import ampform.helicity

Generate an amplitude model with the helicity formalism.

class CanonicalAmplitudeBuilder(reaction_result: ReactionInfo)[source]

Bases: ampform.helicity.HelicityAmplitudeBuilder

Amplitude model generator for the canonical helicity formalism.

This class defines a full amplitude in the canonical formalism, using the helicity formalism as a foundation. The key here is that we take the full helicity intensity as a template, and just exchange the helicity amplitudes \(F\) as a sum of canonical amplitudes \(A\):

\[F^J_{\lambda_1,\lambda_2} = \sum_{LS} \mathrm{norm}(A^J_{LS})C^2.\]

Here, \(C\) stands for Clebsch-Gordan factor.

class HelicityAmplitudeBuilder(reaction: ReactionInfo)[source]

Bases: object

Amplitude model generator for the helicity formalism.

formulate()HelicityModel[source]
set_dynamics(particle_name: str, dynamics_builder: ResonanceDynamicsBuilder)None[source]
class HelicityModel(expression: Expr, parameter_defaults: Dict[Symbol, Union[float, complex, int]], components: Dict[str, Expr], adapter: HelicityAdapter, particles: ParticleCollection)[source]

Bases: object

__eq__(other)

Method generated by attrs for class HelicityModel.

property adapter
property components
property expression
property parameter_defaults
particles: ParticleCollection
sum_components(components: Iterable[str])Expr[source]

Coherently or incoherently add components of a helicity model.

extract_particle_collection(transitions: Iterable[StateTransition])ParticleCollection[source]

Collect all particles from a collection of state transitions.

formulate_clebsch_gordan_coefficients(transition: StateTransition, node_id: int)Expr[source]

Compute two Clebsch-Gordan coefficients for a state transition node.

>>> import qrules
>>> reaction = qrules.generate_transitions(
...     initial_state=[("J/psi(1S)", [+1])],
...     final_state=[("gamma", [+1]), "f(0)(980)"],
... )
>>> transition = reaction.transitions[0]
>>> formulate_clebsch_gordan_coefficients(transition, node_id=0)
CG(0, 0, 1, 1, 1, 1)*CG(1, 1, 0, 0, 1, 1)
formulate_wigner_d(transition: StateTransition, node_id: int)Expr[source]

Compute WignerD for a state transition node.

>>> import qrules
>>> reaction = qrules.generate_transitions(
...     initial_state=[("J/psi(1S)", [+1])],
...     final_state=[("gamma", [+1]), "f(0)(980)"],
... )
>>> transition = reaction.transitions[0]
>>> formulate_wigner_d(transition, node_id=0)
WignerD(1, 1, 1, -phi_0, theta_0, 0)
get_prefactor(transition: StateTransition)float[source]

Calculate the product of all prefactors defined in this transition.

group_transitions(transitions: Iterable[StateTransition])List[List[StateTransition]][source]

Match final and initial states in groups.

Each StateTransition corresponds to a specific state transition amplitude. This function groups together transitions, which have the same initial and final state (including spin). This is needed to determine the coherency of the individual amplitude parts.

Submodules and Subpackages