2
C-----------------------------------------------------------------------------
4
double precision function alfa(alfa0,qsq )
6
C-----------------------------------------------------------------------------
8
C This function returns the 1-loop value of alpha.
13
C-----------------------------------------------------------------------------
16
double precision qsq,alfa0
20
double precision One, Three, Pi,zmass
21
parameter( One = 1.0d0, Three = 3.0d0 )
22
parameter( Pi = 3.14159265358979323846d0 )
23
parameter( zmass = 91.188d0 )
25
alfa = alfa0 / ( 1.0d0 - alfa0*dlog( qsq/zmass**2 ) /Three /Pi )
31
C-----------------------------------------------------------------------------
33
double precision function alfaw(alfaw0,qsq,nh )
35
C-----------------------------------------------------------------------------
37
C This function returns the 1-loop value of alpha_w.
41
C nh = # of Higgs doublets
43
C-----------------------------------------------------------------------------
46
double precision qsq, alphaw, dum,alfaw0
55
double precision Two, Four, Pi, Twpi, zmass,tmass
56
parameter( Two = 2.0d0, Four = 4.0d0 )
57
parameter( Pi = 3.14159265358979323846d0 )
58
parameter( Twpi = 3.0d0*Four*Pi )
59
parameter( zmass = 91.188d0,tmass=174d0 )
61
if ( qsq.ge.tmass**2 ) then
66
dum = ( 22.0d0 - Four*nq - nh/Two ) / Twpi
67
alfaw = alfaw0 / ( 1.0d0 + dum*alfaw0*dlog( qsq/zmass**2 ) )
72
C-----------------------------------------------------------------------------
74
DOUBLE PRECISION FUNCTION ALPHAS(Q)
76
c Evaluation of strong coupling constant alpha_S
79
c q -- scale at which alpha_s is to be evaluated
81
c-- common block alfas.inc
82
c asmz -- value of alpha_s at the mass of the Z-boson
83
c nloop -- the number of loops (1,2, or 3) at which beta
85
c function is evaluated to determine running.
86
c the values of the cmass and the bmass should be set
87
c in common block qmass.
88
C-----------------------------------------------------------------------------
93
DOUBLE PRECISION Q,T,AMZ0,AMB,AMC
94
DOUBLE PRECISION AS_OUT
95
INTEGER NLOOP0,NF3,NF4,NF5
96
PARAMETER(NF5=5,NF4=4,NF3=3)
99
COMMON/QMASS/CMASS,BMASS
100
DATA CMASS,BMASS/1.42D0,4.7D0/ ! HEAVY QUARK MASSES FOR THRESHOLDS
105
SAVE AMZ0,NLOOP0,AMB,AMC
106
DATA AMZ0,NLOOP0/0D0,0/
108
WRITE(6,*) 'q .le. 0 in alphas'
112
IF (asmz .LE. 0D0) THEN
113
WRITE(6,*) 'asmz .le. 0 in alphas',asmz
114
c WRITE(6,*) 'continue with asmz=0.1185'
118
IF (CMASS .LE. 0.3D0) THEN
119
WRITE(6,*) 'cmass .le. 0.3GeV in alphas',CMASS
120
c WRITE(6,*) 'continue with cmass=1.5GeV?'
124
IF (BMASS .LE. 0D0) THEN
125
WRITE(6,*) 'bmass .le. 0 in alphas',BMASS
126
WRITE(6,*) 'COMMON/QMASS/CMASS,BMASS'
130
c--- establish value of coupling at b- and c-mass and save
131
IF ((asmz .NE. AMZ0) .OR. (NLOOP .NE. NLOOP0)) THEN
134
T=2D0*DLOG(BMASS/ZMASS)
135
CALL NEWTON1(T,asmz,AMB,NLOOP,NF5)
136
T=2D0*DLOG(CMASS/BMASS)
137
CALL NEWTON1(T,AMB,AMC,NLOOP,NF4)
140
c--- evaluate strong coupling at scale q
141
IF (Q .LT. BMASS) THEN
142
IF (Q .LT. CMASS) THEN
144
CALL NEWTON1(T,AMC,AS_OUT,NLOOP,NF3)
147
CALL NEWTON1(T,AMB,AS_OUT,NLOOP,NF4)
151
CALL NEWTON1(T,asmz,AS_OUT,NLOOP,NF5)
158
SUBROUTINE NEWTON1(T,A_IN,A_OUT,NLOOP,NF)
161
c--- calculate a_out using nloop beta-function evolution
162
c--- with nf flavours, given starting value as-in
163
c--- given as_in and logarithmic separation between
164
c--- input scale and output scale t.
165
c--- Evolution is performed using Newton's method,
166
c--- with a precision given by tol.
170
REAL*8 T,A_IN,A_OUT,AS,TOL,F2,F3,F,FP,DELTA
171
REAL*8 B0(3:5),C1(3:5),C2(3:5),DEL(3:5)
173
C--- B0=(11.-2.*NF/3.)/4./PI
174
DATA B0/0.716197243913527D0,0.66314559621623D0,0.61009394851893D0/
175
C--- C1=(102.D0-38.D0/3.D0*NF)/4.D0/PI/(11.D0-2.D0/3.D0*NF)
176
DATA C1/.565884242104515D0,0.49019722472304D0,0.40134724779695D0/
177
C--- C2=(2857.D0/2.D0-5033*NF/18.D0+325*NF**2/54)
178
C--- /16.D0/PI**2/(11.D0-2.D0/3.D0*NF)
179
DATA C2/0.453013579178645D0,0.30879037953664D0,0.14942733137107D0/
180
C--- DEL=SQRT(4*C2-C1**2)
181
DATA DEL/1.22140465909230D0,0.99743079911360D0,0.66077962451190D0/
182
F2(AS)=1D0/AS+C1(NF)*LOG((C1(NF)*AS)/(1D0+C1(NF)*AS))
183
F3(AS)=1D0/AS+0.5D0*C1(NF)
184
& *LOG((C2(NF)*AS**2)/(1D0+C1(NF)*AS+C2(NF)*AS**2))
185
& -(C1(NF)**2-2D0*C2(NF))/DEL(NF)
186
& *ATAN((2D0*C2(NF)*AS+C1(NF))/DEL(NF))
189
A_OUT=A_IN/(1D0+A_IN*B0(NF)*T)
190
IF (NLOOP .EQ. 1) RETURN
191
A_OUT=A_IN/(1D0+B0(NF)*A_IN*T+C1(NF)*A_IN*LOG(1D0+A_IN*B0(NF)*T))
192
IF (A_OUT .LT. 0D0) AS=0.3D0
195
IF (NLOOP .EQ. 2) THEN
196
F=B0(NF)*T+F2(A_IN)-F2(AS)
197
FP=1D0/(AS**2*(1D0+C1(NF)*AS))
199
IF (NLOOP .EQ. 3) THEN
200
F=B0(NF)*T+F3(A_IN)-F3(AS)
201
FP=1D0/(AS**2*(1D0+C1(NF)*AS+C2(NF)*AS**2))
205
IF (DELTA .GT. TOL) GO TO 30
210
C-----------------------------------------------------------------------------
212
double precision function mfrun(mf,scale,asmz,nloop)
214
C-----------------------------------------------------------------------------
216
C This function returns the 2-loop value of a MSbar fermion mass
219
C INPUT: mf = MSbar mass of fermion at MSbar fermion mass scale
220
C scale = scale at which the running mass is evaluated
221
C asmz = AS(MZ) : this is passed to alphas(scale,asmz,nloop)
222
C nloop = # of loops in the evolution
226
C EXTERNAL: double precision alphas(scale,asmz,nloop)
228
C-----------------------------------------------------------------------------
234
double precision mf,scale,asmz
239
double precision beta0, beta1,gamma0,gamma1
240
double precision A1,as,asmf,l2
245
double precision alphas
250
double precision One, Two, Three, Pi
251
parameter( One = 1.0d0, Two = 2.0d0, Three = 3.0d0 )
252
parameter( Pi = 3.14159265358979323846d0)
253
double precision tmass
254
parameter(tmass=174d0)
258
if ( mf.gt.tmass ) then
264
beta0 = ( 11.0d0 - Two/Three *nf )/4d0
265
beta1 = ( 102d0 - 38d0/Three*nf )/16d0
267
gamma1= ( 202d0/3d0 - 20d0/9d0*nf )/16d0
268
A1 = -beta1*gamma0/beta0**2+gamma1/beta0
271
l2 = (1+ A1*as/Pi)/(1+ A1*asmf/Pi)
274
mfrun = mf * (as/asmf)**(gamma0/beta0)
276
if(nloop.eq.2) mfrun =mfrun*l2