TwoBodyDecay

class madspace.TwoBodyDecay(self: madspace._madspace_py.TwoBodyDecay, com: bool, pt_min: SupportsFloat = 0.0, y_max1: SupportsFloat = -1.0, y_max2: SupportsFloat = -1.0)

Bases: Mapping

Elementary \(1 \to 2\) decay block, angular parametrization.

Splits a parent momentum \(p_0\) into two on-shell momenta \(p_0 = p_1 + p_2\) [1]. Two-body kinematics fix the energies and three-momentum magnitudes from the masses. The remaining freedom is the polar and azimuthal angles of \(\vec p_1\) in the \(p_0\) rest frame, sampled uniformly,

\[\phi = 2\pi\,r_\phi, \qquad \cos\theta = 2\,r_{\cos\theta} - 1.\]

The momenta are then boosted back (Sec. 2.2.3 of [1]). The measure is flat in \((\phi, \cos\theta)\).

batch is the leading batch dimension. The masses are inputs here. They are supplied on the forward call and recovered by the inverse.

Inputs

  • random_phi – float, shape (batch,) – azimuthal-angle random number.

  • random_cos_theta – float, shape (batch,) – polar-angle random number.

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

  • mass1 – float, shape (batch,) – first daughter mass.

  • mass2 – float, shape (batch,) – second daughter mass.

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

Conditions

  • x1, x2 – float, shape (batch,) – beam momentum fractions. Present only when a transverse-momentum or rapidity bound is given (see the constructor).

Outputs

  • momentum1 – float, shape (batch, 4) – first daughter momentum.

  • momentum2 – float, shape (batch, 4) – second daughter momentum.

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.

  • pt_min – With com only: lower bound on the transverse momentum both products share, p sin(theta) (the parent is the partonic system, at rest up to a boost along the beam).

  • y_max1 – With com only: bound on the absolute lab rapidity of the first product, y + atanh(beta cos(theta)) with y = log(x1 / x2) / 2; negative for none.

  • y_max2 – The same for the second product.

When any of the three bounds is set, cos(theta) is sampled uniformly over the range they leave instead of over [-1, 1], the Jacobian shrinks accordingly (zero if nothing is left), and the mapping takes the beam momentum fractions x1, x2 (float, shape (batch,)) as conditions.

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

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