12 IMPLICIT DOUBLE PRECISION(a-
h, o-
z)
16 parameter(ksusy1=1000000,ksusy2=2000000,ktechn=3000000,
17 &kexcit=4000000,kdimen=5000000)
20 common/
pydat1/mstu(200),paru(200),mstj(200),parj(200)
21 common/
pydat2/kchg(500,4),pmas(500,4),parf(2000),vckm(4,4)
25 dimension dps(4),kfbe(9),nbe(0:10),bei(100),bei3(100),
27 DATA kfbe/211,-211,111,321,-321,130,310,221,331/
29 sdip(
i,
j)=((
p(
i,4)+
p(
j,4))**2-(
p(
i,3)+
p(
j,3))**2-
30 &(
p(
i,2)+
p(
j,2))**2-(
p(
i,1)+
p(
j,1))**2)
33 IF((mstj(51).NE.1.AND.mstj(51).NE.2).OR.
n-nsav.LE.1)
RETURN
39 IF(
k(
i,1).LE.10.AND.((kfa.GT.10.AND.kfa.LE.20).OR.kfa.EQ.22)
40 & .AND.
k(
i,3).GT.0)
THEN
41 kfma=iabs(
k(
k(
i,3),2))
42 IF(kfma.GT.10.AND.kfma.LE.80)
k(
i,1)=-
k(
i,1)
44 IF(
k(
i,1).LE.0.OR.
k(
i,1).GT.10) goto 120
49 CALL
pyrobo(0,0,0d0,0d0,-dps(1)/dps(4),-dps(2)/dps(4),
53 IF(
k(
i,1).GE.1.AND.
k(
i,1).LE.10) pecm=pecm+
p(
i,4)
64 DO 190 ibe=1,min(10,mstj(52)+1)
67 IF(ibe.EQ.min(10,mstj(52)+1))
THEN
69 IF(
k(
i,2).EQ.kfbe(iibe)) goto 180
72 IF(
k(
i,2).NE.kfbe(ibe)) goto 180
74 IF(
k(
i,1).LE.0.OR.
k(
i,1).GT.10) goto 180
75 IF(nbe(ibe).GE.mstu(4)-mstu(32)-5)
THEN
76 CALL
pyerrm(11,
'(PYBOEI:) no more memory left in PYJETS')
91 smmin=min(smmin,
p(
i,5))
93 IF((mstj(53).NE.0.OR.mstj(56).GT.0).AND.
mint(32).EQ.0)
THEN
95 150
IF(
k(im,3).GT.0)
THEN
97 IF(abs(
k(im,2)).NE.24.AND.
k(im,2).NE.23) goto 150
99 IF(iwp.EQ.0.AND.
k(im,2).EQ.24) iwp=im
100 IF(iwn.EQ.0.AND.
k(im,2).EQ.-24) iwn=im
101 IF(iwp.EQ.0.AND.
k(im,2).EQ.23) iwp=im
102 IF(iwn.EQ.0.AND.
k(im,2).EQ.23.AND.im.NE.iwp) iwn=im
106 IF(parj(94).GT.0.0d0)
THEN
108 160
IF(
k(im,3).GT.0)
THEN
110 IF(
k(im,2).NE.92.AND.
k(im,2).NE.91) goto 160
121 IF(nbe(min(9,mstj(52)))-nbe(0).LE.1) goto 510
126 IF(iwp.GT.0.AND.iwn.GT.0.AND.mstj(56).GT.0.AND.
mint(32).EQ.0)
THEN
127 IF(
k(iwp,2).EQ.23)
THEN
136 taupd=dmp/sqrt((dmp**2-dmw**2)**2+(dgw*(dmp**2)/dmw)**2)
137 taund=dmn/sqrt((dmn**2-dmw**2)**2+(dgw*(dmn**2)/dmw)**2)
138 taup=-taupd*
log(
pyr(idum))
139 taun=-taund*
log(
pyr(idum))
140 dxp=taup*
pyp(iwp,8)/dmp
141 dxn=taun*
pyp(iwn,8)/dmn
143 sigw=1.0d0/(1.0d0/parj(93)+
REAL(mstj(56))*dx)
144 IF(parj(94).LT.0.0d0) sigw=1.0d0/(1.0d0/sigw-1.0d0/parj(94))
148 IF(parj(94).GT.0.0d0)
THEN
149 sigw=1.0d0/(1.0d0/sigw+1.0d0/parj(94))
154 IF(mstj(57).EQ.1.AND.mstj(54).LT.0)
THEN
155 DO 220 ibe=1,min(9,mstj(52))
156 DO 210 i1m=nbe(ibe-1)+1,nbe(ibe)
159 DO 200 i2m=nbe(ibe-1)+1,nbe(ibe)
160 IF(i2m.EQ.i1m) goto 200
165 IF(q2.GT.0.0d0.AND.q2.LT.q2min)
THEN
175 DO 400 ibe=1,min(9,mstj(52))
176 IF(ibe.NE.1.AND.ibe.NE.4.AND.ibe.LE.7) goto 270
177 IF(ibe.EQ.1.AND.
max(nbe(1)-nbe(0),nbe(2)-nbe(1),nbe(3)-nbe(2))
179 IF(ibe.EQ.4.AND.
max(nbe(4)-nbe(3),nbe(5)-nbe(4),nbe(6)-nbe(5),
180 & nbe(7)-nbe(6)).LE.1) goto 270
181 IF(ibe.GE.8.AND.nbe(ibe)-nbe(ibe-1).LE.1) goto 270
182 IF(ibe.EQ.1) pmhq=2d0*
pymass(211)
183 IF(ibe.EQ.4) pmhq=2d0*
pymass(321)
184 IF(ibe.EQ.8) pmhq=2d0*
pymass(221)
185 IF(ibe.EQ.9) pmhq=2d0*
pymass(331)
186 qdel=0.1d0*min(pmhq,parj(93))
187 qdel3=0.1d0*min(pmhq,parj(93)*3.0d0)
188 qdelw=0.1d0*min(pmhq,sigw)
189 qdel3w=0.1d0*min(pmhq,sigw*3.0d0)
190 IF(mstj(51).EQ.1)
THEN
191 nbin=min(100,nint(9d0*parj(93)/qdel))
192 nbin3=min(100,nint(27d0*parj(93)/qdel3))
193 nbinw=min(100,nint(9d0*sigw/qdelw))
194 nbin3w=min(100,nint(27d0*sigw/qdel3w))
195 beex=exp(0.5d0*qdel/parj(93))
196 beex3=exp(0.5d0*qdel3/(3.0d0*parj(93)))
197 beexw=exp(0.5d0*qdelw/sigw)
198 beex3w=exp(0.5d0*qdel3w/(3.0d0*sigw))
199 bert=exp(-qdel/parj(93))
200 bert3=exp(-qdel3/(3.0d0*parj(93)))
201 bertw=exp(-qdelw/sigw)
202 bert3w=exp(-qdel3w/(3.0d0*sigw))
204 nbin=min(100,nint(3d0*parj(93)/qdel))
205 nbin3=min(100,nint(9d0*parj(93)/qdel3))
206 nbinw=min(100,nint(3d0*sigw/qdelw))
207 nbin3w=min(100,nint(9d0*sigw/qdel3w))
210 qbin=qdel*(ibin-0.5d0)
211 bei(ibin)=qdel*(qbin**2+qdel**2/12d0)/sqrt(qbin**2+pmhq**2)
212 IF(mstj(51).EQ.1)
THEN
214 bei(ibin)=bei(ibin)*beex
216 bei(ibin)=bei(ibin)*exp(-(qbin/parj(93))**2)
218 IF(ibin.GE.2) bei(ibin)=bei(ibin)+bei(ibin-1)
221 qbin=qdel3*(ibin-0.5d0)
222 bei3(ibin)=qdel3*(qbin**2+qdel3**2/12d0)/sqrt(qbin**2+pmhq**2)
223 IF(mstj(51).EQ.1)
THEN
225 bei3(ibin)=bei3(ibin)*beex3
227 bei3(ibin)=bei3(ibin)*exp(-(qbin/(3.0d0*parj(93)))**2)
229 IF(ibin.GE.2) bei3(ibin)=bei3(ibin)+bei3(ibin-1)
232 qbin=qdelw*(ibin-0.5d0)
233 beiw(ibin)=qdelw*(qbin**2+qdelw**2/12d0)/sqrt(qbin**2+pmhq**2)
234 IF(mstj(51).EQ.1)
THEN
236 beiw(ibin)=beiw(ibin)*beexw
238 beiw(ibin)=beiw(ibin)*exp(-(qbin/sigw)**2)
240 IF(ibin.GE.2) beiw(ibin)=beiw(ibin)+beiw(ibin-1)
243 qbin=qdel3w*(ibin-0.5d0)
244 bei3w(ibin)=qdel3w*(qbin**2+qdel3w**2/12d0)/
245 & sqrt(qbin**2+pmhq**2)
246 IF(mstj(51).EQ.1)
THEN
248 bei3w(ibin)=bei3w(ibin)*beex3w
250 bei3w(ibin)=bei3w(ibin)*exp(-(qbin/(3.0d0*sigw))**2)
252 IF(ibin.GE.2) bei3w(ibin)=bei3w(ibin)+bei3w(ibin-1)
256 270
DO 390 i1m=nbe(ibe-1)+1,nbe(ibe)-1
258 DO 380 i2m=i1m+1,nbe(ibe)
259 IF(mstj(53).EQ.1.AND.
k(i1m,5).NE.
k(i2m,5)) goto 380
260 IF(mstj(53).EQ.2.AND.
k(i1m,5).EQ.
k(i2m,5)) goto 380
264 IF(q2old.LE.0.0d0) goto 380
272 IF(qold.LT.1d-3*qdel)
THEN
274 ELSEIF(qold.LE.qdel)
THEN
276 ELSEIF(qold.LT.(
nbin-0.1d0)*qdel)
THEN
279 rinp=(rbin**3-ibin**3)/(3*ibin*(ibin+1)+1)
280 qmov=(bei(ibin)+rinp*(bei(ibin+1)-bei(ibin)))*
281 & sqrt(q2old+pmhq**2)/q2old
283 qmov=bei(
nbin)*sqrt(q2old+pmhq**2)/q2old
285 280 q2new=q2old*(qold/(qold+3d0*parj(92)*qmov))**(2d0/3d0)
286 IF(qold.LT.1d-3*qdel3)
THEN
288 ELSEIF(qold.LE.qdel3)
THEN
290 ELSEIF(qold.LT.(nbin3-0.1d0)*qdel3)
THEN
293 rinp3=(rbin3**3-ibin3**3)/(3*ibin3*(ibin3+1)+1)
294 qmov3=(bei3(ibin3)+rinp3*(bei3(ibin3+1)-bei3(ibin3)))*
295 & sqrt(q2old+pmhq**2)/q2old
297 qmov3=bei3(nbin3)*sqrt(q2old+pmhq**2)/q2old
299 290 q2new3=q2old*(qold/(qold+3d0*parj(92)*qmov3))**(2d0/3d0)
302 & rscale=1.0d0-exp(-(qold/(2d0*parj(93)))**2)
303 IF((iwp.NE.-1.AND.mstj(56).LE.0).OR.iwp.EQ.0.OR.iwn.EQ.0.OR.
304 &
k(i1m,5).EQ.
k(i2m,5)) goto 320
306 IF(qold.LT.1d-3*qdelw)
THEN
308 ELSEIF(qold.LE.qdelw)
THEN
310 ELSEIF(qold.LT.(nbinw-0.1d0)*qdelw)
THEN
313 rinpw=(rbinw**3-ibinw**3)/(3*ibinw*(ibinw+1)+1)
314 qmovw=(beiw(ibinw)+rinpw*(beiw(ibinw+1)-beiw(ibinw)))*
315 & sqrt(q2old+pmhq**2)/q2old
317 qmovw=beiw(nbinw)*sqrt(q2old+pmhq**2)/q2old
319 300 q2new=q2old*(qold/(qold+3d0*parj(92)*qmovw))**(2d0/3d0)
320 IF(qold.LT.1d-3*qdel3w)
THEN
322 ELSEIF(qold.LE.qdel3w)
THEN
324 ELSEIF(qold.LT.(nbin3w-0.1d0)*qdel3w)
THEN
327 rinp3w=(rbin3w**3-ibin3w**3)/(3*ibin3w*(ibin3w+1)+1)
328 qmov3w=(bei3w(ibin3w)+rinp3w*(bei3w(ibin3w+1)-
329 & bei3w(ibin3w)))*sqrt(q2old+pmhq**2)/q2old
331 qmov3w=bei3w(nbin3w)*sqrt(q2old+pmhq**2)/q2old
333 310 q2new3=q2old*(qold/(qold+3d0*parj(92)*qmov3w))**(2d0/3d0)
335 & rscale=1.0d0-exp(-(qold/(2d0*sigw))**2)
339 p(i1m,
j)=
p(i1m,
j)+
p(nmax+1,
j)
340 p(i2m,
j)=
p(i2m,
j)+
p(nmax+2,
j)
342 IF(mstj(54).GE.1)
THEN
345 v(i1m,
j)=
v(i1m,
j)+
p(nmax+1,
j)*rscale
346 v(i2m,
j)=
v(i2m,
j)+
p(nmax+2,
j)*rscale
348 ELSEIF(mstj(54).LE.-1)
THEN
350 & sqrt(
max(q2new-q2old+(
p(
i1,4)+
p(
i2,4))**2,0.0d0))
357 sm1=(
p(
i1,5)+smmin)**2
358 DO 360 i3m=nbe(0)+1,nbe(min(10,mstj(52)+1))
359 IF(i3m.EQ.i1m.OR.i3m.EQ.i2m) goto 360
360 IF(mstj(53).EQ.1.AND.
k(i3m,5).NE.
k(i1m,5)) goto 360
361 IF(mstj(53).EQ.-2.AND.
k(i1m,5).EQ.
k(i2m,5).AND.
362 &
k(i3m,5).NE.
k(i1m,5)) goto 360
364 IF(
k(
i3,2).EQ.
k(
i1,2)) goto 360
367 sm3=(
p(
i3,5)+smmin)**2
368 IF(mstj(54).EQ.-2)
THEN
369 wi=(min(s12*sm3,s13*min(sm1,sm3),
370 & s23*min(sm1,sm3))*sm1)
377 IF(mstj(57).EQ.1.AND.
p(i3m,5).GT.0)
THEN
378 IF (wmax*wi.GE.(1.0d0-exp(-
p(i3m,5)/(parj(93)**2))))
381 IF(wmax*wi.GE.1.0) goto 360
383 DO 350 i4m=i3m+1,nbe(min(10,mstj(52)+1))
384 IF(i4m.EQ.i1m.OR.i4m.EQ.i2m) goto 350
385 IF(mstj(53).EQ.1.AND.
k(i4m,5).NE.
k(i1m,5)) goto 350
386 IF(mstj(53).EQ.-2.AND.
k(i1m,5).EQ.
k(i2m,5).AND.
387 &
k(i4m,5).NE.
k(i1m,5)) goto 350
391 IF((
p(
i3,4)+
p(
i4,4)+edel)**2.LT.
395 IF(mstj(54).EQ.-2)
THEN
399 w=s12*min(min(s23,s24),min(s13,s14))*s34
400 w=min(
w,s13*min(min(s23,s34),s12)*s24)
401 w=min(
w,s14*min(min(s24,s34),s12)*s23)
402 w=min(
w,min(s23,s24)*s13*s14)
411 IF(
w.LE.wmax) goto 350
413 IF(mstj(57).EQ.1.AND.
p(i3m,5).GT.0)
414 &
w=
w*(1.0d0-exp(-
p(i3m,5)/(parj(93)**2)))
415 IF(mstj(57).EQ.1.AND.
p(i4m,5).GT.0)
416 &
w=
w*(1.0d0-exp(-
p(i4m,5)/(parj(93)**2)))
417 IF(
w.LE.wmax) goto 350
423 IF(mi4.EQ.0) goto 380
430 q2newp=
max(0.0d0,enew**2-p2-(
p(
i3,5)+
p(
i4,5))**2)
431 q2oldp=
max(0.0d0,eold**2-p2-(
p(
i3,5)+
p(
i4,5))**2)
434 v(mi3,
j)=
v(mi3,
j)+
p(nmax+1,
j)
435 v(mi4,
j)=
v(mi4,
j)+
p(nmax+2,
j)
446 DO 430 im=nbe(0)+1,nbe(min(10,mstj(52)+1))
452 p(
i,4)=sqrt(
p(
i,5)**2+
p(
i,1)**2+
p(
i,2)**2+
p(
i,3)**2)
455 prod=prod+
v(im,
j)*
p(
i,
j)/
p(
i,4)
460 IF(mstj(54).NE.0.AND.prod.NE.0.0d0)
THEN
461 440
alpha=(esump-esum)/prod
462 parj(96)=parj(96)+
alpha
465 DO 470 im=nbe(0)+1,nbe(min(10,mstj(52)+1))
470 p(
i,4)=sqrt(
p(
i,5)**2+
p(
i,1)**2+
p(
i,2)**2+
p(
i,3)**2)
473 prod=prod+
v(im,
j)*
p(
i,
j)/
p(
i,4)
476 IF(prod.NE.0.0d0.AND.abs(esump-esum)/pecm.GT.0.00001d0)
484 IF(
k(
i,1).LE.0.OR.
k(
i,1).GT.10) goto 480
486 pqs=pqs+
p(
i,5)**2/
p(
i,4)
489 fac=(pecm-pqs)/(pes-pqs)
491 IF(
k(
i,1).LE.0.OR.
k(
i,1).GT.10) goto 500
495 p(
i,4)=sqrt(
p(
i,5)**2+
p(
i,1)**2+
p(
i,2)**2+
p(
i,3)**2)
499 510 CALL
pyrobo(0,0,0d0,0d0,dps(1)/dps(4),dps(2)/dps(4),dps(3)/dps(4))
501 IF(
k(
i,1).LT.0)
k(
i,1)=-
k(
i,1)