3 C-----------------------------------------------------------------------
5 SUBROUTINE STRUCTA(X,SCALE,ANO,
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 * SCALE = QCD scale in GeV *
15 C * ANO = atomic mass number of a nucleus *
17 C * Output: UPV = up valence quark * Ruv-Npdf *
18 C * DNV = down valence quark * Rdv-Npdf *
19 C * USEA = sea (up_bar) * Rub-Npdf *
20 C * DSEA = sea (down_bar) * Rdb-Npdf *
21 C * STR = strange quark * Rs-Npdf *
22 C * CHM = charm quark * Rc-Npdf *
23 C * BOT = bottom quark * Rb-Npdf *
24 C * TOP = top quark * Rt-Npdf *
25 C * GL = gluon * Rg-Npdf *
28 C * The variables NPTYPE, NGROUP and NSET and *
29 C * the variables NATYPE, NAGROUP and NASET should be, *
30 C * could be provided by the user via a call to the *
31 C * subroutine PDFSET at the initialization phase, where *
33 C * NPTYPE = Particle type for proton PDF's *
34 C * (number or character string, *
35 C * 1,2,3 or 'NU','PI','PH') *
36 C * of desired structure functions set *
37 C * (Default: NPTYPE = 1 or 'NU' *
38 C * NGROUP = author group for proton PDF's *
39 C * (number or character string, *
40 C * 1 to 7 or i.e. 'DFLM','MRS','MT','GRV',etc) *
41 C * of desired structure functions set *
42 C * (Default: NGROUP = 5 or 'GRV') *
43 C * NSET = number of desired structure functions set *
44 C * for proton PDF's *
45 C * (Default: NSET = 3) *
46 C * NATYPE = 4 for Nuclear Corrections *
47 C * (Default: NATYPE = 4) *
48 C * NAGROUP= author group of Nuclear Corrections *
49 C * (number or character string, 1 or i.e. 'EKS')*
50 C * of desired uclear Corrections set *
51 C * (Default: NAGROUP = 1) *
52 C * NASET = number of desired Nuclear Corrections set *
53 C * (Default: NASET = 1) *
55 C * for each set of structure function. *
57 C * The internal COMMON blocks *
59 C * COMMON/W50511/ NPTYPE,NGROUP,NSET *
60 C * COMMON/W50511a/ NATYPE,NAGROUP,NASET *
62 C * are filled then by the subroutine PDFSET. *
65 C * Note: STRUCTA returns *
66 C * X * parton distribution function * Nuclear Correction ! *
69 C * Author: H. Plothow-Besch *
70 C * CERN-ETT/TT, CH - 1211 Geneva 23, Switzerland *
72 C * Please return any problems, questions, suggestions *
75 C *********************************************************************
78 #include "pdf/impdp.inc"
80 #include "pdf/w5051p1.inc"
81 #include "pdf/w5051p2.inc"
82 #include "pdf/w5051p7.inc"
83 #include "pdf/w50510.inc"
84 #include "pdf/w50511.inc"
85 #include "pdf/w50511a.inc"
86 #include "pdf/w50512.inc"
87 #include "pdf/w50513.inc"
88 #include "pdf/w50514.inc"
89 #include "pdf/w50514w.inc"
90 #include "pdf/w50515.inc"
91 #include "pdf/w50516.inc"
92 #include "pdf/w50517.inc"
93 #include "pdf/w50519.inc"
94 #include "pdf/w505120.inc"
95 #include "pdf/w505121.inc"
96 CHARACTER*20 PARM(NCHDIM)
97 #include "pdf/expdp.inc"
99 DATA ZEROD/0.D0/,ONED/1.D0/,TWOD/2.D0/
100 SAVE /W50514/, /W50514W/, /W50516/
102 #include "pdf/w50511c.inc"
104 C User wants new version (4.0 or bigger) of PDFLIB format
105 IF (IFLSET.NE.1) THEN
107 WRITE(N6,*) ' Warning : NO initialisation via PDFSET made !!'
109 + ' ALL Parameters set to default (Nucleon PDFs) !!'
133 CALL PDFSET(PARM,VAL)
154 IF (DX.LE.ZEROD .OR. DX.GE.ONED) THEN
155 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
156 + NGROUP,', Nset = ',NSET
158 + ' Error : X value outside physical range , X = ',DX
161 WTXMIN = WTXMIN + PDFWGT
163 WXMIN = WXMIN + PDFWGT
165 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
166 + NGROUP,', Nset = ',NSET
168 + ' Error : X value smaller allowed range , X = ',DX
171 WTXMAX = WTXMAX + PDFWGT
173 WXMAX = WXMAX + PDFWGT
175 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
176 + NGROUP,', Nset = ',NSET
178 + ' Error : X value bigger allowed range , X = ',DX
182 WTQ2MIN = WTQ2MIN + PDFWGT
183 IF (DQ2.LT.Q2MIN) THEN
184 WQ2MIN = WQ2MIN + PDFWGT
186 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
187 + NGROUP,', Nset = ',NSET
189 + ' Error : SCALE value smaller allowed range , Q**2 = ',DQ2
192 WTQ2MAX = WTQ2MAX + PDFWGT
193 IF (DQ2.GT.Q2MAX) THEN
194 WQ2MAX = WQ2MAX + PDFWGT
196 WRITE(N6,*) ' PDFLIB : Nptype = ',NPTYPE,', Ngroup = ',
197 + NGROUP,', Nset = ',NSET
199 + ' Error : SCALE value bigger allowed range , Q**2 = ',DQ2
203 IF (FIRST) WRITE(N6,*) ' '
204 IF (FIRST) WRITE(N6,*) ' '
205 C Call default structure functions set
206 C IF (NPTYPE.EQ.0 .OR. NGROUP.EQ.0 .OR. NSET.EQ.0) THEN
207 C IF (FIRST) WRITE(N6,*)
208 C + ' Nucleon PDFs : MRS central-g (L300-MSb) Structure Functions'
209 C IF (FIRST) WRITE(N6,*)
210 C + ' Ngroup = ',NGROUP,', Nset = ',NSET
212 C + (DX,DQ2,DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DGL)
216 C Start with NUCLEAR structure functions
218 IF(NAGROUP.EQ.1) THEN
220 IF (FIRST) WRITE(N6,*)
221 + ' Nuclear PDFs : EKS98 Structure Functions with Nuclear Correcti
223 IF (FIRST) WRITE(N6,*)
224 + ' NAgroup = ',NAGROUP,', NAset = ',NASET
225 CALL SFEKS98(DX,DQ,DANO,
226 + DUPV,DDNV,DUSEA,DDSEA,DSTR,DCHM,DBOT,DTOP,DGL)
228 ELSEIF(NASET.GE.2) THEN
229 WRITE(N6,*) ' Nuclear PDFs : NAgroup = ',NAGROUP,
230 + ', NAset = ',NASET,
231 + ', Structure Functions not yet exsistent'
236 100 IF(FIRST) WRITE(N6,*)
237 +' ----------------------------------------------------------------
238 +----------------------'
239 IF (FIRST) FIRST = .FALSE.
241 UPV = MAX( ZEROD,DUPV)
242 DNV = MAX( ZEROD,DDNV)
243 USEA = MAX( ZEROD,DUSEA)
244 DSEA = MAX( ZEROD,DDSEA)
245 STR = MAX( ZEROD,DSTR)
246 CHM = MAX( ZEROD,DCHM)
247 BOT = MAX( ZEROD,DBOT)
248 TOP = MAX( ZEROD,DTOP)