5 * Revision 1.1.1.1 1995/10/24 10:19:42 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.31 by S.Giani
12 SUBROUTINE CGBSEC(FACE,CG,RMN,RMX,NMAX,C,IREP)
13 ************************************************************************
16 * Author: E. Chernyaev Date: 24.10.88 *
19 * Function: Section of CG-object by face plane *
21 * References: CGBTFP, CGBSOR *
23 * Input: FACE(*) - plane *
25 * RMN(3) - min of CG-object scope *
26 * RMX(3) - max of CG-object scope *
27 * NMAX - max length of C array *
29 * Output: C(*) - resulting face *
30 * IREP - reply (length of resulitng face C) *
35 ************************************************************************
36 #include "geant321/cggpar.inc"
37 #include "geant321/cgdelt.inc"
38 REAL FACE(*),CG(*),RMN(3),RMX(3),C(*),D(8),ABCD(4)
40 IF (NMAX .LT. LCGFAC) GOTO 998
48 * M I N - M A X T E S T
49 D(1) = ABCD(1)*RMN(1)+ABCD(2)*RMN(2)+ABCD(3)*RMN(3)+ABCD(4)
50 D(2) = ABCD(1)*RMX(1)+ABCD(2)*RMN(2)+ABCD(3)*RMN(3)+ABCD(4)
51 D(3) = ABCD(1)*RMN(1)+ABCD(2)*RMX(2)+ABCD(3)*RMN(3)+ABCD(4)
52 D(4) = ABCD(1)*RMX(1)+ABCD(2)*RMX(2)+ABCD(3)*RMN(3)+ABCD(4)
53 D(5) = ABCD(1)*RMN(1)+ABCD(2)*RMN(2)+ABCD(3)*RMX(3)+ABCD(4)
54 D(6) = ABCD(1)*RMX(1)+ABCD(2)*RMN(2)+ABCD(3)*RMX(3)+ABCD(4)
55 D(7) = ABCD(1)*RMN(1)+ABCD(2)*RMX(2)+ABCD(3)*RMX(3)+ABCD(4)
56 D(8) = ABCD(1)*RMX(1)+ABCD(2)*RMX(2)+ABCD(3)*RMX(3)+ABCD(4)
60 IF (D(I) .GT. EEWOR) NPOS = NPOS + 1
61 IF (D(I) .LT.-EEWOR) NNEG = NNEG + 1
63 IF (NPOS.EQ.8 .OR. NNEG.EQ.8) GOTO 999
68 CALL CGBTFP(CG(JCG+1),ABCD,C)
69 IF (C(KCGAF) .LT. 0.) GOTO 998
71 JCG = JCG + LCGFAC + NEDGE*LCGEDG
74 ** S O R T E G E S & D E L E T E D O U B L E E D G E S
77 CALL CGBSOR(NEDGE,C(LCGFAC+1))
79 IF (NEDGE .EQ. 0) GOTO 997
80 * IF (NEDGE .LT. 3) PRINT *,' CGBSEC: NEDGE .LT. 3 - face ignored'
81 IF (NEDGE .LT. 3) GOTO 997
88 C(J+KCGAE) = C(J+KCGAE) - 2.
91 IREP = LCGFAC + LCGEDG*NEDGE