5 * Revision 1.1.1.1 1995/10/24 10:19:45 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.32 by S.Giani
12 SUBROUTINE CGZRE(K,CG,LCG)
13 ************************************************************************
16 * Author: E. Chernyaev Date: 01.02.89 *
19 * Function: Rotate edge about Z-axis *
23 * Input: K - number for step *
26 * Output: LCG - last index in CG-object *
30 ************************************************************************
31 #include "geant321/cggpar.inc"
32 #include "geant321/cgdelt.inc"
33 #include "geant321/cgcaan.inc"
34 #if !defined(CERNLIB_SINGLE)
35 DOUBLE PRECISION X1,Y1,H1,X2,Y2,H2,AW,AA,BB,CC,DD,S
36 DOUBLE PRECISION D1,D2,DX1,DY1,DH1,DX2,DY2,DH2
41 D1 = ABS(XYHA(1,1)) + ABS(XYHA(2,1))
42 D2 = ABS(XYHA(1,2)) + ABS(XYHA(2,2))
43 IF (D1.LT.EEWOR .AND. D2.LT.EEWOR) GOTO 999
44 X1 = XYHA(1,1)*COSI - XYHA(2,1)*SINI
45 Y1 = XYHA(1,1)*SINI + XYHA(2,1)*COSI
46 X2 = XYHA(1,2)*COSI - XYHA(2,2)*SINI
47 Y2 = XYHA(1,2)*SINI + XYHA(2,2)*COSI
50 IF (ABS(H1-H2) .LT. EEWOR) GOTO 200
51 DX1 = X1 - (X2*COSDA(K)-Y2*SINDA(K))
52 DY1 = Y1 - (X2*SINDA(K)+Y2*COSDA(K))
54 DX2 = (X1*COSDA(K)-Y1*SINDA(K)) - X2
55 DY2 = (X1*SINDA(K)+Y1*COSDA(K)) - Y2
57 AA = DY1*DH2 - DY2*DH1
58 BB = DH1*DX2 - DH2*DX1
59 CC = DX1*DY2 - DX2*DY1
60 S = SQRT(AA*AA + BB*BB + CC*CC)
61 IF (S .LT. EEWOR) GOTO 999
65 DD =-(AA*X1 + BB*Y1 + CC*H1)
72 AW = AA*COSDA(K) - BB*SINDA(K)
73 BB = AA*SINDA(K) + BB*COSDA(K)
76 IF (D1.LT.EEWOR .OR. D2.LT.EEWOR) CG(J+KCGNE) = 3.
80 IF (I.EQ.1 .AND. IFULL.EQ.0) CG(J+KCGAE) = 0.
89 IF (D1 .LT. EEWOR) GOTO 110
90 CG(J+KCGAE) = XYHA(4,1)
94 IF (I.NE.NASTP(K) .OR. IFULL.EQ.0)
95 + CG(J+KCGX2) = X1*COSDA(K) - Y1*SINDA(K)
96 IF (I.NE.NASTP(K) .OR. IFULL.EQ.0)
97 + CG(J+KCGY2) = X1*SINDA(K) + Y1*COSDA(K)
98 IF (I.EQ.NASTP(K) .AND. IFULL.NE.0)
99 + CG(J+KCGX2) = CG(LCGFAC+KCGX2)
100 IF (I.EQ.NASTP(K) .AND. IFULL.NE.0)
101 + CG(J+KCGY2) = CG(LCGFAC+KCGY2)
107 110 IF (D2 .LT. EEWOR) GOTO 120
108 CG(J+KCGAE) = XYHA(4,2)
112 IF (I.NE.NASTP(K) .OR. IFULL.EQ.0)
113 + CG(J+KCGX1) = X2*COSDA(K) - Y2*SINDA(K)
114 IF (I.NE.NASTP(K) .OR. IFULL.EQ.0)
115 + CG(J+KCGY1) = X2*SINDA(K) + Y2*COSDA(K)
116 IF (I.EQ.NASTP(K) .AND. IFULL.NE.0)
117 + CG(J+KCGX1) = CG(LCGFAC+KCGX1)
118 IF (I.EQ.NASTP(K) .AND. IFULL.NE.0)
119 + CG(J+KCGY1) = CG(LCGFAC+KCGY1)
125 120 CG(J+KCGAE) = ATREDG
126 IF (I.EQ.NASTP(K) .AND. IFULL.EQ.0) CG(J+KCGAE) = 0.
137 ** M A K E H O R I Z O N T A L F A C E
140 IF (ABS(DD) .LT. EEWOR) GOTO 999
146 IF (DD .GT. 0) CG(J+KCGCC) = 1.
147 IF (DD .LT. 0) CG(J+KCGCC) =-1.
148 CG(J+KCGDD) =-XYHA(3,1) * CG(J+KCGCC)
150 IF (D1 .GT. 0) NEDGE = NEDGE + NASTP(K1)
151 IF (D2 .GT. 0) NEDGE = NEDGE + NASTP(K2)
152 IF (IFULL .EQ. 0) NEDGE = NEDGE + 2
155 IF (IFULL .NE. 0) GOTO 210
164 210 IF (D1 .EQ. 0.) GOTO 230
166 CG(J+KCGAE) = XYHA(4,1)
170 CG(J+KCGX2) = X1*COSDA(K1) - Y1*SINDA(K1)
171 CG(J+KCGY2) = X1*SINDA(K1) + Y1*COSDA(K1)
177 IF (IFULL .EQ. 0) GOTO 230
178 X1 = XYHA(1,1)*COSI - XYHA(2,1)*SINI
179 Y1 = XYHA(1,1)*SINI + XYHA(2,1)*COSI
180 CG(J-LCGEDG+KCGX2) = X1
181 CG(J-LCGEDG+KCGY2) = Y1
183 230 IF (D2 .EQ. 0.) GOTO 250
185 CG(J+KCGAE) = XYHA(4,2)
189 CG(J+KCGX1) = X2*COSDA(K2) - Y2*SINDA(K2)
190 CG(J+KCGY1) = X2*SINDA(K2) + Y2*COSDA(K2)
196 IF (IFULL .EQ. 0) GOTO 250
197 X2 = XYHA(1,2)*COSI - XYHA(2,2)*SINI
198 Y2 = XYHA(1,2)*SINI + XYHA(2,2)*COSI
199 CG(J-LCGEDG+KCGX1) = X2
200 CG(J-LCGEDG+KCGY1) = Y2
202 250 IF (IFULL .NE. 0) GOTO 999