evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
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 
24 #include "EvtGenBase/EvtComplex.hh"
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,
85  EvtComplex c2, EvtComplex c3, EvtComplex c4,
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; }
113  double GetStrongCouplingAtZMass() { return m_alphaMZ; }
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:
151  int m_n_f, m_ksi;
153  m_sin2W, m_ialpha;
156  double m_A, m_B, m_C, m_D, m_E, m_F, m_Y, m_Z, m_PE;
157 
158  double k[6][8], a[8], h[8], p[8], r[2][8], s[8], q[8], g[8];
159 };
160 
161 #endif
void SetStrongCouplingAtZMass(double alphaMZ)
double kappa(double z, double alpha_S)
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)
double alphaS(double mu, int n_f, double Lambda)
EvtComplex C8(double M_t, double M_W)
double PE(double mu, int n_f, double Lambda, double M_W)
EvtComplex C2(double mu, int n_f, double Lambda, double M_W)
EvtComplex C5(double mu, int n_f, double Lambda, double M_W)
EvtComplex C6(double mu, int n_f, double Lambda, double M_W)
void SetInvElMagCoupling(double ialpha)
EvtComplex hzs(double z, double shat, double mu, double M_b)
EvtComplex C10(double sin2W, double M_t, double M_W, double ialpha)
EvtComplex C10tilda(double sin2W, double M_t, double M_W)
EvtComplex C4(double mu, int n_f, double Lambda, double M_W)
double Lambda(double alpha, int n_f, double mu, double epsilon, int maxstep)
EvtComplex P0(int ksi, double mu, int n_f, double Lambda, double M_W)
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)
void SetLambda(double lambda)
double lambda(double q, double m1, double m2)
Definition: EvtFlatQ2.cpp:31
EvtComplex C8eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
EvtComplex C3(double mu, int n_f, double Lambda, double M_W)
void SetSin2WeinbergAngle(double sin2W)
EvtComplex C1(double mu, int n_f, double Lambda, double M_W)
EvtComplex C9(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W, double ialpha)
EvtComplex C7eff0(double mu, int n_f, double Lambda, double M_t, double M_W)
EvtComplex C7b2sg(double alpha_S, double et, EvtComplex c2, double M_t, double M_W)
EvtComplex C9tilda(int ksi, double mu, int n_f, double Lambda, double sin2W, double M_t, double M_W)
void SetRenormalizationScheme(std::string scheme)
double eta(double mu, int n_f, double Lambda, double M_W)
void CalculateLambda(double epsilon, int maxstep)
EvtComplex C7(double M_t, double M_W)
double etatilda(double shat, double alpha_S)