]>
Commit | Line | Data |
---|---|---|
3c5d1739 | 1 | C********************************************************************* |
2 | ||
3 | C... LHAGLUE Interface to LHAPDF library of modern parton | |
4 | C... density functions (PDF) with uncertainties | |
5 | C... | |
6 | C...Authors for v4: Dimitri Bourilkov, Craig Group, Mike Whalley | |
7 | C... | |
8 | C...Authors for v3: Dimitri Bourilkov, Craig Group, Mike Whalley | |
9 | C... | |
10 | C...Author for v1 and v2: Dimitri Bourilkov bourilkov@mailaps.org | |
11 | C... University of Florida | |
12 | C... | |
13 | C...HERWIG interface by Dimitri Bourilkov and Craig Group | |
14 | C... | |
15 | C...New numbering scheme and upgrade for LHAPDF v2.1 | |
16 | C...by Dimitri Bourilkov and Mike Whalley | |
17 | C... | |
18 | C...For more information, or when you cite this interface, currently | |
19 | C...the official reference is: | |
20 | C...D.Bourilkov, "Study of Parton Density Function Uncertainties with | |
21 | C...LHAPDF and PYTHIA at LHC", hep-ph/0305126. | |
22 | C... | |
23 | C...The official LHAPDF page is: | |
24 | C... | |
25 | C... http://durpdg.dur.ac.uk/lhapdf/index.html | |
26 | C... | |
27 | C...The interface contains four subroutines (similar to PDFLIB). | |
28 | C...It can be used seamlessly by Monte Carlo generators | |
29 | C...interfaced to PDFLIB or in stand-alone mode. | |
30 | C... | |
31 | C... For initialization (called once) | |
32 | C... | |
33 | C... PDFSET(PARM,VALUE) | |
34 | C... | |
35 | C... For the proton/pion structure functions | |
36 | C... | |
37 | C... STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
38 | C... | |
39 | C... For the photon structure functions | |
40 | C... | |
41 | C... STRUCTP(X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
42 | C... | |
43 | C... For statistics ON structure functions (under/over-flows) | |
44 | C... | |
45 | C... PDFSTA | |
46 | C... | |
47 | C...This interface can be invoked in 3 ways depending | |
48 | C...on the value of PARM(1) provided by the user when | |
49 | C...calling PDFSET(PARM,VALUE): | |
50 | C... | |
51 | C... For PYTHIA: PARM(1).EQ.'NPTYPE' | |
52 | C... (this is set automatically by PYTHIA) | |
53 | C... | |
54 | C... For HERWIG: PARM(1).EQ.'HWLHAPDF' | |
55 | C... (set by the USER e.g. in the main program like this: | |
56 | C... AUTPDF(1) = 'HWLHAPDF' | |
57 | C... AUTPDF(2) = 'HWLHAPDF' ) | |
58 | C... | |
59 | C... For Stand-alone: PARM(1).EQ.'DEFAULT' | |
60 | C... (can be used for PDF studies or when interfacing | |
61 | C... new generators) | |
62 | C... | |
63 | C...The LHAPDF set/member is selected depending on the value of: | |
64 | C... | |
65 | C... PYTHIA: ABS(MSTP(51)) - proton | |
66 | C... ABS(MSTP(53)) - pion | |
67 | C... ABS(MSTP(55)) - photon | |
68 | C... | |
69 | C... HERWIG: ABS(INT(VALUE(1))) | |
70 | C... | |
71 | C... STAND-ALONE: ABS(INT(VALUE(1))) | |
72 | C... | |
73 | C... | |
74 | C... CONTROL switches: | |
75 | C... ================== | |
76 | C... | |
77 | C... THE LOCATION OF THE LHAPDF LIBRARY HAS TO BE SPECIFIED | |
78 | C... AS DESCRIBED BELOW (the rest is optional) | |
79 | C... | |
80 | C... if the user does nothing, sensible defaults | |
81 | C... are active; to change the behaviour, the corresponding | |
82 | C... values of LHAPARM() should be set to the values given below | |
83 | C... | |
84 | C... Location of the LHAPDF library of PDFs (pathname): | |
85 | C... uses common block /LHAPDFC/ | |
86 | C... | |
87 | C... If the user does nothing => default = subdir PDFsets of the | |
88 | C... current directory (can be real subdir | |
89 | C... OR a soft link to the real location) | |
90 | C... If the user sets LHAPATH => supplied by the USER who defines the | |
91 | C... path in common block COMMON/LHAPDFC/LHAPATH | |
92 | C... BEFORE calling PDFSET | |
93 | C... | |
94 | C... Other controls: | |
95 | C... =============== | |
96 | C... use common block /LHACONTROL/ | |
97 | C... | |
98 | C... Collect statistics on under/over-flow requests for PDFs | |
99 | C... outside their validity ranges in X and Q**2 | |
100 | C... (call PDFSTA at end of run to print it out) | |
101 | C... | |
102 | C... LHAPARM(16).EQ.'NOSTAT' => No statistics (faster) | |
103 | C... LHAPARM(16).NE.'NOSTAT' => Default: collect statistics | |
104 | C... | |
105 | C... Option to use the values for the strong coupling alpha_s | |
106 | C... as computed in LHAPDF in the MC generator | |
107 | C... (to ensure uniformity between the MC generator and the PDF set) | |
108 | C... WARNING: implemented ONLY for PYTHIA in LHAPDFv4 | |
109 | C... | |
110 | C... LHAPARM(17).EQ.'LHAPDF' => Use alpha_s from LHAPDF | |
111 | C... LHAPARM(17).NE.'LHAPDF' => Default (same as LHAPDF v1/v3) | |
112 | C... | |
113 | C... Extrapolation of PDFs outside LHAPDF validity range given by | |
114 | C... [Xmin,Xmax] and [Q2min,Q2max]; DEFAULT => PDFs "frozen" at the | |
115 | C... boundaries | |
116 | C... | |
117 | C... LHAPARM(18).EQ.'EXTRAPOLATE' => Extrapolate PDFs on OWN RISK | |
118 | C... WARNING: Crazy values can be returned | |
119 | C... | |
120 | C... Printout of initialization information in PDFSET (by default) | |
121 | C... | |
122 | C... LHAPARM(19).EQ.'SILENT' => No printout (silent mode) | |
123 | C... LHAPARM(19).EQ.'LOWKEY' => Print 5 times (almost silent mode) | |
124 | C... | |
125 | C... | |
126 | C...v5.0 06-Oct-2005 Major change to allow multiset-initializations | |
127 | C...v4.0 28-Apr-2005 PDFSTA routine; option to use Alfa_s from LHAPDF | |
128 | C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4 | |
129 | C...v3.1 26-Apr-2004 New numbering scheme, updated for LHAPDF v2/v3 | |
130 | C...v3.0 23-Jan-2004 HERWIG interface added | |
131 | C...v2.0 20-Sep-2003 PDFLIB style adopted | |
132 | C...v1.0 05-Mar-2003 First working version from PYTHIA to LHAPDF v1 | |
133 | C... | |
134 | C...interface to LHAPDF library | |
135 | ||
136 | C********************************************************************* | |
137 | ||
138 | BLOCK DATA LHAPDFSET | |
139 | c... additions for multiset use | |
140 | include 'parmsetup.inc' | |
141 | include 'pathsetup.inc' | |
142 | c character*172 LHANAMES(nmxset) | |
143 | integer LHASET, LHAMEMB | |
144 | common/LHAPDF/LHANAME, LHASET, LHAMEMB | |
145 | integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset) | |
146 | common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets | |
147 | data nsets/0/ | |
148 | c... | |
149 | c 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 | ||
168 | C...PDFSET | |
169 | C...Initialization for use of parton distributions | |
170 | C... according to the LHAPDF interface. | |
171 | C... | |
172 | C...v4.0 28-Apr-2005 Option to use Alfa_s from LHAPDF | |
173 | C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4 | |
174 | C...v3.1 26-Apr-2004 New numbering scheme | |
175 | C...v3.0 23-Jan-2004 HERWIG interface added | |
176 | C... | |
177 | C...interface to LHAPDF library | |
178 | ||
179 | SUBROUTINE PDFSET(PARM,VALUE) | |
180 | C...Double precision and integer declarations. | |
181 | IMPLICIT DOUBLE PRECISION(A-H, O-Z) | |
182 | IMPLICIT INTEGER(I-N) | |
183 | c...additions for multiset use | |
184 | include 'parmsetup.inc' | |
185 | include 'pathsetup.inc' | |
186 | c character*172 LHANAMES(nmxset) | |
187 | integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset) | |
188 | common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets | |
189 | real*8 xxmin(nmxset),xxmax(nmxset),qq2min(nmxset),qq2max(nmxset) | |
190 | save xxmin,xxmax,qq2min,qq2max | |
191 | C...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/ | |
196 | c... following 2 for earlier Pythia versions | |
197 | COMMON/LUDAT1/MSTU5(200),PARU5(200),MSTJ5(200),PARJ5(200) | |
198 | SAVE /LUDAT1/ | |
199 | C...Interface to LHAPDFLIB. | |
200 | c 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/ | |
208 | c 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/ | |
226 | C...Interface to PDFLIB. | |
227 | COMMON/W50511/ NPTYPEPDFL,NGROUPPDFL,NSETPDFL,MODEPDFL, | |
228 | > NFLPDFL,LOPDFL,TMASPDFL | |
229 | SAVE /W50511/ | |
230 | DOUBLE PRECISION TMASPDFL | |
231 | C...Interface to PDFLIB. | |
232 | COMMON/W50512/QCDL4,QCDL5 | |
233 | SAVE /W50512/ | |
234 | DOUBLE PRECISION QCDL4,QCDL5 | |
235 | C...Interface to PDFLIB. | |
236 | COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX | |
237 | SAVE /W50513/ | |
238 | DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX | |
239 | C...Local arrays and character variables (NOT USED here DB) | |
240 | CHARACTER*20 PARM(20) | |
241 | DOUBLE PRECISION VALUE(20) | |
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 |
261 | c...overide the default PDFsets path | |
af4ebdd2 | 262 | c ... check first if the environmental variable LHAPATH is set |
263 | call getenv('LHAPATH',lhapath) | |
264 | if(lhapath.eq.'') then | |
265 | C The environment variable LHAPATH is not set. | |
266 | C 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 | |
277 | c | |
278 | * | |
279 | C...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 | |
328 | C...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] | |
335 | C... | |
336 | C...Protons | |
337 | C... | |
338 | C...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 | |
404 | C...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 | |
497 | C...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 | |
509 | C...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 | |
539 | C...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 | |
551 | C...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 | |
571 | C...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' | |
594 | c tempoararily removed on returning to original H!2000 files | |
595 | c ELSEIF((LHAINPUT .GE. 70350) .AND. (LHAINPUT .LE. 70350)) THEN | |
596 | c LHASET = 70350 | |
597 | c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2.LHgrid' | |
598 | c ELSEIF((LHAINPUT .GE. 70351) .AND. (LHAINPUT .LE. 70370)) THEN | |
599 | c LHASET = 70350 | |
600 | c LHANAME=LHAPATH(1:LHAPATHLEN)//'/H12000lo2E.LHgrid' | |
601 | ELSE | |
602 | WRITE(LHAPRINT,5150) LHASET | |
603 | STOP | |
604 | ENDIF | |
605 | C...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 | |
620 | C... | |
621 | C...Pions | |
622 | C... | |
623 | C...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 | |
636 | C...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 | |
649 | C...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 | |
666 | C...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 | |
679 | C... | |
680 | C...Photons | |
681 | C... | |
682 | C...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 | |
698 | C...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 | |
706 | c 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 | |
711 | c 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 | |
716 | c 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 | |
721 | c LHASET = 324 | |
722 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/DGG.LHgrid' | |
723 | ELSE | |
724 | WRITE(LHAPRINT,5150) LHASET | |
725 | STOP | |
726 | ENDIF | |
727 | C...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 | |
735 | c LHASET = 330 | |
736 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid' | |
737 | ELSEIF((LHAINPUT .GE. 333) .AND. (LHAINPUT .LE. 333)) THEN | |
738 | Q2MIN = 1.0D00 | |
739 | c LHASET = 333 | |
740 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid' | |
741 | ELSEIF((LHAINPUT .GE. 334) .AND. (LHAINPUT .LE. 334)) THEN | |
742 | Q2MIN = 4.0D00 | |
743 | c LHASET = 334 | |
744 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/LACG.LHgrid' | |
745 | ELSE | |
746 | WRITE(LHAPRINT,5150) LHASET | |
747 | STOP | |
748 | ENDIF | |
749 | C...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 | |
771 | C...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 | |
793 | C...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 | |
806 | C...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 | |
819 | C...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 | |
827 | c LHASET = 390 | |
828 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid' | |
829 | ELSEIF((LHAINPUT .GE. 393) .AND. (LHAINPUT .LE. 394)) THEN | |
830 | Q2MIN = 4.0D00 | |
831 | c LHASET = 393 | |
832 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid' | |
833 | ELSEIF((LHAINPUT .GE. 395) .AND. (LHAINPUT .LE. 396)) THEN | |
834 | Q2MIN = 3.6D-1 | |
835 | c LHASET = 395 | |
836 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid' | |
837 | ELSEIF((LHAINPUT .GE. 397) .AND. (LHAINPUT .LE. 398)) THEN | |
838 | Q2MIN = 4.0D00 | |
839 | c LHASET = 397 | |
840 | LHANAME=LHAPATH(1:LHAPATHLEN)//'/SASG.LHgrid' | |
841 | ELSE | |
842 | WRITE(LHAPRINT,5150) LHASET | |
843 | STOP | |
844 | ENDIF | |
845 | C...Unknown Family ?! Giving up | |
846 | ELSE | |
847 | WRITE(LHAPRINT,5150) LHASET | |
848 | STOP | |
849 | ENDIF | |
850 | ||
851 | LHAMEMB=LHAINPUT-LHASET | |
852 | c....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 | |
868 | c 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 | ||
892 | c print *,'calling initpdf',lhamemb | |
893 | c print *,'calling initpdfm ',iset,lhaname,lhamemb | |
894 | c print *,'LHAGLUE .... initializing set,member ',iset,lhamemb | |
895 | CALL INITPDFM(iset,LHAMEMB) | |
896 | endif | |
897 | c... the rest is done every time pdfset is called | |
898 | c 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 | |
931 | C...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 | ||
946 | c******************************************************************** | |
947 | c -- STRUCTA | |
948 | c -- 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 | ||
966 | C********************************************************************* | |
967 | ||
968 | C...STRUCTM | |
969 | C...Gives parton distributions according to the LHAPDF interface. | |
970 | C...Two evolution codes used: | |
971 | C... EVLCTEQ for CTEQ PDF sets | |
972 | C... QCDNUM for Other PDF sets | |
973 | C... | |
974 | C...Author: Dimitri Bourilkov bourilkov@mailaps.org | |
975 | C... | |
976 | C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4 | |
977 | C...v3.0 23-Jan-2004 | |
978 | C... | |
979 | C...interface to LHAPDF library | |
980 | ||
981 | SUBROUTINE STRUCTM(X,Q,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
982 | ||
983 | C...Double precision and integer declarations. | |
984 | IMPLICIT DOUBLE PRECISION(A-H, O-Z) | |
985 | IMPLICIT INTEGER(I-N) | |
986 | include 'parmsetup.inc' | |
987 | C...Commonblocks. | |
988 | COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) | |
989 | SAVE /PYDAT1/ | |
990 | C...Interface to LHAPDFLIB. | |
991 | include 'pathsetup.inc' | |
992 | c CHARACTER*172 LHANAME | |
993 | INTEGER LHASET, LHAMEMB | |
994 | COMMON/LHAPDF/LHANAME, LHASET, LHAMEMB | |
995 | SAVE /LHAPDF/ | |
996 | c...added next 2 lines for structp fix | |
997 | integer LHAMEMBERS(nmxset),LHANUMBERS(nmxset) | |
998 | common/LHASETS/LHANAMES,LHANUMBERS,LHAMEMBERS,nsets | |
999 | c | |
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/ | |
1016 | C...Interface to PDFLIB. | |
1017 | COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX | |
1018 | SAVE /W50513/ | |
1019 | DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX | |
1020 | C...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 | |
1025 | C...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 | ||
1034 | C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by | |
1035 | C...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) | |
1044 | c print *,'calling evolvepdfm:',iset | |
1045 | C | |
1046 | C...fix to allow STRUCTM to work for photon PDFs (Herwig does this) | |
1047 | C...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 | ||
1068 | C********************************************************************* | |
1069 | ||
1070 | C...STRUCTP | |
1071 | C...Gives parton distributions according to the LHAPDF interface. | |
1072 | C...Used for photons. | |
1073 | C... | |
1074 | C...v4.0 21-Mar-2005 Photon/pion/new p PDFs, updated for LHAPDF v4 | |
1075 | C... | |
1076 | C...interface to LHAPDF library | |
1077 | ||
1078 | SUBROUTINE STRUCTP | |
1079 | > (X,Q2,P2,IP2,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
1080 | ||
1081 | C...Double precision and integer declarations. | |
1082 | IMPLICIT DOUBLE PRECISION(A-H, O-Z) | |
1083 | IMPLICIT INTEGER(I-N) | |
1084 | include 'parmsetup.inc' | |
1085 | C...Commonblocks. | |
1086 | COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) | |
1087 | SAVE /PYDAT1/ | |
1088 | C...Interface to LHAPDFLIB. | |
1089 | include 'pathsetup.inc' | |
1090 | c 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/ | |
1110 | C...Interface to PDFLIB. | |
1111 | COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX | |
1112 | SAVE /W50513/ | |
1113 | DOUBLE PRECISION XMIN,XMAX,Q2MIN,Q2MAX | |
1114 | C...Local variables | |
1115 | DOUBLE PRECISION UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU | |
1116 | DOUBLE PRECISION X,Q,F(-6:6) | |
1117 | ||
1118 | C...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 | ||
1127 | C...Range of validity e.g. 10^-6 < x < 1, Q2MIN < Q^2 extended by | |
1128 | C...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 | ||
1152 | C********************************************************************* | |
1153 | ||
1154 | C...PDFSTA | |
1155 | C...For statistics ON structure functions (under/over-flows) | |
1156 | C... | |
1157 | C...Author: Dimitri Bourilkov bourilkov@mailaps.org | |
1158 | C... | |
1159 | C... | |
1160 | C...first introduced in v4.0 28-Apr-2005 | |
1161 | C... | |
1162 | ||
1163 | SUBROUTINE PDFSTA | |
1164 | ||
1165 | C...Double precision and integer declarations. | |
1166 | IMPLICIT DOUBLE PRECISION(A-H, O-Z) | |
1167 | IMPLICIT INTEGER(I-N) | |
1168 | C...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) | |
1234 | C | |
1235 | Cinclude "pdf/expdp.inc" | |
1236 | double precision | |
1237 | + DX,DSCALE,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL, | |
1238 | + DXPDF(-6:6) | |
1239 | C... call STRUCTM in PDFLIB to get flavour content | |
1240 | CALL STRUCTM(DX,DSCALE, | |
1241 | + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL) | |
1242 | C... 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 | |
1256 | C | |
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' | |
1265 | c 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 | *************************************************************** |