ThePEG  1.8.0
RunningCoupling.h
1 // -*- C++ -*-
2 //
3 // RunningCoupling.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad, (C) 2009 Simon Platzer
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_RunningCoupling_H
10 #define ThePEG_RunningCoupling_H
11 // This is the declaration of the RunningCoupling class.
12 
13 #include "ThePEG/Interface/Interfaced.h"
14 #include "ThePEG/Repository/EventGenerator.h"
15 #include "StandardModelBase.fh"
16 
17 namespace ThePEG {
18 
27 class RunningCoupling: public Interfaced {
28 
29 public:
30 
35 
38 
43  virtual double value (Energy2 scale, const StandardModelBase & sm) const = 0;
44 
50  virtual unsigned int nloops () const { return 0; }
51 
53 
58  double value(Energy2 scale) const {
59  return value(scale,*(generator()->standardModel()));
60  }
61 
68  virtual double overestimateValue (Energy2 scale) const {
69  return value(scale);
70  }
71 
78  virtual double ratioToOverestimate (Energy2) const {
79  return 1.;
80  }
81 
86  double scaleFactor () const { return theScaleFactor; }
87 
88 public:
89 
96  void persistentOutput(PersistentOStream & os) const;
97 
103  void persistentInput(PersistentIStream & is, int version);
105 
109  static void Init();
110 
111 private:
112 
117 
122 
128 
129 };
130 
135 template <>
138  typedef Interfaced NthBase;
139 };
140 
143 template <>
144 struct ClassTraits<RunningCoupling>: public ClassTraitsBase<RunningCoupling> {
146  static string className() { return "ThePEG::RunningCoupling"; }
147 };
148 
151 }
152 
153 #endif /* ThePEG_RunningCoupling_H */