7 common/ludat1/mstu(200),paru(200),mstj(200),parj(200)
8 common/ludat2/kchg(500,3),pmas(500,4),parf(2000),vckm(4,4)
9 common/pypars/mstp(200),parp(200),msti(200),pari(200)
10 common/pyint1/mint(400),vint(400)
11 common/pyint8/xpvmd(-6:6),xpanl(-6:6),xpanh(-6:6),xpbeh(-6:6),
13 SAVE /ludat1/,/ludat2/
14 SAVE /pypars/,/pyint1/,/pyint8/
15 dimension xpq(-25:25),xpel(-25:25),xpga(-6:6),xppi(-6:6),
21 DOUBLE PRECISION xx,qq,upv,dnv,usea,dsea,str,chm,bot,
top,glu,
24 DATA value/20*0d0/,parm/20*
' '/
27 DATA alamga/0.2/, pmcga/1.3/, pmbga/4.6/
36 IF(
x.LE.0..OR.
x.GE.1.)
THEN
37 WRITE(mstu(11),5000)
x
41 IF(kfa.NE.11.AND.kfa.NE.22.AND.kfa.NE.211.AND.kfa.NE.2112.AND.
42 &kfa.NE.2212.AND.kfa.NE.3122.AND.kfa.NE.3112.AND.kfa.NE.3212
43 &.AND.kfa.NE.3222.AND.kfa.NE.3312.AND.kfa.NE.3322.AND.
44 &kfa.NE.3334.AND.kfa.NE.111)
THEN
45 WRITE(mstu(11),5100) kf
57 ELSEIF(kfa.EQ.22.AND.mint(109).LE.1)
THEN
58 IF(mstp(56).EQ.1.AND.mstp(55).EQ.1)
THEN
63 ELSEIF(mstp(56).EQ.1.AND.mstp(55).GE.5.AND.mstp(55).LE.8)
THEN
66 IF(mstp(55).GE.7) p2mx=4.0
67 IF(mstp(57).EQ.0) q2mx=p2mx
68 CALL
pyggam(mstp(55)-4,
x,q2mx,0.,f2gam,xpga)
73 ELSEIF(mstp(56).EQ.1.AND.mstp(55).GE.9.AND.mstp(55).LE.12)
THEN
76 IF(mstp(55).GE.11) p2mx=4.0
77 IF(mstp(57).EQ.0) q2mx=p2mx
78 CALL
pyggam(mstp(55)-8,
x,q2mx,0.,f2gam,xpga)
80 xpq(kfl)=xpvmd(kfl)+xpanl(kfl)+xpbeh(kfl)+xpdir(kfl)
83 ELSEIF(mstp(56).EQ.2)
THEN
88 value(2)=mstp(55)/1000
90 value(3)=mod(mstp(55),1000)
91 IF(mint(93).NE.3000000+mstp(55))
THEN
92 CALL pdfset(parm,
value)
93 mint(93)=3000000+mstp(55)
96 qq=sqrt(
max(0.,sngl(q2min),q2))
97 IF(mstp(57).EQ.0) qq=sqrt(q2min)
98 CALL structm(xx,qq,upv,dnv,usea,dsea,str,chm,bot,
top,glu)
114 WRITE(mstu(11),5200) kf,mstp(56),mstp(55)
118 ELSEIF(kfa.EQ.211.OR.kfa.EQ.111.OR.(kfa.EQ.22.AND.
119 &mint(109).EQ.2))
THEN
120 IF(kfa.EQ.22.AND.mstp(56).EQ.1.AND.mstp(55).GE.5.AND.
121 & mstp(55).LE.12)
THEN
122 iset=1+mod(mstp(55)-1,4)
125 IF(iset.GE.3) p2mx=4.0
126 IF(mstp(57).EQ.0) q2mx=p2mx
127 CALL
pygvmd(iset,2,
x,q2mx,p2mx,alamga,xpga)
132 ELSEIF(mstp(54).EQ.1.AND.mstp(53).GE.1.AND.mstp(53).LE.3)
THEN
137 ELSEIF(mstp(54).EQ.2)
THEN
142 value(2)=mstp(53)/1000
144 value(3)=mod(mstp(53),1000)
145 IF(mint(93).NE.2000000+mstp(53))
THEN
146 CALL pdfset(parm,
value)
147 mint(93)=2000000+mstp(53)
150 qq=sqrt(
max(0.,sngl(q2min),q2))
151 IF(mstp(57).EQ.0) qq=sqrt(q2min)
152 CALL structm(xx,qq,upv,dnv,usea,dsea,str,chm,bot,
top,glu)
168 WRITE(mstu(11),5200) kf,mstp(54),mstp(53)
172 ELSEIF(kfa.EQ.22.AND.mint(109).EQ.3)
THEN
175 IF(mstp(56).EQ.1.AND.mstp(55).LE.8)
THEN
176 IF(mstp(55).EQ.5.OR.mstp(55).EQ.6) p2mx=0.36
177 IF(mstp(55).EQ.7.OR.mstp(55).EQ.8) p2mx=4.0
178 IF(mstp(57).EQ.0) q2mx=p2mx
179 CALL
pygano(0,
x,q2mx,p2mx,alamga,xpga)
184 ELSEIF(mstp(56).EQ.1)
THEN
185 IF(mstp(55).EQ.9.OR.mstp(55).EQ.10) p2mx=0.36
186 IF(mstp(55).EQ.11.OR.mstp(55).EQ.12) p2mx=4.0
187 IF(mstp(57).EQ.0) q2mx=p2mx
188 CALL
pyggam(mstp(55)-8,
x,q2mx,0.,f2gm,xpga)
190 xpq(kfl)=
max(0.,xpanl(kfl)+xpbeh(kfl)+xpdir(kfl))
193 ELSEIF(mstp(56).EQ.2)
THEN
194 IF(mstp(57).EQ.0) q2mx=p2mx
195 CALL
pygano(0,
x,q2mx,p2mx,alamga,xpga)
200 ELSEIF(mstp(55).GE.1.AND.mstp(55).LE.5)
THEN
201 IF(mstp(57).EQ.0) q2mx=p2mx
202 CALL
pygvmd(0,mstp(55),
x,q2mx,p2mx,parp(1),xpga)
214 IF(kfr.EQ.4.AND.q2.LT.pmcga**2) goto 200
215 IF(kfr.EQ.5.AND.q2.LT.pmbga**2) goto 200
216 IF(mstp(57).EQ.0) q2mx=p2mx
217 CALL
pygvmd(0,kfr,
x,q2mx,p2mx,parp(1),xpga)
226 IF(mstp(52).EQ.1.AND.mstp(51).GE.1.AND.mstp(51).LE.11)
THEN
231 ELSEIF(mstp(52).EQ.2)
THEN
236 value(2)=mstp(51)/1000
238 value(3)=mod(mstp(51),1000)
239 IF(mint(93).NE.1000000+mstp(51))
THEN
240 CALL pdfset(parm,
value)
241 mint(93)=1000000+mstp(51)
244 qq=sqrt(
max(0.,sngl(q2min),q2))
245 IF(mstp(57).EQ.0) qq=sqrt(q2min)
246 CALL structm(xx,qq,upv,dnv,usea,dsea,str,chm,bot,
top,glu)
262 WRITE(mstu(11),5200) kf,mstp(52),mstp(51)
267 IF(kfa.EQ.111.OR.(kfa.EQ.22.AND.mint(109).EQ.2))
THEN
268 IF(kfa.EQ.22.AND.mstp(55).GE.5.AND.mstp(55).LE.12)
THEN
273 xps=0.5*(xpq(1)+xpq(-2))
274 xpv=0.5*(xpq(2)+xpq(-1))-xps
278 IF(kfa.EQ.22.AND.mint(105).LE.223)
THEN
279 xpq(1)=xpq(1)+0.2*xpv
280 xpq(-1)=xpq(-1)+0.2*xpv
281 xpq(2)=xpq(2)+0.8*xpv
282 xpq(-2)=xpq(-2)+0.8*xpv
283 ELSEIF(kfa.EQ.22.AND.mint(105).EQ.333)
THEN
286 ELSEIF(kfa.EQ.22.AND.mint(105).EQ.443)
THEN
289 IF(mstp(55).GE.9)
THEN
295 xpq(1)=xpq(1)+0.5*xpv
296 xpq(-1)=xpq(-1)+0.5*xpv
297 xpq(2)=xpq(2)+0.5*xpv
298 xpq(-2)=xpq(-2)+0.5*xpv
302 IF(kfa.EQ.22.AND.mint(109).EQ.2)
THEN
304 xpq(kfl)=vint(281)*xpq(kfl)
306 vint(232)=vint(281)*xpv
310 ELSEIF(kfa.EQ.2112)
THEN
319 ELSEIF(kfa.EQ.3122.OR.kfa.EQ.3112.OR.kfa.EQ.3212.OR.kfa.EQ.3222
320 &.OR.kfa.EQ.3312.OR.kfa.EQ.3322.OR.kfa.EQ.3334)
THEN
321 xpval=(xpq(1)+xpq(2)-xpq(-1)-xpq(-2))/3.
322 xpsea=0.5*(xpq(-1)+xpq(-2))
327 xpq(kfa/1000)=xpq(kfa/1000)+xpval
328 xpq(mod(kfa/100,10))=xpq(mod(kfa/100,10))+xpval
329 xpq(mod(kfa/10,10))=xpq(mod(kfa/10,10))+xpval
335 IF(kfl.EQ.21.OR.kfl.EQ.22.OR.kfl.EQ.23.OR.kfl.EQ.25) goto 250
347 xpq(kfl)=
max(0.,xpq(kfl))
348 IF(iabs(kfl).GT.mstp(58).AND.iabs(kfl).LE.8) xpq(kfl)=0.
352 5000
FORMAT(
' Error: x value outside physical range; x =',1
p,e12.3)
353 5100
FORMAT(
' Error: illegal particle code for structure function;',
355 5200
FORMAT(
' Error: unknown structure function; KF, library, set =',