herwig is hosted by Hepforge, IPPP Durham
Herwig 7.3.0
nlo_alpha_s.h
1// -*- C++ -*-
2
3// couplings/nlo_alpha_s.h is part of matchbox
4// (C) 2008 Simon Platzer -- sp@particle.uni-karlsruhe.de
5
6#ifndef matchbox_couplings_nlo_alpha_s_h
7#define matchbox_couplings_nlo_alpha_s_h
8
9#include "alpha_s.h"
10
11namespace matchbox {
12
13 using namespace ThePEG;
14
22 : public alpha_s {
23
24 public:
25
30
31 public:
32
35 virtual double operator () (Energy2 scale,
36 Energy2 lambda2,
37 unsigned int nf) const;
38
40 virtual unsigned int nloops () const { return 2; }
41
42 public:
43
50 void persistentOutput(PersistentOStream & os) const;
51
57 void persistentInput(PersistentIStream & is, int version);
59
66 static void Init();
67
68 protected:
69
72
78 virtual inline void doinit() {
79 freezing_scale_ *= scale_factor();
81 }
82
84
85 protected:
86
93 virtual IBPtr clone() const;
94
99 virtual IBPtr fullclone() const;
101
102 private:
103
109
114 nlo_alpha_s & operator=(const nlo_alpha_s &) = delete;
115
116 private:
117
118 struct rg_solution {
119
120 inline double operator () (double alpha) {
121
122 double beta0 = (33.-2.*nf)/(12.*Constants::pi);
123 double beta1 = (153.-19.*nf)/(24.*sqr(Constants::pi));
124
125 return ((1./alpha)+(beta1/beta0)*log(alpha/(beta0+beta1*alpha))- beta0*slog);
126
127 }
128
129 double slog;
130 unsigned int nf;
131
132 };
133
134 Energy freezing_scale_;
135
136 bool exact_evaluation_;
137
138 static rg_solution& rg () {
139 static rg_solution rg_;
140 return rg_;
141 }
142
144 static gsl::bisection_root_solver<rg_solution,100> rg_solver_(rg());
145 return rg_solver_;
146 }
147
148 bool two_largeq_terms_;
149
150 };
151
152}
153
154#include "ThePEG/Utilities/ClassTraits.h"
155
156namespace ThePEG {
157
162 template <>
163 struct BaseClassTrait<matchbox::nlo_alpha_s,1> {
166 };
167
170 template <>
171 struct ClassTraits<matchbox::nlo_alpha_s>
172 : public ClassTraitsBase<matchbox::nlo_alpha_s> {
174 static string className() { return "matchbox::nlo_alpha_s"; }
182 static string library() { return "HwDipoleShowerAlphaS.so"; }
183 };
184
187}
188
189#endif /* matchbox_couplings_nlo_alpha_s_h */
Base class for the strong coupling.
Definition: alpha_s.h:97
double scale_factor() const
return the scale factor
Definition: alpha_s.h:243
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Definition: alpha_s.h:233
NLO running alpha_s.
Definition: nlo_alpha_s.h:22
static ClassDescription< nlo_alpha_s > initnlo_alpha_s
The static object used to initialize the description of this class.
Definition: nlo_alpha_s.h:108
virtual unsigned int nloops() const
return the number of loops which determine this running
Definition: nlo_alpha_s.h:40
virtual IBPtr clone() const
Make a simple clone of this object.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Definition: nlo_alpha_s.h:78
static void Init()
The standard Init function used to initialize the interfaces.
nlo_alpha_s & operator=(const nlo_alpha_s &)=delete
The assignment operator is private and must never be called.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
nlo_alpha_s()
The default constructor.
virtual double operator()(Energy2 scale, Energy2 lambda2, unsigned int nf) const
return alpha_s as function of scale, QCD scale and number of active flavours
constexpr double pi
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr auto sqr(const T &x) -> decltype(x *x)
static string className()
static string library()
wrapper araound the bisection root solver
Definition: gsl.h:23