Spin alignment#

Hide code cell content
import logging

import graphviz
import qrules
import sympy as sp
from IPython.display import Math

import ampform
from ampform.helicity import HelicityModel
from ampform.io import aslatex, improve_latex_rendering

LOGGER = logging.getLogger()
LOGGER.setLevel(logging.ERROR)
improve_latex_rendering()

As described in Spin alignment implementation, the ‘standard’ helicity formalism is not suited for state transitions that have different decay topologies. For this reason, the HelicityAmplitudeBuilder can insert a number of Wigner-\(D\) functions into the amplitude model to ‘align’ the final state spins of underlying Topology instances in the full decay.

Imagine we have the following the decay:

reaction = qrules.generate_transitions(
    initial_state=("J/psi(1S)", [-1, +1]),
    final_state=["K0", "Sigma+", "p~"],
    allowed_intermediate_particles=["Sigma(1660)", "N(1650)"],
    allowed_interaction_types=["strong"],
    formalism="helicity",
)
Hide code cell source
src = qrules.io.asdot(
    reaction,
    collapse_graphs=True,
    render_initial_state_id=True,
)
graphviz.Source(src)
../../../_images/d39a83ab575ff09149eebc58927391826e7c60f32350b4f9500a2544aee01ee5.svg

This decay has two different decay topologies, that is, it has resonances in two different sub-systems. By default, the HelicityAmplitudeBuilder does not take these differing decay topologies into account and falls back aligning the amplitudes with NoAlignment. Explicitly:

from ampform.helicity.align import NoAlignment

builder = ampform.get_builder(reaction)
builder.config.spin_alignment = NoAlignment()
non_aligned_model = builder.formulate()
non_aligned_model.intensity
\[\displaystyle \sum_{m_{A}\in\left\{1,-1\right\}} \sum_{m_{0}=0} \sum_{m_{1}=-1/2}^{1/2} \sum_{m_{2}=-1/2}^{1/2}{\left|{A^{01}_{m_{A}, m_{0}, m_{1}, m_{2}} + A^{02}_{m_{A}, m_{0}, m_{1}, m_{2}}}\right|^{2}}\]

The symbols for the amplitudes are defined through HelicityModel.amplitudes:

Hide code cell source
def render_amplitudes(model: HelicityModel) -> Math:
    selected_amplitudes = {
        symbol: expr
        for i, (symbol, expr) in enumerate(model.amplitudes.items())
        if i % 5 == 0
    }
    src = aslatex(selected_amplitudes)
    src = src.replace(R"\end{array}", R"& \dots \\ \end{array}")
    return Math(src)


render_amplitudes(non_aligned_model)
\[\begin{split}\displaystyle \begin{array}{rcl} A^{01}_{-1, 0, - \frac{1}{2}, - \frac{1}{2}} &=& - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{+1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},\frac{1}{2}}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) D^{1}_{-1,0}\left(- \phi_{01},\theta_{01},0\right) - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{-1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},\frac{1}{2}}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) D^{1}_{-1,1}\left(- \phi_{01},\theta_{01},0\right) \\ A^{01}_{1, 0, - \frac{1}{2}, \frac{1}{2}} &=& - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{+1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},\frac{1}{2}}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) D^{1}_{1,0}\left(- \phi_{01},\theta_{01},0\right) - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{-1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},\frac{1}{2}}\left(- \phi^{01}_{0},\theta^{01}_{0},0\right) D^{1}_{1,-1}\left(- \phi_{01},\theta_{01},0\right) \\ A^{02}_{-1, 0, \frac{1}{2}, - \frac{1}{2}} &=& - C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{+1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},\frac{1}{2}}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) D^{1}_{-1,0}\left(- \phi_{02},\theta_{02},0\right) - C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{-1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},\frac{1}{2}}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) D^{1}_{-1,-1}\left(- \phi_{02},\theta_{02},0\right) \\ A^{02}_{1, 0, \frac{1}{2}, \frac{1}{2}} &=& C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{+1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},- \frac{1}{2}}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) D^{1}_{1,0}\left(- \phi_{02},\theta_{02},0\right) - C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{-1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},- \frac{1}{2}}\left(- \phi^{02}_{0},\theta^{02}_{0},0\right) D^{1}_{1,-1}\left(- \phi_{02},\theta_{02},0\right) \\ & \dots \\ \end{array}\end{split}\]

