thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
StandardModelBase.h
1 // -*- C++ -*-
2 //
3 // StandardModelBase.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2019 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 3 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 
82  unsigned int ewScheme() const { return theElectroWeakScheme; }
83 
87  void ewScheme(unsigned int s) { theElectroWeakScheme = s; }
88 
90 
93  double alphaEM() const { return theAlphaEM; }
94 
98  double alphaEMMZ() const { return theAlphaEMMZ; }
99 
104  double alphaEMME(Energy2 scale) const {
105  if(theElectroWeakScheme==0)
106  return alphaEM(scale);
107  else if(scale>1e-6*GeV2)
108  return theAlphaEMMZ;
109  else
110  return theAlphaEM;
111  }
112 
116  double alphaEM(Energy2 scale) const {
117  return theRunningAlphaEM->value(scale, *this);
118  }
119 
123  tAEMPtr alphaEMPtr() const { return theRunningAlphaEM; }
124 
128  double sin2ThetaW() const { return theSin2ThetaW; }
129 
133  InvEnergy2 fermiConstant() const {return theGF;}
134 
138  double enu() const { return theEnu; }
139 
143  double ee() const { return theEe; }
144 
148  double eu() const { return theEu; }
149 
153  double ed() const { return theEd; }
154 
158  double vnu() const { return theVnu; }
159 
163  double ve() const { return theVe; }
164 
168  double vu() const { return theVu; }
169 
173  double vd() const { return theVd; }
174 
178  double anu() const { return theAnu; }
179 
183  double ae() const { return theAe; }
184 
188  double au() const { return theAu; }
189 
193  double ad() const { return theAd; }
194 
198  tCKMPtr CKM() const { return theCKM; }
199 
205  double CKM(unsigned int uf, unsigned int df) const;
206 
211  double CKM(const ParticleData & uType,
212  const ParticleData & dType) const;
214 
215 public:
216 
222  unsigned int Nc() const { return theNc; }
223 
227  unsigned int Nf(Energy2 scale) const {
228  return theRunningAlphaS->Nf(scale);
229  }
230 
234  double alphaS() const { return theAlphaS; }
235 
239  double alphaS(Energy2 scale) const {
240  return theRunningAlphaS->value(scale, *this);
241  }
242 
246  tASPtr alphaSPtr() const {
247  return theRunningAlphaS;
248  }
249 
253  Energy LambdaQCD(unsigned int nflav) const {
254  return theRunningAlphaS->LambdaQCD(nflav);
255  }
256 
260  Energy LambdaQCD(Energy2 scale) const { return LambdaQCD(Nf(scale)); }
262 
263 public:
264 
265 
272  void persistentOutput(PersistentOStream & os) const;
273 
279  void persistentInput(PersistentIStream & is, int version);
281 
285  static void Init();
286 
290  virtual bool preInitialize() const {
291  return true;
292  }
293 
294 protected:
295 
302  virtual IBPtr clone() const;
303 
308  virtual IBPtr fullclone() const;
310 
311 
312 protected:
313 
316 
322  virtual void doinit();
324 
325 private:
326 
330  unsigned int theFamilies;
331 
335  double theAlphaEM;
336 
340  double theAlphaEMMZ;
341 
347 
352 
357 
361  double theEnu;
362 
366  double theEe;
367 
371  double theEu;
372 
376  double theEd;
377 
381  double theVnu;
382 
386  double theVe;
387 
391  double theVu;
392 
396  double theVd;
397 
401  double theAnu;
402 
406  double theAe;
407 
411  double theAu;
412 
416  double theAd;
417 
423 
428  CKMPtr theCKM;
429 
433  mutable vector< vector<double> > theCKM2Matrix;
434 
438  unsigned int theNc;
439 
443  double theAlphaS;
444 
450 
454  unsigned int theElectroWeakScheme;
455 
459  unsigned int theBosonWidthOption;
460 
461 private:
462 
467 
471  StandardModelBase & operator=(const StandardModelBase &) = delete;
472 
473 };
474 
479 template <>
482  typedef Interfaced NthBase;
483 };
484 
487 template <>
488 struct ClassTraits<StandardModelBase>:
489  public ClassTraitsBase<StandardModelBase> {
491  static string className() { return "ThePEG::StandardModelBase"; }
492 };
493 
496 }
497 
498 #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 & operator=(const StandardModelBase &)=delete
Private and non-existent assignment operator.
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
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.
This is the main config header file for ThePEG.
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.
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.
unsigned int ewScheme() const
Return the electroweak scheme used.
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 alphaEMME(Energy2 scale) const
The electromagnetic coupling for vertex classes in a well defined self-consistent EW scheme if reques...
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.
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.
void ewScheme(unsigned int s)
Set the electroweak scheme used.
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