Four-pion model-building catalogue

This note builds a readable catalogue for

\[\chi_{cJ} \to \pi^+_1 \pi^-_2 \pi^+_3 \pi^-_4, \qquad J = 0,2.\]

The first half is purely kinematical: it identifies which topology copies are needed before any resonance model is attached. The second half adds dynamics: toy Breit-Wigner lineshapes, LS-coupling expansion, a KinematicTask, RAMBO phase-space events, and small timing checks.

The two parent hypotheses are

\[\chi_{c0}(0^{++}), \qquad \chi_{c2}(2^{++}).\]

The topology catalogue is common to both. The LS lists differ because the production vertex knows the parent spin and parity.

Regeneration note: this tutorial is intentionally checked in as generated artifacts and is not rendered by docs/make.jl in CI. After editing this notebook, run

quarto render docs/four-pion-model.qmd --to gfm

and commit the updated docs/generated/four-pion-model.md file.

Setup

parentjpmass
chi_c00+3.4147
chi_c22+3.5562
namejpmasswidth
f00+0.980.07
rho1-0.7750.149
f22+1.2750.185
namejpmasswidth
a11+1.230.42
a22+1.320.11
pi00-1.30.25
pi11-1.60.3
pi22-1.670.26

Kinematic Topology Catalogue

The cascade class starts from one positive seed,

\[(((1,2),3),4) \equiv ((\pi^+_1\pi^-_2)\pi^+_3)\pi^-_4 .\]

Same-charge permutations generate the positive copies. Charge conjugation gives one negative seed, and applying the same charge-preserving permutations to that seed generates the negative copies. The order of children is preserved in this class, so the conjugate of (1,2) is (2,1).

stageR3_chargeR3_pionsR2_pairbachelorspectatorbracket
positive: identity+pi1+ pi2- pi3+pi1+ pi2-pi3+pi4-(((1, 2), 3), 4)
positive: swap pi++pi3+ pi2- pi1+pi3+ pi2-pi1+pi4-(((3, 2), 1), 4)
positive: swap pi-+pi1+ pi4- pi3+pi1+ pi4-pi3+pi2-(((1, 4), 3), 2)
positive: swap pi+ and pi-+pi3+ pi4- pi1+pi3+ pi4-pi1+pi2-(((3, 4), 1), 2)
conjugate: identity-pi2- pi1+ pi4-pi2- pi1+pi4-pi3+(((2, 1), 4), 3)
conjugate: swap pi+-pi2- pi3+ pi4-pi2- pi3+pi4-pi1+(((2, 3), 4), 1)
conjugate: swap pi--pi4- pi1+ pi2-pi4- pi1+pi2-pi3+(((4, 1), 2), 3)
conjugate: swap pi+ and pi--pi4- pi3+ pi2-pi4- pi3+pi2-pi1+(((4, 3), 2), 1)

The second topology class has two two-body isobars,

\[\chi_{cJ} \to R_2(\pi^+\pi^-)\,R_2(\pi^+\pi^-).\]

Here reversed child order inside both two-body pairs is a bookkeeping duplicate. This is the useful cross-check:

\[((1,2),(3,4)) \sim ((2,1),(4,3)), \qquad A_{(12)(34)} + A_{(21)(43)} = 2 A_{(12)(34)} .\]

R2a_pairR2b_pairbracket
pi1+ pi2-pi3+ pi4-((1, 2), (3, 4))
pi1+ pi4-pi3+ pi2-((1, 4), (3, 2))
stagerawcanonical
Bose: identity((1, 2), (3, 4))((1, 2), (3, 4))
Bose: swap pi+((3, 2), (1, 4))((1, 4), (3, 2))
Bose: swap pi-((1, 4), (3, 2))((1, 4), (3, 2))
Bose: swap pi+ and pi-((3, 4), (1, 2))((1, 2), (3, 4))
conjugate seed((2, 1), (4, 3))((1, 2), (3, 4))

LS Catalogue

