TwoToThreeParticleScattering

class madspace.TwoToThreeParticleScattering(self: madspace._madspace_py.TwoToThreeParticleScattering, t_invariant_power: SupportsFloat = 0.0, t_mass: SupportsFloat = 0.0, t_width: SupportsFloat = 0.0, s_invariant_power: SupportsFloat = 0.0, s_mass: SupportsFloat = 0.0, s_width: SupportsFloat = 0.0, has_cut: bool = False, arcsine_s23: bool = True)

Bases: Mapping

Two-particle block in the double-invariant \((\tilde s, t)\) parametrization.

Replaces both angles of the two-particle block by Lorentz invariants. The polar angle becomes the momentum transfer \(t_{i-1}\) and the azimuth an extra time-like invariant \(\tilde s_i\) [1]. The pair \((\tilde s, t)\) alone does not fix the momenta. A recoil momentum (momentum3) supplies the scattering plane. This block therefore peels one on-shell momentum off a composite cluster and appears inside a recursive chain. The measure carries an inverse square-root Gram determinant,

\[\int \mathrm{d}\Phi_2^{(\tilde s, t)} = \int \mathrm{d}\tilde s_i \int \mathrm{d}|t_{i-1}|\; \frac{1}{8\sqrt{-\Delta_4}}.\]

\(|t_{i-1}|\) is drawn with an Invariant (from t_invariant_power / t_mass / t_width) and \(\tilde s_i\) with another (from s_invariant_power / s_mass / s_width). The discrete_choice input selects one of the two \(\cos\phi\) branches. See Sec. 2.2.5 of [1], following [2, 3].

On its kinematic range \(\tilde s_i\) is linear in \(\cos\phi\), and \(8\sqrt{-\Delta_4} = \sqrt{\lambda}\,(\tilde s^{\max} - \tilde s^{\min}) \,|\sin\phi|\), so the measure is flat in \(\phi\). Any density in \(\tilde s_i\) that is finite at the kinematic limits leaves an integrable \(1/|\sin\phi|\) in the weight, whose variance diverges logarithmically. With arcsine_s23 (the default) the random number of \(\tilde s_i\) is first mapped by an arcsine map that is flat in \(\phi/2\) between the limits of the sampled range, and only then handed to the power-law sampling of Invariant (a Breit-Wigner is not supported there). The weight stays bounded at the kinematic limits, and the importance sampling of \(\tilde s_i\) is kept.

batch is the leading batch dimension.

Inputs

  • discrete_choice – int, shape (batch,) – which of the two two-body solutions to take.

  • random_s23 – float, shape (batch,) – random number for \(\tilde s_i\).

  • random_t1 – float, shape (batch,) – random number for \(|t_{i-1}|\).

  • mass1, mass2 – float, shape (batch,) – the two resolved masses.

Conditions

  • momentum_in1 – float, shape (batch, 4) – first incoming momentum.

  • momentum_in2 – float, shape (batch, 4) – second incoming momentum; momentum12, the system p1 + p2, when p12_condition is true.

  • momentum3 – float, shape (batch, 4) – recoil momentum defining the scattering plane.

  • etmin_1, etmin_2 – float, shape (batch,) – transverse-energy cuts. Present only when has_cut is true.

  • drcut – float, shape (batch,) – minimum angular separation. Present only when has_cut is true.

  • s23_min_cut – float, shape (batch,) – minimum \(\tilde s\). Present only when has_cut is true.

Outputs

  • momentum1, momentum2 – float, shape (batch, 4) – the two resolved momenta.

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

References

Parameters:
  • t_invariant_power – Exponent of the \(1/|t|^{\,p}\) sampling; see Invariant.

  • t_mass – t-channel propagator mass; see Invariant.

  • t_width – t-channel propagator width; see Invariant.

  • s_invariant_power – Exponent of the \(1/\tilde s^{\,p}\) sampling; see Invariant.

  • s_mass – s-channel resonance mass; see Invariant.

  • s_width – s-channel resonance width; see Invariant.

  • has_cut – If true, the etmin_*, drcut and s23_min_cut conditions restrict the invariants to the region passing the cuts; see Cuts.

  • arcsine_s23 – If true, remap the random number of \(\tilde s\) with the arcsine map in \(\phi\) before the invariant sampling, which removes the \(1/|\sin\phi|\) edge peak of the weight. Power-law sampling only: requires s_width = 0 (no resonance is expected in this block).

  • p12_condition – If true, the second condition is the outgoing system momentum12 = p1 + p2 itself instead of the second incoming momentum. A caller that holds it more precisely than pa + pb - p3 (a soft system next to the beams) keeps that precision.

discrete_dim(self: madspace._madspace_py.TwoToThreeParticleScattering) → int

Number of discrete inputs (1): which of the two two-body solutions.