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 CGZREV(RZ,A1,A2,NA,LCG,CG)
13 ************************************************************************
16 * Author: E. Chernyaev Date: 05.02.89 *
19 * Function: Create CG-object by revolution around Z-axis *
21 * References: CGSIZE, CGSAAN, CGZRE *
23 * Input: RZ(2,4) - 4 node contour (1-st must be left lower node) *
24 * A1 - initial angle *
26 * NA - number of steps on angle *
27 * LCG - max-size of CG-object *
29 * Output: CG - CG-object *
30 * CG(1) - length of CG-object *
31 * = 0 if error in parameters *
36 ************************************************************************
37 #include "geant321/cggpar.inc"
38 #include "geant321/cgdelt.inc"
39 #include "geant321/cgcaan.inc"
41 #if !defined(CERNLIB_SINGLE)
42 DOUBLE PRECISION SINE,COSE
44 INTEGER NFAC(4),NEDG(4)
47 * T E S T P A R A M E T E R S C O R R E C T N E S S
49 IF (RZ(1,I) .LT. 0.) GOTO 999
52 RLENG = ABS(RZ(1,I)-RZ(1,K))
53 ZLENG = ABS(RZ(2,I)-RZ(2,K))
54 IF (RLENG.LT.EEWOR .AND. ZLENG.LT.EEWOR) GOTO 999
56 CALL CGSAAN(A1,A2,NA,NA,IREP)
57 * C O M P U T E S I Z E O F C G - O B J E C T
61 IF (IFULL .NE. 0) NEDG(3)= NA
62 IF (IFULL .EQ. 0) NEDG(3)= NA + 2
63 IF (IFULL .NE. 0) NEDG(4)= NA + NA
64 IF (IFULL .EQ. 0) NEDG(4)= NA + NA + 2
66 IF (IFULL .NE. 0) NFAC(2)= 0
67 IF (IFULL .EQ. 0) NFAC(2)= 2
74 IF (RZ(1,I).LT.EEWOR .AND. RZ(1,K).LT.EEWOR) GOTO 150
75 IF (ABS(RZ(2,I)-RZ(2,K)) .LT. EEWOR) GOTO 110
77 IF (RZ(1,I) .LT. EEWOR) J = J - 1
78 IF (RZ(1,K) .LT. EEWOR) J = J - 1
79 NFAC(J) = NFAC(J) + NA
81 110 IF (ABS(RZ(1,I)-RZ(1,K)) .LT. EEWOR) GOTO 150
83 IF (RZ(1,I) .LT. EEWOR) J = J - 1
84 IF (RZ(1,K) .LT. EEWOR) J = J - 1
87 CG(KCGSIZ) = CGSIZE(LCG,NFATYP,NFAC,NEDG)
88 IF (CG(KCGSIZ) .LE. 0.) GOTO 999
90 ** C R E A T E C G - O B J E C T
93 CG(KCGNF) = NFAC(1) + NFAC(2) + NFAC(3) + NFAC(4)
107 CALL CGZRE(2,CG(JCG+1),J)
110 IF (IFULL .NE. 0.) GOTO 999
111 * C R E A T E S I D E F A C E S
123 CG(JCG+KCGX1) = RZ(1,I)*COSI
124 CG(JCG+KCGY1) = RZ(1,I)*SINI
125 CG(JCG+KCGZ1) = RZ(2,I)
126 CG(JCG+KCGX2) = RZ(1,K)*COSI
127 CG(JCG+KCGY2) = RZ(1,K)*SINI
128 CG(JCG+KCGZ2) = RZ(2,K)
145 CG(JCG+KCGX1) = RZ(1,K)*COSE
146 CG(JCG+KCGY1) = RZ(1,K)*SINE
147 CG(JCG+KCGZ1) = RZ(2,K)
148 CG(JCG+KCGX2) = RZ(1,I)*COSE
149 CG(JCG+KCGY2) = RZ(1,I)*SINE
150 CG(JCG+KCGZ2) = RZ(2,I)