ThePEG  1.8.0
StandardModelBase.h
1 // -*- C++ -*-
2 //
3 // StandardModelBase.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_StandardModelBase_H
10 #define ThePEG_StandardModelBase_H
11 // This is the declaration of the StandardModelBase class.
12 
13 #include "ThePEG/Config/ThePEG.h"
14 #include "AlphaEMBase.h"
15 #include "CKMBase.h"
16 #include "AlphaSBase.h"
17 // #include "StandardModelBase.fh"
18 // #include "StandardModelBase.xh"
19 
20 namespace ThePEG {
21 
39 
52 
53 public:
54 
61 
65  virtual ~StandardModelBase();
67 
68 public:
69 
73  unsigned int families() const { return theFamilies; }
74 
75 public:
76 
77 
83  double alphaEM() const { return theAlphaEM; }
84 
88  double alphaEMMZ() const { return theAlphaEMMZ; }
89 
94  double alphaEMME(Energy2 scale) {
96  return alphaEM(scale);
97  else if(scale>1e-6*GeV2)
98  return theAlphaEMMZ;
99  else
100  return theAlphaEMMZ;
101  }
102 
106  double alphaEM(Energy2 scale) const {
107  return theRunningAlphaEM->value(scale, *this);
108  }
109 
114 
118  double sin2ThetaW() const { return theSin2ThetaW; }
119 
123  InvEnergy2 fermiConstant() const {return theGF;}
124 
128  double enu() const { return theEnu; }
129 
133  double ee() const { return theEe; }
134 
138  double eu() const { return theEu; }
139 
143  double ed() const { return theEd; }
144 
148  double vnu() const { return theVnu; }
149 
153  double ve() const { return theVe; }
154 
158  double vu() const { return theVu; }
159 
163  double vd() const { return theVd; }
164 
168  double anu() const { return theAnu; }
169 
173  double ae() const { return theAe; }
174 
178  double au() const { return theAu; }
179 
183  double ad() const { return theAd; }
184 
188  tCKMPtr CKM() const { return theCKM; }
189 
195  double CKM(unsigned int uf, unsigned int df) const;
196 
201  double CKM(const ParticleData & uType,
202  const ParticleData & dType) const;
204 
205 public:
206 
212  unsigned int Nc() const { return theNc; }
213 
217  unsigned int Nf(Energy2 scale) const {
218  return theRunningAlphaS->Nf(scale);
219  }
220 
224  double alphaS() const { return theAlphaS; }
225 
229  double alphaS(Energy2 scale) const {
230  return theRunningAlphaS->value(scale, *this);
231  }
232 
236  tASPtr alphaSPtr() const {
237  return theRunningAlphaS;
238  }
239 
243  Energy LambdaQCD(unsigned int nflav) const {
244  return theRunningAlphaS->LambdaQCD(nflav);
245  }
246 
250  Energy LambdaQCD(Energy2 scale) const { return LambdaQCD(Nf(scale)); }
252 
253 public:
254 
255 
262  void persistentOutput(PersistentOStream & os) const;
263 
269  void persistentInput(PersistentIStream & is, int version);
271 
275  static void Init();
276 
280  virtual bool preInitialize() const {
281  return true;
282  }
283 
284 protected:
285 
292  virtual IBPtr clone() const;
293 
298  virtual IBPtr fullclone() const;
300 
301 
302 protected:
303 
306 
312  virtual void doinit();
314 
315 private:
316 
320  unsigned int theFamilies;
321 
325  double theAlphaEM;
326 
330  double theAlphaEMMZ;
331 
337 
342 
346  InvEnergy2 theGF;
347 
351  double theEnu;
352 
356  double theEe;
357 
361  double theEu;
362 
366  double theEd;
367 
371  double theVnu;
372 
376  double theVe;
377 
381  double theVu;
382 
386  double theVd;
387 
391  double theAnu;
392 
396  double theAe;
397 
401  double theAu;
402 
406  double theAd;
407 
413 
419 
423  mutable vector< vector<double> > theCKM2Matrix;
424 
428  unsigned int theNc;
429 
433  double theAlphaS;
434 
440 
444  unsigned int theElectroWeakScheme;
445 
449  unsigned int theBosonWidthOption;
450 
451 private:
452 
457 
462 
463 };
464 
469 template <>
472  typedef Interfaced NthBase;
473 };
474 
477 template <>
478 struct ClassTraits<StandardModelBase>:
479  public ClassTraitsBase<StandardModelBase> {
481  static string className() { return "ThePEG::StandardModelBase"; }
482 };
483 
486 }
487 
488 #endif /* ThePEG_StandardModelBase_H */