~maddevelopers/mg5amcnlo/WWW5_caching

« back to all changes in this revision

Viewing changes to users/mardelcourt/PROC_242195/PROC_242195/Source/PDF/mrs99.f

  • Committer: John Doe
  • Date: 2013-03-25 20:27:02 UTC
  • Revision ID: john.doe@gmail.com-20130325202702-5sk3t1r8h33ca4p4
first clean version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine mrs99(x,q,mode,upv,dnv,usea,dsea,str,chm,bot,glu)
 
2
C****************************************************************C
 
3
C                                                                C
 
4
C     This is a package for the new **corrected** MRST parton    C
 
5
C     distributions. The format is similar to the previous       C
 
6
C     (1998) MRST series.                                        C
 
7
C                                                                C
 
8
C     NOTE: 7 new sets are added here, corresponding to shifting C
 
9
C     the small x HERA data up and down by 2.5%, and by varying  C
 
10
C     the charm and strange distributions, and by forcing a      C
 
11
C     larger d/u ratio at large x.                               C
 
12
C                                                                C
 
13
C     As before, x times the parton distribution is returned,    C
 
14
C     q is the scale in GeV, MSbar factorization is assumed,     C
 
15
C     and Lambda(MSbar,nf=4) is given below for each set.        C
 
16
C                                                                C
 
17
C     NAMING SCHEME:                                             C
 
18
C                                                                C
 
19
C  mode  set    comment             L(4)/MeV  a_s(M_Z)  grid#1   C
 
20
C  ----  ---    -------             --------  -------   ------   C
 
21
C                                                                C
 
22
C  1     COR01  central gluon, a_s    300      0.1175   0.00537  C
 
23
C  2     COR02  higher gluon          300      0.1175   0.00497  C
 
24
C  3     COR03  lower gluon           300      0.1175   0.00398  C
 
25
C  4     COR04  lower a_s             229      0.1125   0.00585  C
 
26
C  5     COR05  higher a_s            383      0.1225   0.00384  C
 
27
C  6     COR06  quarks up             303.3    0.1178   0.00497  C
 
28
C  7     COR07  quarks down           290.3    0.1171   0.00593  C
 
29
C  8     COR08  strange up            300      0.1175   0.00524  C
 
30
C  9     COR09  strange down          300      0.1175   0.00524  C
 
31
C  10    C0R10  charm up              300      0.1175   0.00525  C
 
32
C  11    COR11  charm down            300      0.1175   0.00524  C
 
33
C  12    COR12  larger d/u            300      0.1175   0.00515  C
 
34
C                                                                C
 
35
C      The corresponding grid files are called cor01.dat etc.    C
 
36
C                                                                C
 
37
C      The reference is:                                         C
 
38
C      A.D. Martin, R.G. Roberts, W.J. Stirling, R.S Thorne      C
 
39
C      Univ. Durham preprint DTP/99/64, hep-ph/9907231 (1999)    C
 
40
C                                                                C
 
41
C      Comments to : W.J.Stirling@durham.ac.uk                   C
 
42
C                                                                C
 
43
C                                                                C
 
44
C****************************************************************C
 
45
      implicit real*8(a-h,o-z)
 
46
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
47
      q2=q*q
 
48
      if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99
 
49
      if(x.lt.xmin.or.x.gt.xmax)       print 98
 
50
          if(mode.eq.1) then
 
