Amplitude symmetrization#
Amplitudes for reactions with indistinguishable particles in the final state, such as \(D^+ \to \pi^+ \pi^+ \pi^-\), should be symmetrized, meaning that the amplitudes of the different subsystems are indistinguishable but for kinematic variables.
Note that QRules removes transitions that are indistinguishable, since it only considers quantum states, not relativistic kinematics.
reaction = qrules.generate_transitions(
initial_state="D+",
final_state=["pi+", "pi+", "pi-"],
allowed_intermediate_particles=["rho(770)0"],
)
Internally, AmpForm’s HelicityAmplitudeBuilder permutates these transitions again, so that all kinematically distinguishable subsystems are available.
assert len(reaction.transitions) == 1
permutated_topologies = perform_combinatorics(reaction.transitions[0])
The resulting HelicityModel contains only one amplitude that contains two terms with different kinematic variables:
bw_builder = RelativisticBreitWignerBuilder()
model_builder = ampform.HelicityAmplitudeBuilder(reaction)
for name in reaction.get_intermediate_particles().names:
model_builder.dynamics.assign(name, bw_builder)
model = model_builder.formulate()
Math(aslatex(model.amplitudes, terms_per_line=1))
but the parameters of both amplitudes are the same:
Some reactions result in amplitudes with sign flips. An example is \(J/\psi \to \gamma \pi^0 \pi^0\), where the parity prefactor of the \(\gamma\) results in a negative sign in some terms of the amplitude.
reaction = qrules.generate_transitions(
initial_state="J/psi(1S)",
final_state=["gamma", "pi0", "pi0"],
allowed_intermediate_particles=["omega(782)"],
formalism="helicity",
)
bw_builder = RelativisticBreitWignerBuilder()
model_builder = ampform.HelicityAmplitudeBuilder(reaction)
for name in reaction.get_intermediate_particles().names:
model_builder.dynamics.assign(name, bw_builder)
model = model_builder.formulate()