]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtWilsonCoeficients.hh
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtWilsonCoeficients.hh
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 // Coeficient 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 EvtWilsonCoeficients {
22
23 public:
24
25   EvtWilsonCoeficients();
26   //~EvtWilsonCoeficients() {};
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 CalculateAllCoeficients();
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   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; }
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   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; }
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