The following tables attach resonance quantum numbers and ask CascadeDecays.jl for the allowed LS couplings. The construction is still kinematic plus spin-parity bookkeeping; no lineshape parameters enter yet.

parentr3r2parent -\> R3 piR3 -\> R2 piR2 -\> pi pin_lsexplicit_chains
chi_c0a1f0(L=1, S=1)(L=1, S=0)(L=0, S=0)18
chi_c0a1rho(L=1, S=1)(L=0, S=1), (L=2, S=1)(L=1, S=0)216
chi_c0a1f2(L=1, S=1)(L=1, S=2), (L=3, S=2)(L=2, S=0)216
chi_c0a2f0forbiddenforbidden(L=0, S=0)00
chi_c0a2rhoforbidden(L=2, S=1)(L=1, S=0)00
chi_c0a2f2forbidden(L=1, S=2), (L=3, S=2)(L=2, S=0)00
chi_c0pi0f0(L=0, S=0)(L=0, S=0)(L=0, S=0)18
chi_c0pi0rho(L=0, S=0)(L=1, S=1)(L=1, S=0)18
chi_c0pi0f2(L=0, S=0)(L=2, S=2)(L=2, S=0)18
chi_c0pi1f0forbiddenforbidden(L=0, S=0)00
chi_c0pi1rhoforbidden(L=1, S=1)(L=1, S=0)00
chi_c0pi1f2forbidden(L=2, S=2)(L=2, S=0)00
chi_c0pi2f0(L=2, S=2)(L=2, S=0)(L=0, S=0)18
chi_c0pi2rho(L=2, S=2)(L=1, S=1), (L=3, S=1)(L=1, S=0)216
chi_c0pi2f2(L=2, S=2)(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=2, S=0)324
chi_c2a1f0(L=1, S=1), (L=3, S=1)(L=1, S=0)(L=0, S=0)216
chi_c2a1rho(L=1, S=1), (L=3, S=1)(L=0, S=1), (L=2, S=1)(L=1, S=0)432
chi_c2a1f2(L=1, S=1), (L=3, S=1)(L=1, S=2), (L=3, S=2)(L=2, S=0)432
chi_c2a2f0(L=1, S=2), (L=3, S=2)forbidden(L=0, S=0)00
chi_c2a2rho(L=1, S=2), (L=3, S=2)(L=2, S=1)(L=1, S=0)216
chi_c2a2f2(L=1, S=2), (L=3, S=2)(L=1, S=2), (L=3, S=2)(L=2, S=0)432
chi_c2pi0f0(L=2, S=0)(L=0, S=0)(L=0, S=0)18
chi_c2pi0rho(L=2, S=0)(L=1, S=1)(L=1, S=0)18
chi_c2pi0f2(L=2, S=0)(L=2, S=2)(L=2, S=0)18
chi_c2pi1f0(L=2, S=1)forbidden(L=0, S=0)00
chi_c2pi1rho(L=2, S=1)(L=1, S=1)(L=1, S=0)18
chi_c2pi1f2(L=2, S=1)(L=2, S=2)(L=2, S=0)18
chi_c2pi2f0(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=2, S=0)(L=0, S=0)324
chi_c2pi2rho(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=1, S=1), (L=3, S=1)(L=1, S=0)648
chi_c2pi2f2(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=2, S=0)972
parentr2ar2bparent -\> R2a R2bR2a -\> pi piR2b -\> pi pin_lsexplicit_chains
chi_c0f0f0(L=0, S=0)(L=0, S=0)(L=0, S=0)12
chi_c0f0rho(L=1, S=1)(L=0, S=0)(L=1, S=0)12
chi_c0f0f2(L=2, S=2)(L=0, S=0)(L=2, S=0)12
chi_c0rhof0(L=1, S=1)(L=1, S=0)(L=0, S=0)12
chi_c0rhorho(L=0, S=0), (L=2, S=2)(L=1, S=0)(L=1, S=0)24
chi_c0rhof2(L=1, S=1), (L=3, S=3)(L=1, S=0)(L=2, S=0)24
chi_c0f2f0(L=2, S=2)(L=2, S=0)(L=0, S=0)12
chi_c0f2rho(L=1, S=1), (L=3, S=3)(L=2, S=0)(L=1, S=0)24
chi_c0f2f2(L=0, S=0), (L=2, S=2), (L=4, S=4)(L=2, S=0)(L=2, S=0)36
chi_c2f0f0(L=2, S=0)(L=0, S=0)(L=0, S=0)12
chi_c2f0rho(L=1, S=1), (L=3, S=1)(L=0, S=0)(L=1, S=0)24
chi_c2f0f2(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=0, S=0)(L=2, S=0)36
chi_c2rhof0(L=1, S=1), (L=3, S=1)(L=1, S=0)(L=0, S=0)24
chi_c2rhorho(L=0, S=2), (L=2, S=0), (L=2, S=1), (L=2, S=2), (L=4, S=2)(L=1, S=0)(L=1, S=0)510
chi_c2rhof2(L=1, S=1), (L=1, S=2), (L=1, S=3), (L=3, S=1), (L=3, S=2), (L=3, S=3), (L=5, S=3)(L=1, S=0)(L=2, S=0)714
chi_c2f2f0(L=0, S=2), (L=2, S=2), (L=4, S=2)(L=2, S=0)(L=0, S=0)36
chi_c2f2rho(L=1, S=1), (L=1, S=2), (L=1, S=3), (L=3, S=1), (L=3, S=2), (L=3, S=3), (L=5, S=3)(L=2, S=0)(L=1, S=0)714
chi_c2f2f2(L=0, S=2), (L=2, S=0), (L=2, S=1), (L=2, S=2), (L=2, S=3), (L=2, S=4), (L=4, S=2), (L=4, S=3), (L=4, S=4), (L=6, S=4)(L=2, S=0)(L=2, S=0)1020

