EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mrs994.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file mrs994.F
1 
2 
3  subroutine mrs994(x,qsq,upv,dnv,usea,dsea,str,chm,bot,glu)
4  implicit real*8(a-h,o-z)
5  include "pepadm.inc"
6  parameter(nx=49,nq=37,ntenth=23,np=8)
7  real*8 f(np,nx,nq+1),qq(nq),xx(nx),g(np),n0(np)
8  data xx/1d-5,2d-5,4d-5,6d-5,8d-5,
9  & 1d-4,2d-4,4d-4,6d-4,8d-4,
10  & 1d-3,2d-3,4d-3,6d-3,8d-3,
11  & 1d-2,1.4d-2,2d-2,3d-2,4d-2,6d-2,8d-2,
12  & .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
13  & .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
14  & .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
15  & .8d0,.9d0,1d0/
16  data qq/1.25d0,1.5d0,2d0,2.5d0,3.2d0,4d0,5d0,6.4d0,8d0,1d1,
17  & 1.2d1,1.8d1,2.6d1,4d1,6.4d1,1d2,
18  & 1.6d2,2.4d2,4d2,6.4d2,1d3,1.8d3,3.2d3,5.6d3,1d4,
19  & 1.8d4,3.2d4,5.6d4,1d5,1.8d5,3.2d5,5.6d5,1d6,
20  & 1.8d6,3.2d6,5.6d6,1d7/
21  data xmin,xmax,qsqmin,qsqmax/1d-5,1d0,1.25d0,1d7/
22  data n0/3,4,5,9,9,9,9,9/
23  data init/0/
24 
25  xsave=x
26  q2save=qsq
27  if(init.ne.0) goto 10
28  open(unit=iplst(2),file=cunpol,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