]> git.uio.no Git - u/mrichter/AliRoot.git/blame - LHAPDF/lhapdf5.3.1/lhaglue.f
change call to AliESDtrack::GetMass to GetMass(kTRUE) - Ruben
[u/mrichter/AliRoot.git] / LHAPDF / lhapdf5.3.1 / lhaglue.f
CommitLineData
4e9e3152 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*********************************************************************
137C...PDFSET
138C...Initialization for use of parton distributions
139C... according to the LHAPDF interface.
140C...
141C...v4.0 28-Apr-2005 Option to use Alfa_s from LHAPDF
142C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
143C...v3.1 26-Apr-2004 New numbering scheme
144C...v3.0 23-Jan-2004 HERWIG interface added
145C...
146C...interface to LHAPDF library
147
148 SUBROUTINE PDFSET(PARM,VALUE,
149 > MSTU11,MSTP51,MSTP53,MSTP55,
150 > QCDL4,QCDL5,
151 > AXMIN,AXMAX,AQ2MIN,AQ2MAX)
152C...Double precision and integer declarations.
153 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
154 IMPLICIT INTEGER(I-N)
155c...additions for multiset use
156 include 'parmsetup.inc'
157 include 'pathsetup.inc'
158c character*172 LHANAMES(nmxset)
159 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
160 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
161 real*8 xxmin(nmxset),xxmax(nmxset),qq2min(nmxset),qq2max(nmxset)
162 save xxmin,xxmax,qq2min,qq2max
163C...Interface to LHAPDFLIB.
164c CHARACTER*172 LHANAME
165 INTEGER LHASET, LHAMEMB
166 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
167 SAVE /LHAPDF/
168 DOUBLE PRECISION QCDLHA4, QCDLHA5
169 INTEGER NFLLHA
170 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
171 SAVE /LHAPDFR/
172c CHARACTER*132 LHAPATH
173 COMMON/LHAPDFC/LHAPATH
174 SAVE /LHAPDFC/
175 CHARACTER*20 LHAPARM(20)
176 DOUBLE PRECISION LHAVALUE(20)
177 COMMON/LHACONTROL/LHAPARM,LHAVALUE
178 SAVE/LHACONTROL/
179 INTEGER LHAEXTRP
180 COMMON/LHAPDFE/LHAEXTRP
181 SAVE /LHAPDFE/
182 INTEGER LHASILENT
183 COMMON/LHASILENT/LHASILENT
184 SAVE /LHASILENT/
185 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
186 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
187 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
188 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
189 SAVE/LHAGLSTA/
190C...Interface to PDFLIB.
191 COMMON/W50511/ NPTYPEPDFL,NGROUPPDFL,NSETPDFL,MODEPDFL,
192 > NFLPDFL,LOPDFL,TMASPDFL
193 SAVE /W50511/
194 DOUBLE PRECISION TMASPDFL
195C...Interface to PDFLIB.
196 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
197 SAVE /W50513/
198 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
199C...Local arrays and character variables (NOT USED here DB)
200 CHARACTER*20 PARM(20)
201 DOUBLE PRECISION VALUE(20)
202C...
203 DOUBLE PRECISION QCDL4,QCDL5
204 DOUBLE PRECISION AXMIN,AXMAX,AQ2MIN,AQ2MAX
205 INTEGER LHAPATHLEN
206 INTEGER LHAINPUT
207 INTEGER LHASELECT
208 INTEGER LHAPRINT
209 INTEGER LHAONCE
210 INTEGER LHAFIVE
211 SAVE LHAONCE
212 SAVE LHAFIVE
213 logical first
214 save first
215
216 INTEGER LNROOT
217 CHARACTER*1000 CHROOT
218 CHROOT=' '
219 DATA LHAONCE/0/
220 DATA LHAFIVE/0/
221 data first/.TRUE./
222
223 if(first .AND. (LHAPARM(20).NE.'LHAPATH')) then
224c...overide the default PDFsets path
225c ... check first if the environmental variable LHAPATH is set
226 call getenv('LHAPATH',lhapath)
227 if(lhapath.eq.'') then
228C The environment variable LHAPATH is not set.
229C Take the data from $ALICE_ROOT/LHAPDF/PDFsets
230 CALL GETENV('ALICE_ROOT',CHROOT)
231 LNROOT = LNBLNK(CHROOT)
232 IF(LNROOT.LE.0) THEN
233 LHAPATH='PDFsets' ! Default value
234 ELSE
235 LHAPATH=CHROOT(1:LNROOT)//'/LHAPDF/PDFsets'
236 ENDIF
237 endif
238 first=.FALSE.
239 endif
240c
241*
242C...Init
243 LHAEXTRP = 0
244 IF(LHAPARM(18).EQ.'EXTRAPOLATE')
245 > THEN ! Extrapolate PDFs on own risk
246 LHAEXTRP = 1
247 ENDIF
248 LHASILENT = 0
249 IF(LHAPARM(19).EQ.'SILENT') THEN ! No printout (silent MODE)
250 LHASILENT = 1
251 ELSEIF(LHAPARM(19).EQ.'LOWKEY') THEN ! Print 5 times (lowkey MODE)
252 IF(LHAFIVE .LT. 6) THEN
253 LHAFIVE = LHAFIVE + 1
254 ELSE
255 LHASILENT = 1
256 ENDIF
257 ENDIF
258 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
259 LHAPRINT = MSTU11
260 IF(VALUE(1) .EQ. 1) THEN ! nucleon
261 LHAINPUT = ABS(MSTP51)
262 ELSEIF(VALUE(1) .EQ. 2) THEN ! pion
263 LHAINPUT = ABS(MSTP53)
264 ELSEIF(VALUE(1) .EQ. 3) THEN ! photon
265 LHAINPUT = ABS(MSTP55)
266 ENDIF
267 IF(LHASILENT .NE. 1)
268 > PRINT *,'==== PYTHIA WILL USE LHAPDF ===='
269 ELSEIF(PARM(1).EQ.'HWLHAPDF') THEN ! HERWIG
270 LHAINPUT = ABS(INT(VALUE(1)))
271 IF(LHAONCE.EQ.LHAINPUT) RETURN
272 IF(LHASILENT .NE. 1)
273 > PRINT *,'==== HERWIG WILL USE LHAPDF ===='
274 LHAPRINT = 6
275 LHAONCE = LHAINPUT
276 ELSEIF(PARM(1).EQ.'DEFAULT') THEN ! Stand-alone
277 LHAINPUT = ABS(INT(VALUE(1)))
278 IF(LHAONCE.EQ.LHAINPUT) RETURN
279 IF(LHASILENT .NE. 1)
280 > PRINT *,'==== STAND-ALONE LHAGLUE MODE TO USE LHAPDF ===='
281 LHAPRINT = 6
282 LHAONCE = LHAINPUT
283 ELSE
284 PRINT *,'== UNKNOWN LHAPDF INTERFACE CALL! STOP EXECUTION! =='
285 STOP
286 ENDIF
287C...Initialize parton distributions: LHAPDFLIB.
288 LHAPATHLEN=INDEX(LHAPATH,' ')-1
289 LHASET = LHAINPUT
290 XMIN = 1.0D-6 ! X_min for current PDF set
291 XMAX = 1.0D0 ! X_max for current PDF set
292 Q2MIN = 1.0D0**2 ! Q**2_min scale for current PDF set [GeV]
293 Q2MAX = 1.0D5**2 ! Q**2_max scale for current PDF set [GeV]
294C...
295C...Protons
296C...
297C...CTEQ Family
298 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 19999)) THEN
299 Q2MAX = 1.0D08
300 IF((LHAINPUT .GE. 10000) .AND. (LHAINPUT .LE. 10040)) THEN
301 LHASET = 10000
302 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6.LHpdf'
303 Q2MIN = 1.69D0
304 ELSEIF((LHAINPUT .GE. 10041) .AND. (LHAINPUT .LE. 10041)) THEN
305 LHASET = 10041
306 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6l.LHpdf'
307 Q2MIN = 1.69D0
308 ELSEIF((LHAINPUT .GE. 10042) .AND. (LHAINPUT .LE. 10042)) THEN
309 LHASET = 10042
310 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6ll.LHpdf'
311 Q2MIN = 1.69D0
312 ELSEIF((LHAINPUT .GE. 10050) .AND. (LHAINPUT .LE. 10090)) THEN
313 LHASET = 10050
314 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6mE.LHgrid'
315 Q2MIN = 1.69D0
316 ELSEIF((LHAINPUT .GE. 10100) .AND. (LHAINPUT .LE. 10140)) THEN
317 LHASET = 10100
318 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHpdf'
319 Q2MIN = 1.69D0
320 ELSEIF((LHAINPUT .GE. 10150) .AND. (LHAINPUT .LE. 10190)) THEN
321 LHASET = 10150
322 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq61.LHgrid'
323 Q2MIN = 1.69D0
324 ELSEIF((LHAINPUT .GE. 10250) .AND. (LHAINPUT .LE. 10269)) THEN
325 LHASET = 10250
326 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq6AB.LHgrid'
327 Q2MIN = 1.69D0
328 ELSEIF((LHAINPUT .GE. 10350) .AND. (LHAINPUT .LE. 10390)) THEN
329 LHASET = 10350
330 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq65.LHgrid'
331 Q2MIN = 1.69D0
332 Q2MAX = 1.0D10
333 XMIN = 1.0D-7
334 ELSEIF((LHAINPUT .GE. 10450) .AND. (LHAINPUT .LE. 10456)) THEN
335 LHASET = 10450
336 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq65c.LHgrid'
337 Q2MIN = 1.69D0
338 Q2MAX = 1.0D10
339 XMIN = 1.0D-7
340 ELSEIF((LHAINPUT .GE. 19050) .AND. (LHAINPUT .LE. 19050)) THEN
341 LHASET = 19050
342 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m.LHgrid'
343 XMIN=1.0D-5
344 ELSEIF((LHAINPUT .GE. 19051) .AND. (LHAINPUT .LE. 19051)) THEN
345 LHASET = 19051
346 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5m1.LHgrid'
347 XMIN=1.0D-5
348 ELSEIF((LHAINPUT .GE. 19053) .AND. (LHAINPUT .LE. 19053)) THEN
349 LHASET = 19053
350 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5f3.LHgrid'
351 XMIN=1.0D-5
352 ELSEIF((LHAINPUT .GE. 19054) .AND. (LHAINPUT .LE. 19054)) THEN
353 LHASET = 19054
354 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5f4.LHgrid'
355 XMIN=1.0D-5
356 ELSEIF((LHAINPUT .GE. 19060) .AND. (LHAINPUT .LE. 19060)) THEN
357 LHASET = 19060
358 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5d.LHgrid'
359 XMIN=1.0D-5
360 ELSEIF((LHAINPUT .GE. 19070) .AND. (LHAINPUT .LE. 19070)) THEN
361 LHASET = 19070
362 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq5l.LHgrid'
363 XMIN=1.0D-5
364 ELSEIF((LHAINPUT .GE. 19150) .AND. (LHAINPUT .LE. 19150)) THEN
365 LHASET = 19150
366 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4m.LHgrid'
367 Q2MIN = 2.56D0
368 XMIN=1.0D-5
369 ELSEIF((LHAINPUT .GE. 19160) .AND. (LHAINPUT .LE. 19160)) THEN
370 LHASET = 19160
371 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4d.LHgrid'
372 Q2MIN = 2.56D0
373 XMIN=1.0D-5
374 ELSEIF((LHAINPUT .GE. 19170) .AND. (LHAINPUT .LE. 19170)) THEN
375 LHASET = 19170
376 LHANAME=LHAPATH(1:LHAPATHLEN)//'/cteq4l.LHgrid'
377 Q2MIN = 2.56D0
378 XMIN=1.0D-5
379 ELSE
380 WRITE(LHAPRINT,5150) LHASET
381 STOP
382 ENDIF
383C...MRST Family
384 ELSEIF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 29999)) THEN
385 Q2MIN = 1.25D0
386 Q2MAX = 1.0D07
387 XMIN = 1.0D-5
388 IF((LHAINPUT .GE. 20000) .AND. (LHAINPUT .LE. 20004)) THEN
389 LHASET = 20000
390 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHpdf'
391 ELSEIF((LHAINPUT .GE. 20050) .AND. (LHAINPUT .LE. 20054)) THEN
392 LHASET = 20050
393 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nlo.LHgrid'
394 ELSEIF((LHAINPUT .GE. 20060) .AND. (LHAINPUT .LE. 20061)) THEN
395 LHASET = 20060
396 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001lo.LHgrid'
397 ELSEIF((LHAINPUT .GE. 20070) .AND. (LHAINPUT .LE. 20074)) THEN
398 LHASET = 20070
399 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001nnlo.LHgrid'
400 ELSEIF((LHAINPUT .GE. 20100) .AND. (LHAINPUT .LE. 20130)) THEN
401 LHASET = 20100
402 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHpdf'
403 ELSEIF((LHAINPUT .GE. 20150) .AND. (LHAINPUT .LE. 20180)) THEN
404 LHASET = 20150
405 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2001E.LHgrid'
406 ELSEIF((LHAINPUT .GE. 20200) .AND. (LHAINPUT .LE. 20201)) THEN
407 LHASET = 20200
408 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHpdf'
409 ELSEIF((LHAINPUT .GE. 20250) .AND. (LHAINPUT .LE. 20251)) THEN
410 LHASET = 20250
411 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nlo.LHgrid'
412 ELSEIF((LHAINPUT .GE. 20270) .AND. (LHAINPUT .LE. 20271)) THEN
413 LHASET = 20270
414 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2002nnlo.LHgrid'
415 ELSEIF((LHAINPUT .GE. 20300) .AND. (LHAINPUT .LE. 20301)) THEN
416 LHASET = 20300
417 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHpdf'
418 Q2MIN = 10.0D0
419 XMIN = 1.0D-3
420 ELSEIF((LHAINPUT .GE. 20350) .AND. (LHAINPUT .LE. 20351)) THEN
421 LHASET = 20350
422 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnlo.LHgrid'
423 Q2MIN = 10.0D0
424 XMIN = 1.0D-3
425 ELSEIF((LHAINPUT .GE. 20370) .AND. (LHAINPUT .LE. 20371)) THEN
426 LHASET = 20370
427 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2003cnnlo.LHgrid'
428 Q2MIN = 7.0D0
429 XMIN = 1.0D-3
430 ELSEIF((LHAINPUT .GE. 20400) .AND. (LHAINPUT .LE. 20401)) THEN
431 LHASET = 20400
432 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHpdf'
433 ELSEIF((LHAINPUT .GE. 20406) .AND. (LHAINPUT .LE. 20407)) THEN
434 LHASET = 20406
435 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHpdf'
436 ELSEIF((LHAINPUT .GE. 20408) .AND. (LHAINPUT .LE. 20409)) THEN
437 LHASET = 20408
438 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHpdf'
439 ELSEIF((LHAINPUT .GE. 20450) .AND. (LHAINPUT .LE. 20451)) THEN
440 LHASET = 20450
441 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nlo.LHgrid'
442 ELSEIF((LHAINPUT .GE. 20452) .AND. (LHAINPUT .LE. 20453)) THEN
443 LHASET = 20452
444 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3lo.LHgrid'
445 ELSEIF((LHAINPUT .GE. 20454) .AND. (LHAINPUT .LE. 20455)) THEN
446 LHASET = 20454
447 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4lo.LHgrid'
448 ELSEIF((LHAINPUT .GE. 20456) .AND. (LHAINPUT .LE. 20457)) THEN
449 LHASET = 20456
450 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF3nlo.LHgrid'
451 ELSEIF((LHAINPUT .GE. 20458) .AND. (LHAINPUT .LE. 20459)) THEN
452 LHASET = 20458
453 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004FF4nlo.LHgrid'
454 ELSEIF((LHAINPUT .GE. 20460) .AND. (LHAINPUT .LE. 20462)) THEN
455 LHASET = 20460
456 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004qed.LHgrid'
457 ELSEIF((LHAINPUT .GE. 20470) .AND. (LHAINPUT .LE. 20471)) THEN
458 LHASET = 20470
459 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2004nnlo.LHgrid'
460 ELSEIF((LHAINPUT .GE. 20550) .AND. (LHAINPUT .LE. 20580)) THEN
461 LHASET = 20550
462 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST2006nnlo.LHgrid'
463 Q2MIN = 1.0D0
464 Q2MAX = 1.0D09
465 XMIN = 1.0D-6
466 ELSEIF((LHAINPUT .GE. 29000) .AND. (LHAINPUT .LE. 29003)) THEN
467 LHASET = 29000
468 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98.LHpdf'
469 ELSEIF((LHAINPUT .GE. 29040) .AND. (LHAINPUT .LE. 29045)) THEN
470 LHASET = 29040
471 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98lo.LHgrid'
472 ELSEIF((LHAINPUT .GE. 29050) .AND. (LHAINPUT .LE. 29055)) THEN
473 LHASET = 29050
474 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98nlo.LHgrid'
475 ELSEIF((LHAINPUT .GE. 29060) .AND. (LHAINPUT .LE. 29065)) THEN
476 LHASET = 29060
477 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98dis.LHgrid'
478 ELSEIF((LHAINPUT .GE. 29070) .AND. (LHAINPUT .LE. 29071)) THEN
479 LHASET = 29070
480 LHANAME=LHAPATH(1:LHAPATHLEN)//'/MRST98ht.LHgrid'
481 ELSE
482 WRITE(LHAPRINT,5150) LHASET
483 STOP
484 ENDIF
485C...Fermi Family
486 ELSEIF((LHAINPUT .GE. 30000) .AND. (LHAINPUT .LE. 39999)) THEN
487 IF((LHAINPUT .GE. 30100) .AND. (LHAINPUT .LE. 30200)) THEN
488 LHASET = 30100
489 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_100.LHpdf'
490 ELSEIF((LHAINPUT .GE. 31000) .AND. (LHAINPUT .LE. 32000)) THEN
491 LHASET = 31000
492 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Fermi2002_1000.LHpdf'
493 ELSE
494 WRITE(LHAPRINT,5150) LHASET
495 STOP
496 ENDIF
497C...Alekhin Family
498 ELSEIF((LHAINPUT .GE. 40000) .AND. (LHAINPUT .LE. 49999)) THEN
499 IF((LHAINPUT .GE. 40100) .AND. (LHAINPUT .LE. 40200)) THEN
500 LHASET = 40100
501 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_100.LHpdf'
502 ELSEIF((LHAINPUT .GE. 41000) .AND. (LHAINPUT .LE. 41999)) THEN
503 LHASET = 41000
504 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Alekhin_1000.LHpdf'
505 ELSEIF((LHAINPUT .GE. 40350) .AND. (LHAINPUT .LE. 40367)) THEN
506 LHASET = 40350
507 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_lo.LHgrid'
508 XMIN = 1.0D-7
509 Q2MIN = 0.8D0
510 Q2MAX = 2.0D08
511 ELSEIF((LHAINPUT .GE. 40450) .AND. (LHAINPUT .LE. 40467)) THEN
512 LHASET = 40450
513 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nlo.LHgrid'
514 XMIN = 1.0D-7
515 Q2MIN = 0.8D0
516 Q2MAX = 2.0D08
517 ELSEIF((LHAINPUT .GE. 40550) .AND. (LHAINPUT .LE. 40567)) THEN
518 LHASET = 40550
519 LHANAME=LHAPATH(1:LHAPATHLEN)//'/a02m_nnlo.LHgrid'
520 XMIN = 1.0D-7
521 Q2MIN = 0.8D0
522 Q2MAX = 2.0D08
523 ELSE
524 WRITE(LHAPRINT,5150) LHASET
525 STOP
526 ENDIF
527C...Botje Family
528 ELSEIF((LHAINPUT .GE. 50000) .AND. (LHAINPUT .LE. 59999)) THEN
529 IF((LHAINPUT .GE. 50100) .AND. (LHAINPUT .LE. 50200)) THEN
530 LHASET = 50100
531 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_100.LHpdf'
532 ELSEIF((LHAINPUT .GE. 51000) .AND. (LHAINPUT .LE. 51999)) THEN
533 LHASET = 51000
534 LHANAME=LHAPATH(1:LHAPATHLEN)//'/Botje_1000.LHpdf'
535 ELSE
536 WRITE(LHAPRINT,5150) LHASET
537 STOP
538 ENDIF
539C...ZEUS Family
540 ELSEIF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 69999)) THEN
541 Q2MIN = 0.3D0
542 Q2MAX = 2.0D05
543 IF((LHAINPUT .GE. 60000) .AND. (LHAINPUT .LE. 60022)) THEN
544 LHASET = 60000
545 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_TR.LHpdf'
546 ELSEIF((LHAINPUT .GE. 60100) .AND. (LHAINPUT .LE. 60122)) THEN
547 LHASET = 60100
548 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_ZM.LHpdf'
549 ELSEIF((LHAINPUT .GE. 60200) .AND. (LHAINPUT .LE. 60222)) THEN
550 LHASET = 60200
551 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2002_FF.LHpdf'
552 ELSEIF((LHAINPUT .GE. 60300) .AND. (LHAINPUT .LE. 60322)) THEN
553 LHASET = 60300
554 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ZEUS2005_ZJ.LHpdf'
555 ELSE
556 WRITE(LHAPRINT,5150) LHASET
557 STOP
558 ENDIF
559C...H1 Family
560 ELSEIF((LHAINPUT .GE. 70000) .AND. (LHAINPUT .LE. 79999)) THEN
561 Q2MIN = 1.5D0
562 Q2MAX = 3.5D04
563 XMIN = 5.7D-5
564 IF((LHAINPUT .GE. 70050) .AND. (LHAINPUT .LE. 70050)) THEN
565 LHASET = 70050
566 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000ms.LHgrid'
567 ELSEIF((LHAINPUT .GE. 70051) .AND. (LHAINPUT .LE. 70070)) THEN
568 LHASET = 70050
569 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000msE.LHgrid'
570 ELSEIF((LHAINPUT .GE. 70150) .AND. (LHAINPUT .LE. 70150)) THEN
571 LHASET = 70150
572 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000dis.LHgrid'
573 ELSEIF((LHAINPUT .GE. 70151) .AND. (LHAINPUT .LE. 70170)) THEN
574 LHASET = 70150
575 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000disE.LHgrid'
576 ELSEIF((LHAINPUT .GE. 70250) .AND. (LHAINPUT .LE. 70250)) THEN
577 LHASET = 70250
578 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo.LHgrid'
579 ELSEIF((LHAINPUT .GE. 70251) .AND. (LHAINPUT .LE. 70270)) THEN
580 LHASET = 70250
581 LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000loE.LHgrid'
582c tempoararily removed on returning to original H!2000 files
583c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN
584c LHASET = 70350
585c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid'
586c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN
587c LHASET = 70350
588c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid'
589 ELSE
590 WRITE(LHAPRINT,5150) LHASET
591 STOP
592 ENDIF
593C...GRV Family
594 ELSEIF((LHAINPUT .GE. 80000) .AND. (LHAINPUT .LE. 89999)) THEN
595 Q2MIN = 0.8D0
596 Q2MAX = 2.0D06
597 XMIN = 1.0D-9
598 IF((LHAINPUT .GE. 80050) .AND. (LHAINPUT .LE. 80051)) THEN
599 LHASET = 80050
600 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98nlo.LHgrid'
601 ELSEIF((LHAINPUT .GE. 80060) .AND. (LHAINPUT .LE. 80060)) THEN
602 LHASET = 80060
603 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRV98lo.LHgrid'
604 ELSE
605 WRITE(LHAPRINT,5150) LHASET
606 STOP
607 ENDIF
608C...
609C...Pions
610C...
611C...OW-PI Family
612 ELSEIF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
613 Q2MIN = 4.0D0
614 Q2MAX = 2.0D03
615 XMIN = 5.0D-03
616 XMAX = 0.9998D0
617 IF((LHAINPUT .GE. 210) .AND. (LHAINPUT .LE. 212)) THEN
618 LHASET = 210
619 LHANAME=LHAPATH(1:LHAPATHLEN)//'/OWPI.LHgrid'
620 ELSE
621 WRITE(LHAPRINT,5150) LHASET
622 STOP
623 ENDIF
624C...SMRS-PI Family
625 ELSEIF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
626 Q2MIN = 5.0D0
627 Q2MAX = 1.31D06
628 XMIN = 1.0D-05
629 XMAX = 0.9998D0
630 IF((LHAINPUT .GE. 230) .AND. (LHAINPUT .LE. 233)) THEN
631 LHASET = 230
632 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SMRSPI.LHgrid'
633 ELSE
634 WRITE(LHAPRINT,5150) LHASET
635 STOP
636 ENDIF
637C...GRV-PI Family
638 ELSEIF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 252)) THEN
639 Q2MAX = 1.00D06
640 XMIN = 1.0D-05
641 XMAX = 0.9998D0
642 IF((LHAINPUT .GE. 250) .AND. (LHAINPUT .LE. 251)) THEN
643 Q2MIN = 3.0D-1
644 LHASET = 250
645 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI1.LHgrid'
646 ELSEIF((LHAINPUT .GE. 252) .AND. (LHAINPUT .LE. 252)) THEN
647 Q2MIN = 2.5D-1
648 LHASET = 252
649 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVPI0.LHgrid'
650 ELSE
651 WRITE(LHAPRINT,5150) LHASET
652 STOP
653 ENDIF
654C...ABFKW-PI Family
655 ELSEIF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
656 Q2MIN = 2.0D0
657 Q2MAX = 1.00D08
658 XMIN = 1.0D-03
659 XMAX = 0.9998D0
660 IF((LHAINPUT .GE. 260) .AND. (LHAINPUT .LE. 263)) THEN
661 LHASET = 260
662 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ABFKWPI.LHgrid'
663 ELSE
664 WRITE(LHAPRINT,5150) LHASET
665 STOP
666 ENDIF
667C...
668C...Photons
669C...
670C...DO-G Family
671 ELSEIF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 312)) THEN
672 Q2MIN = 1.0D01
673 Q2MAX = 1.00D04
674 XMIN = 1.0D-05
675 XMAX = 0.9D0
676 IF((LHAINPUT .GE. 310) .AND. (LHAINPUT .LE. 311)) THEN
677 LHASET = 310
678 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG0.LHgrid'
679 ELSEIF((LHAINPUT .GE. 312) .AND. (LHAINPUT .LE. 312)) THEN
680 LHASET = 312
681 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DOG1.LHgrid'
682 ELSE
683 WRITE(LHAPRINT,5150) LHASET
684 STOP
685 ENDIF
686C...DG-G Family
687 ELSEIF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 324)) THEN
688 XMIN = 1.0D-05
689 XMAX = 0.9998D0
690 LHASET = 320
691 IF((LHAINPUT .GE. 320) .AND. (LHAINPUT .LE. 321)) THEN
692 Q2MIN = 1.0D0
693 Q2MAX = 1.0D04
694c LHASET = 320
695 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
696 ELSEIF((LHAINPUT .GE. 322) .AND. (LHAINPUT .LE. 322)) THEN
697 Q2MIN = 1.0D0
698 Q2MAX = 5.0D01
699c LHASET = 322
700 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
701 ELSEIF((LHAINPUT .GE. 323) .AND. (LHAINPUT .LE. 323)) THEN
702 Q2MIN = 2.0D1
703 Q2MAX = 5.0D02
704c LHASET = 323
705 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
706 ELSEIF((LHAINPUT .GE. 324) .AND. (LHAINPUT .LE. 324)) THEN
707 Q2MIN = 2.0D2
708 Q2MAX = 1.0D04
709c LHASET = 324
710 LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid'
711 ELSE
712 WRITE(LHAPRINT,5150) LHASET
713 STOP
714 ENDIF
715C...LAC/GAL-G Family
716 ELSEIF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 334)) THEN
717 Q2MIN = 4.0D00
718 Q2MAX = 1.0D05
719 XMIN = 1.0D-04
720 XMAX = 0.9998D0
721 LHASET = 330
722 IF((LHAINPUT .GE. 330) .AND. (LHAINPUT .LE. 332)) THEN
723c LHASET = 330
724 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
725 ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN
726 Q2MIN = 1.0D00
727c LHASET = 333
728 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
729 ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN
730 Q2MIN = 4.0D00
731c LHASET = 334
732 LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid'
733 ELSE
734 WRITE(LHAPRINT,5150) LHASET
735 STOP
736 ENDIF
737C...GSG/GSG96-G Family
738 ELSEIF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 345)) THEN
739 Q2MIN = 5.3D00
740 Q2MAX = 1.0D08
741 XMIN = 5.0D-04
742 XMAX = 0.9998D0
743 IF((LHAINPUT .GE. 340) .AND. (LHAINPUT .LE. 341)) THEN
744 LHASET = 340
745 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG1.LHgrid'
746 ELSEIF((LHAINPUT .GE. 342) .AND. (LHAINPUT .LE. 343)) THEN
747 LHASET = 342
748 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG0.LHgrid'
749 ELSEIF((LHAINPUT .GE. 344) .AND. (LHAINPUT .LE. 344)) THEN
750 LHASET = 344
751 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG961.LHgrid'
752 ELSEIF((LHAINPUT .GE. 345) .AND. (LHAINPUT .LE. 345)) THEN
753 LHASET = 345
754 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GSG960.LHgrid'
755 ELSE
756 WRITE(LHAPRINT,5150) LHASET
757 STOP
758 ENDIF
759C...GRV-G Family
760 ELSEIF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 354)) THEN
761 Q2MIN = 3.0D-1
762 Q2MAX = 1.0D06
763 XMIN = 1.0D-05
764 XMAX = 0.9998D0
765 IF((LHAINPUT .GE. 350) .AND. (LHAINPUT .LE. 352)) THEN
766 LHASET = 350
767 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG1.LHgrid'
768 ELSEIF((LHAINPUT .GE. 353) .AND. (LHAINPUT .LE. 353)) THEN
769 Q2MIN = 2.5D-1
770 LHASET = 353
771 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
772 ELSEIF((LHAINPUT .GE. 354) .AND. (LHAINPUT .LE. 354)) THEN
773 Q2MIN = 6.0D-1
774 Q2MAX = 5.0D04
775 LHASET = 354
776 LHANAME=LHAPATH(1:LHAPATHLEN)//'/GRVG0.LHgrid'
777 ELSE
778 WRITE(LHAPRINT,5150) LHASET
779 STOP
780 ENDIF
781C...ACFGP-G Family
782 ELSEIF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
783 Q2MIN = 2.0D00
784 Q2MAX = 5.5D05
785 XMIN = 1.37D-03
786 XMAX = 0.9998D0
787 IF((LHAINPUT .GE. 360) .AND. (LHAINPUT .LE. 363)) THEN
788 LHASET = 360
789 LHANAME=LHAPATH(1:LHAPATHLEN)//'/ACFGPG.LHgrid'
790 ELSE
791 WRITE(LHAPRINT,5150) LHASET
792 STOP
793 ENDIF
794C...WHIT-G Family
795 ELSEIF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
796 Q2MIN = 4.0D00
797 Q2MAX = 2.5D03
798 XMIN = 1.0D-03
799 XMAX = 0.9998D0
800 IF((LHAINPUT .GE. 380) .AND. (LHAINPUT .LE. 386)) THEN
801 LHASET = 380
802 LHANAME=LHAPATH(1:LHAPATHLEN)//'/WHITG.LHgrid'
803 ELSE
804 WRITE(LHAPRINT,5150) LHASET
805 STOP
806 ENDIF
807C...SAS-G Family
808 ELSEIF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 398)) THEN
809 Q2MAX = 5.0D04
810 XMIN = 1.0D-05
811 XMAX = 0.9998D0
812 LHASET = 390
813 IF((LHAINPUT .GE. 390) .AND. (LHAINPUT .LE. 392)) THEN
814 Q2MIN = 3.6D-1
815c LHASET = 390
816 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
817 ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN
818 Q2MIN = 4.0D00
819c LHASET = 393
820 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
821 ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN
822 Q2MIN = 3.6D-1
823c LHASET = 395
824 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
825 ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN
826 Q2MIN = 4.0D00
827c LHASET = 397
828 LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid'
829 ELSE
830 WRITE(LHAPRINT,5150) LHASET
831 STOP
832 ENDIF
833C...Unknown Family ?! Giving up
834 ELSE
835 WRITE(LHAPRINT,5150) LHASET
836 STOP
837 ENDIF
838
839 LHAMEMB=LHAINPUT-LHASET
840c....Now work out if we have already called this set/member
841 iset = 0
842 do j=1,nsets
843 if(lhaname.eq.lhanames(j).and.
844 + lhamemb.eq.lhamembers(j)) then
845 iset = j
846 endif
847 enddo
848 if(iset.eq.0) then
849 nsets=nsets+1
850 if(nsets.gt.nmxset) then
851 if(LHASILENT.ne.1) then
852 print *,'WARNING:too many sets initialised'
853 print *,'overwriting from set 1 again'
854 endif
855 nsets = 1
856c stop
857 endif
858 iset=nsets
859 lhanames(iset)=lhaname
860 lhanumbers(iset)=lhainput
861 lhamembers(iset)=lhamemb
862 xxmin(iset)=xmin
863 xxmax(iset)=xmax
864 qq2min(iset)=q2min
865 qq2max(iset)=q2max
866 CALL INITPDFSETM(iset,LHANAME)
867 CALL NUMBERPDFM(iset,LHAALLMEM)
868 IF(LHASILENT .NE. 1) THEN
869 WRITE(LHAPRINT,5151)
870 WRITE(LHAPRINT,5152) LHANAME
871 WRITE(LHAPRINT,5153) LHAALLMEM
872 WRITE(LHAPRINT,5154)
873 ENDIF
874 IF ((LHAMEMB.LT.0) .OR. (LHAMEMB.GT.LHAALLMEM)) THEN
875 WRITE(LHAPRINT,5155) LHAMEMB
876 WRITE(LHAPRINT,5156) LHAALLMEM
877 STOP
878 ENDIF
879
880c print *,'calling initpdf',lhamemb
881c print *,'calling initpdfm ',iset,lhaname,lhamemb
882c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb
883 CALL INITPDFM(iset,LHAMEMB)
884 endif
885c... the rest is done every time pdfset is called
886c print *,'setting nset to:',iset
887 call setnset(iset)
888 call setnmem(iset,lhamemb)
889 xmin = xxmin(iset)
890 xmax = xxmax(iset)
891 q2min=qq2min(iset)
892 q2max=qq2max(iset)
893 call GetLam4M(iset,LHAMEMB,qcdl4)
894 call GetLam5M(iset,LHAMEMB,qcdl5)
895
896 QMZ = 91.1876D0
897 alphasLHA = alphasPDFM(iset,QMZ)
898 IF(LHASILENT .NE. 1)
899 > WRITE(LHAPRINT,5158) alphasLHA
900
901 IF(LHAPARM(17).EQ.'LHAPDF') THEN
902 NPTYPEPDFL = 1 ! Proton PDFs
903 NFLPDFL = 4
904 QCDLHA4 = QCDL4
905 QCDLHA5 = QCDL5
906 IF(LHASILENT .NE. 1)
907 > WRITE(LHAPRINT,5159) QCDL4, QCDL5
908 ELSE
909 NPTYPEPDFL = 1 ! Proton PDFs
910 NFLPDFL = 4
911 ALAMBDA = 0.192D0
912 QCDLHA4 = ALAMBDA
913 QCDLHA5 = ALAMBDA
914 IF(PARM(1).EQ.'NPTYPE') THEN ! PYTHIA
915 QCDL4 = ALAMBDA
916 QCDL5 = ALAMBDA
917 ENDIF
918 ENDIF
919
920 AXMIN = XMIN
921 AXMAX = XMAX
922 AQ2MIN = Q2MIN
923 AQ2MAX = Q2MAX
924
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(DX,DQ,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...Interface to LHAPDFLIB.
982 include 'pathsetup.inc'
983c CHARACTER*172 LHANAME
984 INTEGER LHASET, LHAMEMB
985 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
986 SAVE /LHAPDF/
987c...added next 2 lines for structp fix
988 integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset)
989 common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets
990c
991 DOUBLE PRECISION QCDLHA4, QCDLHA5
992 INTEGER NFLLHA
993 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
994 SAVE /LHAPDFR/
995 CHARACTER*20 LHAPARM(20)
996 DOUBLE PRECISION LHAVALUE(20)
997 COMMON/LHACONTROL/LHAPARM,LHAVALUE
998 SAVE/LHACONTROL/
999 INTEGER LHAEXTRP
1000 COMMON/LHAPDFE/LHAEXTRP
1001 SAVE /LHAPDFE/
1002 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1003 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1004 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1005 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1006 SAVE/LHAGLSTA/
1007C...Interface to PDFLIB.
1008 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1009 SAVE /W50513/
1010 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1011C...Local variables
1012 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1013 DOUBLE PRECISION DX,DQ,X,Q,F(-6:6)
1014
1015 X = DX
1016 Q = DQ
1017 Q2 = Q**2
1018C...Statistics
1019 IF(LHAPARM(16).NE.'NOSTAT') THEN
1020 TOTNUM = TOTNUM+1.D0
1021 IF(X .LT. XMIN) XMINNUM = XMINNUM+1.D0
1022 IF(X .GT. XMAX) XMAXNUM = XMAXNUM+1.D0
1023 IF(Q2 .LT. Q2MIN) Q2MINNUM = Q2MINNUM+1.D0
1024 IF(Q2 .GT. Q2MAX) Q2MAXNUM = Q2MAXNUM+1.D0
1025 ENDIF
1026
1027C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1028C...freezing x*f(x,Q2) at borders.
1029 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1030 XIN=MAX(XMIN,MIN(XMAX,X))
1031 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1032 ELSE ! adventurous mode == OWN RISK !
1033 XIN=X
1034 ENDIF
1035
1036 call getnset(iset)
1037c print *,'calling evolvepdfm:',iset
1038C
1039C...fix to allow STRUCTM to work for photon PDFs (Herwig does this)
1040C...set P2 = 0.0d0 and IP2 = 0
1041 if(LHANUMBERS(iset).ge.300.and.LHANUMBERS(iset).le.399) then
1042 P2 = 0.0d0
1043 IP2 = 0
1044 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1045 else
1046 CALL EVOLVEPDFM(iset,XIN,Q,F)
1047 endif
1048 GLU = F(0)
1049 DSEA = F(-1)
1050 DNV = F(1) - DSEA
1051 USEA = F(-2)
1052 UPV = F(2) - USEA
1053 STR = F(3)
1054 CHM = F(4)
1055 BOT = F(5)
1056 TOP = F(6)
1057
1058 RETURN
1059 END
1060
1061C*********************************************************************
1062
1063C...STRUCTP
1064C...Gives parton distributions according to the LHAPDF interface.
1065C...Used for photons.
1066C...
1067C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4
1068C...
1069C...interface to LHAPDF library
1070
1071 SUBROUTINE STRUCTP
1072 > (DX,DQ2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU)
1073
1074C...Double precision and integer declarations.
1075 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1076 IMPLICIT INTEGER(I-N)
1077 include 'parmsetup.inc'
1078C...Interface to LHAPDFLIB.
1079 include 'pathsetup.inc'
1080c CHARACTER*172 LHANAME
1081 INTEGER LHASET, LHAMEMB
1082 COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB
1083 SAVE /LHAPDF/
1084 DOUBLE PRECISION QCDLHA4, QCDLHA5
1085 INTEGER NFLLHA
1086 COMMON/LHAPDFR/QCDLHA4, QCDLHA5, NFLLHA
1087 SAVE /LHAPDFR/
1088 CHARACTER*20 LHAPARM(20)
1089 DOUBLE PRECISION LHAVALUE(20)
1090 COMMON/LHACONTROL/LHAPARM,LHAVALUE
1091 SAVE/LHACONTROL/
1092 INTEGER LHAEXTRP
1093 COMMON/LHAPDFE/LHAEXTRP
1094 SAVE /LHAPDFE/
1095 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1096 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1097 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1098 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1099 SAVE/LHAGLSTA/
1100C...Interface to PDFLIB.
1101 COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX
1102 SAVE /W50513/
1103 DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX
1104C...Local variables
1105 DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU
1106 DOUBLE PRECISION DX,DQ2,Q2,X,Q,F(-6:6)
1107
1108 X = DX
1109 Q2 = DQ2
1110C...Statistics
1111 IF(LHAPARM(16).NE.'NOSTAT') THEN
1112 TOTNUP = TOTNUP+1.D0
1113 IF(X .LT. XMIN) XMINNUP = XMINNUP+1.D0
1114 IF(X .GT. XMAX) XMAXNUP = XMAXNUP+1.D0
1115 IF(Q2 .LT. Q2MIN) Q2MINNUP = Q2MINNUP+1.D0
1116 IF(Q2 .GT. Q2MAX) Q2MAXNUP = Q2MAXNUP+1.D0
1117 ENDIF
1118
1119C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by
1120C...freezing x*f(x,Q2) at borders.
1121 Q = DSQRT(Q2)
1122 IF(LHAEXTRP .NE. 1) THEN ! safe mode == "freeze"
1123 XIN=MAX(XMIN,MIN(XMAX,X))
1124 Q=SQRT(MAX(0D0,Q2MIN,MIN(Q2MAX,Q2)))
1125 ELSE ! adventurous mode == OWN RISK !
1126 XIN=X
1127 ENDIF
1128 call getnset(iset)
1129 CALL EVOLVEPDFPM(iset,XIN,Q,P2,IP2,F)
1130
1131 GLU = F(0)
1132 DSEA = F(-1)
1133 DNV = F(1) - DSEA
1134 USEA = F(-2)
1135 UPV = F(2) - USEA
1136 STR = F(3)
1137 CHM = F(4)
1138 BOT = F(5)
1139 TOP = F(6)
1140
1141 RETURN
1142 END
1143
1144C*********************************************************************
1145
1146C...PDFSTA
1147C...For statistics ON structure functions (under/over-flows)
1148C...
1149C...Author: Dimitri Bourilkov bourilkov@mailaps.org
1150C...
1151C...
1152C...first introduced in v4.0 28-Apr-2005
1153C...
1154
1155 SUBROUTINE PDFSTA
1156
1157C...Double precision and integer declarations.
1158 IMPLICIT DOUBLE PRECISION(A-H, O-Z)
1159 IMPLICIT INTEGER(I-N)
1160C...Interface to LHAPDFLIB.
1161 DOUBLE PRECISION XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1162 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1163 COMMON/LHAGLSTA/ XMINNUM,XMAXNUM,Q2MINNUM,Q2MAXNUM,TOTNUM,
1164 > XMINNUP,XMAXNUP,Q2MINNUP,Q2MAXNUP,TOTNUP
1165 SAVE/LHAGLSTA/
1166
1167 PRINT *
1168 PRINT *,'===== PDFSTA statistics for PDF under/over-flows ===='
1169 PRINT *
1170 PRINT *,'====== STRUCTM statistics for nucleon/pion PDFs ====='
1171 PRINT *
1172 PRINT *,' total # of calls ',TOTNUM
1173 IF(TOTNUM .GT. 0.D0) THEN
1174 PERCBELOW = 100.D0*XMINNUM/TOTNUM
1175 PERCABOVE = 100.D0*XMAXNUM/TOTNUM
1176 PRINT *,' X below PDF min ',XMINNUM,' or ',PERCBELOW, ' %'
1177 PRINT *,' X above PDF max ',XMAXNUM,' or ',PERCABOVE, ' %'
1178 PERCBELOW = 100.D0*Q2MINNUM/TOTNUM
1179 PERCABOVE = 100.D0*Q2MAXNUM/TOTNUM
1180 PRINT *,' Q2 below PDF min ',Q2MINNUM,' or ',PERCBELOW, ' %'
1181 PRINT *,' Q2 above PDF max ',Q2MAXNUM,' or ',PERCABOVE, ' %'
1182 ENDIF
1183 PRINT *
1184 PRINT *,'========= STRUCTP statistics for photon PDFs ========'
1185 PRINT *
1186 PRINT *,' total # of calls ',TOTNUP
1187 IF(TOTNUP .GT. 0.D0) THEN
1188 PERCBELOW = 100.D0*XMINNUP/TOTNUP
1189 PERCABOVE = 100.D0*XMAXNUP/TOTNUP
1190 PRINT *,' X below PDF min ',XMINNUP,' or ',PERCBELOW, ' %'
1191 PRINT *,' X above PDF max ',XMAXNUP,' or ',PERCABOVE, ' %'
1192 PERCBELOW = 100.D0*Q2MINNUP/TOTNUP
1193 PERCABOVE = 100.D0*Q2MAXNUP/TOTNUP
1194 PRINT *,' Q2 below PDF min ',Q2MINNUP,' or ',PERCBELOW, ' %'
1195 PRINT *,' Q2 above PDF max ',Q2MAXNUP,' or ',PERCABOVE, ' %'
1196 ENDIF
1197 PRINT *
1198
1199 RETURN
1200 END
1201**********************************************************************
1202*
1203* $Id: lhaglue.f 209 2007-11-16 15:14:45Z whalley $
1204*
1205* $Log$
1206* Revision 1.7 2005/12/02 14:50:54 whalley
1207* Changes for new CTEQ code/AB sets
1208*
1209* Revision 1.6 2005/10/18 15:35:48 whalley
1210* fix to allow LHAPATH to be user defined as well as lhapdf-config
1211*
1212* Revision 1.5 2005/10/18 11:47:48 whalley
1213* Change to only set LHAPATH once per run
1214*
1215* Revision 1.1.1.2 1996/10/30 08:29:06 cernlib
1216* Version 7.04
1217*
1218* Revision 1.1.1.1 1996/04/12 15:29:26 plothow
1219* Version 7.01
1220*
1221*
1222 SUBROUTINE PFTOPDG(DX,DSCALE,DXPDF)
1223C
1224Cinclude "pdf/expdp.inc"
1225 double precision
1226 + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL,
1227 + DXPDF(-6:6)
1228C... call STRUCTM in PDFLIB to get flavour content
1229 CALL STRUCTM(DX,DSCALE,
1230 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
1231C... convert flavour convention of PDFLIB to PDG convention
1232 DXPDF(0) = DGL
1233 DXPDF(1) = DDNV + DDSEA
1234 DXPDF(2) = DUPV + DUSEA
1235 DXPDF(3) = DSTR
1236 DXPDF(4) = DCHM
1237 DXPDF(5) = DBOT
1238 DXPDF(6) = DTOP
1239 DXPDF(-1) = DDSEA
1240 DXPDF(-2) = DUSEA
1241 DXPDF(-3) = DSTR
1242 DXPDF(-4) = DCHM
1243 DXPDF(-5) = DBOT
1244 DXPDF(-6) = DTOP
1245C
1246 RETURN
1247 END
1248****************************************************************************
1249 subroutine setPDFpath(pathname)
1250 implicit real*8 (A-H,O-Z)
1251 include 'parmsetup.inc'
1252 character*(*) pathname
1253 include 'pathsetup.inc'
1254c character*132 lhapath
1255 common/LHAPDFC/lhapath
1256 character*20 lhaparm(20)
1257 real*8 lhavalue(20)
1258 common/LHACONTROL/lhaparm,lhavalue
1259 lhaparm(20) = 'LHAPATH'
1260c do j=1,lnblnk(lhapath)
1261 do j=1,LEN_TRIM(lhapath)
1262 lhapath(j:j)=''
1263 enddo
1264 lhapath = pathname
1265 return
1266 end
1267***********************************************************************
1268 subroutine lhaset(lhaparm2,lhavalue2)
1269 implicit real*8 (a-h,o-z)
1270 character*20 lhaparm(20),lhaparm2(20)
1271 real*8 lhavalue(20),lhavalue2(20)
1272 common/LHACONTROL/lhaparm,lhavalue
1273 do j=1,20
1274 lhaparm(j)=lhaparm2(j)
1275 lhavalue(j)=lhavalue2(j)
1276 enddo
1277 return
1278 end
1279******************************************************************
1280 subroutine setlhaparm(lparm)
1281 implicit real*8 (a-h,o-z)
1282c character*(*) lparm,parm
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
1311 entry getlhaparm(nparm,lparm)
1312 lparm = lhaparm(nparm)
1313 return
1314
1315 end
1316***************************************************************