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... additions for multiset use
140 include 'parmsetup.inc'
141 include 'pathsetup.inc'
142 c character*172 LHANAMES(nmxset)
143 integer LHASET, LHAMEMB
144 common/LHAPDF/LHANAME, LHASET, LHAMEMB
145 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
146 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
149 c CHARACTER*132 LHAPATH
150 COMMON/LHAPDFC/LHAPATH
152 DATA LHAPATH/'PDFsets'/ ! Default = PDFsets (below current dir)
153 CHARACTER*20 LHAPARM(20)
154 DOUBLE PRECISION LHAVALUE(20)
155 COMMON/LHACONTROL/LHAPARM,LHAVALUE
157 DATA LHAPARM /20*' '/
158 DATA LHAVALUE /20*0.0D0/
159 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
160 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
161 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
162 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
164 DATA XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM/5*0.D0/
165 DATA XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP/5*0.D0/
169 C...Initialization for use of parton distributions
170 C... according to the LHAPDF interface.
172 C...v4.0 28-Apr-2005 Option to use Alfa_s from LHAPDF
173 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
174 C...v3.1 26-Apr-2004 New numbering scheme
175 C...v3.0 23-Jan-2004 HERWIG interface added
177 C...interface to LHAPDF library
179 SUBROUTINE PDFSET(PARM,VALUE)
180 C...Double precision and integer declarations.
181 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
182 IMPLICIT INTEGER(I-N)
183 c...additions for multiset use
184 include 'parmsetup.inc'
185 include 'pathsetup.inc'
186 c character*172 LHANAMES(nmxset)
187 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
188 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
189 real*8 xxmin(nmxset),xxmax(nmxset),qq2min(nmxset),qq2max(nmxset)
190 save xxmin,xxmax,qq2min,qq2max
192 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
194 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
196 c... following 2 for earlier Pythia versions
197 COMMON/LUDAT1/MSTU5(200),PARU5(200),MSTJ5(200),PARJ5(200)
199 C...Interface to LHAPDFLIB.
200 c CHARACTER*172 LHANAME
201 INTEGER LHASET, LHAMEMB
202 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
204 DOUBLE PRECISION QCDLHA4, QCDLHA5
206 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
208 c CHARACTER*132 LHAPATH
209 COMMON/LHAPDFC/LHAPATH
211 CHARACTER*20 LHAPARM(20)
212 DOUBLE PRECISION LHAVALUE(20)
213 COMMON/LHACONTROL/LHAPARM,LHAVALUE
216 COMMON/LHAPDFE/LHAEXTRP
219 COMMON/LHASILENT/LHASILENT
221 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
222 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
223 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
224 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
226 C...Interface to PDFLIB.
227 COMMON/W50511/ NPTYPEPDFL,NGROUPPDFL,NSETPDFL,MODEPDFL,
228 > NFLPDFL,LOPDFL,TMASPDFL
230 DOUBLE PRECISION TMASPDFL
231 C...Interface to PDFLIB.
232 COMMON/W50512/QCDL4,QCDL5
234 DOUBLE PRECISION QCDL4,QCDL5
235 C...Interface to PDFLIB.
236 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
238 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
239 C...Local arrays and character variables (NOT USED here DB)
240 CHARACTER*20 PARM(20)
241 DOUBLE PRECISION VALUE(20)
256 if(first .AND. (LHAPARM(20).NE.'LHAPATH')) then
257 c...overide the default PDFsets path
258 c ... check first if the environmental variable LHAPATH is set ... of not the
259 * Use the lhapdf-config script to get the path to the PDF sets
260 call getenv('LHAPATH',lhapath)
261 if(lhapath.eq.'') then
262 call system("lhapdf-config --pdfsets-path > /tmp/lhapdf-pdfsets-pa
264 open(unit=8, file="/tmp/lhapdf-pdfsets-path", status="old", iostat
266 read (8,'(A)') LHAPATH
275 IF(LHAPARM(18).EQ.'EXTRAPOLATE')
276 > THEN ! Extrapolate PDFs on own risk
280 IF(LHAPARM(19).EQ.'SILENT') THEN ! No printout (silent MODE)
282 ELSEIF(LHAPARM(19).EQ.'LOWKEY') THEN ! Print 5 times (lowkey MODE)
283 IF(LHAFIVE .LT. 6) THEN
284 LHAFIVE = LHAFIVE + 1
289 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
290 if(MSTP(181).ge.6) then
295 IF(VALUE(1) .EQ. 1) THEN ! nucleon
296 LHAINPUT = ABS(MSTP(51))
297 ELSEIF(VALUE(1) .EQ. 2) THEN ! pion
298 LHAINPUT = ABS(MSTP(53))
299 ELSEIF(VALUE(1) .EQ. 3) THEN ! photon
300 LHAINPUT = ABS(MSTP(55))
303 > PRINT *,'==== PYTHIA WILL USE LHAPDF ===='
304 ELSEIF(PARM(1).EQ.'HWLHAPDF') THEN ! HERWIG
305 LHAINPUT = ABS(INT(VALUE(1)))
306 IF(LHAONCE.EQ.LHAINPUT) RETURN
308 > PRINT *,'==== HERWIG WILL USE LHAPDF ===='
311 ELSEIF(PARM(1).EQ.'DEFAULT') THEN ! Stand-alone
312 LHAINPUT = ABS(INT(VALUE(1)))
313 IF(LHAONCE.EQ.LHAINPUT) RETURN
315 > PRINT *,'==== STAND-ALONE LHAGLUE MODE TO USE LHAPDF ===='
319 PRINT *,'== UNKNOWN LHAPDF INTERFACE CALL! STOP EXECUTION! =='
322 C...Initialize parton distributions: LHAPDFLIB.
323 LHAPATHLEN=INDEX(LHAPATH,' ')-1
325 XMIN = 1.0D-6 ! X_min for current PDF set
326 XMAX = 1.0D0 ! X_max for current PDF set
327 Q2MIN = 1.0D0**2 ! Q**2_min scale for current PDF set [GeV]
328 Q2MAX = 1.0D5**2 ! Q**2_max scale for current PDF set [GeV]
333 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 19999)) THEN
335 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 10040)) THEN
337 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6.LHpdf'
339 ELSEIF((LHAINPUT .GE. 10041) .AND. (LHAINPUT .LE. 10041)) THEN
341 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6l.LHpdf'
343 ELSEIF((LHAINPUT .GE. 10042) .AND. (LHAINPUT .LE. 10042)) THEN
345 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6ll.LHpdf'
347 ELSEIF((LHAINPUT .GE. 10050) .AND. (LHAINPUT .LE. 10090)) THEN
349 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6mE.LHgrid'
351 ELSEIF((LHAINPUT .GE. 10100) .AND. (LHAINPUT .LE. 10140)) THEN
353 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHpdf'
355 ELSEIF((LHAINPUT .GE. 10150) .AND. (LHAINPUT .LE. 10190)) THEN
357 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHgrid'
359 ELSEIF((LHAINPUT .GE. 10250) .AND. (LHAINPUT .LE. 10269)) THEN
361 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6AB.LHgrid'
363 ELSEIF((LHAINPUT .GE. 19050) .AND. (LHAINPUT .LE. 19050)) THEN
365 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m.LHgrid'
367 ELSEIF((LHAINPUT .GE. 19051) .AND. (LHAINPUT .LE. 19051)) THEN
369 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m1.LHgrid'
371 ELSEIF((LHAINPUT .GE. 19060) .AND. (LHAINPUT .LE. 19060)) THEN
373 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5d.LHgrid'
375 ELSEIF((LHAINPUT .GE. 19070) .AND. (LHAINPUT .LE. 19070)) THEN
377 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5l.LHgrid'
379 ELSEIF((LHAINPUT .GE. 19150) .AND. (LHAINPUT .LE. 19150)) THEN
381 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4m.LHgrid'
384 ELSEIF((LHAINPUT .GE. 19160) .AND. (LHAINPUT .LE. 19160)) THEN
386 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4d.LHgrid'
389 ELSEIF((LHAINPUT .GE. 19170) .AND. (LHAINPUT .LE. 19170)) THEN
391 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4l.LHgrid'
395 WRITE(LHAPRINT,5150) LHASET
399 ELSEIF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 29999)) THEN
403 IF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 20004)) THEN
405 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHpdf'
406 ELSEIF((LHAINPUT .GE. 20050) .AND. (LHAINPUT .LE. 20054)) THEN
408 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHgrid'
409 ELSEIF((LHAINPUT .GE. 20060) .AND. (LHAINPUT .LE. 20061)) THEN
411 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001lo.LHgrid'
412 ELSEIF((LHAINPUT .GE. 20070) .AND. (LHAINPUT .LE. 20074)) THEN
414 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nnlo.LHgrid'
415 ELSEIF((LHAINPUT .GE. 20100) .AND. (LHAINPUT .LE. 20130)) THEN
417 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHpdf'
418 ELSEIF((LHAINPUT .GE. 20150) .AND. (LHAINPUT .LE. 20180)) THEN
420 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHgrid'
421 ELSEIF((LHAINPUT .GE. 20200) .AND. (LHAINPUT .LE. 20201)) THEN
423 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHpdf'
424 ELSEIF((LHAINPUT .GE. 20250) .AND. (LHAINPUT .LE. 20251)) THEN
426 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHgrid'
427 ELSEIF((LHAINPUT .GE. 20270) .AND. (LHAINPUT .LE. 20271)) THEN
429 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nnlo.LHgrid'
430 ELSEIF((LHAINPUT .GE. 20300) .AND. (LHAINPUT .LE. 20301)) THEN
432 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHpdf'
435 ELSEIF((LHAINPUT .GE. 20350) .AND. (LHAINPUT .LE. 20351)) THEN
437 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHgrid'
440 ELSEIF((LHAINPUT .GE. 20370) .AND. (LHAINPUT .LE. 20371)) THEN
442 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnnlo.LHgrid'
445 ELSEIF((LHAINPUT .GE. 20400) .AND. (LHAINPUT .LE. 20401)) THEN
447 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHpdf'
448 ELSEIF((LHAINPUT .GE. 20406) .AND. (LHAINPUT .LE. 20407)) THEN
450 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHpdf'
451 ELSEIF((LHAINPUT .GE. 20408) .AND. (LHAINPUT .LE. 20409)) THEN
453 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHpdf'
454 ELSEIF((LHAINPUT .GE. 20450) .AND. (LHAINPUT .LE. 20451)) THEN
456 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHgrid'
457 ELSEIF((LHAINPUT .GE. 20452) .AND. (LHAINPUT .LE. 20453)) THEN
459 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3lo.LHgrid'
460 ELSEIF((LHAINPUT .GE. 20454) .AND. (LHAINPUT .LE. 20455)) THEN
462 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4lo.LHgrid'
463 ELSEIF((LHAINPUT .GE. 20456) .AND. (LHAINPUT .LE. 20457)) THEN
465 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHgrid'
466 ELSEIF((LHAINPUT .GE. 20458) .AND. (LHAINPUT .LE. 20459)) THEN
468 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHgrid'
469 ELSEIF((LHAINPUT .GE. 20470) .AND. (LHAINPUT .LE. 20471)) THEN
471 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nnlo.LHgrid'
472 ELSEIF((LHAINPUT .GE. 29000) .AND. (LHAINPUT .LE. 29003)) THEN
474 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98.LHpdf'
475 ELSEIF((LHAINPUT .GE. 29040) .AND. (LHAINPUT .LE. 29045)) THEN
477 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98lo.LHgrid'
478 ELSEIF((LHAINPUT .GE. 29050) .AND. (LHAINPUT .LE. 29055)) THEN
480 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98nlo.LHgrid'
481 ELSEIF((LHAINPUT .GE. 29060) .AND. (LHAINPUT .LE. 29065)) THEN
483 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98dis.LHgrid'
484 ELSEIF((LHAINPUT .GE. 29070) .AND. (LHAINPUT .LE. 29071)) THEN
486 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98ht.LHgrid'
488 WRITE(LHAPRINT,5150) LHASET
492 ELSEIF((LHAINPUT .GE. 30000) .AND. (LHAINPUT .LE. 39999)) THEN
493 IF((LHAINPUT .GE. 30100) .AND. (LHAINPUT .LE. 30200)) THEN
495 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_100.LHpdf'
496 ELSEIF((LHAINPUT .GE. 31000) .AND. (LHAINPUT .LE. 32000)) THEN
498 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_1000.LHpdf'
500 WRITE(LHAPRINT,5150) LHASET
504 ELSEIF((LHAINPUT .GE. 40000) .AND. (LHAINPUT .LE. 49999)) THEN
505 IF((LHAINPUT .GE. 40100) .AND. (LHAINPUT .LE. 40200)) THEN
507 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_100.LHpdf'
508 ELSEIF((LHAINPUT .GE. 41000) .AND. (LHAINPUT .LE. 41999)) THEN
510 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_1000.LHpdf'
511 ELSEIF((LHAINPUT .GE. 40350) .AND. (LHAINPUT .LE. 40367)) THEN
513 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_lo.LHgrid'
517 ELSEIF((LHAINPUT .GE. 40450) .AND. (LHAINPUT .LE. 40467)) THEN
519 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nlo.LHgrid'
523 ELSEIF((LHAINPUT .GE. 40550) .AND. (LHAINPUT .LE. 40567)) THEN
525 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nnlo.LHgrid'
530 WRITE(LHAPRINT,5150) LHASET
534 ELSEIF((LHAINPUT .GE. 50000) .AND. (LHAINPUT .LE. 59999)) THEN
535 IF((LHAINPUT .GE. 50100) .AND. (LHAINPUT .LE. 50200)) THEN
537 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_100.LHpdf'
538 ELSEIF((LHAINPUT .GE. 51000) .AND. (LHAINPUT .LE. 51999)) THEN
540 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_1000.LHpdf'
542 WRITE(LHAPRINT,5150) LHASET
546 ELSEIF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 69999)) THEN
549 IF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 60022)) THEN
551 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_TR.LHpdf'
552 ELSEIF((LHAINPUT .GE. 60100) .AND. (LHAINPUT .LE. 60122)) THEN
554 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_ZM.LHpdf'
555 ELSEIF((LHAINPUT .GE. 60200) .AND. (LHAINPUT .LE. 60222)) THEN
557 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_FF.LHpdf'
558 ELSEIF((LHAINPUT .GE. 60300) .AND. (LHAINPUT .LE. 60322)) THEN
560 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2005_ZJ.LHpdf'
562 WRITE(LHAPRINT,5150) LHASET
566 ELSEIF((LHAINPUT .GE. 70000) .AND. (LHAINPUT .LE. 79999)) THEN
570 IF((LHAINPUT .GE. 70050) .AND. (LHAINPUT .LE. 70050)) THEN
572 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000ms.LHgrid'
573 ELSEIF((LHAINPUT .GE. 70051) .AND. (LHAINPUT .LE. 70070)) THEN
575 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000msE.LHgrid'
576 ELSEIF((LHAINPUT .GE. 70150) .AND. (LHAINPUT .LE. 70150)) THEN
578 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000dis.LHgrid'
579 ELSEIF((LHAINPUT .GE. 70151) .AND. (LHAINPUT .LE. 70170)) THEN
581 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000disE.LHgrid'
582 ELSEIF((LHAINPUT .GE. 70250) .AND. (LHAINPUT .LE. 70250)) THEN
584 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo.LHgrid'
585 ELSEIF((LHAINPUT .GE. 70251) .AND. (LHAINPUT .LE. 70270)) THEN
587 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000loE.LHgrid'
588 c tempoararily removed on returning to original H!2000 files
589 c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN
591 c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid'
592 c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN
594 c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid'
596 WRITE(LHAPRINT,5150) LHASET
600 ELSEIF((LHAINPUT .GE. 80000) .AND. (LHAINPUT .LE. 89999)) THEN
604 IF((LHAINPUT .GE. 80050) .AND. (LHAINPUT .LE. 80051)) THEN
606 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98nlo.LHgrid'
607 ELSEIF((LHAINPUT .GE. 80060) .AND. (LHAINPUT .LE. 80060)) THEN
609 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98lo.LHgrid'
611 WRITE(LHAPRINT,5150) LHASET
618 ELSEIF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
623 IF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
625 LHANAME=LHAPATH(1:LHAPATHLEN)//'/OWPI.LHgrid'
627 WRITE(LHAPRINT,5150) LHASET
631 ELSEIF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
636 IF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
638 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SMRSPI.LHgrid'
640 WRITE(LHAPRINT,5150) LHASET
644 ELSEIF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 252)) THEN
648 IF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 251)) THEN
651 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI1.LHgrid'
652 ELSEIF((LHAINPUT .GE. 252) .AND. (LHAINPUT .LE. 252)) THEN
655 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI0.LHgrid'
657 WRITE(LHAPRINT,5150) LHASET
661 ELSEIF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
666 IF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
668 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ABFKWPI.LHgrid'
670 WRITE(LHAPRINT,5150) LHASET
677 ELSEIF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 312)) THEN
682 IF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 311)) THEN
684 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG0.LHgrid'
685 ELSEIF((LHAINPUT .GE. 312) .AND. (LHAINPUT .LE. 312)) THEN
687 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG1.LHgrid'
689 WRITE(LHAPRINT,5150) LHASET
693 ELSEIF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 324)) THEN
697 IF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 321)) THEN
701 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
702 ELSEIF((LHAINPUT .GE. 322) .AND. (LHAINPUT .LE. 322)) THEN
706 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
707 ELSEIF((LHAINPUT .GE. 323) .AND. (LHAINPUT .LE. 323)) THEN
711 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
712 ELSEIF((LHAINPUT .GE. 324) .AND. (LHAINPUT .LE. 324)) THEN
716 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
718 WRITE(LHAPRINT,5150) LHASET
722 ELSEIF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 334)) THEN
728 IF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 332)) THEN
730 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
731 ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN
734 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
735 ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN
738 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
740 WRITE(LHAPRINT,5150) LHASET
743 C...GSG/GSG96-G Family
744 ELSEIF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 345)) THEN
749 IF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 341)) THEN
751 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG1.LHgrid'
752 ELSEIF((LHAINPUT .GE. 342) .AND. (LHAINPUT .LE. 343)) THEN
754 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG0.LHgrid'
755 ELSEIF((LHAINPUT .GE. 344) .AND. (LHAINPUT .LE. 344)) THEN
757 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG961.LHgrid'
758 ELSEIF((LHAINPUT .GE. 345) .AND. (LHAINPUT .LE. 345)) THEN
760 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG960.LHgrid'
762 WRITE(LHAPRINT,5150) LHASET
766 ELSEIF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 354)) THEN
771 IF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 352)) THEN
773 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG1.LHgrid'
774 ELSEIF((LHAINPUT .GE. 353) .AND. (LHAINPUT .LE. 353)) THEN
777 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
778 ELSEIF((LHAINPUT .GE. 354) .AND. (LHAINPUT .LE. 354)) THEN
782 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
784 WRITE(LHAPRINT,5150) LHASET
788 ELSEIF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
793 IF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
795 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ACFGPG.LHgrid'
797 WRITE(LHAPRINT,5150) LHASET
801 ELSEIF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
806 IF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
808 LHANAME=LHAPATH(1:LHAPATHLEN)//'/WHITG.LHgrid'
810 WRITE(LHAPRINT,5150) LHASET
814 ELSEIF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 398)) THEN
819 IF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 392)) THEN
822 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
823 ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN
826 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
827 ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN
830 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
831 ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN
834 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
836 WRITE(LHAPRINT,5150) LHASET
839 C...Unknown Family ?! Giving up
841 WRITE(LHAPRINT,5150) LHASET
845 LHAMEMB=LHAINPUT-LHASET
846 c....Now work out if we have already called this set/member
849 if(lhaname.eq.lhanames(j).and.
850 + lhamemb.eq.lhamembers(j)) then
856 if(nsets.gt.nmxset) then
857 if(LHASILENT.ne.1) then
858 print *,'WARNING:too many sets initialised'
859 print *,'overwriting from set 1 again'
865 lhanames(iset)=lhaname
866 lhanumbers(iset)=lhainput
867 lhamembers(iset)=lhamemb
872 CALL INITPDFSETM(iset,LHANAME)
873 CALL NUMBERPDFM(iset,LHAALLMEM)
874 IF(LHASILENT .NE. 1) THEN
876 WRITE(LHAPRINT,5152) LHANAME
877 WRITE(LHAPRINT,5153) LHAALLMEM
880 IF ((LHAMEMB.LT.0) .OR. (LHAMEMB.GT.LHAALLMEM)) THEN
881 WRITE(LHAPRINT,5155) LHAMEMB
882 WRITE(LHAPRINT,5156) LHAALLMEM
886 c print *,'calling initpdf',lhamemb
887 c print *,'calling initpdfm ',iset,lhaname,lhamemb
888 c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb
889 CALL INITPDFM(iset,LHAMEMB)
891 c... the rest is done every time pdfset is called
892 c print *,'setting nset to:',iset
894 call setnmem(iset,lhamemb)
899 call GetLam4M(iset,LHAMEMB,qcdl4)
900 call GetLam5M(iset,LHAMEMB,qcdl5)
903 alphasLHA = alphasPDFM(iset,QMZ)
905 > WRITE(LHAPRINT,5158) alphasLHA
907 IF(LHAPARM(17).EQ.'LHAPDF') THEN
908 NPTYPEPDFL = 1 ! Proton PDFs
913 > WRITE(LHAPRINT,5159) QCDL4, QCDL5
915 NPTYPEPDFL = 1 ! Proton PDFs
920 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
925 C...Formats for initialization information.
926 5150 FORMAT(1X,'WRONG LHAPDF set number =',I12,' given! STOP EXE!')
927 5151 FORMAT(1X,'==============================================')
928 5152 FORMAT(1X,'PDFset name ',A80)
929 5153 FORMAT(1X,'with ',I10,' members')
930 5154 FORMAT(1X,'==== initialized. ===========================')
931 5155 FORMAT(1X,'LHAPDF problem => YOU asked for member = ',I10)
932 5156 FORMAT(1X,'Valid range is: 0 - ',I10,' Execution stopped.')
933 5157 FORMAT(1X,'Number of flavors for PDF is:',I4)
934 5158 FORMAT(1X,'Strong coupling at Mz for PDF is:',F9.5)
935 5159 FORMAT(1X,'Will use for PYTHIA QCDL4, QCDL5:',2F9.5)
940 c********************************************************************
942 c -- copy of PDFLIB to use the eks98 nuclear correction factors
944 SUBROUTINE STRUCTA(X,Q,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
945 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
946 CALL EKS98(X,Q,A,RUV,RDV,RU,RD,RS,RC,RB,RT,RG)
947 CALL STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
960 C*********************************************************************
963 C...Gives parton distributions according to the LHAPDF interface.
964 C...Two evolution codes used:
965 C... EVLCTEQ for CTEQ PDF sets
966 C... QCDNUM for Other PDF sets
968 C...Author: Dimitri Bourilkov bourilkov@mailaps.org
970 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
973 C...interface to LHAPDF library
975 SUBROUTINE STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
977 C...Double precision and integer declarations.
978 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
979 IMPLICIT INTEGER(I-N)
980 include 'parmsetup.inc'
982 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
984 C...Interface to LHAPDFLIB.
985 include 'pathsetup.inc'
986 c CHARACTER*172 LHANAME
987 INTEGER LHASET, LHAMEMB
988 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
990 c...added next 2 lines for structp fix
991 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
992 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
994 DOUBLE PRECISION QCDLHA4, QCDLHA5
996 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
998 CHARACTER*20 LHAPARM(20)
999 DOUBLE PRECISION LHAVALUE(20)
1000 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1003 COMMON/LHAPDFE/LHAEXTRP
1005 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1006 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1007 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1008 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1010 C...Interface to PDFLIB.
1011 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1013 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1015 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1016 DOUBLE PRECISION X,Q,F(-6:6)
1020 IF(LHAPARM(16).NE.'NOSTAT') THEN
1021 TOTNUM = TOTNUM+1.D0
1022 IF(X .LT. XMIN) XMINNUM = XMINNUM+1.D0
1023 IF(X .GT. XMAX) XMAXNUM = XMAXNUM+1.D0
1024 IF(Q2 .LT. Q2MIN) Q2MINNUM = Q2MINNUM+1.D0
1025 IF(Q2 .GT. Q2MAX) Q2MAXNUM = Q2MAXNUM+1.D0
1028 C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1029 C...freezing x*f(x,Q2) at borders.
1030 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1031 XIN=MAX(XMIN,MIN(XMAX,X))
1032 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1033 ELSE ! adventurous mode == OWN RISK !
1038 c print *,'calling evolvepdfm:',iset
1040 C...fix to allow STRUCTM to work for photon PDFs (Herwig does this)
1041 C...set P2 = 0.0d0 and IP2 = 0
1042 if(LHANUMBERS(iset).ge.300.and.LHANUMBERS(iset).le.399) then
1045 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1047 CALL EVOLVEPDFM(iset,XIN,Q,F)
1062 C*********************************************************************
1065 C...Gives parton distributions according to the LHAPDF interface.
1066 C...Used for photons.
1068 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
1070 C...interface to LHAPDF library
1073 > (X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
1075 C...Double precision and integer declarations.
1076 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1077 IMPLICIT INTEGER(I-N)
1078 include 'parmsetup.inc'
1080 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1082 C...Interface to LHAPDFLIB.
1083 include 'pathsetup.inc'
1084 c CHARACTER*172 LHANAME
1085 INTEGER LHASET, LHAMEMB
1086 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
1088 DOUBLE PRECISION QCDLHA4, QCDLHA5
1090 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1092 CHARACTER*20 LHAPARM(20)
1093 DOUBLE PRECISION LHAVALUE(20)
1094 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1097 COMMON/LHAPDFE/LHAEXTRP
1099 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1100 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1101 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1102 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1104 C...Interface to PDFLIB.
1105 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1107 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1109 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1110 DOUBLE PRECISION X,Q,F(-6:6)
1113 IF(LHAPARM(16).NE.'NOSTAT') THEN
1114 TOTNUP = TOTNUP+1.D0
1115 IF(X .LT. XMIN) XMINNUP = XMINNUP+1.D0
1116 IF(X .GT. XMAX) XMAXNUP = XMAXNUP+1.D0
1117 IF(Q2 .LT. Q2MIN) Q2MINNUP = Q2MINNUP+1.D0
1118 IF(Q2 .GT. Q2MAX) Q2MAXNUP = Q2MAXNUP+1.D0
1121 C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1122 C...freezing x*f(x,Q2) at borders.
1124 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1125 XIN=MAX(XMIN,MIN(XMAX,X))
1126 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1127 ELSE ! adventurous mode == OWN RISK !
1131 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1146 C*********************************************************************
1149 C...For statistics ON structure functions (under/over-flows)
1151 C...Author: Dimitri Bourilkov bourilkov@mailaps.org
1154 C...first introduced in v4.0 28-Apr-2005
1159 C...Double precision and integer declarations.
1160 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1161 IMPLICIT INTEGER(I-N)
1162 C...Interface to LHAPDFLIB.
1163 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1164 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1165 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1166 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1170 PRINT *,'===== PDFSTA statistics for PDF under/over-flows ===='
1172 PRINT *,'====== STRUCTM statistics for nucleon/pion PDFs ====='
1174 PRINT *,' total # of calls ',TOTNUM
1175 IF(TOTNUM .GT. 0.D0) THEN
1176 PERCBELOW = 100.D0*XMINNUM/TOTNUM
1177 PERCABOVE = 100.D0*XMAXNUM/TOTNUM
1178 PRINT *,' X below PDF min ',XMINNUM,' or ',PERCBELOW, ' %'
1179 PRINT *,' X above PDF max ',XMAXNUM,' or ',PERCABOVE, ' %'
1180 PERCBELOW = 100.D0*Q2MINNUM/TOTNUM
1181 PERCABOVE = 100.D0*Q2MAXNUM/TOTNUM
1182 PRINT *,' Q2 below PDF min ',Q2MINNUM,' or ',PERCBELOW, ' %'
1183 PRINT *,' Q2 above PDF max ',Q2MAXNUM,' or ',PERCABOVE, ' %'
1186 PRINT *,'========= STRUCTP statistics for photon PDFs ========'
1188 PRINT *,' total # of calls ',TOTNUP
1189 IF(TOTNUP .GT. 0.D0) THEN
1190 PERCBELOW = 100.D0*XMINNUP/TOTNUP
1191 PERCABOVE = 100.D0*XMAXNUP/TOTNUP
1192 PRINT *,' X below PDF min ',XMINNUP,' or ',PERCBELOW, ' %'
1193 PRINT *,' X above PDF max ',XMAXNUP,' or ',PERCABOVE, ' %'
1194 PERCBELOW = 100.D0*Q2MINNUP/TOTNUP
1195 PERCABOVE = 100.D0*Q2MAXNUP/TOTNUP
1196 PRINT *,' Q2 below PDF min ',Q2MINNUP,' or ',PERCBELOW, ' %'
1197 PRINT *,' Q2 above PDF max ',Q2MAXNUP,' or ',PERCABOVE, ' %'
1203 **********************************************************************
1208 * Revision 1.7 2005/12/02 14:50:54 whalley
1209 * Changes for new CTEQ code/AB sets
1211 * Revision 1.6 2005/10/18 15:35:48 whalley
1212 * fix to allow LHAPATH to be user defined as well as lhapdf-config
1214 * Revision 1.5 2005/10/18 11:47:48 whalley
1215 * Change to only set LHAPATH once per run
1217 * Revision 1.1.1.2 1996/10/30 08:29:06 cernlib
1220 * Revision 1.1.1.1 1996/04/12 15:29:26 plothow
1224 SUBROUTINE PFTOPDG(DX,DSCALE,DXPDF)
1226 Cinclude "pdf/expdp.inc"
1228 + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL,
1230 C... call STRUCTM in PDFLIB to get flavour content
1231 CALL STRUCTM(DX,DSCALE,
1232 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
1233 C... convert flavour convention of PDFLIB to PDG convention
1235 DXPDF(1) = DDNV + DDSEA
1236 DXPDF(2) = DUPV + DUSEA
1250 ****************************************************************************
1251 subroutine setPDFpath(pathname)
1252 implicit real*8 (A-H,O-Z)
1253 include 'parmsetup.inc'
1254 character*(*) pathname
1255 include 'pathsetup.inc'
1256 c character*132 lhapath
1257 common/LHAPDFC/lhapath
1258 character*20 lhaparm(20)
1260 common/LHACONTROL/lhaparm,lhavalue
1261 lhaparm(20) = 'LHAPATH'
1262 do j=1,lnblnk(lhapath)
1268 ***********************************************************************
1269 subroutine lhaset(lhaparm2,lhavalue2)
1270 implicit real*8 (a-h,o-z)
1271 character*20 lhaparm(20),lhaparm2(20)
1272 real*8 lhavalue(20),lhavalue2(20)
1273 common/LHACONTROL/lhaparm,lhavalue
1275 lhaparm(j)=lhaparm2(j)
1276 lhavalue(j)=lhavalue2(j)
1280 ******************************************************************
1281 subroutine setlhaparm(lparm)
1282 implicit real*8 (a-h,o-z)
1284 character*20 lhaparm(20)
1286 common/LHACONTROL/lhaparm,lhavalue
1287 if(lparm.eq.'NOSTAT') then
1288 lhaparm(16)='NOSTAT'
1289 else if (lparm.eq.'16') then
1291 else if (lparm.eq.'LHAPDF') then
1292 lhaparm(17)='LHAPDF'
1293 else if (lparm.eq.'17') then
1295 else if (lparm.eq.'EXTRAPOLATE') then
1296 lhaparm(18)='EXTRAPOLATE'
1297 else if (lparm.eq.'18') then
1299 else if (lparm.eq.'SILENT') then
1300 lhaparm(19)='SILENT'
1301 else if (lparm.eq.'LOWKEY') then
1302 lhaparm(19)='LOWKEY'
1303 else if (lparm.eq.'19') then
1306 print *,'WARNING from SetLHAPARM - value',lparm,'
1311 ***************************************************************