Dalitz-Plot Decomposition#

One way of aligning the spins of each sub-system, is Dalitz-Plot Decomposition (DPD) [10]. DPD can only be used for three-body decays, but results in a quite condense amplitude model expression.

We can select DPD alignment as follows:

Warning

The DalitzPlotDecomposition is not yet fully functional for reactions with a polarized initial or final state. In this example, the sums inside the incoherent sum should also include \(\lambda_0=0\).

from ampform.helicity.align.dpd import DalitzPlotDecomposition, relabel_edge_ids

reaction_123 = relabel_edge_ids(reaction)
builder_123 = ampform.get_builder(reaction_123)
builder_123.config.spin_alignment = DalitzPlotDecomposition(reference_subsystem=1)
builder_123.config.scalar_initial_state_mass = True
builder_123.config.stable_final_state_ids = [1, 2, 3]
dpd_model = builder_123.formulate()
dpd_model.intensity
\[\displaystyle \sum_{m_{0}\in\left\{1,-1\right\}} \sum_{m_{1}=0} \sum_{m_{2}=-1/2}^{1/2} \sum_{m_{3}=-1/2}^{1/2}{\left|{\sum_{\lambda^{}_{0}\in\left\{-1,1\right\}} \sum_{\lambda^{}_{1}=0} \sum_{\lambda^{}_{2}=-1/2}^{1/2} \sum_{\lambda^{}_{3}=-1/2}^{1/2}{A^{12}_{\lambda^{}_{0}, \lambda^{}_{1}, \lambda^{}_{2}, \lambda^{}_{3}} d^{\frac{1}{2}}_{\lambda^{}_{2},m_{2}}\left(\zeta^2_{3(1)}\right) d^{\frac{1}{2}}_{\lambda^{}_{3},m_{3}}\left(\zeta^3_{3(1)}\right) d^{1}_{m_{0},\lambda^{}_{0}}\left(\zeta^0_{3(1)}\right) + A^{13}_{\lambda^{}_{0}, \lambda^{}_{1}, \lambda^{}_{2}, \lambda^{}_{3}} d^{\frac{1}{2}}_{\lambda^{}_{2},m_{2}}\left(\zeta^2_{2(1)}\right) d^{\frac{1}{2}}_{\lambda^{}_{3},m_{3}}\left(\zeta^3_{2(1)}\right) d^{1}_{m_{0},\lambda^{}_{0}}\left(\zeta^0_{2(1)}\right)}}\right|^{2}}\]

Warning

The DalitzPlotDecomposition formalism uses different indices for the initial and final state, so relabel the reaction with relabel_edge_ids() first.

Hide code cell source
src = qrules.io.asdot(
    reaction_123,
    collapse_graphs=True,
    render_initial_state_id=True,
)
graphviz.Source(src)
../../../_images/d2165019b5954d0a27fb2e6b3f70bcc83677fbf83329862453b22ab33ccd4c4b.svg

This method introduces several new angles that are defined through the kinematic_variables:

