12 SUBROUTINE pyreco(IW1,IW2,NSD1,NAFT1)
15 IMPLICIT DOUBLE PRECISION(a-
h, o-
z)
22 common/
pydat1/mstu(200),paru(200),mstj(200),parj(200)
23 common/
pydat2/kchg(500,4),pmas(500,4),parf(2000),vckm(4,4)
28 dimension nbeg(2),nend(2),inp(50),inm(50),beww(3),xp(3),xm(3),
29 &
v1(3),
v2(3),betp(50,4),dirp(50,3),betm(50,4),dirm(50,3),
30 &xd(4),
xb(4),
iap(npt),iam(npt),wta(npt),v1p(3),v2p(3),v1m(3),
31 &v2m(3),
q(4,3),xpp(3),xmm(3),ipc(20),imc(20),
tc(0:20),tpc(20),
42 IF(
mstp(115).EQ.5.OR.
mstp(115).EQ.11.OR.
mstp(115).EQ.12)
THEN
48 IF(
mstp(115).EQ.1.OR.
mstp(115).EQ.2.OR.
mstp(115).EQ.3.OR.
55 IF(isub.EQ.22) pmw=pmas(23,1)
57 IF(isub.EQ.22) pgw=pmas(23,2)
69 IF(naft1.GT.nsd1+4)
THEN
87 IF(
mint(51).NE.0)
RETURN
96 IF(
k(
i,1).NE.1.AND.
k(
i,1).NE.2) goto 120
97 IF(iabs(
k(
i,2)).GE.22) goto 120
98 IF(
k(
i,3).GE.nbeg(1).AND.
k(
i,3).LE.nend(1))
THEN
99 IF(isgp.EQ.0) isgp=isign(1,
k(
i,2))
109 IF(
k(
i,1).EQ.1) isgp=0
110 ELSEIF(
k(
i,3).GE.nbeg(2).AND.
k(
i,3).LE.nend(2))
THEN
111 IF(isgm.EQ.0) isgm=isign(1,
k(
i,2))
121 IF(
k(
i,1).EQ.1) isgm=0
127 beww(
j)=(
p(iw1,
j)+
p(iw2,
j))/(
p(iw1,4)+
p(iw2,4))
129 CALL
pyrobo(iw1,iw1,0d0,0d0,-beww(1),-beww(2),-beww(3))
130 CALL
pyrobo(iw2,iw2,0d0,0d0,-beww(1),-beww(2),-beww(3))
131 CALL
pyrobo(nold+1,
n,0d0,0d0,-beww(1),-beww(2),-beww(3))
134 tp=hbar*(-
log(
pyr(0)))*
p(iw1,4)/
135 & sqrt((
p(iw1,5)**2-pmw**2)**2+(
p(iw1,5)**2*pgw/pmw)**2)
136 tm=hbar*(-
log(
pyr(0)))*
p(iw2,4)/
137 & sqrt((
p(iw2,5)**2-pmw**2)**2+(
p(iw2,5)**2*pgw/pmw)**2)
140 xp(
j)=tp*
p(iw1,
j)/
p(iw1,4)
141 xm(
j)=tm*
p(iw2,
j)/
p(iw2,4)
145 IF(
mstp(115).EQ.1)
THEN
149 IF(
k(inp(iip),2).LT.0) goto 170
152 p1a=sqrt(
p(
i1,1)**2+
p(
i1,2)**2+
p(
i1,3)**2)
153 p2a=sqrt(
p(
i2,1)**2+
p(
i2,2)**2+
p(
i2,3)**2)
157 betp(iip,
j)=0.5d0*(
v1(
j)+
v2(
j))
160 betp(iip,4)=1d0/sqrt(1d0-betp(iip,1)**2-betp(iip,2)**2-
162 dirl=sqrt(dirp(iip,1)**2+dirp(iip,2)**2+dirp(iip,3)**2)
164 dirp(iip,
j)=dirp(iip,
j)/dirl
170 IF(
k(inm(iim),2).LT.0) goto 200
173 p1a=sqrt(
p(
i1,1)**2+
p(
i1,2)**2+
p(
i1,3)**2)
174 p2a=sqrt(
p(
i2,1)**2+
p(
i2,2)**2+
p(
i2,3)**2)
178 betm(iim,
j)=0.5d0*(
v1(
j)+
v2(
j))
181 betm(iim,4)=1d0/sqrt(1d0-betm(iim,1)**2-betm(iim,2)**2-
183 dirl=sqrt(dirm(iim,1)**2+dirm(iim,2)**2+dirm(iim,3)**2)
185 dirm(iim,
j)=dirm(iim,
j)/dirl
197 x=blowr*rhad*
r*cos(
phi)
198 y=blowr*rhad*
r*sin(
phi)
201 z=blowr*rhad*
r*cos(
phi)
202 t=gtmax+blowt*sqrt(0.5d0)*tfrag*
r*abs(sin(
phi))
205 IF(
t**2-
x**2-
y**2-
z**2.LT.0d0) goto 250
206 wtsmp=exp(-(
x**2+
y**2+
z**2)/(blowr*rhad)**2)*
207 & exp(-2d0*(
t-gtmax)**2/(blowt*tfrag)**2)
217 IF(
k(inp(iip),2).LT.0) goto 220
218 bed=betp(iip,1)*xd(1)+betp(iip,2)*xd(2)+betp(iip,3)*xd(3)
219 bedg=betp(iip,4)*(betp(iip,4)*bed/(1d0+betp(iip,4))-xd(4))
221 xb(
j)=xd(
j)+bedg*betp(iip,
j)
223 xb(4)=betp(iip,4)*(xd(4)-bed)
224 sr2=
xb(1)**2+
xb(2)**2+
xb(3)**2
225 sz2=(dirp(iip,1)*
xb(1)+dirp(iip,2)*
xb(2)+
226 & dirp(iip,3)*
xb(3))**2
227 wtp=exp(-(sr2-sz2)/(2d0*rhad**2))*exp(-(
xb(4)**2-sz2)/
229 IF(
xb(4)-sqrt(sr2).LT.0d0) wtp=0d0
230 IF(wtp.GT.wtmaxp)
THEN
244 IF(
k(inm(iim),2).LT.0) goto 240
245 bed=betm(iim,1)*xd(1)+betm(iim,2)*xd(2)+betm(iim,3)*xd(3)
246 bedg=betm(iim,4)*(betm(iim,4)*bed/(1d0+betm(iim,4))-xd(4))
248 xb(
j)=xd(
j)+bedg*betm(iim,
j)
250 xb(4)=betm(iim,4)*(xd(4)-bed)
251 sr2=
xb(1)**2+
xb(2)**2+
xb(3)**2
252 sz2=(dirm(iim,1)*
xb(1)+dirm(iim,2)*
xb(2)+
253 & dirm(iim,3)*
xb(3))**2
254 wtm=exp(-(sr2-sz2)/(2d0*rhad**2))*exp(-(
xb(4)**2-sz2)/
256 IF(
xb(4)-sqrt(sr2).LT.0d0) wtm=0d0
257 IF(wtm.GT.wtmaxm)
THEN
265 IF(imaxp.NE.0.AND.imaxm.NE.0)
THEN
266 wt=wtmaxp*wtmaxm/wtsmp
274 res=blowr**3*blowt*
sum/npt
278 prec=1d0-exp(-
fact*res)
279 IF(prec.GT.
pyr(0))
THEN
284 IF(rsum.LE.0d0) goto 270
291 ELSEIF(
mstp(115).EQ.2.OR.
mstp(115).EQ.3)
THEN
297 IF(
k(inp(iip),2).LT.0) goto 340
301 IF(
k(inm(iim),2).LT.0) goto 330
307 v1p(
j)=
p(i1p,
j)/
p(i1p,4)
308 v2p(
j)=
p(i2p,
j)/
p(i2p,4)
309 v1m(
j)=
p(i1m,
j)/
p(i1m,4)
310 v2m(
j)=
p(i2m,
j)/
p(i2m,4)
316 q(2,
j)=-(v2m(
j)-v1m(
j))
317 q(3,
j)=xp(
j)-xm(
j)-tp*v1p(
j)+tm*v1m(
j)
320 t=-deter(1,2,3)/deter(1,2,4)
330 alp=(s12*s23-s22*s13)/den
331 bet=(s21*s13-s11*s23)/den
335 IF(
t.LT.gtmax) iansw=0
336 IF(alp.LT.0d0.OR.alp.GT.1d0) iansw=0
337 IF(bet.LT.0d0.OR.bet.GT.1d0) iansw=0
341 xpp(
j)=xp(
j)+(v1p(
j)+alp*(v2p(
j)-v1p(
j)))*(
t-tp)
342 xmm(
j)=xm(
j)+(v1m(
j)+bet*(v2m(
j)-v1m(
j)))*(
t-tm)
344 d2pm=(xpp(1)-xmm(1))**2+(xpp(2)-xmm(2))**2+
346 d2p=xpp(1)**2+xpp(2)**2+xpp(3)**2
347 d2m=xmm(1)**2+xmm(2)**2+xmm(3)**2
348 IF(d2pm.GT.1d-4*(d2p+d2m)) iansw=-1
352 taup=sqrt(
max(0d0,(
t-tp)**2-(xpp(1)-xp(1))**2-
353 & (xpp(2)-xp(2))**2-(xpp(3)-xp(3))**2))
354 taum=sqrt(
max(0d0,(
t-tm)**2-(xmm(1)-xm(1))**2-
355 & (xmm(2)-xm(2))**2-(xmm(3)-xm(3))**2))
362 IF(iansw.EQ.1.AND.ncross.LT.20)
THEN
364 DO 310
i1=ncross,1,-1
365 IF(
t.GT.
tc(
i1-1).OR.
i1.EQ.1)
THEN
389 pnfrag=exp(-(tpc(ic)**2+tmc(ic)**2)/tfrag**2)
390 IF(pnfrag.GT.
pyr(0))
THEN
392 IF(
mstp(115).EQ.2)
THEN
405 elold=four(i1p,i2p)*four(i1m,i2m)
406 elnew=four(i1p,i2m)*four(i1m,i2p)
407 IF(elnew.LT.elold)
THEN
420 ELSEIF(
mstp(115).EQ.5)
THEN
426 IF(
k(inp(iip),2).LT.0) goto 380
430 IF(
k(inm(iim),2).LT.0) goto 370
435 elold=four(i1p,i2p)*four(i1m,i2m)
436 elnew=four(i1p,i2m)*four(i1m,i2p)
437 eldif=elnew/
max(1d-10,elold)
438 IF(eldif.LT.elmin)
THEN
458 ELSEIF(is.LE.iip+nnm-iim)
THEN
460 ELSEIF(is.LE.iip+nnm)
THEN
461 i=inm(is-iip-nnm+iim)
475 IF(
k(
i,1).EQ.13.OR.
k(
i,1).EQ.14)
THEN
476 k(
i,4)=mod(
k(
i,4),mstu(5)**2)
477 k(
i,5)=mod(
k(
i,5),mstu(5)**2)
487 CALL
pyrobo(iw1,iw1,0d0,0d0,beww(1),beww(2),beww(3))
488 CALL
pyrobo(iw2,iw2,0d0,0d0,beww(1),beww(2),beww(3))
489 IF(
n.GT.nold) CALL
pyrobo(nold+1,
n,0d0,0d0,
490 & beww(1),beww(2),beww(3))
493 ELSEIF(
mstp(115).EQ.11.OR.
mstp(115).EQ.12)
THEN
498 DO 420
i=nsd1+1,nsd1+4
500 k(
i,4)=mod(
k(
i,4),mstu(5)**2)
501 k(
i,5)=mod(
k(
i,5),mstu(5)**2)
508 IF(
k(iq1,2)*
k(iq3,2).LT.0) iq3=nsd1+4
520 IF(
mstp(71).GE.1.AND.
mstp(115).EQ.11)
THEN
528 ELSEIF(
mstp(71).GE.1.AND.
mstp(115).EQ.12)
THEN
529 ppm2=(
p(iq1,4)+
p(iq4,4))**2-(
p(iq1,1)+
p(iq4,1))**2-
530 & (
p(iq1,2)+
p(iq4,2))**2-(
p(iq1,3)+
p(iq4,3))**2
531 ppm=sqrt(
max(0d0,ppm2))
533 ppm2=(
p(iq3,4)+
p(iq2,4))**2-(
p(iq3,1)+
p(iq2,1))**2-
534 & (
p(iq3,2)+
p(iq2,2))**2-(
p(iq3,3)+
p(iq2,3))**2
535 ppm=sqrt(
max(0d0,ppm2))