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_i inputs select, per \(2 \to 3\) peel, which of the two branches to take. See Sec. 2.2.5 of [1], following [2].

batch is the leading batch dimension. n_out is the number of outgoing particles and n = n_out + 2 the 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,) – the n_out outgoing 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) – the n momenta (incoming beams first, then outgoing).

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

References

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|^p sampling of every momentum transfer; see Invariant.

  • s_invariant_power – Exponent of the 1/s^p sampling 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_r separations; 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, x2 as conditions).