Hide code cell source
dpd_angles = {
    k: v for k, v in dpd_model.kinematic_variables.items() if "zeta" in str(k)
}
src = aslatex(dpd_angles)
Math(src)
\[\begin{split}\displaystyle \begin{array}{rcl} \zeta^0_{2(1)} &=& - \operatorname{acos}{\left(\frac{- 2 m_{0}^{2} \left(- m_{1}^{2} - m_{2}^{2} + m_{{p}_{12}}^{2}\right) + \left(m_{0}^{2} + m_{1}^{2} - m_{{p}_{23}}^{2}\right) \left(m_{0}^{2} + m_{2}^{2} - m_{{p}_{13}}^{2}\right)}{\sqrt{\lambda\left(m_{0}^{2}, m_{2}^{2}, m_{{p}_{13}}^{2}\right)} \sqrt{\lambda\left(m_{0}^{2}, m_{{p}_{23}}^{2}, m_{1}^{2}\right)}} \right)} \\ \zeta^0_{3(1)} &=& \operatorname{acos}{\left(\frac{- 2 m_{0}^{2} \left(- m_{1}^{2} - m_{3}^{2} + m_{{p}_{13}}^{2}\right) + \left(m_{0}^{2} + m_{1}^{2} - m_{{p}_{23}}^{2}\right) \left(m_{0}^{2} + m_{3}^{2} - m_{{p}_{12}}^{2}\right)}{\sqrt{\lambda\left(m_{0}^{2}, m_{1}^{2}, m_{{p}_{23}}^{2}\right)} \sqrt{\lambda\left(m_{0}^{2}, m_{{p}_{12}}^{2}, m_{3}^{2}\right)}} \right)} \\ \zeta^2_{2(1)} &=& \operatorname{acos}{\left(\frac{2 m_{2}^{2} \left(- m_{0}^{2} - m_{3}^{2} + m_{{p}_{12}}^{2}\right) + \left(m_{0}^{2} + m_{2}^{2} - m_{{p}_{13}}^{2}\right) \left(- m_{2}^{2} - m_{3}^{2} + m_{{p}_{23}}^{2}\right)}{\sqrt{\lambda\left(m_{0}^{2}, m_{2}^{2}, m_{{p}_{13}}^{2}\right)} \sqrt{\lambda\left(m_{{p}_{23}}^{2}, m_{2}^{2}, m_{3}^{2}\right)}} \right)} \\ \zeta^2_{3(1)} &=& \operatorname{acos}{\left(\frac{2 m_{2}^{2} \left(m_{1}^{2} + m_{3}^{2} - m_{{p}_{13}}^{2}\right) + \left(- m_{1}^{2} - m_{2}^{2} + m_{{p}_{12}}^{2}\right) \left(- m_{2}^{2} - m_{3}^{2} + m_{{p}_{23}}^{2}\right)}{\sqrt{\lambda\left(m_{{p}_{12}}^{2}, m_{1}^{2}, m_{2}^{2}\right)} \sqrt{\lambda\left(m_{{p}_{23}}^{2}, m_{2}^{2}, m_{3}^{2}\right)}} \right)} \\ \zeta^3_{2(1)} &=& - \operatorname{acos}{\left(\frac{2 m_{3}^{2} \left(m_{1}^{2} + m_{2}^{2} - m_{{p}_{12}}^{2}\right) + \left(- m_{1}^{2} - m_{3}^{2} + m_{{p}_{13}}^{2}\right) \left(- m_{2}^{2} - m_{3}^{2} + m_{{p}_{23}}^{2}\right)}{\sqrt{\lambda\left(m_{{p}_{13}}^{2}, m_{3}^{2}, m_{1}^{2}\right)} \sqrt{\lambda\left(m_{{p}_{23}}^{2}, m_{2}^{2}, m_{3}^{2}\right)}} \right)} \\ \zeta^3_{3(1)} &=& - \operatorname{acos}{\left(\frac{2 m_{3}^{2} \left(- m_{0}^{2} - m_{2}^{2} + m_{{p}_{13}}^{2}\right) + \left(m_{0}^{2} + m_{3}^{2} - m_{{p}_{12}}^{2}\right) \left(- m_{2}^{2} - m_{3}^{2} + m_{{p}_{23}}^{2}\right)}{\sqrt{\lambda\left(m_{0}^{2}, m_{3}^{2}, m_{{p}_{12}}^{2}\right)} \sqrt{\lambda\left(m_{{p}_{23}}^{2}, m_{3}^{2}, m_{2}^{2}\right)}} \right)} \\ \end{array}\end{split}\]

