File indexing completed on 2025-08-05 08:15:42
0001
0002
0003
0004
0005
0006
0007 SUBROUTINE ATROBO(THE,PHI,BEX,BEY,BEZ,IMIN,IMAX,IERROR)
0008 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0009 SAVE /LUJETS/
0010 DIMENSION ROT(3,3),PV(3)
0011 DOUBLE PRECISION DP(4),DBEX,DBEY,DBEZ,DGA,DGA2,DBEP,DGABEP
0012 IERROR=0
0013
0014 IF(IMIN.LE.0 .OR. IMAX.GT.N .OR. IMIN.GT.IMAX) RETURN
0015
0016 IF(THE**2+PHI**2.GT.1E-20) THEN
0017
0018 ROT(1,1)=COS(THE)*COS(PHI)
0019 ROT(1,2)=-SIN(PHI)
0020 ROT(1,3)=SIN(THE)*COS(PHI)
0021 ROT(2,1)=COS(THE)*SIN(PHI)
0022 ROT(2,2)=COS(PHI)
0023 ROT(2,3)=SIN(THE)*SIN(PHI)
0024 ROT(3,1)=-SIN(THE)
0025 ROT(3,2)=0.
0026 ROT(3,3)=COS(THE)
0027 DO 120 I=IMIN,IMAX
0028
0029 DO 100 J=1,3
0030 100 PV(J)=P(I,J)
0031 DO 110 J=1,3
0032 110 P(I,J)=ROT(J,1)*PV(1)+ROT(J,2)*PV(2)
0033 & +ROT(J,3)*PV(3)
0034 120 CONTINUE
0035 ENDIF
0036
0037 IF(BEX**2+BEY**2+BEZ**2.GT.1E-20) THEN
0038
0039 DBEX=BEX
0040 DBEY=BEY
0041 DBEZ=BEZ
0042 DGA2=1D0-DBEX**2-DBEY**2-DBEZ**2
0043 IF(DGA2.LE.0D0) THEN
0044 IERROR=1
0045 RETURN
0046 ENDIF
0047 DGA=1D0/DSQRT(DGA2)
0048 DO 140 I=IMIN,IMAX
0049
0050 DO 130 J=1,4
0051 130 DP(J)=P(I,J)
0052 DBEP=DBEX*DP(1)+DBEY*DP(2)+DBEZ*DP(3)
0053 DGABEP=DGA*(DGA*DBEP/(1D0+DGA)+DP(4))
0054 P(I,1)=DP(1)+DGABEP*DBEX
0055 P(I,2)=DP(2)+DGABEP*DBEY
0056 P(I,3)=DP(3)+DGABEP*DBEZ
0057 P(I,4)=DGA*(DP(4)+DBEP)
0058 140 CONTINUE
0059 ENDIF
0060
0061 RETURN
0062 END