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}\]
- 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}\]
- 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 givenTopology
. The expressions are given in terms ofFourMomenta
The expressions returned as values in adict
, where the keys are defined byget_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.