5 * Revision 1.1.1.1 1999/05/18 15:55:03 fca
8 * Revision 1.2 1996/02/27 10:02:05 ravndal
9 * Drawing of PCON's optimized for 'HIDE ON'
11 * Revision 1.1.1.1 1995/10/24 10:20:20 cernlib
15 #include "geant321/pilot.h"
16 *CMZ : 3.21/04 13/12/94 17.13.38 by S.Giani
19 SUBROUTINE GDCGOB(ITASK,ISHAPE,PAR,NOBJ,NWWS,IVOLNA,
22 C. ******************************************************************
24 C. * Make the CG-Object with shape ISHAPE of parameters PAR *
25 C. * with the same logic as GDRAWS. 1992 *
27 C. * Input Parameters : *
29 C. * ITASK: Number for indicating the task to be performed *
32 C. * = 0 Counting task *
33 C. * = 1 Slicing + Counting *
34 C. * = 2 Clipping + Counting *
35 C. * = 3 Insert into the H.S. + Convert to Wire *
36 C. * = 4 Slicing + Insert into the H.S. + Convert *
38 C. * = 5 Clipping + Insert into the H.S. + Convert *
41 C. * SHAPE SHAPE SHAPE *
42 C. * NUMBER TYPE PARAMETERS *
43 C. * -------------------------------------------------------------- *
46 C. * 2 TRD1 DX1,DX2,DY,DZ *
47 C. * 3 TRD2 DX1,DX2,DY1,DY2,DZ *
48 C. * 4 TRAP DZ,TX,TY,H1,BL1,TL1,TTH1,H2,BL2,TL2,TTH2 *
50 C. * 5 TUBE RMIN,RMAX,DZ *
51 C. * 6 TUBS RMIN,RMAX,DZ,PHIMIN,PHIMAX *
52 C. * 7 CONE DZ,RMIN1,RMAX1,RMIN2,RMAX2 *
53 C. * 8 CONS DZ,RMIN1,RMAX1,RMIN2,RMAX2,PHIMIN,PHIMAX *
55 C. * 9 SPHE RMIN,RMAX,THEMIN,THEMAX,PHIMIN,PHIMAX *
57 C. * 10 PARA DX,DY,DZ,TXY,TXZ,TYZ *
58 C. * 11 PGON PHIMIN,DPHI,NDIV,NZ,Z(1),RMIN(1),RMAX(1),...*
59 C. * 12 PCON PHIMIN,DPHI,NZ,Z(1),RMIN(1),RMAX(1),Z(2),...*
61 C. * NOBJ = Counter of cg objects *
62 C. * NWWS = Size of Wire structure *
63 C. * IVOLNA = Name of volume *
64 C. * LSTEP = Number of CG objects forming each volume *
66 C. * ==>Called by : GDRAW *
67 C. * Author : P.Zanarini, J.Salt, S.Giani ********* *
69 C. ******************************************************************
71 #include "geant321/gcbank.inc"
72 #include "geant321/gcunit.inc"
73 #include "geant321/gcvolu.inc"
74 #include "geant321/gcgobj.inc"
75 #include "geant321/gcmutr.inc"
76 #include "geant321/gcdraw.inc"
77 #include "geant321/gchiln.inc"
78 #include "geant321/gcspee.inc"
79 #include "geant321/gconsp.inc"
81 COMMON /QUEST/IQUEST(100)
82 DIMENSION PAR(100),P(3,8)
84 DIMENSION RRMIN(3),RRMAX(3)
85 DIMENSION SLI1(4),SLI2(4),SPI1(4),SPI2(4)
87 DIMENSION XZ(2,4),ZR(18),RMIR(18),RMAR(18),AMIRMA(18),AMARMA(18)
89 C. ------------------------------------------------------------------
92 CALL UCTOH('PERS',IPERS,4,4)
96 LINSTY=IBITS(LINATT,10,3)
102 IF(ISUBLI.LT.IOLDSU)THEN
114 * LHC flag 'ON' (default)
116 * CALL UCTOH('ON ',LHIF,4,4)
117 * IF(LEP.EQ.LHIF)THEN
123 * Flag for GDCGHI resetted for each CG object
126 LINFIL=IBITS(LINATT,13,3)
131 CALL UCTOH('ON ',IFLH,4,4)
133 IF (ISHAPE.EQ.1) THEN
144 ELSEIF (ISHAPE.EQ.2) THEN
155 ELSEIF (ISHAPE.EQ.3) THEN
166 ELSEIF (ISHAPE.EQ.4) THEN
183 ELSEIF (ISHAPE.EQ.5) THEN
187 AFINV=1./COS(PI/APPROS)
197 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3)
198 + .AND.RMIN1.NE.0)PHIMIN=5.
208 IF(AZ.GT..5)NANG=NANG+1
212 ELSEIF (ISHAPE.EQ.6.OR.ISHAPE.EQ.29) THEN
216 AFINV=1./COS(PI/APPROS)
236 IF(AZ.GT..5)NANG=NANG+1
237 IF(ISHAPE.EQ.29)NANG=APPROS
241 ELSEIF (ISHAPE.EQ.7) THEN
245 AFINV=1./COS(PI/APPROS)
255 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3).AND.RMIN2.NE.0)PHIMIN=5.
265 IF(AZ.GT..5)NANG=NANG+1
269 ELSEIF (ISHAPE.EQ.8) THEN
273 AFINV=1./COS(PI/APPROS)
292 IF(AZ.GT..5)NANG=NANG+1
296 ELSEIF (ISHAPE.EQ.9) THEN
304 ELSEIF (ISHAPE.EQ.10) THEN
327 ELSEIF (ISHAPE.EQ.11) THEN
332 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3).AND.PAR(2).GT.359.)PAR(2)=359.
337 C Z(1)=PAR(5) - RMIN(1)=PAR(6) - RMAX(1)=PAR(7) - Z(2)=PAR(8
341 ELSEIF (ISHAPE.EQ.12) THEN
346 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3).AND.PAR(2).GT.359.)PAR(2)=359.
350 C Z(1)=PAR(4) - RMIN(1)=PAR(5) - RMAX(1)=PAR(6) - Z(2)=PAR(7
361 C Rectilinear shapes: BOX,TRD1,TRD2
367 IF(DZ.LT.0.001)DZ=0.001
371 C Calculate the 8 vertex for rectilinear shapes
373 IF(DX1.EQ.0.)DX1=0.0001
374 IF(DY1.EQ.0.)DY1=0.0001
375 IF(DX2.EQ.0.)DX2=0.0001
376 IF(DY2.EQ.0.)DY2=0.0001
408 C Calculate the 8 vertex
410 P(1,1)=-DZ*TX+TTH1*H1+TL1
413 P(1,2)=-DZ*TX+TTH1*H1-TL1
416 P(1,3)=-DZ*TX-TTH1*H1-BL1
419 P(1,4)=-DZ*TX-TTH1*H1+BL1
422 P(1,5)=+DZ*TX+TTH2*H2+TL2
425 P(1,6)=+DZ*TX+TTH2*H2-TL2
428 P(1,7)=+DZ*TX-TTH2*H2-BL2
431 P(1,8)=+DZ*TX-TTH2*H2+BL2
437 C BOX,TRD1,TRD2,TRAP,PARA --->> call CGBOX
443 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
444 * NWB = n. words for each box
455 CALL CGBOX(P,4,4,300,Q(ICPOIN))
457 T(J,1)=GRMAT(3*J-2,NLEVEL)
458 T(J,2)=GRMAT(3*J-1,NLEVEL)
459 T(J,3)=GRMAT(3*J,NLEVEL)
461 CALL CGRIFL(T,Q(ICPOIN))
465 IF(KCGST.EQ.-2) GOTO 999
468 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
473 CALL CGCEV(1,Q(ICPOIN))
475 T(J,1)=GRMAT(3*J-2,NLEVEL)
476 T(J,2)=GRMAT(3*J-1,NLEVEL)
477 T(J,3)=GRMAT(3*J,NLEVEL)
479 CALL CGAFFI(T,Q(ICPOIN))
483 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
487 CALL GDSHIF(IVOLNA,ICPOIN)
491 CALL GDBOMB(ICPOIN,ISHAPE)
492 IF(ITSTCU.EQ.0)GOTO 999
497 * Hidden Volume Removal:
498 * Computing volumes visibility and skipping
499 * the unvisible ones; a great increase in speed
500 * and a great reduction in n. of words used can be
501 * obtained in this way.
503 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
511 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND. BB1.LT.
512 + 0.001.AND.BB2.LT.0.001.AND.BB3.LT.0.001)THEN
514 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
534 * Create clipping objects
535 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
537 IF (IPRJ.EQ.IPERS) THEN
538 CALL CGPERS(Q(ICPOIN))
540 * Inserting volumes in Hide + Wire Structures
541 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
547 C TUBE,CONE,TUBS,CONS -----> call CGZREV
550 * Checking Shape Parameters
552 IF(RMIN1.GT.RMAX1) THEN
553 WRITE(CHMAIL,10100)ISHAPE,NAMES(NLEVEL)
556 IF(RMIN2.GT.RMAX2) THEN
557 WRITE(CHMAIL,10200)ISHAPE,NAMES(NLEVEL)
560 IF(PHIMIN.GT.PHIMAX)THEN
561 WRITE(CHMAIL,10300)ISHAPE,NAMES(NLEVEL)
566 * Checking if all Inner Radii are 0. ==> 'Closed' Volume
568 IF(RMIN1.LE.0.00001.AND.RMIN2.LE.0.00001)IVCLOS=1
571 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
572 * NWPROD = n. words for each body of revolution
573 NWPROD=NWREV*(NANG+1)
582 IF(PAR(11).GT.SAL)SAL=PAR(11)
584 Z2=PAR3+1.001*RMAX1*SQRT((1-SAL*SAL)/(SAL*SAL))
594 CALL CGZREV(XZ,ANG1,ANG2,NANG,4000,Q(ICPOIN))
596 T(J,1)=GRMAT(3*J-2,NLEVEL)
597 T(J,2)=GRMAT(3*J-1,NLEVEL)
598 T(J,3)=GRMAT(3*J,NLEVEL)
600 CALL CGRIFL(T,Q(ICPOIN))
604 IF(KCGST.EQ.-2) GOTO 999
607 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
612 CALL CGCEV(1,Q(ICPOIN))
617 SLI1(4)=-PAR(3)*PAR(8)
621 SLI2(4)=+PAR(3)*PAR(11)
623 CALL CGSLIC(Q(ICPOIN),SLI1,4000,Q(ISL1))
625 CALL CGSLIC(Q(ISL1),SLI2,4000,Q(ISL2))
627 CALL CGCEV(1,Q(ICPOIN))
630 T(J,1)=GRMAT(3*J-2,NLEVEL)
631 T(J,2)=GRMAT(3*J-1,NLEVEL)
632 T(J,3)=GRMAT(3*J,NLEVEL)
634 CALL CGAFFI(T,Q(ICPOIN))
638 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
642 CALL GDSHIF(IVOLNA,ICPOIN)
646 CALL GDBOMB(ICPOIN,ISHAPE)
647 IF(ITSTCU.EQ.0)GOTO 999
651 * Hidden Volume Removal:
652 * Computing closed volumes visibility and skipping
653 * the unvisible ones; a great increase in speed
654 * and a great reduction in n. of words used are obtained
657 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
665 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND. BB1.LT.
666 + -0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
667 IF(ISHAPE.EQ.7.OR.ISHAPE.EQ.8)THEN
668 IF((RMAX2.LT.SRAGMX.AND.RMAX1.LT.SRAGMN).OR. (SRAGMX.EQ.
670 IF((RMIN2.GT.RAINT2.AND.RMIN1.GT.RAINT1).OR. (RAINT2.
672 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
679 ELSEIF(SRAGMX.NE.0.)THEN
681 IF(RMAX1.EQ.PORMAR(ITER))GOTO 110
682 IF(RMIN1.EQ.PORMIR(ITER))THEN
683 IF(PORMIR(ITER).NE.0.)GOTO 110
687 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
710 * Create clipping objects
711 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
713 IF (IPRJ.EQ.IPERS) THEN
714 CALL CGPERS(Q(ICPOIN))
716 * Inserting objects in Hide + Wire structures
717 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
723 C SPHE -----> call CGSPHE
728 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
729 * NWS = n. words for each sphere
742 IF(IWORK.EQ.3.AND.(PAR(3).EQ.0.AND.(PAR(4).EQ.0.OR.
743 +PAR(4).EQ.180)))THEN
750 CALL CGSPHE(R,NLAT,NLON,NWOR,Q(ICPOIN))
752 T(J,1)=GRMAT(3*J-2,NLEVEL)
753 T(J,2)=GRMAT(3*J-1,NLEVEL)
754 T(J,3)=GRMAT(3*J,NLEVEL)
756 CALL CGRIFL(T,Q(ICPOIN))
761 IF(KCGST.EQ.-2) GOTO 999
764 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
769 CALL CGCEV(1,Q(ICPOIN))
770 IF(PAR(3).NE.0.OR.(PAR(4).NE.0.AND.PAR(4).NE.180))THEN
772 SPI1(1)=-COS((90-PAR(3))*DEGRAD)
774 SPI1(3)=-COS(PAR(3)*DEGRAD)
776 SPI2(1)=-COS((90-PAR(4))*DEGRAD)
778 SPI2(3)=-COS(PAR(4)*DEGRAD)
781 CALL CGSLIC(Q(ICPOIN),SPI1,4000,Q(ISP1))
783 CALL CGSLIC(Q(ISP1),SPI2,4000,Q(ISP2))
785 CALL CGCEV(1,Q(ICPOIN))
788 T(J,1)=GRMAT(3*J-2,NLEVEL)
789 T(J,2)=GRMAT(3*J-1,NLEVEL)
790 T(J,3)=GRMAT(3*J,NLEVEL)
792 CALL CGAFFI(T,Q(ICPOIN))
796 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
800 CALL GDSHIF(IVOLNA,ICPOIN)
804 CALL GDBOMB(ICPOIN,ISHAPE)
805 IF(ITSTCU.EQ.0)GOTO 999
809 * Hidden Volume Removal:
810 * Computing closed volumes visibility and skipping
811 * the unvisible ones; a great increase in speed
812 * and a great reduction in n. of words used are obtained
815 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
823 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND. BB1.LT.
824 + -0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
826 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
849 * Create clipping objects
850 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
852 IF (IPRJ.EQ.IPERS) THEN
853 CALL CGPERS(Q(ICPOIN))
855 * Inserting objects in Hide + Wire structures
856 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
862 C PGON ----> call CGZREV
874 IF(AZ.GT..5)NANG=NANG+1
875 IF(NDIVAN.LT.NANG)THEN
877 * WRITE(CHMAIL,10400)NANG,NAMES(NLEVEL)
880 AATMAX=NANG*360./AANG
883 IF(ALA.GT..5)LATMAX=LATMAX+1
885 AFINV=1./COS(PI/LATMAX)
899 ********* DIFZ=ABS(ZB-ZA)
900 ********* IF(DIFZ.LT.0.001)GOTO 220
904 RMIR(JSURZ)=PAR(6+3*I)*FINV
905 RMAR(JSURZ)=PAR(7+3*I)*FINV
907 RMAR(JSURZ)=RMAR(JSURZ)+.001
911 * Checking if all Inner Radii are 0. ==> 'Closed' Volume
915 * IF(RMIR(I).GT.0.00001)GOTO 240
921 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
922 NCGVOL=NCGVOL+NWREV*(NANG+1)*NTVOL
933 IF((RMIR(IVOL).GT.0.00001).OR.(RMIR(IVOL+1).GT.
943 ZR(IVOL+1)=ZR(IVOL+1)+.001
947 CALL CGZREV(XZ,ANG1,ANG2,NANG,4000,Q(ICPOIN))
949 T(J,1)=GRMAT(3*J-2,NLEVEL)
950 T(J,2)=GRMAT(3*J-1,NLEVEL)
951 T(J,3)=GRMAT(3*J,NLEVEL)
953 CALL CGRIFL(T,Q(ICPOIN))
957 IF(KCGST.EQ.-2) GOTO 999
960 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
962 WRITE(CHMAIL,10400)(PAR(I),I=1,4)
968 WRITE(CHMAIL,10600)J,ZPR,RMIPR,RMAPR
974 CALL CGCEV(1,Q(ICPOIN))
976 T(J,1)=GRMAT(3*J-2,NLEVEL)
977 T(J,2)=GRMAT(3*J-1,NLEVEL)
978 T(J,3)=GRMAT(3*J,NLEVEL)
980 CALL CGAFFI(T,Q(ICPOIN))
984 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
988 CALL GDSHIF(IVOLNA,ICPOIN)
992 CALL GDBOMB(ICPOIN,ISHAPE)
993 IF(ITSTCU.EQ.0)GOTO 220
997 * Hidden Volume Removal:
998 * Computing closed volumes visibility and skipping
999 * the unvisible ones; a great increase in speed
1000 * and a great reduction in n. of words used are obtained
1003 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
1011 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND.
1012 + BB1.LT.-0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
1013 AMARMA(IVOL) =MIN(RMAR(IVOL),RMAR(IVOL+1))
1014 AMARMA(IVOL+1)=MAX(RMAR(IVOL),RMAR(IVOL+1))
1015 AMIRMA(IVOL) =MIN(RMIR(IVOL),RMIR(IVOL+1))
1016 AMIRMA(IVOL+1)=MAX(RMIR(IVOL),RMIR(IVOL+1))
1018 RMAX2=AMARMA(IVOL+1)
1020 RMIN2=AMIRMA(IVOL+1)
1021 IF(SRAGMX.NE.0.)THEN
1022 DO 200 ITER=1,IPORNT
1023 IF(RMAX1.EQ.PORMAR(ITER).OR.RMAX2.EQ.PORMAR(ITER))
1025 IF(RMIN1.EQ.PORMIR(ITER).OR.RMIN2.EQ.PORMIR(ITER))
1027 IF(PORMIR(ITER).NE.0.)GOTO 210
1032 IF((AMARMA(IVOL+1).GE.SRAGMX.OR.AMARMA(IVOL) .GT.SRAG
1034 IF((AMIRMA(IVOL+1).LE.RAINT2.OR.AMIRMA(IVOL)
1035 + .LE.RAINT1).AND.(RAINT2.NE.0))GOTO 210
1037 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
1039 NCGVOL=NCGVOL-NWPROD
1045 IF(RRMIN(1).LT.S1)S1=RRMIN(1)
1046 IF(RRMIN(2).LT.S2)S2=RRMIN(2)
1047 IF(RRMIN(3).LT.S3)S3=RRMIN(3)
1048 IF(RRMAX(1).GT.SS1)SS1=RRMAX(1)
1049 IF(RRMAX(2).GT.SS2)SS2=RRMAX(2)
1050 IF(RRMAX(3).GT.SS3)SS3=RRMAX(3)
1051 IF(RMAR(IVOL).GT.SRAGMX)SRAGMX=RMAR(IVOL)
1052 IF(RMAR(IVOL).LT.SRAGMN)SRAGMN=RMAR(IVOL)
1053 IF(RMAR(IVOL+1).GT.SRAGMX)SRAGMX=RMAR(IVOL+1)
1054 IF(RMAR(IVOL+1).LT.SRAGMN)SRAGMN=RMAR(IVOL+1)
1055 IF(RMIR(IVOL).GT.RAINT2)RAINT2=RMIR(IVOL)
1056 IF(RMIR(IVOL).LT.RAINT1)RAINT1=RMIR(IVOL)
1057 IF(RMIR(IVOL+1).GT.RAINT2)RAINT2=RMIR(IVOL+1)
1058 IF(RMIR(IVOL+1).LT.RAINT1)RAINT1=RMIR(IVOL+1)
1059 PORMAR(IVOL)=RMAR(IVOL)
1060 PORMIR(IVOL)=RMIR(IVOL)
1064 * Create clipping objects
1065 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
1067 IF (IPRJ.EQ.IPERS) THEN
1068 CALL CGPERS(Q(ICPOIN))
1070 * Inserting objects in Hide + Wire structures
1071 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
1078 C PCON ----> call CGZREV
1090 IF(AZ.GT..5)NANG=NANG+1
1092 AFINV=1./COS(PI/APPROS)
1106 ******** DIFZ=ABS(ZB-ZA)
1107 ******** IF(DIFZ.LT.0.001)GOTO 290
1111 RMIR(JSURZ)=PAR(5+3*I)*FINV
1112 RMAR(JSURZ)=PAR(6+3*I)*FINV
1114 RMAR(JSURZ)=RMAR(JSURZ)+.1
1118 * Checking if all Inner Radii are 0. ==> 'Closed' Volume
1122 * IF(RMIR(I).GT.0.00001)GOTO 310
1129 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
1130 NCGVOL=NCGVOL+NWREV*(NANG+1)*NTVOL
1141 IF((RMIR(IVOL).GT.0.00001).OR.(RMIR(IVOL+1).GT.
1147 XZ(1,3)=RMAR(IVOL+1)
1149 XZ(1,4)=RMIR(IVOL+1)
1151 ZR(IVOL+1)=ZR(IVOL+1)+.1
1155 CALL CGZREV(XZ,ANG1,ANG2,NANG,4000,Q(ICPOIN))
1157 T(J,1)=GRMAT(3*J-2,NLEVEL)
1158 T(J,2)=GRMAT(3*J-1,NLEVEL)
1159 T(J,3)=GRMAT(3*J,NLEVEL)
1161 CALL CGRIFL(T,Q(ICPOIN))
1162 CALL CGCEV(-1,Q(ICPOIN))
1166 IF(KCGST.EQ.-2) GOTO 999
1167 IF(KCGST.EQ.-3) THEN
1169 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
1171 WRITE(CHMAIL,10500)(PAR(I),I=1,3)
1175 RMIPR=PAR(5+(J-1)*3)
1176 RMAPR=PAR(6+(J-1)*3)
1177 WRITE(CHMAIL,10600)J,ZPR,RMIPR,RMAPR
1183 CALL CGCEV(1,Q(ICPOIN))
1185 T(1,J)=GRMAT(3*J-2,NLEVEL)
1186 T(2,J)=GRMAT(3*J-1,NLEVEL)
1187 T(3,J)=GRMAT(3*J,NLEVEL)
1190 CALL CGAFFI(T,Q(ICPOIN))
1194 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
1199 CALL GDSHIF(IVOLNA,ICPOIN)
1203 CALL GDBOMB(ICPOIN,ISHAPE)
1204 IF(ITSTCU.EQ.0)GOTO 300
1208 * Hidden Volume Removal:
1209 * Computing closed volumes visibility and skipping
1210 * the unvisible ones; a great increase in speed
1211 * and a great reduction in n. of words used are obtained
1214 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
1222 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND.
1223 + BB1.LT.-0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
1224 AMARMA(IVOL) =MIN(RMAR(IVOL),RMAR(IVOL+1))
1225 AMARMA(IVOL+1)=MAX(RMAR(IVOL),RMAR(IVOL+1))
1226 AMIRMA(IVOL) =MIN(RMIR(IVOL),RMIR(IVOL+1))
1227 AMIRMA(IVOL+1)=MAX(RMIR(IVOL),RMIR(IVOL+1))
1229 RMAX2=AMARMA(IVOL+1)
1231 RMIN2=AMIRMA(IVOL+1)
1232 IF(SRAGMX.NE.0.)THEN
1233 DO 280 ITER=1,IPORNT
1234 IF(RMAX1.EQ.PORMAR(ITER).OR.RMAX2.EQ.PORMAR(ITER))
1236 IF(RMIN1.EQ.PORMIR(ITER).OR.RMIN2.EQ.PORMIR(ITER))
1238 IF(PORMIR(ITER).NE.0)GOTO 290
1243 IF((AMARMA(IVOL+1).GE.SRAGMX.OR.AMARMA(IVOL) .GE.SRAG
1245 IF((AMIRMA(IVOL+1).LE.RAINT2.AND.AMIRMA(IVOL)
1246 + .LE.RAINT1).AND.(RAINT2.NE.0))GOTO 290
1248 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
1249 NCGVOL=NCGVOL-NWPROD
1256 IF(RRMIN(1).LT.S1)S1=RRMIN(1)
1257 IF(RRMIN(2).LT.S2)S2=RRMIN(2)
1258 IF(RRMIN(3).LT.S3)S3=RRMIN(3)
1259 IF(RRMAX(1).GT.SS1)SS1=RRMAX(1)
1260 IF(RRMAX(2).GT.SS2)SS2=RRMAX(2)
1261 IF(RRMAX(3).GT.SS3)SS3=RRMAX(3)
1262 IF(RMAR(IVOL).GT.SRAGMX)SRAGMX=RMAR(IVOL)
1263 IF(RMAR(IVOL).LT.SRAGMN)SRAGMN=RMAR(IVOL)
1264 IF(RMAR(IVOL+1).GT.SRAGMX)SRAGMX=RMAR(IVOL+1)
1265 IF(RMAR(IVOL+1).LT.SRAGMN)SRAGMN=RMAR(IVOL+1)
1266 IF(RMIR(IVOL).GT.RAINT2)RAINT2=RMIR(IVOL)
1267 IF(RMIR(IVOL).LT.RAINT1)RAINT1=RMIR(IVOL)
1268 IF(RMIR(IVOL+1).GT.RAINT2)RAINT2=RMIR(IVOL+1)
1269 IF(RMIR(IVOL+1).LT.RAINT1)RAINT1=RMIR(IVOL+1)
1270 PORMAR(IVOL)=RMAR(IVOL)
1271 PORMIR(IVOL)=RMIR(IVOL)
1275 * Create clipping objects
1276 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
1278 IF (IPRJ.EQ.IPERS) THEN
1279 CALL CGPERS(Q(ICPOIN))
1281 * Inserting object in Hide + Wire structures
1282 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
1288 10000 FORMAT(' Check Parameters of Shape ',I3,' in volume ',A4)
1289 10100 FORMAT(' Warning >>> RMIN1 greater than RMAX1 for shape '
1290 + ,I3,' in volume ',A4)
1291 10200 FORMAT(' Warning >>> RMIN2 greater than RMAX2 for shape '
1292 + ,I3,' in volume ',A4)
1293 10300 FORMAT(' Warning >>> PHIMIN greater than PHIMAX for shape'
1294 + ,I3,' in volume ',A4)
1295 *10400 FORMAT(' PGON with NPDV = ',I5,' in volume ',A4,' NPDV very
1296 * + large . It must be < 30 . Volume will not be drawn. ')
1297 10400 FORMAT(' PHI1 = ',F8.3,' DPHI = ',F8.3,' NPDV = ',F8.1
1299 10500 FORMAT(' PHI1 = ',F8.3,' DPHI = ',F8.3,' NZ = ',F8.1)
1300 10600 FORMAT(' J = ',I5,' Z = ',F8.3,' RMIN = ',F8.3
1302 *10800 FORMAT(' Please, increase size of Zebra store by ',I10,