cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
AlphaSPEGASUS.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
21#include "CepGen/Physics/PDG.h"
23
24namespace {
25 extern "C" {
26 void initalphas_(int& iord, double& fr2, double& mur, double& asmur, double& mc, double& mb, double& mt);
27 double alphas_(double& mur);
28 }
29} // namespace
30
31namespace cepgen {
32 class AlphaSPEGASUS : public Coupling {
33 public:
34 explicit AlphaSPEGASUS(const ParametersList& params)
35 : Coupling(params),
36 iord_(steer<int>("iord")),
37 fr2_(steer<double>("fr2")),
38 mur_(steer<double>("mur")),
39 asmur_(steer<double>("asmur")) {
40 double mc = PDG::get().mass(4), mb = PDG::get().mass(5), mt = PDG::get().mass(6);
41
42 initalphas_(iord_, fr2_, mur_, asmur_, mc, mb, mt);
43 CG_INFO("AlphaSPEGASUS:init") << "PEGASUS alpha(S) evolution algorithm initialised with parameters:\n\t"
44 << "order: " << iord_ << ", fr2: " << fr2_ << ", "
45 << "mur: " << mur_ << ", asmur: " << asmur_ << "\n\t"
46 << "quark masses (GeV): charm: " << mc << ", bottom: " << mb << ", top: " << mt
47 << ".";
48 }
49
51 auto desc = Coupling::description();
52 desc.setDescription("PEGASUS alpha(S) evolution algorithm");
53 desc.add<int>("iord", 2).setDescription("Evolution order");
54 desc.add<double>("fr2", 1.);
55 desc.add<double>("mur", 1.);
56 desc.add<double>("asmur", 0.49128);
57 return desc;
58 }
59
60 double operator()(double q) const override { return alphas_(q); }
61
62 private:
63 int iord_;
64 double fr2_;
65 double mur_;
66 double asmur_;
67 };
68} // namespace cepgen
69
70REGISTER_ALPHAS_MODULE("pegasus", AlphaSPEGASUS);
#define REGISTER_ALPHAS_MODULE(name, obj)
Add a strong coupling evolution algorithm.
#define CG_INFO(mod)
Definition Message.h:216
double operator()(double q) const override
Compute for a given .
AlphaSPEGASUS(const ParametersList &params)
static ParametersDescription description()
A generic evaluation algorithm.
Definition Coupling.h:26
double mass(spdgid_t) const
Particle mass (in GeV)
Definition PDG.cpp:90
static PDG & get()
Retrieve a unique instance of this particles info collection.
Definition PDG.cpp:41
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
Common namespace for this Monte Carlo generator.