TwoToThreeParticleScattering¶
-
class TwoToThreeParticleScattering : public madspace::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 (froms_invariant_power/s_mass/s_width). Thediscrete_choiceinput 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.batchis 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, whenp12_conditionis true.momentum3–float, shape(batch, 4)– recoil momentum defining the scattering plane.etmin_1,etmin_2–float, shape(batch,)– transverse-energy cuts. Present only whenhas_cutis true.drcut–float, shape(batch,)– minimum angular separation. Present only whenhas_cutis true.s23_min_cut–float, shape(batch,)– minimum \(\tilde s\). Present only whenhas_cutis 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
[1] T. Heimel, O. Mattelaer, R. Winterhalder, “MadSpace”, https://arxiv.org/abs/2602.06895 (Sec. 2.2.5)
[2] E. Byckling, K. Kajantie, Phys. Rev. 187 (1969) 2008, https://doi.org/10.1103/PhysRev.187.2008
[3] R. Frederix, T. Vitos, “Leading-colour-based unweighted event
generation for multi-parton tree-level processes”,
https://arxiv.org/abs/2409.12128
Public Functions
-
TwoToThreeParticleScattering(double t_invariant_power = 0, double t_mass = 0, double t_width = 0, double s_invariant_power = 0, double s_mass = 0, double s_width = 0, bool has_cut = false, bool arcsine_s23 = true, bool p12_condition = false)¶
- 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_*,drcutands23_min_cutconditions 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.
-
inline virtual std::size_t discrete_dim() const override¶
Number of discrete inputs (1): which of the two two-body solutions.