Every other measurement in this chapter fits a curve to data. This one fits nothing at all, which is why it survives knowing nothing about the dynamics underneath.
🎯 Why this matters
All of it rests on the measure being flat, which is a theorem rather than a convention. Plot the same events in different variables and structure appears that means nothing at all.§4.2 used a Dalitz plot Dalitz plot the (m²₁₂, m²₁₃) plane for a three-body final state. Its defining property is that the phase-space element is uniform, so every non-uniformity in the density of points is a property of the matrix element. defined in §4.3-4.4 — open in glossary to find the Σ(1385) and took one property of it on trust: that the density of points means something, because the kinematics spreads events evenly. This section proves that, and then does something much better with it.
The payoff is that a three-body decay’s spin and parity can be read off the shape of its empty regions — no angular fit, no polarized beam, no model of the dynamics. Six quantum-number assignments give six distinct patterns of zeros, and comparing a scatter plot with those patterns is the whole measurement. It is how the meson η m = 547.862 MeV · Q = 0 · JP = 0− content uū, dd̄, ss̄ τ / Γ = 1.31 ± 0.05 keV open in the particle explorer , the meson ω m = 782.66 MeV · Q = 0 · JP = 1− content uū, dd̄ τ / Γ = 8.68 ± 0.13 MeV open in the particle explorer and the K were pinned down, and it is what forced Lee and Yang to propose that parity is violated.
4.3 Why the density means something
A three-particle final state has nine momentum components, constrained by three equations of momentum conservation and one of energy conservation: five independent variables. Three of them are orientation — two angles fixing the normal to the decay plane, and one fixing the rotation of the momentum triangle within that plane. If the parent is unpolarized, nothing depends on those.
Two variables are left, and they describe the shape of the momentum triangle. Several equivalent choices exist, and they are linearly related:
Bettini p. 141. The squared mass of a pair and the energy of the third particle are the same variable in different clothes — which is why the axes can be either.
Every symbol, one at a time
Hover or tap a symbol above — it lights up in the equation and its meaning, units and type appear here.
🪜 Dalitz's theorem: the phase-space element is uniform
Step 1 of 6 — Start from the three-body phase space(4.19)
Why you may do this: The Lorentz-invariant phase space of §1.6–1.7, written for three bodies. Constant factors are dropped throughout — only the SHAPE of the density matters here.
Bettini pp. 141–142, Eqs. (4.19)–(4.24). Five lines, and the only trick is which angle to integrate over.
💡 What this really says — a Dalitz plot needs no subtraction, because its measure is flat
Most distributions in physics need a background subtracted or a phase-space factor divided out before you can see anything. A Dalitz plot needs neither. The measure is flat by construction, so the density of points is , up to a constant.
That is a stronger statement than it first sounds. It means an experimenter with a few hundred events and a ruler can rule out a spin–parity assignment, because the prediction being tested is not a rate — it is a region where there should be nothing. Rates need efficiencies, luminosities and models. Empty regions need none of those.
The equilateral-triangle form below makes the same point geometrically: the sum of the distances from the three sides of an equilateral triangle is the same for every interior point, so plotting the three kinetic energies as those distances satisfies energy conservation automatically, and momentum conservation then confines the points inside a closed curve.
⚙️ Engineer’s bridge — a flat measure is a uniform prior
The reason a Dalitz plot is worth more than a histogram of one mass is the one a statistician would give: the sampling density is known and constant, so the observed density is the likelihood.
- In a general scatter of two derived quantities, a clump can mean the underlying process prefers that region or that your parametrisation piles up there. You cannot tell without computing the Jacobian.
- Dalitz’s theorem says the Jacobian is 1. The variables were chosen so that the kinematics contributes nothing, which is exactly the property that makes a change of variables safe to interpret.
You do the same thing when you choose a scale before plotting — log-frequency axes for a system whose behaviour is scale-invariant, or a probability plot whose straight line means “Gaussian” precisely because the transform absorbed the distribution you expect. Pick the coordinates in which “no structure” looks like “nothing”, and structure becomes self-evident.
Where it breaks: the flatness assumes an unpolarized parent and an integration over the decay-plane orientation. If the parent is polarized, the orientation angles carry information too and the plot is no longer the whole story — which is exactly the extra handle §9.18 uses on the Higgs.
Where it breaks: a flat Dalitz measure is a uniform prior only for a spinless initial state decaying to spinless particles. Give the parent spin or polarization and the orientation angles carry information the plot throws away — which is exactly the extra handle §9.18 uses on the Higgs. So “flat means no dynamics” is a statement about a projection, and a structureless Dalitz plot does not license “nothing is happening”: it licenses “nothing is happening in the two variables I plotted”.
Fig. 4.10 — the three-pion Dalitz plot in its equilateral form
Strength zero: the plot is uniform. That is Dalitz's theorem — the phase-space element is constant in these variables, so an isotropic decay fills the allowed region evenly and both projections are smooth. Every structure you see at higher strength is the matrix element, not the kinematics.
ω → π⁺π⁻π⁰ kinematics, drawn the way Dalitz drew it: each point's distances from the three sides are the three CM kinetic energies, so T₁ + T₂ + T₃ = Q is automatic and the closed curve is momentum conservation alone. The points are simulated with a flat matrix element and a seeded generator — this is what 'no dynamics' looks like, and everything in §4.4 is a departure from it.
🔢 Worked example — checking the theorem numerically
Dalitz’s theorem is easy to state and easy to doubt, so it is worth confirming that sampling uniformly in the squared masses really does correspond to uniform phase space — and, separately, that the triangle construction does what it claims.
Reproduce it
import numpy as np
M, m = 0.78266, np.array([0.13957, 0.13957, 0.134977])
m1, m2, m3 = m
S = M*M + (m*m).sum()
Q = M - m.sum()
print(f"omega -> pi+ pi- pi0 : M = {M} GeV, Q = M - sum(m) = {Q:.5f} GeV")
rng = np.random.default_rng(4)
n = 200000
s12 = rng.uniform((m1+m2)**2, (M-m3)**2, n)
s13 = rng.uniform((m1+m3)**2, (M-m2)**2, n)
s23 = S - s12 - s13
E1 = (M*M + m1*m1 - s23)/(2*M); E2 = (M*M + m2*m2 - s13)/(2*M)
E3 = (M*M + m3*m3 - s12)/(2*M)
p1 = np.sqrt(np.maximum(0, E1*E1 - m1*m1)); p2 = np.sqrt(np.maximum(0, E2*E2 - m2*m2))
p3 = np.sqrt(np.maximum(0, E3*E3 - m3*m3))
ok = (E1 > m1) & (E2 > m2) & (E3 > m3)
with np.errstate(invalid='ignore', divide='ignore'):
ok &= np.abs((p3*p3 - p1*p1 - p2*p2)/(2*p1*p2)) <= 1
T = np.stack([E1-m1, E2-m2, E3-m3])[:, ok]
print(f"uniform sampling in the two squared masses, {ok.sum()} of {n} points land inside")
print(f" |T1+T2+T3 - Q| : max over all of them = {np.abs(T.sum(0)-Q).max():.2e} GeV")
print(" -> energy conservation was never imposed; it follows from Eq. (4.18)")
h, _ = np.histogram(T[0], bins=10, range=(0, Q))
print(f" the T1 PROJECTION is not flat: bin counts {h[0]}..{h.max()}..{h[-1]}")
print(" -> a flat 2-D density has a non-flat 1-D projection, which is exactly")
print(" why the plot is used instead of a single histogram")
print(f"the allowed region is {100*ok.mean():.1f} % of the bounding rectangle") omega -> pi+ pi- pi0 : M = 0.78266 GeV, Q = M - sum(m) = 0.36854 GeV
uniform sampling in the two squared masses, 130741 of 200000 points land inside
|T1+T2+T3 - Q| : max over all of them = 1.67e-16 GeV
-> energy conservation was never imposed; it follows from Eq. (4.18)
the T1 PROJECTION is not flat: bin counts 9851..30363..0
-> a flat 2-D density has a non-flat 1-D projection, which is exactly
why the plot is used instead of a single histogram
the allowed region is 65.4 % of the bounding rectangle The first check is the interesting one. Sampling flat in the squared masses and converting to kinetic energies, every single point has to machine precision — energy conservation was never imposed, it came out of the linear relation (4.18). That is why the triangle construction works.
4.4 Reading spin and parity off the empty regions
Now use it. A meson decaying to three pions has a matrix element built from the only covariant quantities the CM frame offers, and symmetry decides which combinations are allowed.
Bettini p. 144. The entire toolkit: two independent vectors, one axial vector, and two independent scalars.
Every symbol, one at a time
Hover or tap a symbol above — it lights up in the equation and its meaning, units and type appear here.
💡 What this really says — the amplitude is a basis problem
The construction has exactly the shape of choosing a basis under constraints. You want an object that transforms as — a scalar for , a pseudoscalar for , a vector for , an axial vector for , since the three pions contribute an intrinsic parity of — and you must build it from .
Two further constraints then apply, and they are what makes the answer unique:
- the exchange symmetry demanded by Bose statistics and by the isospin of the three-pion state;
- the requirement that the object be non-zero, which fails more often than you would expect.
Notice what is not required: any knowledge of the interaction. The dynamics lives in an overall form factor that varies slowly, and slowly varying functions have no zeros. Only the zeros are predicted, and only the zeros are used.
Bettini p. 145. A three-pion system simply cannot be 0⁺ — one line, and it eliminates an assignment before any data is looked at.
Every symbol, one at a time
Hover or tap a symbol above — it lights up in the equation and its meaning, units and type appear here.
The six cases
The isospin of the three-pion state fixes the exchange symmetry, and that decides which combinations of the toolkit are allowed:
| required symmetry of M | why | |
|---|---|---|
| 0 | completely ANTIsymmetric | I = 0 forces the dipion isospin I₁₂ = 1 whichever pion you call the third, and an I = 1 dipion is antisymmetric — so the space part must be antisymmetric under every exchange to keep the whole amplitude symmetric. |
| 1, state π⁺π⁺π⁻ | symmetric in 1 ↔ 2 | Take π₃ = π⁻, the odd one out. The other two are identical bosons, so the amplitude must be symmetric under exchanging them. Nothing is required of the other pairs. |
| 1, state π⁰π⁺π⁻ | symmetric in 1 ↔ 2 |
Both I = 1 charge states therefore need the same thing — an amplitude symmetric under 1 ↔ 2 — so the six cases are (I = 0 or 1) × (J^P = 0⁻, 1⁻ or 1⁺). <strong>Three of the six have no zeros anywhere or zeros only at a point; the other three carve visible holes.</strong>
Figs. 4.12–4.13 — the vanishing-density regions, computed
phase space only
M = constant, by assumption
Vanishing density: none — this is the uniform filling Dalitz’s theorem predicts
The events are weighted by |M|², so the empty regions are computed, not drawn. Only zeros are predicted — the overall normalisation and any slowly varying form factor are not, which is why the analysis looks for depleted regions rather than fitting the whole density.
Every event is weighted by |M|² for the selected assignment, using Eqs. (4.30)–(4.35) evaluated from the three CM energies — so the empty regions are computed, not drawn on top. Points are simulated with a seeded generator. Compare with the book's Figs. 4.12 and 4.13; they are the same six pictures.
💡 What this really says — read the six patterns as a lookup table
Work through the selector and the logic of each case is short:
- I = 0, 0⁻ needs a completely antisymmetric scalar, and the only material is the energies: . It vanishes wherever two energies are equal — all three medians, a six-pointed star of emptiness.
- I = 0, 1⁻ needs a completely antisymmetric axial vector, and already is one. It vanishes on the boundary, where the three momenta are collinear and the decay plane degenerates.
- I = 0, 1⁺ needs an antisymmetric vector, built by weighting each momentum with an energy difference. Zero at the centre — all energies equal — and at the far end of each median.
- I = 1, 0⁻ needs a scalar symmetric in 1 ↔ 2, and a constant qualifies. No zeros anywhere.
- I = 1, 1⁻ needs a symmetric axial vector; is antisymmetric, so multiply by the antisymmetric . Zeros on the boundary and one median.
- I = 1, 1⁺ needs a symmetric vector: . Zero only where , at the foot of the vertical median.
Now the use. A sample of 3π decays lands on one of these six pictures, and the one with the depletions in the right places wins. That is the entire method — and, crucially, the assignment being measured is the final state’s, which need not be the parent’s: if the decay is strong all quantum numbers are conserved, if electromagnetic the isospin is not, and if weak the parity is not either.
📏 Why the widget’s zeros are not perfectly sharp
The book’s figures are drawn for the idealised case of three equal masses, where the zeros sit on exact geometric loci — the medians, the centre, the boundary.
The real π⁰ is 4.6 MeV lighter than the π±, and the amplitudes vanish where the energies are equal, not where the kinetic energies are. So in the widget the zero sits a little off the geometric centre, and the star is very slightly bent. The offset is a few parts in a thousand of the plot, which is invisible next to the size of the depleted regions — but it is the reason a computed figure and a drawn one never look identical, and it is worth knowing which one is the idealisation.
Set the third mass equal to the other two and the patterns snap onto the medians exactly.
🔢 Worked example — every zero, checked where the book says it is
Six formulas, six claimed vanishing loci vanishing-density region the locus on a Dalitz plot where the matrix element must be zero for a given J^P and I of the three-pion system. Six cases (Figs. 4.12–4.13); comparing them with data is how the quantum numbers of the η, ω and K were fixed. defined in §4.3-4.4 — open in glossary . Each can be tested by evaluating at a point on the locus and at a generic point.
Reproduce it
import numpy as np
M, (m1, m2, m3) = 0.78266, (0.13957, 0.13957, 0.134977)
S = M*M + m1*m1 + m2*m2 + m3*m3
def E(s13, s12): # the three CM energies
s23 = S - s12 - s13
return ((M*M+m1*m1-s23)/(2*M), (M*M+m2*m2-s13)/(2*M), (M*M+m3*m3-s12)/(2*M))
def amps(s13, s12): # Eqs. (4.30)-(4.35), squared
E1, E2, E3 = E(s13, s12)
p1 = np.sqrt(max(0, E1*E1-m1*m1)); p2 = np.sqrt(max(0, E2*E2-m2*m2))
p3 = np.sqrt(max(0, E3*E3-m3*m3))
dot = (p3*p3-p1*p1-p2*p2)/2 # p1.p2, from p3 = -(p1+p2)
q2 = max(0.0, p1*p1*p2*p2 - dot*dot) # |q|^2 = |p1 x p2|^2
a, b = 2*E2-E1-E3, E2+E3-2*E1
return {"I=0 0-": ((E1-E2)*(E2-E3)*(E3-E1))**2, "I=0 1-": q2,
"I=0 1+": a*a*p1*p1 + b*b*p2*p2 + 2*a*b*dot, "I=1 0-": 1.0,
"I=1 1-": q2*(E1-E2)**2, "I=1 1+": p3*p3}
def m23r(s12): # the boundary at fixed s12
r = np.sqrt(s12)
if r < m1+m2 or r > M-m3: return None
e2 = (s12-m1*m1+m2*m2)/(2*r); e3 = (M*M-s12-m3*m3)/(2*r)
q2 = np.sqrt(max(0, e2*e2-m2*m2)); q3 = np.sqrt(max(0, e3*e3-m3*m3))
return (e2+e3)**2-(q2+q3)**2, (e2+e3)**2-(q2-q3)**2
grid = [] # (s13, s12, how deep inside)
for s12 in np.linspace((m1+m2)**2+1e-6, (M-m3)**2-1e-6, 300):
r = m23r(s12)
if not r: continue
lo, hi = S-s12-r[1], S-s12-r[0]
for f in np.linspace(0.002, 0.998, 300):
grid.append((lo + f*(hi-lo), s12, (hi-lo)*f*(1-f)))
peak = {k: max(amps(g[0], g[1])[k] for g in grid) for k in amps(grid[0][0], grid[0][1])}
G = [(g[0], g[1]) for g in grid]
centre = min(G, key=lambda g: max(E(*g)) - min(E(*g))) # all energies equal
s12b = 0.5*((m1+m2)**2 + (M-m3)**2)
bound = (S - s12b - m23r(s12b)[0] - 1e-9, s12b) # a generic boundary point
onmed = [g for g in grid if abs(E(g[0], g[1])[0] - E(g[0], g[1])[1]) < 2e-4]
med = max(onmed, key=lambda g: g[2])[:2] # on E1 = E2, deep inside
vtx = max(G, key=lambda g: E(*g)[2]) # p1 = p2 = -p3/2
foot = min(G, key=lambda g: E(*g)[2] - m3) # T3 = 0
pts = [("centre", centre), ("boundary", bound), ("median, deep inside", med),
("T3 vertex", vtx), ("T3 = 0 foot", foot)]
print("|M|^2 for the six assignments, as a fraction of the largest value each reaches")
print(f"{'':22s}" + "".join(f"{n:>21s}" for n, _ in pts))
rows = {}
for k in peak:
vals = [amps(*p)[k]/peak[k] for _, p in pts]
rows[k] = vals
print(f"{k:22s}" + "".join(f"{v:21.1e}" for v in vals))
print()
print("zeros found (below 1e-4 of the maximum), against what the book draws:")
tag = {"I=0 0-": "all three medians Fig. 4.12(a)",
"I=0 1-": "the periphery Fig. 4.12(b)",
"I=0 1+": "centre and median vertices Fig. 4.12(c)",
"I=1 0-": "nothing Fig. 4.13(a)",
"I=1 1-": "periphery and one median Fig. 4.13(b)",
"I=1 1+": "the foot, where T3 = 0 Fig. 4.13(c)"}
for k, vals in rows.items():
where = [n for (n, _), v in zip(pts, vals) if v < 1e-4] or ["none"]
print(f" {k} : {', '.join(where):47s} {tag[k]}")
print()
print("note: the T3 vertex and the T3 = 0 foot both LIE ON the boundary, so every")
print(" amplitude with a periphery zero also reads zero there - the columns are")
print(" not independent, and the table is read row by row.") |M|^2 for the six assignments, as a fraction of the largest value each reaches
centre boundary median, deep inside T3 vertex T3 = 0 foot
I=0 0- 4.4e-15 4.4e-01 1.1e-05 1.8e-04 6.6e-05
I=0 1- 1.0e+00 1.5e-08 1.9e-01 1.2e-07 6.5e-08
I=0 1+ 6.6e-06 1.3e-01 7.2e-01 5.0e-05 1.0e+00
I=1 0- 1.0e+00 1.0e+00 1.0e+00 1.0e+00 1.0e+00
I=1 1- 4.2e-05 4.9e-08 8.8e-07 1.9e-11 1.1e-12
I=1 1+ 4.7e-01 3.9e-01 4.1e-02 1.0e+00 1.6e-06
zeros found (below 1e-4 of the maximum), against what the book draws:
I=0 0- : centre, median, deep inside, T3 = 0 foot all three medians Fig. 4.12(a)
I=0 1- : boundary, T3 vertex, T3 = 0 foot the periphery Fig. 4.12(b)
I=0 1+ : centre, T3 vertex centre and median vertices Fig. 4.12(c)
I=1 0- : none nothing Fig. 4.13(a)
I=1 1- : centre, boundary, median, deep inside, T3 vertex, T3 = 0 foot periphery and one median Fig. 4.13(b)
I=1 1+ : T3 = 0 foot the foot, where T3 = 0 Fig. 4.13(c)
note: the T3 vertex and the T3 = 0 foot both LIE ON the boundary, so every
amplitude with a periphery zero also reads zero there - the columns are
not independent, and the table is read row by row. Every row matches the figure it is supposed to. Three things are worth a second look.
The I = 1, 0⁻ row is 1.0 in every column — a constant amplitude has no zeros anywhere, which is exactly what makes it identifiable by a featureless plot rather than a patterned one. That is the assignment §4.5 will land on for the τ events, and it is what creates the θ–τ puzzle.
The I = 0, 1⁺ row is large on the median and zero at its vertex. The book is precise about this and it is easy to misread: the zeros are the centre and the far end of each median, not the median itself. Deep inside the median the amplitude is at 72 % of its maximum.
And the columns are not independent. The T₃ vertex and the T₃ = 0 foot both lie on the boundary, so every amplitude with a periphery zero necessarily reads zero in those columns too. The table has to be read row by row, which is why the snippet prints the verdict separately.
⚙️ Engineer’s bridge — testing for a null is cheaper than fitting a model
Everything about this method is chosen to avoid needing a model, and the design pattern generalises.
A rate needs calibration; a zero does not. To compare a predicted decay rate with data you need the efficiency, the luminosity, the branching ratios of everything upstream and a form factor. To compare a predicted empty region you need none of them — an efficiency that varies smoothly cannot manufacture a hole, and a form factor with no zeros cannot fill one.
And the six alternatives are mutually exclusive patterns, not numbers. That turns a parameter estimation into a classification, which is a far easier problem with a few hundred samples. You have made this trade whenever you tested a system by looking for a signature that cannot occur under the wrong hypothesis rather than by fitting both hypotheses and comparing residuals.
Where it breaks: an empty region is only informative if your acceptance covers it. If the detector never sees events near the boundary, “no events at the boundary” proves nothing — which is why the 1⁻ assignments, whose zeros live on the periphery, are the hardest of the six to establish.
Where it breaks: testing for a null needs the null to be somewhere you can look. A zero on the boundary of the phase space is where the density vanishes for kinematic reasons anyway, so “no events at the boundary” is consistent with every hypothesis and discriminates nothing — which is precisely why the assignments are the hardest of the six. Cheap tests are cheap because they check a strong prediction; when the prediction coincides with something that was going to be true regardless, the test costs the same and buys nothing.
🔑 If you remember only three things
-
Six patterns, and telling them apart needs no numbers. The assignment comes from which lines are empty, not from how many events sit anywhere.
-
§4.2 used this on trust and this section pays the debt. The uniform density was assumed one page earlier to make a Dalitz plot mean something.
-
Equal masses make the zeros exact and unequal ones blur them. The idealised medians and centres of the book’s figures are the limiting case, not the general one.
Where this goes next
- §4.5 is this method used three times: on the τ events (K → 3π), where a featureless plot gives I = 1 and and so creates the θ–τ puzzle θ–τ puzzle the same particle decaying to 2π (needing J^P = 0⁺) and to 3π (Dalitz analysis giving 0⁻). Resolved by Lee and Yang's proposal that the weak interaction violates parity. defined in §4.3-4.4 — open in glossary ; on the η; and on the ω, whose plot shows the 1⁻ periphery zero.
- Chapter 7 is the resolution of that puzzle — Lee and Yang’s proposal that the weak interaction violates parity, which these Dalitz plots forced.
- §9.18 determines the Higgs boson’s spin and parity from angular distributions, using the extra information a polarized production channel supplies — the handle this section deliberately integrated away.
✅ Check yourself — the Dalitz plot and what its holes mean
0/5 answered · 0 correct
1.Why does a Dalitz plot need no phase-space correction, when almost every other distribution in physics does?
2.In the triangle form, each point's distances from the three sides are the three kinetic energies. What does that construction buy?
3.Step the widget through the six assignments. Which one is identified by a plot with no features at all?
4.The amplitude vanishes on the boundary of the plot. Why there?
5.Why is this method described as testing a null rather than fitting a model?