]>
Commit | Line | Data |
---|---|---|
5ad4eb21 | 1 | // StandardModel.h is a part of the PYTHIA event generator. |
2 | // Copyright (C) 2008 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 | ||
15 | namespace 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 | ||
22 | class AlphaStrong { | |
23 | ||
24 | public: | |
25 | ||
26 | // Constructors. | |
27 | AlphaStrong() : isInit(false) {} | |
28 | AlphaStrong(double valueIn, int orderIn = 1) { | |
29 | init( valueIn, orderIn) ;} | |
30 | ||
31 | // Initialization for given value at M_Z and given order. | |
32 | void init(double valueIn = 0.12, int orderIn = 1); | |
33 | ||
34 | // alpha_S value and Lambda values. | |
35 | double alphaS(double scale2); | |
36 | double alphaS1Ord(double scale2); | |
37 | double alphaS2OrdCorr(double scale2); | |
38 | double Lambda3() const { return Lambda3Save; } | |
39 | double Lambda4() const { return Lambda4Save; } | |
40 | double Lambda5() const { return Lambda5Save; } | |
41 | ||
42 | private: | |
43 | ||
44 | // Constants: could only be changed in the code itself. | |
45 | static const int NITER; | |
46 | static const double SAFETYMARGIN1, SAFETYMARGIN2; | |
47 | ||
48 | // Data members. | |
49 | bool isInit, lastCallToFull; | |
50 | int order; | |
51 | double valueRef, valueNow, scale2Now, scale2Min, Lambda3Save, | |
52 | Lambda4Save, Lambda5Save, Lambda3Save2, Lambda4Save2, | |
53 | Lambda5Save2, mc, mb, mZ, mc2, mb2; | |
54 | ||
55 | }; | |
56 | ||
57 | //************************************************************************** | |
58 | ||
59 | // The AlphaEM class calculates the alpha_electromagnetic value at an | |
60 | // arbitrary scale, given the value at 0 and m_Z, to zeroth or first order. | |
61 | ||
62 | class AlphaEM { | |
63 | ||
64 | public: | |
65 | ||
66 | // Constructors. | |
67 | AlphaEM(int orderIn = 1) {init(orderIn);} | |
68 | ||
69 | // First-order initialization for given value at M_Z. | |
70 | static void initStatic(); | |
71 | ||
72 | // Initialization for a given order. | |
73 | void init(int orderIn = 1) {order = orderIn;} | |
74 | ||
75 | // alpha_EM value. | |
76 | double alphaEM(double scale2); | |
77 | ||
78 | private: | |
79 | ||
80 | // Static data members, mostly for first-order matching. | |
81 | static double alpEM0, alpEMmZ, mZ2, Q2step[5], bRun[5], alpEMstep[5]; | |
82 | ||
83 | // Data members. | |
84 | int order; | |
85 | ||
86 | }; | |
87 | ||
88 | //************************************************************************** | |
89 | ||
90 | // The CoupEW class stores and returns electroweak couplings. | |
91 | ||
92 | class CoupEW { | |
93 | ||
94 | public: | |
95 | ||
96 | // Constructor. | |
97 | CoupEW() {} | |
98 | ||
99 | // Initialize, normally from Pythia::init(). | |
100 | static void initStatic(); | |
101 | ||
102 | // Return electroweak mixing angle. | |
103 | static double sin2thetaW() {return s2tW;} | |
104 | static double cos2thetaW() {return c2tW;} | |
105 | static double sin2thetaWbar() {return s2tWbar;} | |
106 | ||
107 | // Return electroweak couplings of quarks and leptons. | |
108 | static double ef(int idAbs) {return efSave[idAbs];} | |
109 | static double vf(int idAbs) {return vfSave[idAbs];} | |
110 | static double af(int idAbs) {return afSave[idAbs];} | |
111 | static double t3f(int idAbs) {return 0.5*afSave[idAbs];} | |
112 | static double lf(int idAbs) {return lfSave[idAbs];} | |
113 | static double rf(int idAbs) {return rfSave[idAbs];} | |
114 | ||
115 | // Return some squared couplings and other combinations. | |
116 | static double ef2(int idAbs) {return ef2Save[idAbs];} | |
117 | static double vf2(int idAbs) {return vf2Save[idAbs];} | |
118 | static double af2(int idAbs) {return af2Save[idAbs];} | |
119 | static double efvf(int idAbs) {return efvfSave[idAbs];} | |
120 | static double vf2af2(int idAbs) {return vf2af2Save[idAbs];} | |
121 | ||
122 | private: | |
123 | ||
124 | // Store couplings. | |
125 | static double s2tW, c2tW, s2tWbar, efSave[20], vfSave[20], afSave[20], | |
126 | lfSave[20], rfSave[20], ef2Save[20], vf2Save[20], | |
127 | af2Save[20], efvfSave[20], vf2af2Save[20]; | |
128 | ||
129 | }; | |
130 | ||
131 | //************************************************************************** | |
132 | ||
133 | // The VCKM class stores and returns Cabibbo-Kobayashi-Maskawa | |
134 | ||
135 | class VCKM { | |
136 | ||
137 | public: | |
138 | ||
139 | // Constructor. | |
140 | VCKM() {} | |
141 | ||
142 | // Initialize, normally from Pythia::init(). | |
143 | static void initStatic(); | |
144 | ||
145 | // Return value or square: first index 1/2/3/4 = u/c/t/t', | |
146 | // second 1/2/3/4 = d/s/b/b'. | |
147 | static double Vgen(int genU, int genD) {return Vsave[genU][genD];} | |
148 | static double V2gen(int genU, int genD) {return V2save[genU][genD];} | |
149 | ||
150 | // Return value or square for incoming flavours (sign irrelevant). | |
151 | static double Vid(int id1, int id2); | |
152 | static double V2id(int id1, int id2); | |
153 | ||
154 | // Return sum of squares for given inflavour, or random outflavour. | |
155 | static double V2sum(int id) {return V2out[abs(id)];} | |
156 | static int V2pick(int id); | |
157 | ||
158 | private: | |
159 | ||
160 | // Store VCKM matrix (index 0 not used) and sum of squares. | |
161 | static double Vsave[5][5], V2save[5][5], V2out[20]; | |
162 | ||
163 | }; | |
164 | ||
165 | //************************************************************************** | |
166 | ||
167 | } // end namespace Pythia8 | |
168 | ||
169 | #endif // Pythia8_StandardModel_H |