1
subroutine mrst2001(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu)
2
C***************************************************************C
4
C This is a package for the new MRST 2001 NLO parton C
6
C Reference: A.D. Martin, R.G. Roberts, W.J. Stirling and C
7
C R.S. Thorne, hep-ph/0110215 C
9
C There are 4 pdf sets corresponding to mode = 1, 2, 3, 4 C
11
C Mode=1 gives the default set with Lambda(MSbar,nf=4) = 0.323 C
12
C corresponding to alpha_s(M_Z) of 0.119 C
13
C This set reads a grid whose first number is 0.00927 C
15
C Mode=2 gives the set with Lambda(MSbar,nf=4) = 0.290 C
16
C corresponding to alpha_s(M_Z) of 0.117 C
17
C This set reads a grid whose first number is 0.00953 C
19
C Mode=3 gives the set with Lambda(MSbar,nf=4) = 0.362 C
20
C corresponding to alpha_s(M_Z) of 0.121 C
21
C This set reads a grid whose first number is 0.00889 C
23
C Mode=4 gives the set MRST2001J which gives better agreement C
24
C with the Tevatron inclusive jet data but has unattractive C
25
C gluon behaviour at large x (see discussion in paper) C
26
C This set has Lambda(MSbar,nf=4) = 0.353(alpha_s(M_Z) = 0.121 C
27
C This set reads a grid whose first number is 0.00826 C
29
C This subroutine uses an improved interpolation procedure C
30
C for extracting values of the pdf's from the grid C
32
C Comments to : W.J.Stirling@durham.ac.uk C
34
C***************************************************************C
35
implicit real*8(a-h,o-z)
36
data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
38
if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2
39
if(x.lt.xmin.or.x.gt.xmax) print 98,x
41
call mrst1(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
42
elseif(mode.eq.2) then
43
call mrst2(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
44
elseif(mode.eq.3) then
45
call mrst3(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
46
elseif(mode.eq.4) then
47
call mrst4(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu)
49
99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ','q2= ',e10.5)
50
98 format(' WARNING: X VALUE IS OUT OF RANGE ','x= ',e10.5)
54
subroutine mrst1(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
55
implicit real*8(a-h,o-z)
57
Character Tablefile*40
58
data Tablefile/'alf119.dat'/
62
parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26)
63
real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq),
64
.f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb)
65
real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4),
66
.cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4),
67
.ccc(nx,nqc,4,4),ccb(nx,nqb,4,4)
68
real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb)
69
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
70
. 1d-4,2d-4,4d-4,6d-4,8d-4,
71
. 1d-3,2d-3,4d-3,6d-3,8d-3,
72
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
73
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
74
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
75
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
77
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
78
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
79
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
80
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
81
. 1.8d6,3.2d6,5.6d6,1d7/
82
c data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
88
c open(unit=33,file='Pdfdata/alf119.dat',status='old')
89
call OpenData(Tablefile)
92
read(IU,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m),
93
. f5(n,m),f7(n,m),f6(n,m),f8(n,m)
94
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
113
call jeppe1(nx,nq,xxl,qql,f1,cc1)
114
call jeppe1(nx,nq,xxl,qql,f2,cc2)
115
call jeppe1(nx,nq,xxl,qql,f3,cc3)
116
call jeppe1(nx,nq,xxl,qql,f4,cc4)
117
call jeppe1(nx,nq,xxl,qql,f6,cc6)
118
call jeppe1(nx,nq,xxl,qql,f8,cc8)
129
call jeppe1(nx,nqc,xxl,qqlc,fc,ccc)
137
call jeppe1(nx,nqb,xxl,qqlb,fb,ccb)
146
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv)
147
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv)
148
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu)
149
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea)
150
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc6,str)
151
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea)
155
call jeppe2(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm)
160
call jeppe2(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot)
169
subroutine mrst2(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
170
implicit real*8(a-h,o-z)
172
Character Tablefile*40
173
data Tablefile/'alf117.dat'/
177
parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26)
178
real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq),
179
.f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb)
180
real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4),
181
.cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4),
182
.ccc(nx,nqc,4,4),ccb(nx,nqb,4,4)
183
real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb)
184
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
185
. 1d-4,2d-4,4d-4,6d-4,8d-4,
186
. 1d-3,2d-3,4d-3,6d-3,8d-3,
187
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
188
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
189
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
190
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
192
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
193
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
194
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
195
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
196
. 1.8d6,3.2d6,5.6d6,1d7/
197
c data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
202
if(init.ne.0) goto 10
203
c open(unit=33,file='Pdfdata/alf117.dat',status='old')
204
call OpenData(Tablefile)
207
read(IU,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m),
208
. f5(n,m),f7(n,m),f6(n,m),f8(n,m)
209
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
228
call jeppe1(nx,nq,xxl,qql,f1,cc1)
229
call jeppe1(nx,nq,xxl,qql,f2,cc2)
230
call jeppe1(nx,nq,xxl,qql,f3,cc3)
231
call jeppe1(nx,nq,xxl,qql,f4,cc4)
232
call jeppe1(nx,nq,xxl,qql,f6,cc6)
233
call jeppe1(nx,nq,xxl,qql,f8,cc8)
244
call jeppe1(nx,nqc,xxl,qqlc,fc,ccc)
252
call jeppe1(nx,nqb,xxl,qqlb,fb,ccb)
261
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv)
262
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv)
263
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu)
264
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea)
265
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc6,str)
266
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea)
270
call jeppe2(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm)
275
call jeppe2(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot)
284
subroutine mrst3(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
285
implicit real*8(a-h,o-z)
287
Character Tablefile*40
288
data Tablefile/'alf121.dat'/
292
parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26)
293
real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq),
294
.f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb)
295
real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4),
296
.cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4),
297
.ccc(nx,nqc,4,4),ccb(nx,nqb,4,4)
298
real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb)
299
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
300
. 1d-4,2d-4,4d-4,6d-4,8d-4,
301
. 1d-3,2d-3,4d-3,6d-3,8d-3,
302
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
303
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
304
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
305
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
307
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
308
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
309
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
310
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
311
. 1.8d6,3.2d6,5.6d6,1d7/
312
c data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
317
if(init.ne.0) goto 10
318
c open(unit=33,file='Pdfdata/alf121.dat',status='old')
319
call OpenData(Tablefile)
322
read(IU,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m),
323
. f5(n,m),f7(n,m),f6(n,m),f8(n,m)
324
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
343
call jeppe1(nx,nq,xxl,qql,f1,cc1)
344
call jeppe1(nx,nq,xxl,qql,f2,cc2)
345
call jeppe1(nx,nq,xxl,qql,f3,cc3)
346
call jeppe1(nx,nq,xxl,qql,f4,cc4)
347
call jeppe1(nx,nq,xxl,qql,f6,cc6)
348
call jeppe1(nx,nq,xxl,qql,f8,cc8)
359
call jeppe1(nx,nqc,xxl,qqlc,fc,ccc)
367
call jeppe1(nx,nqb,xxl,qqlb,fb,ccb)
376
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv)
377
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv)
378
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu)
379
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea)
380
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc6,str)
381
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea)
385
call jeppe2(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm)
390
call jeppe2(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot)
399
subroutine mrst4(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
400
implicit real*8(a-h,o-z)
402
Character Tablefile*40
403
data Tablefile/'j121.dat'/
407
parameter(nx=49,nq=37,np=8,nqc0=2,nqb0=11,nqc=35,nqb=26)
408
real*8 f1(nx,nq),f2(nx,nq),f3(nx,nq),f4(nx,nq),f5(nx,nq),
409
.f6(nx,nq),f7(nx,nq),f8(nx,nq),fc(nx,nqc),fb(nx,nqb)
410
real*8 qq(nq),xx(nx),cc1(nx,nq,4,4),cc2(nx,nq,4,4),
411
.cc3(nx,nq,4,4),cc4(nx,nq,4,4),cc6(nx,nq,4,4),cc8(nx,nq,4,4),
412
.ccc(nx,nqc,4,4),ccb(nx,nqb,4,4)
413
real*8 xxl(nx),qql(nq),qqlc(nqc),qqlb(nqb)
414
data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
415
. 1d-4,2d-4,4d-4,6d-4,8d-4,
416
. 1d-3,2d-3,4d-3,6d-3,8d-3,
417
. 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
418
. .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
419
. .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
420
. .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
422
data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
423
. 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
424
. 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
425
. 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
426
. 1.8d6,3.2d6,5.6d6,1d7/
427
c data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
432
if(init.ne.0) goto 10
433
c open(unit=33,file='Pdfdata/j121.dat',status='old')
434
call OpenData(Tablefile)
437
read(IU,50)f1(n,m),f2(n,m),f3(n,m),f4(n,m),
438
. f5(n,m),f7(n,m),f6(n,m),f8(n,m)
439
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
458
call jeppe1(nx,nq,xxl,qql,f1,cc1)
459
call jeppe1(nx,nq,xxl,qql,f2,cc2)
460
call jeppe1(nx,nq,xxl,qql,f3,cc3)
461
call jeppe1(nx,nq,xxl,qql,f4,cc4)
462
call jeppe1(nx,nq,xxl,qql,f6,cc6)
463
call jeppe1(nx,nq,xxl,qql,f8,cc8)
474
call jeppe1(nx,nqc,xxl,qqlc,fc,ccc)
482
call jeppe1(nx,nqb,xxl,qqlb,fb,ccb)
491
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc1,upv)
492
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc2,dnv)
493
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc3,glu)
494
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc4,usea)
495
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc6,str)
496
call jeppe2(xlog,qsqlog,nx,nq,xxl,qql,cc8,dsea)
500
call jeppe2(xlog,qsqlog,nx,nqc,xxl,qqlc,ccc,chm)
505
call jeppe2(xlog,qsqlog,nx,nqb,xxl,qqlb,ccb,bot)