00001 // -*- C++ -*- 00002 // 00003 // RunningCoupling.h is a part of ThePEG - Toolkit for HEP Event Generation 00004 // Copyright (C) 1999-2007 Leif Lonnblad, (C) 2009 Simon Platzer 00005 // 00006 // ThePEG is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef ThePEG_RunningCoupling_H 00010 #define ThePEG_RunningCoupling_H 00011 // This is the declaration of the RunningCoupling class. 00012 00013 #include "ThePEG/Interface/Interfaced.h" 00014 #include "ThePEG/Repository/EventGenerator.h" 00015 #include "StandardModelBase.fh" 00016 00017 namespace ThePEG { 00018 00027 class RunningCoupling: public Interfaced { 00028 00029 public: 00030 00034 RunningCoupling () : theScaleFactor(1.) {} 00035 00038 00043 virtual double value (Energy2 scale, const StandardModelBase & sm) const = 0; 00044 00050 virtual unsigned int nloops () const { return 0; } 00051 00053 00058 double value(Energy2 scale) const { 00059 return value(scale,*(generator()->standardModel())); 00060 } 00061 00068 virtual double overestimateValue (Energy2 scale) const { 00069 return value(scale); 00070 } 00071 00078 virtual double ratioToOverestimate (Energy2) const { 00079 return 1.; 00080 } 00081 00086 double scaleFactor () const { return theScaleFactor; } 00087 00088 public: 00089 00096 void persistentOutput(PersistentOStream & os) const; 00097 00103 void persistentInput(PersistentIStream & is, int version); 00105 00109 static void Init(); 00110 00111 private: 00112 00116 static AbstractClassDescription<RunningCoupling> initRunningCoupling; 00117 00121 RunningCoupling & operator=(const RunningCoupling &); 00122 00127 double theScaleFactor; 00128 00129 }; 00130 00135 template <> 00136 struct BaseClassTrait<RunningCoupling,1>: public ClassTraitsType { 00138 typedef Interfaced NthBase; 00139 }; 00140 00143 template <> 00144 struct ClassTraits<RunningCoupling>: public ClassTraitsBase<RunningCoupling> { 00146 static string className() { return "ThePEG::RunningCoupling"; } 00147 }; 00148 00151 } 00152 00153 #endif /* ThePEG_RunningCoupling_H */