EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mrs991.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file mrs991.F
1 
2  subroutine mrs991(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
3  implicit real*8(a-h,o-z)
4  include "pepadm.inc"
5  parameter(nx=49,nq=37,ntenth=23,np=8)
6  real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
7  data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
8  & 1d-4,2d-4,4d-4,6d-4,8d-4,
9  & 1d-3,2d-3,4d-3,6d-3,8d-3,
10  & 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
11  & .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
12  & .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
13  & .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
14  & .8d0,.9d0,1d0/
15  data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
16  & 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
17  & 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
18  & 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
19  & 1.8d6,3.2d6,5.6d6,1d7/
20  data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
21  data n0/3,4,5,9,9,9,9,9/
22  data init/0/
23 
24  xsave=x
25  q2save=qsq
26  if(init.ne.0) goto 10
27  open (unit=iplst(2),file=cunpol,status='old')
28 cc open(unit=1,file='./pdf/cor01.dat',status='old')
29  do 20 n=1,nx-1
30  do 20 m=1,nq
31  read(iplst(2),50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
32  & f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
33 c notation: 1=uval 2=val 3=glue 4=usea 5=chm 6=str 7=btm 8=dsea
34  do 25 i=1,np
35  25 f(i,n,m)=f(i,n,m)/(1d0-xx(n))**n0(i)
36  20 continue
37  do 31 j=1,ntenth-1
38  xx(j)=dlog10(xx(j)/xx(ntenth))+xx(ntenth)
39  do 31 i=1,8
40  if(i.eq.5.or.i.eq.7) goto 31
41  do 30 k=1,nq
42  30 f(i,j,k)=dlog10(f(i,j,k)/f(i,ntenth,k))+f(i,ntenth,k)
43  31 continue
44  50 format(8f10.5)
45  do 40 i=1,np
46  do 40 m=1,nq
47  40 f(i,nx,m)=0d0
48  init=1
49  10 continue
50  if(x.lt.xmin) x=xmin
51  if(x.gt.xmax) x=xmax
52  if(qsq.lt.qsqmin) qsq=qsqmin
53  if(qsq.gt.qsqmax) qsq=qsqmax
54  xxx=x
55  if(x.lt.xx(ntenth)) xxx=dlog10(x/xx(ntenth))+xx(ntenth)
56  n=0
57  70 n=n+1
58  if(xxx.gt.xx(n+1)) goto 70
59  a=(xxx-xx(n))/(xx(n+1)-xx(n))
60  m=0
61  80 m=m+1
62  if(qsq.gt.qq(m+1)) goto 80
63  b=(qsq-qq(m))/(qq(m+1)-qq(m))
64  do 60 i=1,np
65  g(i)= (1d0-a)*(1d0-b)*f(i,n,m) + (1d0-a)*b*f(i,n,m+1)
66  & + a*(1d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
67  if(n.ge.ntenth) goto 65
68  if(i.eq.5.or.i.eq.7) goto 65
69  fac=(1d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
70  g(i)=fac*10d0**(g(i)-fac)
71  65 continue
72  g(i)=g(i)*(1d0-x)**n0(i)
73  60 continue
74  upv=g(1)
75  dnv=g(2)
76  usea=g(4)
77  dsea=g(8)
78  str=g(6)
79  chm=g(5)
80  glu=g(3)
81  bot=g(7)
82  x=xsave
83  qsq=q2save
84  return
85  end