ThreeBodyDecay

class madspace.ThreeBodyDecay(self: madspace._madspace_py.ThreeBodyDecay, com: bool)

Bases: Mapping

Genuine \(1 \to 3\) decay block.

Splits a parent momentum into three on-shell momenta, \(p_0 = p_1 + p_2 + p_3\) [1]. In the parent rest frame the five degrees of freedom are the daughter energies \(E_1, E_2\), the polar and azimuthal angles of \(\vec p_1\), and an azimuth \(\beta\) of \(\vec p_2\) about \(\vec p_1\); the opening angle between \(\vec p_1\) and \(\vec p_2\) is fixed by energy-momentum conservation. All five variables are sampled flat within their kinematic ranges, giving a constant \(1/8\) measure (Sec. 2.2.6 of [1], following [2]).

batch is the leading batch dimension. Masses are inputs here: supplied on the forward call and recovered by the inverse.

Inputs

  • random_energy1 – float, shape (batch,) – random number for \(E_1\).

  • random_energy2 – float, shape (batch,) – random number for \(E_2\).

  • random_phi – float, shape (batch,) – azimuth of \(\vec p_1\).

  • random_cos_theta – float, shape (batch,) – polar angle of \(\vec p_1\).

  • random_beta – float, shape (batch,) – azimuth of \(\vec p_2\) about \(\vec p_1\).

  • mass0 – float, shape (batch,) – parent mass.

  • mass1, mass2, mass3 – float, shape (batch,) – daughter masses.

  • com_momentum – float, shape (batch, 4) – parent four-momentum. Present only when com is false.

Conditions

  • None.

Outputs

  • momentum1, momentum2, momentum3 – float, shape (batch, 4) – the daughter momenta.

In addition every mapping returns a weight (float, shape (batch,)), the Jacobian of the transformation.

References

Parameters:

com – If true the decay is generated in the parent rest frame, otherwise the parent momentum is taken from the com_momentum input.

random_dim(self: madspace._madspace_py.ThreeBodyDecay) → int

Number of uniform random inputs consumed by the forward mapping (5).