Dynamics

The dynamic model below is deliberately small. It uses the chi_c2 parent and the a1 rho cascade family, expanded over all eight charge/Bose topology copies and all allowed LS products. The lineshapes are toy Breit-Wigners; the numbers only make the benchmark finite and reproducible.

parentstagebracketr3r2n_chains
chi_c2positive: identity(((1, 2), 3), 4)a1rho4
chi_c2positive: swap pi+(((3, 2), 1), 4)a1rho4
chi_c2positive: swap pi-(((1, 4), 3), 2)a1rho4
chi_c2positive: swap pi+ and pi-(((3, 4), 1), 2)a1rho4
chi_c2conjugate: identity(((2, 1), 4), 3)a1rho4
chi_c2conjugate: swap pi+(((2, 3), 4), 1)a1rho4
chi_c2conjugate: swap pi-(((4, 1), 2), 3)a1rho4
chi_c2conjugate: swap pi+ and pi-(((4, 3), 2), 1)a1rho4

Phase Space and Timing

The timing cells use only 100 flat phase-space events. The goal is a local sanity check: how much time is spent turning four-vectors into topology-local kinematics, and how much time is spent evaluating the toy coherent amplitude.

The first generated event illustrates the topology-local coordinates stored in a KinematicPoint before the amplitude is evaluated.

fieldvalue
reference topology(((1, 2), 3), 4)
stored topologies8
line masses20.0195, 0.0195, 0.0195, 0.0195, 1.4106, 3.8842, 12.6466
vertex angles(cosθ=0.754, ϕ=0.3538), (cosθ=-0.2195, ϕ=2.3847), (cosθ=0.7117, ϕ=-0.2778)
stepeventstotal_msmsperevent
KinematicPoint construction1001248.9112.4891
coherent amplitude1001814.0418.1404
sum(abs2, amplitude)10054.53690.545369

The benchmark model is intentionally not the full physics model. It exercises the same kinematic routing and amplitude machinery on a compact, auditable subset. The full catalogue above tells which additional resonance and LS families should be added when moving from this toy benchmark to the analysis model.