1 subroutine GRVevolve(xin,qin,pdf)
2 implicit real*8 (a-h,o-z)
3 include 'parmsetup.inc'
5 PARAMETER (NPART=6, NX=68, NQ=27, NARG=2)
6 character*16 name(nmxset)
7 integer nmem(nmxset),ndef(nmxset),mmem
8 common/NAME/name,nmem,ndef,mmem
9 DIMENSION XXUVF(0:ngrid,NX,NQ), XXDVF(0:ngrid,NX,NQ),
10 + XXDEF(0:ngrid,NX,NQ), XXUDF(0:ngrid,NX,NQ),
11 1 XXSF(0:ngrid,NX,NQ), XXGF(0:ngrid,NX,NQ),
12 + XUVF(NX,NQ), XDVF(NX,NQ),
13 + XDEF(NX,NQ), XUDF(NX,NQ),
14 1 XSF(NX,NQ), XGF(NX,NQ),
15 + PARTON (NPART,NQ,NX-1),
16 2 QS(NQ), XB(NX), XT(NARG), NA(NARG), ARRF(NX+NQ)
22 *...CHECK OF X AND Q2 VALUES :
23 IF ( (X.LT.0.99D-9) .OR. (X.GT.1.D0) ) THEN
25 91 FORMAT (2X,'PARTON INTERPOLATION: X OUT OF RANGE')
28 IF ( (Q2.LT.0.799) .OR. (Q2.GT.1.01E6) ) THEN
30 92 FORMAT (2X,'PARTON INTERPOLATION: Q2 OUT OF RANGE')
36 xuvf(ix,iq)=xxuvf(imem,ix,iq)
37 xdvf(ix,iq)=xxdvf(imem,ix,iq)
38 xdef(ix,iq)=xxdef(imem,ix,iq)
39 xudf(ix,iq)=xxudf(imem,ix,iq)
40 xsf(ix,iq)=xxsf(imem,ix,iq)
41 xgf(ix,iq)=xxgf(imem,ix,iq)
49 UV = FINT(NARG,XT,NA,ARRF,XUVF) * X1**3 * XV
50 DV = FINT(NARG,XT,NA,ARRF,XDVF) * X1**4 * XV
51 DE = FINT(NARG,XT,NA,ARRF,XDEF) * X1**7 * XV
52 UD = FINT(NARG,XT,NA,ARRF,XUDF) * X1**7 * XS
55 SS = FINT(NARG,XT,NA,ARRF,XSF) * X1**7 * XS
56 GL = FINT(NARG,XT,NA,ARRF,XGF) * X1**5 * XS
74 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
77 c print *,'calling grvread'
78 read(1,*)nmem(nset),ndef(nset)
93 READ(1,90) PARTON(1,N,M), PARTON(2,N,M), PARTON(3,N,M),
94 1 PARTON(4,N,M), PARTON(5,N,M), PARTON(6,N,M)
95 90 FORMAT (6(1PE10.3))
98 *....ARRAYS FOR THE INTERPOLATION SUBROUTINE :
102 XB0S = XB(IX)**(-0.2)
104 xXUVF(ng,IX,IQ) = PARTON(1,IQ,IX) / (XB1**3 * XB0V)
105 xXDVF(ng,IX,IQ) = PARTON(2,IQ,IX) / (XB1**4 * XB0V)
106 xXDEF(ng,IX,IQ) = PARTON(3,IQ,IX) / (XB1**7 * XB0V)
107 xXUDF(ng,IX,IQ) = PARTON(4,IQ,IX) / (XB1**7 * XB0S)
108 xXSF(ng,IX,IQ) = PARTON(5,IQ,IX) / (XB1**7 * XB0S)
109 xXGF(ng,IX,IQ) = PARTON(6,IQ,IX) / (XB1**5 * XB0S)
111 xXUVF(ng,NX,IQ) = 0.E0
112 xXDVF(ng,NX,IQ) = 0.E0
113 xXDEF(ng,NX,IQ) = 0.E0
114 xXUDF(ng,NX,IQ) = 0.E0
115 xXSF(ng,NX,IQ) = 0.E0
116 xXGF(ng,NX,IQ) = 0.E0
121 ARRF(IX) = DLOG(XB(IX))
124 ARRF(NX+IQ) = DLOG(QS(IQ))
131 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
132 entry GRValfa(alfas,qalfa)
135 call GetOrderAsM(iset,iord)
137 alfas=grvals(q2alfa,nord)
138 alfas = 4.0d0*3.14159d0*alfas
141 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
142 entry GRVinit(Eorder,Q2fit)
145 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
153 FUNCTION FINT(NARG,ARG,NENT,ENT,TABLE)
154 *********************************************************************
156 * THE INTERPOLATION ROUTINE (CERN LIBRARY ROUTINE E104) *
158 *********************************************************************
159 IMPLICIT DOUBLE PRECISION (A-H, O-Z)
160 DIMENSION ARG(5),NENT(5),ENT(10),TABLE(10)
161 DIMENSION D(5),NCOMB(5),IENT(5)
169 IF (ARG(I).LE.ENT(J)) GO TO 3
172 3 IF (J.NE.JA) GO TO 4
175 D(I)=(ENT(J)-ARG(I))/(ENT(J)-ENT(JR))
185 IF (NCOMB(I).EQ.0) GO TO 12
190 15 IFADR=IFADR*NENT(I)
191 FINT=FINT+FAC*TABLE(IADR)
193 40 IF (NCOMB(IL).EQ.0) GO TO 80
195 IF (IL.EQ.NARG) GO TO 10
205 c FUNCTION ALPHAS (Q2, NAORD)
206 FUNCTION grvals (Q2, NAORD)
207 *********************************************************************
209 * THE ALPHA_S ROUTINE. *
211 * INPUT : Q2 = scale in GeV**2 (not too low, of course); *
212 * NAORD = 1 (LO), 2 (NLO). *
214 * OUTPUT: alphas_s/(4 pi) for use with the GRV(98) partons. *
216 *******************************************************i*************
218 IMPLICIT DOUBLE PRECISION (A - Z)
219 INTEGER NF, K, I, NAORD
220 DIMENSION LAMBDAL (3:6), LAMBDAN (3:6), Q2THR (3)
222 *...HEAVY QUARK THRESHOLDS AND LAMBDA VALUES :
223 DATA Q2THR / 1.960, 20.25, 30625. /
224 DATA LAMBDAL / 0.2041, 0.1750, 0.1320, 0.0665 /
225 DATA LAMBDAN / 0.2994, 0.2460, 0.1677, 0.0678 /
227 *...DETERMINATION OF THE APPROPRIATE NUMBER OF FLAVOURS :
230 IF (Q2 .GT. Q2THR (K)) THEN
237 *...LO ALPHA_S AND BETA FUNCTION FOR NLO CALCULATION :
238 20 B0 = 11.- 2./3.* NF
239 B1 = 102.- 38./3.* NF
241 IF (NAORD .EQ. 1) THEN
242 LAM2 = LAMBDAL (NF) * LAMBDAL (NF)
243 ALP = 1./(B0 * DLOG (Q2/LAM2))
245 ELSE IF (NAORD .EQ. 2) then
246 LAM2 = LAMBDAN (NF) * LAMBDAN (NF)
247 B1 = 102.- 38./3.* NF
251 91 FORMAT ('INVALID CHOICE FOR ORDER IN ALPHA_S')
255 *...START VALUE FOR NLO ITERATION :
256 LQ2 = DLOG (Q2 / LAM2)
257 ALP = 1./(B0*LQ2) * (1.- B10*DLOG(LQ2)/LQ2)
259 *...EXACT NLO VALUE, FOUND VIA NEWTON PROCEDURE :
261 XL = DLOG (1./(B0*ALP) + B10)
262 XLP = DLOG (1./(B0*ALP*1.01) + B10)
263 XLM = DLOG (1./(B0*ALP*0.99) + B10)
264 Y = LQ2 - 1./ (B0*ALP) + B10 * XL
265 Y1 = (- 1./ (B0*ALP*1.01) + B10 * XLP
266 1 + 1./ (B0*ALP*0.99) - B10 * XLP) / (0.02D0*ALP)