1 subroutine evolvePDF(x,Q,f)
3 integer nset,imem,Eorder,IP2
4 real*8 x,Q,P2,Q2fit,f(-6:6),alfas,a,photon
6 call evolvePDFM(nset,x,Q,f)
9 entry evolvePDFp(x,Q,P2,IP2,f)
11 call evolvePDFpM(nset,x,Q,P2,IP2,f)
14 entry evolvePDFa(x,Q,a,f)
16 call evolvePDFaM(nset,x,Q,a,f)
19 entry evolvePDFphoton(x,Q,f,photon)
21 call evolvePDFphotonM(nset,x,Q,f,photon)
26 call initPDFM(nset,imem)
31 subroutine evolvePDFaM(nset,xin,Qin,a,f)
34 real*8 ruv,rdv,ru,rd,rs,rc,rb,rt,rg
38 real*8 xmin,xmax,q2min,q2max
40 call getlhaparm(18,lparm)
41 if(lparm.ne.'EXTRAPOLATE') then
42 call getnmem(nset,iimem)
43 call getminmaxm(nset,iimem,xmin,xmax,q2min,q2max)
44 x = max(xmin,min(xmax,xin))
46 q = sqrt(max(0d0,q2min,min(q2max,q2in)))
52 call eks98(x,q,a,ruv,rdv,ru,rd,rs,rc,rb,rt,rg)
53 call evolvePDFM(nset,x,Q,f)
55 f(1) = f(1)*rdv-f(-1)*(rdv-rd)
56 f(2) = f(2)*ruv-f(-2)*(ruv-ru)
72 subroutine evolvePDFM(nset,xin,Qin,f)
74 include 'parmsetup.inc'
75 integer Eorder,index,imem
76 character*16 name(nmxset)
77 integer nmem(nmxset),ndef(nmxset),mem,ip2
78 common/NAME/name,nmem,ndef,mem
82 real*8 x,xin,Q,Qin,Q2fit,alfas,p2,q2in
85 real*8 xmin,xmax,q2min,q2max
90 c print *,'this is evolvePDFM, name=',nset,name(nset)
91 c set all f's to 0.0d0 at start
96 call getlhaparm(18,lparm)
97 if(lparm.ne.'EXTRAPOLATE') then
98 call getnmem(nset,iimem)
99 call getminmaxm(nset,iimem,xmin,xmax,q2min,q2max)
100 x = max(xmin,min(xmax,xin))
102 q = sqrt(max(0d0,q2min,min(q2max,q2in)))
108 if (name(nset).eq.'QCDNUM') call QCDNUMevolve(x,Q,f)
109 if (name(nset).eq.'QCDNUM_MRST') call QCDNUMevolve(x,Q,f)
110 if (name(nset).eq.'QCDNUM_MRST3') call QCDNUM3evolve(x,Q,f)
111 if (name(nset).eq.'QCDNUM_MRST4') call QCDNUM4evolve(x,Q,f)
112 if (name(nset)(1:11).eq.'QCDNUM_ZEUS') call ZEUSevolve(x,Q,f)
113 if (name(nset).eq.'CTEQ5grid') call CTEQ5evolve(x,Q,f)
114 if (name(nset).eq.'CTEQ6grid') call CTEQ6evolve(x,Q,f)
115 if (name(nset).eq.'CTEQ65grid') call CTEQ65evolve(x,Q,f)
116 if (name(nset).eq.'CTEQ65cgrid') call CTEQ65cevolve(x,Q,f)
117 if (name(nset).eq.'CTEQ6ABgrid') call CTEQ6evolve(x,Q,f)
118 if (name(nset).eq.'EVLCTEQ') call EVLCTEQevolve(x,Q,f)
119 if (name(nset).eq.'MRSTgrid') call MRSTevolve(x,Q,f)
120 if (name(nset).eq.'MRST3grid') call MRSTevolve(x,Q,f)
121 if (name(nset).eq.'MRST4grid') call MRSTevolve(x,Q,f)
122 if (name(nset).eq.'MRST98grid') call MRST98evolve(x,Q,f)
123 if (name(nset).eq.'MRST2006grid') call MRST2006evolve(x,Q,f)
124 if (name(nset).eq.'MRSTpdf') call QCDNUMevolve(x,Q,f)
125 if (name(nset).eq.'MRST') call QCDNUMevolve(x,Q,f)
126 if (name(nset).eq.'A02') call A02evolve(x,Q,f)
127 if (name(nset).eq.'A02M') call A02Mevolve(x,Q,f)
128 if (name(nset).eq.'H12000') call H1evolve(x,Q,f)
129 if (name(nset).eq.'GRV') call GRVevolve(x,Q,f)
130 if (name(nset).eq.'OWP') call OWPevolve(x,Q,f)
131 if (name(nset).eq.'SMRSP') call SMRSPevolve(x,Q,f)
132 if (name(nset).eq.'GRVP0') call GRVP0evolve(x,Q,f)
133 if (name(nset).eq.'GRVP1') call GRVP1evolve(x,Q,f)
134 if (name(nset).eq.'ABFKWP') call ABFKWPevolve(x,Q,f)
135 if (name(nset).eq.'USER') call USERevolve(x,Q,f)
138 entry evolvePDFpM(nset,xin,Qin,P2,IP2,f)
142 call getlhaparm(18,lparm)
143 if(lparm.ne.'EXTRAPOLATE') then
144 call getnmem(nset,iimem)
145 call getminmaxm(nset,iimem,xmin,xmax,q2min,q2max)
146 x = max(xmin,min(xmax,xin))
148 q = sqrt(max(0d0,q2min,min(q2max,q2in)))
154 if(name(nset).eq.'SASG') call SASGevolvep(x,Q,P2,IP2,f)
155 if(name(nset).eq.'GRVG0') call GRVGevolvep0(x,Q,P2,IP2,f)
156 if(name(nset).eq.'GRVG1') call GRVGevolvep1(x,Q,P2,IP2,f)
157 if (name(nset).eq.'DOG0') call DOGevolvep0(x,Q,P2,IP2,f)
158 if (name(nset).eq.'DOG1') call DOGevolvep1(x,Q,P2,IP2,f)
159 if (name(nset).eq.'DGG') call DGGevolvep(x,Q,P2,IP2,f)
160 if (name(nset).eq.'LACG') call LACGevolvep(x,Q,P2,IP2,f)
161 if (name(nset).eq.'GSG0') call GSGevolvep0(x,Q,P2,IP2,f)
162 if (name(nset).eq.'GSG1') call GSGevolvep1(x,Q,P2,IP2,f)
163 if (name(nset).eq.'GSG960') call GSG96evolvep0(x,Q,P2,IP2,f)
164 if (name(nset).eq.'GSG961') call GSG96evolvep1(x,Q,P2,IP2,f)
165 if (name(nset).eq.'ACFGP') call ACFGPevolvep(x,Q,P2,IP2,f)
166 if (name(nset).eq.'WHITG') call WHITGevolvep(x,Q,P2,IP2,f)
169 entry evolvePDFphotonM(nset,xin,qin,f,photon)
174 call getlhaparm(18,lparm)
175 if(lparm.ne.'EXTRAPOLATE') then
176 call getnmem(nset,iimem)
177 call getminmaxm(nset,iimem,xmin,xmax,q2min,q2max)
178 x = max(xmin,min(xmax,xin))
180 q = sqrt(max(0d0,q2min,min(q2max,q2in)))
186 if(name(nset).eq.'MRST4qed') then
187 call MRSTqedevolve(x,Q,f,photon)
195 entry readevolve(nset)
198 c print *, 'this is readevolve', name(nset)
202 if (name(nset).eq.'QCDNUM') call QCDNUMread(nset)
203 if (name(nset).eq.'QCDNUM_MRST') call QCDNUMread(nset)
204 if (name(nset).eq.'QCDNUM_MRST3') call QCDNUM3read(nset)
205 if (name(nset).eq.'QCDNUM_MRST4') call QCDNUM4read(nset)
206 if (name(nset)(1:11).eq.'QCDNUM_ZEUS') call ZEUSread(nset)
207 if (name(nset).eq.'CTEQ5grid') call CTEQ5read(nset)
208 if (name(nset).eq.'CTEQ6grid') call CTEQ6read(nset)
209 if (name(nset).eq.'CTEQ65grid') call CTEQ65read(nset)
210 if (name(nset).eq.'CTEQ65cgrid') call CTEQ65cread(nset)
211 if (name(nset).eq.'CTEQ6ABgrid') call CTEQ6read(nset)
212 if (name(nset).eq.'EVLCTEQ') call EVLCTEQread(nset)
213 if (name(nset).eq.'MRSTgrid') call MRSTread(nset)
214 if (name(nset).eq.'MRST3grid') call MRSTread(nset)
215 if (name(nset).eq.'MRST4grid') call MRSTread(nset)
216 if (name(nset).eq.'MRST4qed') call MRSTqedread(nset)
217 if (name(nset).eq.'MRST98grid') call MRST98read(nset)
218 if (name(nset).eq.'MRST2006grid') call MRST2006read(nset)
219 if (name(nset).eq.'MRSTpdf') call QCDNUMread(nset)
220 if (name(nset).eq.'MRST') call QCDNUMread(nset)
221 if (name(nset).eq.'A02') call A02read(nset)
222 if (name(nset).eq.'A02M') call A02Mread(nset)
223 if (name(nset).eq.'H12000') call H1read(nset)
224 if (name(nset).eq.'GRV') call GRVread(nset)
225 if (name(nset).eq.'SASG') call SASGread(nset)
226 if (name(nset).eq.'GRVG0' .OR.
227 + name(nset).eq.'GRVG1') call GRVGread(nset)
228 if (name(nset).eq.'DOG0' .OR.
229 + name(nset).eq.'DOG1') call DOGread(nset)
230 if (name(nset).eq.'DGG') call DGGread(nset)
231 if (name(nset).eq.'LACG') call LACGread(nset)
232 if (name(nset).eq.'GSG0' .OR.
233 + name(nset).eq.'GSG1') call GSGread(nset)
234 if (name(nset).eq.'GSG960' .OR.
235 + name(nset).eq.'GSG961') call GSG96read(nset)
236 if (name(nset).eq.'ACFGP') call ACFGPread(nset)
237 if (name(nset).eq.'WHITG') call WHITGread(nset)
238 if (name(nset).eq.'OWP') call OWPread(nset)
239 if (name(nset).eq.'SMRSP') call SMRSPread(nset)
240 if (name(nset).eq.'GRVP0' .OR.
241 + name(nset).eq.'GRVP1') call GRVPread(nset)
242 if (name(nset).eq.'ABFKWP') call ABFKWPread(nset)
243 if (name(nset).eq.'USER') call USERread(nset)
246 entry alfasevolve(nset,alfas,Qin)
249 c print *,'from alpfasevolveM',nset,Q,name(nset)
251 call getlhaparm(18,lparm)
252 if(lparm.ne.'EXTRAPOLATE') then
253 call getnmem(nset,iimem)
254 call getq2minm(nset,iimem,q2min)
255 call getq2maxm(nset,iimem,q2max)
257 q = sqrt(max(0d0,q2min,min(q2max,q2in)))
262 c print *,'calling alfasevolve',alfas,q
263 if (name(nset).eq.'QCDNUM') call QCDNUMalfa(alfas,Q)
264 if (name(nset).eq.'QCDNUM_MRST') call QCDNUMalfa(alfas,Q)
265 if (name(nset).eq.'QCDNUM_MRST3') call QCDNUM3alfa(alfas,Q)
266 if (name(nset).eq.'QCDNUM_MRST4') call QCDNUM4alfa(alfas,Q)
267 if (name(nset)(1:11).eq.'QCDNUM_ZEUS') call ZEUSalfa(alfas,Q)
268 if (name(nset).eq.'CTEQ5grid') call CTEQ5alfa(alfas,Q)
269 if (name(nset).eq.'CTEQ6grid') call CTEQ6alfa(alfas,Q)
270 if (name(nset).eq.'CTEQ65grid') call CTEQ65alfa(alfas,Q)
271 if (name(nset).eq.'CTEQ65cgrid') call CTEQ65alfa(alfas,Q)
272 if (name(nset).eq.'EVLCTEQ') call EVLCTEQalfa(alfas,Q)
273 if (name(nset).eq.'MRSTgrid') call MRSTalfa(5,alfas,Q)
274 if (name(nset).eq.'MRST3grid') call MRSTalfa(3,alfas,Q)
275 if (name(nset).eq.'MRST4grid') call MRSTalfa(4,alfas,Q)
276 if (name(nset).eq.'MRST4qed') call MRSTalfa(4,alfas,Q)
277 if (name(nset).eq.'MRST98grid') call MRST98alfa(alfas,Q)
278 if (name(nset).eq.'MRST2006grid') call MRST2006alfa(5,alfas,Q)
279 if (name(nset).eq.'MRSTpdf') call QCDNUMalfa(alfas,Q)
280 if (name(nset).eq.'MRST') call QCDNUMalfa(alfas,Q)
281 if (name(nset).eq.'A02') call A02alfa(alfas,Q)
282 if (name(nset).eq.'A02M') call A02Malfa(alfas,Q)
283 if (name(nset).eq.'H12000') call H1alfa(alfas,Q)
284 if (name(nset).eq.'GRV') call GRValfa(alfas,Q)
285 if (name(nset).eq.'SASG') call SASGalfa(alfas,Q)
286 if (name(nset).eq.'GRVG0' .OR.
287 + name(nset).eq.'GRVG1') call GRVGalfa(alfas,Q)
288 if (name(nset).eq.'DOG0' .OR.
289 + name(nset).eq.'DOG1') call DOGalfa(alfas,Q)
290 if (name(nset).eq.'DGG') call DGGalfa(alfas,Q)
291 if (name(nset).eq.'LACG') call LACGalfa(alfas,Q)
292 if (name(nset).eq.'GSG0' .OR.
293 + name(nset).eq.'GSG1') call GSGalfa(alfas,Q)
294 if (name(nset).eq.'GSG960' .OR.
295 + name(nset).eq.'GSG961') call GSG96alfa(alfas,Q)
296 if (name(nset).eq.'ACFGP') call ACFGPalfa(alfas,Q)
297 if (name(nset).eq.'WHITG') call WHITGalfa(alfas,Q)
298 if (name(nset).eq.'OWP') call OWPalfa(alfas,Q)
299 if (name(nset).eq.'SMRSP') call SMRSPalfa(alfas,Q)
300 if (name(nset).eq.'GRVP0' .OR.
301 + name(nset).eq.'GRVP1') call GRVPalfa(alfas,Q)
302 if (name(nset).eq.'ABFKWP') call ABFKWPalfa(alfas,Q)
303 if (name(nset).eq.'USER') call USERalfa(alfas,Q)
306 entry initevolution(nset,Eorder,Q2fit)
310 if (name(nset).eq.'QCDNUM') call QCDNUMinit(nset,Eorder,Q2fit)
311 if (name(nset)(1:11).eq.'QCDNUM_ZEUS')
312 + call ZEUSinit(nset,Eorder,Q2fit)
313 if (name(nset).eq.'CTEQ5grid') call CTEQ5init(Eorder,Q2fit)
314 if (name(nset).eq.'CTEQ6grid') call CTEQ6init(Eorder,Q2fit)
315 if (name(nset).eq.'CTEQ65grid') call CTEQ65init(Eorder,Q2fit)
316 if (name(nset).eq.'CTEQ65cgrid') call CTEQ65init(Eorder,Q2fit)
317 if (name(nset).eq.'EVLCTEQ') call EVLCTEQinit(nset,Eorder,Q2fit)
318 if (name(nset).eq.'MRSTgrid') call MRSTinit(Eorder,Q2fit)
319 if (name(nset).eq.'MRST3grid') call MRSTinit(Eorder,Q2fit)
320 if (name(nset).eq.'MRST4grid') call MRSTinit(Eorder,Q2fit)
321 if (name(nset).eq.'MRST4qed') call MRSTinit(Eorder,Q2fit)
322 if (name(nset).eq.'MRST98grid') call MRST98init(Eorder,Q2fit)
323 if (name(nset).eq.'MRST2006grid') call MRST2006init(Eorder,Q2fit)
324 if (name(nset).eq.'QCDNUM_MRST') then
325 call QCDNUMinit(nset,Eorder,Q2fit)
326 call QNLSET('BMARK',.TRUE.)
328 if (name(nset).eq.'QCDNUM_MRST3') then
329 call QCDNUM3init(nset,Eorder,Q2fit)
330 call QNLSET('BMARK',.TRUE.)
332 if (name(nset).eq.'QCDNUM_MRST4') then
333 call QCDNUM4init(nset,Eorder,Q2fit)
334 call QNLSET('BMARK',.TRUE.)
336 if (name(nset).eq.'A02') call A02init
337 if (name(nset).eq.'A02M') call A02Minit
338 if (name(nset).eq.'H12000') call H1init(Eorder,Q2fit)
339 if (name(nset).eq.'GRV') call GRVinit(Eorder,Q2fit)
340 if (name(nset).eq.'SASG') call SASGinit(Eorder,Q2fit)
341 if (name(nset).eq.'GRVG0' .OR.
342 + name(nset).eq.'GRVG1') call GRVGinit(Eorder,Q2fit)
343 if (name(nset).eq.'DOG0' .OR.
344 + name(nset).eq.'DOG1') call DOGinit(Eorder,Q2fit)
345 if (name(nset).eq.'DGG') call DGGinit(Eorder,Q2fit)
346 if (name(nset).eq.'LACG') call LACGinit(Eorder,Q2fit)
347 if (name(nset).eq.'GSG0' .OR.
348 + name(nset).eq.'GSG1') call GSGinit(Eorder,Q2fit)
349 if (name(nset).eq.'GSG960' .OR.
350 + name(nset).eq.'GSG961') call GSG96init(Eorder,Q2fit)
351 if (name(nset).eq.'ACFGP') call ACFGPinit(Eorder,Q2fit)
352 if (name(nset).eq.'WHITG') call WHITGinit(Eorder,Q2fit)
353 if (name(nset).eq.'OWP') call OWPinit(Eorder,Q2fit)
354 if (name(nset).eq.'SMRSP') call SMRSPinit(Eorder,Q2fit)
355 if (name(nset).eq.'GRVP0' .OR.
356 + name(nset).eq.'GRVP1') call GRVPinit(Eorder,Q2fit)
357 if (name(nset).eq.'ABFKWP') call ABFKWPinit(Eorder,Q2fit)
358 if (name(nset).eq.'USER') call USERinit(nset,Eorder,Q2fit)
361 entry initPDFM(nset,imem)
364 call setnmem(nset,imem)
366 c print *,'entered initPDFM,',nset,imem,name(nset)
368 if (name(nset).eq.'QCDNUM') then
369 call InitEvolvePDF(nset,imem)
372 if (name(nset).eq.'QCDNUM_MRST') then
373 call InitEvolvePDF(nset,imem)
376 if (name(nset).eq.'QCDNUM_MRST3') then
377 call InitEvolvePDF(nset,imem)
378 call QCDNUM3pdf(nset)
380 if (name(nset).eq.'QCDNUM_MRST4') then
381 call InitEvolvePDF(nset,imem)
382 call QCDNUM4pdf(nset)
384 if (name(nset)(1:11).eq.'QCDNUM_ZEUS') then
385 call InitEvolvePDF(nset,imem)
388 if (name(nset).eq.'MRST') then
389 call InitEvolvePDF(nset,imem)
392 if (name(nset).eq.'MRSTpdf') then
393 call InitEvolvePDF(nset,imem)
396 if (name(nset).eq.'EVLCTEQ') then
397 call InitEvolvePDF(nset,imem)
398 call EVLCTEQpdf(nset)
399 c call EVLCTEQpdf(nset,imem)
401 if (name(nset).eq.'CTEQ65grid') then
402 call CTEQ6NewAlpha(nset,imem)
404 if (name(nset).eq.'CTEQ65cgrid') then
405 call CTEQ6NewAlpha(nset,imem)
407 if (name(nset).eq.'CTEQ6ABgrid') then
408 call CTEQ6NewAlpha(nset,imem)
409 c call CTEQ6pdf(nset)
411 if (name(nset).eq.'H12000') then
412 call InitEvolvePDF(nset,imem)
415 if (name(nset).eq.'USER') then
416 call InitEvolvePDF(nset,imem)
419 if (name(nset).eq.'CTEQ5grid') call CTEQ5pdf(imem)
420 if (name(nset).eq.'CTEQ6grid') call CTEQ6pdf(imem)
421 if (name(nset).eq.'CTEQ65grid') call CTEQ65pdf(imem)
422 if (name(nset).eq.'CTEQ65cgrid') call CTEQ65pdf(imem)
423 if (name(nset).eq.'CTEQ6ABgrid') call CTEQ6pdf(imem)
424 if (name(nset).eq.'MRSTgrid') call MRSTpdf(imem)
425 if (name(nset).eq.'MRST3grid') call MRSTpdf(imem)
426 if (name(nset).eq.'MRST4grid') call MRSTpdf(imem)
427 if (name(nset).eq.'MRST4qed') call MRSTpdf(imem)
428 if (name(nset).eq.'MRST98grid') call MRST98pdf(imem)
429 if (name(nset).eq.'MRST2006grid') call MRST2006pdf(imem)
430 if (name(nset).eq.'A02') call A02pdf(imem)
431 if (name(nset).eq.'A02M') call A02Mpdf(imem)
432 if (name(nset).eq.'GRV0' .OR.
433 + name(nset).eq.'GRV1') call GRVpdf(imem)
434 if (name(nset).eq.'SASG') call SASGpdf(imem)
435 if (name(nset).eq.'GRVG') call GRVGpdf(imem)
436 if (name(nset).eq.'DOG0' .OR.
437 + name(nset).eq.'DOG1') call DOGpdf(imem)
438 if (name(nset).eq.'DGG') call DGGpdf(imem)
439 if (name(nset).eq.'LACG') call LACGpdf(imem)
440 if (name(nset).eq.'GSG0' .OR.
441 + name(nset).eq.'GSG1') call GSGpdf(imem)
442 if (name(nset).eq.'GSG960' .OR.
443 + name(nset).eq.'GSG961') call GSG96pdf(imem)
444 if (name(nset).eq.'ACFGP') call ACFGPpdf(imem)
445 if (name(nset).eq.'WHITG') call WHITGpdf(imem)
446 if (name(nset).eq.'OWP') call OWPpdf(imem)
447 if (name(nset).eq.'SMRSP') call SMRSPpdf(imem)
448 if (name(nset).eq.'GRVP0' .OR.
449 + name(nset).eq.'GRVP1') call GRVPpdf(imem)
450 if (name(nset).eq.'ABFKWP') call ABFKWPpdf(imem)