using option '-treename HLTesdTree' for EsdCollector, adding default parameter for...
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8130 / include / StandardModel.h
CommitLineData
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
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) {}
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
42private:
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
62class AlphaEM {
63
64public:
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
78private:
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
92class CoupEW {
93
94public:
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
122private:
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
135class VCKM {
136
137public:
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
158private:
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