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...
StandardModelBase is used to handle standard model parameters in an EventGenerator.
tASPtr alphaSPtr() const
Return a pointer to the object handling .
double theAlphaEM
The constant .
unsigned int Nf(Energy2 scale) const
Return the number of avtive quark flavours for a given scale.
double theAe
Axial coupling between a fundamental fermions and Z^0.
unsigned int theElectroWeakScheme
Electroweak scheme.
InvEnergy2 fermiConstant() const
The Fermi constant.
double ad() const
The axial down-type- coupling.
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30
double theAd
Axial coupling between a fundamental fermions and Z^0.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
double enu() const
The neutrino-photon coupling.
Energy LambdaQCD(Energy2 scale) const
Return the for the given scale.
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 IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
Energy LambdaQCD(unsigned int nflav) const
Return the for nflav active flavours.
virtual ~StandardModelBase()
Destructor.
double vnu() const
The vector neutrino- coupling.
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 theAlphaEMMZ
The constant .
double vu() const
The vector up-type- coupling.
double alphaS(Energy2 scale) const
Return the running strong coupling for a given scale.
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
virtual IBPtr clone() const
Make a simple clone of this object.
unsigned int Nc() const
Return the number of colours.
vector< vector< double > > theCKM2Matrix
The matrix of squared CKM elements set from theCKM at initialization.
unsigned int theNc
The number of colours;.
double vd() const
The vector down-type- coupling.
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.
tAEMPtr alphaEMPtr() const
Return a pointer to the object handling .
tCKMPtr CKM() const
Return a pointer to the CKMBase object used.
double ae() const
The axial charged lepton- coupling.
double ed() const
The down-type-photon 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 ee() const
The charged lepton-photon coupling.
double anu() const
The axial neutrino- coupling.
double alphaEM() const
Constant .
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 .
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
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 alphaEM(Energy2 scale) const
Running .
StandardModelBase()
Default constructor.
double alphaEMMZ() const
Constant .
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
unsigned int families() const
Return the number of families assumed in the standard model.
Ptr< AlphaEMBase >::pointer AEMPtr
Declare a pointer to an AlphaEMBase object.
double theVe
Vector coupling between a fundamental fermion and Z^0.
virtual bool preInitialize() const
Overloaded function from Interfaced.
double au() const
The axial up-type- coupling.
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 alphaS() const
Return the constant strong coupling constant.
unsigned int theFamilies
The number of families.
CKMPtr theCKM
A pointer to an object representing the Cabibbo-Kobayashi-Maskawa matrix.
double alphaEMME(Energy2 scale)
The electromagnetic coupling for vertex classes in a well defined self-consistent EW scheme if reques...
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
double sin2ThetaW() const
Return .
double ve() const
The vector charged lepton- coupling.
double eu() const
The up-type-photon coupling.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
double theEd
Coupling between a fundamental fermion and the photon.
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