]> git.uio.no Git - u/mrichter/AliRoot.git/blame - LHAPDF/lhapdf5.2.2/lhaglue.f
LHAPDF 5.2.2 source code.
[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
256 if(first .AND. (LHAPARM(20).NE.'LHAPATH')) then
257c...overide the default PDFsets path
258c ... 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
263 $th")
264 open(unit=8, file="/tmp/lhapdf-pdfsets-path", status="old", iostat
265 $=ierror)
266 read (8,'(A)') LHAPATH
267 close(8)
268 endif
269 first=.FALSE.
270 endif
271c
272*
273C...Init
274 LHAEXTRP = 0
275 IF(LHAPARM(18).EQ.'EXTRAPOLATE')
276 > THEN ! Extrapolate PDFs on own risk
277 LHAEXTRP = 1
278 ENDIF
279 LHASILENT = 0
280 IF(LHAPARM(19).EQ.'SILENT') THEN ! No printout (silent MODE)
281 LHASILENT = 1
282 ELSEIF(LHAPARM(19).EQ.'LOWKEY') THEN ! Print 5 times (lowkey MODE)
283 IF(LHAFIVE .LT. 6) THEN
284 LHAFIVE = LHAFIVE + 1
285 ELSE
286 LHASILENT = 1
287 ENDIF
288 ENDIF
289 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
290 if(MSTP(181).ge.6) then
291 LHAPRINT = MSTU(11)
292 else
293 LHAPRINT = MSTU5(11)
294 endif
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))
301 ENDIF
302 IF(LHASILENT .NE. 1)
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
307 IF(LHASILENT .NE. 1)
308 > PRINT *,'==== HERWIG WILL USE LHAPDF ===='
309 LHAPRINT = 6
310 LHAONCE = LHAINPUT
311 ELSEIF(PARM(1).EQ.'DEFAULT') THEN ! Stand-alone
312 LHAINPUT = ABS(INT(VALUE(1)))
313 IF(LHAONCE.EQ.LHAINPUT) RETURN
314 IF(LHASILENT .NE. 1)
315 > PRINT *,'==== STAND-ALONE LHAGLUE MODE TO USE LHAPDF ===='
316 LHAPRINT = 6
317 LHAONCE = LHAINPUT
318 ELSE
319 PRINT *,'== UNKNOWN LHAPDF INTERFACE CALL! STOP EXECUTION! =='
320 STOP
321 ENDIF
322C...Initialize parton distributions: LHAPDFLIB.
323 LHAPATHLEN=INDEX(LHAPATH,' ')-1
324 LHASET = LHAINPUT
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]
329C...
330C...Protons
331C...
332C...CTEQ Family
333 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 19999)) THEN
334 Q2MAX = 1.0D08
335 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 10040)) THEN
336 LHASET = 10000
337 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6.LHpdf'
338 Q2MIN = 1.69D0
339 ELSEIF((LHAINPUT .GE. 10041) .AND. (LHAINPUT .LE. 10041)) THEN
340 LHASET = 10041
341 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6l.LHpdf'
342 Q2MIN = 1.69D0
343 ELSEIF((LHAINPUT .GE. 10042) .AND. (LHAINPUT .LE. 10042)) THEN
344 LHASET = 10042
345 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6ll.LHpdf'
346 Q2MIN = 1.69D0
347 ELSEIF((LHAINPUT .GE. 10050) .AND. (LHAINPUT .LE. 10090)) THEN
348 LHASET = 10050
349 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6mE.LHgrid'
350 Q2MIN = 1.69D0
351 ELSEIF((LHAINPUT .GE. 10100) .AND. (LHAINPUT .LE. 10140)) THEN
352 LHASET = 10100
353 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHpdf'
354 Q2MIN = 1.69D0
355 ELSEIF((LHAINPUT .GE. 10150) .AND. (LHAINPUT .LE. 10190)) THEN
356 LHASET = 10150
357 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHgrid'
358 Q2MIN = 1.69D0
359 ELSEIF((LHAINPUT .GE. 10250) .AND. (LHAINPUT .LE. 10269)) THEN
360 LHASET = 10250
361 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6AB.LHgrid'
362 Q2MIN = 1.69D0
363 ELSEIF((LHAINPUT .GE. 19050) .AND. (LHAINPUT .LE. 19050)) THEN
364 LHASET = 19050
365 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m.LHgrid'
366 XMIN=1.0D-5
367 ELSEIF((LHAINPUT .GE. 19051) .AND. (LHAINPUT .LE. 19051)) THEN
368 LHASET = 19051
369 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m1.LHgrid'
370 XMIN=1.0D-5
371 ELSEIF((LHAINPUT .GE. 19060) .AND. (LHAINPUT .LE. 19060)) THEN
372 LHASET = 19060
373 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5d.LHgrid'
374 XMIN=1.0D-5
375 ELSEIF((LHAINPUT .GE. 19070) .AND. (LHAINPUT .LE. 19070)) THEN
376 LHASET = 19070
377 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5l.LHgrid'
378 XMIN=1.0D-5
379 ELSEIF((LHAINPUT .GE. 19150) .AND. (LHAINPUT .LE. 19150)) THEN
380 LHASET = 19150
381 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4m.LHgrid'
382 Q2MIN = 2.56D0
383 XMIN=1.0D-5
384 ELSEIF((LHAINPUT .GE. 19160) .AND. (LHAINPUT .LE. 19160)) THEN
385 LHASET = 19160
386 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4d.LHgrid'
387 Q2MIN = 2.56D0
388 XMIN=1.0D-5
389 ELSEIF((LHAINPUT .GE. 19170) .AND. (LHAINPUT .LE. 19170)) THEN
390 LHASET = 19170
391 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4l.LHgrid'
392 Q2MIN = 2.56D0
393 XMIN=1.0D-5
394 ELSE
395 WRITE(LHAPRINT,5150) LHASET
396 STOP
397 ENDIF
398C...MRST Family
399 ELSEIF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 29999)) THEN
400 Q2MIN = 1.25D0
401 Q2MAX = 1.0D07
402 XMIN = 1.0D-5
403 IF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 20004)) THEN
404 LHASET = 20000
405 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHpdf'
406 ELSEIF((LHAINPUT .GE. 20050) .AND. (LHAINPUT .LE. 20054)) THEN
407 LHASET = 20050
408 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHgrid'
409 ELSEIF((LHAINPUT .GE. 20060) .AND. (LHAINPUT .LE. 20061)) THEN
410 LHASET = 20060
411 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001lo.LHgrid'
412 ELSEIF((LHAINPUT .GE. 20070) .AND. (LHAINPUT .LE. 20074)) THEN
413 LHASET = 20070
414 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nnlo.LHgrid'
415 ELSEIF((LHAINPUT .GE. 20100) .AND. (LHAINPUT .LE. 20130)) THEN
416 LHASET = 20100
417 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHpdf'
418 ELSEIF((LHAINPUT .GE. 20150) .AND. (LHAINPUT .LE. 20180)) THEN
419 LHASET = 20150
420 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHgrid'
421 ELSEIF((LHAINPUT .GE. 20200) .AND. (LHAINPUT .LE. 20201)) THEN
422 LHASET = 20200
423 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHpdf'
424 ELSEIF((LHAINPUT .GE. 20250) .AND. (LHAINPUT .LE. 20251)) THEN
425 LHASET = 20250
426 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHgrid'
427 ELSEIF((LHAINPUT .GE. 20270) .AND. (LHAINPUT .LE. 20271)) THEN
428 LHASET = 20270
429 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nnlo.LHgrid'
430 ELSEIF((LHAINPUT .GE. 20300) .AND. (LHAINPUT .LE. 20301)) THEN
431 LHASET = 20300
432 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHpdf'
433 Q2MIN = 10.0D0
434 XMIN = 1.0D-3
435 ELSEIF((LHAINPUT .GE. 20350) .AND. (LHAINPUT .LE. 20351)) THEN
436 LHASET = 20350
437 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHgrid'
438 Q2MIN = 10.0D0
439 XMIN = 1.0D-3
440 ELSEIF((LHAINPUT .GE. 20370) .AND. (LHAINPUT .LE. 20371)) THEN
441 LHASET = 20370
442 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnnlo.LHgrid'
443 Q2MIN = 7.0D0
444 XMIN = 1.0D-3
445 ELSEIF((LHAINPUT .GE. 20400) .AND. (LHAINPUT .LE. 20401)) THEN
446 LHASET = 20400
447 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHpdf'
448 ELSEIF((LHAINPUT .GE. 20406) .AND. (LHAINPUT .LE. 20407)) THEN
449 LHASET = 20406
450 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHpdf'
451 ELSEIF((LHAINPUT .GE. 20408) .AND. (LHAINPUT .LE. 20409)) THEN
452 LHASET = 20408
453 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHpdf'
454 ELSEIF((LHAINPUT .GE. 20450) .AND. (LHAINPUT .LE. 20451)) THEN
455 LHASET = 20450
456 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHgrid'
457 ELSEIF((LHAINPUT .GE. 20452) .AND. (LHAINPUT .LE. 20453)) THEN
458 LHASET = 20452
459 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3lo.LHgrid'
460 ELSEIF((LHAINPUT .GE. 20454) .AND. (LHAINPUT .LE. 20455)) THEN
461 LHASET = 20454
462 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4lo.LHgrid'
463 ELSEIF((LHAINPUT .GE. 20456) .AND. (LHAINPUT .LE. 20457)) THEN
464 LHASET = 20456
465 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHgrid'
466 ELSEIF((LHAINPUT .GE. 20458) .AND. (LHAINPUT .LE. 20459)) THEN
467 LHASET = 20458
468 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHgrid'
469 ELSEIF((LHAINPUT .GE. 20470) .AND. (LHAINPUT .LE. 20471)) THEN
470 LHASET = 20470
471 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nnlo.LHgrid'
472 ELSEIF((LHAINPUT .GE. 29000) .AND. (LHAINPUT .LE. 29003)) THEN
473 LHASET = 29000
474 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98.LHpdf'
475 ELSEIF((LHAINPUT .GE. 29040) .AND. (LHAINPUT .LE. 29045)) THEN
476 LHASET = 29040
477 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98lo.LHgrid'
478 ELSEIF((LHAINPUT .GE. 29050) .AND. (LHAINPUT .LE. 29055)) THEN
479 LHASET = 29050
480 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98nlo.LHgrid'
481 ELSEIF((LHAINPUT .GE. 29060) .AND. (LHAINPUT .LE. 29065)) THEN
482 LHASET = 29060
483 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98dis.LHgrid'
484 ELSEIF((LHAINPUT .GE. 29070) .AND. (LHAINPUT .LE. 29071)) THEN
485 LHASET = 29070
486 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98ht.LHgrid'
487 ELSE
488 WRITE(LHAPRINT,5150) LHASET
489 STOP
490 ENDIF
491C...Fermi Family
492 ELSEIF((LHAINPUT .GE. 30000) .AND. (LHAINPUT .LE. 39999)) THEN
493 IF((LHAINPUT .GE. 30100) .AND. (LHAINPUT .LE. 30200)) THEN
494 LHASET = 30100
495 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_100.LHpdf'
496 ELSEIF((LHAINPUT .GE. 31000) .AND. (LHAINPUT .LE. 32000)) THEN
497 LHASET = 31000
498 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_1000.LHpdf'
499 ELSE
500 WRITE(LHAPRINT,5150) LHASET
501 STOP
502 ENDIF
503C...Alekhin Family
504 ELSEIF((LHAINPUT .GE. 40000) .AND. (LHAINPUT .LE. 49999)) THEN
505 IF((LHAINPUT .GE. 40100) .AND. (LHAINPUT .LE. 40200)) THEN
506 LHASET = 40100
507 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_100.LHpdf'
508 ELSEIF((LHAINPUT .GE. 41000) .AND. (LHAINPUT .LE. 41999)) THEN
509 LHASET = 41000
510 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_1000.LHpdf'
511 ELSEIF((LHAINPUT .GE. 40350) .AND. (LHAINPUT .LE. 40367)) THEN
512 LHASET = 40350
513 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_lo.LHgrid'
514 XMIN = 1.0D-7
515 Q2MIN = 0.8D0
516 Q2MAX = 2.0D08
517 ELSEIF((LHAINPUT .GE. 40450) .AND. (LHAINPUT .LE. 40467)) THEN
518 LHASET = 40450
519 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nlo.LHgrid'
520 XMIN = 1.0D-7
521 Q2MIN = 0.8D0
522 Q2MAX = 2.0D08
523 ELSEIF((LHAINPUT .GE. 40550) .AND. (LHAINPUT .LE. 40567)) THEN
524 LHASET = 40550
525 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nnlo.LHgrid'
526 XMIN = 1.0D-7
527 Q2MIN = 0.8D0
528 Q2MAX = 2.0D08
529 ELSE
530 WRITE(LHAPRINT,5150) LHASET
531 STOP
532 ENDIF
533C...Botje Family
534 ELSEIF((LHAINPUT .GE. 50000) .AND. (LHAINPUT .LE. 59999)) THEN
535 IF((LHAINPUT .GE. 50100) .AND. (LHAINPUT .LE. 50200)) THEN
536 LHASET = 50100
537 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_100.LHpdf'
538 ELSEIF((LHAINPUT .GE. 51000) .AND. (LHAINPUT .LE. 51999)) THEN
539 LHASET = 51000
540 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_1000.LHpdf'
541 ELSE
542 WRITE(LHAPRINT,5150) LHASET
543 STOP
544 ENDIF
545C...ZEUS Family
546 ELSEIF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 69999)) THEN
547 Q2MIN = 0.3D0
548 Q2MAX = 2.0D05
549 IF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 60022)) THEN
550 LHASET = 60000
551 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_TR.LHpdf'
552 ELSEIF((LHAINPUT .GE. 60100) .AND. (LHAINPUT .LE. 60122)) THEN
553 LHASET = 60100
554 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_ZM.LHpdf'
555 ELSEIF((LHAINPUT .GE. 60200) .AND. (LHAINPUT .LE. 60222)) THEN
556 LHASET = 60200
557 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_FF.LHpdf'
558 ELSEIF((LHAINPUT .GE. 60300) .AND. (LHAINPUT .LE. 60322)) THEN
559 LHASET = 60300
560 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2005_ZJ.LHpdf'
561 ELSE
562 WRITE(LHAPRINT,5150) LHASET
563 STOP
564 ENDIF
565C...H1 Family
566 ELSEIF((LHAINPUT .GE. 70000) .AND. (LHAINPUT .LE. 79999)) THEN
567 Q2MIN = 1.5D0
568 Q2MAX = 3.5D04
569 XMIN = 5.7D-5
570 IF((LHAINPUT .GE. 70050) .AND. (LHAINPUT .LE. 70050)) THEN
571 LHASET = 70050
572 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000ms.LHgrid'
573 ELSEIF((LHAINPUT .GE. 70051) .AND. (LHAINPUT .LE. 70070)) THEN
574 LHASET = 70050
575 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000msE.LHgrid'
576 ELSEIF((LHAINPUT .GE. 70150) .AND. (LHAINPUT .LE. 70150)) THEN
577 LHASET = 70150
578 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000dis.LHgrid'
579 ELSEIF((LHAINPUT .GE. 70151) .AND. (LHAINPUT .LE. 70170)) THEN
580 LHASET = 70150
581 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000disE.LHgrid'
582 ELSEIF((LHAINPUT .GE. 70250) .AND. (LHAINPUT .LE. 70250)) THEN
583 LHASET = 70250
584 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo.LHgrid'
585 ELSEIF((LHAINPUT .GE. 70251) .AND. (LHAINPUT .LE. 70270)) THEN
586 LHASET = 70250
587 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000loE.LHgrid'
588c tempoararily removed on returning to original H!2000 files
589c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN
590c LHASET = 70350
591c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid'
592c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN
593c LHASET = 70350
594c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid'
595 ELSE
596 WRITE(LHAPRINT,5150) LHASET
597 STOP
598 ENDIF
599C...GRV Family
600 ELSEIF((LHAINPUT .GE. 80000) .AND. (LHAINPUT .LE. 89999)) THEN
601 Q2MIN = 0.8D0
602 Q2MAX = 2.0D06
603 XMIN = 1.0D-9
604 IF((LHAINPUT .GE. 80050) .AND. (LHAINPUT .LE. 80051)) THEN
605 LHASET = 80050
606 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98nlo.LHgrid'
607 ELSEIF((LHAINPUT .GE. 80060) .AND. (LHAINPUT .LE. 80060)) THEN
608 LHASET = 80060
609 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98lo.LHgrid'
610 ELSE
611 WRITE(LHAPRINT,5150) LHASET
612 STOP
613 ENDIF
614C...
615C...Pions
616C...
617C...OW-PI Family
618 ELSEIF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
619 Q2MIN = 4.0D0
620 Q2MAX = 2.0D03
621 XMIN = 5.0D-03
622 XMAX = 0.9998D0
623 IF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
624 LHASET = 210
625 LHANAME=LHAPATH(1:LHAPATHLEN)//'/OWPI.LHgrid'
626 ELSE
627 WRITE(LHAPRINT,5150) LHASET
628 STOP
629 ENDIF
630C...SMRS-PI Family
631 ELSEIF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
632 Q2MIN = 5.0D0
633 Q2MAX = 1.31D06
634 XMIN = 1.0D-05
635 XMAX = 0.9998D0
636 IF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
637 LHASET = 230
638 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SMRSPI.LHgrid'
639 ELSE
640 WRITE(LHAPRINT,5150) LHASET
641 STOP
642 ENDIF
643C...GRV-PI Family
644 ELSEIF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 252)) THEN
645 Q2MAX = 1.00D06
646 XMIN = 1.0D-05
647 XMAX = 0.9998D0
648 IF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 251)) THEN
649 Q2MIN = 3.0D-1
650 LHASET = 250
651 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI1.LHgrid'
652 ELSEIF((LHAINPUT .GE. 252) .AND. (LHAINPUT .LE. 252)) THEN
653 Q2MIN = 2.5D-1
654 LHASET = 252
655 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI0.LHgrid'
656 ELSE
657 WRITE(LHAPRINT,5150) LHASET
658 STOP
659 ENDIF
660C...ABFKW-PI Family
661 ELSEIF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
662 Q2MIN = 2.0D0
663 Q2MAX = 1.00D08
664 XMIN = 1.0D-03
665 XMAX = 0.9998D0
666 IF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
667 LHASET = 260
668 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ABFKWPI.LHgrid'
669 ELSE
670 WRITE(LHAPRINT,5150) LHASET
671 STOP
672 ENDIF
673C...
674C...Photons
675C...
676C...DO-G Family
677 ELSEIF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 312)) THEN
678 Q2MIN = 1.0D01
679 Q2MAX = 1.00D04
680 XMIN = 1.0D-05
681 XMAX = 0.9D0
682 IF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 311)) THEN
683 LHASET = 310
684 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG0.LHgrid'
685 ELSEIF((LHAINPUT .GE. 312) .AND. (LHAINPUT .LE. 312)) THEN
686 LHASET = 312
687 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG1.LHgrid'
688 ELSE
689 WRITE(LHAPRINT,5150) LHASET
690 STOP
691 ENDIF
692C...DG-G Family
693 ELSEIF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 324)) THEN
694 XMIN = 1.0D-05
695 XMAX = 0.9998D0
696 LHASET = 320
697 IF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 321)) THEN
698 Q2MIN = 1.0D0
699 Q2MAX = 1.0D04
700c LHASET = 320
701 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
702 ELSEIF((LHAINPUT .GE. 322) .AND. (LHAINPUT .LE. 322)) THEN
703 Q2MIN = 1.0D0
704 Q2MAX = 5.0D01
705c LHASET = 322
706 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
707 ELSEIF((LHAINPUT .GE. 323) .AND. (LHAINPUT .LE. 323)) THEN
708 Q2MIN = 2.0D1
709 Q2MAX = 5.0D02
710c LHASET = 323
711 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
712 ELSEIF((LHAINPUT .GE. 324) .AND. (LHAINPUT .LE. 324)) THEN
713 Q2MIN = 2.0D2
714 Q2MAX = 1.0D04
715c LHASET = 324
716 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
717 ELSE
718 WRITE(LHAPRINT,5150) LHASET
719 STOP
720 ENDIF
721C...LAC/GAL-G Family
722 ELSEIF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 334)) THEN
723 Q2MIN = 4.0D00
724 Q2MAX = 1.0D05
725 XMIN = 1.0D-04
726 XMAX = 0.9998D0
727 LHASET = 330
728 IF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 332)) THEN
729c LHASET = 330
730 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
731 ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN
732 Q2MIN = 1.0D00
733c LHASET = 333
734 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
735 ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN
736 Q2MIN = 4.0D00
737c LHASET = 334
738 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
739 ELSE
740 WRITE(LHAPRINT,5150) LHASET
741 STOP
742 ENDIF
743C...GSG/GSG96-G Family
744 ELSEIF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 345)) THEN
745 Q2MIN = 5.3D00
746 Q2MAX = 1.0D08
747 XMIN = 5.0D-04
748 XMAX = 0.9998D0
749 IF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 341)) THEN
750 LHASET = 340
751 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG1.LHgrid'
752 ELSEIF((LHAINPUT .GE. 342) .AND. (LHAINPUT .LE. 343)) THEN
753 LHASET = 342
754 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG0.LHgrid'
755 ELSEIF((LHAINPUT .GE. 344) .AND. (LHAINPUT .LE. 344)) THEN
756 LHASET = 344
757 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG961.LHgrid'
758 ELSEIF((LHAINPUT .GE. 345) .AND. (LHAINPUT .LE. 345)) THEN
759 LHASET = 345
760 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG960.LHgrid'
761 ELSE
762 WRITE(LHAPRINT,5150) LHASET
763 STOP
764 ENDIF
765C...GRV-G Family
766 ELSEIF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 354)) THEN
767 Q2MIN = 3.0D-1
768 Q2MAX = 1.0D06
769 XMIN = 1.0D-05
770 XMAX = 0.9998D0
771 IF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 352)) THEN
772 LHASET = 350
773 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG1.LHgrid'
774 ELSEIF((LHAINPUT .GE. 353) .AND. (LHAINPUT .LE. 353)) THEN
775 Q2MIN = 2.5D-1
776 LHASET = 353
777 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
778 ELSEIF((LHAINPUT .GE. 354) .AND. (LHAINPUT .LE. 354)) THEN
779 Q2MIN = 6.0D-1
780 Q2MAX = 5.0D04
781 LHASET = 354
782 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
783 ELSE
784 WRITE(LHAPRINT,5150) LHASET
785 STOP
786 ENDIF
787C...ACFGP-G Family
788 ELSEIF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
789 Q2MIN = 2.0D00
790 Q2MAX = 5.5D05
791 XMIN = 1.37D-03
792 XMAX = 0.9998D0
793 IF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
794 LHASET = 360
795 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ACFGPG.LHgrid'
796 ELSE
797 WRITE(LHAPRINT,5150) LHASET
798 STOP
799 ENDIF
800C...WHIT-G Family
801 ELSEIF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
802 Q2MIN = 4.0D00
803 Q2MAX = 2.5D03
804 XMIN = 1.0D-03
805 XMAX = 0.9998D0
806 IF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
807 LHASET = 380
808 LHANAME=LHAPATH(1:LHAPATHLEN)//'/WHITG.LHgrid'
809 ELSE
810 WRITE(LHAPRINT,5150) LHASET
811 STOP
812 ENDIF
813C...SAS-G Family
814 ELSEIF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 398)) THEN
815 Q2MAX = 5.0D04
816 XMIN = 1.0D-05
817 XMAX = 0.9998D0
818 LHASET = 390
819 IF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 392)) THEN
820 Q2MIN = 3.6D-1
821c LHASET = 390
822 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
823 ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN
824 Q2MIN = 4.0D00
825c LHASET = 393
826 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
827 ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN
828 Q2MIN = 3.6D-1
829c LHASET = 395
830 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
831 ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN
832 Q2MIN = 4.0D00
833c LHASET = 397
834 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
835 ELSE
836 WRITE(LHAPRINT,5150) LHASET
837 STOP
838 ENDIF
839C...Unknown Family ?! Giving up
840 ELSE
841 WRITE(LHAPRINT,5150) LHASET
842 STOP
843 ENDIF
844
845 LHAMEMB=LHAINPUT-LHASET
846c....Now work out if we have already called this set/member
847 iset = 0
848 do j=1,nsets
849 if(lhaname.eq.lhanames(j).and.
850 + lhamemb.eq.lhamembers(j)) then
851 iset = j
852 endif
853 enddo
854 if(iset.eq.0) then
855 nsets=nsets+1
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'
860 endif
861 nsets = 1
862c stop
863 endif
864 iset=nsets
865 lhanames(iset)=lhaname
866 lhanumbers(iset)=lhainput
867 lhamembers(iset)=lhamemb
868 xxmin(iset)=xmin
869 xxmax(iset)=xmax
870 qq2min(iset)=q2min
871 qq2max(iset)=q2max
872 CALL INITPDFSETM(iset,LHANAME)
873 CALL NUMBERPDFM(iset,LHAALLMEM)
874 IF(LHASILENT .NE. 1) THEN
875 WRITE(LHAPRINT,5151)
876 WRITE(LHAPRINT,5152) LHANAME
877 WRITE(LHAPRINT,5153) LHAALLMEM
878 WRITE(LHAPRINT,5154)
879 ENDIF
880 IF ((LHAMEMB.LT.0) .OR. (LHAMEMB.GT.LHAALLMEM)) THEN
881 WRITE(LHAPRINT,5155) LHAMEMB
882 WRITE(LHAPRINT,5156) LHAALLMEM
883 STOP
884 ENDIF
885
886c print *,'calling initpdf',lhamemb
887c print *,'calling initpdfm ',iset,lhaname,lhamemb
888c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb
889 CALL INITPDFM(iset,LHAMEMB)
890 endif
891c... the rest is done every time pdfset is called
892c print *,'setting nset to:',iset
893 call setnset(iset)
894 call setnmem(iset,lhamemb)
895 xmin = xxmin(iset)
896 xmax = xxmax(iset)
897 q2min=qq2min(iset)
898 q2max=qq2max(iset)
899 call GetLam4M(iset,LHAMEMB,qcdl4)
900 call GetLam5M(iset,LHAMEMB,qcdl5)
901
902 QMZ = 91.1876D0
903 alphasLHA = alphasPDFM(iset,QMZ)
904 IF(LHASILENT .NE. 1)
905 > WRITE(LHAPRINT,5158) alphasLHA
906
907 IF(LHAPARM(17).EQ.'LHAPDF') THEN
908 NPTYPEPDFL = 1 ! Proton PDFs
909 NFLPDFL = 4
910 QCDLHA4 = QCDL4
911 QCDLHA5 = QCDL5
912 IF(LHASILENT .NE. 1)
913 > WRITE(LHAPRINT,5159) QCDL4, QCDL5
914 ELSE
915 NPTYPEPDFL = 1 ! Proton PDFs
916 NFLPDFL = 4
917 ALAMBDA = 0.192D0
918 QCDLHA4 = ALAMBDA
919 QCDLHA5 = ALAMBDA
920 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
921 QCDL4 = ALAMBDA
922 QCDL5 = ALAMBDA
923 ENDIF
924 ENDIF
925C...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)
936
937 RETURN
938 END
939
940c********************************************************************
941c -- STRUCTA
942c -- copy of PDFLIB to use the eks98 nuclear correction factors
943
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)
948 UPV = RUV*UPV
949 DNV = RDV*DNV
950 USEA = RU*USEA
951 DSEA = RD*DSEA
952 STR = RS*STR
953 CHM = RC*CHM
954 BOT = RB*BOT
955 TOP = RT*TOP
956 GLU = RG*GLU
957 RETURN
958 END
959
960C*********************************************************************
961
962C...STRUCTM
963C...Gives parton distributions according to the LHAPDF interface.
964C...Two evolution codes used:
965C... EVLCTEQ for CTEQ PDF sets
966C... QCDNUM for Other PDF sets
967C...
968C...Author: Dimitri Bourilkov bourilkov@mailaps.org
969C...
970C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
971C...v3.0 23-Jan-2004
972C...
973C...interface to LHAPDF library
974
975 SUBROUTINE STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
976
977C...Double precision and integer declarations.
978 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
979 IMPLICIT INTEGER(I-N)
980 include 'parmsetup.inc'
981C...Commonblocks.
982 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
983 SAVE /PYDAT1/
984C...Interface to LHAPDFLIB.
985 include 'pathsetup.inc'
986c CHARACTER*172 LHANAME
987 INTEGER LHASET, LHAMEMB
988 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
989 SAVE /LHAPDF/
990c...added next 2 lines for structp fix
991 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
992 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
993c
994 DOUBLE PRECISION QCDLHA4, QCDLHA5
995 INTEGER NFLLHA
996 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
997 SAVE /LHAPDFR/
998 CHARACTER*20 LHAPARM(20)
999 DOUBLE PRECISION LHAVALUE(20)
1000 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1001 SAVE/LHACONTROL/
1002 INTEGER LHAEXTRP
1003 COMMON/LHAPDFE/LHAEXTRP
1004 SAVE /LHAPDFE/
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
1009 SAVE/LHAGLSTA/
1010C...Interface to PDFLIB.
1011 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1012 SAVE /W50513/
1013 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1014C...Local variables
1015 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1016 DOUBLE PRECISION X,Q,F(-6:6)
1017
1018 Q2 = Q**2
1019C...Statistics
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
1026 ENDIF
1027
1028C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1029C...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 !
1034 XIN=X
1035 ENDIF
1036
1037 call getnset(iset)
1038c print *,'calling evolvepdfm:',iset
1039C
1040C...fix to allow STRUCTM to work for photon PDFs (Herwig does this)
1041C...set P2 = 0.0d0 and IP2 = 0
1042 if(LHANUMBERS(iset).ge.300.and.LHANUMBERS(iset).le.399) then
1043 P2 = 0.0d0
1044 IP2 = 0
1045 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1046 else
1047 CALL EVOLVEPDFM(iset,XIN,Q,F)
1048 endif
1049 GLU = F(0)
1050 DSEA = F(-1)
1051 DNV = F(1) - DSEA
1052 USEA = F(-2)
1053 UPV = F(2) - USEA
1054 STR = F(3)
1055 CHM = F(4)
1056 BOT = F(5)
1057 TOP = F(6)
1058
1059 RETURN
1060 END
1061
1062C*********************************************************************
1063
1064C...STRUCTP
1065C...Gives parton distributions according to the LHAPDF interface.
1066C...Used for photons.
1067C...
1068C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
1069C...
1070C...interface to LHAPDF library
1071
1072 SUBROUTINE STRUCTP
1073 > (X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
1074
1075C...Double precision and integer declarations.
1076 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1077 IMPLICIT INTEGER(I-N)
1078 include 'parmsetup.inc'
1079C...Commonblocks.
1080 COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
1081 SAVE /PYDAT1/
1082C...Interface to LHAPDFLIB.
1083 include 'pathsetup.inc'
1084c CHARACTER*172 LHANAME
1085 INTEGER LHASET, LHAMEMB
1086 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
1087 SAVE /LHAPDF/
1088 DOUBLE PRECISION QCDLHA4, QCDLHA5
1089 INTEGER NFLLHA
1090 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1091 SAVE /LHAPDFR/
1092 CHARACTER*20 LHAPARM(20)
1093 DOUBLE PRECISION LHAVALUE(20)
1094 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1095 SAVE/LHACONTROL/
1096 INTEGER LHAEXTRP
1097 COMMON/LHAPDFE/LHAEXTRP
1098 SAVE /LHAPDFE/
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
1103 SAVE/LHAGLSTA/
1104C...Interface to PDFLIB.
1105 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1106 SAVE /W50513/
1107 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1108C...Local variables
1109 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1110 DOUBLE PRECISION X,Q,F(-6:6)
1111
1112C...Statistics
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
1119 ENDIF
1120
1121C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1122C...freezing x*f(x,Q2) at borders.
1123 Q = DSQRT(Q2)
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 !
1128 XIN=X
1129 ENDIF
1130 call getnset(iset)
1131 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1132
1133 GLU = F(0)
1134 DSEA = F(-1)
1135 DNV = F(1) - DSEA
1136 USEA = F(-2)
1137 UPV = F(2) - USEA
1138 STR = F(3)
1139 CHM = F(4)
1140 BOT = F(5)
1141 TOP = F(6)
1142
1143 RETURN
1144 END
1145
1146C*********************************************************************
1147
1148C...PDFSTA
1149C...For statistics ON structure functions (under/over-flows)
1150C...
1151C...Author: Dimitri Bourilkov bourilkov@mailaps.org
1152C...
1153C...
1154C...first introduced in v4.0 28-Apr-2005
1155C...
1156
1157 SUBROUTINE PDFSTA
1158
1159C...Double precision and integer declarations.
1160 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1161 IMPLICIT INTEGER(I-N)
1162C...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
1167 SAVE/LHAGLSTA/
1168
1169 PRINT *
1170 PRINT *,'===== PDFSTA statistics for PDF under/over-flows ===='
1171 PRINT *
1172 PRINT *,'====== STRUCTM statistics for nucleon/pion PDFs ====='
1173 PRINT *
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, ' %'
1184 ENDIF
1185 PRINT *
1186 PRINT *,'========= STRUCTP statistics for photon PDFs ========'
1187 PRINT *
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, ' %'
1198 ENDIF
1199 PRINT *
1200
1201 RETURN
1202 END
1203**********************************************************************
1204*
1205* $Id$
1206*
1207* $Log$
1208* Revision 1.7 2005/12/02 14:50:54 whalley
1209* Changes for new CTEQ code/AB sets
1210*
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
1213*
1214* Revision 1.5 2005/10/18 11:47:48 whalley
1215* Change to only set LHAPATH once per run
1216*
1217* Revision 1.1.1.2 1996/10/30 08:29:06 cernlib
1218* Version 7.04
1219*
1220* Revision 1.1.1.1 1996/04/12 15:29:26 plothow
1221* Version 7.01
1222*
1223*
1224 SUBROUTINE PFTOPDG(DX,DSCALE,DXPDF)
1225C
1226Cinclude "pdf/expdp.inc"
1227 double precision
1228 + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL,
1229 + DXPDF(-6:6)
1230C... call STRUCTM in PDFLIB to get flavour content
1231 CALL STRUCTM(DX,DSCALE,
1232 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
1233C... convert flavour convention of PDFLIB to PDG convention
1234 DXPDF(0) = DGL
1235 DXPDF(1) = DDNV + DDSEA
1236 DXPDF(2) = DUPV + DUSEA
1237 DXPDF(3) = DSTR
1238 DXPDF(4) = DCHM
1239 DXPDF(5) = DBOT
1240 DXPDF(6) = DTOP
1241 DXPDF(-1) = DDSEA
1242 DXPDF(-2) = DUSEA
1243 DXPDF(-3) = DSTR
1244 DXPDF(-4) = DCHM
1245 DXPDF(-5) = DBOT
1246 DXPDF(-6) = DTOP
1247C
1248 RETURN
1249 END
1250****************************************************************************
1251 subroutine setPDFpath(pathname)
1252 implicit real*8 (A-H,O-Z)
1253 include 'parmsetup.inc'
1254 character*(*) pathname
1255 include 'pathsetup.inc'
1256c character*132 lhapath
1257 common/LHAPDFC/lhapath
1258 character*20 lhaparm(20)
1259 real*8 lhavalue(20)
1260 common/LHACONTROL/lhaparm,lhavalue
1261 lhaparm(20) = 'LHAPATH'
1262 do j=1,lnblnk(lhapath)
1263 lhapath(j:j)=''
1264 enddo
1265 lhapath = pathname
1266 return
1267 end
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
1274 do j=1,20
1275 lhaparm(j)=lhaparm2(j)
1276 lhavalue(j)=lhavalue2(j)
1277 enddo
1278 return
1279 end
1280******************************************************************
1281 subroutine setlhaparm(lparm)
1282 implicit real*8 (a-h,o-z)
1283 character*(*) lparm
1284 character*20 lhaparm(20)
1285 real*8 lhavalue(20)
1286 common/LHACONTROL/lhaparm,lhavalue
1287 if(lparm.eq.'NOSTAT') then
1288 lhaparm(16)='NOSTAT'
1289 else if (lparm.eq.'16') then
1290 lhaparm(16)=''
1291 else if (lparm.eq.'LHAPDF') then
1292 lhaparm(17)='LHAPDF'
1293 else if (lparm.eq.'17') then
1294 lhaparm(17)=''
1295 else if (lparm.eq.'EXTRAPOLATE') then
1296 lhaparm(18)='EXTRAPOLATE'
1297 else if (lparm.eq.'18') then
1298 lhaparm(18)=''
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
1304 lhaparm(19)=''
1305 else
1306 print *,'WARNING from SetLHAPARM - value',lparm,'
1307 & not recognized!'
1308 endif
1309 return
1310 end
1311***************************************************************