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:
MappingElementary \(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)\).
batchis 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 whencomis 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
[1] T. Heimel, O. Mattelaer, R. Winterhalder, “MadSpace”, https://arxiv.org/abs/2602.06895 (Sec. 2.2.3)
- Parameters:
com – If true the decay is generated in the parent rest frame, otherwise the parent momentum is taken from the
com_momentuminput.pt_min – With
comonly: 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
comonly: 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).