cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
DreesZeppenfeldCollinearFlux.cpp
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2023 Laurent Forthomme
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
25#include "CepGen/Physics/PDG.h"
26#include "CepGen/Utils/Limits.h"
27
28namespace cepgen {
33 public:
35 : CollinearFlux(params), scale_(steer<double>("scale")) {}
36
38 auto desc = CollinearFlux::description();
39 desc.setDescription("Drees-Zeppenfeld Q^{2}-dependent flux");
40 desc.add<double>("scale", 0.71);
41 return desc;
42 }
43
44 bool fragmenting() const override { return true; }
45 pdgid_t partonPdgId() const override { return PDG::photon; }
46
47 double fluxQ2(double x, double q2) const override {
48 if (!x_range_.contains(x, true))
49 return 0.;
50 const auto fq4 = std::pow(1 + q2 / scale_, -4); // Q^2-dependent form factor
51 return prefactor_ * 0.5 * (1. + std::pow(1. - x, 2)) / q2 * fq4;
52 }
53
54 protected:
55 double mass2() const override { return mp2_; }
56 const double scale_;
57 };
58} // namespace cepgen
59REGISTER_COLLINEAR_FLUX("DreesZeppenfeld", DreesZeppenfeldCollinearFlux);
#define REGISTER_COLLINEAR_FLUX(name, obj)
Add a generic collinear parton flux evaluator builder definition.
static ParametersDescription description()
Virtuality-dependent Drees-Zeppenfeld photon flux.
bool fragmenting() const override
Is initiator particle fragmenting after parton emission?
double fluxQ2(double x, double q2) const override
Compute the collinear flux for this x value and virtuality.
DreesZeppenfeldCollinearFlux(const ParametersList &params)
pdgid_t partonPdgId() const override
Parton PDG identifier.
double mass2() const override
Initiator particle squared mass (in )
bool contains(double val, bool exclude_boundaries=false) const
Check if value is inside limits' boundaries.
Definition Limits.cpp:77
@ photon
Definition PDG.h:41
A description object for parameters collection.
const double prefactor_
Definition PartonFlux.h:38
const double mp2_
Definition PartonFlux.h:39
const Limits x_range_
Definition PartonFlux.h:40
T steer(const std::string &key) const
Retrieve a parameters as previously steered.
Definition Steerable.h:39
Common namespace for this Monte Carlo generator.
unsigned long long pdgid_t
Alias for the integer-like particle PDG id.