EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
perinola.F
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file perinola.F
1 *72*********************************************************************
2  DOUBLE PRECISION FUNCTION perinola(ARG,TABLE)
3  IMPLICIT NONE
4 
5 
6  common/ xarray / ent
7  DOUBLE PRECISION ent(102)
8 
9  INTEGER nent(2),ncomb(7),ient(7),narg,kd,m,ja,i,jb,j,jr,iadr,ifadr
10  INTEGER il,k
11  DOUBLE PRECISION arg(2),table(*),d(7),fac
12 
13  narg=2
14  nent(1)=76
15  nent(2)=26
16  kd=1
17  m=1
18  ja=1
19  DO 5 i=1,narg
20  ncomb(i)=1
21  jb=ja-1+nent(i)
22  DO 2 j=ja,jb
23  IF (arg(i).LE.ent(j)) go to 3
24  2 CONTINUE
25  j=jb
26  3 IF (j.NE.ja) go to 4
27  j=j+1
28  4 jr=j-1
29  d(i)=(ent(j)-arg(i))/(ent(j)-ent(jr))
30  ient(i)=j-ja
31  kd=kd+ient(i)*m
32  m=m*nent(i)
33  5 ja=jb+1
34  perinola=0.d0
35  10 fac=1.d0
36  iadr=kd
37  ifadr=1
38  DO 15 i=1,narg
39  IF (ncomb(i).EQ.0) go to 12
40  fac=fac*(1.d0-d(i))
41  go to 15
42  12 fac=fac*d(i)
43  iadr=iadr-ifadr
44  15 ifadr=ifadr*nent(i)
45  perinola=perinola+fac*table(iadr)
46  il=narg
47  40 IF (ncomb(il).EQ.0) go to 80
48  ncomb(il)=0
49  IF (il.EQ.narg) go to 10
50  il=il+1
51  DO 50 k=il,narg
52  50 ncomb(k)=1
53  go to 10
54  80 il=il-1
55  IF(il.NE.0) go to 40
56  RETURN
57  END