DifferentialCrossSection

class DifferentialCrossSection : public madspace::FunctionGenerator

The fully differential cross section \(f(x)\).

Assembles the integrand of the phase-space integral: a MatrixElement evaluation multiplied by the flux factor, the PartonDensity values for the two beams, and \(\alpha_s\) from a RunningCoupling, all at the EnergyScale of the event [1]. The Cached* variants of the PDF and scale arguments reuse values already computed elsewhere in the graph.

With decay the generator instead describes the decay of a single incoming particle. The differential rate is then \(|M|^2 / (2 M)\) with \(M\) = cm_energy, in GeV, rather than a hadronic cross section in pb. There are no beams, hence no momentum fractions and no PDFs.

batch is the leading batch dimension.

Arguments

  • the arguments of matrix_element, plus

  • x1, x2 – float, shape (batch,) – parton momentum fractions (when input_momentum_fraction is true).

  • pdf_id – int, shape (batch,) – selected flavour combination.

  • pdf1, pdf2 – float, shape (batch,) – cached PDF values (with a CachedPdf argument).

  • alpha_s – float, shape (batch,) – cached coupling (with a CachedScale argument).

Returns

  • the return values of matrix_element, scaled to the differential cross section.

References

Public Functions

DifferentialCrossSection(const MatrixElement &matrix_element, double cm_energy, const std::optional<RunningCoupling> &running_coupling, const std::variant<std::monostate, EnergyScale, CachedScale> &energy_scale = std::monostate{}, const nested_vector2<me_int_t> &pid_options = {}, const std::variant<std::monostate, PdfGrid, CachedPdf> &pdf1 = std::monostate{}, const std::variant<std::monostate, PdfGrid, CachedPdf> &pdf2 = std::monostate{}, bool input_momentum_fraction = true, bool decay = false)
Parameters:
  • matrix_element – The squared matrix element.

  • cm_energy – Total collision energy.

  • running_coupling – Optional \(\alpha_s\) source.

  • energy_scale – An EnergyScale, a CachedScale tag, or nothing.

  • pid_options – Allowed flavour combinations of the two initial partons.

  • pdf1 – A PdfGrid, a CachedPdf tag, or nothing, for the first beam.

  • pdf2 – Likewise for the second beam.

  • input_momentum_fraction – If true, x1 / x2 are taken as inputs rather than reconstructed.

  • decay – If true, describe the decay of a single incoming particle instead of a collision.

inline const nested_vector2<me_int_t> &pid_options() const

The allowed initial-parton flavour combinations.

inline bool has_pdf(std::size_t pdf_index) const

Whether beam pdf_index (0 or 1) has a PDF attached.

inline const MatrixElement &matrix_element() const

The matrix element.

inline const std::optional<RunningCoupling> &running_coupling() const

The strong-coupling source, if any.

struct CachedPdf

Argument tag: take the PDF value from a value already in the graph.

struct CachedScale

Argument tag: take the scale / coupling from a value already in the graph.