EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtWilsonCoefficients.hh
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
21#ifndef EVTWILSONCOEFICIENTS_HH
22#define EVTWILSONCOEFICIENTS_HH
23
25
26// Wilson coeficients according to A.J.Buras and M.Munz, Phys.Rev. D52, 186. (1995)
27// Thanks to N. Nikitine for example code for Pythia
28// Coefficient C8eff and C2 correction to C7eff taken from:
29// A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
30//
31// Used constants come from PDG 2004
32
34 public:
36 //~EvtWilsonCoefficients() {};
37
38 // calculate strong coupling constant for n_f flavours and scale mu
39 double alphaS( double mu, int n_f, double Lambda );
40 // calculate Lambda matching alphaS using simple iterative method
41 double Lambda( double alpha, int n_f, double mu, double epsilon, int maxstep );
42 // eta-function: ratio of strong coupling constants
43 double eta( double mu, int n_f, double Lambda, double M_W );
44
45 // Wilson coeficients C1-C6
46 EvtComplex C1( double mu, int n_f, double Lambda, double M_W );
47 EvtComplex C2( double mu, int n_f, double Lambda, double M_W );
48 EvtComplex C3( double mu, int n_f, double Lambda, double M_W );
49 EvtComplex C4( double mu, int n_f, double Lambda, double M_W );
50 EvtComplex C5( double mu, int n_f, double Lambda, double M_W );
51 EvtComplex C6( double mu, int n_f, double Lambda, double M_W );
52 // Wilson coeficietns C7,C8 => C7eff
53 EvtComplex C7( double M_t, double M_W );
54 EvtComplex C8( double M_t, double M_W );
55 EvtComplex C7eff0( double mu, int n_f, double Lambda, double M_t, double M_W );
56 EvtComplex C8eff0( double mu, int n_f, double Lambda, double M_t, double M_W );
57 // Wilson coeficient C10
58 EvtComplex C10tilda( double sin2W, double M_t, double M_W );
59 EvtComplex C10( double sin2W, double M_t, double M_W, double ialpha );
60 // Wilson coeficient C9
61 double PE( double mu, int n_f, double Lambda, double M_W );
62 EvtComplex P0( int ksi, double mu, int n_f, double Lambda, double M_W );
63 EvtComplex C9tilda( int ksi, double mu, int n_f, double Lambda,
64 double sin2W, double M_t, double M_W );
65 EvtComplex C9( int ksi, double mu, int n_f, double Lambda, double sin2W,
66 double M_t, double M_W, double ialpha );
67
68 // Intermediate functions A-F,Y,Z
69 double A( double x );
70 double B( double x );
71 double C( double x );
72 double D( double x );
73 double E( double x );
74 double F( double x );
75 double Y( double x );
76 double Z( double x );
77
78 // Mode decay specific functions
79 EvtComplex hzs( double z, double shat, double mu, double M_b );
80 double fz( double z );
81 double kappa( double z, double alpha_S );
82 double etatilda( double shat, double alpha_S );
83 double omega( double shat );
84 EvtComplex C9efftilda( double z, double shat, double alpha_S, EvtComplex c1,
86 EvtComplex c5, EvtComplex c6, EvtComplex c9tilda,
87 int ksi );
88 EvtComplex C7b2sg( double alpha_S, double et, EvtComplex c2, double M_t,
89 double M_W );
90 EvtComplex Yld( double q2, double ki[], double Gi[], double Mi[], int ni,
92 EvtComplex c5, EvtComplex c6, double ialpha );
93
94 // User function
96 // Set parameters
97 void SetLambda( double lambda ) { m_Lambda = lambda; }
98 void CalculateLambda( double epsilon, int maxstep )
99 {
100 m_Lambda = Lambda( m_alphaMZ, m_n_f, m_mu, epsilon, maxstep );
101 }
102 void SetStrongCouplingAtZMass( double alphaMZ ) { m_alphaMZ = alphaMZ; }
103 void SetScale( double mu ) { m_mu = mu; }
104 void SetNumberOfFlavours( int n_f ) { m_n_f = n_f; }
105 void SetZMass( double M_Z ) { m_M_Z = M_Z; }
106 void SetWMass( double M_W ) { m_M_W = M_W; }
107 void SetTopMass( double M_t ) { m_M_t = M_t; }
108 void SetSin2WeinbergAngle( double sin2W ) { m_sin2W = sin2W; }
109 void SetInvElMagCoupling( double ialpha ) { m_ialpha = ialpha; }
110 void SetRenormalizationScheme( std::string scheme );
111 // Get parameters
112 double GetLambda() { return m_Lambda; }
114 double GetStrongCouplingConst() { return m_alphaS; }
115 double GetScale() { return m_mu; }
116 int GetNumberOfFlavours() { return m_n_f; }
117 int GetRenormSchemePar() { return m_ksi; }
118 double GetZMass() { return m_M_Z; }
119 double GetWMass() { return m_M_W; }
120 double GetTopMass() { return m_M_t; }
121 double GetSin2WeinbergAngle() { return m_sin2W; }
122 double GetInvElMagCoupling() { return m_ialpha; }
123 double GetEta() { return m_eta; }
124 // Get results
125 double GetA() { return m_A; }
126 double GetB() { return m_B; }
127 double GetC() { return m_C; }
128 double GetD() { return m_D; }
129 double GetE() { return m_E; }
130 double GetF() { return m_F; }
131 double GetY() { return m_Y; }
132 double GetZ() { return m_Z; }
133 EvtComplex GetC1() { return m_C1; }
134 EvtComplex GetC2() { return m_C2; }
135 EvtComplex GetC3() { return m_C3; }
136 EvtComplex GetC4() { return m_C4; }
137 EvtComplex GetC5() { return m_C5; }
138 EvtComplex GetC6() { return m_C6; }
139 EvtComplex GetC7() { return m_C7; }
140 EvtComplex GetC8() { return m_C8; }
141 EvtComplex GetC9() { return m_C9; }
142 EvtComplex GetC10() { return m_C10; }
147 EvtComplex GetP0() { return m_P0; }
148 double GetPE() { return m_PE; }
149
150 private:
156 double m_A, m_B, m_C, m_D, m_E, m_F, m_Y, m_Z, m_PE;
157
158 double m_k[6][8], m_a[8], m_h[8], m_p[8], m_r[2][8], m_s[8], m_q[8], m_g[8];
159};
160
161#endif
double lambda(double q, double m1, double m2)
Definition EvtFlatQ2.cpp:30
EvtComplex C7eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
double Lambda(double alpha, int n_f, double mu, double epsilon, int maxstep)
EvtComplex C1(double mu, int n_f, double Lambda, double M_W)
double eta(double mu, int n_f, double Lambda, double M_W)
EvtComplex C10tilda(double sin2W, double M_t, double M_W)
double etatilda(double shat, double alpha_S)
EvtComplex C6(double mu, int n_f, double Lambda, double M_W)
double PE(double mu, int n_f, double Lambda, double M_W)
EvtComplex C9tilda(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W)
EvtComplex C7(double M_t, double M_W)
EvtComplex Yld(double q2, double ki[], double Gi[], double Mi[], int ni, EvtComplex c1, EvtComplex c2, EvtComplex c3, EvtComplex c4, EvtComplex c5, EvtComplex c6, double ialpha)
EvtComplex C7b2sg(double alpha_S, double et, EvtComplex c2, double M_t, double M_W)
double alphaS(double mu, int n_f, double Lambda)
EvtComplex C9efftilda(double z, double shat, double alpha_S, EvtComplex c1, EvtComplex c2, EvtComplex c3, EvtComplex c4, EvtComplex c5, EvtComplex c6, EvtComplex c9tilda, int ksi)
EvtComplex C5(double mu, int n_f, double Lambda, double M_W)
void SetInvElMagCoupling(double ialpha)
EvtComplex C8eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
void SetStrongCouplingAtZMass(double alphaMZ)
EvtComplex C9(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W, double ialpha)
EvtComplex C2(double mu, int n_f, double Lambda, double M_W)
void SetRenormalizationScheme(std::string scheme)
EvtComplex C10(double sin2W, double M_t, double M_W, double ialpha)
void SetLambda(double lambda)
EvtComplex P0(int ksi, double mu, int n_f, double Lambda, double M_W)
EvtComplex C3(double mu, int n_f, double Lambda, double M_W)
void CalculateLambda(double epsilon, int maxstep)
EvtComplex hzs(double z, double shat, double mu, double M_b)
EvtComplex C4(double mu, int n_f, double Lambda, double M_W)
void SetSin2WeinbergAngle(double sin2W)
double kappa(double z, double alpha_S)
EvtComplex C8(double M_t, double M_W)