D⁰ → K⁰ K⁺ K⁻#
The decay \(D^0 \to K^0K^+K^-\) has a spinless initial and final state, which means that there is no need to align spin with Dalitz-plot decomposition. This notebook shows that the model formulated by ampform
is the same as that formulated by AmpForm-DPD. To simplify this comparison, we do not define any dynamics.
Decay definition#
index |
name |
LaTeX |
\(J^P\) |
mass (MeV) |
width (MeV) |
---|---|---|---|---|---|
0 |
|
\(D^{0}\) |
\(0^-\) |
1,864 |
0 |
1 |
|
\(K^{0}\) |
\(0^-\) |
497 |
0 |
2 |
|
\(K^{-}\) |
\(0^-\) |
493 |
0 |
3 |
|
\(K^{+}\) |
\(0^-\) |
493 |
0 |
name |
LaTeX |
\(J^P\) |
mass (MeV) |
width (MeV) |
---|---|---|---|---|
|
\(a_{0}(980)^{-}\) |
\(0^+\) |
980 |
75 |
|
\(a_{0}(980)^{0}\) |
\(0^+\) |
980 |
75 |
|
\(a_{0}(980)^{+}\) |
\(0^+\) |
980 |
75 |
|
\(f_{0}(980)\) |
\(0^+\) |
990 |
60 |
Model formulation#
DPD model#
Note that, as opposed to Λc⁺ → pπ⁺K⁻ and J/ψ → K⁰Σ⁺p̅, there are no Wigner-\(d\) functions, because the final state is spinless.
There is an isobar Wigner-\(d\) function, which takes the following helicity angles as argument:
AmpForm model#
AmpForm does not formulate alignment Wigner-\(D\) functions. For the case of this spinless final state, this means the intensity is the same as that of the DPD model.
Phase space sample#
def generate_phase_space(reaction: ReactionInfo, size: int) -> dict[str, jnp.ndarray]:
rng = TFUniformRealNumberGenerator(seed=0)
phsp_generator = TFPhaseSpaceGenerator(
initial_state_mass=reaction.initial_state[-1].mass,
final_state_masses={i: p.mass for i, p in reaction.final_state.items()},
)
return phsp_generator.generate(size, rng)
phsp = generate_phase_space(AMPFORM_MODEL.reaction_info, size=100_000)
ampform_phsp = ampform_transformer(phsp)
dpd_phsp = dpd_transformer(phsp)
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
E0000 00:00:1754932512.189049 3565 cuda_dnn.cc:8579] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
E0000 00:00:1754932512.193273 3565 cuda_blas.cc:1407] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered
W0000 00:00:1754932512.204891 3565 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1754932512.204904 3565 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1754932512.204906 3565 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
W0000 00:00:1754932512.204908 3565 computation_placer.cc:177] computation placer already registered. Please check linkage and avoid linking the same target more than once.
WARNING: All log messages before absl::InitializeLog() is called are written to STDERR
I0000 00:00:1754932519.840521 3638 service.cc:152] XLA service 0x7ff88018c820 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
I0000 00:00:1754932519.840562 3638 service.cc:160] StreamExecutor device (0): Host, Default Version
I0000 00:00:1754932519.910729 3640 device_compiler.h:188] Compiled cluster using XLA! This line is logged at most once for the lifetime of the process.
Convert to numerical functions#
ampform_intensity_expr = cached.unfold(AMPFORM_MODEL)
dpd_intensity_expr = cached.unfold(DPD_MODEL)
ampform_func = cached.lambdify(
ampform_intensity_expr,
parameters=AMPFORM_MODEL.parameter_defaults,
)
dpd_func = cached.lambdify(
dpd_intensity_expr,
parameters=DPD_MODEL.parameter_defaults,
)