ThePEG  1.8.0
AlphaSBase.h
1 // -*- C++ -*-
2 //
3 // AlphaSBase.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
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_AlphaSBase_H
10 #define ThePEG_AlphaSBase_H
11 // This is the declaration of the AlphaSBase class.
12 
13 #include "RunningCoupling.h"
14 
15 namespace ThePEG {
16 
28 class AlphaSBase: public RunningCoupling {
29 
30 public:
31 
39  virtual vector<Energy2> flavourThresholds() const = 0;
40 
45  virtual vector<Energy> LambdaQCDs() const = 0;
47 
54  unsigned int Nf(Energy2 scale) const {
55  unsigned int i = 0;
56  while ( i < theFlavourThresholds.size() &&
57  theFlavourThresholds[i] < scale ) ++i;
58  return i;
59  }
60 
64  Energy LambdaQCD(unsigned int nflav) const { return theLambdaQCDs[nflav]; }
65 
69  Energy LambdaQCD(Energy2 scale) const { return theLambdaQCDs[Nf(scale)]; }
71 
72 public:
73 
80  void persistentOutput(PersistentOStream & os) const;
81 
87  void persistentInput(PersistentIStream & is, int version);
89 
93  static void Init();
94 
95 protected:
96 
99 
105  virtual void doinit();
106 
108 
109 private:
110 
115  vector<Energy2> theFlavourThresholds;
116 
122  vector<Energy> theLambdaQCDs;
123 
124 private:
125 
130 
134  AlphaSBase & operator=(const AlphaSBase &);
135 
136 };
137 
142 template <>
143 struct BaseClassTrait<AlphaSBase,1>: public ClassTraitsType {
145  typedef RunningCoupling NthBase;
146 };
147 
150 template <>
151 struct ClassTraits<AlphaSBase>: public ClassTraitsBase<AlphaSBase> {
153  static string className() { return "ThePEG::AlphaSBase"; }
154 };
155 
158 }
159 
160 #endif /* ThePEG_AlphaSBase_H */