6 subroutine mkf2 (DQ2,DX,A,Z,DF2,DF1)
12 double precision dq2, dx, df2, df1, df2nf2p
13 DOUBLE PRECISION f2allm, dnp(5), dr, xpq
14 DOUBLE PRECISION gamma2, dnu, w2, pmass2
20 data dnp / 0.976d0, -1.34d0, 1.319d0,
24 w2=pmass2+(dq2*(1/dx-1))
25 dnu=(w2-pmass2+dq2)/(2.*massp)
28 if ((a.eq.1).and.(
z.eq.1))
then
30 IF(genset_fstruct(1:4).EQ.
'ALLM')
THEN
33 df1=(1.d0+gamma2)/(2.d0*dx)/(1.d0+dr)*df2
34 ELSEIF(genset_fstruct(1:4).EQ.
'F2PY')
THEN
36 ELSEIF(genset_fstruct(1:4).EQ.
'PDF')
THEN
37 call
pypdfu(2212,dx,dq2,xpq)
38 df2=1d0/9d0*(xpq(1)+xpq(-1)+xpq(3)+xpq(-3))+
39 & 4d0/9d0*(xpq(2)+xpq(-2))
40 df1=(1.d0+gamma2)/(2.d0*dx)*df2
43 write(*,*)(
'invalid parametrisation choice in mkf2')
45 ELSEIF(a.EQ.2.and.
z.eq.1)
THEN
47 IF(genset_fstruct(1:4).EQ.
'ALLM')
THEN
50 df2nf2p=dnp(1)+dx*(dnp(2)+dx*(dnp(3)+dx*(dnp(4)+dx*dnp(5))))
51 df2=df2*0.5*(df2nf2p+1.)
52 df1=(1.d0+gamma2)/(2.d0*dx)/(1.d0+dr)*df2
55 write(*,*)(
'MKF2: invalid parametrisation choice FStruct')
59 ELSEIF(a.EQ.1.and.
z.eq.0)
THEN
61 IF(genset_fstruct(1:4).EQ.
'ALLM')
THEN
64 df2nf2p=dnp(1)+dx*(dnp(2)+dx*(dnp(3)+dx*(dnp(4)+dx*dnp(5))))
66 df1=(1.d0+gamma2)/(2.d0*dx)/(1.d0+dr)*df2
67 ELSEIF(genset_fstruct(1:4).EQ.
'F2PY')
THEN
69 ELSEIF(genset_fstruct(1:4).EQ.
'PDF')
THEN
70 call
pypdfu(2112,dx,dq2,xpq)
71 df2=1d0/9d0*(xpq(1)+xpq(-1)+xpq(3)+xpq(-3))+
72 & 4d0/9d0*(xpq(2)+xpq(-2))
73 df1=(1.d0+gamma2)/(2.d0*dx)*df2
76 write(*,*)(
'MKF2: invalid parametrisation choice FStruct')
78 ELSEIF((a.gt.1).and.(
z.gt.1))
then
79 IF(genset_fstruct(1:4).EQ.
'PDF')
THEN
80 call
pypdfu(2212,dx,dq2,xpq)
81 df2=1d0/9d0*(xpq(1)+xpq(-1)+xpq(3)+xpq(-3))+
82 & 4d0/9d0*(xpq(2)+xpq(-2))
83 df1=(1.d0+gamma2)/(2.d0*dx)*df2
86 write(*,*)(
'invalid parametrisation choice in mkf2')
90 write(*,*)(
'MKF2: invalid target type'), a,
z
99 SUBROUTINE mkr(DQ2,DX,DR)
102 include
"py6strf.inc"
104 DOUBLE PRECISION dq2, dx
105 DOUBLE PRECISION dr,deltar
107 IF ( genset_r .EQ.
'1990' )
THEN
109 CALL
r1990(dq2,dx,dr,deltar)
111 ELSE IF ( genset_r .EQ.
'1998' )
THEN
113 CALL
r1998(dq2,dx,dr,deltar)
115 ELSE IF ( genset_r .eq.
'0' )
THEN
120 write(*,*)(
'MKR: invalid choice for R parametrization' )
132 DOUBLE PRECISION dq2, dx
133 DOUBLE PRECISION dr, deltar
137 REAL fac, rlog, q2thr
144 REAL ar1990(3), br1990(3), cr1990(3)
145 DATA ar1990 / .06723, .46714, 1.89794 /
146 DATA br1990 / .06347, .57468, -.35342 /
147 DATA cr1990 / .05992, .50885, 2.10807 /
152 IF (dq2.LT.0.35)
THEN
160 fac = 1+12.*(qq35/(1.+qq35))*(.125**2/(xx**2+.125**2))
161 rlog = fac/
log(qq35/.04)
162 q2thr = 5.*(1.-xx)**5
164 r_a = ar1990(1)*rlog +
165 & ar1990(2)/sqrt(sqrt(qq35**4+ar1990(3)**4))
166 r_b = br1990(1)*rlog +
167 & br1990(2)/qq35 + br1990(3)/(qq35**2+.3**2)
168 r_c = cr1990(1)*rlog +
169 & cr1990(2)/sqrt((qq35-q2thr)**2+cr1990(3)**2)
172 IF (dq2.GE.0.35)
THEN
196 DOUBLE PRECISION dq2,dx,dr,deltar
197 DOUBLE PRECISION q2,q2max,fac,rlog,q2thr
198 DOUBLE PRECISION r_a_new,r_a,r_b_new,r_b,r_c
200 DOUBLE PRECISION a(6),b(6),
c(6)
202 DATA a/ .0485, 0.5470, 2.0621, -.3804, 0.5090, -.0285/
203 DATA b/ .0481, 0.6114, -.3509, -.4611, 0.7172, -.0317/
204 DATA c/ .0577, 0.4644, 1.8288,12.3708,-43.1043,41.7415/
212 IF(q2.LT.q2max) q2=q2max
214 fac = 1+12.*(q2/(1.+q2))*(.125**2/(dx**2+.125**2))
215 rlog = fac/
log(q2/.04)
216 q2thr =
c(4)*dx+
c(5)*dx*dx+
c(6)*dx*dx*dx
219 r_a_new = (1.+a(4)*dx+a(5)*dx*dx)*dx**(a(6))
220 r_a = a(1)*rlog + a(2)/sqrt(sqrt(q2**4+a(3)**4))*r_a_new
221 r_b_new = (1.+b(4)*dx+b(5)*dx*dx)*dx**(b(6))
222 r_b = b(1)*rlog + (b(2)/q2 + b(3)/(q2**2+0.3**2))*r_b_new
223 r_c =
c(1)*rlog +
c(2)/sqrt((q2-q2thr)**2+
c(3)**2)
224 dr = (r_a+r_b+r_c)/3.
227 if (dq2.lt.q2max) dr = dr*dq2/q2max
230 if (q2 .GT. 0.5)
then
246 DOUBLE PRECISION dx,dq2
248 dr1998 = 0.0078-0.013*dx+(0.070-0.39*dx+0.7*dx*dx)/(1.7+dq2)
257 subroutine mkasym (dQ2, dX, A, Z, dA1, dA2)
261 double precision dq2, dx, da1, da2
273 double precision function fdilut (dQ2, dx, A)
277 DOUBLE PRECISION dq2, dx, df
278 DOUBLE PRECISION dnp, dfn, dfp
279 DOUBLE PRECISION dz, df2nf2p
303 dz = 1./2.*dlog(1.+dexp(2.0-1000.*dx))
304 df2nf2p = dnp(1)*(1.0-dx)**dnp(2)+dnp(3)*dx**dnp(4)
305 1 +(dnp(5)+dnp(6)*
dz+dnp(7)*
dz**2)
306 df = dfn*(1./((2./df2nf2p)+1))
319 implicit double precision (a-
h,o-
z)
321 REAL m02,m12,lam2,m22
322 common/allm/
sp,ap,bp,sr,ar,br,
s,xp,xr,f2p,f2r
325 , s11 = 0.28067, s12 = 0.22291, s13 = 2.1979,
326 , a11 = -0.0808 , a12 = -0.44812, a13 = 1.1709,
327 , b11 = 0.60243**2, b12 = 1.3754**2, b13 = 1.8439,
332 , s21 = 0.80107, s22 = 0.97307, s23 = 3.4942,
333 , a21 = 0.58400, a22 = 0.37888, a23 = 2.6063,
334 , b21 = 0.10711**2, b22 = 1.9386**2, b23 = 0.49338,
337 parameter( m02=0.31985, lam2=0.065270, q02=0.46017 +lam2 )
338 parameter( alfa=112.2, xmp2=0.8802)
340 w2=q2*(1./
x -1.)+xmp2
349 xp=1./(1.+(w2-xmp2)/(q2+m12))
357 xr=1./(1.+(w2-xmp2)/(q2+m22))
364 s=dlog(dlog((q2+q02)/lam2)/dlog(q02/lam2))
369 xp=1./(1.+(w2-xmp2)/(q2+m12))
370 ap=a11+(a11-a12)*(1./(1.+
s**a13)-1.)
372 sp=s11+(s11-s12)*(1./(1.+
s**s13)-1.)
377 xr=1./(1.+(w2-xmp2)/(q2+m22))
389 f2allm = q2/(q2+m02)*(f2p+f2r)
405 DOUBLE PRECISION vint
411 DOUBLE PRECISION f2dis,f1dis,sdis,svmd1,svmd2,sigvm,
x,q2,dipol
412 DOUBLE PRECISION mrho2,
alpha,
eps,
eta,pmass,pmass2,gevmb,rvmd
413 DOUBLE PRECISION w2,gamma2,
nu,convf2,convf1,conv,sigh,
pi
414 DOUBLE PRECISION f1,
f2,df2allm,df2allml,df1allm,df1allml,
r,rl
415 DOUBLE PRECISION w2l,gamma2l,nul,xl,sw2
418 DOUBLE PRECISION xpq,xpar,ypar
420 dimension xpq(-25:25),xpar(4),ypar(4)
423 DATA xpar/2*13.63d0,10.01d0,0.970d0/
424 DATA ypar/2*31.79d0,-1.51d0,-0.146d0/
425 DATA eps/0.0808d0/,
eta/-0.4525d0/
426 DATA mrho2/0.591822d0/,
alpha/7.297352533d-3/,pmass/0.93827d0/,
427 & gevmb/0.389379292d0/,
pi/3.14159265358979324d0/
461 if ((
x.gt.0d0).and.(
x.le.1d0))
then
462 w2=pmass2+(q2*(1./
x-1.))
473 nul=(w2l-pmass2+q2)/(2d0*pmass)
476 nu=(w2-pmass2+q2)/(2d0*pmass)
494 sw2=((w2l-pmass2)/(4d0-pmass2))**10
500 conv=q2*(1d0-
x)/(4d0*
pi**2*
alpha)/gevmb
507 f2dis=1d0/9d0*(xpq(1)+xpq(-1)+xpq(3)+xpq(-3))+
508 & 4d0/9d0*(xpq(2)+xpq(-2))
510 if (
mstp(19).eq.0)
then
514 if (
mstp(19).gt.1)
then
525 svmd1=(w2/(w2+q2))**
mstp(20)
526 if (
mstp(20).eq.0)
then
531 if (
mstp(17).eq.6)
then
532 rvmd=
parp(165)*(q2/mrho2)**
parp(166)
536 rvmd=
parp(165)*(4.*mrho2*q2)/(mrho2+q2)**2
539 svmd2=(mrho2/(mrho2+q2))**dipol
541 sigvm=svmd1*svmd2*sigh
542 convf2=(1d0+rvmd)/(1d0+gamma2)
545 f2=sdis*f2dis+conv*convf2*sigvm
546 f1dis=(1.d0+gamma2)/(2.d0*
x)*f2dis
547 f1=sdis*f1dis+conv*convf1*sigvm