source: HiSusy/trunk/Pythia8/pythia8170/include/StandardModel.h @ 1

Last change on this file since 1 was 1, checked in by zerwas, 11 years ago

first import of structure, PYTHIA8 and DELPHES

File size: 5.8 KB
Line 
1// StandardModel.h is a part of the PYTHIA event generator.
2// Copyright (C) 2012 Torbjorn Sjostrand.
3// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4// Please respect the MCnet Guidelines, see GUIDELINES for details.
5
6// This file gives access to some Standard Model parameters.
7// AlphaStrong: fix or first- or second-order running alpha_strong.
8
9#ifndef Pythia8_StandardModel_H
10#define Pythia8_StandardModel_H
11
12#include "ParticleData.h"
13#include "PythiaStdlib.h"
14
15namespace Pythia8 {
16
17//==========================================================================
18
19// The AlphaStrong class calculates the alpha_strong value at an arbitrary
20// scale, given the value at m_Z, to zeroth, first or second order.
21
22class AlphaStrong {
23
24public:
25
26  // Constructors.
27  AlphaStrong() : isInit(false), lastCallToFull(false), order(0),
28    valueRef(0.), valueNow(0.), scale2Now(0.), Lambda3Save(0.), 
29    Lambda4Save(0.), Lambda5Save(0.), scale2Min(0.), Lambda3Save2(0.),
30    Lambda4Save2(0.), Lambda5Save2(0.), mc2(0.), mb2(0.) {}
31  AlphaStrong(double valueIn, int orderIn = 1) { 
32    init( valueIn, orderIn) ;}
33
34  // Initialization for given value at M_Z and given order.
35  void init(double valueIn = 0.12, int orderIn = 1);
36
37  // alpha_S value and Lambda values.
38  double alphaS(double scale2);
39  double alphaS1Ord(double scale2);
40  double alphaS2OrdCorr(double scale2);
41  double Lambda3() const { return Lambda3Save; }
42  double Lambda4() const { return Lambda4Save; }
43  double Lambda5() const { return Lambda5Save; }
44
45protected:
46
47  // Initialization data member; protected to allow inheritance.
48  bool   isInit;
49
50private:
51
52  // Constants: could only be changed in the code itself.
53  static const int    NITER;
54  static const double MC, MB, MZ, SAFETYMARGIN1, SAFETYMARGIN2;
55
56  // Data members.
57  bool   lastCallToFull;
58  int    order;
59  double valueRef, valueNow, scale2Now, Lambda3Save, Lambda4Save, 
60         Lambda5Save, scale2Min, Lambda3Save2, Lambda4Save2, 
61         Lambda5Save2, mc2, mb2;
62
63};
64
65//==========================================================================
66
67// The AlphaEM class calculates the alpha_electromagnetic value at an
68// arbitrary scale, given the value at 0 and m_Z, to zeroth or first order.
69
70class AlphaEM {
71
72public:
73
74  // Constructors.
75  AlphaEM() {}
76
77  // Initialization for a given order.
78  void init(int orderIn, Settings* settingsPtr);
79
80  // alpha_EM value.
81  double alphaEM(double scale2);
82
83private:
84
85  // Constants: could only be changed in the code itself.
86  static const double MZ, Q2STEP[5], BRUNDEF[5];
87
88  // Data members.
89  int    order;
90  double alpEM0, alpEMmZ, mZ2, bRun[5], alpEMstep[5];
91
92};
93
94//==========================================================================
95
96// The CoupSM class stores and returns electroweak couplings,
97// including Cabibbo-Kobayashi-Maskawa mass mixing matrix elements.
98
99class CoupSM {
100
101public:
102
103  // Constructor.
104  CoupSM() {}
105
106  // Initialize, normally from Pythia::init().
107  void init(Settings& settings, Rndm* rndmPtrIn);
108
109  // alpha_S value and Lambda values.
110  double alphaS(double scale2) {return alphaSlocal.alphaS(scale2);}
111  double alphaS1Ord(double scale2) {return alphaSlocal.alphaS1Ord(scale2);}
112  double alphaS2OrdCorr(double scale2) {
113    return alphaSlocal.alphaS2OrdCorr(scale2);}
114  double Lambda3() const {return alphaSlocal.Lambda3();}
115  double Lambda4() const {return alphaSlocal.Lambda4();}
116  double Lambda5() const {return alphaSlocal.Lambda5();}
117
118  // Return alpha_EM value.
119  double alphaEM(double scale2) {return alphaEMlocal.alphaEM(scale2);}
120
121  // Return electroweak mixing angle and Fermi constant.
122  double sin2thetaW() {return s2tW;}
123  double cos2thetaW() {return c2tW;}
124  double sin2thetaWbar() {return s2tWbar;}
125  double GF() {return GFermi;}
126
127  // Return electroweak couplings of quarks and leptons.
128  double ef(int idAbs) {return efSave[idAbs];}
129  double vf(int idAbs) {return vfSave[idAbs];}
130  double af(int idAbs) {return afSave[idAbs];}
131  double t3f(int idAbs) {return 0.5*afSave[idAbs];}
132  double lf(int idAbs) {return lfSave[idAbs];}
133  double rf(int idAbs) {return rfSave[idAbs];}
134 
135  // Return some squared couplings and other combinations.
136  double ef2(int idAbs) {return ef2Save[idAbs];}
137  double vf2(int idAbs) {return vf2Save[idAbs];}
138  double af2(int idAbs) {return af2Save[idAbs];}
139  double efvf(int idAbs) {return efvfSave[idAbs];}
140  double vf2af2(int idAbs) {return vf2af2Save[idAbs];}
141
142  // Return CKM value or square:
143  // first index 1/2/3/4 = u/c/t/t', second 1/2/3/4 = d/s/b/b'.
144  double VCKMgen(int genU, int genD) {return VCKMsave[genU][genD];}
145  double V2CKMgen(int genU, int genD) {return V2CKMsave[genU][genD];}
146
147  // Return CKM value or square for incoming flavours (sign irrelevant).
148  double VCKMid(int id1, int id2);
149  double V2CKMid(int id1, int id2);
150
151  // Return CKM sum of squares for given inflavour, or random outflavour.
152  double V2CKMsum(int id) {return V2CKMout[abs(id)];}
153  int    V2CKMpick(int id);
154
155protected:
156
157  // Constants: could only be changed in the code itself.
158  static const double efSave[20], afSave[20];
159
160  // Couplings and VCKM matrix (index 0 not used).
161  double s2tW, c2tW, s2tWbar, GFermi, vfSave[20], lfSave[20], rfSave[20], 
162         ef2Save[20], vf2Save[20], af2Save[20], efvfSave[20], 
163         vf2af2Save[20], VCKMsave[5][5], V2CKMsave[5][5], V2CKMout[20];
164
165  // Pointer to the random number generator.
166  Rndm*       rndmPtr;
167
168  // An AlphaStrong instance for general use (but not MPI, ISR, FSR).
169  AlphaStrong alphaSlocal;
170
171  // An AlphaEM instance for general use (but not MPI, ISR, FSR).
172  AlphaEM     alphaEMlocal;
173
174};
175
176//==========================================================================
177
178// Generic couplings class
179
180class Couplings : public CoupSM {
181
182public:
183 
184 Couplings() : isSUSY(false) {}
185  bool isSUSY;
186
187};
188
189//==========================================================================
190
191} // end namespace Pythia8
192
193#endif // Pythia8_StandardModel_H
Note: See TracBrowser for help on using the repository browser.