1 //---------------------------------------------------------------------------------
3 // Wilson coeficients according to A.J.Buras and M.Munz, Phys.Rev. D52, 186. (1995)
4 // Thanks to N. Nikitine for example code for Pythia
5 // Coeficient C8eff and C2 correction to C7eff taken from:
6 // A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
8 // Used constants come from PDG 2004
10 // P. Reznicek 18.02.2005
12 // 04/03/2005 PR Added h-function
14 //---------------------------------------------------------------------------------
16 #ifndef EVTWILSONCOEFICIENTS_HH
17 #define EVTWILSONCOEFICIENTS_HH
19 #include "EvtGenBase/EvtComplex.hh"
21 class EvtWilsonCoeficients {
25 EvtWilsonCoeficients();
26 //~EvtWilsonCoeficients() {};
28 // calculate strong coupling constant for n_f flavours and scale mu
29 double alphaS(double mu,int n_f,double Lambda);
30 // calculate Lambda matching alphaS using simple iterative method
31 double Lambda(double alpha,int n_f,double mu,double epsilon,int maxstep);
32 // eta-function: ratio of strong coupling constants
33 double eta(double mu,int n_f,double Lambda,double M_W);
35 // Wilson coeficients C1-C6
36 EvtComplex C1(double mu,int n_f,double Lambda,double M_W);
37 EvtComplex C2(double mu,int n_f,double Lambda,double M_W);
38 EvtComplex C3(double mu,int n_f,double Lambda,double M_W);
39 EvtComplex C4(double mu,int n_f,double Lambda,double M_W);
40 EvtComplex C5(double mu,int n_f,double Lambda,double M_W);
41 EvtComplex C6(double mu,int n_f,double Lambda,double M_W);
42 // Wilson coeficietns C7,C8 => C7eff
43 EvtComplex C7(double M_t,double M_W);
44 EvtComplex C8(double M_t,double M_W);
45 EvtComplex C7eff0(double mu,int n_f,double Lambda,double M_t,double M_W);
46 EvtComplex C8eff0(double mu,int n_f,double Lambda,double M_t,double M_W);
47 // Wilson coeficient C10
48 EvtComplex C10tilda(double sin2W,double M_t,double M_W);
49 EvtComplex C10(double sin2W,double M_t,double M_W,double ialpha);
50 // Wilson coeficient C9
51 double PE(double mu,int n_f,double Lambda,double M_W);
52 EvtComplex P0(int ksi,double mu,int n_f,double Lambda,double M_W);
53 EvtComplex C9tilda(int ksi,double mu,int n_f,double Lambda,double sin2W,double M_t,double M_W);
54 EvtComplex C9(int ksi,double mu,int n_f,double Lambda,double sin2W,double M_t,double M_W,double ialpha);
56 // Intermediate functions A-F,Y,Z
66 // Mode decay specific functions
67 EvtComplex hzs(double z,double shat,double mu,double M_b);
69 double kappa(double z,double alpha_S);
70 double etatilda(double shat,double alpha_S);
71 double omega(double shat);
72 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);
73 EvtComplex C7b2sg(double alpha_S,double et,EvtComplex c2,double M_t,double M_W);
74 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);
77 void CalculateAllCoeficients();
79 void SetLambda(double lambda) { m_Lambda=lambda; }
80 void CalculateLambda(double epsilon,int maxstep) { m_Lambda=Lambda(m_alphaMZ,m_n_f,m_mu,epsilon,maxstep); }
81 void SetStrongCouplingAtZMass(double alphaMZ) { m_alphaMZ=alphaMZ; }
82 void SetScale(double mu) { m_mu=mu; }
83 void SetNumberOfFlavours(int n_f) { m_n_f=n_f; }
84 void SetZMass(double M_Z) { m_M_Z=M_Z; }
85 void SetWMass(double M_W) { m_M_W=M_W; }
86 void SetTopMass(double M_t) { m_M_t=M_t; }
87 void SetSin2WeinbergAngle(double sin2W) { m_sin2W=sin2W;}
88 void SetInvElMagCoupling(double ialpha) { m_ialpha=ialpha; }
89 void SetRenormalizationScheme(std::string scheme);
91 double GetLambda() { return m_Lambda; }
92 double GetStrongCouplingAtZMass() { return m_alphaMZ; }
93 double GetStrongCouplingConst() { return m_alphaS; }
94 double GetScale() { return m_mu; }
95 int GetNumberOfFlavours() { return m_n_f; }
96 int GetRenormSchemePar() { return m_ksi; }
97 double GetZMass() { return m_M_Z; }
98 double GetWMass() { return m_M_W; }
99 double GetTopMass() { return m_M_t; }
100 double GetSin2WeinbergAngle() { return m_sin2W;}
101 double GetInvElMagCoupling() { return m_ialpha; }
102 double GetEta() { return m_eta; }
104 double GetA() { return m_A; }
105 double GetB() { return m_B; }
106 double GetC() { return m_C; }
107 double GetD() { return m_D; }
108 double GetE() { return m_E; }
109 double GetF() { return m_F; }
110 double GetY() { return m_Y; }
111 double GetZ() { return m_Z; }
112 EvtComplex GetC1() { return m_C1; }
113 EvtComplex GetC2() { return m_C2; }
114 EvtComplex GetC3() { return m_C3; }
115 EvtComplex GetC4() { return m_C4; }
116 EvtComplex GetC5() { return m_C5; }
117 EvtComplex GetC6() { return m_C6; }
118 EvtComplex GetC7() { return m_C7; }
119 EvtComplex GetC8() { return m_C8; }
120 EvtComplex GetC9() { return m_C9; }
121 EvtComplex GetC10() { return m_C10; }
122 EvtComplex GetC7eff0() { return m_C7eff0; }
123 EvtComplex GetC8eff0() { return m_C8eff0; }
124 EvtComplex GetC9tilda() { return m_C9tilda; }
125 EvtComplex GetC10tilda() { return m_C10tilda; }
126 EvtComplex GetP0() { return m_P0; }
127 double GetPE() { return m_PE; }
132 double m_Lambda,m_alphaMZ,m_mu,m_M_Z,m_M_t,m_M_W,m_alphaS,m_eta,m_sin2W,m_ialpha;
133 EvtComplex m_C1,m_C2,m_C3,m_C4,m_C5,m_C6,m_C7,m_C7eff0,m_C8,m_C8eff0,m_C9,m_C9tilda,m_C10,m_C10tilda,m_P0;
134 double m_A,m_B,m_C,m_D,m_E,m_F,m_Y,m_Z,m_PE;
136 double k[6][8],a[8],h[8],p[8],r[2][8],s[8],q[8],g[8];