angles#

import ampform.kinematics.angles

Angle computations for (boosted) lorentz vectors.

class Phi(momentum, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Azimuthal angle \(\phi\) of a FourMomentumSymbol.

(1)#\[\begin{split} \begin{array}{rcl} \phi\left(p\right) &=& \operatorname{atan}_{2}{\left({p}_y,{p}_x \right)} \\ \end{array}\end{split}\]
momentum: Basic[source]#
class Theta(momentum, *args, evaluate: bool = False, **kwargs)[source]#

Bases: Expr

Polar (elevation) angle \(\theta\) of a FourMomentumSymbol.

(2)#\[\begin{split} \begin{array}{rcl} \theta\left(p\right) &=& \operatorname{acos}{\left(\frac{{p}_z}{\left|\vec{p}\right|} \right)} \\ \end{array}\end{split}\]
momentum: Basic[source]#
compute_helicity_angles(four_momenta: Mapping[int, Expr], topology: Topology) dict[Symbol, Expr][source]#

Formulate expressions for all helicity angles in a topology.

Formulate expressions (Expr) for all helicity angles appearing in a given Topology. The expressions are given in terms of FourMomenta The expressions returned as values in a dict, where the keys are defined by get_helicity_angle_symbols().

Example

>>> from qrules.topology import create_isobar_topologies
>>> topologies = create_isobar_topologies(3)
>>> topology = topologies[0]
>>> from ampform.kinematics.lorentz import create_four_momentum_symbols
>>> four_momenta = create_four_momentum_symbols(topology)
>>> angles = compute_helicity_angles(four_momenta, topology)
>>> theta_symbol = sp.Symbol("theta_0", real=True)
>>> angles[theta_symbol]
Theta(p1 + p2)
compute_wigner_angles(topology: Topology, momenta: FourMomenta, state_id: int) dict[Symbol, Expr][source]#

Create an Expr for each angle in a Wigner rotation.

Implementation of (B.2-4) in [1], with \(x'_z\) etc. taken from the result of compute_wigner_rotation_matrix(). See also Wigner rotations.

compute_wigner_rotation_matrix(topology: Topology, momenta: FourMomenta, state_id: int) MatrixMultiplication[source]#

Compute a Wigner rotation matrix.

Implementation of Eq. (36) in [1]. See also Wigner rotations.

formulate_scattering_angle(state_id: int, sibling_id: int) tuple[Symbol, acos][source]#

Formulate the scattering angle in the rest frame of the resonance.

Compute the \(\theta_{ij}\) scattering angle as formulated in Eq (A1) in the DPD paper [10]. The angle is that between particle \(i\) and spectator particle \(k\) in the rest frame of the isobar resonance \((ij)\).

formulate_theta_hat_angle(isobar_id: int, aligned_subsystem: int) tuple[Symbol, acos][source]#

Formulate an expression for \(\hat\theta_{i(j)}\).

formulate_zeta_angle(rotated_state: int, aligned_subsystem: int, reference_subsystem: int) tuple[Symbol, acos][source]#

Formulate expression for the alignment angle \(\zeta^i_{j(k)}\).