EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
strc11.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file strc11.F
1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
2  SUBROUTINE strc11(X,SCALE,UPV,DNV,USEA,DSEA,STR,CHM,BOT,GLU)
3 
4 C THIS IS THE NEW "A" FIT -- May 1994 -- low Q^2 range
5 
6  IMPLICIT REAL*8(a-h,o-z)
7  INTEGER imxpdf
8  parameter(imxpdf=40)
9  COMMON /pepadm/cpdfnam(2,imxpdf),ipdfnam(2,imxpdf),
10  & iplst(10),cunpol,cpol
11  CHARACTER*256 cpdfnam,cunpol,cpol
12  INTEGER iplst,ipdfnam
13  SAVE /pepadm/
14 
15 **************************************************************
16 *
17 * IPLST(1) = 0 (default) : number of PDF warnings
18 * IPLST(2) = 11 (default) : unit -1- for pdf files
19 * IPLST(3) = 12 (default) : unit -2- for pdf files
20 *
21 **************************************************************
22 
23  parameter(nx=47)
24  parameter(ntenth=21)
25  dimension f(8,nx,8),g(8),xx(nx),n0(8)
26  save f
27  DATA xx/1.d-5,2.d-5,4.d-5,6.d-5,8.d-5,
28  . 1.d-4,2.d-4,4.d-4,6.d-4,8.d-4,
29  . 1.d-3,2.d-3,4.d-3,6.d-3,8.d-3,
30  . 1.d-2,2.d-2,4.d-2,6.d-2,8.d-2,
31  . .1d0,.125d0,.15d0,.175d0,.2d0,.225d0,.25d0,.275d0,
32  . .3d0,.325d0,.35d0,.375d0,.4d0,.425d0,.45d0,.475d0,
33  . .5d0,.525d0,.55d0,.575d0,.6d0,.65d0,.7d0,.75d0,
34  . .8d0,.9d0,1.d0/
35  DATA xmin,xmax,qsqmin,qsqmax/1.d-5,1.d0,0.625d0,5.d0/
36  DATA n0/2,5,5,9,0,0,9,9/
37  DATA init/0/
38 
39  xsave=x ! don't let x be altered if it's out of range!!
40 
41  IF(init.NE.0) goto 10
42  init=1
43  OPEN(iplst(3),file=cpol,status='OLD')
44  DO 20 n=1,nx-1
45  DO 20 m=1,7
46  READ(iplst(3),50)f(1,n,m),f(2,n,m),f(3,n,m),f(4,n,m),
47  & f(5,n,m),f(7,n,m),f(6,n,m),f(8,n,m)
48 C 1=UV 2=DV 3=GLUE 4=UBAR 5=CBAR 7=BBAR 6=SBAR 8=DBAR
49  DO 25 i=1,8
50  25 f(i,n,m)=f(i,n,m)/(1.d0-xx(n))**n0(i)
51  20 CONTINUE
52  CLOSE(iplst(3))
53  DO 31 j=1,ntenth-1
54  xx(j)=dlog10(xx(j))+1.1d0
55  DO 31 i=1,8
56  IF(i.EQ.7.or.i.eq.5) go to 31
57  DO 30 k=1,7
58  30 f(i,j,k)=dlog(f(i,j,k))*f(i,ntenth,k)
59  & /dlog(f(i,ntenth,k))
60  31 CONTINUE
61  50 FORMAT(8f10.5)
62  DO 40 i=1,8
63  DO 40 m=1,7
64  40 f(i,nx,m)=0.d0
65  10 CONTINUE
66  IF(x.LT.xmin) x=xmin
67  IF(x.GT.xmax) x=xmax
68  qsq=scale**2
69  IF(qsq.LT.qsqmin) qsq=qsqmin
70  IF(qsq.GT.qsqmax) qsq=qsqmax
71  xxx=x
72  IF(x.LT.1.d-1) xxx=dlog10(x)+1.1d0
73  n=0
74  70 n=n+1
75  IF(xxx.GT.xx(n+1)) goto 70
76  a=(xxx-xx(n))/(xx(n+1)-xx(n))
77  rm=dlog(qsq/qsqmin)/dlog(2.d0)*2d0
78  b=rm-dint(rm)
79  m=1+idint(rm)
80  DO 60 i=1,8
81  g(i)= (1.d0-a)*(1.d0-b)*f(i,n,m)+(1.d0-a)*b*f(i,n,m+1)
82  . + a*(1.d0-b)*f(i,n+1,m) + a*b*f(i,n+1,m+1)
83  IF(n.GE.ntenth) goto 65
84  IF(i.EQ.7.or.i.eq.5) goto 65
85  fac=(1.d0-b)*f(i,ntenth,m)+b*f(i,ntenth,m+1)
86  g(i)=fac**(g(i)/fac)
87  65 CONTINUE
88  g(i)=g(i)*(1.d0-x)**n0(i)
89  60 CONTINUE
90  upv=g(1)
91  dnv=g(2)
92  usea=g(4)
93  dsea=g(8)
94  str=g(6)
95  chm=g(5)
96  glu=g(3)
97  bot=g(7)
98 
99  x=xsave !restore x
100 
101  RETURN
102  END