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 include 'parmsetup.inc'
155 include 'pathsetup.inc'
156 c character*172 LHANAMES(nmxset)
157 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
158 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
159 real*8 xxmin(nmxset),xxmax(nmxset),qq2min(nmxset),qq2max(nmxset)
160 save xxmin,xxmax,qq2min,qq2max
162 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
164 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
166 c... following 2 for earlier Pythia versions
167 COMMON/LUDAT1/MSTU5(200),PARU5(200),MSTJ5(200),PARJ5(200)
169 C...Interface to LHAPDFLIB.
170 c CHARACTER*172 LHANAME
171 INTEGER LHASET, LHAMEMB
172 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
174 DOUBLE PRECISION QCDLHA4, QCDLHA5
176 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
178 c CHARACTER*132 LHAPATH
179 COMMON/LHAPDFC/LHAPATH
181 CHARACTER*20 LHAPARM(20)
182 DOUBLE PRECISION LHAVALUE(20)
183 COMMON/LHACONTROL/LHAPARM,LHAVALUE
186 COMMON/LHAPDFE/LHAEXTRP
189 COMMON/LHASILENT/LHASILENT
191 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
192 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
193 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
194 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
196 C...Interface to PDFLIB.
197 COMMON/W50511/ NPTYPEPDFL,NGROUPPDFL,NSETPDFL,MODEPDFL,
198 > NFLPDFL,LOPDFL,TMASPDFL
200 DOUBLE PRECISION TMASPDFL
201 C...Interface to PDFLIB.
202 COMMON/W50512/QCDL4,QCDL5
204 DOUBLE PRECISION QCDL4,QCDL5
205 C...Interface to PDFLIB.
206 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
208 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
209 C...Local arrays and character variables (NOT USED here DB)
210 CHARACTER*20 PARM(20)
211 DOUBLE PRECISION VALUE(20)
224 CHARACTER*1000 CHROOT
230 if(first .AND. (LHAPARM(20).NE.'LHAPATH')) then
231 c...overide the default PDFsets path
232 c ... check first if the environmental variable LHAPATH is set
233 call getenv('LHAPATH',lhapath)
234 if(lhapath.eq.'') then
235 C The environment variable LHAPATH is not set.
236 C Take the data from $ALICE_ROOT/LHAPDF/PDFsets
237 CALL GETENV('ALICE_ROOT',CHROOT)
238 LNROOT = LNBLNK(CHROOT)
240 LHAPATH='PDFsets' ! Default value
242 LHAPATH=CHROOT(1:LNROOT)//'/LHAPDF/PDFsets'
251 IF(LHAPARM(18).EQ.'EXTRAPOLATE')
252 > THEN ! Extrapolate PDFs on own risk
256 IF(LHAPARM(19).EQ.'SILENT') THEN ! No printout (silent MODE)
258 ELSEIF(LHAPARM(19).EQ.'LOWKEY') THEN ! Print 5 times (lowkey MODE)
259 IF(LHAFIVE .LT. 6) THEN
260 LHAFIVE = LHAFIVE + 1
265 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
266 if(MSTP(181).ge.6) then
271 IF(VALUE(1) .EQ. 1) THEN ! nucleon
272 LHAINPUT = ABS(MSTP(51))
273 ELSEIF(VALUE(1) .EQ. 2) THEN ! pion
274 LHAINPUT = ABS(MSTP(53))
275 ELSEIF(VALUE(1) .EQ. 3) THEN ! photon
276 LHAINPUT = ABS(MSTP(55))
279 > PRINT *,'==== PYTHIA WILL USE LHAPDF ===='
280 ELSEIF(PARM(1).EQ.'HWLHAPDF') THEN ! HERWIG
281 LHAINPUT = ABS(INT(VALUE(1)))
282 IF(LHAONCE.EQ.LHAINPUT) RETURN
284 > PRINT *,'==== HERWIG WILL USE LHAPDF ===='
287 ELSEIF(PARM(1).EQ.'DEFAULT') THEN ! Stand-alone
288 LHAINPUT = ABS(INT(VALUE(1)))
289 IF(LHAONCE.EQ.LHAINPUT) RETURN
291 > PRINT *,'==== STAND-ALONE LHAGLUE MODE TO USE LHAPDF ===='
295 PRINT *,'== UNKNOWN LHAPDF INTERFACE CALL! STOP EXECUTION! =='
298 C...Initialize parton distributions: LHAPDFLIB.
299 LHAPATHLEN=INDEX(LHAPATH,' ')-1
301 XMIN = 1.0D-6 ! X_min for current PDF set
302 XMAX = 1.0D0 ! X_max for current PDF set
303 Q2MIN = 1.0D0**2 ! Q**2_min scale for current PDF set [GeV]
304 Q2MAX = 1.0D5**2 ! Q**2_max scale for current PDF set [GeV]
309 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 19999)) THEN
311 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 10040)) THEN
313 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6.LHpdf'
315 ELSEIF((LHAINPUT .GE. 10041) .AND. (LHAINPUT .LE. 10041)) THEN
317 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6l.LHpdf'
319 ELSEIF((LHAINPUT .GE. 10042) .AND. (LHAINPUT .LE. 10042)) THEN
321 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6ll.LHpdf'
323 ELSEIF((LHAINPUT .GE. 10050) .AND. (LHAINPUT .LE. 10090)) THEN
325 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6mE.LHgrid'
327 ELSEIF((LHAINPUT .GE. 10100) .AND. (LHAINPUT .LE. 10140)) THEN
329 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHpdf'
331 ELSEIF((LHAINPUT .GE. 10150) .AND. (LHAINPUT .LE. 10190)) THEN
333 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHgrid'
335 ELSEIF((LHAINPUT .GE. 10250) .AND. (LHAINPUT .LE. 10269)) THEN
337 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6AB.LHgrid'
339 ELSEIF((LHAINPUT .GE. 19050) .AND. (LHAINPUT .LE. 19050)) THEN
341 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m.LHgrid'
343 ELSEIF((LHAINPUT .GE. 19051) .AND. (LHAINPUT .LE. 19051)) THEN
345 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m1.LHgrid'
347 ELSEIF((LHAINPUT .GE. 19060) .AND. (LHAINPUT .LE. 19060)) THEN
349 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5d.LHgrid'
351 ELSEIF((LHAINPUT .GE. 19070) .AND. (LHAINPUT .LE. 19070)) THEN
353 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5l.LHgrid'
355 ELSEIF((LHAINPUT .GE. 19150) .AND. (LHAINPUT .LE. 19150)) THEN
357 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4m.LHgrid'
360 ELSEIF((LHAINPUT .GE. 19160) .AND. (LHAINPUT .LE. 19160)) THEN
362 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4d.LHgrid'
365 ELSEIF((LHAINPUT .GE. 19170) .AND. (LHAINPUT .LE. 19170)) THEN
367 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4l.LHgrid'
371 WRITE(LHAPRINT,5150) LHASET
375 ELSEIF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 29999)) THEN
379 IF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 20004)) THEN
381 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHpdf'
382 ELSEIF((LHAINPUT .GE. 20050) .AND. (LHAINPUT .LE. 20054)) THEN
384 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHgrid'
385 ELSEIF((LHAINPUT .GE. 20060) .AND. (LHAINPUT .LE. 20061)) THEN
387 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001lo.LHgrid'
388 ELSEIF((LHAINPUT .GE. 20070) .AND. (LHAINPUT .LE. 20074)) THEN
390 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nnlo.LHgrid'
391 ELSEIF((LHAINPUT .GE. 20100) .AND. (LHAINPUT .LE. 20130)) THEN
393 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHpdf'
394 ELSEIF((LHAINPUT .GE. 20150) .AND. (LHAINPUT .LE. 20180)) THEN
396 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHgrid'
397 ELSEIF((LHAINPUT .GE. 20200) .AND. (LHAINPUT .LE. 20201)) THEN
399 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHpdf'
400 ELSEIF((LHAINPUT .GE. 20250) .AND. (LHAINPUT .LE. 20251)) THEN
402 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHgrid'
403 ELSEIF((LHAINPUT .GE. 20270) .AND. (LHAINPUT .LE. 20271)) THEN
405 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nnlo.LHgrid'
406 ELSEIF((LHAINPUT .GE. 20300) .AND. (LHAINPUT .LE. 20301)) THEN
408 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHpdf'
411 ELSEIF((LHAINPUT .GE. 20350) .AND. (LHAINPUT .LE. 20351)) THEN
413 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHgrid'
416 ELSEIF((LHAINPUT .GE. 20370) .AND. (LHAINPUT .LE. 20371)) THEN
418 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnnlo.LHgrid'
421 ELSEIF((LHAINPUT .GE. 20400) .AND. (LHAINPUT .LE. 20401)) THEN
423 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHpdf'
424 ELSEIF((LHAINPUT .GE. 20406) .AND. (LHAINPUT .LE. 20407)) THEN
426 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHpdf'
427 ELSEIF((LHAINPUT .GE. 20408) .AND. (LHAINPUT .LE. 20409)) THEN
429 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHpdf'
430 ELSEIF((LHAINPUT .GE. 20450) .AND. (LHAINPUT .LE. 20451)) THEN
432 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHgrid'
433 ELSEIF((LHAINPUT .GE. 20452) .AND. (LHAINPUT .LE. 20453)) THEN
435 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3lo.LHgrid'
436 ELSEIF((LHAINPUT .GE. 20454) .AND. (LHAINPUT .LE. 20455)) THEN
438 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4lo.LHgrid'
439 ELSEIF((LHAINPUT .GE. 20456) .AND. (LHAINPUT .LE. 20457)) THEN
441 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHgrid'
442 ELSEIF((LHAINPUT .GE. 20458) .AND. (LHAINPUT .LE. 20459)) THEN
444 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHgrid'
445 ELSEIF((LHAINPUT .GE. 20470) .AND. (LHAINPUT .LE. 20471)) THEN
447 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nnlo.LHgrid'
448 ELSEIF((LHAINPUT .GE. 29000) .AND. (LHAINPUT .LE. 29003)) THEN
450 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98.LHpdf'
451 ELSEIF((LHAINPUT .GE. 29040) .AND. (LHAINPUT .LE. 29045)) THEN
453 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98lo.LHgrid'
454 ELSEIF((LHAINPUT .GE. 29050) .AND. (LHAINPUT .LE. 29055)) THEN
456 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98nlo.LHgrid'
457 ELSEIF((LHAINPUT .GE. 29060) .AND. (LHAINPUT .LE. 29065)) THEN
459 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98dis.LHgrid'
460 ELSEIF((LHAINPUT .GE. 29070) .AND. (LHAINPUT .LE. 29071)) THEN
462 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98ht.LHgrid'
464 WRITE(LHAPRINT,5150) LHASET
468 ELSEIF((LHAINPUT .GE. 30000) .AND. (LHAINPUT .LE. 39999)) THEN
469 IF((LHAINPUT .GE. 30100) .AND. (LHAINPUT .LE. 30200)) THEN
471 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_100.LHpdf'
472 ELSEIF((LHAINPUT .GE. 31000) .AND. (LHAINPUT .LE. 32000)) THEN
474 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_1000.LHpdf'
476 WRITE(LHAPRINT,5150) LHASET
480 ELSEIF((LHAINPUT .GE. 40000) .AND. (LHAINPUT .LE. 49999)) THEN
481 IF((LHAINPUT .GE. 40100) .AND. (LHAINPUT .LE. 40200)) THEN
483 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_100.LHpdf'
484 ELSEIF((LHAINPUT .GE. 41000) .AND. (LHAINPUT .LE. 41999)) THEN
486 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_1000.LHpdf'
487 ELSEIF((LHAINPUT .GE. 40350) .AND. (LHAINPUT .LE. 40367)) THEN
489 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_lo.LHgrid'
493 ELSEIF((LHAINPUT .GE. 40450) .AND. (LHAINPUT .LE. 40467)) THEN
495 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nlo.LHgrid'
499 ELSEIF((LHAINPUT .GE. 40550) .AND. (LHAINPUT .LE. 40567)) THEN
501 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nnlo.LHgrid'
506 WRITE(LHAPRINT,5150) LHASET
510 ELSEIF((LHAINPUT .GE. 50000) .AND. (LHAINPUT .LE. 59999)) THEN
511 IF((LHAINPUT .GE. 50100) .AND. (LHAINPUT .LE. 50200)) THEN
513 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_100.LHpdf'
514 ELSEIF((LHAINPUT .GE. 51000) .AND. (LHAINPUT .LE. 51999)) THEN
516 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_1000.LHpdf'
518 WRITE(LHAPRINT,5150) LHASET
522 ELSEIF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 69999)) THEN
525 IF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 60022)) THEN
527 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_TR.LHpdf'
528 ELSEIF((LHAINPUT .GE. 60100) .AND. (LHAINPUT .LE. 60122)) THEN
530 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_ZM.LHpdf'
531 ELSEIF((LHAINPUT .GE. 60200) .AND. (LHAINPUT .LE. 60222)) THEN
533 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_FF.LHpdf'
534 ELSEIF((LHAINPUT .GE. 60300) .AND. (LHAINPUT .LE. 60322)) THEN
536 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2005_ZJ.LHpdf'
538 WRITE(LHAPRINT,5150) LHASET
542 ELSEIF((LHAINPUT .GE. 70000) .AND. (LHAINPUT .LE. 79999)) THEN
546 IF((LHAINPUT .GE. 70050) .AND. (LHAINPUT .LE. 70050)) THEN
548 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000ms.LHgrid'
549 ELSEIF((LHAINPUT .GE. 70051) .AND. (LHAINPUT .LE. 70070)) THEN
551 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000msE.LHgrid'
552 ELSEIF((LHAINPUT .GE. 70150) .AND. (LHAINPUT .LE. 70150)) THEN
554 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000dis.LHgrid'
555 ELSEIF((LHAINPUT .GE. 70151) .AND. (LHAINPUT .LE. 70170)) THEN
557 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000disE.LHgrid'
558 ELSEIF((LHAINPUT .GE. 70250) .AND. (LHAINPUT .LE. 70250)) THEN
560 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo.LHgrid'
561 ELSEIF((LHAINPUT .GE. 70251) .AND. (LHAINPUT .LE. 70270)) THEN
563 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000loE.LHgrid'
564 c tempoararily removed on returning to original H!2000 files
565 c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN
567 c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid'
568 c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN
570 c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid'
572 WRITE(LHAPRINT,5150) LHASET
576 ELSEIF((LHAINPUT .GE. 80000) .AND. (LHAINPUT .LE. 89999)) THEN
580 IF((LHAINPUT .GE. 80050) .AND. (LHAINPUT .LE. 80051)) THEN
582 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98nlo.LHgrid'
583 ELSEIF((LHAINPUT .GE. 80060) .AND. (LHAINPUT .LE. 80060)) THEN
585 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98lo.LHgrid'
587 WRITE(LHAPRINT,5150) LHASET
594 ELSEIF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
599 IF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
601 LHANAME=LHAPATH(1:LHAPATHLEN)//'/OWPI.LHgrid'
603 WRITE(LHAPRINT,5150) LHASET
607 ELSEIF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
612 IF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
614 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SMRSPI.LHgrid'
616 WRITE(LHAPRINT,5150) LHASET
620 ELSEIF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 252)) THEN
624 IF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 251)) THEN
627 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI1.LHgrid'
628 ELSEIF((LHAINPUT .GE. 252) .AND. (LHAINPUT .LE. 252)) THEN
631 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI0.LHgrid'
633 WRITE(LHAPRINT,5150) LHASET
637 ELSEIF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
642 IF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
644 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ABFKWPI.LHgrid'
646 WRITE(LHAPRINT,5150) LHASET
653 ELSEIF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 312)) THEN
658 IF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 311)) THEN
660 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG0.LHgrid'
661 ELSEIF((LHAINPUT .GE. 312) .AND. (LHAINPUT .LE. 312)) THEN
663 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG1.LHgrid'
665 WRITE(LHAPRINT,5150) LHASET
669 ELSEIF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 324)) THEN
673 IF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 321)) THEN
677 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
678 ELSEIF((LHAINPUT .GE. 322) .AND. (LHAINPUT .LE. 322)) THEN
682 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
683 ELSEIF((LHAINPUT .GE. 323) .AND. (LHAINPUT .LE. 323)) THEN
687 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
688 ELSEIF((LHAINPUT .GE. 324) .AND. (LHAINPUT .LE. 324)) THEN
692 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
694 WRITE(LHAPRINT,5150) LHASET
698 ELSEIF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 334)) THEN
704 IF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 332)) THEN
706 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
707 ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN
710 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
711 ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN
714 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
716 WRITE(LHAPRINT,5150) LHASET
719 C...GSG/GSG96-G Family
720 ELSEIF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 345)) THEN
725 IF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 341)) THEN
727 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG1.LHgrid'
728 ELSEIF((LHAINPUT .GE. 342) .AND. (LHAINPUT .LE. 343)) THEN
730 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG0.LHgrid'
731 ELSEIF((LHAINPUT .GE. 344) .AND. (LHAINPUT .LE. 344)) THEN
733 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG961.LHgrid'
734 ELSEIF((LHAINPUT .GE. 345) .AND. (LHAINPUT .LE. 345)) THEN
736 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG960.LHgrid'
738 WRITE(LHAPRINT,5150) LHASET
742 ELSEIF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 354)) THEN
747 IF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 352)) THEN
749 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG1.LHgrid'
750 ELSEIF((LHAINPUT .GE. 353) .AND. (LHAINPUT .LE. 353)) THEN
753 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
754 ELSEIF((LHAINPUT .GE. 354) .AND. (LHAINPUT .LE. 354)) THEN
758 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
760 WRITE(LHAPRINT,5150) LHASET
764 ELSEIF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
769 IF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
771 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ACFGPG.LHgrid'
773 WRITE(LHAPRINT,5150) LHASET
777 ELSEIF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
782 IF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
784 LHANAME=LHAPATH(1:LHAPATHLEN)//'/WHITG.LHgrid'
786 WRITE(LHAPRINT,5150) LHASET
790 ELSEIF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 398)) THEN
795 IF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 392)) THEN
798 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
799 ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN
802 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
803 ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN
806 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
807 ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN
810 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
812 WRITE(LHAPRINT,5150) LHASET
815 C...Unknown Family ?! Giving up
817 WRITE(LHAPRINT,5150) LHASET
821 LHAMEMB=LHAINPUT-LHASET
822 c....Now work out if we have already called this set/member
825 if(lhaname.eq.lhanames(j).and.
826 + lhamemb.eq.lhamembers(j)) then
832 if(nsets.gt.nmxset) then
833 if(LHASILENT.ne.1) then
834 print *,'WARNING:too many sets initialised'
835 print *,'overwriting from set 1 again'
841 lhanames(iset)=lhaname
842 lhanumbers(iset)=lhainput
843 lhamembers(iset)=lhamemb
848 CALL INITPDFSETM(iset,LHANAME)
849 CALL NUMBERPDFM(iset,LHAALLMEM)
850 IF(LHASILENT .NE. 1) THEN
852 WRITE(LHAPRINT,5152) LHANAME
853 WRITE(LHAPRINT,5153) LHAALLMEM
856 IF ((LHAMEMB.LT.0) .OR. (LHAMEMB.GT.LHAALLMEM)) THEN
857 WRITE(LHAPRINT,5155) LHAMEMB
858 WRITE(LHAPRINT,5156) LHAALLMEM
862 c print *,'calling initpdf',lhamemb
863 c print *,'calling initpdfm ',iset,lhaname,lhamemb
864 c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb
865 CALL INITPDFM(iset,LHAMEMB)
867 c... the rest is done every time pdfset is called
868 c print *,'setting nset to:',iset
870 call setnmem(iset,lhamemb)
875 call GetLam4M(iset,LHAMEMB,qcdl4)
876 call GetLam5M(iset,LHAMEMB,qcdl5)
879 alphasLHA = alphasPDFM(iset,QMZ)
881 > WRITE(LHAPRINT,5158) alphasLHA
883 IF(LHAPARM(17).EQ.'LHAPDF') THEN
884 NPTYPEPDFL = 1 ! Proton PDFs
889 > WRITE(LHAPRINT,5159) QCDL4, QCDL5
891 NPTYPEPDFL = 1 ! Proton PDFs
896 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
901 C...Formats for initialization information.
902 5150 FORMAT(1X,'WRONG LHAPDF set number =',I12,' given! STOP EXE!')
903 5151 FORMAT(1X,'==============================================')
904 5152 FORMAT(1X,'PDFset name ',A80)
905 5153 FORMAT(1X,'with ',I10,' members')
906 5154 FORMAT(1X,'==== initialized. ===========================')
907 5155 FORMAT(1X,'LHAPDF problem => YOU asked for member = ',I10)
908 5156 FORMAT(1X,'Valid range is: 0 - ',I10,' Execution stopped.')
909 5157 FORMAT(1X,'Number of flavors for PDF is:',I4)
910 5158 FORMAT(1X,'Strong coupling at Mz for PDF is:',F9.5)
911 5159 FORMAT(1X,'Will use for PYTHIA QCDL4, QCDL5:',2F9.5)
916 c********************************************************************
918 c -- copy of PDFLIB to use the eks98 nuclear correction factors
920 SUBROUTINE STRUCTA(X,Q,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
921 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
922 CALL EKS98(X,Q,A,RUV,RDV,RU,RD,RS,RC,RB,RT,RG)
923 CALL STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
936 C*********************************************************************
939 C...Gives parton distributions according to the LHAPDF interface.
940 C...Two evolution codes used:
941 C... EVLCTEQ for CTEQ PDF sets
942 C... QCDNUM for Other PDF sets
944 C...Author: Dimitri Bourilkov bourilkov@mailaps.org
946 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
949 C...interface to LHAPDF library
951 SUBROUTINE STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
953 C...Double precision and integer declarations.
954 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
955 IMPLICIT INTEGER(I-N)
956 include 'parmsetup.inc'
958 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
960 C...Interface to LHAPDFLIB.
961 include 'pathsetup.inc'
962 c CHARACTER*172 LHANAME
963 INTEGER LHASET, LHAMEMB
964 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
966 c...added next 2 lines for structp fix
967 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
968 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
970 DOUBLE PRECISION QCDLHA4, QCDLHA5
972 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
974 CHARACTER*20 LHAPARM(20)
975 DOUBLE PRECISION LHAVALUE(20)
976 COMMON/LHACONTROL/LHAPARM,LHAVALUE
979 COMMON/LHAPDFE/LHAEXTRP
981 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
982 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
983 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
984 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
986 C...Interface to PDFLIB.
987 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
989 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
991 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
992 DOUBLE PRECISION X,Q,F(-6:6)
996 IF(LHAPARM(16).NE.'NOSTAT') THEN
998 IF(X .LT. XMIN) XMINNUM = XMINNUM+1.D0
999 IF(X .GT. XMAX) XMAXNUM = XMAXNUM+1.D0
1000 IF(Q2 .LT. Q2MIN) Q2MINNUM = Q2MINNUM+1.D0
1001 IF(Q2 .GT. Q2MAX) Q2MAXNUM = Q2MAXNUM+1.D0
1004 C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1005 C...freezing x*f(x,Q2) at borders.
1006 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1007 XIN=MAX(XMIN,MIN(XMAX,X))
1008 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1009 ELSE ! adventurous mode == OWN RISK !
1014 c print *,'calling evolvepdfm:',iset
1016 C...fix to allow STRUCTM to work for photon PDFs (Herwig does this)
1017 C...set P2 = 0.0d0 and IP2 = 0
1018 if(LHANUMBERS(iset).ge.300.and.LHANUMBERS(iset).le.399) then
1021 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1023 CALL EVOLVEPDFM(iset,XIN,Q,F)
1038 C*********************************************************************
1041 C...Gives parton distributions according to the LHAPDF interface.
1042 C...Used for photons.
1044 C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
1046 C...interface to LHAPDF library
1049 > (X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
1051 C...Double precision and integer declarations.
1052 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1053 IMPLICIT INTEGER(I-N)
1054 include 'parmsetup.inc'
1056 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1058 C...Interface to LHAPDFLIB.
1059 include 'pathsetup.inc'
1060 c CHARACTER*172 LHANAME
1061 INTEGER LHASET, LHAMEMB
1062 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
1064 DOUBLE PRECISION QCDLHA4, QCDLHA5
1066 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1068 CHARACTER*20 LHAPARM(20)
1069 DOUBLE PRECISION LHAVALUE(20)
1070 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1073 COMMON/LHAPDFE/LHAEXTRP
1075 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1076 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1077 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1078 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1080 C...Interface to PDFLIB.
1081 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1083 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1085 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1086 DOUBLE PRECISION X,Q,F(-6:6)
1089 IF(LHAPARM(16).NE.'NOSTAT') THEN
1090 TOTNUP = TOTNUP+1.D0
1091 IF(X .LT. XMIN) XMINNUP = XMINNUP+1.D0
1092 IF(X .GT. XMAX) XMAXNUP = XMAXNUP+1.D0
1093 IF(Q2 .LT. Q2MIN) Q2MINNUP = Q2MINNUP+1.D0
1094 IF(Q2 .GT. Q2MAX) Q2MAXNUP = Q2MAXNUP+1.D0
1097 C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1098 C...freezing x*f(x,Q2) at borders.
1100 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1101 XIN=MAX(XMIN,MIN(XMAX,X))
1102 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1103 ELSE ! adventurous mode == OWN RISK !
1107 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1122 C*********************************************************************
1125 C...For statistics ON structure functions (under/over-flows)
1127 C...Author: Dimitri Bourilkov bourilkov@mailaps.org
1130 C...first introduced in v4.0 28-Apr-2005
1135 C...Double precision and integer declarations.
1136 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1137 IMPLICIT INTEGER(I-N)
1138 C...Interface to LHAPDFLIB.
1139 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1140 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1141 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1142 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1146 PRINT *,'===== PDFSTA statistics for PDF under/over-flows ===='
1148 PRINT *,'====== STRUCTM statistics for nucleon/pion PDFs ====='
1150 PRINT *,' total # of calls ',TOTNUM
1151 IF(TOTNUM .GT. 0.D0) THEN
1152 PERCBELOW = 100.D0*XMINNUM/TOTNUM
1153 PERCABOVE = 100.D0*XMAXNUM/TOTNUM
1154 PRINT *,' X below PDF min ',XMINNUM,' or ',PERCBELOW, ' %'
1155 PRINT *,' X above PDF max ',XMAXNUM,' or ',PERCABOVE, ' %'
1156 PERCBELOW = 100.D0*Q2MINNUM/TOTNUM
1157 PERCABOVE = 100.D0*Q2MAXNUM/TOTNUM
1158 PRINT *,' Q2 below PDF min ',Q2MINNUM,' or ',PERCBELOW, ' %'
1159 PRINT *,' Q2 above PDF max ',Q2MAXNUM,' or ',PERCABOVE, ' %'
1162 PRINT *,'========= STRUCTP statistics for photon PDFs ========'
1164 PRINT *,' total # of calls ',TOTNUP
1165 IF(TOTNUP .GT. 0.D0) THEN
1166 PERCBELOW = 100.D0*XMINNUP/TOTNUP
1167 PERCABOVE = 100.D0*XMAXNUP/TOTNUP
1168 PRINT *,' X below PDF min ',XMINNUP,' or ',PERCBELOW, ' %'
1169 PRINT *,' X above PDF max ',XMAXNUP,' or ',PERCABOVE, ' %'
1170 PERCBELOW = 100.D0*Q2MINNUP/TOTNUP
1171 PERCABOVE = 100.D0*Q2MAXNUP/TOTNUP
1172 PRINT *,' Q2 below PDF min ',Q2MINNUP,' or ',PERCBELOW, ' %'
1173 PRINT *,' Q2 above PDF max ',Q2MAXNUP,' or ',PERCABOVE, ' %'
1179 **********************************************************************
1184 * Revision 1.2 2006/11/01 12:25:47 hristov
1185 * Using LHAPDF instead of PDF
1187 * Revision 1.1 2006/08/07 09:09:40 morsch
1188 * LHAPDF 5.2.2 source code.
1190 * Revision 1.7 2005/12/02 14:50:54 whalley
1191 * Changes for new CTEQ code/AB sets
1193 * Revision 1.6 2005/10/18 15:35:48 whalley
1194 * fix to allow LHAPATH to be user defined as well as lhapdf-config
1196 * Revision 1.5 2005/10/18 11:47:48 whalley
1197 * Change to only set LHAPATH once per run
1199 * Revision 1.1.1.2 1996/10/30 08:29:06 cernlib
1202 * Revision 1.1.1.1 1996/04/12 15:29:26 plothow
1206 SUBROUTINE PFTOPDG(DX,DSCALE,DXPDF)
1208 Cinclude "pdf/expdp.inc"
1210 + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL,
1212 C... call STRUCTM in PDFLIB to get flavour content
1213 CALL STRUCTM(DX,DSCALE,
1214 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
1215 C... convert flavour convention of PDFLIB to PDG convention
1217 DXPDF(1) = DDNV + DDSEA
1218 DXPDF(2) = DUPV + DUSEA
1232 ****************************************************************************
1233 subroutine setPDFpath(pathname)
1234 implicit real*8 (A-H,O-Z)
1235 include 'parmsetup.inc'
1236 character*(*) pathname
1237 include 'pathsetup.inc'
1238 c character*132 lhapath
1239 common/LHAPDFC/lhapath
1240 character*20 lhaparm(20)
1242 common/LHACONTROL/lhaparm,lhavalue
1243 lhaparm(20) = 'LHAPATH'
1244 do j=1,lnblnk(lhapath)
1250 ***********************************************************************
1251 subroutine lhaset(lhaparm2,lhavalue2)
1252 implicit real*8 (a-h,o-z)
1253 character*20 lhaparm(20),lhaparm2(20)
1254 real*8 lhavalue(20),lhavalue2(20)
1255 common/LHACONTROL/lhaparm,lhavalue
1257 lhaparm(j)=lhaparm2(j)
1258 lhavalue(j)=lhavalue2(j)
1262 ******************************************************************
1263 subroutine setlhaparm(lparm)
1264 implicit real*8 (a-h,o-z)
1266 character*20 lhaparm(20)
1268 common/LHACONTROL/lhaparm,lhavalue
1269 if(lparm.eq.'NOSTAT') then
1270 lhaparm(16)='NOSTAT'
1271 else if (lparm.eq.'16') then
1273 else if (lparm.eq.'LHAPDF') then
1274 lhaparm(17)='LHAPDF'
1275 else if (lparm.eq.'17') then
1277 else if (lparm.eq.'EXTRAPOLATE') then
1278 lhaparm(18)='EXTRAPOLATE'
1279 else if (lparm.eq.'18') then
1281 else if (lparm.eq.'SILENT') then
1282 lhaparm(19)='SILENT'
1283 else if (lparm.eq.'LOWKEY') then
1284 lhaparm(19)='LOWKEY'
1285 else if (lparm.eq.'19') then
1288 print *,'WARNING from SetLHAPARM - value',lparm,'
1293 ***************************************************************