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 
113  tAEMPtr alphaEMPtr() const { return theRunningAlphaEM; }
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 
418  CKMPtr theCKM;
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 <>
479  public ClassTraitsBase<StandardModelBase> {
481  static string className() { return "ThePEG::StandardModelBase"; }
482 };
483 
486 }
487 
488 #endif /* ThePEG_StandardModelBase_H */
double theVd
Vector coupling between a fundamental fermion and Z^0.
PersistentIStream is used to read persistent objects from a stream where they were previously written...
tASPtr alphaSPtr() const
Return a pointer to the object handling .
double ad() const
The axial down-type- coupling.
double eu() const
The up-type-photon coupling.
StandardModelBase is used to handle standard model parameters in an EventGenerator.
double theAlphaEM
The constant .
double alphaEMMZ() const
Constant .
double theAe
Axial coupling between a fundamental fermions and Z^0.
unsigned int theElectroWeakScheme
Electroweak scheme.
virtual bool preInitialize() const
Overloaded function from Interfaced.
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30
double theAd
Axial coupling between a fundamental fermions and Z^0.
unsigned int Nc() const
Return the number of colours.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
virtual IBPtr clone() const
Make a simple clone of this object.
unsigned int families() const
Return the number of families assumed in the standard model.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
tAEMPtr alphaEMPtr() const
Return a pointer to the object handling .
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
tCKMPtr CKM() const
Return a pointer to the CKMBase object used.
double theVu
Vector coupling between a fundamental fermion and Z^0.
double theEnu
Coupling between a fundamental fermion and the photon.
static void Init()
Standard Init function used to initialize the interface.
long recalculateEW
If true, the electro-weak couplings are derived from in the initialization.
Ptr< AlphaSBase >::transient_pointer tASPtr
Declare a transient pointer to an AlphaSBase object.
virtual ~StandardModelBase()
Destructor.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
StandardModelBase & operator=(const StandardModelBase &)
Private and non-existent assignment operator.
double alphaEM() const
Constant .
double theAlphaEMMZ
The constant .
double enu() const
The neutrino-photon coupling.
double theAu
Axial coupling between a fundamental fermions and Z^0.
static ClassDescription< StandardModelBase > initStandardModelBase
Describe a concrete class with persistent data.
ParticleData inherits from InterfacedBase and represents the properties of a particle type...
Definition: ParticleData.h:36
vector< vector< double > > theCKM2Matrix
The matrix of squared CKM elements set from theCKM at initialization.
unsigned int theNc
The number of colours;.
double vu() const
The vector up-type- coupling.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
QTY< 0, 1, 0 >::Type Energy
Energy.
Definition: Unitsystem.h:34
InvEnergy2 theGF
The Fermi contants .
Ptr< AlphaSBase >::pointer ASPtr
Declare a pointer to an AlphaSBase object.
unsigned int Nf(Energy2 scale) const
Return the number of avtive quark flavours for a given scale.
double vnu() const
The vector neutrino- coupling.
double theEe
Coupling between a fundamental fermion and the photon.
double theVnu
Vector coupling between a fundamental fermion and Z^0.
double theAlphaS
The fixed strong coupling.
double vd() const
The vector down-type- coupling.
double theAnu
Axial coupling between a fundamental fermions and Z^0.
Ptr< CKMBase >::transient_pointer tCKMPtr
Declare a transient pointer to a CKMBase object.
AEMPtr theRunningAlphaEM
Pointer to an object capable of calculating the running .
double ee() const
The charged lepton-photon coupling.
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
unsigned int theBosonWidthOption
Option for the calculation of the W/Z widths.
double theEu
Coupling between a fundamental fermion and the photon.
Ptr< AlphaEMBase >::transient_pointer tAEMPtr
Declare a transient pointer to an AlphaEMBase object.
double anu() const
The axial neutrino- coupling.
double alphaS(Energy2 scale) const
Return the running strong coupling for a given scale.
double sin2ThetaW() const
Return .
StandardModelBase()
Default constructor.
Ptr< CKMBase >::pointer CKMPtr
Declare a pointer to n CKMBase object.
The Interfaced class is derived from the InterfacedBase class adding a couple of things particular to...
Definition: Interfaced.h:38
Ptr< AlphaEMBase >::pointer AEMPtr
Declare a pointer to an AlphaEMBase object.
double alphaEM(Energy2 scale) const
Running .
double theVe
Vector coupling between a fundamental fermion and Z^0.
InvEnergy2 fermiConstant() const
The Fermi constant.
double ed() const
The down-type-photon coupling.
Energy LambdaQCD(unsigned int nflav) const
Return the for nflav active flavours.
Ptr is a templated class to provide typedefs for pointers types ThePEG should use for a given type...
Definition: Ptr.h:35
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
double ae() const
The axial charged lepton- coupling.
unsigned int theFamilies
The number of families.
CKMPtr theCKM
A pointer to an object representing the Cabibbo-Kobayashi-Maskawa matrix.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
double alphaEMME(Energy2 scale)
The electromagnetic coupling for vertex classes in a well defined self-consistent EW scheme if reques...
Energy LambdaQCD(Energy2 scale) const
Return the for the given scale.
double au() const
The axial up-type- coupling.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
double ve() const
The vector charged lepton- coupling.
double theEd
Coupling between a fundamental fermion and the photon.
double alphaS() const
Return the constant strong coupling constant.
ASPtr theRunningAlphaS
Pointer to an object capable of calculating the running .
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52