1 subroutine QCDNUM4evolve(x,Q,pdf)
6 real*8 x,Q,Qlam,Q2,Q2fit,alfas0,scale0,alfas
7 real*8 mc,mc2,mb,mb2,mt,mt2,tc,tc2,tb,tb2
8 real*8 singlet,dm,um,dp,up,sp,ub,db,sb,cb,bb,bp,cp,gl,xx
9 real*8 QALFAS,QPDFXQ,XFROMIX
10 real*8 f(-6:6),pdf(-6:6)
11 integer iq0,iqc,iqb,nf,nf0,qnerr,NFLGET,iflag,ix,i,IQFROMQ
13 integer nset,iset,isetlast
15 real*8 xmin,xmax,qmin,qmax,S
16 save iq0,iqc,iqb,nf0,mc2,mb2,tc2,tb2,mt2
17 save nx,xmin,xmax,nq,qmin,qmax,gridname
19 c print *,'QCDNUM4evolve'
21 if (iset.ne.isetlast) then
29 pdf(0)=QPDFXQ('GLUON' ,x,Q2,iflag)
30 singlet=QPDFXQ('SINGLET',x,Q2,iflag)
31 dm= QPDFXQ('DM',x,Q2,IFLAG)
32 um= QPDFXQ('UM',x,Q2,IFLAG)
33 dp= QPDFXQ('DP',x,Q2,IFLAG)
34 up= QPDFXQ('UP',x,Q2,IFLAG)
35 sp= QPDFXQ('SP',x,Q2,IFLAG)
36 ub=0.5d0*(up-um+singlet/dble(nf))
37 db=0.5d0*(dp-dm+singlet/dble(nf))
38 sb=0.5d0*(sp+singlet/dble(nf))
41 cp= QPDFXQ('CP',X,Q2,IFLAG)
42 cb=0.5d0*(cp+singlet/dble(nf))
59 entry QCDNUM4alfa(alfas,Q)
63 alfas=QALFAS(Q2,Qlam,nf,iflag)
66 entry QCDNUM4read(nset)
69 c gridname='large.grid'
78 read(1,*) gridname,nx,xmin,xmax,nq,qmin,qmax
83 entry QCDNUM4init(nset,Eorder,Q2fit)
85 call QNISET('ORDER',Eorder+1)
87 call grqdef(nq,qmin,qmax)
89 call getQMassM(nset,4,mc)
92 CALL QNRSET('CMASS',mc)
93 CALL QNRSET('MCALF',mc)
94 call getThresholdM(nset,4,tc)
97 CALL GRQINP(tc2-1.0d-4,1)
98 c print *,'setting iq0',Q2fit
103 c print *,iq0,iqc,nf0,q2fit,tc2
112 CALL QNLSET('W1ANA',.TRUE.)
113 CALL QNLSET('W2NUM',.TRUE.)
114 CALL QNLSET('W2STF',.FALSE.)
115 if (index(gridname,'none').eq.1) then
119 open(unit=2,status='old',file=gridname,
120 . form='unformatted',err=1)
121 call QNREAD(2,1,qnerr)
124 write(*,*) 'Grid file problem: ',gridname
126 write(*,*) 'Grid file does not exist'
127 write(*,*) 'Calculating and creating grid file'
129 open(unit=2,status='unknown',file=gridname,
130 . form='unformatted')
134 write(*,*) 'Existing grid file is inconsistent'
136 . write(*,*) 'Defined grid different'
138 . write(*,*) 'Heavy quark weight table different'
140 . write(*,*) 'Charm mass different'
142 . write(*,*) 'Bottom mass different'
149 entry QCDNUM4pdf(nset)
150 c print *,'entering QCDNUMpdf',nset
151 call GetAlfas(nset,alfas0,scale0)
152 c print *,alfas0,scale0
154 CALL QNRSET('ALFAS',alfas0)
155 CALL QNRSET('ALFQ0',Q2)
158 c print *,'calling parmPDF',ix
159 call parmPDF(nset,xx,f)
160 c if(ix.lt.6) print *,nset,xx,f
163 singlet=singlet+f(i)+f(-i)
169 dp=f(1)+f(-1)-singlet/dble(nf0)
170 up=f(2)+f(-2)-singlet/dble(nf0)
171 sp=f(3)+f(-3)-singlet/dble(nf0)
173 CALL QNPSET('SINGLET',ix,iq0,singlet)
174 CALL QNPSET('GLUON',ix,iq0,gl)
175 CALL QNPSET('DM',ix,iq0,DM)
176 CALL QNPSET('UM',ix,iq0,UM)
177 CALL QNPSET('DP',ix,iq0,DP)
178 CALL QNPSET('UP',ix,iq0,UP)
179 CALL QNPSET('SP',ix,iq0,SP)
181 CALL EVOLSG(iq0,1,nq)
182 CALL EVOLNM('DM',iq0,1,nq)
183 CALL EVOLNM('UM',iq0,1,nq)
184 CALL EVLSEA4('dp',iq0,iqc,nq)
185 CALL EVLSEA4('up',iq0,iqc,nq)
186 CALL EVLSEA4('sp',iq0,iqc,nq)
188 c print *,'calling evols - heavy...'
190 C-- Heavy quark evolution
192 CALL EVOLCP4('cp',iqc,nq)
195 call save_pdfqcd(iset)
199 subroutine EVLSEA4(name,IQ0,IQC,NQGRI)
203 integer iq0,iqc,nqgri
204 real*8 f34,f45,f43,f54,factor
205 parameter(f34=1.d0/12.d0,f43=-1.d0/12.d0)
207 c print *,iq0,iqc,nqgri
209 CAll EVPLUS(name,IQ0,1,IQC)
210 CALL QADDSI(name,IQC,f34)
211 CAll EVPLUS(name,IQC,IQC,NQGRI)
212 else if(IQ0.gt.IQC)then
213 CAll EVPLUS(name,IQ0,IQC,NQGRI)
214 CALL QADDSI(name,IQC,f43)
215 CAll EVPLUS(name,IQC,1,IQC)
221 subroutine EVOLCP4(name,IQC,NQGRI)
225 integer iq0,iqc,nqgri
227 parameter(f4=-1.d0/4.d0)
230 c First set to zero to avoid adding -1/4Singl at each iteration
234 CALL QADDSI(name,IQC,f4)
235 CAll EVPLUS(name,IQC,IQC,NQGRI)