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
decaythe 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.batchis the leading batch dimension.Arguments
the arguments of
matrix_element, plusx1,x2–float, shape(batch,)– parton momentum fractions (wheninput_momentum_fractionis true).pdf_id–int, shape(batch,)– selected flavour combination.pdf1,pdf2–float, shape(batch,)– cached PDF values (with aCachedPdfargument).alpha_s–float, shape(batch,)– cached coupling (with aCachedScaleargument).
Returns
the return values of
matrix_element, scaled to the differential cross section.
References
[1] T. Heimel, O. Mattelaer, R. Winterhalder, “MadSpace”, https://arxiv.org/abs/2602.06895 (Sec. 3.2)
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
CachedScaletag, or nothing.pid_options – Allowed flavour combinations of the two initial partons.
pdf1 – A PdfGrid, a
CachedPdftag, or nothing, for the first beam.pdf2 – Likewise for the second beam.
input_momentum_fraction – If true,
x1/x2are 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.