Line data Source code
1 : //---------------------------------------------------------------------------------
2 : //
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 : // Coefficient C8eff and C2 correction to C7eff taken from:
6 : // A.J.Buras, M.Misiak, M.Munz, S.Pokorski, Nucl.Phys. B424, 374 (1994)
7 : //
8 : // Used constants come from PDG 2004
9 : //
10 : // P. Reznicek 18.02.2005
11 : //
12 : // 04/03/2005 PR Added h-function
13 : //
14 : //---------------------------------------------------------------------------------
15 :
16 : #ifndef EVTWILSONCOEFICIENTS_HH
17 : #define EVTWILSONCOEFICIENTS_HH
18 :
19 : #include "EvtGenBase/EvtComplex.hh"
20 :
21 : class EvtWilsonCoefficients {
22 :
23 : public:
24 :
25 : EvtWilsonCoefficients();
26 : //~EvtWilsonCoefficients() {};
27 :
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);
34 :
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);
55 :
56 : // Intermediate functions A-F,Y,Z
57 : double A(double x);
58 : double B(double x);
59 : double C(double x);
60 : double D(double x);
61 : double E(double x);
62 : double F(double x);
63 : double Y(double x);
64 : double Z(double x);
65 :
66 : // Mode decay specific functions
67 : EvtComplex hzs(double z,double shat,double mu,double M_b);
68 : double fz(double z);
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);
75 :
76 : // User function
77 : void CalculateAllCoefficients();
78 : // Set parameters
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);
90 : // Get parameters
91 : double GetLambda() { return m_Lambda; }
92 : double GetStrongCouplingAtZMass() { return m_alphaMZ; }
93 0 : double GetStrongCouplingConst() { return m_alphaS; }
94 : double GetScale() { return m_mu; }
95 : int GetNumberOfFlavours() { return m_n_f; }
96 0 : 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 0 : double GetEta() { return m_eta; }
103 : // Get results
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 0 : EvtComplex GetC1() { return m_C1; }
113 0 : EvtComplex GetC2() { return m_C2; }
114 0 : EvtComplex GetC3() { return m_C3; }
115 0 : EvtComplex GetC4() { return m_C4; }
116 0 : EvtComplex GetC5() { return m_C5; }
117 0 : 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 0 : EvtComplex GetC7eff0() { return m_C7eff0; }
123 : EvtComplex GetC8eff0() { return m_C8eff0; }
124 0 : EvtComplex GetC9tilda() { return m_C9tilda; }
125 0 : EvtComplex GetC10tilda() { return m_C10tilda; }
126 : EvtComplex GetP0() { return m_P0; }
127 : double GetPE() { return m_PE; }
128 :
129 : private:
130 :
131 : int m_n_f,m_ksi;
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;
135 :
136 : double k[6][8],a[8],h[8],p[8],r[2][8],s[8],q[8],g[8];
137 :
138 : };
139 :
140 : #endif
|