Skip to content

FEAT: implement final-state polarization - #200

Draft
redeboer wants to merge 6 commits into
mainfrom
FEAT/final-state-polarization
Draft

redeboer wants to merge 6 commits into
mainfrom
FEAT/final-state-polarization

Conversation

@redeboer

@redeboer redeboer commented Jul 29, 2026

Copy link
Copy Markdown
Member

✨ New features

  • Add polarized_final_states to DalitzPlotDecompositionBuilder.formulate() to measure final-state polarization through subsequent decays. The model sums each selected particle's helicity coherently with a Wigner-$D$ function and introduces decay couplings; unit default couplings recover the unpolarized intensity.
  • Add ampform_dpd.polarization helpers for decay-angle and coupling symbols, weak two-body decay couplings from the asymmetry parameter, and decay angles expressed through four-momenta. The angle definitions follow the selected reference subsystem's boost chain for both spectators and isobar decay products and are included in the model variables.

📝 Documentation

  • Add a polarization tutorial for $J/\psi \to K^0 \Sigma^+ \overline{p}$ with $\Sigma^+ \to p\pi^0$, demonstrating how the daughter direction reveals a relative helicity phase that the example's Dalitz-plot intensity cannot resolve.

Squash commit messages

* DOC: demonstrate polarization sensitivity in a tutorial
* FEAT: define final-state decay angles through four-momenta

@redeboer redeboer added the ✨ Feature New feature added to the package label Jul 29, 2026
@redeboer
redeboer force-pushed the FEAT/final-state-polarization branch 4 times, most recently from d6d12d4 to 6703753 Compare July 31, 2026 08:11
redeboer added 3 commits July 31, 2026 10:12
Add a polarized_final_states argument to
DalitzPlotDecompositionBuilder.formulate() that attaches one additional
Wigner-D function per amplitude for each selected final-state particle,
connecting its helicity (summed coherently) to the helicity of its decay
product (summed incoherently), weighted by final-state decay couplings
H^fs. With the default couplings of 1, the intensity is identical to the
model without the additional Wigner-D functions; for weak decays such as
Sigma+ -> p pi0, the couplings follow from the decay-asymmetry parameter
via the new formulate_weak_decay_couplings() helper. This makes
production-coupling phases visible that are flat directions in a
Dalitz-plot-only fit.

The new polarization example notebook demonstrates this on
J/psi -> K0 Sigma+ pbar: the proton direction in the Sigma+ rest frame
becomes sensitive to the Sigma+ polarization, while the Dalitz
distribution is unchanged.
The decay angles (phi_k, theta_k) of a polarized final-state particle
cannot be computed from the Mandelstam variables, since the decay
product lies outside the three-body decay plane. Formulate them with
AmpForm's compute_helicity_angles() over an extended four-body topology
in which final-state particle k decays further, and include the
resulting boost-chain expressions in AmplitudeModel.variables. The
expressions take four-momentum arrays p1, p2, p3 and q<k> (the analyzed
decay product) in the center-of-momentum frame as input, following the
boost chain of the reference subsystem.
@redeboer
redeboer force-pushed the FEAT/final-state-polarization branch from ea66d3b to cee6354 Compare July 31, 2026 08:13
@redeboer redeboer changed the title FEAT: implement final-state polarization Implement final-state polarization Sep 9, 2026
@redeboer redeboer added the 📝 Docs Improvements or additions to documentation label Sep 9, 2026
@redeboer redeboer changed the title Implement final-state polarization FEAT: implement final-state polarization Sep 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📝 Docs Improvements or additions to documentation ✨ Feature New feature added to the package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants