herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
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 
11 namespace matchbox {
12 
13  using namespace ThePEG;
14 
22  : public alpha_s {
23 
24  public:
25 
31  nlo_alpha_s();
32 
36  virtual ~nlo_alpha_s();
38 
39  public:
40 
43  virtual double operator () (Energy2 scale,
44  Energy2 lambda2,
45  unsigned int nf) const;
46 
48  virtual unsigned int nloops () const { return 2; }
49 
50  public:
51 
58  void persistentOutput(PersistentOStream & os) const;
59 
65  void persistentInput(PersistentIStream & is, int version);
67 
74  static void Init();
75 
76  protected:
77 
80 
86  virtual inline void doinit() {
87  freezing_scale_ *= scale_factor();
89  }
90 
92 
93  protected:
94 
101  virtual IBPtr clone() const;
102 
107  virtual IBPtr fullclone() const;
109 
110  private:
111 
117 
122  nlo_alpha_s & operator=(const nlo_alpha_s &) = delete;
123 
124  private:
125 
126  struct rg_solution {
127 
128  inline double operator () (double alpha) {
129 
130  double beta0 = (33.-2.*nf)/(12.*Constants::pi);
131  double beta1 = (153.-19.*nf)/(24.*sqr(Constants::pi));
132 
133  return ((1./alpha)+(beta1/beta0)*log(alpha/(beta0+beta1*alpha))- beta0*slog);
134 
135  }
136 
137  double slog;
138  unsigned int nf;
139 
140  };
141 
142  Energy freezing_scale_;
143 
144  bool exact_evaluation_;
145 
146  static rg_solution& rg () {
147  static rg_solution rg_;
148  return rg_;
149  }
150 
151  static gsl::bisection_root_solver<rg_solution,100>& rg_solver () {
152  static gsl::bisection_root_solver<rg_solution,100> rg_solver_(rg());
153  return rg_solver_;
154  }
155 
156  bool two_largeq_terms_;
157 
158  };
159 
160 }
161 
162 #include "ThePEG/Utilities/ClassTraits.h"
163 
164 namespace ThePEG {
165 
170  template <>
171  struct BaseClassTrait<matchbox::nlo_alpha_s,1> {
173  typedef matchbox::alpha_s NthBase;
174  };
175 
178  template <>
179  struct ClassTraits<matchbox::nlo_alpha_s>
180  : public ClassTraitsBase<matchbox::nlo_alpha_s> {
182  static string className() { return "matchbox::nlo_alpha_s"; }
190  static string library() { return "HwDipoleShowerAlphaS.so"; }
191  };
192 
195 }
196 
197 #endif /* matchbox_couplings_nlo_alpha_s_h */
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Definition: nlo_alpha_s.h:86
ThePEG::Ptr< InterfacedBase >::pointer IBPtr
constexpr auto sqr(const T &x) -> decltype(x *x)
NLO running alpha_s.
Definition: nlo_alpha_s.h:21
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
Definition: alpha_s.h:241
virtual unsigned int nloops() const
return the number of loops which determine this running
Definition: nlo_alpha_s.h:48
Base class for the strong coupling.
Definition: alpha_s.h:96
wrapper araound the bisection root solver
Definition: gsl.h:23
static ClassDescription< nlo_alpha_s > initnlo_alpha_s
The static object used to initialize the description of this class.
Definition: nlo_alpha_s.h:116