]> git.uio.no Git - u/mrichter/AliRoot.git/blame - LHAPDF/lhapdf5.2.2/lhaglue.f
Using LHAPDF instead of PDF
[u/mrichter/AliRoot.git] / LHAPDF / lhapdf5.2.2 / lhaglue.f
CommitLineData
3c5d1739 1C*********************************************************************
2
3C... LHAGLUE Interface to LHAPDF library of modern parton
4C... density functions (PDF) with uncertainties
5C...
6C...Authors for v4: Dimitri Bourilkov, Craig Group, Mike Whalley
7C...
8C...Authors for v3: Dimitri Bourilkov, Craig Group, Mike Whalley
9C...
10C...Author for v1 and v2: Dimitri Bourilkov bourilkov@mailaps.org
11C... University of Florida
12C...
13C...HERWIG interface by Dimitri Bourilkov and Craig Group
14C...
15C...New numbering scheme and upgrade for LHAPDF v2.1
16C...by Dimitri Bourilkov and Mike Whalley
17C...
18C...For more information, or when you cite this interface, currently
19C...the official reference is:
20C...D.Bourilkov, "Study of Parton Density Function Uncertainties with
21C...LHAPDF and PYTHIA at LHC", hep-ph/0305126.
22C...
23C...The official LHAPDF page is:
24C...
25C... http://durpdg.dur.ac.uk/lhapdf/index.html
26C...
27C...The interface contains four subroutines (similar to PDFLIB).
28C...It can be used seamlessly by Monte Carlo generators
29C...interfaced to PDFLIB or in stand-alone mode.
30C...
31C... For initialization (called once)
32C...
33C... PDFSET(PARM,VALUE)
34C...
35C... For the proton/pion structure functions
36C...
37C... STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
38C...
39C... For the photon structure functions
40C...
41C... STRUCTP(X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
42C...
43C... For statistics ON structure functions (under/over-flows)
44C...
45C... PDFSTA
46C...
47C...This interface can be invoked in 3 ways depending
48C...on the value of PARM(1) provided by the user when
49C...calling PDFSET(PARM,VALUE):
50C...
51C... For PYTHIA: PARM(1).EQ.'NPTYPE'
52C... (this is set automatically by PYTHIA)
53C...
54C... For HERWIG: PARM(1).EQ.'HWLHAPDF'
55C... (set by the USER e.g. in the main program like this:
56C... AUTPDF(1) = 'HWLHAPDF'
57C... AUTPDF(2) = 'HWLHAPDF' )
58C...
59C... For Stand-alone: PARM(1).EQ.'DEFAULT'
60C... (can be used for PDF studies or when interfacing
61C... new generators)
62C...
63C...The LHAPDF set/member is selected depending on the value of:
64C...
65C... PYTHIA: ABS(MSTP(51)) - proton
66C... ABS(MSTP(53)) - pion
67C... ABS(MSTP(55)) - photon
68C...
69C... HERWIG: ABS(INT(VALUE(1)))
70C...
71C... STAND-ALONE: ABS(INT(VALUE(1)))
72C...
73C...
74C... CONTROL switches:
75C... ==================
76C...
77C... THE LOCATION OF THE LHAPDF LIBRARY HAS TO BE SPECIFIED
78C... AS DESCRIBED BELOW (the rest is optional)
79C...
80C... if the user does nothing, sensible defaults
81C... are active; to change the behaviour, the corresponding
82C... values of LHAPARM() should be set to the values given below
83C...
84C... Location of the LHAPDF library of PDFs (pathname):
85C... uses common block /LHAPDFC/
86C...
87C... If the user does nothing => default = subdir PDFsets of the
88C... current directory (can be real subdir
89C... OR a soft link to the real location)
90C... If the user sets LHAPATH => supplied by the USER who defines the
91C... path in common block COMMON/LHAPDFC/LHAPATH
92C... BEFORE calling PDFSET
93C...
94C... Other controls:
95C... ===============
96C... use common block /LHACONTROL/
97C...
98C... Collect statistics on under/over-flow requests for PDFs
99C... outside their validity ranges in X and Q**2
100C... (call PDFSTA at end of run to print it out)
101C...
102C... LHAPARM(16).EQ.'NOSTAT' => No statistics (faster)
103C... LHAPARM(16).NE.'NOSTAT' => Default: collect statistics
104C...
105C... Option to use the values for the strong coupling alpha_s
106C... as computed in LHAPDF in the MC generator
107C... (to ensure uniformity between the MC generator and the PDF set)
108C... WARNING: implemented ONLY for PYTHIA in LHAPDFv4
109C...
110C... LHAPARM(17).EQ.'LHAPDF' => Use alpha_s from LHAPDF
111C... LHAPARM(17).NE.'LHAPDF' => Default (same as LHAPDF v1/v3)
112C...
113C... Extrapolation of PDFs outside LHAPDF validity range given by
114C... [Xmin,Xmax] and [Q2min,Q2max]; DEFAULT => PDFs "frozen" at the
115C... boundaries
116C...
117C... LHAPARM(18).EQ.'EXTRAPOLATE' => Extrapolate PDFs on OWN RISK
118C... WARNING: Crazy values can be returned
119C...
120C... Printout of initialization information in PDFSET (by default)
121C...
122C... LHAPARM(19).EQ.'SILENT' => No printout (silent mode)
123C... LHAPARM(19).EQ.'LOWKEY' => Print 5 times (almost silent mode)
124C...
125C...
126C...v5.0 06-Oct-2005 Major change to allow multiset-initializations
127C...v4.0 28-Apr-2005 PDFSTA routine; option to use Alfa_s from LHAPDF
128C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
129C...v3.1 26-Apr-2004 New numbering scheme, updated for LHAPDF v2/v3
130C...v3.0 23-Jan-2004 HERWIG interface added
131C...v2.0 20-Sep-2003 PDFLIB style adopted
132C...v1.0 05-Mar-2003 First working version from PYTHIA to LHAPDF v1
133C...
134C...interface to LHAPDF library
135
136C*********************************************************************
137
138 BLOCK DATA LHAPDFSET
139c... additions for multiset use
140 include 'parmsetup.inc'
141 include 'pathsetup.inc'
142c 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
147 data nsets/0/
148c...
149c CHARACTER*132 LHAPATH
150 COMMON/LHAPDFC/LHAPATH
151 SAVE /LHAPDFC/
152 DATA LHAPATH/'PDFsets'/ ! Default = PDFsets (below current dir)
153 CHARACTER*20 LHAPARM(20)
154 DOUBLE PRECISION LHAVALUE(20)
155 COMMON/LHACONTROL/LHAPARM,LHAVALUE
156 SAVE/LHACONTROL/
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
163 SAVE/LHAGLSTA/
164 DATA XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM/5*0.D0/
165 DATA XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP/5*0.D0/
166 END
167
168C...PDFSET
169C...Initialization for use of parton distributions
170C... according to the LHAPDF interface.
171C...
172C...v4.0 28-Apr-2005 Option to use Alfa_s from LHAPDF
173C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
174C...v3.1 26-Apr-2004 New numbering scheme
175C...v3.0 23-Jan-2004 HERWIG interface added
176C...
177C...interface to LHAPDF library
178
179 SUBROUTINE PDFSET(PARM,VALUE)
180C...Double precision and integer declarations.
181 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
182 IMPLICIT INTEGER(I-N)
183c...additions for multiset use
184 include 'parmsetup.inc'
185 include 'pathsetup.inc'
186c 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
191C...Commonblocks.
192 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
193 SAVE /PYDAT1/
194 COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200)
195 SAVE /PYPARS/
196c... following 2 for earlier Pythia versions
197 COMMON/LUDAT1/MSTU5(200),PARU5(200),MSTJ5(200),PARJ5(200)
198 SAVE /LUDAT1/
199C...Interface to LHAPDFLIB.
200c CHARACTER*172 LHANAME
201 INTEGER LHASET, LHAMEMB
202 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
203 SAVE /LHAPDF/
204 DOUBLE PRECISION QCDLHA4, QCDLHA5
205 INTEGER NFLLHA
206 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
207 SAVE /LHAPDFR/
208c CHARACTER*132 LHAPATH
209 COMMON/LHAPDFC/LHAPATH
210 SAVE /LHAPDFC/
211 CHARACTER*20 LHAPARM(20)
212 DOUBLE PRECISION LHAVALUE(20)
213 COMMON/LHACONTROL/LHAPARM,LHAVALUE
214 SAVE/LHACONTROL/
215 INTEGER LHAEXTRP
216 COMMON/LHAPDFE/LHAEXTRP
217 SAVE /LHAPDFE/
218 INTEGER LHASILENT
219 COMMON/LHASILENT/LHASILENT
220 SAVE /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
225 SAVE/LHAGLSTA/
226C...Interface to PDFLIB.
227 COMMON/W50511/ NPTYPEPDFL,NGROUPPDFL,NSETPDFL,MODEPDFL,
228 > NFLPDFL,LOPDFL,TMASPDFL
229 SAVE /W50511/
230 DOUBLE PRECISION TMASPDFL
231C...Interface to PDFLIB.
232 COMMON/W50512/QCDL4,QCDL5
233 SAVE /W50512/
234 DOUBLE PRECISION QCDL4,QCDL5
235C...Interface to PDFLIB.
236 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
237 SAVE /W50513/
238 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
239C...Local arrays and character variables (NOT USED here DB)
240 CHARACTER*20 PARM(20)
241 DOUBLE PRECISION VALUE(20)
242 INTEGER LHAPATHLEN
243 INTEGER LHAINPUT
244 INTEGER LHASELECT
245 INTEGER LHAPRINT
246 INTEGER LHAONCE
247 INTEGER LHAFIVE
248 SAVE LHAONCE
249 SAVE LHAFIVE
250 DATA LHAONCE/0/
251 DATA LHAFIVE/0/
252 logical first
253 data first/.TRUE./
254 save first
255
af4ebdd2 256 INTEGER LNROOT
257 CHARACTER*1000 CHROOT
258 CHROOT=' '
259
3c5d1739 260 if(first .AND. (LHAPARM(20).NE.'LHAPATH')) then
261c...overide the default PDFsets path
af4ebdd2 262c ... check first if the environmental variable LHAPATH is set
263 call getenv('LHAPATH',lhapath)
264 if(lhapath.eq.'') then
265C The environment variable LHAPATH is not set.
266C Take the data from $ALICE_ROOT/LHAPDF/PDFsets
267 CALL GETENV('ALICE_ROOT',CHROOT)
268 LNROOT = LNBLNK(CHROOT)
269 IF(LNROOT.LE.0) THEN
270 LHAPATH='PDFsets' ! Default value
271 ELSE
272 LHAPATH=CHROOT(1:LNROOT)//'/LHAPDF/PDFsets'
273 ENDIF
274 endif
3c5d1739 275 first=.FALSE.
276 endif
277c
278*
279C...Init
280 LHAEXTRP = 0
281 IF(LHAPARM(18).EQ.'EXTRAPOLATE')
282 > THEN ! Extrapolate PDFs on own risk
283 LHAEXTRP = 1
284 ENDIF
285 LHASILENT = 0
286 IF(LHAPARM(19).EQ.'SILENT') THEN ! No printout (silent MODE)
287 LHASILENT = 1
288 ELSEIF(LHAPARM(19).EQ.'LOWKEY') THEN ! Print 5 times (lowkey MODE)
289 IF(LHAFIVE .LT. 6) THEN
290 LHAFIVE = LHAFIVE + 1
291 ELSE
292 LHASILENT = 1
293 ENDIF
294 ENDIF
295 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
296 if(MSTP(181).ge.6) then
297 LHAPRINT = MSTU(11)
298 else
299 LHAPRINT = MSTU5(11)
300 endif
301 IF(VALUE(1) .EQ. 1) THEN ! nucleon
302 LHAINPUT = ABS(MSTP(51))
303 ELSEIF(VALUE(1) .EQ. 2) THEN ! pion
304 LHAINPUT = ABS(MSTP(53))
305 ELSEIF(VALUE(1) .EQ. 3) THEN ! photon
306 LHAINPUT = ABS(MSTP(55))
307 ENDIF
308 IF(LHASILENT .NE. 1)
309 > PRINT *,'==== PYTHIA WILL USE LHAPDF ===='
310 ELSEIF(PARM(1).EQ.'HWLHAPDF') THEN ! HERWIG
311 LHAINPUT = ABS(INT(VALUE(1)))
312 IF(LHAONCE.EQ.LHAINPUT) RETURN
313 IF(LHASILENT .NE. 1)
314 > PRINT *,'==== HERWIG WILL USE LHAPDF ===='
315 LHAPRINT = 6
316 LHAONCE = LHAINPUT
317 ELSEIF(PARM(1).EQ.'DEFAULT') THEN ! Stand-alone
318 LHAINPUT = ABS(INT(VALUE(1)))
319 IF(LHAONCE.EQ.LHAINPUT) RETURN
320 IF(LHASILENT .NE. 1)
321 > PRINT *,'==== STAND-ALONE LHAGLUE MODE TO USE LHAPDF ===='
322 LHAPRINT = 6
323 LHAONCE = LHAINPUT
324 ELSE
325 PRINT *,'== UNKNOWN LHAPDF INTERFACE CALL! STOP EXECUTION! =='
326 STOP
327 ENDIF
328C...Initialize parton distributions: LHAPDFLIB.
329 LHAPATHLEN=INDEX(LHAPATH,' ')-1
330 LHASET = LHAINPUT
331 XMIN = 1.0D-6 ! X_min for current PDF set
332 XMAX = 1.0D0 ! X_max for current PDF set
333 Q2MIN = 1.0D0**2 ! Q**2_min scale for current PDF set [GeV]
334 Q2MAX = 1.0D5**2 ! Q**2_max scale for current PDF set [GeV]
335C...
336C...Protons
337C...
338C...CTEQ Family
339 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 19999)) THEN
340 Q2MAX = 1.0D08
341 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 10040)) THEN
342 LHASET = 10000
343 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6.LHpdf'
344 Q2MIN = 1.69D0
345 ELSEIF((LHAINPUT .GE. 10041) .AND. (LHAINPUT .LE. 10041)) THEN
346 LHASET = 10041
347 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6l.LHpdf'
348 Q2MIN = 1.69D0
349 ELSEIF((LHAINPUT .GE. 10042) .AND. (LHAINPUT .LE. 10042)) THEN
350 LHASET = 10042
351 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6ll.LHpdf'
352 Q2MIN = 1.69D0
353 ELSEIF((LHAINPUT .GE. 10050) .AND. (LHAINPUT .LE. 10090)) THEN
354 LHASET = 10050
355 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6mE.LHgrid'
356 Q2MIN = 1.69D0
357 ELSEIF((LHAINPUT .GE. 10100) .AND. (LHAINPUT .LE. 10140)) THEN
358 LHASET = 10100
359 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHpdf'
360 Q2MIN = 1.69D0
361 ELSEIF((LHAINPUT .GE. 10150) .AND. (LHAINPUT .LE. 10190)) THEN
362 LHASET = 10150
363 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHgrid'
364 Q2MIN = 1.69D0
365 ELSEIF((LHAINPUT .GE. 10250) .AND. (LHAINPUT .LE. 10269)) THEN
366 LHASET = 10250
367 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6AB.LHgrid'
368 Q2MIN = 1.69D0
369 ELSEIF((LHAINPUT .GE. 19050) .AND. (LHAINPUT .LE. 19050)) THEN
370 LHASET = 19050
371 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m.LHgrid'
372 XMIN=1.0D-5
373 ELSEIF((LHAINPUT .GE. 19051) .AND. (LHAINPUT .LE. 19051)) THEN
374 LHASET = 19051
375 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m1.LHgrid'
376 XMIN=1.0D-5
377 ELSEIF((LHAINPUT .GE. 19060) .AND. (LHAINPUT .LE. 19060)) THEN
378 LHASET = 19060
379 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5d.LHgrid'
380 XMIN=1.0D-5
381 ELSEIF((LHAINPUT .GE. 19070) .AND. (LHAINPUT .LE. 19070)) THEN
382 LHASET = 19070
383 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5l.LHgrid'
384 XMIN=1.0D-5
385 ELSEIF((LHAINPUT .GE. 19150) .AND. (LHAINPUT .LE. 19150)) THEN
386 LHASET = 19150
387 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4m.LHgrid'
388 Q2MIN = 2.56D0
389 XMIN=1.0D-5
390 ELSEIF((LHAINPUT .GE. 19160) .AND. (LHAINPUT .LE. 19160)) THEN
391 LHASET = 19160
392 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4d.LHgrid'
393 Q2MIN = 2.56D0
394 XMIN=1.0D-5
395 ELSEIF((LHAINPUT .GE. 19170) .AND. (LHAINPUT .LE. 19170)) THEN
396 LHASET = 19170
397 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4l.LHgrid'
398 Q2MIN = 2.56D0
399 XMIN=1.0D-5
400 ELSE
401 WRITE(LHAPRINT,5150) LHASET
402 STOP
403 ENDIF
404C...MRST Family
405 ELSEIF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 29999)) THEN
406 Q2MIN = 1.25D0
407 Q2MAX = 1.0D07
408 XMIN = 1.0D-5
409 IF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 20004)) THEN
410 LHASET = 20000
411 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHpdf'
412 ELSEIF((LHAINPUT .GE. 20050) .AND. (LHAINPUT .LE. 20054)) THEN
413 LHASET = 20050
414 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHgrid'
415 ELSEIF((LHAINPUT .GE. 20060) .AND. (LHAINPUT .LE. 20061)) THEN
416 LHASET = 20060
417 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001lo.LHgrid'
418 ELSEIF((LHAINPUT .GE. 20070) .AND. (LHAINPUT .LE. 20074)) THEN
419 LHASET = 20070
420 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nnlo.LHgrid'
421 ELSEIF((LHAINPUT .GE. 20100) .AND. (LHAINPUT .LE. 20130)) THEN
422 LHASET = 20100
423 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHpdf'
424 ELSEIF((LHAINPUT .GE. 20150) .AND. (LHAINPUT .LE. 20180)) THEN
425 LHASET = 20150
426 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHgrid'
427 ELSEIF((LHAINPUT .GE. 20200) .AND. (LHAINPUT .LE. 20201)) THEN
428 LHASET = 20200
429 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHpdf'
430 ELSEIF((LHAINPUT .GE. 20250) .AND. (LHAINPUT .LE. 20251)) THEN
431 LHASET = 20250
432 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHgrid'
433 ELSEIF((LHAINPUT .GE. 20270) .AND. (LHAINPUT .LE. 20271)) THEN
434 LHASET = 20270
435 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nnlo.LHgrid'
436 ELSEIF((LHAINPUT .GE. 20300) .AND. (LHAINPUT .LE. 20301)) THEN
437 LHASET = 20300
438 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHpdf'
439 Q2MIN = 10.0D0
440 XMIN = 1.0D-3
441 ELSEIF((LHAINPUT .GE. 20350) .AND. (LHAINPUT .LE. 20351)) THEN
442 LHASET = 20350
443 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHgrid'
444 Q2MIN = 10.0D0
445 XMIN = 1.0D-3
446 ELSEIF((LHAINPUT .GE. 20370) .AND. (LHAINPUT .LE. 20371)) THEN
447 LHASET = 20370
448 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnnlo.LHgrid'
449 Q2MIN = 7.0D0
450 XMIN = 1.0D-3
451 ELSEIF((LHAINPUT .GE. 20400) .AND. (LHAINPUT .LE. 20401)) THEN
452 LHASET = 20400
453 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHpdf'
454 ELSEIF((LHAINPUT .GE. 20406) .AND. (LHAINPUT .LE. 20407)) THEN
455 LHASET = 20406
456 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHpdf'
457 ELSEIF((LHAINPUT .GE. 20408) .AND. (LHAINPUT .LE. 20409)) THEN
458 LHASET = 20408
459 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHpdf'
460 ELSEIF((LHAINPUT .GE. 20450) .AND. (LHAINPUT .LE. 20451)) THEN
461 LHASET = 20450
462 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHgrid'
463 ELSEIF((LHAINPUT .GE. 20452) .AND. (LHAINPUT .LE. 20453)) THEN
464 LHASET = 20452
465 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3lo.LHgrid'
466 ELSEIF((LHAINPUT .GE. 20454) .AND. (LHAINPUT .LE. 20455)) THEN
467 LHASET = 20454
468 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4lo.LHgrid'
469 ELSEIF((LHAINPUT .GE. 20456) .AND. (LHAINPUT .LE. 20457)) THEN
470 LHASET = 20456
471 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHgrid'
472 ELSEIF((LHAINPUT .GE. 20458) .AND. (LHAINPUT .LE. 20459)) THEN
473 LHASET = 20458
474 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHgrid'
475 ELSEIF((LHAINPUT .GE. 20470) .AND. (LHAINPUT .LE. 20471)) THEN
476 LHASET = 20470
477 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nnlo.LHgrid'
478 ELSEIF((LHAINPUT .GE. 29000) .AND. (LHAINPUT .LE. 29003)) THEN
479 LHASET = 29000
480 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98.LHpdf'
481 ELSEIF((LHAINPUT .GE. 29040) .AND. (LHAINPUT .LE. 29045)) THEN
482 LHASET = 29040
483 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98lo.LHgrid'
484 ELSEIF((LHAINPUT .GE. 29050) .AND. (LHAINPUT .LE. 29055)) THEN
485 LHASET = 29050
486 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98nlo.LHgrid'
487 ELSEIF((LHAINPUT .GE. 29060) .AND. (LHAINPUT .LE. 29065)) THEN
488 LHASET = 29060
489 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98dis.LHgrid'
490 ELSEIF((LHAINPUT .GE. 29070) .AND. (LHAINPUT .LE. 29071)) THEN
491 LHASET = 29070
492 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98ht.LHgrid'
493 ELSE
494 WRITE(LHAPRINT,5150) LHASET
495 STOP
496 ENDIF
497C...Fermi Family
498 ELSEIF((LHAINPUT .GE. 30000) .AND. (LHAINPUT .LE. 39999)) THEN
499 IF((LHAINPUT .GE. 30100) .AND. (LHAINPUT .LE. 30200)) THEN
500 LHASET = 30100
501 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_100.LHpdf'
502 ELSEIF((LHAINPUT .GE. 31000) .AND. (LHAINPUT .LE. 32000)) THEN
503 LHASET = 31000
504 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_1000.LHpdf'
505 ELSE
506 WRITE(LHAPRINT,5150) LHASET
507 STOP
508 ENDIF
509C...Alekhin Family
510 ELSEIF((LHAINPUT .GE. 40000) .AND. (LHAINPUT .LE. 49999)) THEN
511 IF((LHAINPUT .GE. 40100) .AND. (LHAINPUT .LE. 40200)) THEN
512 LHASET = 40100
513 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_100.LHpdf'
514 ELSEIF((LHAINPUT .GE. 41000) .AND. (LHAINPUT .LE. 41999)) THEN
515 LHASET = 41000
516 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_1000.LHpdf'
517 ELSEIF((LHAINPUT .GE. 40350) .AND. (LHAINPUT .LE. 40367)) THEN
518 LHASET = 40350
519 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_lo.LHgrid'
520 XMIN = 1.0D-7
521 Q2MIN = 0.8D0
522 Q2MAX = 2.0D08
523 ELSEIF((LHAINPUT .GE. 40450) .AND. (LHAINPUT .LE. 40467)) THEN
524 LHASET = 40450
525 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nlo.LHgrid'
526 XMIN = 1.0D-7
527 Q2MIN = 0.8D0
528 Q2MAX = 2.0D08
529 ELSEIF((LHAINPUT .GE. 40550) .AND. (LHAINPUT .LE. 40567)) THEN
530 LHASET = 40550
531 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nnlo.LHgrid'
532 XMIN = 1.0D-7
533 Q2MIN = 0.8D0
534 Q2MAX = 2.0D08
535 ELSE
536 WRITE(LHAPRINT,5150) LHASET
537 STOP
538 ENDIF
539C...Botje Family
540 ELSEIF((LHAINPUT .GE. 50000) .AND. (LHAINPUT .LE. 59999)) THEN
541 IF((LHAINPUT .GE. 50100) .AND. (LHAINPUT .LE. 50200)) THEN
542 LHASET = 50100
543 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_100.LHpdf'
544 ELSEIF((LHAINPUT .GE. 51000) .AND. (LHAINPUT .LE. 51999)) THEN
545 LHASET = 51000
546 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_1000.LHpdf'
547 ELSE
548 WRITE(LHAPRINT,5150) LHASET
549 STOP
550 ENDIF
551C...ZEUS Family
552 ELSEIF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 69999)) THEN
553 Q2MIN = 0.3D0
554 Q2MAX = 2.0D05
555 IF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 60022)) THEN
556 LHASET = 60000
557 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_TR.LHpdf'
558 ELSEIF((LHAINPUT .GE. 60100) .AND. (LHAINPUT .LE. 60122)) THEN
559 LHASET = 60100
560 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_ZM.LHpdf'
561 ELSEIF((LHAINPUT .GE. 60200) .AND. (LHAINPUT .LE. 60222)) THEN
562 LHASET = 60200
563 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_FF.LHpdf'
564 ELSEIF((LHAINPUT .GE. 60300) .AND. (LHAINPUT .LE. 60322)) THEN
565 LHASET = 60300
566 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2005_ZJ.LHpdf'
567 ELSE
568 WRITE(LHAPRINT,5150) LHASET
569 STOP
570 ENDIF
571C...H1 Family
572 ELSEIF((LHAINPUT .GE. 70000) .AND. (LHAINPUT .LE. 79999)) THEN
573 Q2MIN = 1.5D0
574 Q2MAX = 3.5D04
575 XMIN = 5.7D-5
576 IF((LHAINPUT .GE. 70050) .AND. (LHAINPUT .LE. 70050)) THEN
577 LHASET = 70050
578 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000ms.LHgrid'
579 ELSEIF((LHAINPUT .GE. 70051) .AND. (LHAINPUT .LE. 70070)) THEN
580 LHASET = 70050
581 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000msE.LHgrid'
582 ELSEIF((LHAINPUT .GE. 70150) .AND. (LHAINPUT .LE. 70150)) THEN
583 LHASET = 70150
584 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000dis.LHgrid'
585 ELSEIF((LHAINPUT .GE. 70151) .AND. (LHAINPUT .LE. 70170)) THEN
586 LHASET = 70150
587 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000disE.LHgrid'
588 ELSEIF((LHAINPUT .GE. 70250) .AND. (LHAINPUT .LE. 70250)) THEN
589 LHASET = 70250
590 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo.LHgrid'
591 ELSEIF((LHAINPUT .GE. 70251) .AND. (LHAINPUT .LE. 70270)) THEN
592 LHASET = 70250
593 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000loE.LHgrid'
594c tempoararily removed on returning to original H!2000 files
595c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN
596c LHASET = 70350
597c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid'
598c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN
599c LHASET = 70350
600c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid'
601 ELSE
602 WRITE(LHAPRINT,5150) LHASET
603 STOP
604 ENDIF
605C...GRV Family
606 ELSEIF((LHAINPUT .GE. 80000) .AND. (LHAINPUT .LE. 89999)) THEN
607 Q2MIN = 0.8D0
608 Q2MAX = 2.0D06
609 XMIN = 1.0D-9
610 IF((LHAINPUT .GE. 80050) .AND. (LHAINPUT .LE. 80051)) THEN
611 LHASET = 80050
612 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98nlo.LHgrid'
613 ELSEIF((LHAINPUT .GE. 80060) .AND. (LHAINPUT .LE. 80060)) THEN
614 LHASET = 80060
615 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98lo.LHgrid'
616 ELSE
617 WRITE(LHAPRINT,5150) LHASET
618 STOP
619 ENDIF
620C...
621C...Pions
622C...
623C...OW-PI Family
624 ELSEIF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
625 Q2MIN = 4.0D0
626 Q2MAX = 2.0D03
627 XMIN = 5.0D-03
628 XMAX = 0.9998D0
629 IF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
630 LHASET = 210
631 LHANAME=LHAPATH(1:LHAPATHLEN)//'/OWPI.LHgrid'
632 ELSE
633 WRITE(LHAPRINT,5150) LHASET
634 STOP
635 ENDIF
636C...SMRS-PI Family
637 ELSEIF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
638 Q2MIN = 5.0D0
639 Q2MAX = 1.31D06
640 XMIN = 1.0D-05
641 XMAX = 0.9998D0
642 IF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
643 LHASET = 230
644 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SMRSPI.LHgrid'
645 ELSE
646 WRITE(LHAPRINT,5150) LHASET
647 STOP
648 ENDIF
649C...GRV-PI Family
650 ELSEIF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 252)) THEN
651 Q2MAX = 1.00D06
652 XMIN = 1.0D-05
653 XMAX = 0.9998D0
654 IF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 251)) THEN
655 Q2MIN = 3.0D-1
656 LHASET = 250
657 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI1.LHgrid'
658 ELSEIF((LHAINPUT .GE. 252) .AND. (LHAINPUT .LE. 252)) THEN
659 Q2MIN = 2.5D-1
660 LHASET = 252
661 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI0.LHgrid'
662 ELSE
663 WRITE(LHAPRINT,5150) LHASET
664 STOP
665 ENDIF
666C...ABFKW-PI Family
667 ELSEIF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
668 Q2MIN = 2.0D0
669 Q2MAX = 1.00D08
670 XMIN = 1.0D-03
671 XMAX = 0.9998D0
672 IF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
673 LHASET = 260
674 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ABFKWPI.LHgrid'
675 ELSE
676 WRITE(LHAPRINT,5150) LHASET
677 STOP
678 ENDIF
679C...
680C...Photons
681C...
682C...DO-G Family
683 ELSEIF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 312)) THEN
684 Q2MIN = 1.0D01
685 Q2MAX = 1.00D04
686 XMIN = 1.0D-05
687 XMAX = 0.9D0
688 IF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 311)) THEN
689 LHASET = 310
690 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG0.LHgrid'
691 ELSEIF((LHAINPUT .GE. 312) .AND. (LHAINPUT .LE. 312)) THEN
692 LHASET = 312
693 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG1.LHgrid'
694 ELSE
695 WRITE(LHAPRINT,5150) LHASET
696 STOP
697 ENDIF
698C...DG-G Family
699 ELSEIF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 324)) THEN
700 XMIN = 1.0D-05
701 XMAX = 0.9998D0
702 LHASET = 320
703 IF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 321)) THEN
704 Q2MIN = 1.0D0
705 Q2MAX = 1.0D04
706c LHASET = 320
707 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
708 ELSEIF((LHAINPUT .GE. 322) .AND. (LHAINPUT .LE. 322)) THEN
709 Q2MIN = 1.0D0
710 Q2MAX = 5.0D01
711c LHASET = 322
712 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
713 ELSEIF((LHAINPUT .GE. 323) .AND. (LHAINPUT .LE. 323)) THEN
714 Q2MIN = 2.0D1
715 Q2MAX = 5.0D02
716c LHASET = 323
717 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
718 ELSEIF((LHAINPUT .GE. 324) .AND. (LHAINPUT .LE. 324)) THEN
719 Q2MIN = 2.0D2
720 Q2MAX = 1.0D04
721c LHASET = 324
722 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
723 ELSE
724 WRITE(LHAPRINT,5150) LHASET
725 STOP
726 ENDIF
727C...LAC/GAL-G Family
728 ELSEIF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 334)) THEN
729 Q2MIN = 4.0D00
730 Q2MAX = 1.0D05
731 XMIN = 1.0D-04
732 XMAX = 0.9998D0
733 LHASET = 330
734 IF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 332)) THEN
735c LHASET = 330
736 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
737 ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN
738 Q2MIN = 1.0D00
739c LHASET = 333
740 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
741 ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN
742 Q2MIN = 4.0D00
743c LHASET = 334
744 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
745 ELSE
746 WRITE(LHAPRINT,5150) LHASET
747 STOP
748 ENDIF
749C...GSG/GSG96-G Family
750 ELSEIF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 345)) THEN
751 Q2MIN = 5.3D00
752 Q2MAX = 1.0D08
753 XMIN = 5.0D-04
754 XMAX = 0.9998D0
755 IF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 341)) THEN
756 LHASET = 340
757 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG1.LHgrid'
758 ELSEIF((LHAINPUT .GE. 342) .AND. (LHAINPUT .LE. 343)) THEN
759 LHASET = 342
760 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG0.LHgrid'
761 ELSEIF((LHAINPUT .GE. 344) .AND. (LHAINPUT .LE. 344)) THEN
762 LHASET = 344
763 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG961.LHgrid'
764 ELSEIF((LHAINPUT .GE. 345) .AND. (LHAINPUT .LE. 345)) THEN
765 LHASET = 345
766 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG960.LHgrid'
767 ELSE
768 WRITE(LHAPRINT,5150) LHASET
769 STOP
770 ENDIF
771C...GRV-G Family
772 ELSEIF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 354)) THEN
773 Q2MIN = 3.0D-1
774 Q2MAX = 1.0D06
775 XMIN = 1.0D-05
776 XMAX = 0.9998D0
777 IF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 352)) THEN
778 LHASET = 350
779 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG1.LHgrid'
780 ELSEIF((LHAINPUT .GE. 353) .AND. (LHAINPUT .LE. 353)) THEN
781 Q2MIN = 2.5D-1
782 LHASET = 353
783 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
784 ELSEIF((LHAINPUT .GE. 354) .AND. (LHAINPUT .LE. 354)) THEN
785 Q2MIN = 6.0D-1
786 Q2MAX = 5.0D04
787 LHASET = 354
788 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
789 ELSE
790 WRITE(LHAPRINT,5150) LHASET
791 STOP
792 ENDIF
793C...ACFGP-G Family
794 ELSEIF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
795 Q2MIN = 2.0D00
796 Q2MAX = 5.5D05
797 XMIN = 1.37D-03
798 XMAX = 0.9998D0
799 IF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
800 LHASET = 360
801 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ACFGPG.LHgrid'
802 ELSE
803 WRITE(LHAPRINT,5150) LHASET
804 STOP
805 ENDIF
806C...WHIT-G Family
807 ELSEIF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
808 Q2MIN = 4.0D00
809 Q2MAX = 2.5D03
810 XMIN = 1.0D-03
811 XMAX = 0.9998D0
812 IF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
813 LHASET = 380
814 LHANAME=LHAPATH(1:LHAPATHLEN)//'/WHITG.LHgrid'
815 ELSE
816 WRITE(LHAPRINT,5150) LHASET
817 STOP
818 ENDIF
819C...SAS-G Family
820 ELSEIF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 398)) THEN
821 Q2MAX = 5.0D04
822 XMIN = 1.0D-05
823 XMAX = 0.9998D0
824 LHASET = 390
825 IF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 392)) THEN
826 Q2MIN = 3.6D-1
827c LHASET = 390
828 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
829 ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN
830 Q2MIN = 4.0D00
831c LHASET = 393
832 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
833 ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN
834 Q2MIN = 3.6D-1
835c LHASET = 395
836 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
837 ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN
838 Q2MIN = 4.0D00
839c LHASET = 397
840 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
841 ELSE
842 WRITE(LHAPRINT,5150) LHASET
843 STOP
844 ENDIF
845C...Unknown Family ?! Giving up
846 ELSE
847 WRITE(LHAPRINT,5150) LHASET
848 STOP
849 ENDIF
850
851 LHAMEMB=LHAINPUT-LHASET
852c....Now work out if we have already called this set/member
853 iset = 0
854 do j=1,nsets
855 if(lhaname.eq.lhanames(j).and.
856 + lhamemb.eq.lhamembers(j)) then
857 iset = j
858 endif
859 enddo
860 if(iset.eq.0) then
861 nsets=nsets+1
862 if(nsets.gt.nmxset) then
863 if(LHASILENT.ne.1) then
864 print *,'WARNING:too many sets initialised'
865 print *,'overwriting from set 1 again'
866 endif
867 nsets = 1
868c stop
869 endif
870 iset=nsets
871 lhanames(iset)=lhaname
872 lhanumbers(iset)=lhainput
873 lhamembers(iset)=lhamemb
874 xxmin(iset)=xmin
875 xxmax(iset)=xmax
876 qq2min(iset)=q2min
877 qq2max(iset)=q2max
878 CALL INITPDFSETM(iset,LHANAME)
879 CALL NUMBERPDFM(iset,LHAALLMEM)
880 IF(LHASILENT .NE. 1) THEN
881 WRITE(LHAPRINT,5151)
882 WRITE(LHAPRINT,5152) LHANAME
883 WRITE(LHAPRINT,5153) LHAALLMEM
884 WRITE(LHAPRINT,5154)
885 ENDIF
886 IF ((LHAMEMB.LT.0) .OR. (LHAMEMB.GT.LHAALLMEM)) THEN
887 WRITE(LHAPRINT,5155) LHAMEMB
888 WRITE(LHAPRINT,5156) LHAALLMEM
889 STOP
890 ENDIF
891
892c print *,'calling initpdf',lhamemb
893c print *,'calling initpdfm ',iset,lhaname,lhamemb
894c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb
895 CALL INITPDFM(iset,LHAMEMB)
896 endif
897c... the rest is done every time pdfset is called
898c print *,'setting nset to:',iset
899 call setnset(iset)
900 call setnmem(iset,lhamemb)
901 xmin = xxmin(iset)
902 xmax = xxmax(iset)
903 q2min=qq2min(iset)
904 q2max=qq2max(iset)
905 call GetLam4M(iset,LHAMEMB,qcdl4)
906 call GetLam5M(iset,LHAMEMB,qcdl5)
907
908 QMZ = 91.1876D0
909 alphasLHA = alphasPDFM(iset,QMZ)
910 IF(LHASILENT .NE. 1)
911 > WRITE(LHAPRINT,5158) alphasLHA
912
913 IF(LHAPARM(17).EQ.'LHAPDF') THEN
914 NPTYPEPDFL = 1 ! Proton PDFs
915 NFLPDFL = 4
916 QCDLHA4 = QCDL4
917 QCDLHA5 = QCDL5
918 IF(LHASILENT .NE. 1)
919 > WRITE(LHAPRINT,5159) QCDL4, QCDL5
920 ELSE
921 NPTYPEPDFL = 1 ! Proton PDFs
922 NFLPDFL = 4
923 ALAMBDA = 0.192D0
924 QCDLHA4 = ALAMBDA
925 QCDLHA5 = ALAMBDA
926 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
927 QCDL4 = ALAMBDA
928 QCDL5 = ALAMBDA
929 ENDIF
930 ENDIF
931C...Formats for initialization information.
932 5150 FORMAT(1X,'WRONG LHAPDF set number =',I12,' given! STOP EXE!')
933 5151 FORMAT(1X,'==============================================')
934 5152 FORMAT(1X,'PDFset name ',A80)
935 5153 FORMAT(1X,'with ',I10,' members')
936 5154 FORMAT(1X,'==== initialized. ===========================')
937 5155 FORMAT(1X,'LHAPDF problem => YOU asked for member = ',I10)
938 5156 FORMAT(1X,'Valid range is: 0 - ',I10,' Execution stopped.')
939 5157 FORMAT(1X,'Number of flavors for PDF is:',I4)
940 5158 FORMAT(1X,'Strong coupling at Mz for PDF is:',F9.5)
941 5159 FORMAT(1X,'Will use for PYTHIA QCDL4, QCDL5:',2F9.5)
942
943 RETURN
944 END
945
946c********************************************************************
947c -- STRUCTA
948c -- copy of PDFLIB to use the eks98 nuclear correction factors
949
950 SUBROUTINE STRUCTA(X,Q,A,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
951 IMPLICIT DOUBLE PRECISION (A-H,O-Z)
952 CALL EKS98(X,Q,A,RUV,RDV,RU,RD,RS,RC,RB,RT,RG)
953 CALL STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
954 UPV = RUV*UPV
955 DNV = RDV*DNV
956 USEA = RU*USEA
957 DSEA = RD*DSEA
958 STR = RS*STR
959 CHM = RC*CHM
960 BOT = RB*BOT
961 TOP = RT*TOP
962 GLU = RG*GLU
963 RETURN
964 END
965
966C*********************************************************************
967
968C...STRUCTM
969C...Gives parton distributions according to the LHAPDF interface.
970C...Two evolution codes used:
971C... EVLCTEQ for CTEQ PDF sets
972C... QCDNUM for Other PDF sets
973C...
974C...Author: Dimitri Bourilkov bourilkov@mailaps.org
975C...
976C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
977C...v3.0 23-Jan-2004
978C...
979C...interface to LHAPDF library
980
981 SUBROUTINE STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
982
983C...Double precision and integer declarations.
984 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
985 IMPLICIT INTEGER(I-N)
986 include 'parmsetup.inc'
987C...Commonblocks.
988 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
989 SAVE /PYDAT1/
990C...Interface to LHAPDFLIB.
991 include 'pathsetup.inc'
992c CHARACTER*172 LHANAME
993 INTEGER LHASET, LHAMEMB
994 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
995 SAVE /LHAPDF/
996c...added next 2 lines for structp fix
997 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
998 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
999c
1000 DOUBLE PRECISION QCDLHA4, QCDLHA5
1001 INTEGER NFLLHA
1002 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1003 SAVE /LHAPDFR/
1004 CHARACTER*20 LHAPARM(20)
1005 DOUBLE PRECISION LHAVALUE(20)
1006 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1007 SAVE/LHACONTROL/
1008 INTEGER LHAEXTRP
1009 COMMON/LHAPDFE/LHAEXTRP
1010 SAVE /LHAPDFE/
1011 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1012 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1013 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1014 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1015 SAVE/LHAGLSTA/
1016C...Interface to PDFLIB.
1017 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1018 SAVE /W50513/
1019 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1020C...Local variables
1021 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1022 DOUBLE PRECISION X,Q,F(-6:6)
1023
1024 Q2 = Q**2
1025C...Statistics
1026 IF(LHAPARM(16).NE.'NOSTAT') THEN
1027 TOTNUM = TOTNUM+1.D0
1028 IF(X .LT. XMIN) XMINNUM = XMINNUM+1.D0
1029 IF(X .GT. XMAX) XMAXNUM = XMAXNUM+1.D0
1030 IF(Q2 .LT. Q2MIN) Q2MINNUM = Q2MINNUM+1.D0
1031 IF(Q2 .GT. Q2MAX) Q2MAXNUM = Q2MAXNUM+1.D0
1032 ENDIF
1033
1034C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1035C...freezing x*f(x,Q2) at borders.
1036 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1037 XIN=MAX(XMIN,MIN(XMAX,X))
1038 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1039 ELSE ! adventurous mode == OWN RISK !
1040 XIN=X
1041 ENDIF
1042
1043 call getnset(iset)
1044c print *,'calling evolvepdfm:',iset
1045C
1046C...fix to allow STRUCTM to work for photon PDFs (Herwig does this)
1047C...set P2 = 0.0d0 and IP2 = 0
1048 if(LHANUMBERS(iset).ge.300.and.LHANUMBERS(iset).le.399) then
1049 P2 = 0.0d0
1050 IP2 = 0
1051 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1052 else
1053 CALL EVOLVEPDFM(iset,XIN,Q,F)
1054 endif
1055 GLU = F(0)
1056 DSEA = F(-1)
1057 DNV = F(1) - DSEA
1058 USEA = F(-2)
1059 UPV = F(2) - USEA
1060 STR = F(3)
1061 CHM = F(4)
1062 BOT = F(5)
1063 TOP = F(6)
1064
1065 RETURN
1066 END
1067
1068C*********************************************************************
1069
1070C...STRUCTP
1071C...Gives parton distributions according to the LHAPDF interface.
1072C...Used for photons.
1073C...
1074C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
1075C...
1076C...interface to LHAPDF library
1077
1078 SUBROUTINE STRUCTP
1079 > (X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
1080
1081C...Double precision and integer declarations.
1082 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1083 IMPLICIT INTEGER(I-N)
1084 include 'parmsetup.inc'
1085C...Commonblocks.
1086 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1087 SAVE /PYDAT1/
1088C...Interface to LHAPDFLIB.
1089 include 'pathsetup.inc'
1090c CHARACTER*172 LHANAME
1091 INTEGER LHASET, LHAMEMB
1092 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
1093 SAVE /LHAPDF/
1094 DOUBLE PRECISION QCDLHA4, QCDLHA5
1095 INTEGER NFLLHA
1096 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1097 SAVE /LHAPDFR/
1098 CHARACTER*20 LHAPARM(20)
1099 DOUBLE PRECISION LHAVALUE(20)
1100 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1101 SAVE/LHACONTROL/
1102 INTEGER LHAEXTRP
1103 COMMON/LHAPDFE/LHAEXTRP
1104 SAVE /LHAPDFE/
1105 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1106 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1107 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1108 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1109 SAVE/LHAGLSTA/
1110C...Interface to PDFLIB.
1111 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1112 SAVE /W50513/
1113 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1114C...Local variables
1115 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1116 DOUBLE PRECISION X,Q,F(-6:6)
1117
1118C...Statistics
1119 IF(LHAPARM(16).NE.'NOSTAT') THEN
1120 TOTNUP = TOTNUP+1.D0
1121 IF(X .LT. XMIN) XMINNUP = XMINNUP+1.D0
1122 IF(X .GT. XMAX) XMAXNUP = XMAXNUP+1.D0
1123 IF(Q2 .LT. Q2MIN) Q2MINNUP = Q2MINNUP+1.D0
1124 IF(Q2 .GT. Q2MAX) Q2MAXNUP = Q2MAXNUP+1.D0
1125 ENDIF
1126
1127C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1128C...freezing x*f(x,Q2) at borders.
1129 Q = DSQRT(Q2)
1130 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1131 XIN=MAX(XMIN,MIN(XMAX,X))
1132 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1133 ELSE ! adventurous mode == OWN RISK !
1134 XIN=X
1135 ENDIF
1136 call getnset(iset)
1137 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1138
1139 GLU = F(0)
1140 DSEA = F(-1)
1141 DNV = F(1) - DSEA
1142 USEA = F(-2)
1143 UPV = F(2) - USEA
1144 STR = F(3)
1145 CHM = F(4)
1146 BOT = F(5)
1147 TOP = F(6)
1148
1149 RETURN
1150 END
1151
1152C*********************************************************************
1153
1154C...PDFSTA
1155C...For statistics ON structure functions (under/over-flows)
1156C...
1157C...Author: Dimitri Bourilkov bourilkov@mailaps.org
1158C...
1159C...
1160C...first introduced in v4.0 28-Apr-2005
1161C...
1162
1163 SUBROUTINE PDFSTA
1164
1165C...Double precision and integer declarations.
1166 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1167 IMPLICIT INTEGER(I-N)
1168C...Interface to LHAPDFLIB.
1169 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1170 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1171 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1172 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1173 SAVE/LHAGLSTA/
1174
1175 PRINT *
1176 PRINT *,'===== PDFSTA statistics for PDF under/over-flows ===='
1177 PRINT *
1178 PRINT *,'====== STRUCTM statistics for nucleon/pion PDFs ====='
1179 PRINT *
1180 PRINT *,' total # of calls ',TOTNUM
1181 IF(TOTNUM .GT. 0.D0) THEN
1182 PERCBELOW = 100.D0*XMINNUM/TOTNUM
1183 PERCABOVE = 100.D0*XMAXNUM/TOTNUM
1184 PRINT *,' X below PDF min ',XMINNUM,' or ',PERCBELOW, ' %'
1185 PRINT *,' X above PDF max ',XMAXNUM,' or ',PERCABOVE, ' %'
1186 PERCBELOW = 100.D0*Q2MINNUM/TOTNUM
1187 PERCABOVE = 100.D0*Q2MAXNUM/TOTNUM
1188 PRINT *,' Q2 below PDF min ',Q2MINNUM,' or ',PERCBELOW, ' %'
1189 PRINT *,' Q2 above PDF max ',Q2MAXNUM,' or ',PERCABOVE, ' %'
1190 ENDIF
1191 PRINT *
1192 PRINT *,'========= STRUCTP statistics for photon PDFs ========'
1193 PRINT *
1194 PRINT *,' total # of calls ',TOTNUP
1195 IF(TOTNUP .GT. 0.D0) THEN
1196 PERCBELOW = 100.D0*XMINNUP/TOTNUP
1197 PERCABOVE = 100.D0*XMAXNUP/TOTNUP
1198 PRINT *,' X below PDF min ',XMINNUP,' or ',PERCBELOW, ' %'
1199 PRINT *,' X above PDF max ',XMAXNUP,' or ',PERCABOVE, ' %'
1200 PERCBELOW = 100.D0*Q2MINNUP/TOTNUP
1201 PERCABOVE = 100.D0*Q2MAXNUP/TOTNUP
1202 PRINT *,' Q2 below PDF min ',Q2MINNUP,' or ',PERCBELOW, ' %'
1203 PRINT *,' Q2 above PDF max ',Q2MAXNUP,' or ',PERCABOVE, ' %'
1204 ENDIF
1205 PRINT *
1206
1207 RETURN
1208 END
1209**********************************************************************
1210*
1211* $Id$
1212*
1213* $Log$
af4ebdd2 1214* Revision 1.1 2006/08/07 09:09:40 morsch
1215* LHAPDF 5.2.2 source code.
1216*
3c5d1739 1217* Revision 1.7 2005/12/02 14:50:54 whalley
1218* Changes for new CTEQ code/AB sets
1219*
1220* Revision 1.6 2005/10/18 15:35:48 whalley
1221* fix to allow LHAPATH to be user defined as well as lhapdf-config
1222*
1223* Revision 1.5 2005/10/18 11:47:48 whalley
1224* Change to only set LHAPATH once per run
1225*
1226* Revision 1.1.1.2 1996/10/30 08:29:06 cernlib
1227* Version 7.04
1228*
1229* Revision 1.1.1.1 1996/04/12 15:29:26 plothow
1230* Version 7.01
1231*
1232*
1233 SUBROUTINE PFTOPDG(DX,DSCALE,DXPDF)
1234C
1235Cinclude "pdf/expdp.inc"
1236 double precision
1237 + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL,
1238 + DXPDF(-6:6)
1239C... call STRUCTM in PDFLIB to get flavour content
1240 CALL STRUCTM(DX,DSCALE,
1241 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
1242C... convert flavour convention of PDFLIB to PDG convention
1243 DXPDF(0) = DGL
1244 DXPDF(1) = DDNV + DDSEA
1245 DXPDF(2) = DUPV + DUSEA
1246 DXPDF(3) = DSTR
1247 DXPDF(4) = DCHM
1248 DXPDF(5) = DBOT
1249 DXPDF(6) = DTOP
1250 DXPDF(-1) = DDSEA
1251 DXPDF(-2) = DUSEA
1252 DXPDF(-3) = DSTR
1253 DXPDF(-4) = DCHM
1254 DXPDF(-5) = DBOT
1255 DXPDF(-6) = DTOP
1256C
1257 RETURN
1258 END
1259****************************************************************************
1260 subroutine setPDFpath(pathname)
1261 implicit real*8 (A-H,O-Z)
1262 include 'parmsetup.inc'
1263 character*(*) pathname
1264 include 'pathsetup.inc'
1265c character*132 lhapath
1266 common/LHAPDFC/lhapath
1267 character*20 lhaparm(20)
1268 real*8 lhavalue(20)
1269 common/LHACONTROL/lhaparm,lhavalue
1270 lhaparm(20) = 'LHAPATH'
1271 do j=1,lnblnk(lhapath)
1272 lhapath(j:j)=''
1273 enddo
1274 lhapath = pathname
1275 return
1276 end
1277***********************************************************************
1278 subroutine lhaset(lhaparm2,lhavalue2)
1279 implicit real*8 (a-h,o-z)
1280 character*20 lhaparm(20),lhaparm2(20)
1281 real*8 lhavalue(20),lhavalue2(20)
1282 common/LHACONTROL/lhaparm,lhavalue
1283 do j=1,20
1284 lhaparm(j)=lhaparm2(j)
1285 lhavalue(j)=lhavalue2(j)
1286 enddo
1287 return
1288 end
1289******************************************************************
1290 subroutine setlhaparm(lparm)
1291 implicit real*8 (a-h,o-z)
1292 character*(*) lparm
1293 character*20 lhaparm(20)
1294 real*8 lhavalue(20)
1295 common/LHACONTROL/lhaparm,lhavalue
1296 if(lparm.eq.'NOSTAT') then
1297 lhaparm(16)='NOSTAT'
1298 else if (lparm.eq.'16') then
1299 lhaparm(16)=''
1300 else if (lparm.eq.'LHAPDF') then
1301 lhaparm(17)='LHAPDF'
1302 else if (lparm.eq.'17') then
1303 lhaparm(17)=''
1304 else if (lparm.eq.'EXTRAPOLATE') then
1305 lhaparm(18)='EXTRAPOLATE'
1306 else if (lparm.eq.'18') then
1307 lhaparm(18)=''
1308 else if (lparm.eq.'SILENT') then
1309 lhaparm(19)='SILENT'
1310 else if (lparm.eq.'LOWKEY') then
1311 lhaparm(19)='LOWKEY'
1312 else if (lparm.eq.'19') then
1313 lhaparm(19)=''
1314 else
1315 print *,'WARNING from SetLHAPARM - value',lparm,'
1316 & not recognized!'
1317 endif
1318 return
1319 end
1320***************************************************************