1 C*********************************************************************
3 C... LHAGLUE Interface to LHAPDF library of modern parton
4 C... density functions (PDF) with uncertainties
6 C...Authors for v4: Dimitri Bourilkov, Craig Group, Mike Whalley
8 C...Authors for v3: Dimitri Bourilkov, Craig Group, Mike Whalley
10 C...Author for v1 and v2: Dimitri Bourilkov bourilkov@mailaps.org
11 C... University of Florida
13 C...HERWIG interface by Dimitri Bourilkov and Craig Group
15 C...New numbering scheme and upgrade for LHAPDF v2.1
16 C...by Dimitri Bourilkov and Mike Whalley
18 C...For more information, or when you cite this interface, currently
19 C...the official reference is:
20 C...D.Bourilkov, "Study of Parton Density Function Uncertainties with
21 C...LHAPDF and PYTHIA at LHC", hep-ph/0305126.
23 C...The official LHAPDF page is:
25 C... http://durpdg.dur.ac.uk/lhapdf/index.html
27 C...The interface contains four subroutines (similar to PDFLIB).
28 C...It can be used seamlessly by Monte Carlo generators
29 C...interfaced to PDFLIB or in stand-alone mode.
31 C... For initialization (called once)
33 C... PDFSET(PARM,VALUE)
35 C... For the proton/pion structure functions
37 C... STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
39 C... For the photon structure functions
41 C... STRUCTP(X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
43 C... For statistics ON structure functions (under/over-flows)
47 C...This interface can be invoked in 3 ways depending
48 C...on the value of PARM(1) provided by the user when
49 C...calling PDFSET(PARM,VALUE):
51 C... For PYTHIA: PARM(1).EQ.'NPTYPE'
52 C... (this is set automatically by PYTHIA)
54 C... For HERWIG: PARM(1).EQ.'HWLHAPDF'
55 C... (set by the USER e.g. in the main program like this:
56 C... AUTPDF(1) = 'HWLHAPDF'
57 C... AUTPDF(2) = 'HWLHAPDF' )
59 C... For Stand-alone: PARM(1).EQ.'DEFAULT'
60 C... (can be used for PDF studies or when interfacing
63 C...The LHAPDF set/member is selected depending on the value of:
65 C... PYTHIA: ABS(MSTP(51)) - proton
66 C... ABS(MSTP(53)) - pion
67 C... ABS(MSTP(55)) - photon
69 C... HERWIG: ABS(INT(VALUE(1)))
71 C... STAND-ALONE: ABS(INT(VALUE(1)))
74 C... CONTROL switches:
75 C... ==================
77 C... THE LOCATION OF THE LHAPDF LIBRARY HAS TO BE SPECIFIED
78 C... AS DESCRIBED BELOW (the rest is optional)
80 C... if the user does nothing, sensible defaults
81 C... are active; to change the behaviour, the corresponding
82 C... values of LHAPARM() should be set to the values given below
84 C... Location of the LHAPDF library of PDFs (pathname):
85 C... uses common block /LHAPDFC/
87 C... If the user does nothing => default = subdir PDFsets of the
88 C... current directory (can be real subdir
89 C... OR a soft link to the real location)
90 C... If the user sets LHAPATH => supplied by the USER who defines the
91 C... path in common block COMMON/LHAPDFC/LHAPATH
92 C... BEFORE calling PDFSET
96 C... use common block /LHACONTROL/
98 C... Collect statistics on under/over-flow requests for PDFs
99 C... outside their validity ranges in X and Q**2
100 C... (call PDFSTA at end of run to print it out)
102 C... LHAPARM(16).EQ.'NOSTAT' => No statistics (faster)
103 C... LHAPARM(16).NE.'NOSTAT' => Default: collect statistics
105 C... Option to use the values for the strong coupling alpha_s
106 C... as computed in LHAPDF in the MC generator
107 C... (to ensure uniformity between the MC generator and the PDF set)
108 C... WARNING: implemented ONLY for PYTHIA in LHAPDFv4
110 C... LHAPARM(17).EQ.'LHAPDF' => Use alpha_s from LHAPDF
111 C... LHAPARM(17).NE.'LHAPDF' => Default (same as LHAPDF v1/v3)
113 C... Extrapolation of PDFs outside LHAPDF validity range given by
114 C... [Xmin,Xmax] and [Q2min,Q2max]; DEFAULT => PDFs "frozen" at the
117 C... LHAPARM(18).EQ.'EXTRAPOLATE' => Extrapolate PDFs on OWN RISK
118 C... WARNING: Crazy values can be returned
120 C... Printout of initialization information in PDFSET (by default)
122 C... LHAPARM(19).EQ.'SILENT' => No printout (silent mode)
123 C... LHAPARM(19).EQ.'LOWKEY' => Print 5 times (almost silent mode)
126 C...v5.0 06-Oct-2005 Major change to allow multiset-initializations
127 C...v4.0 28-Apr-2005 PDFSTA routine; option to use Alfa_s from LHAPDF
128 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
129 C...v3.1 26-Apr-2004 New numbering scheme, updated for LHAPDF v2/v3
130 C...v3.0 23-Jan-2004 HERWIG interface added
131 C...v2.0 20-Sep-2003 PDFLIB style adopted
132 C...v1.0 05-Mar-2003 First working version from PYTHIA to LHAPDF v1
134 C...interface to LHAPDF library
136 C*********************************************************************
139 C...Initialization for use of parton distributions
140 C... according to the LHAPDF interface.
142 C...v4.0 28-Apr-2005 Option to use Alfa_s from LHAPDF
143 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
144 C...v3.1 26-Apr-2004 New numbering scheme
145 C...v3.0 23-Jan-2004 HERWIG interface added
147 C...interface to LHAPDF library
149 SUBROUTINE PDFSET(PARM,VALUE)
150 C...Double precision and integer declarations.
151 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
152 IMPLICIT INTEGER(I-N)
153 c...additions for multiset use
154 integer noemax,nopmax,npfmax,nofmax,linemax,nmxset
155 parameter (noemax=1000,nopmax=40,npfmax=10,nofmax=10,linemax=20)
156 c nmxset is the max number of sets that can be initialised at one time ---- added V5
159 character*232 lhapath
160 character*272 lhaname,lhanames(nmxset)
161 c character*172 LHANAMES(nmxset)
162 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
163 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
164 real*8 xxmin(nmxset),xxmax(nmxset),qq2min(nmxset),qq2max(nmxset)
165 save xxmin,xxmax,qq2min,qq2max
167 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
169 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
171 c... following 2 for earlier Pythia versions
172 COMMON/LUDAT1/MSTU5(200),PARU5(200),MSTJ5(200),PARJ5(200)
174 C...Interface to LHAPDFLIB.
175 c CHARACTER*172 LHANAME
176 INTEGER LHASET, LHAMEMB
177 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
179 DOUBLE PRECISION QCDLHA4, QCDLHA5
181 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
183 c CHARACTER*132 LHAPATH
184 COMMON/LHAPDFC/LHAPATH
186 CHARACTER*20 LHAPARM(20)
187 DOUBLE PRECISION LHAVALUE(20)
188 COMMON/LHACONTROL/LHAPARM,LHAVALUE
191 COMMON/LHAPDFE/LHAEXTRP
194 COMMON/LHASILENT/LHASILENT
196 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
197 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
198 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
199 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
201 C...Interface to PDFLIB.
202 COMMON/W50511/ NPTYPEPDFL,NGROUPPDFL,NSETPDFL,MODEPDFL,
203 > NFLPDFL,LOPDFL,TMASPDFL
205 DOUBLE PRECISION TMASPDFL
206 C...Interface to PDFLIB.
207 COMMON/W50512/QCDL4,QCDL5
209 DOUBLE PRECISION QCDL4,QCDL5
210 C...Interface to PDFLIB.
211 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
213 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
214 C...Local arrays and character variables (NOT USED here DB)
215 CHARACTER*20 PARM(20)
216 DOUBLE PRECISION VALUE(20)
229 CHARACTER*1000 CHROOT
235 if(first .AND. (LHAPARM(20).NE.'LHAPATH')) then
236 c...overide the default PDFsets path
237 c ... check first if the environmental variable LHAPATH is set
238 call getenv('LHAPATH',lhapath)
239 if(lhapath.eq.'') then
240 C The environment variable LHAPATH is not set.
241 C Take the data from $ALICE_ROOT/LHAPDF/PDFsets
242 CALL GETENV('ALICE_ROOT',CHROOT)
243 LNROOT = LNBLNK(CHROOT)
245 LHAPATH='PDFsets' ! Default value
247 LHAPATH=CHROOT(1:LNROOT)//'/LHAPDF/PDFsets'
256 IF(LHAPARM(18).EQ.'EXTRAPOLATE')
257 > THEN ! Extrapolate PDFs on own risk
261 IF(LHAPARM(19).EQ.'SILENT') THEN ! No printout (silent MODE)
263 ELSEIF(LHAPARM(19).EQ.'LOWKEY') THEN ! Print 5 times (lowkey MODE)
264 IF(LHAFIVE .LT. 6) THEN
265 LHAFIVE = LHAFIVE + 1
270 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
271 if(MSTP(181).ge.6) then
276 IF(VALUE(1) .EQ. 1) THEN ! nucleon
277 LHAINPUT = ABS(MSTP(51))
278 ELSEIF(VALUE(1) .EQ. 2) THEN ! pion
279 LHAINPUT = ABS(MSTP(53))
280 ELSEIF(VALUE(1) .EQ. 3) THEN ! photon
281 LHAINPUT = ABS(MSTP(55))
284 > PRINT *,'==== PYTHIA WILL USE LHAPDF ===='
285 ELSEIF(PARM(1).EQ.'HWLHAPDF') THEN ! HERWIG
286 LHAINPUT = ABS(INT(VALUE(1)))
287 IF(LHAONCE.EQ.LHAINPUT) RETURN
289 > PRINT *,'==== HERWIG WILL USE LHAPDF ===='
292 ELSEIF(PARM(1).EQ.'DEFAULT') THEN ! Stand-alone
293 LHAINPUT = ABS(INT(VALUE(1)))
294 IF(LHAONCE.EQ.LHAINPUT) RETURN
296 > PRINT *,'==== STAND-ALONE LHAGLUE MODE TO USE LHAPDF ===='
300 PRINT *,'== UNKNOWN LHAPDF INTERFACE CALL! STOP EXECUTION! =='
303 C...Initialize parton distributions: LHAPDFLIB.
304 LHAPATHLEN=INDEX(LHAPATH,' ')-1
306 XMIN = 1.0D-6 ! X_min for current PDF set
307 XMAX = 1.0D0 ! X_max for current PDF set
308 Q2MIN = 1.0D0**2 ! Q**2_min scale for current PDF set [GeV]
309 Q2MAX = 1.0D5**2 ! Q**2_max scale for current PDF set [GeV]
314 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 19999)) THEN
316 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 10040)) THEN
318 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6.LHpdf'
320 ELSEIF((LHAINPUT .GE. 10041) .AND. (LHAINPUT .LE. 10041)) THEN
322 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6l.LHpdf'
324 ELSEIF((LHAINPUT .GE. 10042) .AND. (LHAINPUT .LE. 10042)) THEN
326 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6ll.LHpdf'
328 ELSEIF((LHAINPUT .GE. 10050) .AND. (LHAINPUT .LE. 10090)) THEN
330 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6mE.LHgrid'
332 ELSEIF((LHAINPUT .GE. 10100) .AND. (LHAINPUT .LE. 10140)) THEN
334 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHpdf'
336 ELSEIF((LHAINPUT .GE. 10150) .AND. (LHAINPUT .LE. 10190)) THEN
338 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHgrid'
340 ELSEIF((LHAINPUT .GE. 10250) .AND. (LHAINPUT .LE. 10269)) THEN
342 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6AB.LHgrid'
344 ELSEIF((LHAINPUT .GE. 19050) .AND. (LHAINPUT .LE. 19050)) THEN
346 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m.LHgrid'
348 ELSEIF((LHAINPUT .GE. 19051) .AND. (LHAINPUT .LE. 19051)) THEN
350 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m1.LHgrid'
352 ELSEIF((LHAINPUT .GE. 19060) .AND. (LHAINPUT .LE. 19060)) THEN
354 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5d.LHgrid'
356 ELSEIF((LHAINPUT .GE. 19070) .AND. (LHAINPUT .LE. 19070)) THEN
358 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5l.LHgrid'
360 ELSEIF((LHAINPUT .GE. 19150) .AND. (LHAINPUT .LE. 19150)) THEN
362 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4m.LHgrid'
365 ELSEIF((LHAINPUT .GE. 19160) .AND. (LHAINPUT .LE. 19160)) THEN
367 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4d.LHgrid'
370 ELSEIF((LHAINPUT .GE. 19170) .AND. (LHAINPUT .LE. 19170)) THEN
372 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4l.LHgrid'
376 WRITE(LHAPRINT,5150) LHASET
380 ELSEIF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 29999)) THEN
384 IF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 20004)) THEN
386 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHpdf'
387 ELSEIF((LHAINPUT .GE. 20050) .AND. (LHAINPUT .LE. 20054)) THEN
389 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHgrid'
390 ELSEIF((LHAINPUT .GE. 20060) .AND. (LHAINPUT .LE. 20061)) THEN
392 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001lo.LHgrid'
393 ELSEIF((LHAINPUT .GE. 20070) .AND. (LHAINPUT .LE. 20074)) THEN
395 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nnlo.LHgrid'
396 ELSEIF((LHAINPUT .GE. 20100) .AND. (LHAINPUT .LE. 20130)) THEN
398 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHpdf'
399 ELSEIF((LHAINPUT .GE. 20150) .AND. (LHAINPUT .LE. 20180)) THEN
401 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHgrid'
402 ELSEIF((LHAINPUT .GE. 20200) .AND. (LHAINPUT .LE. 20201)) THEN
404 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHpdf'
405 ELSEIF((LHAINPUT .GE. 20250) .AND. (LHAINPUT .LE. 20251)) THEN
407 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHgrid'
408 ELSEIF((LHAINPUT .GE. 20270) .AND. (LHAINPUT .LE. 20271)) THEN
410 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nnlo.LHgrid'
411 ELSEIF((LHAINPUT .GE. 20300) .AND. (LHAINPUT .LE. 20301)) THEN
413 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHpdf'
416 ELSEIF((LHAINPUT .GE. 20350) .AND. (LHAINPUT .LE. 20351)) THEN
418 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHgrid'
421 ELSEIF((LHAINPUT .GE. 20370) .AND. (LHAINPUT .LE. 20371)) THEN
423 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnnlo.LHgrid'
426 ELSEIF((LHAINPUT .GE. 20400) .AND. (LHAINPUT .LE. 20401)) THEN
428 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHpdf'
429 ELSEIF((LHAINPUT .GE. 20406) .AND. (LHAINPUT .LE. 20407)) THEN
431 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHpdf'
432 ELSEIF((LHAINPUT .GE. 20408) .AND. (LHAINPUT .LE. 20409)) THEN
434 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHpdf'
435 ELSEIF((LHAINPUT .GE. 20450) .AND. (LHAINPUT .LE. 20451)) THEN
437 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHgrid'
438 ELSEIF((LHAINPUT .GE. 20452) .AND. (LHAINPUT .LE. 20453)) THEN
440 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3lo.LHgrid'
441 ELSEIF((LHAINPUT .GE. 20454) .AND. (LHAINPUT .LE. 20455)) THEN
443 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4lo.LHgrid'
444 ELSEIF((LHAINPUT .GE. 20456) .AND. (LHAINPUT .LE. 20457)) THEN
446 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHgrid'
447 ELSEIF((LHAINPUT .GE. 20458) .AND. (LHAINPUT .LE. 20459)) THEN
449 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHgrid'
450 ELSEIF((LHAINPUT .GE. 20470) .AND. (LHAINPUT .LE. 20471)) THEN
452 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nnlo.LHgrid'
453 ELSEIF((LHAINPUT .GE. 29000) .AND. (LHAINPUT .LE. 29003)) THEN
455 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98.LHpdf'
456 ELSEIF((LHAINPUT .GE. 29040) .AND. (LHAINPUT .LE. 29045)) THEN
458 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98lo.LHgrid'
459 ELSEIF((LHAINPUT .GE. 29050) .AND. (LHAINPUT .LE. 29055)) THEN
461 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98nlo.LHgrid'
462 ELSEIF((LHAINPUT .GE. 29060) .AND. (LHAINPUT .LE. 29065)) THEN
464 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98dis.LHgrid'
465 ELSEIF((LHAINPUT .GE. 29070) .AND. (LHAINPUT .LE. 29071)) THEN
467 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98ht.LHgrid'
469 WRITE(LHAPRINT,5150) LHASET
473 ELSEIF((LHAINPUT .GE. 30000) .AND. (LHAINPUT .LE. 39999)) THEN
474 IF((LHAINPUT .GE. 30100) .AND. (LHAINPUT .LE. 30200)) THEN
476 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_100.LHpdf'
477 ELSEIF((LHAINPUT .GE. 31000) .AND. (LHAINPUT .LE. 32000)) THEN
479 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_1000.LHpdf'
481 WRITE(LHAPRINT,5150) LHASET
485 ELSEIF((LHAINPUT .GE. 40000) .AND. (LHAINPUT .LE. 49999)) THEN
486 IF((LHAINPUT .GE. 40100) .AND. (LHAINPUT .LE. 40200)) THEN
488 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_100.LHpdf'
489 ELSEIF((LHAINPUT .GE. 41000) .AND. (LHAINPUT .LE. 41999)) THEN
491 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_1000.LHpdf'
492 ELSEIF((LHAINPUT .GE. 40350) .AND. (LHAINPUT .LE. 40367)) THEN
494 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_lo.LHgrid'
498 ELSEIF((LHAINPUT .GE. 40450) .AND. (LHAINPUT .LE. 40467)) THEN
500 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nlo.LHgrid'
504 ELSEIF((LHAINPUT .GE. 40550) .AND. (LHAINPUT .LE. 40567)) THEN
506 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nnlo.LHgrid'
511 WRITE(LHAPRINT,5150) LHASET
515 ELSEIF((LHAINPUT .GE. 50000) .AND. (LHAINPUT .LE. 59999)) THEN
516 IF((LHAINPUT .GE. 50100) .AND. (LHAINPUT .LE. 50200)) THEN
518 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_100.LHpdf'
519 ELSEIF((LHAINPUT .GE. 51000) .AND. (LHAINPUT .LE. 51999)) THEN
521 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_1000.LHpdf'
523 WRITE(LHAPRINT,5150) LHASET
527 ELSEIF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 69999)) THEN
530 IF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 60022)) THEN
532 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_TR.LHpdf'
533 ELSEIF((LHAINPUT .GE. 60100) .AND. (LHAINPUT .LE. 60122)) THEN
535 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_ZM.LHpdf'
536 ELSEIF((LHAINPUT .GE. 60200) .AND. (LHAINPUT .LE. 60222)) THEN
538 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_FF.LHpdf'
539 ELSEIF((LHAINPUT .GE. 60300) .AND. (LHAINPUT .LE. 60322)) THEN
541 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2005_ZJ.LHpdf'
543 WRITE(LHAPRINT,5150) LHASET
547 ELSEIF((LHAINPUT .GE. 70000) .AND. (LHAINPUT .LE. 79999)) THEN
551 IF((LHAINPUT .GE. 70050) .AND. (LHAINPUT .LE. 70050)) THEN
553 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000ms.LHgrid'
554 ELSEIF((LHAINPUT .GE. 70051) .AND. (LHAINPUT .LE. 70070)) THEN
556 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000msE.LHgrid'
557 ELSEIF((LHAINPUT .GE. 70150) .AND. (LHAINPUT .LE. 70150)) THEN
559 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000dis.LHgrid'
560 ELSEIF((LHAINPUT .GE. 70151) .AND. (LHAINPUT .LE. 70170)) THEN
562 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000disE.LHgrid'
563 ELSEIF((LHAINPUT .GE. 70250) .AND. (LHAINPUT .LE. 70250)) THEN
565 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo.LHgrid'
566 ELSEIF((LHAINPUT .GE. 70251) .AND. (LHAINPUT .LE. 70270)) THEN
568 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000loE.LHgrid'
569 c tempoararily removed on returning to original H!2000 files
570 c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN
572 c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid'
573 c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN
575 c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid'
577 WRITE(LHAPRINT,5150) LHASET
581 ELSEIF((LHAINPUT .GE. 80000) .AND. (LHAINPUT .LE. 89999)) THEN
585 IF((LHAINPUT .GE. 80050) .AND. (LHAINPUT .LE. 80051)) THEN
587 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98nlo.LHgrid'
588 ELSEIF((LHAINPUT .GE. 80060) .AND. (LHAINPUT .LE. 80060)) THEN
590 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98lo.LHgrid'
592 WRITE(LHAPRINT,5150) LHASET
599 ELSEIF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
604 IF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
606 LHANAME=LHAPATH(1:LHAPATHLEN)//'/OWPI.LHgrid'
608 WRITE(LHAPRINT,5150) LHASET
612 ELSEIF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
617 IF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
619 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SMRSPI.LHgrid'
621 WRITE(LHAPRINT,5150) LHASET
625 ELSEIF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 252)) THEN
629 IF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 251)) THEN
632 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI1.LHgrid'
633 ELSEIF((LHAINPUT .GE. 252) .AND. (LHAINPUT .LE. 252)) THEN
636 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI0.LHgrid'
638 WRITE(LHAPRINT,5150) LHASET
642 ELSEIF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
647 IF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
649 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ABFKWPI.LHgrid'
651 WRITE(LHAPRINT,5150) LHASET
658 ELSEIF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 312)) THEN
663 IF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 311)) THEN
665 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG0.LHgrid'
666 ELSEIF((LHAINPUT .GE. 312) .AND. (LHAINPUT .LE. 312)) THEN
668 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG1.LHgrid'
670 WRITE(LHAPRINT,5150) LHASET
674 ELSEIF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 324)) THEN
678 IF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 321)) THEN
682 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
683 ELSEIF((LHAINPUT .GE. 322) .AND. (LHAINPUT .LE. 322)) THEN
687 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
688 ELSEIF((LHAINPUT .GE. 323) .AND. (LHAINPUT .LE. 323)) THEN
692 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
693 ELSEIF((LHAINPUT .GE. 324) .AND. (LHAINPUT .LE. 324)) THEN
697 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
699 WRITE(LHAPRINT,5150) LHASET
703 ELSEIF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 334)) THEN
709 IF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 332)) THEN
711 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
712 ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN
715 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
716 ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN
719 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
721 WRITE(LHAPRINT,5150) LHASET
724 C...GSG/GSG96-G Family
725 ELSEIF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 345)) THEN
730 IF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 341)) THEN
732 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG1.LHgrid'
733 ELSEIF((LHAINPUT .GE. 342) .AND. (LHAINPUT .LE. 343)) THEN
735 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG0.LHgrid'
736 ELSEIF((LHAINPUT .GE. 344) .AND. (LHAINPUT .LE. 344)) THEN
738 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG961.LHgrid'
739 ELSEIF((LHAINPUT .GE. 345) .AND. (LHAINPUT .LE. 345)) THEN
741 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG960.LHgrid'
743 WRITE(LHAPRINT,5150) LHASET
747 ELSEIF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 354)) THEN
752 IF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 352)) THEN
754 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG1.LHgrid'
755 ELSEIF((LHAINPUT .GE. 353) .AND. (LHAINPUT .LE. 353)) THEN
758 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
759 ELSEIF((LHAINPUT .GE. 354) .AND. (LHAINPUT .LE. 354)) THEN
763 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
765 WRITE(LHAPRINT,5150) LHASET
769 ELSEIF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
774 IF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
776 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ACFGPG.LHgrid'
778 WRITE(LHAPRINT,5150) LHASET
782 ELSEIF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
787 IF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
789 LHANAME=LHAPATH(1:LHAPATHLEN)//'/WHITG.LHgrid'
791 WRITE(LHAPRINT,5150) LHASET
795 ELSEIF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 398)) THEN
800 IF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 392)) THEN
803 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
804 ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN
807 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
808 ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN
811 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
812 ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN
815 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
817 WRITE(LHAPRINT,5150) LHASET
820 C...Unknown Family ?! Giving up
822 WRITE(LHAPRINT,5150) LHASET
826 LHAMEMB=LHAINPUT-LHASET
827 c....Now work out if we have already called this set/member
830 if(lhaname.eq.lhanames(j).and.
831 + lhamemb.eq.lhamembers(j)) then
837 if(nsets.gt.nmxset) then
838 if(LHASILENT.ne.1) then
839 print *,'WARNING:too many sets initialised'
840 print *,'overwriting from set 1 again'
846 lhanames(iset)=lhaname
847 lhanumbers(iset)=lhainput
848 lhamembers(iset)=lhamemb
853 CALL INITPDFSETM(iset,LHANAME)
854 CALL NUMBERPDFM(iset,LHAALLMEM)
855 IF(LHASILENT .NE. 1) THEN
857 WRITE(LHAPRINT,5152) LHANAME
858 WRITE(LHAPRINT,5153) LHAALLMEM
861 IF ((LHAMEMB.LT.0) .OR. (LHAMEMB.GT.LHAALLMEM)) THEN
862 WRITE(LHAPRINT,5155) LHAMEMB
863 WRITE(LHAPRINT,5156) LHAALLMEM
867 c print *,'calling initpdf',lhamemb
868 c print *,'calling initpdfm ',iset,lhaname,lhamemb
869 c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb
870 CALL INITPDFM(iset,LHAMEMB)
872 c... the rest is done every time pdfset is called
873 c print *,'setting nset to:',iset
875 call setnmem(iset,lhamemb)
880 call GetLam4M(iset,LHAMEMB,qcdl4)
881 call GetLam5M(iset,LHAMEMB,qcdl5)
884 alphasLHA = alphasPDFM(iset,QMZ)
886 > WRITE(LHAPRINT,5158) alphasLHA
888 IF(LHAPARM(17).EQ.'LHAPDF') THEN
889 NPTYPEPDFL = 1 ! Proton PDFs
894 > WRITE(LHAPRINT,5159) QCDL4, QCDL5
896 NPTYPEPDFL = 1 ! Proton PDFs
901 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
906 C...Formats for initialization information.
907 5150 FORMAT(1X,'WRONG LHAPDF set number =',I12,' given! STOP EXE!')
908 5151 FORMAT(1X,'==============================================')
909 5152 FORMAT(1X,'PDFset name ',A80)
910 5153 FORMAT(1X,'with ',I10,' members')
911 5154 FORMAT(1X,'==== initialized. ===========================')
912 5155 FORMAT(1X,'LHAPDF problem => YOU asked for member = ',I10)
913 5156 FORMAT(1X,'Valid range is: 0 - ',I10,' Execution stopped.')
914 5157 FORMAT(1X,'Number of flavors for PDF is:',I4)
915 5158 FORMAT(1X,'Strong coupling at Mz for PDF is:',F9.5)
916 5159 FORMAT(1X,'Will use for PYTHIA QCDL4, QCDL5:',2F9.5)
921 c********************************************************************
923 c -- copy of PDFLIB to use the eks98 nuclear correction factors
925 SUBROUTINE STRUCTA(X,Q,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
926 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
927 CALL EKS98(X,Q,A,RUV,RDV,RU,RD,RS,RC,RB,RT,RG)
928 CALL STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
941 C*********************************************************************
944 C...Gives parton distributions according to the LHAPDF interface.
945 C...Two evolution codes used:
946 C... EVLCTEQ for CTEQ PDF sets
947 C... QCDNUM for Other PDF sets
949 C...Author: Dimitri Bourilkov bourilkov@mailaps.org
951 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
954 C...interface to LHAPDF library
956 SUBROUTINE STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
958 C...Double precision and integer declarations.
959 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
960 IMPLICIT INTEGER(I-N)
961 C include 'parmsetup.inc'
962 integer noemax,nopmax,npfmax,nofmax,linemax,nmxset
963 parameter (noemax=1000,nopmax=40,npfmax=10,nofmax=10,linemax=20)
964 c nmxset is the max number of sets that can be initialised at one time ---- added V5
967 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
969 C...Interface to LHAPDFLIB.
970 C include 'pathsetup.inc'
971 character*232 lhapath
972 character*272 lhaname,lhanames(nmxset)
973 c CHARACTER*172 LHANAME
974 INTEGER LHASET, LHAMEMB
975 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
977 c...added next 2 lines for structp fix
978 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
979 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
981 DOUBLE PRECISION QCDLHA4, QCDLHA5
983 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
985 CHARACTER*20 LHAPARM(20)
986 DOUBLE PRECISION LHAVALUE(20)
987 COMMON/LHACONTROL/LHAPARM,LHAVALUE
990 COMMON/LHAPDFE/LHAEXTRP
992 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
993 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
994 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
995 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
997 C...Interface to PDFLIB.
998 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1000 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1002 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1003 DOUBLE PRECISION X,Q,F(-6:6)
1007 IF(LHAPARM(16).NE.'NOSTAT') THEN
1008 TOTNUM = TOTNUM+1.D0
1009 IF(X .LT. XMIN) XMINNUM = XMINNUM+1.D0
1010 IF(X .GT. XMAX) XMAXNUM = XMAXNUM+1.D0
1011 IF(Q2 .LT. Q2MIN) Q2MINNUM = Q2MINNUM+1.D0
1012 IF(Q2 .GT. Q2MAX) Q2MAXNUM = Q2MAXNUM+1.D0
1015 C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1016 C...freezing x*f(x,Q2) at borders.
1017 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1018 XIN=MAX(XMIN,MIN(XMAX,X))
1019 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1020 ELSE ! adventurous mode == OWN RISK !
1025 c print *,'calling evolvepdfm:',iset
1027 C...fix to allow STRUCTM to work for photon PDFs (Herwig does this)
1028 C...set P2 = 0.0d0 and IP2 = 0
1029 if(LHANUMBERS(iset).ge.300.and.LHANUMBERS(iset).le.399) then
1032 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1034 CALL EVOLVEPDFM(iset,XIN,Q,F)
1049 C*********************************************************************
1052 C...Gives parton distributions according to the LHAPDF interface.
1053 C...Used for photons.
1055 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
1057 C...interface to LHAPDF library
1060 > (X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
1062 C...Double precision and integer declarations.
1063 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1064 IMPLICIT INTEGER(I-N)
1065 C include 'parmsetup.inc'
1066 integer noemax,nopmax,npfmax,nofmax,linemax,nmxset
1067 parameter (noemax=1000,nopmax=40,npfmax=10,nofmax=10,linemax=20)
1068 c nmxset is the max number of sets that can be initialised at one time ---- added V5
1069 parameter (nmxset=3)
1071 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1073 C...Interface to LHAPDFLIB.
1074 C include 'pathsetup.inc'
1075 character*232 lhapath
1076 character*272 lhaname,lhanames(nmxset)
1077 c CHARACTER*172 LHANAME
1078 INTEGER LHASET, LHAMEMB
1079 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
1081 DOUBLE PRECISION QCDLHA4, QCDLHA5
1083 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1085 CHARACTER*20 LHAPARM(20)
1086 DOUBLE PRECISION LHAVALUE(20)
1087 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1090 COMMON/LHAPDFE/LHAEXTRP
1092 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1093 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1094 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1095 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1097 C...Interface to PDFLIB.
1098 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1100 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1102 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1103 DOUBLE PRECISION X,Q,F(-6:6)
1106 IF(LHAPARM(16).NE.'NOSTAT') THEN
1107 TOTNUP = TOTNUP+1.D0
1108 IF(X .LT. XMIN) XMINNUP = XMINNUP+1.D0
1109 IF(X .GT. XMAX) XMAXNUP = XMAXNUP+1.D0
1110 IF(Q2 .LT. Q2MIN) Q2MINNUP = Q2MINNUP+1.D0
1111 IF(Q2 .GT. Q2MAX) Q2MAXNUP = Q2MAXNUP+1.D0
1114 C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1115 C...freezing x*f(x,Q2) at borders.
1117 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1118 XIN=MAX(XMIN,MIN(XMAX,X))
1119 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1120 ELSE ! adventurous mode == OWN RISK !
1124 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1139 C*********************************************************************
1142 C...For statistics ON structure functions (under/over-flows)
1144 C...Author: Dimitri Bourilkov bourilkov@mailaps.org
1147 C...first introduced in v4.0 28-Apr-2005
1152 C...Double precision and integer declarations.
1153 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1154 IMPLICIT INTEGER(I-N)
1155 C...Interface to LHAPDFLIB.
1156 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1157 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1158 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1159 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1163 PRINT *,'===== PDFSTA statistics for PDF under/over-flows ===='
1165 PRINT *,'====== STRUCTM statistics for nucleon/pion PDFs ====='
1167 PRINT *,' total # of calls ',TOTNUM
1168 IF(TOTNUM .GT. 0.D0) THEN
1169 PERCBELOW = 100.D0*XMINNUM/TOTNUM
1170 PERCABOVE = 100.D0*XMAXNUM/TOTNUM
1171 PRINT *,' X below PDF min ',XMINNUM,' or ',PERCBELOW, ' %'
1172 PRINT *,' X above PDF max ',XMAXNUM,' or ',PERCABOVE, ' %'
1173 PERCBELOW = 100.D0*Q2MINNUM/TOTNUM
1174 PERCABOVE = 100.D0*Q2MAXNUM/TOTNUM
1175 PRINT *,' Q2 below PDF min ',Q2MINNUM,' or ',PERCBELOW, ' %'
1176 PRINT *,' Q2 above PDF max ',Q2MAXNUM,' or ',PERCABOVE, ' %'
1179 PRINT *,'========= STRUCTP statistics for photon PDFs ========'
1181 PRINT *,' total # of calls ',TOTNUP
1182 IF(TOTNUP .GT. 0.D0) THEN
1183 PERCBELOW = 100.D0*XMINNUP/TOTNUP
1184 PERCABOVE = 100.D0*XMAXNUP/TOTNUP
1185 PRINT *,' X below PDF min ',XMINNUP,' or ',PERCBELOW, ' %'
1186 PRINT *,' X above PDF max ',XMAXNUP,' or ',PERCABOVE, ' %'
1187 PERCBELOW = 100.D0*Q2MINNUP/TOTNUP
1188 PERCABOVE = 100.D0*Q2MAXNUP/TOTNUP
1189 PRINT *,' Q2 below PDF min ',Q2MINNUP,' or ',PERCBELOW, ' %'
1190 PRINT *,' Q2 above PDF max ',Q2MAXNUP,' or ',PERCABOVE, ' %'
1196 **********************************************************************
1201 * Revision 1.3 2006/11/02 10:22:57 hristov
1202 * Extracting the BLOCK DATA in a separate file. Changes to make it working on macosx
1204 * Revision 1.2 2006/11/01 12:25:47 hristov
1205 * Using LHAPDF instead of PDF
1207 * Revision 1.1 2006/08/07 09:09:40 morsch
1208 * LHAPDF 5.2.2 source code.
1210 * Revision 1.7 2005/12/02 14:50:54 whalley
1211 * Changes for new CTEQ code/AB sets
1213 * Revision 1.6 2005/10/18 15:35:48 whalley
1214 * fix to allow LHAPATH to be user defined as well as lhapdf-config
1216 * Revision 1.5 2005/10/18 11:47:48 whalley
1217 * Change to only set LHAPATH once per run
1219 * Revision 1.1.1.2 1996/10/30 08:29:06 cernlib
1222 * Revision 1.1.1.1 1996/04/12 15:29:26 plothow
1226 SUBROUTINE PFTOPDG(DX,DSCALE,DXPDF)
1228 Cinclude "pdf/expdp.inc"
1230 + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL,
1232 C... call STRUCTM in PDFLIB to get flavour content
1233 CALL STRUCTM(DX,DSCALE,
1234 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
1235 C... convert flavour convention of PDFLIB to PDG convention
1237 DXPDF(1) = DDNV + DDSEA
1238 DXPDF(2) = DUPV + DUSEA
1252 ****************************************************************************
1253 subroutine setPDFpath(pathname)
1254 implicit real*8 (A-H,O-Z)
1255 C include 'parmsetup.inc'
1256 integer noemax,nopmax,npfmax,nofmax,linemax,nmxset
1257 parameter (noemax=1000,nopmax=40,npfmax=10,nofmax=10,linemax=20)
1258 c nmxset is the max number of sets that can be initialised at one time ---- added V5
1259 parameter (nmxset=3)
1260 character*(*) pathname
1261 C include 'pathsetup.inc'
1262 character*232 lhapath
1263 character*272 lhaname,lhanames(nmxset)
1264 c character*132 lhapath
1265 common/LHAPDFC/lhapath
1266 character*20 lhaparm(20)
1268 common/LHACONTROL/lhaparm,lhavalue
1269 lhaparm(20) = 'LHAPATH'
1270 do j=1,lnblnk(lhapath)
1276 ***********************************************************************
1277 subroutine lhaset(lhaparm2,lhavalue2)
1278 implicit real*8 (a-h,o-z)
1279 character*20 lhaparm(20),lhaparm2(20)
1280 real*8 lhavalue(20),lhavalue2(20)
1281 common/LHACONTROL/lhaparm,lhavalue
1283 lhaparm(j)=lhaparm2(j)
1284 lhavalue(j)=lhavalue2(j)
1288 ******************************************************************
1289 subroutine setlhaparm(lparm)
1290 implicit real*8 (a-h,o-z)
1292 character*20 lhaparm(20)
1294 common/LHACONTROL/lhaparm,lhavalue
1295 if(lparm.eq.'NOSTAT') then
1296 lhaparm(16)='NOSTAT'
1297 else if (lparm.eq.'16') then
1299 else if (lparm.eq.'LHAPDF') then
1300 lhaparm(17)='LHAPDF'
1301 else if (lparm.eq.'17') then
1303 else if (lparm.eq.'EXTRAPOLATE') then
1304 lhaparm(18)='EXTRAPOLATE'
1305 else if (lparm.eq.'18') then
1307 else if (lparm.eq.'SILENT') then
1308 lhaparm(19)='SILENT'
1309 else if (lparm.eq.'LOWKEY') then
1310 lhaparm(19)='LOWKEY'
1311 else if (lparm.eq.'19') then
1314 print *,'WARNING from SetLHAPARM - value',lparm,'
1319 ***************************************************************