]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | |
2 | C********************************************************************* | |
3 | ||
4 | SUBROUTINE PYSTFU(KF,X,Q2,XPQ) | |
5 | ||
6 | C...Gives electron, photon, pi+, neutron, proton and hyperon | |
7 | C...structure functions according to a few different parametrizations. | |
8 | C...Note that what is coded is x times the probability distribution, | |
9 | C...i.e. xq(x,Q2) etc. | |
10 | COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) | |
11 | COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) | |
12 | COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) | |
13 | COMMON/PYINT1/MINT(400),VINT(400) | |
14 | COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6), | |
15 | &XPDIR(-6:6) | |
16 | SAVE /LUDAT1/,/LUDAT2/ | |
17 | SAVE /PYPARS/,/PYINT1/,/PYINT8/ | |
18 | DIMENSION XPQ(-25:25),XPEL(-25:25),XPGA(-6:6),XPPI(-6:6), | |
19 | &XPPR(-6:6) | |
20 | ||
21 | C...Interface to PDFLIB. | |
22 | COMMON/W50513/XMIN,XMAX,Q2MIN,Q2MAX | |
23 | SAVE /W50513/ | |
24 | DOUBLE PRECISION XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU, | |
25 | &VALUE(20),XMIN,XMAX,Q2MIN,Q2MAX | |
26 | CHARACTER*20 PARM(20) | |
27 | DATA VALUE/20*0D0/,PARM/20*' '/ | |
28 | ||
29 | C...Data related to Schuler-Sjostrand photon distributions. | |
30 | DATA ALAMGA/0.2/, PMCGA/1.3/, PMBGA/4.6/ | |
31 | ||
32 | C...Reset structure functions. | |
33 | MINT(92)=0 | |
34 | DO 100 KFL=-25,25 | |
35 | XPQ(KFL)=0. | |
36 | 100 CONTINUE | |
37 | ||
38 | C...Check x and particle species. | |
39 | IF(X.LE.0..OR.X.GE.1.) THEN | |
40 | WRITE(MSTU(11),5000) X | |
41 | RETURN | |
42 | ENDIF | |
43 | KFA=IABS(KF) | |
44 | IF(KFA.NE.11.AND.KFA.NE.22.AND.KFA.NE.211.AND.KFA.NE.2112.AND. | |
45 | &KFA.NE.2212.AND.KFA.NE.3122.AND.KFA.NE.3112.AND.KFA.NE.3212 | |
46 | &.AND.KFA.NE.3222.AND.KFA.NE.3312.AND.KFA.NE.3322.AND. | |
47 | &KFA.NE.3334.AND.KFA.NE.111) THEN | |
48 | WRITE(MSTU(11),5100) KF | |
49 | RETURN | |
50 | ENDIF | |
51 | ||
52 | C...Electron structure function call. | |
53 | IF(KFA.EQ.11) THEN | |
54 | CALL PYSTEL(X,Q2,XPEL) | |
55 | DO 110 KFL=-25,25 | |
56 | XPQ(KFL)=XPEL(KFL) | |
57 | 110 CONTINUE | |
58 | ||
59 | C...Photon structure function call (VDM+anomalous). | |
60 | ELSEIF(KFA.EQ.22.AND.MINT(109).LE.1) THEN | |
61 | IF(MSTP(56).EQ.1.AND.MSTP(55).EQ.1) THEN | |
62 | CALL PYSTGA(X,Q2,XPGA) | |
63 | DO 120 KFL=-6,6 | |
64 | XPQ(KFL)=XPGA(KFL) | |
65 | 120 CONTINUE | |
66 | ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND.MSTP(55).LE.8) THEN | |
67 | Q2MX=Q2 | |
68 | P2MX=0.36 | |
69 | IF(MSTP(55).GE.7) P2MX=4.0 | |
70 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
71 | CALL PYGGAM(MSTP(55)-4,X,Q2MX,0.,F2GAM,XPGA) | |
72 | DO 130 KFL=-6,6 | |
73 | XPQ(KFL)=XPGA(KFL) | |
74 | 130 CONTINUE | |
75 | VINT(231)=P2MX | |
76 | ELSEIF(MSTP(56).EQ.1.AND.MSTP(55).GE.9.AND.MSTP(55).LE.12) THEN | |
77 | Q2MX=Q2 | |
78 | P2MX=0.36 | |
79 | IF(MSTP(55).GE.11) P2MX=4.0 | |
80 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
81 | CALL PYGGAM(MSTP(55)-8,X,Q2MX,0.,F2GAM,XPGA) | |
82 | DO 140 KFL=-6,6 | |
83 | XPQ(KFL)=XPVMD(KFL)+XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL) | |
84 | 140 CONTINUE | |
85 | VINT(231)=P2MX | |
86 | ELSEIF(MSTP(56).EQ.2) THEN | |
87 | C...Call PDFLIB structure functions. | |
88 | PARM(1)='NPTYPE' | |
89 | VALUE(1)=3 | |
90 | PARM(2)='NGROUP' | |
91 | VALUE(2)=MSTP(55)/1000 | |
92 | PARM(3)='NSET' | |
93 | VALUE(3)=MOD(MSTP(55),1000) | |
94 | IF(MINT(93).NE.3000000+MSTP(55)) THEN | |
95 | CALL PDFSET(PARM,VALUE) | |
96 | MINT(93)=3000000+MSTP(55) | |
97 | ENDIF | |
98 | XX=X | |
99 | QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2)) | |
100 | IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN) | |
101 | CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
102 | VINT(231)=Q2MIN | |
103 | XPQ(0)=GLU | |
104 | XPQ(1)=DNV | |
105 | XPQ(-1)=DNV | |
106 | XPQ(2)=UPV | |
107 | XPQ(-2)=UPV | |
108 | XPQ(3)=STR | |
109 | XPQ(-3)=STR | |
110 | XPQ(4)=CHM | |
111 | XPQ(-4)=CHM | |
112 | XPQ(5)=BOT | |
113 | XPQ(-5)=BOT | |
114 | XPQ(6)=TOP | |
115 | XPQ(-6)=TOP | |
116 | ELSE | |
117 | WRITE(MSTU(11),5200) KF,MSTP(56),MSTP(55) | |
118 | ENDIF | |
119 | ||
120 | C...Pion/gammaVDM structure function call. | |
121 | ELSEIF(KFA.EQ.211.OR.KFA.EQ.111.OR.(KFA.EQ.22.AND. | |
122 | &MINT(109).EQ.2)) THEN | |
123 | IF(KFA.EQ.22.AND.MSTP(56).EQ.1.AND.MSTP(55).GE.5.AND. | |
124 | & MSTP(55).LE.12) THEN | |
125 | ISET=1+MOD(MSTP(55)-1,4) | |
126 | Q2MX=Q2 | |
127 | P2MX=0.36 | |
128 | IF(ISET.GE.3) P2MX=4.0 | |
129 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
130 | CALL PYGVMD(ISET,2,X,Q2MX,P2MX,ALAMGA,XPGA) | |
131 | DO 150 KFL=-6,6 | |
132 | XPQ(KFL)=XPGA(KFL) | |
133 | 150 CONTINUE | |
134 | VINT(231)=P2MX | |
135 | ELSEIF(MSTP(54).EQ.1.AND.MSTP(53).GE.1.AND.MSTP(53).LE.3) THEN | |
136 | CALL PYSTPI(X,Q2,XPPI) | |
137 | DO 160 KFL=-6,6 | |
138 | XPQ(KFL)=XPPI(KFL) | |
139 | 160 CONTINUE | |
140 | ELSEIF(MSTP(54).EQ.2) THEN | |
141 | C...Call PDFLIB structure functions. | |
142 | PARM(1)='NPTYPE' | |
143 | VALUE(1)=2 | |
144 | PARM(2)='NGROUP' | |
145 | VALUE(2)=MSTP(53)/1000 | |
146 | PARM(3)='NSET' | |
147 | VALUE(3)=MOD(MSTP(53),1000) | |
148 | IF(MINT(93).NE.2000000+MSTP(53)) THEN | |
149 | CALL PDFSET(PARM,VALUE) | |
150 | MINT(93)=2000000+MSTP(53) | |
151 | ENDIF | |
152 | XX=X | |
153 | QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2)) | |
154 | IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN) | |
155 | CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
156 | VINT(231)=Q2MIN | |
157 | XPQ(0)=GLU | |
158 | XPQ(1)=DSEA | |
159 | XPQ(-1)=UPV+DSEA | |
160 | XPQ(2)=UPV+USEA | |
161 | XPQ(-2)=USEA | |
162 | XPQ(3)=STR | |
163 | XPQ(-3)=STR | |
164 | XPQ(4)=CHM | |
165 | XPQ(-4)=CHM | |
166 | XPQ(5)=BOT | |
167 | XPQ(-5)=BOT | |
168 | XPQ(6)=TOP | |
169 | XPQ(-6)=TOP | |
170 | ELSE | |
171 | WRITE(MSTU(11),5200) KF,MSTP(54),MSTP(53) | |
172 | ENDIF | |
173 | ||
174 | C...Anomalous photon structure function call. | |
175 | ELSEIF(KFA.EQ.22.AND.MINT(109).EQ.3) THEN | |
176 | Q2MX=Q2 | |
177 | P2MX=PARP(15)**2 | |
178 | IF(MSTP(56).EQ.1.AND.MSTP(55).LE.8) THEN | |
179 | IF(MSTP(55).EQ.5.OR.MSTP(55).EQ.6) P2MX=0.36 | |
180 | IF(MSTP(55).EQ.7.OR.MSTP(55).EQ.8) P2MX=4.0 | |
181 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
182 | CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA) | |
183 | DO 170 KFL=-6,6 | |
184 | XPQ(KFL)=XPGA(KFL) | |
185 | 170 CONTINUE | |
186 | VINT(231)=P2MX | |
187 | ELSEIF(MSTP(56).EQ.1) THEN | |
188 | IF(MSTP(55).EQ.9.OR.MSTP(55).EQ.10) P2MX=0.36 | |
189 | IF(MSTP(55).EQ.11.OR.MSTP(55).EQ.12) P2MX=4.0 | |
190 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
191 | CALL PYGGAM(MSTP(55)-8,X,Q2MX,0.,F2GM,XPGA) | |
192 | DO 180 KFL=-6,6 | |
193 | XPQ(KFL)=MAX(0.,XPANL(KFL)+XPBEH(KFL)+XPDIR(KFL)) | |
194 | 180 CONTINUE | |
195 | VINT(231)=P2MX | |
196 | ELSEIF(MSTP(56).EQ.2) THEN | |
197 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
198 | CALL PYGANO(0,X,Q2MX,P2MX,ALAMGA,XPGA) | |
199 | DO 185 KFL=-6,6 | |
200 | XPQ(KFL)=XPGA(KFL) | |
201 | 185 CONTINUE | |
202 | VINT(231)=P2MX | |
203 | ELSEIF(MSTP(55).GE.1.AND.MSTP(55).LE.5) THEN | |
204 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
205 | CALL PYGVMD(0,MSTP(55),X,Q2MX,P2MX,PARP(1),XPGA) | |
206 | DO 190 KFL=-6,6 | |
207 | XPQ(KFL)=XPGA(KFL) | |
208 | 190 CONTINUE | |
209 | VINT(231)=P2MX | |
210 | ELSE | |
211 | 200 RKF=11.*RLU(0) | |
212 | KFR=1 | |
213 | IF(RKF.GT.1.) KFR=2 | |
214 | IF(RKF.GT.5.) KFR=3 | |
215 | IF(RKF.GT.6.) KFR=4 | |
216 | IF(RKF.GT.10.) KFR=5 | |
217 | IF(KFR.EQ.4.AND.Q2.LT.PMCGA**2) GOTO 200 | |
218 | IF(KFR.EQ.5.AND.Q2.LT.PMBGA**2) GOTO 200 | |
219 | IF(MSTP(57).EQ.0) Q2MX=P2MX | |
220 | CALL PYGVMD(0,KFR,X,Q2MX,P2MX,PARP(1),XPGA) | |
221 | DO 210 KFL=-6,6 | |
222 | XPQ(KFL)=XPGA(KFL) | |
223 | 210 CONTINUE | |
224 | VINT(231)=P2MX | |
225 | ENDIF | |
226 | ||
227 | C...Proton structure function call. | |
228 | ELSE | |
229 | IF(MSTP(52).EQ.1.AND.MSTP(51).GE.1.AND.MSTP(51).LE.11) THEN | |
230 | CALL PYSTPR(X,Q2,XPPR) | |
231 | DO 220 KFL=-6,6 | |
232 | XPQ(KFL)=XPPR(KFL) | |
233 | 220 CONTINUE | |
234 | ELSEIF(MSTP(52).EQ.2) THEN | |
235 | C...Call PDFLIB structure functions. | |
236 | PARM(1)='NPTYPE' | |
237 | VALUE(1)=1 | |
238 | PARM(2)='NGROUP' | |
239 | VALUE(2)=MSTP(51)/1000 | |
240 | PARM(3)='NSET' | |
241 | VALUE(3)=MOD(MSTP(51),1000) | |
242 | IF(MINT(93).NE.1000000+MSTP(51)) THEN | |
243 | CALL PDFSET(PARM,VALUE) | |
244 | MINT(93)=1000000+MSTP(51) | |
245 | ENDIF | |
246 | XX=X | |
247 | QQ=SQRT(MAX(0.,SNGL(Q2MIN),Q2)) | |
248 | IF(MSTP(57).EQ.0) QQ=SQRT(Q2MIN) | |
249 | CALL STRUCTM(XX,QQ,UPV,DNV,USEA,DSEA,STR,CHM,BOT,TOP,GLU) | |
250 | VINT(231)=Q2MIN | |
251 | XPQ(0)=GLU | |
252 | XPQ(1)=DNV+DSEA | |
253 | XPQ(-1)=DSEA | |
254 | XPQ(2)=UPV+USEA | |
255 | XPQ(-2)=USEA | |
256 | XPQ(3)=STR | |
257 | XPQ(-3)=STR | |
258 | XPQ(4)=CHM | |
259 | XPQ(-4)=CHM | |
260 | XPQ(5)=BOT | |
261 | XPQ(-5)=BOT | |
262 | XPQ(6)=TOP | |
263 | XPQ(-6)=TOP | |
264 | ELSE | |
265 | WRITE(MSTU(11),5200) KF,MSTP(52),MSTP(51) | |
266 | ENDIF | |
267 | ENDIF | |
268 | ||
269 | C...Isospin average for pi0/gammaVDM. | |
270 | IF(KFA.EQ.111.OR.(KFA.EQ.22.AND.MINT(109).EQ.2)) THEN | |
271 | IF(KFA.EQ.22.AND.MSTP(55).GE.5.AND.MSTP(55).LE.12) THEN | |
272 | XPV=XPQ(2)-XPQ(1) | |
273 | XPQ(2)=XPQ(1) | |
274 | XPQ(-2)=XPQ(-1) | |
275 | ELSE | |
276 | XPS=0.5*(XPQ(1)+XPQ(-2)) | |
277 | XPV=0.5*(XPQ(2)+XPQ(-1))-XPS | |
278 | XPQ(2)=XPS | |
279 | XPQ(-1)=XPS | |
280 | ENDIF | |
281 | IF(KFA.EQ.22.AND.MINT(105).LE.223) THEN | |
282 | XPQ(1)=XPQ(1)+0.2*XPV | |
283 | XPQ(-1)=XPQ(-1)+0.2*XPV | |
284 | XPQ(2)=XPQ(2)+0.8*XPV | |
285 | XPQ(-2)=XPQ(-2)+0.8*XPV | |
286 | ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.333) THEN | |
287 | XPQ(3)=XPQ(3)+XPV | |
288 | XPQ(-3)=XPQ(-3)+XPV | |
289 | ELSEIF(KFA.EQ.22.AND.MINT(105).EQ.443) THEN | |
290 | XPQ(4)=XPQ(4)+XPV | |
291 | XPQ(-4)=XPQ(-4)+XPV | |
292 | IF(MSTP(55).GE.9) THEN | |
293 | DO 230 KFL=-6,6 | |
294 | XPQ(KFL)=0. | |
295 | 230 CONTINUE | |
296 | ENDIF | |
297 | ELSE | |
298 | XPQ(1)=XPQ(1)+0.5*XPV | |
299 | XPQ(-1)=XPQ(-1)+0.5*XPV | |
300 | XPQ(2)=XPQ(2)+0.5*XPV | |
301 | XPQ(-2)=XPQ(-2)+0.5*XPV | |
302 | ENDIF | |
303 | ||
304 | C...Rescale for gammaVDM by effective gamma -> rho coupling. | |
305 | IF(KFA.EQ.22.AND.MINT(109).EQ.2) THEN | |
306 | DO 240 KFL=-6,6 | |
307 | XPQ(KFL)=VINT(281)*XPQ(KFL) | |
308 | 240 CONTINUE | |
309 | VINT(232)=VINT(281)*XPV | |
310 | ENDIF | |
311 | ||
312 | C...Isospin conjugation for neutron. | |
313 | ELSEIF(KFA.EQ.2112) THEN | |
314 | XPS=XPQ(1) | |
315 | XPQ(1)=XPQ(2) | |
316 | XPQ(2)=XPS | |
317 | XPS=XPQ(-1) | |
318 | XPQ(-1)=XPQ(-2) | |
319 | XPQ(-2)=XPS | |
320 | ||
321 | C...Simple recipes for hyperon (average valence structure function). | |
322 | ELSEIF(KFA.EQ.3122.OR.KFA.EQ.3112.OR.KFA.EQ.3212.OR.KFA.EQ.3222 | |
323 | &.OR.KFA.EQ.3312.OR.KFA.EQ.3322.OR.KFA.EQ.3334) THEN | |
324 | XPVAL=(XPQ(1)+XPQ(2)-XPQ(-1)-XPQ(-2))/3. | |
325 | XPSEA=0.5*(XPQ(-1)+XPQ(-2)) | |
326 | XPQ(1)=XPSEA | |
327 | XPQ(2)=XPSEA | |
328 | XPQ(-1)=XPSEA | |
329 | XPQ(-2)=XPSEA | |
330 | XPQ(KFA/1000)=XPQ(KFA/1000)+XPVAL | |
331 | XPQ(MOD(KFA/100,10))=XPQ(MOD(KFA/100,10))+XPVAL | |
332 | XPQ(MOD(KFA/10,10))=XPQ(MOD(KFA/10,10))+XPVAL | |
333 | ENDIF | |
334 | ||
335 | C...Charge conjugation for antiparticle. | |
336 | IF(KF.LT.0) THEN | |
337 | DO 250 KFL=1,25 | |
338 | IF(KFL.EQ.21.OR.KFL.EQ.22.OR.KFL.EQ.23.OR.KFL.EQ.25) GOTO 250 | |
339 | XPS=XPQ(KFL) | |
340 | XPQ(KFL)=XPQ(-KFL) | |
341 | XPQ(-KFL)=XPS | |
342 | 250 CONTINUE | |
343 | ENDIF | |
344 | ||
345 | C...Allow gluon also in position 21. | |
346 | XPQ(21)=XPQ(0) | |
347 | ||
348 | C...Check positivity and reset above maximum allowed flavour. | |
349 | DO 260 KFL=-25,25 | |
350 | XPQ(KFL)=MAX(0.,XPQ(KFL)) | |
351 | IF(IABS(KFL).GT.MSTP(58).AND.IABS(KFL).LE.8) XPQ(KFL)=0. | |
352 | 260 CONTINUE | |
353 | ||
354 | C...Formats for error printouts. | |
355 | 5000 FORMAT(' Error: x value outside physical range; x =',1P,E12.3) | |
356 | 5100 FORMAT(' Error: illegal particle code for structure function;', | |
357 | &' KF =',I5) | |
358 | 5200 FORMAT(' Error: unknown structure function; KF, library, set =', | |
359 | &3I5) | |
360 | ||
361 | RETURN | |
362 | END |