Note that the amplitudes are the same as those in the non-aligned model:

Warning

This behavior is a bug that will be fixed through ComPWA/ampform#318.

Hide code cell source
render_amplitudes(dpd_model)
\[\begin{split}\displaystyle \begin{array}{rcl} A^{12}_{-1, 0, - \frac{1}{2}, - \frac{1}{2}} &=& - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{+1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},\frac{1}{2}}\left(- \phi^{12}_{1},\theta^{12}_{1},0\right) D^{1}_{-1,0}\left(- \phi_{12},\theta_{12},0\right) - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{-1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},\frac{1}{2}}\left(- \phi^{12}_{1},\theta^{12}_{1},0\right) D^{1}_{-1,1}\left(- \phi_{12},\theta_{12},0\right) \\ A^{12}_{1, 0, - \frac{1}{2}, \frac{1}{2}} &=& - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{+1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},\frac{1}{2}}\left(- \phi^{12}_{1},\theta^{12}_{1},0\right) D^{1}_{1,0}\left(- \phi_{12},\theta_{12},0\right) - C_{J/\psi(1S) \to N(1650)^{+}_{+1/2} \overline{p}_{-1/2}; N(1650)^{+} \to K^{0}_{0} \Sigma^{+}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},\frac{1}{2}}\left(- \phi^{12}_{1},\theta^{12}_{1},0\right) D^{1}_{1,-1}\left(- \phi_{12},\theta_{12},0\right) \\ A^{13}_{-1, 0, \frac{1}{2}, - \frac{1}{2}} &=& - C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{+1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},\frac{1}{2}}\left(- \phi^{13}_{1},\theta^{13}_{1},0\right) D^{1}_{-1,0}\left(- \phi_{13},\theta_{13},0\right) - C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{-1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},\frac{1}{2}}\left(- \phi^{13}_{1},\theta^{13}_{1},0\right) D^{1}_{-1,-1}\left(- \phi_{13},\theta_{13},0\right) \\ A^{13}_{1, 0, \frac{1}{2}, \frac{1}{2}} &=& C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{+1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{\frac{1}{2},- \frac{1}{2}}\left(- \phi^{13}_{1},\theta^{13}_{1},0\right) D^{1}_{1,0}\left(- \phi_{13},\theta_{13},0\right) - C_{J/\psi(1S) \to \overline{\Sigma}(1660)^{-}_{+1/2} \Sigma^{+}_{-1/2}; \overline{\Sigma}(1660)^{-} \to K^{0}_{0} \overline{p}_{+1/2}} D^{\frac{1}{2}}_{- \frac{1}{2},- \frac{1}{2}}\left(- \phi^{13}_{1},\theta^{13}_{1},0\right) D^{1}_{1,-1}\left(- \phi_{13},\theta_{13},0\right) \\ & \dots \\ \end{array}\end{split}\]

Axis-angle method#

The second spin alignment method is the ‘axis-angle method’ [1]. This method results in much larger expressions and is therefore much less efficient, but theoretically it can handle \(n\)-body final states. It can be selected as follows:

from ampform.helicity.align.axisangle import AxisAngleAlignment