51
        call mrs991(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
52
      elseif(mode.eq.2) then
 
53
        call mrs992(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
54
      elseif(mode.eq.3) then
 
55
        call mrs993(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
56
      elseif(mode.eq.4) then
 
57
        call mrs994(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
58
      elseif(mode.eq.5) then
 
59
        call mrs995(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
60
      elseif(mode.eq.6) then
 
61
        call mrs996(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
62
      elseif(mode.eq.7) then
 
63
        call mrs997(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
64
      elseif(mode.eq.8) then
 
65
        call mrs998(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
66
      elseif(mode.eq.9) then
 
67
        call mrs999(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
68
      elseif(mode.eq.10) then
 
69
        call mrs9910(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
70
      elseif(mode.eq.11) then
 
71
        call mrs9911(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
72
      elseif(mode.eq.12) then
 
73
        call mrs9912(x,q2,upv,dnv,usea,dsea,str,chm,bot,glu) 
 
74
      endif 
 
75
  99  format('  WARNING:  Q^2 VALUE IS OUT OF RANGE   ')
 
76
  98  format('  WARNING:   X  VALUE IS OUT OF RANGE   ')
 
77
      return
 
78
      end
 
79
 
 
80
      subroutine mrs991(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
81
      implicit real*8(a-h,o-z)
 
82
c-fabio
 
83
      Character Tablefile*40
 
84
      data Tablefile/'cor01.dat'/
 
85
      integer IU
 
86
      common/IU/IU  !this is set in opendata.f
 
87
c
 
88
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
89
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
90
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
91
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
92
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
93
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
94
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
95
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
96
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
97
     .     .8d0,.9d0,1d0/
 
98
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
99
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
100
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
101
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
102
     .        1.8d6,3.2d6,5.6d6,1d7/
 
103
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
104
      data n0/3,4,5,9,9,9,9,9/
 
105
      data init/0/
 
106
      save
 
107
      xsave=x
 
108
      q2save=qsq
 
109
      if(init.ne.0) goto 10
 
110
c        open(unit=1,file='Pdfdata/cor01.dat',status='old')
 
111
        call OpenData(Tablefile)
 
112
        do 20 n=1,nx-1
 
113
        do 20 m=1,nq
 
114
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
115
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
116
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
117
        do 25 i=1,np
 
118
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
119
  20  continue
 
120
      do 31 j=1,ntenth-1
 
121
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
122
      do 31 i=1,8
 
123
      if(i.eq.5.or.i.eq.7) goto 31
 
124
      do 30 k=1,nq
 
125
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
126
  31  continue
 
127
  50  format(8f10.5)
 
128
      do 40 i=1,np
 
129
      do 40 m=1,nq
 
130
  40  f(i,nx,m)=0d0
 
131
      init=1
 
132
  10  continue
 
133
      if(x.lt.xmin) x=xmin
 
134
      if(x.gt.xmax) x=xmax
 
135
      if(qsq.lt.qsqmin) qsq=qsqmin
 
136
      if(qsq.gt.qsqmax) qsq=qsqmax
 
137
      xxx=x
 
138
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
139
      n=0
 
140
  70  n=n+1
 
141
      if(xxx.gt.xx(n+1)) goto 70
 
142
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
143
      m=0
 
144
  80  m=m+1
 
145
      if(qsq.gt.qq(m+1)) goto 80
 
146
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
147
      do 60 i=1,np
 
148
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
149
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
150
      if(n.ge.ntenth) goto 65
 
151
      if(i.eq.5.or.i.eq.7) goto 65
 
152
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
153
          g(i)=fac*10d0**(g(i)-fac)
 
154
  65  continue
 
155
      g(i)=g(i)*(1d0-x)**n0(i)
 
156
  60  continue
 
157
      upv=g(1)
 
158
      dnv=g(2)
 
159
      usea=g(4)
 
160
      dsea=g(8)
 
161
      str=g(6)
 
162
      chm=g(5)
 
163
      glu=g(3) 
 
164
      bot=g(7)
 
165
        x=xsave
 
166
        qsq=q2save
 
167
      return
 
168
      end
 
169
      
 
170
      subroutine mrs992(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
171
      implicit real*8(a-h,o-z)
 
172
c-fabio
 
173
      Character Tablefile*40
 
174
      data Tablefile/'cor02.dat'/
 
175
      integer IU
 
176
      common/IU/IU  !this is set in opendata.f
 
177
c
 
178
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
179
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
180
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
181
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
182
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
183
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
184
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
185
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
186
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
187
     .     .8d0,.9d0,1d0/
 
188
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
189
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
190
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
191
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
192
     .        1.8d6,3.2d6,5.6d6,1d7/
 
193
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
194
      data n0/3,4,5,9,9,9,9,9/
 
195
      data init/0/
 
196
      save
 
197
      xsave=x
 
198
      q2save=qsq
 
199
      if(init.ne.0) goto 10
 
200
c        open(unit=1,file='Pdfdata/cor02.dat',status='old')
 
201
        call OpenData(Tablefile)
 
202
        do 20 n=1,nx-1
 
203
        do 20 m=1,nq
 
204
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
205
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
206
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
207
        do 25 i=1,np
 
208
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
209
  20  continue
 
210
      do 31 j=1,ntenth-1
 
211
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
212
      do 31 i=1,8
 
213
      if(i.eq.5.or.i.eq.7) goto 31
 
214
      do 30 k=1,nq
 
215
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
216
  31  continue
 
217
  50  format(8f10.5)
 
218
      do 40 i=1,np
 
219
      do 40 m=1,nq
 
220
  40  f(i,nx,m)=0d0
 
221
      init=1
 
222
  10  continue
 
223
      if(x.lt.xmin) x=xmin
 
224
      if(x.gt.xmax) x=xmax
 
225
      if(qsq.lt.qsqmin) qsq=qsqmin
 
226
      if(qsq.gt.qsqmax) qsq=qsqmax
 
227
      xxx=x
 
228
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
229
      n=0
 
230
  70  n=n+1
 
231
      if(xxx.gt.xx(n+1)) goto 70
 
232
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
233
      m=0
 
234
  80  m=m+1
 
235
      if(qsq.gt.qq(m+1)) goto 80
 
236
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
237
      do 60 i=1,np
 
238
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
239
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
240
      if(n.ge.ntenth) goto 65
 
241
      if(i.eq.5.or.i.eq.7) goto 65
 
242
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
243
          g(i)=fac*10d0**(g(i)-fac)
 
244
  65  continue
 
245
      g(i)=g(i)*(1d0-x)**n0(i)
 
246
  60  continue
 
247
      upv=g(1)
 
248
      dnv=g(2)
 
249
      usea=g(4)
 
250
      dsea=g(8)
 
251
      str=g(6)
 
252
      chm=g(5)
 
253
      glu=g(3) 
 
254
      bot=g(7)
 
255
        x=xsave
 
256
        qsq=q2save
 
257
      return
 
258
      end
 
259
      
 
260
      subroutine mrs993(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
261
      implicit real*8(a-h,o-z)
 
262
c-fabio
 
263
      Character Tablefile*40
 
264
      data Tablefile/'cor03.dat'/
 
265
      integer IU
 
266
      common/IU/IU  !this is set in opendata.f
 
267
c
 
268
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
269
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
270
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
271
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
272
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
273
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
274
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
275
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
276
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
277
     .     .8d0,.9d0,1d0/
 
278
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
279
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
280
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
281
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
282
     .        1.8d6,3.2d6,5.6d6,1d7/
 
283
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
284
      data n0/3,4,5,9,9,9,9,9/
 
285
      data init/0/
 
286
      save
 
287
      xsave=x
 
288
      q2save=qsq
 
289
      if(init.ne.0) goto 10
 
290
c        open(unit=1,file='Pdfdata/cor03.dat',status='old')
 
291
        call OpenData(Tablefile)
 
292
        do 20 n=1,nx-1
 
293
        do 20 m=1,nq
 
294
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
295
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
296
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
297
        do 25 i=1,np
 
298
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
299
  20  continue
 
300
      do 31 j=1,ntenth-1
 
301
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
302
      do 31 i=1,8
 
303
      if(i.eq.5.or.i.eq.7) goto 31
 
304
      do 30 k=1,nq
 
305
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
306
  31  continue
 
307
  50  format(8f10.5)
 
308
      do 40 i=1,np
 
309
      do 40 m=1,nq
 
310
  40  f(i,nx,m)=0d0
 
311
      init=1
 
312
  10  continue
 
313
      if(x.lt.xmin) x=xmin
 
314
      if(x.gt.xmax) x=xmax
 
315
      if(qsq.lt.qsqmin) qsq=qsqmin
 
316
      if(qsq.gt.qsqmax) qsq=qsqmax
 
317
      xxx=x
 
318
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
319
      n=0
 
320
  70  n=n+1
 
321
      if(xxx.gt.xx(n+1)) goto 70
 
322
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
323
      m=0
 
324
  80  m=m+1
 
325
      if(qsq.gt.qq(m+1)) goto 80
 
326
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
327
      do 60 i=1,np
 
328
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
329
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
330
      if(n.ge.ntenth) goto 65
 
331
      if(i.eq.5.or.i.eq.7) goto 65
 
332
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
333
          g(i)=fac*10d0**(g(i)-fac)
 
334
  65  continue
 
335
      g(i)=g(i)*(1d0-x)**n0(i)
 
336
  60  continue
 
337
      upv=g(1)
 
338
      dnv=g(2)
 
339
      usea=g(4)
 
340
      dsea=g(8)
 
341
      str=g(6)
 
342
      chm=g(5)
 
343
      glu=g(3) 
 
344
      bot=g(7)
 
345
        x=xsave
 
346
        qsq=q2save
 
347
      return
 
348
      end
 
349
      
 
350
      
 
351
      subroutine mrs994(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
352
      implicit real*8(a-h,o-z)
 
353
c-fabio
 
354
      Character Tablefile*40
 
355
      data Tablefile/'cor04.dat'/
 
356
      integer IU
 
357
      common/IU/IU  !this is set in opendata.f
 
358
c
 
359
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
360
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
361
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
362
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
363
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
364
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
365
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
366
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
367
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
368
     .     .8d0,.9d0,1d0/
 
369
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
370
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
371
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
372
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
373
     .        1.8d6,3.2d6,5.6d6,1d7/
 
374
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
375
      data n0/3,4,5,9,9,9,9,9/
 
376
      data init/0/
 
377
      save
 
378
      xsave=x
 
379
      q2save=qsq
 
380
      if(init.ne.0) goto 10
 
381
c        open(unit=1,file='Pdfdata/cor04.dat',status='old')
 
382
        call OpenData(Tablefile)
 
383
        do 20 n=1,nx-1
 
384
        do 20 m=1,nq
 
385
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
386
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
387
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
388
        do 25 i=1,np
 
389
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
390
  20  continue
 
391
      do 31 j=1,ntenth-1
 
392
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
393
      do 31 i=1,8
 
394
      if(i.eq.5.or.i.eq.7) goto 31
 
395
      do 30 k=1,nq
 
396
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
397
  31  continue
 
398
  50  format(8f10.5)
 
399
      do 40 i=1,np
 
400
      do 40 m=1,nq
 
401
  40  f(i,nx,m)=0d0
 
402
      init=1
 
403
  10  continue
 
404
      if(x.lt.xmin) x=xmin
 
405
      if(x.gt.xmax) x=xmax
 
406
      if(qsq.lt.qsqmin) qsq=qsqmin
 
407
      if(qsq.gt.qsqmax) qsq=qsqmax
 
408
      xxx=x
 
409
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
410
      n=0
 
411
  70  n=n+1
 
412
      if(xxx.gt.xx(n+1)) goto 70
 
413
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
414
      m=0
 
415
  80  m=m+1
 
416
      if(qsq.gt.qq(m+1)) goto 80
 
417
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
418
      do 60 i=1,np
 
419
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
420
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
421
      if(n.ge.ntenth) goto 65
 
422
      if(i.eq.5.or.i.eq.7) goto 65
 
423
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
424
          g(i)=fac*10d0**(g(i)-fac)
 
425
  65  continue
 
426
      g(i)=g(i)*(1d0-x)**n0(i)
 
427
  60  continue
 
428
      upv=g(1)
 
429
      dnv=g(2)
 
430
      usea=g(4)
 
431
      dsea=g(8)
 
432
      str=g(6)
 
433
      chm=g(5)
 
434
      glu=g(3) 
 
435
      bot=g(7)
 
436
        x=xsave
 
437
        qsq=q2save
 
438
      return
 
439
      end
 
440
      
 
441
      subroutine mrs995(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
442
      implicit real*8(a-h,o-z)
 
443
c-fabio
 
444
      Character Tablefile*40
 
445
      data Tablefile/'cor05.dat'/
 
446
      integer IU
 
447
      common/IU/IU  !this is set in opendata.f
 
448
c
 
449
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
450
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
451
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
452
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
453
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
454
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
455
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
456
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
457
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
458
     .     .8d0,.9d0,1d0/
 
459
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
460
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
461
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
462
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
463
     .        1.8d6,3.2d6,5.6d6,1d7/
 
464
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
465
      data n0/3,4,5,9,9,9,9,9/
 
466
      data init/0/
 
467
      save
 
468
      xsave=x
 
469
      q2save=qsq
 
470
      if(init.ne.0) goto 10
 
471
c        open(unit=1,file='Pdfdata/cor05.dat',status='old')
 
472
        call OpenData(Tablefile)
 
473
        do 20 n=1,nx-1
 
474
        do 20 m=1,nq
 
475
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
476
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
477
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
478
        do 25 i=1,np
 
479
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
480
  20  continue
 
481
      do 31 j=1,ntenth-1
 
482
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
483
      do 31 i=1,8
 
484
      if(i.eq.5.or.i.eq.7) goto 31
 
485
      do 30 k=1,nq
 
486
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
487
  31  continue
 
488
  50  format(8f10.5)
 
489
      do 40 i=1,np
 
490
      do 40 m=1,nq
 
491
  40  f(i,nx,m)=0d0
 
492
      init=1
 
493
  10  continue
 
494
      if(x.lt.xmin) x=xmin
 
495
      if(x.gt.xmax) x=xmax
 
496
      if(qsq.lt.qsqmin) qsq=qsqmin
 
497
      if(qsq.gt.qsqmax) qsq=qsqmax
 
498
      xxx=x
 
499
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
500
      n=0
 
501
  70  n=n+1
 
502
      if(xxx.gt.xx(n+1)) goto 70
 
503
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
504
      m=0
 
505
  80  m=m+1
 
506
      if(qsq.gt.qq(m+1)) goto 80
 
507
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
508
      do 60 i=1,np
 
509
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
510
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
511
      if(n.ge.ntenth) goto 65
 
512
      if(i.eq.5.or.i.eq.7) goto 65
 
513
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
514
          g(i)=fac*10d0**(g(i)-fac)
 
515
  65  continue
 
516
      g(i)=g(i)*(1d0-x)**n0(i)
 
517
  60  continue
 
518
      upv=g(1)
 
519
      dnv=g(2)
 
520
      usea=g(4)
 
521
      dsea=g(8)
 
522
      str=g(6)
 
523
      chm=g(5)
 
524
      glu=g(3) 
 
525
      bot=g(7)
 
526
        x=xsave
 
527
        qsq=q2save
 
528
      return
 
529
      end
 
530
      
 
531
 
 
532
      subroutine mrs996(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
533
      implicit real*8(a-h,o-z)
 
534
c-fabio
 
535
      Character Tablefile*40
 
536
      data Tablefile/'cor06.dat'/
 
537
      integer IU
 
538
      common/IU/IU  !this is set in opendata.f
 
539
c
 
540
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
541
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
542
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
543
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
544
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
545
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
546
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
547
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
548
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
549
     .     .8d0,.9d0,1d0/
 
550
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
551
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
552
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
553
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
554
     .        1.8d6,3.2d6,5.6d6,1d7/
 
555
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
556
      data n0/3,4,5,9,9,9,9,9/
 
557
      data init/0/
 
558
      save
 
559
      xsave=x
 
560
      q2save=qsq
 
561
      if(init.ne.0) goto 10
 
562
c        open(unit=1,file='Pdfdata/cor06.dat',status='old')
 
563
        call OpenData(Tablefile)
 
564
        do 20 n=1,nx-1
 
565
        do 20 m=1,nq
 
566
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
567
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
568
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
569
        do 25 i=1,np
 
570
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
571
  20  continue
 
572
      do 31 j=1,ntenth-1
 
573
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
574
      do 31 i=1,8
 
575
      if(i.eq.5.or.i.eq.7) goto 31
 
576
      do 30 k=1,nq
 
577
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
578
  31  continue
 
579
  50  format(8f10.5)
 
580
      do 40 i=1,np
 
581
      do 40 m=1,nq
 
582
  40  f(i,nx,m)=0d0
 
583
      init=1
 
584
  10  continue
 
585
      if(x.lt.xmin) x=xmin
 
586
      if(x.gt.xmax) x=xmax
 
587
      if(qsq.lt.qsqmin) qsq=qsqmin
 
588
      if(qsq.gt.qsqmax) qsq=qsqmax
 
589
      xxx=x
 
590
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
591
      n=0
 
592
  70  n=n+1
 
593
      if(xxx.gt.xx(n+1)) goto 70
 
594
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
595
      m=0
 
596
  80  m=m+1
 
597
      if(qsq.gt.qq(m+1)) goto 80
 
598
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
599
      do 60 i=1,np
 
600
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
601
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
602
      if(n.ge.ntenth) goto 65
 
603
      if(i.eq.5.or.i.eq.7) goto 65
 
604
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
605
          g(i)=fac*10d0**(g(i)-fac)
 
606
  65  continue
 
607
      g(i)=g(i)*(1d0-x)**n0(i)
 
608
  60  continue
 
609
      upv=g(1)
 
610
      dnv=g(2)
 
611
      usea=g(4)
 
612
      dsea=g(8)
 
613
      str=g(6)
 
614
      chm=g(5)
 
615
      glu=g(3) 
 
616
      bot=g(7)
 
617
        x=xsave
 
618
        qsq=q2save
 
619
      return
 
620
      end
 
621
      
 
622
      subroutine mrs997(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
623
      implicit real*8(a-h,o-z)
 
624
c-fabio
 
625
      Character Tablefile*40
 
626
      data Tablefile/'cor07.dat'/
 
627
      integer IU
 
628
      common/IU/IU  !this is set in opendata.f
 
629
c
 
630
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
631
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
632
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
633
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
634
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
635
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
636
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
637
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
638
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
639
     .     .8d0,.9d0,1d0/
 
640
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
641
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
642
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
643
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
644
     .        1.8d6,3.2d6,5.6d6,1d7/
 
645
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
646
      data n0/3,4,5,9,9,9,9,9/
 
647
      data init/0/
 
648
      save
 
649
      xsave=x
 
650
      q2save=qsq
 
651
      if(init.ne.0) goto 10
 
652
c        open(unit=1,file='Pdfdata/cor07.dat',status='old')
 
653
        call OpenData(Tablefile)
 
654
        do 20 n=1,nx-1
 
655
        do 20 m=1,nq
 
656
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
657
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
658
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
659
        do 25 i=1,np
 
660
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
661
  20  continue
 
662
      do 31 j=1,ntenth-1
 
663
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
664
      do 31 i=1,8
 
665
      if(i.eq.5.or.i.eq.7) goto 31
 
666
      do 30 k=1,nq
 
667
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
668
  31  continue
 
669
  50  format(8f10.5)
 
670
      do 40 i=1,np
 
671
      do 40 m=1,nq
 
672
  40  f(i,nx,m)=0d0
 
673
      init=1
 
674
  10  continue
 
675
      if(x.lt.xmin) x=xmin
 
676
      if(x.gt.xmax) x=xmax
 
677
      if(qsq.lt.qsqmin) qsq=qsqmin
 
678
      if(qsq.gt.qsqmax) qsq=qsqmax
 
679
      xxx=x
 
680
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
681
      n=0
 
682
  70  n=n+1
 
683
      if(xxx.gt.xx(n+1)) goto 70
 
684
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
685
      m=0
 
686
  80  m=m+1
 
687
      if(qsq.gt.qq(m+1)) goto 80
 
688
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
689
      do 60 i=1,np
 
690
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
691
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
692
      if(n.ge.ntenth) goto 65
 
693
      if(i.eq.5.or.i.eq.7) goto 65
 
694
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
695
          g(i)=fac*10d0**(g(i)-fac)
 
696
  65  continue
 
697
      g(i)=g(i)*(1d0-x)**n0(i)
 
698
  60  continue
 
699
      upv=g(1)
 
700
      dnv=g(2)
 
701
      usea=g(4)
 
702
      dsea=g(8)
 
703
      str=g(6)
 
704
      chm=g(5)
 
705
      glu=g(3) 
 
706
      bot=g(7)
 
707
        x=xsave
 
708
        qsq=q2save
 
709
      return
 
710
      end
 
711
      
 
712
 
 
713
 
 
714
      subroutine mrs998(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
715
      implicit real*8(a-h,o-z)
 
716
c-fabio
 
717
      Character Tablefile*40
 
718
      data Tablefile/'cor08.dat'/
 
719
      integer IU
 
720
      common/IU/IU  !this is set in opendata.f
 
721
c
 
722
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
723
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
724
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
725
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
726
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
727
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
728
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
729
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
730
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
731
     .     .8d0,.9d0,1d0/
 
732
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
733
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
734
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
735
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
736
     .        1.8d6,3.2d6,5.6d6,1d7/
 
737
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
738
      data n0/3,4,5,9,9,9,9,9/
 
739
      data init/0/
 
740
      save
 
741
      xsave=x
 
742
      q2save=qsq
 
743
      if(init.ne.0) goto 10
 
744
c        open(unit=1,file='Pdfdata/cor08.dat',status='old')
 
745
        call OpenData(Tablefile)
 
746
        do 20 n=1,nx-1
 
747
        do 20 m=1,nq
 
748
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
749
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
750
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
751
        do 25 i=1,np
 
752
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
753
  20  continue
 
754
      do 31 j=1,ntenth-1
 
755
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
756
      do 31 i=1,8
 
757
      if(i.eq.5.or.i.eq.7) goto 31
 
758
      do 30 k=1,nq
 
759
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
760
  31  continue
 
761
  50  format(8f10.5)
 
762
      do 40 i=1,np
 
763
      do 40 m=1,nq
 
764
  40  f(i,nx,m)=0d0
 
765
      init=1
 
766
  10  continue
 
767
      if(x.lt.xmin) x=xmin
 
768
      if(x.gt.xmax) x=xmax
 
769
      if(qsq.lt.qsqmin) qsq=qsqmin
 
770
      if(qsq.gt.qsqmax) qsq=qsqmax
 
771
      xxx=x
 
772
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
773
      n=0
 
774
  70  n=n+1
 
775
      if(xxx.gt.xx(n+1)) goto 70
 
776
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
777
      m=0
 
778
  80  m=m+1
 
779
      if(qsq.gt.qq(m+1)) goto 80
 
780
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
781
      do 60 i=1,np
 
782
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
783
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
784
      if(n.ge.ntenth) goto 65
 
785
      if(i.eq.5.or.i.eq.7) goto 65
 
786
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
787
          g(i)=fac*10d0**(g(i)-fac)
 
788
  65  continue
 
789
      g(i)=g(i)*(1d0-x)**n0(i)
 
790
  60  continue
 
791
      upv=g(1)
 
792
      dnv=g(2)
 
793
      usea=g(4)
 
794
      dsea=g(8)
 
795
      str=g(6)
 
796
      chm=g(5)
 
797
      glu=g(3) 
 
798
      bot=g(7)
 
799
        x=xsave
 
800
        qsq=q2save
 
801
      return
 
802
      end
 
803
      
 
804
      subroutine mrs999(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
805
      implicit real*8(a-h,o-z)
 
806
c-fabio
 
807
      Character Tablefile*40
 
808
      data Tablefile/'cor09.dat'/
 
809
      integer IU
 
810
      common/IU/IU  !this is set in opendata.f
 
811
c
 
812
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
813
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
814
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
815
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
816
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
817
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
818
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
819
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
820
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
821
     .     .8d0,.9d0,1d0/
 
822
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
823
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
824
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
825
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
826
     .        1.8d6,3.2d6,5.6d6,1d7/
 
827
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
828
      data n0/3,4,5,9,9,9,9,9/
 
829
      data init/0/
 
830
      save
 
831
      xsave=x
 
832
      q2save=qsq
 
833
      if(init.ne.0) goto 10
 
834
c        open(unit=1,file='Pdfdata/cor09.dat',status='old')
 
835
        call OpenData(Tablefile)
 
836
        do 20 n=1,nx-1
 
837
        do 20 m=1,nq
 
838
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
839
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
840
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
841
        do 25 i=1,np
 
842
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
843
  20  continue
 
844
      do 31 j=1,ntenth-1
 
845
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
846
      do 31 i=1,8
 
847
      if(i.eq.5.or.i.eq.7) goto 31
 
848
      do 30 k=1,nq
 
849
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
850
  31  continue
 
851
  50  format(8f10.5)
 
852
      do 40 i=1,np
 
853
      do 40 m=1,nq
 
854
  40  f(i,nx,m)=0d0
 
855
      init=1
 
856
  10  continue
 
857
      if(x.lt.xmin) x=xmin
 
858
      if(x.gt.xmax) x=xmax
 
859
      if(qsq.lt.qsqmin) qsq=qsqmin
 
860
      if(qsq.gt.qsqmax) qsq=qsqmax
 
861
      xxx=x
 
862
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
863
      n=0
 
864
  70  n=n+1
 
865
      if(xxx.gt.xx(n+1)) goto 70
 
866
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
867
      m=0
 
868
  80  m=m+1
 
869
      if(qsq.gt.qq(m+1)) goto 80
 
870
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
871
      do 60 i=1,np
 
872
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
873
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
874
      if(n.ge.ntenth) goto 65
 
875
      if(i.eq.5.or.i.eq.7) goto 65
 
876
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
877
          g(i)=fac*10d0**(g(i)-fac)
 
878
  65  continue
 
879
      g(i)=g(i)*(1d0-x)**n0(i)
 
880
  60  continue
 
881
      upv=g(1)
 
882
      dnv=g(2)
 
883
      usea=g(4)
 
884
      dsea=g(8)
 
885
      str=g(6)
 
886
      chm=g(5)
 
887
      glu=g(3) 
 
888
      bot=g(7)
 
889
        x=xsave
 
890
        qsq=q2save
 
891
      return
 
892
      end
 
893
      
 
894
 
 
895
 
 
896
      subroutine mrs9910(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
897
      implicit real*8(a-h,o-z)
 
898
c-fabio
 
899
      Character Tablefile*40
 
900
      data Tablefile/'cor10.dat'/
 
901
      integer IU
 
902
      common/IU/IU  !this is set in opendata.f
 
903
c
 
904
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
905
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
906
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
907
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
908
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
909
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
910
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
911
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
912
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
913
     .     .8d0,.9d0,1d0/
 
914
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
915
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
916
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
917
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
918
     .        1.8d6,3.2d6,5.6d6,1d7/
 
919
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
920
      data n0/3,4,5,9,9,9,9,9/
 
921
      data init/0/
 
922
      save
 
923
      xsave=x
 
924
      q2save=qsq
 
925
      if(init.ne.0) goto 10
 
926
c        open(unit=1,file='Pdfdata/cor10.dat',status='old')
 
927
        call OpenData(Tablefile)
 
928
        do 20 n=1,nx-1
 
929
        do 20 m=1,nq
 
930
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
931
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
932
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
933
        do 25 i=1,np
 
934
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
935
  20  continue
 
936
      do 31 j=1,ntenth-1
 
937
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
938
      do 31 i=1,8
 
939
      if(i.eq.5.or.i.eq.7) goto 31
 
940
      do 30 k=1,nq
 
941
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
942
  31  continue
 
943
  50  format(8f10.5)
 
944
      do 40 i=1,np
 
945
      do 40 m=1,nq
 
946
  40  f(i,nx,m)=0d0
 
947
      init=1
 
948
  10  continue
 
949
      if(x.lt.xmin) x=xmin
 
950
      if(x.gt.xmax) x=xmax
 
951
      if(qsq.lt.qsqmin) qsq=qsqmin
 
952
      if(qsq.gt.qsqmax) qsq=qsqmax
 
953
      xxx=x
 
954
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
955
      n=0
 
956
  70  n=n+1
 
957
      if(xxx.gt.xx(n+1)) goto 70
 
958
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
959
      m=0
 
960
  80  m=m+1
 
961
      if(qsq.gt.qq(m+1)) goto 80
 
962
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
963
      do 60 i=1,np
 
964
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
965
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
966
      if(n.ge.ntenth) goto 65
 
967
      if(i.eq.5.or.i.eq.7) goto 65
 
968
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
969
          g(i)=fac*10d0**(g(i)-fac)
 
970
  65  continue
 
971
      g(i)=g(i)*(1d0-x)**n0(i)
 
972
  60  continue
 
973
      upv=g(1)
 
974
      dnv=g(2)
 
975
      usea=g(4)
 
976
      dsea=g(8)
 
977
      str=g(6)
 
978
      chm=g(5)
 
979
      glu=g(3) 
 
980
      bot=g(7)
 
981
        x=xsave
 
982
        qsq=q2save
 
983
      return
 
984
      end
 
985
      
 
986
      subroutine mrs9911(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
987
      implicit real*8(a-h,o-z)
 
988
c-fabio
 
989
      Character Tablefile*40
 
990
      data Tablefile/'cor11.dat'/
 
991
      integer IU
 
992
      common/IU/IU  !this is set in opendata.f
 
993
c
 
994
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
995
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
996
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
997
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
998
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
999
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
1000
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
1001
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
1002
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
1003
     .     .8d0,.9d0,1d0/
 
1004
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
1005
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
1006
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
1007
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
1008
     .        1.8d6,3.2d6,5.6d6,1d7/
 
1009
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
1010
      data n0/3,4,5,9,9,9,9,9/
 
1011
      data init/0/
 
1012
      save
 
1013
      xsave=x
 
1014
      q2save=qsq
 
1015
      if(init.ne.0) goto 10
 
1016
c        open(unit=1,file='Pdfdata/cor11.dat',status='old')
 
1017
        call OpenData(Tablefile)
 
1018
        do 20 n=1,nx-1
 
1019
        do 20 m=1,nq
 
1020
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
1021
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
1022
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
1023
        do 25 i=1,np
 
1024
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
1025
  20  continue
 
1026
      do 31 j=1,ntenth-1
 
1027
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
1028
      do 31 i=1,8
 
1029
      if(i.eq.5.or.i.eq.7) goto 31
 
1030
      do 30 k=1,nq
 
1031
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
1032
  31  continue
 
1033
  50  format(8f10.5)
 
1034
      do 40 i=1,np
 
1035
      do 40 m=1,nq
 
1036
  40  f(i,nx,m)=0d0
 
1037
      init=1
 
1038
  10  continue
 
1039
      if(x.lt.xmin) x=xmin
 
1040
      if(x.gt.xmax) x=xmax
 
1041
      if(qsq.lt.qsqmin) qsq=qsqmin
 
1042
      if(qsq.gt.qsqmax) qsq=qsqmax
 
1043
      xxx=x
 
1044
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
1045
      n=0
 
1046
  70  n=n+1
 
1047
      if(xxx.gt.xx(n+1)) goto 70
 
1048
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
1049
      m=0
 
1050
  80  m=m+1
 
1051
      if(qsq.gt.qq(m+1)) goto 80
 
1052
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
1053
      do 60 i=1,np
 
1054
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
1055
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
1056
      if(n.ge.ntenth) goto 65
 
1057
      if(i.eq.5.or.i.eq.7) goto 65
 
1058
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
1059
          g(i)=fac*10d0**(g(i)-fac)
 
1060
  65  continue
 
1061
      g(i)=g(i)*(1d0-x)**n0(i)
 
1062
  60  continue
 
1063
      upv=g(1)
 
1064
      dnv=g(2)
 
1065
      usea=g(4)
 
1066
      dsea=g(8)
 
1067
      str=g(6)
 
1068
      chm=g(5)
 
1069
      glu=g(3) 
 
1070
      bot=g(7)
 
1071
        x=xsave
 
1072
        qsq=q2save
 
1073
      return
 
1074
      end
 
1075
      
 
1076
      
 
1077
      subroutine mrs9912(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
 
1078
      implicit real*8(a-h,o-z)
 
1079
c-fabio
 
1080
      Character Tablefile*40
 
1081
      data Tablefile/'cor12.dat'/
 
1082
      integer IU
 
1083
      common/IU/IU  !this is set in opendata.f
 
1084
c
 
1085
      parameter(nx=49,nq=37,ntenth=23,np=8)
 
1086
      real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
 
1087
      data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
 
1088
     .        1d-4,2d-4,4d-4,6d-4,8d-4,
 
1089
     .        1d-3,2d-3,4d-3,6d-3,8d-3,
 
1090
     .        1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
 
1091
     .     .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
 
1092
     .     .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
 
1093
     .     .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
 
1094
     .     .8d0,.9d0,1d0/
 
1095
      data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
 
1096
     .        1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
 
1097
     .        1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
 
1098
     .        1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
 
1099
     .        1.8d6,3.2d6,5.6d6,1d7/
 
1100
      data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
 
1101
      data n0/3,4,5,9,9,9,9,9/
 
1102
      data init/0/
 
1103
      save
 
1104
      xsave=x
 
1105
      q2save=qsq
 
1106
      if(init.ne.0) goto 10
 
1107
c        open(unit=1,file='Pdfdata/cor12.dat',status='old')
 
1108
        call OpenData(Tablefile)
 
1109
        do 20 n=1,nx-1
 
1110
        do 20 m=1,nq
 
1111
        read(IU,50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
 
1112
     .            f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
 
1113
c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
 
1114
        do 25 i=1,np
 
1115
  25     f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
 
1116
  20  continue
 
1117
      do 31 j=1,ntenth-1
 
1118
      xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
 
1119
      do 31 i=1,8
 
1120
      if(i.eq.5.or.i.eq.7) goto 31
 
1121
      do 30 k=1,nq
 
1122
  30  f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
 
1123
  31  continue
 
1124
  50  format(8f10.5)
 
1125
      do 40 i=1,np
 
1126
      do 40 m=1,nq
 
1127
  40  f(i,nx,m)=0d0
 
1128
      init=1
 
1129
  10  continue
 
1130
      if(x.lt.xmin) x=xmin
 
1131
      if(x.gt.xmax) x=xmax
 
1132
      if(qsq.lt.qsqmin) qsq=qsqmin
 
1133
      if(qsq.gt.qsqmax) qsq=qsqmax
 
1134
      xxx=x
 
1135
      if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
 
1136
      n=0
 
1137
  70  n=n+1
 
1138
      if(xxx.gt.xx(n+1)) goto 70
 
1139
      a=(xxx-xx(n))/(xx(n+1)-xx(n))
 
1140
      m=0
 
1141
  80  m=m+1
 
1142
      if(qsq.gt.qq(m+1)) goto 80
 
1143
      b=(qsq-qq(m))/(qq(m+1)-qq(m))
 
1144
      do 60 i=1,np
 
1145
      g(i)= (1d0-a)*(1d0-b)*f(i,n,m)   + (1d0-a)*b*f(i,n,m+1)
 
1146
     .    +       a*(1d0-b)*f(i,n+1,m) +       a*b*f(i,n+1,m+1)
 
1147
      if(n.ge.ntenth) goto 65
 
1148
      if(i.eq.5.or.i.eq.7) goto 65
 
1149
          fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
 
1150
          g(i)=fac*10d0**(g(i)-fac)
 
1151
  65  continue
 
1152
      g(i)=g(i)*(1d0-x)**n0(i)
 
1153
  60  continue
 
1154
      upv=g(1)
 
1155
      dnv=g(2)
 
1156
      usea=g(4)
 
1157
      dsea=g(8)
 
1158
      str=g(6)
 
1159
      chm=g(5)
 
1160
      glu=g(3) 
 
1161
      bot=g(7)
 
1162
        x=xsave
 
1163
        qsq=q2save
 
1164
      return
 
1165
      end
 
1166