]> git.uio.no Git - u/mrichter/AliRoot.git/blame - LHAPDF/lhapdf5.5.1/src/wrapa02.f
Added another recoParam to the TOF recoParam object, i.e. time window to discriminate...
[u/mrichter/AliRoot.git] / LHAPDF / lhapdf5.5.1 / src / wrapa02.f
CommitLineData
0caf84a5 1! -*- F90 -*-
2
3
4 subroutine A02evolve(xb,Q,fset)
5 implicit none
6 include 'parmsetup.inc'
7 integer npdf,npar,kschem,i,k,n,m,nxbb
8 integer nxb,nq,np,nvar,pdfmem,imem
9 parameter(nxb=99,nq=20,np=9,nvar=15)
10 character*16 name(nmxset)
11 integer nmem(nmxset),ndef(nmxset),mem
12 common/NAME/name,nmem,ndef,mem
13 integer nset
14 real*4 f(0:nvar,nxb,nq+1,0:np)
15 real*8 x1,xd,del,dels,delx,delx1,xlog1
16 real*8 pdfs(np),fset(-6:6),alfas
17 real*8 x,Q,xb,q2,xmin,xmax,qsq,qsqmin,qsqmax,a,b,ss
18 data xmin,xmax,qsqmin,qsqmax/1d-7,1d0,0.8d0,2d8/
19
20 save f,npdf,npar,pdfmem,dels,delx,x1,delx1,xlog1,nxbb
21
22 q2=Q*Q
23 if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2
24 if(xb.lt.xmin.or.xb.gt.xmax) print 98,x
25 99 format(' WARNING: Q^2 VALUE IS OUT OF RANGE ')
26 98 format(' WARNING: X VALUE IS OUT OF RANGE ')
27
28 x=max(xb,xmin)
29 x=min(x,xmax)
30 qsq=max(q2,qsqmin)
31 qsq=min(qsq,qsqmax)
32
33 if (x.gt.x1) then
34 xd=(1-x1)**2-(1-x)**2
35 n=int(xd/delx1)+nxbb
36 a=xd/delx1-n+nxbb
37 else
38 xd=log(x)-xlog1
39 n=nxbb+int(xd/DELX)-1
40 a=xd/delx-n+nxbb
41 end if
42
43 ss=log(log(qsq/0.04))-log(log(qsqmin/0.04))
44 m=int(ss/dels)+1
45 b=ss/dels-m+1
46
47 k=pdfmem
48
49 do i=1,npdf
50 if (n.gt.1.and.m.gt.1.and.n.ne.49) then
51 pdfs(i)= f(k,n,m,i)*(1+a*b-a**2-b**2) &
52 & + f(k,n+1,m+1,i)*a*b &
53 & + f(k,n+1,m,i)*a*(a-2*b+1)/2. &
54 & + f(k,n,m+1,i)*b*(b-2*a+1)/2. &
55 & + f(k,n-1,m,i)*a*(a-1)/2. &
56 & + f(k,n,m-1,i)*b*(b-1)/2.
57 else
58 pdfs(i)= (1-a)*(1-b)*f(k,n,m,i) &
59 & + (1-a)*b*f(k,n,m+1,i) &
60 & + a*(1-b)*f(k,n+1,m,i) &
61 & + a*b*f(k,n+1,m+1,i)
62 end if
63 end do
64
65
66 fset(-6)=pdfs(9)
67 fset(-5)=pdfs(8)
68 fset(-4)=pdfs(7)
69 fset(-3)=pdfs(5)
70!--reversed mrs 7/7/04 due
71 fset(-1)=pdfs(6)
72 fset(-2)=pdfs(4)
73 fset(0)=pdfs(3)
74!--reversed mrs 7/7/04 due
75 fset(2)=pdfs(1)+pdfs(4)
76 fset(1)=pdfs(2)+pdfs(6)
77 fset(3)=pdfs(5)
78 fset(4)=pdfs(7)
79 fset(5)=pdfs(8)
80 fset(6)=pdfs(9)
81 return
82!
83 entry A02alfa(alfas,Q)
84 q2=Q*Q
85 if(q2.lt.qsqmin.or.q2.gt.qsqmax) print 99,q2
86 qsq=max(q2,qsqmin)
87 qsq=min(qsq,qsqmax)
88
89 ss=log(log(qsq/0.04))-log(log(qsqmin/0.04))
90 m=int(ss/dels)+1
91 b=ss/dels-m+1
92
93 k=pdfmem
94 alfas=(1d0-b)*f(k,1,m,0)+b*f(k,1,m+1,0)
95 return
96!
97 entry A02read(nset)
98! following fix because members are 0-nvar
99! nmem = nvar + 1
100 nmem(nset) = nvar
101 ndef(nset) = 0
102 read(1,*) npdf
103 npar=nvar
104 do k=0,npar
105 do n=1,nxb-1
106 do m=1,nq
107 read(1,100) (f(k,n,m,i),i=0,npdf)
108 enddo
109 enddo
110 enddo
111 100 format (13f11.5)
112 return
113!
114 entry A02init
115
116 dels=(log(log(qsqmax/0.04))-log(log(qsqmin/0.04)))/(nq-1)
117
118 nxbb=nxb/2
119 x1=0.3
120 xlog1=log(x1)
121 delx=(log(x1)-log(xmin))/(nxbb-1)
122 DELX1=(1-x1)**2/(nxbb+1)
123
124 do i=1,npdf
125 do m=1,nq
126 do k=1,npar
127 f(k,nxb,m,i)=0d0
128 end do
129 end do
130 do m=1,nq
131 do k=1,npar
132 f(k,nxb,m,0)=f(k,nxb-1,m,0)
133 end do
134 end do
135 end do
136 return
137!
138 entry A02pdf(imem)
139 pdfmem=imem
140 if ((pdfmem.lt.0).or.(pdfmem.gt.npar)) then
141 write(*,*) 'A02 PDF set:'
142 write(*,*) 'PDF member out of range:'
143 write(*,*) 'member = ',pdfmem,' member range = (0,',npar,')'
144 stop
145 endif
146 return
147 END