cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
AlphaEMBurkhardt.cpp
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2013-2021 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
22
23namespace cepgen {
26 class AlphaEMBurkhardt final : public Coupling {
27 public:
28 explicit AlphaEMBurkhardt(const ParametersList& params) : Coupling(params), q2min_(steer<double>("q2min")) {}
29
31 auto desc = Coupling::description();
32 desc.setDescription("Burkhardt et al. alpha(EM) evolution algorithm");
33 desc.add<double>("q2min", 2.e-6).setDescription("Minimum Q^2 to start alpha(EM) evolution");
34 return desc;
35 }
36
37 double operator()(double q) const override {
38 const double q2 = q * q;
39 if (q2 < q2min_)
41 const double log_q2 = log(q2), log_1_pl_q2 = log1p(q2);
42 // Calculate real part of photon vacuum polarization.
43 // - for leptons simplify by using asymptotic (Q^2 >> m^2) expressions.
44 // - for hadrons use parametrization of H. Burkhardt et al.
45 // See R. Kleiss et al, CERN 89-08, vol. 3, pp. 129-131.
46 double rpigg;
47 if (q2 < 9.e-2)
48 rpigg = AEM_3PI * (13.4916 + log_q2) + 0.00835 * log_1_pl_q2;
49 else if (q2 < 9.)
50 rpigg = AEM_3PI * (16.32 + 2. * log_q2) + 0.00238 * log1p(3.927 * q2);
51 else if (q2 < 1.e4)
52 rpigg = AEM_3PI * (13.4955 + 3. * log_q2) + 0.00165 + 0.00299 * log_1_pl_q2;
53 else
54 rpigg = AEM_3PI * (13.4955 + 3. * log_q2) + 0.00221 + 0.00293 * log_1_pl_q2;
55 return constants::ALPHA_EM / (1. - rpigg);
56 }
57
58 private:
59 static constexpr double AEM_3PI = constants::ALPHA_EM / 3. * M_1_PI;
60 const double q2min_;
61 };
62} // namespace cepgen
63
64REGISTER_ALPHAEM_MODULE("burkhardt", AlphaEMBurkhardt);
#define REGISTER_ALPHAEM_MODULE(name, obj)
Add an electromagnetic coupling evolution algorithm.
Electromagnetic alpha running calculator.
AlphaEMBurkhardt(const ParametersList &params)
double operator()(double q) const override
Compute for a given .
static ParametersDescription description()
A generic evaluation algorithm.
Definition Coupling.h:26
A description object for parameters collection.
static ParametersDescription description()
Description of all object parameters.
Definition Steerable.cpp:42
T steer(const std::string &key) const
Retrieve a parameters as previously steered.
Definition Steerable.h:39
constexpr double ALPHA_EM
Electromagnetic coupling constant .
Definition Constants.h:28
Common namespace for this Monte Carlo generator.