7 SUBROUTINE pyrobo(IMI,IMA,THE,PHI,BEX,BEY,BEZ)
10 IMPLICIT DOUBLE PRECISION(a-
h, o-
z)
15 common/
pydat1/mstu(200),paru(200),mstj(200),parj(200)
18 dimension rot(3,3),pr(3),vr(3),dp(4),dv(4)
23 IF(mstu(1).GT.0) imin=mstu(1)
26 IF(mstu(2).GT.0) imax=mstu(2)
27 IF(imin.GT.mstu(4).OR.imax.GT.mstu(4))
THEN
28 CALL
pyerrm(11,
'(PYROBO:) range outside PYJETS memory')
33 IF(mstu(33).NE.0)
THEN
34 DO 110
i=min(imin,mstu(4)),min(imax,mstu(4))
43 IF(the**2+
phi**2.GT.1d-20)
THEN
44 rot(1,1)=cos(the)*cos(
phi)
46 rot(1,3)=sin(the)*cos(
phi)
47 rot(2,1)=cos(the)*sin(
phi)
49 rot(2,3)=sin(the)*sin(
phi)
54 IF(
k(
i,1).LE.0) goto 140
60 p(
i,
j)=rot(
j,1)*pr(1)+rot(
j,2)*pr(2)+rot(
j,3)*pr(3)
61 v(
i,
j)=rot(
j,1)*vr(1)+rot(
j,2)*vr(2)+rot(
j,3)*vr(3)
67 IF(bex**2+bey**2+bez**2.GT.1d-20)
THEN
71 db=sqrt(dbx**2+dby**2+dbz**2)
75 CALL
pyerrm(3,
'(PYROBO:) boost vector too large')
81 dga=1d0/sqrt(1d0-db**2)
83 IF(
k(
i,1).LE.0) goto 160
88 dbp=dbx*dp(1)+dby*dp(2)+dbz*dp(3)
89 dgabp=dga*(dga*dbp/(1d0+dga)+dp(4))
90 p(
i,1)=dp(1)+dgabp*dbx
91 p(
i,2)=dp(2)+dgabp*dby
92 p(
i,3)=dp(3)+dgabp*dbz
93 p(
i,4)=dga*(dp(4)+dbp)
94 dbv=dbx*dv(1)+dby*dv(2)+dbz*dv(3)
95 dgabv=dga*(dga*dbv/(1d0+dga)+dv(4))
96 v(
i,1)=dv(1)+dgabv*dbx
97 v(
i,2)=dv(2)+dgabv*dby
98 v(
i,3)=dv(3)+dgabv*dbz
99 v(
i,4)=dga*(dv(4)+dbv)