Welcome to AmpForm-DPD!

Welcome to AmpForm-DPD!#

Supported Python versions Google Colab Binder

This Python package is a (temporary) extension of AmpForm and provides a symbolic implementation of Dalitz-plot decomposition (10.1103/PhysRevD.101.034033) with SymPy. It has been extracted from the ComPWA/polarimetry repository, which is not yet public.

Installation#

The fastest way of installing this package is through PyPI:

python3 -m pip install ampform-dpd

This installs the latest version that you can find on the stable branch. The latest version on the main branch can be installed as follows:

python3 -m pip install git+https://github.com/ComPWA/ampform@main

You can substitute stable in the above command with main or any of the tags listed under the releases. In a similar way, you can list ampform-dpd as a dependency of your application in either setup.cfg or a requirements.txt file as:

ampform-dpd @ git+https://github.com/ComPWA/ampform-dpd@main

However, we highly recommend using the more dynamic, ‘editable installation’ instead. This goes as follows:

  1. Get the source code (see the Pro Git Book):

    git clone https://github.com/ComPWA/ampform-dpd.git
    cd ampform-dpd
    
  2. [Recommended] Create a virtual environment (see here or the tip below).

  3. Install the project in ‘editable installation’ with additional dependencies for the developer:

    python3 -m pip install -e .[dev]
    

That’s all! Have a look at the Welcome to AmpForm-DPD! page to try out the package, and see Help developing for tips on how to work with this ‘editable’ developer setup!

Tip

It’s easiest to install the project in a Conda environment. In that case, to install in editable mode, just run:

conda env create
conda activate ampform-dpd

This way of installing is also safer, because it pins all dependencies. Note you can also pin dependencies with pip, by running:

python3 -m pip install -e .[dev] -c .constraints/py3.x.txt

where you should replace the 3.x with the version of Python you want to use.

Physics#

Dalitz-plot decomposition allows us to separate variables that affect the angular distribution from variables that describe the dynamics. It allows rewriting a transition amplitude T as

T{λ}Λ(α,β,γ;{σ})=νDΛ,νJ(α,β,γ)O{λ}ν({σ}).

Here, Λ and ν indicate the allowed spin projections of the initial state, {λ} are the allowed spin projections of the final state (e.g. {λ}=λ1,λ3,λ3 for a three-body decay). The Euler angles α,β,γ are obtained by choosing a specific aligned center-of-momentum frame (“aligned CM”), see Fig. 2 in Ref [1], which gives us an “aligned” transition amplitude O{λ}ν that only depends on dynamic variables {σ} (in the case of a three-body decay, the three Mandelstam variables σ1,σ2,σ3).

These aligned transition amplitudes are then combined into an observable differential cross section (intensity distribution), using a spin density matrix ρΛ,Λ for the spin projections Λ of the initial state,

dσ/dΦ3=NΛ,ΛρΛ,Λν,νDΛ,νJ(α,β,γ)DΛ,νJ(α,β,γ){λ}O{λ}ν({σ})O{λ}ν({σ}).

Given the right alignment, the aligned transition amplitude can be written as

(1)#O{λ}ν({σ})=(ij)ks(ij)i,jτ{λ}Xs(σk)production:×ηJdν,τλkJ(θ^k(1))Hτ,λk0(ij),k(1)jkλkdecay:×ηsdτ,λiλjs(θij)Hλi,λj(ij)i,j(1)jjλjrotations:×dλ1,λ1j1(ζk(0)1)dλ2,λ2j2(ζk(0)2)dλ3,λ3j3(ζk(0)3).

Notice the general structure:

  • Summations: The outer sum is taken over the three decay chain combinations (ij)k{(23)1,(31)2,(12)3}. Next, we sum over the spin magnitudes s of all resonances[1], the corresponding allowed helicities τ, and allowed spin projections {λ} of the final state.

  • Dynamics: The function Xs only depends on a single Mandelstam variable and carries all the dynamical information about the decay chain. Typically, these are your K-matrix or Breit-Wigner lineshape functions.

  • Isobars: There is a Wigner d-function and a helicity coupling H for each isobar in the three-body decay chain: the 0(ij),k production node and the (ij)i,j decay node. The argument of these Wigner d-functions are the polar angles. The factors ηJ=2S+1 and ηs=2s+1 are normalization factors. The phase (1)jλ is added to both helicity couplings to convert to the Jacob-Wick particle-2 convention.[2] The convention treats the first and the second particle unequally, however, it enables the simple relation of the helicity couplings to the LS couplings explained below.

  • Wigner rotations: The last three Wigner d-functions represent Wigner rotations that appear when rotating the boosted frames of the production and decay isobar amplitudes back to the space-fixed CM frame.

If k=1, we have θ^k(1)=0, so the Wigner d function for the production isobar reduces to a Kronecker delta, dν,τλkJ(θ^k(1))=δν,τλk.

Equation (1) is written in terms of helicity couplings, but can be rewritten in terms of LS couplings, using

Hτ,λk0(ij),k=LSHLS0(ij),k2L+12J+1Cs,τ,jk,λkS,τλkCL,0,S,τλkJ,τλkHλi,λj(ij)i,j=lsHls0(ij),k2l+12s+1Cji,λi,jj,λjs,λiλjCl,0,s,λiλjs,λiλj.

The dynamics function is dependent on the LS values and we write XsLS;ls instead of Xs.

Examples#