1
subroutine mrs98(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu)
2
C****************************************************************C
4
C This is a package for the new MRS 1998 parton C
5
C distributions. The format is similar to the previous C
6
C (1996) MRS-R series. C
8
C As before, x times the parton distribution is returned, C
9
C q is the scale in GeV, MSbar factorization is assumed, C
10
C and Lambda(MSbar,nf=4) is given below for each set. C
12
C TEMPORARY NAMING SCHEME: C
14
C mode set comment L(4)/MeV a_s(M_Z) grid#1 C
15
C ---- --- ------- -------- ------- ------ C
17
C 1 FT08A central gluon, a_s 300 0.1175 0.00561 C
18
C 2 FT09A higher gluon 300 0.1175 0.00510 C
19
C 3 FT11A lower gluon 300 0.1175 0.00408 C
20
C 4 FT24A lower a_s 229 0.1125 0.00586 C
21
C 5 FT23A higher a_s 383 0.1225 0.00410 C
24
C The corresponding grid files are called ft08a.dat etc. C
27
C A.D. Martin, R.G. Roberts, W.J. Stirling, R.S Thorne C
28
C Univ. Durham preprint DTP/98/??, hep-ph/??????? (1998) C
30
C Comments to : W.J.Stirling@durham.ac.uk C
33
C****************************************************************C
34
implicit double precision(a-h,o-z)
35
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
37
if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99
38
if(x.lt.xmin.or.x.gt.xmax) print 98
40
call mrs981(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
41
elseif(mode.eq.2) then
42
call mrs982(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
43
elseif(mode.eq.3) then
44
call mrs983(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
45
elseif(mode.eq.4) then
46
call mrs984(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
47
elseif(mode.eq.5) then
48
call mrs985(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
50
99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ')
51
98 format(' WARNING: X VALUE IS OUT OF RANGE ')
55
subroutine mrs981(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
56
implicit double precision(a-h,o-z)
58
Character Tablefile*40
59
data Tablefile/'ft08a.dat'/
61
common/IU/IU !this is set in opendata.f
63
parameter(nx=49,nq=37,ntenth=23,np=8)
64
double precision f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
65
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
66
. 1d-4,2d-4,4d-4,6d-4,8d-4,
67
. 1d-3,2d-3,4d-3,6d-3,8d-3,
68
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
69
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
70
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
71
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
73
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
74
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
75
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
76
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
77
. 1.8d6,3.2d6,5.6d6,1d7/
78
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
79
data n0/3,4,5,9,9,9,9,9/
85
c open(unit=1,file='Pdfdata/ft08a.dat',status='old')
86
call OpenData(Tablefile)
89
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
90
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
91
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
93
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
96
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
98
if(i.eq.5.or.i.eq.7) goto 31
100
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
110
if(qsq.lt.qsqmin) qsq=qsqmin
111
if(qsq.gt.qsqmax) qsq=qsqmax
113
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
116
if(xxx.gt.xx(n+1)) goto 70
117
a=(xxx-xx(n))/(xx(n+1)-xx(n))
120
if(qsq.gt.qq(m+1)) goto 80
121
b=(qsq-qq(m))/(qq(m+1)-qq(m))
123
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
124
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
125
if(n.ge.ntenth) goto 65
126
if(i.eq.5.or.i.eq.7) goto 65
127
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
128
g(i)=fac*10d0**(g(i)-fac)
130
g(i)=g(i)*(1d0-x)**n0(i)
145
subroutine mrs982(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
146
implicit double precision(a-h,o-z)
148
Character Tablefile*40
149
data Tablefile/'ft09a.dat'/
151
common/IU/IU !this is set in opendata.f
153
parameter(nx=49,nq=37,ntenth=23,np=8)
154
double precision f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
155
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
156
. 1d-4,2d-4,4d-4,6d-4,8d-4,
157
. 1d-3,2d-3,4d-3,6d-3,8d-3,
158
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
159
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
160
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
161
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
163
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
164
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
165
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
166
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
167
. 1.8d6,3.2d6,5.6d6,1d7/
168
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
169
data n0/3,4,5,9,9,9,9,9/
174
if(init.ne.0) goto 10
175
c open(unit=1,file='Pdfdata/ft09a.dat',status='old')
176
call OpenData(Tablefile)
179
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
180
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
181
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
183
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
186
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
188
if(i.eq.5.or.i.eq.7) goto 31
190
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
200
if(qsq.lt.qsqmin) qsq=qsqmin
201
if(qsq.gt.qsqmax) qsq=qsqmax
203
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
206
if(xxx.gt.xx(n+1)) goto 70
207
a=(xxx-xx(n))/(xx(n+1)-xx(n))
210
if(qsq.gt.qq(m+1)) goto 80
211
b=(qsq-qq(m))/(qq(m+1)-qq(m))
213
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
214
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
215
if(n.ge.ntenth) goto 65
216
if(i.eq.5.or.i.eq.7) goto 65
217
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
218
g(i)=fac*10d0**(g(i)-fac)
220
g(i)=g(i)*(1d0-x)**n0(i)
235
subroutine mrs983(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
236
implicit double precision(a-h,o-z)
238
Character Tablefile*40
239
data Tablefile/'ft11a.dat'/
241
common/IU/IU !this is set in opendata.f
243
parameter(nx=49,nq=37,ntenth=23,np=8)
244
double precision f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
245
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
246
. 1d-4,2d-4,4d-4,6d-4,8d-4,
247
. 1d-3,2d-3,4d-3,6d-3,8d-3,
248
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
249
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
250
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
251
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
253
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
254
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
255
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
256
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
257
. 1.8d6,3.2d6,5.6d6,1d7/
258
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
259
data n0/3,4,5,9,9,9,9,9/
264
if(init.ne.0) goto 10
265
c open(unit=1,file='Pdfdata/ft11a.dat',status='old')
266
call OpenData(Tablefile)
269
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
270
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
271
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
273
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
276
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
278
if(i.eq.5.or.i.eq.7) goto 31
280
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
290
if(qsq.lt.qsqmin) qsq=qsqmin
291
if(qsq.gt.qsqmax) qsq=qsqmax
293
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
296
if(xxx.gt.xx(n+1)) goto 70
297
a=(xxx-xx(n))/(xx(n+1)-xx(n))
300
if(qsq.gt.qq(m+1)) goto 80
301
b=(qsq-qq(m))/(qq(m+1)-qq(m))
303
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
304
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
305
if(n.ge.ntenth) goto 65
306
if(i.eq.5.or.i.eq.7) goto 65
307
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
308
g(i)=fac*10d0**(g(i)-fac)
310
g(i)=g(i)*(1d0-x)**n0(i)
326
subroutine mrs984(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
327
implicit double precision(a-h,o-z)
329
Character Tablefile*40
330
data Tablefile/'ft24a.dat'/
332
common/IU/IU !this is set in opendata.f
334
parameter(nx=49,nq=37,ntenth=23,np=8)
335
double precision f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
336
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
337
. 1d-4,2d-4,4d-4,6d-4,8d-4,
338
. 1d-3,2d-3,4d-3,6d-3,8d-3,
339
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
340
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
341
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
342
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
344
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
345
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
346
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
347
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
348
. 1.8d6,3.2d6,5.6d6,1d7/
349
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
350
data n0/3,4,5,9,9,9,9,9/
355
if(init.ne.0) goto 10
356
c open(unit=1,file='Pdfdata/ft24a.dat',status='old')
357
call OpenData(Tablefile)
360
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
361
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
362
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
364
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
367
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
369
if(i.eq.5.or.i.eq.7) goto 31
371
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
381
if(qsq.lt.qsqmin) qsq=qsqmin
382
if(qsq.gt.qsqmax) qsq=qsqmax
384
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
387
if(xxx.gt.xx(n+1)) goto 70
388
a=(xxx-xx(n))/(xx(n+1)-xx(n))
391
if(qsq.gt.qq(m+1)) goto 80
392
b=(qsq-qq(m))/(qq(m+1)-qq(m))
394
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
395
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
396
if(n.ge.ntenth) goto 65
397
if(i.eq.5.or.i.eq.7) goto 65
398
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
399
g(i)=fac*10d0**(g(i)-fac)
401
g(i)=g(i)*(1d0-x)**n0(i)
416
subroutine mrs985(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
417
implicit double precision(a-h,o-z)
419
Character Tablefile*40
420
data Tablefile/'ft23a.dat'/
422
common/IU/IU !this is set in opendata.f
424
parameter(nx=49,nq=37,ntenth=23,np=8)
425
double precision f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
426
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
427
. 1d-4,2d-4,4d-4,6d-4,8d-4,
428
. 1d-3,2d-3,4d-3,6d-3,8d-3,
429
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
430
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
431
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
432
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
434
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
435
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
436
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
437
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
438
. 1.8d6,3.2d6,5.6d6,1d7/
439
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
440
data n0/3,4,5,9,9,9,9,9/
445
if(init.ne.0) goto 10
446
c open(unit=1,file='Pdfdata/ft23a.dat',status='old')
447
call OpenData(Tablefile)
450
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
451
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
452
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
454
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
457
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
459
if(i.eq.5.or.i.eq.7) goto 31
461
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
471
if(qsq.lt.qsqmin) qsq=qsqmin
472
if(qsq.gt.qsqmax) qsq=qsqmax
474
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
477
if(xxx.gt.xx(n+1)) goto 70
478
a=(xxx-xx(n))/(xx(n+1)-xx(n))
481
if(qsq.gt.qq(m+1)) goto 80
482
b=(qsq-qq(m))/(qq(m+1)-qq(m))
484
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
485
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
486
if(n.ge.ntenth) goto 65
487
if(i.eq.5.or.i.eq.7) goto 65
488
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
489
g(i)=fac*10d0**(g(i)-fac)
491
g(i)=g(i)*(1d0-x)**n0(i)