4 SUBROUTINE lurobo(THE,PHI,BEX,BEY,BEZ)
7 IMPLICIT DOUBLE PRECISION(d)
8 common/lujets/
n,
k(9000,5),
p(9000,5),
v(9000,5)
10 common/ludat1/mstu(200),paru(200),mstj(200),parj(200)
12 dimension rot(3,3),pr(3),vr(3),dp(4),dv(4)
16 IF(mstu(1).GT.0) imin=mstu(1)
18 IF(mstu(2).GT.0) imax=mstu(2)
25 entry ludbrb(imi,ima,the,
phi,dbex,dbey,dbez)
35 100
IF(imin.GT.mstu(4).OR.imax.GT.mstu(4))
THEN
36 CALL
luerrm(11,
'(LUROBO:) range outside LUJETS memory')
41 IF(the**2+
phi**2.GT.1
e-20)
THEN
42 rot(1,1)=cos(the)*cos(
phi)
44 rot(1,3)=sin(the)*cos(
phi)
45 rot(2,1)=cos(the)*sin(
phi)
47 rot(2,3)=sin(the)*sin(
phi)
52 IF(
k(
i,1).LE.0) goto 130
57 p(
i,
j)=rot(
j,1)*pr(1)+rot(
j,2)*pr(2)+rot(
j,3)*pr(3)
58 120
v(
i,
j)=rot(
j,1)*vr(1)+rot(
j,2)*vr(2)+rot(
j,3)*vr(3)
63 IF(dbx**2+dby**2+dbz**2.GT.1
e-20)
THEN
64 db=sqrt(dbx**2+dby**2+dbz**2)
65 IF(db.GT.0.99999999d0)
THEN
67 CALL
luerrm(3,
'(LUROBO:) boost vector too large')
68 dbx=dbx*(0.99999999d0/db)
69 dby=dby*(0.99999999d0/db)
70 dbz=dbz*(0.99999999d0/db)
73 dga=1d0/sqrt(1d0-db**2)
75 IF(
k(
i,1).LE.0) goto 150
79 dbp=dbx*dp(1)+dby*dp(2)+dbz*dp(3)
80 dgabp=dga*(dga*dbp/(1d0+dga)+dp(4))
81 p(
i,1)=dp(1)+dgabp*dbx
82 p(
i,2)=dp(2)+dgabp*dby
83 p(
i,3)=dp(3)+dgabp*dbz
84 p(
i,4)=dga*(dp(4)+dbp)
85 dbv=dbx*dv(1)+dby*dv(2)+dbz*dv(3)
86 dgabv=dga*(dga*dbv/(1d0+dga)+dv(4))
87 v(
i,1)=dv(1)+dgabv*dbx
88 v(
i,2)=dv(2)+dgabv*dby
89 v(
i,3)=dv(3)+dgabv*dbz
90 v(
i,4)=dga*(dv(4)+dbv)