4 subroutine QCDNUM4evolve(x,Q,pdf)
9 real*8 x,Q,Qlam,Q2,Q2fit,alfas0,scale0,alfas
10 real*8 mc,mc2,mb,mb2,mt,mt2,tc,tc2,tb,tb2
11 real*8 singlet,dm,um,dp,up,sp,ub,db,sb,cb,bb,bp,cp,gl,xx
12 real*8 QALFAS,QPDFXQ,XFROMIX
13 real*8 f(-6:6),pdf(-6:6)
14 integer iq0,iqc,iqb,nf,nf0,qnerr,NFLGET,iflag,ix,i,IQFROMQ
16 integer nset,iset,isetlast
18 real*8 xmin,xmax,qmin,qmax,S
19 save iq0,iqc,iqb,nf0,mc2,mb2,tc2,tb2,mt2
20 save nx,xmin,xmax,nq,qmin,qmax,gridname
22 ! print *,'QCDNUM4evolve'
24 if (iset.ne.isetlast) then
32 pdf(0)=QPDFXQ('GLUON' ,x,Q2,iflag)
33 singlet=QPDFXQ('SINGLET',x,Q2,iflag)
34 dm= QPDFXQ('DM',x,Q2,IFLAG)
35 um= QPDFXQ('UM',x,Q2,IFLAG)
36 dp= QPDFXQ('DP',x,Q2,IFLAG)
37 up= QPDFXQ('UP',x,Q2,IFLAG)
38 sp= QPDFXQ('SP',x,Q2,IFLAG)
39 ub=0.5d0*(up-um+singlet/dble(nf))
40 db=0.5d0*(dp-dm+singlet/dble(nf))
41 sb=0.5d0*(sp+singlet/dble(nf))
44 cp= QPDFXQ('CP',X,Q2,IFLAG)
45 cb=0.5d0*(cp+singlet/dble(nf))
62 entry QCDNUM4alfa(alfas,Q)
66 alfas=QALFAS(Q2,Qlam,nf,iflag)
69 entry QCDNUM4read(nset)
72 ! gridname='large.grid'
81 read(1,*) gridname,nx,xmin,xmax,nq,qmin,qmax
86 entry QCDNUM4init(nset,Eorder,Q2fit)
88 call QNISET('ORDER',Eorder+1)
90 call grqdef(nq,qmin,qmax)
92 call getQMassM(nset,4,mc)
95 CALL QNRSET('CMASS',mc)
96 CALL QNRSET('MCALF',mc)
97 call getThresholdM(nset,4,tc)
100 CALL GRQINP(tc2-1.0d-4,1)
101 ! print *,'setting iq0',Q2fit
102 call qthres(tc2,2d10)
106 ! print *,iq0,iqc,nf0,q2fit,tc2
115 CALL QNLSET('W1ANA',.TRUE.)
116 CALL QNLSET('W2NUM',.TRUE.)
117 CALL QNLSET('W2STF',.FALSE.)
118 if (index(gridname,'none').eq.1) then
122 open(unit=2,status='old',file=gridname, &
123 & form='unformatted',err=1)
124 call QNREAD(2,1,qnerr)
127 write(*,*) 'Grid file problem: ',gridname
129 write(*,*) 'Grid file does not exist'
130 write(*,*) 'Calculating and creating grid file'
132 open(unit=2,status='unknown',file=gridname, &
133 & form='unformatted')
137 write(*,*) 'Existing grid file is inconsistent'
139 & write(*,*) 'Defined grid different'
141 & write(*,*) 'Heavy quark weight table different'
143 & write(*,*) 'Charm mass different'
145 & write(*,*) 'Bottom mass different'
152 entry QCDNUM4pdf(nset)
153 ! print *,'entering QCDNUMpdf',nset
154 call GetAlfas(nset,alfas0,scale0)
155 ! print *,alfas0,scale0
157 CALL QNRSET('ALFAS',alfas0)
158 CALL QNRSET('ALFQ0',Q2)
161 ! print *,'calling parmPDF',ix
162 call parmPDF(nset,xx,f)
163 ! if(ix.lt.6) print *,nset,xx,f
166 singlet=singlet+f(i)+f(-i)
172 dp=f(1)+f(-1)-singlet/dble(nf0)
173 up=f(2)+f(-2)-singlet/dble(nf0)
174 sp=f(3)+f(-3)-singlet/dble(nf0)
176 CALL QNPSET('SINGLET',ix,iq0,singlet)
177 CALL QNPSET('GLUON',ix,iq0,gl)
178 CALL QNPSET('DM',ix,iq0,DM)
179 CALL QNPSET('UM',ix,iq0,UM)
180 CALL QNPSET('DP',ix,iq0,DP)
181 CALL QNPSET('UP',ix,iq0,UP)
182 CALL QNPSET('SP',ix,iq0,SP)
184 CALL EVOLSG(iq0,1,nq)
185 CALL EVOLNM('DM',iq0,1,nq)
186 CALL EVOLNM('UM',iq0,1,nq)
187 CALL EVLSEA4('dp',iq0,iqc,nq)
188 CALL EVLSEA4('up',iq0,iqc,nq)
189 CALL EVLSEA4('sp',iq0,iqc,nq)
191 ! print *,'calling evols - heavy...'
193 !-- Heavy quark evolution
195 CALL EVOLCP4('cp',iqc,nq)
198 call save_pdfqcd(iset)
202 subroutine EVLSEA4(name,IQ0,IQC,NQGRI)
206 integer iq0,iqc,nqgri
207 real*8 f34,f45,f43,f54,factor
208 parameter(f34=1.d0/12.d0,f43=-1.d0/12.d0)
210 ! print *,iq0,iqc,nqgri
212 CAll EVPLUS(name,IQ0,1,IQC)
213 CALL QADDSI(name,IQC,f34)
214 CAll EVPLUS(name,IQC,IQC,NQGRI)
215 else if(IQ0.gt.IQC)then
216 CAll EVPLUS(name,IQ0,IQC,NQGRI)
217 CALL QADDSI(name,IQC,f43)
218 CAll EVPLUS(name,IQC,1,IQC)
224 subroutine EVOLCP4(name,IQC,NQGRI)
228 integer iq0,iqc,nqgri
230 parameter(f4=-1.d0/4.d0)
233 ! First set to zero to avoid adding -1/4Singl at each iteration
237 CALL QADDSI(name,IQC,f4)
238 CAll EVPLUS(name,IQC,IQC,NQGRI)