builder.config.spin_alignment = AxisAngleAlignment()
axisangle_model = builder.formulate()
Hide code cell source
latex = sp.multiline_latex(
    sp.Symbol("I"),
    axisangle_model.intensity.evaluate(),
    environment="eqnarray",
)
Math(latex)
\[\begin{split}\displaystyle \begin{eqnarray} I & = & \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{-1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{-1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{-1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{-1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{-1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{-1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{-1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{-1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{- \frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \nonumber\\ & & + \left|{\sum_{\lambda^{01}_{0}=0} \sum_{\mu^{01}_{0}=0} \sum_{\nu^{01}_{0}=0} \sum_{\lambda^{01}_{1}=-1/2}^{1/2} \sum_{\mu^{01}_{1}=-1/2}^{1/2} \sum_{\nu^{01}_{1}=-1/2}^{1/2} \sum_{\lambda^{01}_{2}=-1/2}^{1/2}{A^{01}_{1, \lambda^{01}_{0}, - \lambda^{01}_{1}, - \lambda^{01}_{2}} D^{0}_{0,\nu^{01}_{0}}\left(\alpha^{01}_{0},\beta^{01}_{0},\gamma^{01}_{0}\right) D^{0}_{\mu^{01}_{0},\lambda^{01}_{0}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{0}_{\nu^{01}_{0},\mu^{01}_{0}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{01}_{2}}\left(\phi_{01},\theta_{01},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{01}_{1}}\left(\alpha^{01}_{1},\beta^{01}_{1},\gamma^{01}_{1}\right) D^{\frac{1}{2}}_{\mu^{01}_{1},\lambda^{01}_{1}}\left(\phi^{01}_{0},\theta^{01}_{0},0\right) D^{\frac{1}{2}}_{\nu^{01}_{1},\mu^{01}_{1}}\left(\phi_{01},\theta_{01},0\right)} + \sum_{\lambda^{02}_{0}=0} \sum_{\mu^{02}_{0}=0} \sum_{\nu^{02}_{0}=0} \sum_{\lambda^{02}_{1}=-1/2}^{1/2} \sum_{\lambda^{02}_{2}=-1/2}^{1/2} \sum_{\mu^{02}_{2}=-1/2}^{1/2} \sum_{\nu^{02}_{2}=-1/2}^{1/2}{A^{02}_{1, \lambda^{02}_{0}, - \lambda^{02}_{1}, - \lambda^{02}_{2}} D^{0}_{0,\nu^{02}_{0}}\left(\alpha^{02}_{0},\beta^{02}_{0},\gamma^{02}_{0}\right) D^{0}_{\mu^{02}_{0},\lambda^{02}_{0}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{0}_{\nu^{02}_{0},\mu^{02}_{0}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\lambda^{02}_{1}}\left(\phi_{02},\theta_{02},0\right) D^{\frac{1}{2}}_{\frac{1}{2},\nu^{02}_{2}}\left(\alpha^{02}_{2},\beta^{02}_{2},\gamma^{02}_{2}\right) D^{\frac{1}{2}}_{\mu^{02}_{2},\lambda^{02}_{2}}\left(\phi^{02}_{0},\theta^{02}_{0},0\right) D^{\frac{1}{2}}_{\nu^{02}_{2},\mu^{02}_{2}}\left(\phi_{02},\theta_{02},0\right)}}\right|^{2} \end{eqnarray}\end{split}\]

This method of alignment introduces several Wigner rotation angles to the HelicityModel.kinematic_variables. An example:

Hide code cell source
alpha = sp.Symbol("alpha_0^01", real=True)
Math(aslatex({alpha: axisangle_model.kinematic_variables[alpha]}))
\[\begin{split}\displaystyle \begin{array}{rcl} \alpha^{01}_{0} &=& \operatorname{atan}_{2}{\left(\boldsymbol{B}\left(-\left(p_{0}\right)\right) \boldsymbol{B}\left({p}_{01}\right) \boldsymbol{B}\left(\boldsymbol{B}\left({p}_{01}\right) p_{0}\right)\left[:, 3, 2\right],\boldsymbol{B}\left(-\left(p_{0}\right)\right) \boldsymbol{B}\left({p}_{01}\right) \boldsymbol{B}\left(\boldsymbol{B}\left({p}_{01}\right) p_{0}\right)\left[:, 3, 1\right] \right)} \\ \end{array}\end{split}\]

For more information about these angles, see Compute Wigner rotation angles in TR-015.