1
subroutine mrs98lo(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu)
2
C****************************************************************C
4
C This is a package for the new MRS LO 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, C
10
C and Lambda(MSbar,nf=4) is given below for each set. C
12
C Reference Martin, Roberts, Stirling and Thorne C
13
C Durham preprint DTP/98/52 (August 1998) C
15
C TEMPORARY NAMING SCHEME: C
17
C mode set comment L(4)/MeV a_s(M_Z) grid#1 C
18
C ---- --- ------- -------- ------- ------ C
20
C 1 LO05A central gluon, a_s 174 0.1250 0.01518 C
21
C 2 LO09A higher gluon 174 0.1250 0.01616 C
22
C 3 LO10A lower gluon 174 0.1250 0.01533 C
23
C 4 LO01A lower a_s 136 0.1200 0.01652 C
24
C 5 LO07A higher a_s 216 0.1300 0.01522 C
27
C The corresponding grid files are called lt05a.dat etc. C
30
C A.D. Martin, R.G. Roberts, W.J. Stirling, R.S Thorne C
31
C Univ. Durham preprint DTP/98/??, hep-ph/??????? (1998) C
33
C Comments to : W.J.Stirling@durham.ac.uk C
36
C****************************************************************C
37
implicit real*8(a-h,o-z)
38
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
40
if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99
41
if(x.lt.xmin.or.x.gt.xmax) print 98
43
call mrs98lo1(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
44
elseif(mode.eq.2) then
45
call mrs98lo2(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
46
elseif(mode.eq.3) then
47
call mrs98lo3(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
48
elseif(mode.eq.4) then
49
call mrs98lo4(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
50
elseif(mode.eq.5) then
51
call mrs98lo5(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
53
99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ')
54
98 format(' WARNING: X VALUE IS OUT OF RANGE ')
58
subroutine mrs98lo1(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
59
implicit real*8(a-h,o-z)
61
Character Tablefile*40
62
data Tablefile/'lo05a.dat'/
64
common/IU/IU !this is set in opendata.f
66
parameter(nx=49,nq=37,ntenth=23,np=8)
67
real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
68
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
69
. 1d-4,2d-4,4d-4,6d-4,8d-4,
70
. 1d-3,2d-3,4d-3,6d-3,8d-3,
71
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
72
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
73
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
74
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
76
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
77
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
78
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
79
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
80
. 1.8d6,3.2d6,5.6d6,1d7/
81
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
82
data n0/3,4,5,9,9,9,9,9/
88
c open(unit=1,file='Pdfdata/lo05a.dat',status='old')
89
call OpenData(Tablefile)
92
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
93
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
94
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
96
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
99
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
101
if(i.eq.5.or.i.eq.7) goto 31
103
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
113
if(qsq.lt.qsqmin) qsq=qsqmin
114
if(qsq.gt.qsqmax) qsq=qsqmax
116
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
119
if(xxx.gt.xx(n+1)) goto 70
120
a=(xxx-xx(n))/(xx(n+1)-xx(n))
123
if(qsq.gt.qq(m+1)) goto 80
124
b=(qsq-qq(m))/(qq(m+1)-qq(m))
126
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
127
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
128
if(n.ge.ntenth) goto 65
129
if(i.eq.5.or.i.eq.7) goto 65
130
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
131
g(i)=fac*10d0**(g(i)-fac)
133
g(i)=g(i)*(1d0-x)**n0(i)
148
subroutine mrs98lo2(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
149
implicit real*8(a-h,o-z)
151
Character Tablefile*40
152
data Tablefile/'lo09a.dat'/
154
common/IU/IU !this is set in opendata.f
156
parameter(nx=49,nq=37,ntenth=23,np=8)
157
real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
158
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
159
. 1d-4,2d-4,4d-4,6d-4,8d-4,
160
. 1d-3,2d-3,4d-3,6d-3,8d-3,
161
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
162
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
163
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
164
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
166
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
167
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
168
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
169
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
170
. 1.8d6,3.2d6,5.6d6,1d7/
171
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
172
data n0/3,4,5,9,9,9,9,9/
177
if(init.ne.0) goto 10
178
c open(unit=1,file='Pdfdata/lo09a.dat',status='old')
179
call OpenData(Tablefile)
182
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
183
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
184
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
186
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
189
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
191
if(i.eq.5.or.i.eq.7) goto 31
193
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
203
if(qsq.lt.qsqmin) qsq=qsqmin
204
if(qsq.gt.qsqmax) qsq=qsqmax
206
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
209
if(xxx.gt.xx(n+1)) goto 70
210
a=(xxx-xx(n))/(xx(n+1)-xx(n))
213
if(qsq.gt.qq(m+1)) goto 80
214
b=(qsq-qq(m))/(qq(m+1)-qq(m))
216
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
217
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
218
if(n.ge.ntenth) goto 65
219
if(i.eq.5.or.i.eq.7) goto 65
220
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
221
g(i)=fac*10d0**(g(i)-fac)
223
g(i)=g(i)*(1d0-x)**n0(i)
238
subroutine mrs98lo3(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
239
implicit real*8(a-h,o-z)
241
Character Tablefile*40
242
data Tablefile/'lo10a.dat'/
244
common/IU/IU !this is set in opendata.f
246
parameter(nx=49,nq=37,ntenth=23,np=8)
247
real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
248
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
249
. 1d-4,2d-4,4d-4,6d-4,8d-4,
250
. 1d-3,2d-3,4d-3,6d-3,8d-3,
251
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
252
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
253
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
254
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
256
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
257
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
258
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
259
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
260
. 1.8d6,3.2d6,5.6d6,1d7/
261
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
262
data n0/3,4,5,9,9,9,9,9/
267
if(init.ne.0) goto 10
268
c open(unit=1,file='Pdfdata/lo10a.dat',status='old')
269
call OpenData(Tablefile)
272
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
273
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
274
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
276
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
279
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
281
if(i.eq.5.or.i.eq.7) goto 31
283
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
293
if(qsq.lt.qsqmin) qsq=qsqmin
294
if(qsq.gt.qsqmax) qsq=qsqmax
296
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
299
if(xxx.gt.xx(n+1)) goto 70
300
a=(xxx-xx(n))/(xx(n+1)-xx(n))
303
if(qsq.gt.qq(m+1)) goto 80
304
b=(qsq-qq(m))/(qq(m+1)-qq(m))
306
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
307
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
308
if(n.ge.ntenth) goto 65
309
if(i.eq.5.or.i.eq.7) goto 65
310
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
311
g(i)=fac*10d0**(g(i)-fac)
313
g(i)=g(i)*(1d0-x)**n0(i)
329
subroutine mrs98lo4(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
330
implicit real*8(a-h,o-z)
332
Character Tablefile*40
333
data Tablefile/'lo01a.dat'/
335
common/IU/IU !this is set in opendata.f
337
parameter(nx=49,nq=37,ntenth=23,np=8)
338
real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
339
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
340
. 1d-4,2d-4,4d-4,6d-4,8d-4,
341
. 1d-3,2d-3,4d-3,6d-3,8d-3,
342
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
343
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
344
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
345
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
347
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
348
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
349
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
350
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
351
. 1.8d6,3.2d6,5.6d6,1d7/
352
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
353
data n0/3,4,5,9,9,9,9,9/
358
if(init.ne.0) goto 10
359
c open(unit=1,file='Pdfdata/lo01a.dat',status='old')
360
call OpenData(Tablefile)
363
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
364
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
365
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
367
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
370
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
372
if(i.eq.5.or.i.eq.7) goto 31
374
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
384
if(qsq.lt.qsqmin) qsq=qsqmin
385
if(qsq.gt.qsqmax) qsq=qsqmax
387
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
390
if(xxx.gt.xx(n+1)) goto 70
391
a=(xxx-xx(n))/(xx(n+1)-xx(n))
394
if(qsq.gt.qq(m+1)) goto 80
395
b=(qsq-qq(m))/(qq(m+1)-qq(m))
397
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
398
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
399
if(n.ge.ntenth) goto 65
400
if(i.eq.5.or.i.eq.7) goto 65
401
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
402
g(i)=fac*10d0**(g(i)-fac)
404
g(i)=g(i)*(1d0-x)**n0(i)
419
subroutine mrs98lo5(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
420
implicit real*8(a-h,o-z)
422
Character Tablefile*40
423
data Tablefile/'lo07a.dat'/
425
common/IU/IU !this is set in opendata.f
427
parameter(nx=49,nq=37,ntenth=23,np=8)
428
real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
429
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
430
. 1d-4,2d-4,4d-4,6d-4,8d-4,
431
. 1d-3,2d-3,4d-3,6d-3,8d-3,
432
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
433
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
434
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
435
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
437
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
438
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
439
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
440
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
441
. 1.8d6,3.2d6,5.6d6,1d7/
442
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
443
data n0/3,4,5,9,9,9,9,9/
448
if(init.ne.0) goto 10
449
c open(unit=1,file='Pdfdata/lo07a.dat',status='old')
450
call OpenData(Tablefile)
453
read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
454
. f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
455
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
457
25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
460
xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
462
if(i.eq.5.or.i.eq.7) goto 31
464
30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
474
if(qsq.lt.qsqmin) qsq=qsqmin
475
if(qsq.gt.qsqmax) qsq=qsqmax
477
if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
480
if(xxx.gt.xx(n+1)) goto 70
481
a=(xxx-xx(n))/(xx(n+1)-xx(n))
484
if(qsq.gt.qq(m+1)) goto 80
485
b=(qsq-qq(m))/(qq(m+1)-qq(m))
487
g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
488
. + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
489
if(n.ge.ntenth) goto 65
490
if(i.eq.5.or.i.eq.7) goto 65
491
fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
492
g(i)=fac*10d0**(g(i)-fac)
494
g(i)=g(i)*(1d0-x)**n0(i)