ColorOrderedMapping¶
-
class ColorOrderedMapping : public madspace::Mapping¶
Leading-color phase-space mapping following a color-ordered particle chain.
Generates the full final state as a chain of \((\tilde s, t)\) two-particle blocks (TwoToThreeParticleScattering) laid out along a color-ordered permutation of the particles, peeling one on-shell momentum off at a time from each beam, with a TwoToTwoParticleScattering or DoubleT central block joining the two sides [1]. It encodes no specific diagram topology. The
discrete_iinputs select, per \(2 \to 3\) peel, which of the two branches to take. See Sec. 2.2.5 of [1], following [2].batchis the leading batch dimension.n_outis the number of outgoing particles andn = n_out + 2the total.Inputs
random_i–float, shape(batch,)– the continuous random numbers (random_dim()of them).discrete_i–int, shape(batch,)– the two-solution choices (discrete_dim()of them).
Conditions
com_energy–float, shape(batch,)– total collision energy.mass_i–float, shape(batch,)– then_outoutgoing masses.x1,x2–float, shape(batch,)– beam momentum fractions. Present only when a rapidity bound is used (see the constructor).
Outputs
momentum_i–float, shape(batch, 4)– thenmomenta (incoming beams first, then outgoing).
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] R. Frederix, T. Vitos, “Leading-colour-based unweighted event
generation for multi-parton tree-level processes”,
https://arxiv.org/abs/2409.12128
Public Functions
-
ColorOrderedMapping(const std::vector<std::size_t> &color_order, double t_invariant_power = 0.8, double s_invariant_power = 0.8, const std::vector<double> &pt_min = {}, const std::vector<std::vector<double>> &m_inv_min = {}, const std::vector<std::vector<double>> &dr_min = {}, bool arcsine_s23 = true, const std::vector<double> &y_max = {})¶
- Parameters:
color_order – 0-based permutation of
{0, ..., n-1}(n = n_out + 2) giving the chain order; particles 0 and 1 are the incoming beams. See Topology.t_invariant_power – Exponent of the
1/|t|^psampling of every momentum transfer; see Invariant.s_invariant_power – Exponent of the
1/s^psampling of every time-like invariant; see Invariant.pt_min – Per-outgoing-particle minimum transverse momentum; empty disables the cut. See Cuts.
m_inv_min – Symmetric matrix of minimum pair invariant masses; empty disables the cut. See Cuts.
dr_min – Symmetric matrix of minimum pair
delta_rseparations; empty disables the cut. See Cuts.arcsine_s23 – Remap the random number of every 2->3 invariant with the arcsine map in the azimuth, removing the
1/|sin(phi)|edge peak of the weight; see TwoToThreeParticleScattering.y_max – Per-outgoing-particle bound on the absolute lab rapidity, negative (or empty) for none. Used where a block scatters the two beams in the partonic centre-of-mass frame, so that its momentum transfers fix the light-cone components of what it emits: the central 2->2 (bounds of the two sides), the double-t central block (|t2| at fixed |t1|) and the first peel of a single chain. A side or rest system is bounded when each of its particles is. The mapping then takes the beam momentum fractions
x1,x2(float, shape(batch,)) as two further conditions.
-
inline std::size_t random_dim() const¶
Number of continuous unit-hypercube inputs consumed by the forward map.
-
inline virtual std::size_t discrete_dim() const override¶
Number of discrete two-solution choices (one per 2->3 peel).
-
inline bool has_rapidity_window() const¶
Whether rapidity bounds narrow a block (and the mapping therefore takes
x1,x2as conditions).