]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PYTHIA/pythia/pystfu.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / PYTHIA / pythia / pystfu.F
CommitLineData
fe4da5cc 1
2C*********************************************************************
3
4 SUBROUTINE PYSTFU(KF,X,Q2,XPQ)
5
6C...Gives electron, photon, pi+, neutron, proton and hyperon
7C...structure functions according to a few different parametrizations.
8C...Note that what is coded is x times the probability distribution,
9C...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
21C...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
29C...Data related to Schuler-Sjostrand photon distributions.
30 DATA ALAMGA/0.2/, PMCGA/1.3/, PMBGA/4.6/
31
32C...Reset structure functions.
33 MINT(92)=0
34 DO 100 KFL=-25,25
35 XPQ(KFL)=0.
36 100 CONTINUE
37
38C...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
52C...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
59C...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
87C...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
120C...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
141C...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
174C...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
227C...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
235C...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
269C...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
304C...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
312C...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
321C...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
335C...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
345C...Allow gluon also in position 21.
346 XPQ(21)=XPQ(0)
347
348C...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
354C...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