This page demonstrates deserialization and evaluation of a partial-wave analysis of a diffractively produced \(3\pi\) system. The analysis is performed independently in bins of \(3\pi\) mass and transferred momentum. The full analysis contains about 170 decay chains (about 88 waves, symmetrized for the two \(\pi^+\pi^-\) pairs) per bin. See INSPIRE-HEP 1391643 for details.
Import Python libraries
import loggingfrom pathlib import Pathimport jax.numpy as jnpimport matplotlib.pyplot as pltimport pandas as pdfrom ampform_dpd.io.serialization import ( compile_workspace, load_workspace, validate_checksums,)from matplotlib_inline.backend_inline import set_matplotlib_formatsthis_dir = Path(".").absolute()logging.getLogger("ampform.sympy").setLevel(logging.ERROR)set_matplotlib_formats("svg")
The JSON file contains four distributions from the same mass bin. load_workspace formulates all of them, their decays, and their named dynamics functions in one step.
models = workspace.distributions
pd.DataFrame({"Distribution": list(models),"Decay chains": [len(decay.chains) for decay in workspace.decays.values()],})
Distribution
Decay chains
0
compass_3pi_JP=1+_M=0_1540_1560
16
1
compass_3pi_JP=1-_M=1_1540_1560
2
2
compass_3pi_JP=2+_M=1_1540_1560
6
3
compass_3pi_JP=4+_M=1_1540_1560
4
Validation
validate_checksums converts real and complex references, transforms serialized coordinates, and returns one structured result per checkpoint. Failed comparisons or evaluations retain their diagnostics without interrupting the remaining checks.
The status marks 🟢, 🟡, and 🔴 indicate absolute differences of \(<10^{-10}\), \(<10^{-2}\), and \(\ge10^{-2}\), respectively. Failed evaluations are marked 🔴; the diagnostic column provides details.
Compute every serialized checkpoint
compiled_workspace = compile_workspace(workspace, backend="jax")checksum_results = validate_checksums(compiled_workspace)pd.DataFrame({"Distribution": [result.target for result in checksum_results],"Point": [result.point_name for result in checksum_results],"Reference": [result.reference for result in checksum_results],"Computed": [result.value for result in checksum_results],"Difference": [result.difference for result in checksum_results],"Status": ["🟢"if result.difference <1e-10else"🟡"if result.difference <1e-2else"🔴"for result in checksum_results ],"Diagnostic": [result.diagnostic for result in checksum_results],})
Distribution
Point
Reference
Computed
Difference
Status
Diagnostic
0
compass_3pi_JP=1+_M=0_1540_1560
validation_point1
0.557753+0.000000j
0.557753+0.000000j
1.321165e-14
🟢
None
1
compass_3pi_JP=1+_M=0_1540_1560
validation_point2
1.436252+0.000000j
1.436252+0.000000j
2.420286e-14
🟢
None
2
compass_3pi_JP=1+_M=0_1540_1560
validation_point3
0.108395+0.000000j
0.108395+0.000000j
4.579670e-16
🟢
None
3
compass_3pi_JP=1+_M=0_1540_1560
validation_point4
0.791847+0.000000j
0.791847+0.000000j
9.992007e-15
🟢
None
4
compass_3pi_JP=1-_M=1_1540_1560
validation_point1
0.045205+0.000000j
0.045205+0.000000j
4.718448e-16
🟢
None
5
compass_3pi_JP=1-_M=1_1540_1560
validation_point2
0.010651+0.000000j
0.010651+0.000000j
1.214306e-16
🟢
None
6
compass_3pi_JP=1-_M=1_1540_1560
validation_point3
0.018570+0.000000j
0.018570+0.000000j
1.734723e-16
🟢
None
7
compass_3pi_JP=1-_M=1_1540_1560
validation_point4
0.090084+0.000000j
0.090084+0.000000j
8.881784e-16
🟢
None
8
compass_3pi_JP=2+_M=1_1540_1560
validation_point1
0.017082+0.000000j
0.017082-0.000000j
3.825906e-17
🟢
None
9
compass_3pi_JP=2+_M=1_1540_1560
validation_point2
0.057953+0.000000j
0.057953+0.000000j
1.228281e-15
🟢
None
10
compass_3pi_JP=2+_M=1_1540_1560
validation_point3
0.035384+0.000000j
0.035384-0.000000j
2.462156e-16
🟢
None
11
compass_3pi_JP=2+_M=1_1540_1560
validation_point4
0.112218+0.000000j
0.112218-0.000000j
1.720854e-15
🟢
None
12
compass_3pi_JP=4+_M=1_1540_1560
validation_point1
0.020556+0.000000j
0.020556+0.000000j
5.412337e-16
🟢
None
13
compass_3pi_JP=4+_M=1_1540_1560
validation_point2
0.011818+0.000000j
0.011818+0.000000j
1.908196e-17
🟢
None
14
compass_3pi_JP=4+_M=1_1540_1560
validation_point3
0.017550+0.000000j
0.017550+0.000000j
1.110223e-16
🟢
None
15
compass_3pi_JP=4+_M=1_1540_1560
validation_point4
0.105833+0.000000j
0.105833+0.000000j
8.049117e-16
🟢
None
16
R(1274)
validation_point_m12sq
1.682682+0.620869j
1.682682+0.620869j
1.493652e-15
🟢
None
17
R(1690)
validation_point_m12sq
0.564308+0.103183j
0.564308+0.103183j
1.241267e-16
🟢
None
18
R(600)
validation_point_m12sq
0.101724+1.027344j
0.101724+1.027344j
2.423651e-16
🟢
None
19
R(768)
validation_point_m12sq
-1.732183+0.632399j
-1.732183+0.632399j
3.155847e-15
🟢
None
20
R(965)
validation_point_m12sq
-0.921258+2.147040j
-0.921258+2.147040j
1.938921e-15
🟢
None
Visualization
Dalitz plots
The four distributions in the selected \(3\pi\) mass bin are shown over the same pair of Mandelstam variables.