3 C-----------------------------------------------------------------------
5 SUBROUTINE STRUCTP(X,Q2,P2,IP,
6 + UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GL)
8 C *********************************************************************
10 C * Main steering routine for all sets of structure functions *
13 C * Input: X = x value of parton *
14 C * Q2 = QCD scale in GeV**2 *
15 C * P2 = Virtuality of the Photon in GeV**2 *
16 C * IP = Flag to evaluate off-shell anomalous photon *
19 C * Output: UPV = up valence quark *
20 C * DNV = down valence quark *
21 C * USEA = sea (up_bar) *
22 C * DSEA = sea (down_bar) *
23 C * STR = strange quark *
24 C * CHM = charm quark *
25 C * BOT = bottom quark *
30 C * The variables NPTYPE, NGROUP and NSET should be, *
31 C * the variables NFL, LO, TMAS and *
32 C * QCDL4, QCDL5, XMIN, XMAX, Q2MIN, Q2MAX *
33 C * could be provided by the user via a call to the *
34 C * subroutine PDFSET at the initialization phase, where *
36 C * NPTYPE = Particle type *
37 C * (number or character string, *
38 C * 1,2,3 or 'NU','PI','PH') *
39 C * of desired structure functions set *
40 C * (Default: NPTYPE = 1 or 'NU' *
41 C * NGROUP = author group *
42 C * (number or character string, *
43 C * 1 to 7 or i.e. 'DFLM','MRS','MT','GRV',etc) *
44 C * of desired structure functions set *
45 C * (Default: NGROUP = 5 or 'GRV') *
46 C * NSET = number of desired structure functions set *
47 C * (Default: NSET = 3) *
48 C * NFL = desired number of flavours for alpha(s) *
49 C * (Default: NFL = 5) *
50 C * LO = order of alpha(s) calculation *
51 C * (Default: LO = 2) *
52 C * TMAS = top quark mass in GeV/c**2 (optional) *
53 C * (Default: TMAS = 100.0D0) *
54 C * QCDL4 = QCD scale in GeV for four flavours *
55 C * QCDL5 = QCD scale in GeV for five flavours *
56 C * corresponding to QCDL4 *
57 C * XMIN = minimal allowed x value *
58 C * XMAX = maximal allowed x value *
59 C * Q2MIN = minimal allowed Q**2 value *
60 C * Q2MAX = maximal allowed Q**2 value *
62 C * for each set of structure fuction. *
64 C * The internal COMMON blocks *
66 C * COMMON/W50511/ NPTYPE,NGROUP,NSET,MODE,NFL,LO,TMAS *
67 C * COMMON/W50512/ QCDL4,QCDL5 *
68 C * COMMON/W50513/ XMIN,XMAX,Q2MIN,Q2MAX *
70 C * are filled then by the subroutine PDFSET. *
73 C * Note: STRUCTM returns X * parton distribution function ! *
76 C * Author: H. Plothow-Besch *
77 C * CERN-PPE, CH - 1211 Geneva 23, Switzerland *
79 C * Please return any problems, questions, suggestions *
82 C *********************************************************************
85 #include "pdf/impdp.inc"
87 #include "pdf/w5051p1.inc"
88 #include "pdf/w5051p2.inc"
89 #include "pdf/w5051p7.inc"
90 #include "pdf/w50510.inc"
91 #include "pdf/w50511.inc"
92 #include "pdf/w50512.inc"
93 #include "pdf/w50513.inc"
94 #include "pdf/w50514.inc"
95 #include "pdf/w50514w.inc"
96 #include "pdf/w50515.inc"
97 #include "pdf/w50516.inc"
98 #include "pdf/w50517.inc"
99 #include "pdf/w50519.inc"
100 #include "pdf/w505120.inc"
101 #include "pdf/w505121.inc"
102 CHARACTER*20 PARM(NCHDIM)
103 #include "pdf/expdp.inc"
105 DATA ZEROD/0.D0/,ONED/1.D0/,TWOD/2.D0/
106 SAVE /W50514/, /W50514W/, /W50516/
108 #include "pdf/w50511c.inc"
110 C User wants new version (4.0 or bigger) of PDFLIB format
111 IF (IFLSET.NE.1) THEN
113 WRITE(N6,*) ' Warning : NO initialisation via PDFSET made !!'
115 + ' ALL Parameters set to default (Nucleon PDFs) !!'
128 CALL PDFSET(PARM,VAL)
131 C User wants old version (3.0 or less) of PDFLIB format
133 IF (MODE .GE.0 .AND. MODE .LE.MODEMX) THEN
139 NPTYPE = NPTYCR(MODE)
140 NGROUP = NGROCR(MODE)
142 C Check on validity of parameter values
143 IF (NPTYPE.LT.0 .OR. NGROUP.LT.0 .OR. NSET.LT.0) THEN
145 WRITE(N6,*) ' PDFLIB : MODE value INCORRECT, MODE = ',
147 WRITE(N6,*) ' Warning : MODE value set to OLD default !!'
183 IF (NPTYPE.EQ.3) THEN
191 IF (DX.LE.ZEROD .OR. DX.GE.ONED) THEN
192 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
193 + NGROUP,', Nset = ',NSET
195 + ' Error : X value outside physical range , X = ',DX
198 WTXMIN = WTXMIN + PDFWGT
200 WXMIN = WXMIN + PDFWGT
202 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
203 + NGROUP,', Nset = ',NSET
205 + ' Error : X value smaller allowed range , X = ',DX
208 WTXMAX = WTXMAX + PDFWGT
210 WXMAX = WXMAX + PDFWGT
212 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
213 + NGROUP,', Nset = ',NSET
215 + ' Error : X value bigger allowed range , X = ',DX
219 WTQ2MIN = WTQ2MIN + PDFWGT
220 IF (DQ2.LT.Q2MIN) THEN
221 WQ2MIN = WQ2MIN + PDFWGT
223 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
224 + NGROUP,', Nset = ',NSET
226 + ' Error : SCALE value smaller allowed range , Q**2 = ',DQ2
229 WTQ2MAX = WTQ2MAX + PDFWGT
230 IF (DQ2.GT.Q2MAX) THEN
231 WQ2MAX = WQ2MAX + PDFWGT
233 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
234 + NGROUP,', Nset = ',NSET
236 + ' Error : SCALE value bigger allowed range , Q**2 = ',DQ2
240 IF (FIRST) WRITE(N6,*) ' '
241 IF (FIRST) WRITE(N6,*) ' '
242 C Call default structure functions set
243 IF (NPTYPE.EQ.0 .OR. NGROUP.EQ.0 .OR. NSET.EQ.0) THEN
244 C IF (FIRST) WRITE(N6,*) ' Nucleon PDFs : Ngroup = ',NGROUP,
245 C + ', Nset = ',NSET,
246 C + ', for GRV Set HO Structure Functions'
247 C CALL GRVHO(DX,DQ,DUPV,DDNV,DUSEA,DSTR,DCHM,DBOT,DTOP,DGL)
250 IF (FIRST) WRITE(N6,*) ' Nucleon PDFs : Ngroup = ',NGROUP,
252 + ', for MRS Set (G) (L255-MSb) Structure Functions'
253 CALL SFMRSG(DX,DQ,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DGL)
257 C Start with NUCLEON structure functions
258 IF(NPTYPE.EQ.1 .OR. NPTYPE.EQ.2) THEN
260 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
262 C Now start PHOTON structure functions
266 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
267 ELSEIF(NGROUP.EQ.5) THEN
270 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
271 ELSEIF(NSET.EQ.4) THEN
272 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
274 + ', for GRS-G Set LO Structure Functions'
275 CALL GRVGALO(DX,DQ,ZUPV,ZDNV,ZUSEA,ZDSEA,ZSTR,DCHM,DBOT,ZGL)
276 CALL GRSGALO(DX,DQ2,DP2,
277 + DUPV,DDNV,DUSEA,DDSEA,DSTR,ZCHM,ZBOT,DGL)
280 ELSEIF(NSET.GE.5) THEN
281 WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
283 + ', Structure Functions not yet exsistent'
286 ELSEIF(NGROUP.GE.6 .AND. NGROUP.LE.8) THEN
288 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
289 ELSEIF(NGROUP.EQ.9) THEN
291 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
293 + ', for SaS-G 95 Set 1D Structure Functions'
294 CALL SFSAS11(DX,DQ2,DP2,
295 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
297 ELSEIF(NSET.EQ.2) THEN
298 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
300 + ', for SaS-G 95 Set 1M Structure Functions'
301 CALL SFSAS12(DX,DQ2,DP2,
302 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
304 ELSEIF(NSET.EQ.3) THEN
305 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
307 + ', for SaS-G 95 Set 2D Structure Functions'
308 CALL SFSAS13(DX,DQ2,DP2,
309 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
311 ELSEIF(NSET.EQ.4) THEN
312 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
314 + ', for SaS-G 95 Set 2M Structure Functions'
315 CALL SFSAS14(DX,DQ2,DP2,
316 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
318 ELSEIF(NSET.EQ.5) THEN
319 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
321 + ', for SaS-G 96 Set 1D Structure Functions'
322 CALL SFSAS21(DX,DQ2,DP2,IP2,
323 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
325 ELSEIF(NSET.EQ.6) THEN
326 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
328 + ', for SaS-G 96 Set 1M Structure Functions'
329 CALL SFSAS22(DX,DQ2,DP2,IP2,
330 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
332 ELSEIF(NSET.EQ.7) THEN
333 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
335 + ', for SaS-G 96 Set 2D Structure Functions'
336 CALL SFSAS23(DX,DQ2,DP2,IP2,
337 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
339 ELSEIF(NSET.EQ.8) THEN
340 IF (FIRST) WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
342 + ', for SaS-G 96 Set 2M Structure Functions'
343 CALL SFSAS24(DX,DQ2,DP2,IP2,
344 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
346 ELSEIF(NSET.GE.9) THEN
347 WRITE(N6,*) ' Photon PDFs : Ngroup = ',NGROUP,
349 + ', Structure Functions not yet exsistent'
353 WRITE(N6,*)' PHOTON Structure function call for unknown GROUP ',
354 + NGROUP,', and unknown NSET ',NSET
358 100 IF(FIRST) WRITE(N6,*)
359 +' ----------------------------------------------------------------
360 +------------------------------------------------'
361 IF (FIRST) FIRST = .FALSE.
363 UPV = MAX( ZEROD,DUPV)
364 DNV = MAX( ZEROD,DDNV)
365 USEA = MAX( ZEROD,DUSEA)
366 DSEA = MAX( ZEROD,DDSEA)
367 STR = MAX( ZEROD,DSTR)
368 CHM = MAX( ZEROD,DCHM)
369 BOT = MAX( ZEROD,DBOT)
370 TOP = MAX( ZEROD,DTOP)