5 * Revision 1.2 1996/02/27 10:02:05 ravndal
6 * Drawing of PCON's optimized for 'HIDE ON'
8 * Revision 1.1.1.1 1995/10/24 10:20:20 cernlib
12 #include "geant321/pilot.h"
13 *CMZ : 3.21/04 13/12/94 17.13.38 by S.Giani
16 SUBROUTINE GDCGOB(ITASK,ISHAPE,PAR,NOBJ,NWWS,IVOLNA,
19 C. ******************************************************************
21 C. * Make the CG-Object with shape ISHAPE of parameters PAR *
22 C. * with the same logic as GDRAWS. 1992 *
24 C. * Input Parameters : *
26 C. * ITASK: Number for indicating the task to be performed *
29 C. * = 0 Counting task *
30 C. * = 1 Slicing + Counting *
31 C. * = 2 Clipping + Counting *
32 C. * = 3 Insert into the H.S. + Convert to Wire *
33 C. * = 4 Slicing + Insert into the H.S. + Convert *
35 C. * = 5 Clipping + Insert into the H.S. + Convert *
38 C. * SHAPE SHAPE SHAPE *
39 C. * NUMBER TYPE PARAMETERS *
40 C. * -------------------------------------------------------------- *
43 C. * 2 TRD1 DX1,DX2,DY,DZ *
44 C. * 3 TRD2 DX1,DX2,DY1,DY2,DZ *
45 C. * 4 TRAP DZ,TX,TY,H1,BL1,TL1,TTH1,H2,BL2,TL2,TTH2 *
47 C. * 5 TUBE RMIN,RMAX,DZ *
48 C. * 6 TUBS RMIN,RMAX,DZ,PHIMIN,PHIMAX *
49 C. * 7 CONE DZ,RMIN1,RMAX1,RMIN2,RMAX2 *
50 C. * 8 CONS DZ,RMIN1,RMAX1,RMIN2,RMAX2,PHIMIN,PHIMAX *
52 C. * 9 SPHE RMIN,RMAX,THEMIN,THEMAX,PHIMIN,PHIMAX *
54 C. * 10 PARA DX,DY,DZ,TXY,TXZ,TYZ *
55 C. * 11 PGON PHIMIN,DPHI,NDIV,NZ,Z(1),RMIN(1),RMAX(1),...*
56 C. * 12 PCON PHIMIN,DPHI,NZ,Z(1),RMIN(1),RMAX(1),Z(2),...*
58 C. * NOBJ = Counter of cg objects *
59 C. * NWWS = Size of Wire structure *
60 C. * IVOLNA = Name of volume *
61 C. * LSTEP = Number of CG objects forming each volume *
63 C. * ==>Called by : GDRAW *
64 C. * Author : P.Zanarini, J.Salt, S.Giani ********* *
66 C. ******************************************************************
68 #include "geant321/gcbank.inc"
69 #include "geant321/gcunit.inc"
70 #include "geant321/gcvolu.inc"
71 #include "geant321/gcgobj.inc"
72 #include "geant321/gcmutr.inc"
73 #include "geant321/gcdraw.inc"
74 #include "geant321/gchiln.inc"
75 #include "geant321/gcspee.inc"
76 #include "geant321/gconsp.inc"
78 COMMON /QUEST/IQUEST(100)
79 DIMENSION PAR(50),P(3,8)
81 DIMENSION RRMIN(3),RRMAX(3)
82 DIMENSION SLI1(4),SLI2(4),SPI1(4),SPI2(4)
84 DIMENSION XZ(2,4),ZR(18),RMIR(18),RMAR(18),AMIRMA(18),AMARMA(18)
86 C. ------------------------------------------------------------------
89 CALL UCTOH('PERS',IPERS,4,4)
93 LINSTY=IBITS(LINATT,10,3)
99 IF(ISUBLI.LT.IOLDSU)THEN
111 * LHC flag 'ON' (default)
113 * CALL UCTOH('ON ',LHIF,4,4)
114 * IF(LEP.EQ.LHIF)THEN
120 * Flag for GDCGHI resetted for each CG object
123 LINFIL=IBITS(LINATT,13,3)
128 CALL UCTOH('ON ',IFLH,4,4)
130 IF (ISHAPE.EQ.1) THEN
141 ELSEIF (ISHAPE.EQ.2) THEN
152 ELSEIF (ISHAPE.EQ.3) THEN
163 ELSEIF (ISHAPE.EQ.4) THEN
180 ELSEIF (ISHAPE.EQ.5) THEN
184 AFINV=1./COS(PI/APPROS)
194 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3)
195 + .AND.RMIN1.NE.0)PHIMIN=5.
205 IF(AZ.GT..5)NANG=NANG+1
209 ELSEIF (ISHAPE.EQ.6.OR.ISHAPE.EQ.29) THEN
213 AFINV=1./COS(PI/APPROS)
233 IF(AZ.GT..5)NANG=NANG+1
234 IF(ISHAPE.EQ.29)NANG=APPROS
238 ELSEIF (ISHAPE.EQ.7) THEN
242 AFINV=1./COS(PI/APPROS)
252 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3).AND.RMIN2.NE.0)PHIMIN=5.
262 IF(AZ.GT..5)NANG=NANG+1
266 ELSEIF (ISHAPE.EQ.8) THEN
270 AFINV=1./COS(PI/APPROS)
289 IF(AZ.GT..5)NANG=NANG+1
293 ELSEIF (ISHAPE.EQ.9) THEN
301 ELSEIF (ISHAPE.EQ.10) THEN
324 ELSEIF (ISHAPE.EQ.11) THEN
329 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3).AND.PAR(2).GT.359.)PAR(2)=359.
334 C Z(1)=PAR(5) - RMIN(1)=PAR(6) - RMAX(1)=PAR(7) - Z(2)=PAR(8
338 ELSEIF (ISHAPE.EQ.12) THEN
343 IF((LINFIL.EQ.2.OR.LINFIL.EQ.3).AND.PAR(2).GT.359.)PAR(2)=359.
347 C Z(1)=PAR(4) - RMIN(1)=PAR(5) - RMAX(1)=PAR(6) - Z(2)=PAR(7
358 C Rectilinear shapes: BOX,TRD1,TRD2
364 IF(DZ.LT.0.001)DZ=0.001
368 C Calculate the 8 vertex for rectilinear shapes
370 IF(DX1.EQ.0.)DX1=0.0001
371 IF(DY1.EQ.0.)DY1=0.0001
372 IF(DX2.EQ.0.)DX2=0.0001
373 IF(DY2.EQ.0.)DY2=0.0001
405 C Calculate the 8 vertex
407 P(1,1)=-DZ*TX+TTH1*H1+TL1
410 P(1,2)=-DZ*TX+TTH1*H1-TL1
413 P(1,3)=-DZ*TX-TTH1*H1-BL1
416 P(1,4)=-DZ*TX-TTH1*H1+BL1
419 P(1,5)=+DZ*TX+TTH2*H2+TL2
422 P(1,6)=+DZ*TX+TTH2*H2-TL2
425 P(1,7)=+DZ*TX-TTH2*H2-BL2
428 P(1,8)=+DZ*TX-TTH2*H2+BL2
434 C BOX,TRD1,TRD2,TRAP,PARA --->> call CGBOX
440 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
441 * NWB = n. words for each box
452 CALL CGBOX(P,4,4,300,Q(ICPOIN))
454 T(J,1)=GRMAT(3*J-2,NLEVEL)
455 T(J,2)=GRMAT(3*J-1,NLEVEL)
456 T(J,3)=GRMAT(3*J,NLEVEL)
458 CALL CGRIFL(T,Q(ICPOIN))
462 IF(KCGST.EQ.-2) GOTO 999
465 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
470 CALL CGCEV(1,Q(ICPOIN))
472 T(J,1)=GRMAT(3*J-2,NLEVEL)
473 T(J,2)=GRMAT(3*J-1,NLEVEL)
474 T(J,3)=GRMAT(3*J,NLEVEL)
476 CALL CGAFFI(T,Q(ICPOIN))
480 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
484 CALL GDSHIF(IVOLNA,ICPOIN)
488 CALL GDBOMB(ICPOIN,ISHAPE)
489 IF(ITSTCU.EQ.0)GOTO 999
494 * Hidden Volume Removal:
495 * Computing volumes visibility and skipping
496 * the unvisible ones; a great increase in speed
497 * and a great reduction in n. of words used can be
498 * obtained in this way.
500 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
508 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND. BB1.LT.
509 + 0.001.AND.BB2.LT.0.001.AND.BB3.LT.0.001)THEN
511 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
531 * Create clipping objects
532 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
534 IF (IPRJ.EQ.IPERS) THEN
535 CALL CGPERS(Q(ICPOIN))
537 * Inserting volumes in Hide + Wire Structures
538 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
544 C TUBE,CONE,TUBS,CONS -----> call CGZREV
547 * Checking Shape Parameters
549 IF(RMIN1.GT.RMAX1) THEN
550 WRITE(CHMAIL,10100)ISHAPE,NAMES(NLEVEL)
553 IF(RMIN2.GT.RMAX2) THEN
554 WRITE(CHMAIL,10200)ISHAPE,NAMES(NLEVEL)
557 IF(PHIMIN.GT.PHIMAX)THEN
558 WRITE(CHMAIL,10300)ISHAPE,NAMES(NLEVEL)
563 * Checking if all Inner Radii are 0. ==> 'Closed' Volume
565 IF(RMIN1.LE.0.00001.AND.RMIN2.LE.0.00001)IVCLOS=1
568 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
569 * NWPROD = n. words for each body of revolution
570 NWPROD=NWREV*(NANG+1)
579 IF(PAR(11).GT.SAL)SAL=PAR(11)
581 Z2=PAR3+1.001*RMAX1*SQRT((1-SAL*SAL)/(SAL*SAL))
591 CALL CGZREV(XZ,ANG1,ANG2,NANG,4000,Q(ICPOIN))
593 T(J,1)=GRMAT(3*J-2,NLEVEL)
594 T(J,2)=GRMAT(3*J-1,NLEVEL)
595 T(J,3)=GRMAT(3*J,NLEVEL)
597 CALL CGRIFL(T,Q(ICPOIN))
601 IF(KCGST.EQ.-2) GOTO 999
604 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
609 CALL CGCEV(1,Q(ICPOIN))
614 SLI1(4)=-PAR(3)*PAR(8)
618 SLI2(4)=+PAR(3)*PAR(11)
620 CALL CGSLIC(Q(ICPOIN),SLI1,4000,Q(ISL1))
622 CALL CGSLIC(Q(ISL1),SLI2,4000,Q(ISL2))
624 CALL CGCEV(1,Q(ICPOIN))
627 T(J,1)=GRMAT(3*J-2,NLEVEL)
628 T(J,2)=GRMAT(3*J-1,NLEVEL)
629 T(J,3)=GRMAT(3*J,NLEVEL)
631 CALL CGAFFI(T,Q(ICPOIN))
635 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
639 CALL GDSHIF(IVOLNA,ICPOIN)
643 CALL GDBOMB(ICPOIN,ISHAPE)
644 IF(ITSTCU.EQ.0)GOTO 999
648 * Hidden Volume Removal:
649 * Computing closed volumes visibility and skipping
650 * the unvisible ones; a great increase in speed
651 * and a great reduction in n. of words used are obtained
654 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
662 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND. BB1.LT.
663 + -0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
664 IF(ISHAPE.EQ.7.OR.ISHAPE.EQ.8)THEN
665 IF((RMAX2.LT.SRAGMX.AND.RMAX1.LT.SRAGMN).OR. (SRAGMX.EQ.
667 IF((RMIN2.GT.RAINT2.AND.RMIN1.GT.RAINT1).OR. (RAINT2.
669 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
676 ELSEIF(SRAGMX.NE.0.)THEN
678 IF(RMAX1.EQ.PORMAR(ITER))GOTO 110
679 IF(RMIN1.EQ.PORMIR(ITER))THEN
680 IF(PORMIR(ITER).NE.0.)GOTO 110
684 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
707 * Create clipping objects
708 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
710 IF (IPRJ.EQ.IPERS) THEN
711 CALL CGPERS(Q(ICPOIN))
713 * Inserting objects in Hide + Wire structures
714 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
720 C SPHE -----> call CGSPHE
725 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
726 * NWS = n. words for each sphere
739 IF(IWORK.EQ.3.AND.(PAR(3).EQ.0.AND.(PAR(4).EQ.0.OR.
740 +PAR(4).EQ.180)))THEN
747 CALL CGSPHE(R,NLAT,NLON,NWOR,Q(ICPOIN))
749 T(J,1)=GRMAT(3*J-2,NLEVEL)
750 T(J,2)=GRMAT(3*J-1,NLEVEL)
751 T(J,3)=GRMAT(3*J,NLEVEL)
753 CALL CGRIFL(T,Q(ICPOIN))
758 IF(KCGST.EQ.-2) GOTO 999
761 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
766 CALL CGCEV(1,Q(ICPOIN))
767 IF(PAR(3).NE.0.OR.(PAR(4).NE.0.AND.PAR(4).NE.180))THEN
769 SPI1(1)=-COS((90-PAR(3))*DEGRAD)
771 SPI1(3)=-COS(PAR(3)*DEGRAD)
773 SPI2(1)=-COS((90-PAR(4))*DEGRAD)
775 SPI2(3)=-COS(PAR(4)*DEGRAD)
778 CALL CGSLIC(Q(ICPOIN),SPI1,4000,Q(ISP1))
780 CALL CGSLIC(Q(ISP1),SPI2,4000,Q(ISP2))
782 CALL CGCEV(1,Q(ICPOIN))
785 T(J,1)=GRMAT(3*J-2,NLEVEL)
786 T(J,2)=GRMAT(3*J-1,NLEVEL)
787 T(J,3)=GRMAT(3*J,NLEVEL)
789 CALL CGAFFI(T,Q(ICPOIN))
793 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
797 CALL GDSHIF(IVOLNA,ICPOIN)
801 CALL GDBOMB(ICPOIN,ISHAPE)
802 IF(ITSTCU.EQ.0)GOTO 999
806 * Hidden Volume Removal:
807 * Computing closed volumes visibility and skipping
808 * the unvisible ones; a great increase in speed
809 * and a great reduction in n. of words used are obtained
812 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
820 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND. BB1.LT.
821 + -0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
823 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
846 * Create clipping objects
847 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
849 IF (IPRJ.EQ.IPERS) THEN
850 CALL CGPERS(Q(ICPOIN))
852 * Inserting objects in Hide + Wire structures
853 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
859 C PGON ----> call CGZREV
871 IF(AZ.GT..5)NANG=NANG+1
872 IF(NDIVAN.LT.NANG)THEN
874 * WRITE(CHMAIL,10400)NANG,NAMES(NLEVEL)
877 AATMAX=NANG*360./AANG
880 IF(ALA.GT..5)LATMAX=LATMAX+1
882 AFINV=1./COS(PI/LATMAX)
896 ********* DIFZ=ABS(ZB-ZA)
897 ********* IF(DIFZ.LT.0.001)GOTO 220
901 RMIR(JSURZ)=PAR(6+3*I)*FINV
902 RMAR(JSURZ)=PAR(7+3*I)*FINV
904 RMAR(JSURZ)=RMAR(JSURZ)+.001
908 * Checking if all Inner Radii are 0. ==> 'Closed' Volume
912 * IF(RMIR(I).GT.0.00001)GOTO 240
918 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
919 NCGVOL=NCGVOL+NWREV*(NANG+1)*NTVOL
930 IF((RMIR(IVOL).GT.0.00001).OR.(RMIR(IVOL+1).GT.
940 ZR(IVOL+1)=ZR(IVOL+1)+.001
944 CALL CGZREV(XZ,ANG1,ANG2,NANG,4000,Q(ICPOIN))
946 T(J,1)=GRMAT(3*J-2,NLEVEL)
947 T(J,2)=GRMAT(3*J-1,NLEVEL)
948 T(J,3)=GRMAT(3*J,NLEVEL)
950 CALL CGRIFL(T,Q(ICPOIN))
954 IF(KCGST.EQ.-2) GOTO 999
957 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
959 WRITE(CHMAIL,10400)(PAR(I),I=1,4)
965 WRITE(CHMAIL,10600)J,ZPR,RMIPR,RMAPR
971 CALL CGCEV(1,Q(ICPOIN))
973 T(J,1)=GRMAT(3*J-2,NLEVEL)
974 T(J,2)=GRMAT(3*J-1,NLEVEL)
975 T(J,3)=GRMAT(3*J,NLEVEL)
977 CALL CGAFFI(T,Q(ICPOIN))
981 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
985 CALL GDSHIF(IVOLNA,ICPOIN)
989 CALL GDBOMB(ICPOIN,ISHAPE)
990 IF(ITSTCU.EQ.0)GOTO 220
994 * Hidden Volume Removal:
995 * Computing closed volumes visibility and skipping
996 * the unvisible ones; a great increase in speed
997 * and a great reduction in n. of words used are obtained
1000 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
1008 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND.
1009 + BB1.LT.-0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
1010 AMARMA(IVOL) =MIN(RMAR(IVOL),RMAR(IVOL+1))
1011 AMARMA(IVOL+1)=MAX(RMAR(IVOL),RMAR(IVOL+1))
1012 AMIRMA(IVOL) =MIN(RMIR(IVOL),RMIR(IVOL+1))
1013 AMIRMA(IVOL+1)=MAX(RMIR(IVOL),RMIR(IVOL+1))
1015 RMAX2=AMARMA(IVOL+1)
1017 RMIN2=AMIRMA(IVOL+1)
1018 IF(SRAGMX.NE.0.)THEN
1019 DO 200 ITER=1,IPORNT
1020 IF(RMAX1.EQ.PORMAR(ITER).OR.RMAX2.EQ.PORMAR(ITER))
1022 IF(RMIN1.EQ.PORMIR(ITER).OR.RMIN2.EQ.PORMIR(ITER))
1024 IF(PORMIR(ITER).NE.0.)GOTO 210
1029 IF((AMARMA(IVOL+1).GE.SRAGMX.OR.AMARMA(IVOL) .GT.SRAG
1031 IF((AMIRMA(IVOL+1).LE.RAINT2.OR.AMIRMA(IVOL)
1032 + .LE.RAINT1).AND.(RAINT2.NE.0))GOTO 210
1034 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
1036 NCGVOL=NCGVOL-NWPROD
1042 IF(RRMIN(1).LT.S1)S1=RRMIN(1)
1043 IF(RRMIN(2).LT.S2)S2=RRMIN(2)
1044 IF(RRMIN(3).LT.S3)S3=RRMIN(3)
1045 IF(RRMAX(1).GT.SS1)SS1=RRMAX(1)
1046 IF(RRMAX(2).GT.SS2)SS2=RRMAX(2)
1047 IF(RRMAX(3).GT.SS3)SS3=RRMAX(3)
1048 IF(RMAR(IVOL).GT.SRAGMX)SRAGMX=RMAR(IVOL)
1049 IF(RMAR(IVOL).LT.SRAGMN)SRAGMN=RMAR(IVOL)
1050 IF(RMAR(IVOL+1).GT.SRAGMX)SRAGMX=RMAR(IVOL+1)
1051 IF(RMAR(IVOL+1).LT.SRAGMN)SRAGMN=RMAR(IVOL+1)
1052 IF(RMIR(IVOL).GT.RAINT2)RAINT2=RMIR(IVOL)
1053 IF(RMIR(IVOL).LT.RAINT1)RAINT1=RMIR(IVOL)
1054 IF(RMIR(IVOL+1).GT.RAINT2)RAINT2=RMIR(IVOL+1)
1055 IF(RMIR(IVOL+1).LT.RAINT1)RAINT1=RMIR(IVOL+1)
1056 PORMAR(IVOL)=RMAR(IVOL)
1057 PORMIR(IVOL)=RMIR(IVOL)
1061 * Create clipping objects
1062 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
1064 IF (IPRJ.EQ.IPERS) THEN
1065 CALL CGPERS(Q(ICPOIN))
1067 * Inserting objects in Hide + Wire structures
1068 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
1075 C PCON ----> call CGZREV
1087 IF(AZ.GT..5)NANG=NANG+1
1089 AFINV=1./COS(PI/APPROS)
1103 ******** DIFZ=ABS(ZB-ZA)
1104 ******** IF(DIFZ.LT.0.001)GOTO 290
1108 RMIR(JSURZ)=PAR(5+3*I)*FINV
1109 RMAR(JSURZ)=PAR(6+3*I)*FINV
1111 RMAR(JSURZ)=RMAR(JSURZ)+.1
1115 * Checking if all Inner Radii are 0. ==> 'Closed' Volume
1119 * IF(RMIR(I).GT.0.00001)GOTO 310
1126 IF(IWORK.LE.2.AND.IVFUN.NE.0)THEN
1127 NCGVOL=NCGVOL+NWREV*(NANG+1)*NTVOL
1138 IF((RMIR(IVOL).GT.0.00001).OR.(RMIR(IVOL+1).GT.
1144 XZ(1,3)=RMAR(IVOL+1)
1146 XZ(1,4)=RMIR(IVOL+1)
1148 ZR(IVOL+1)=ZR(IVOL+1)+.1
1152 CALL CGZREV(XZ,ANG1,ANG2,NANG,4000,Q(ICPOIN))
1154 T(J,1)=GRMAT(3*J-2,NLEVEL)
1155 T(J,2)=GRMAT(3*J-1,NLEVEL)
1156 T(J,3)=GRMAT(3*J,NLEVEL)
1158 CALL CGRIFL(T,Q(ICPOIN))
1159 CALL CGCEV(-1,Q(ICPOIN))
1163 IF(KCGST.EQ.-2) GOTO 999
1164 IF(KCGST.EQ.-3) THEN
1166 WRITE(CHMAIL,10000)ISHAPE,NAMES(NLEVEL)
1168 WRITE(CHMAIL,10500)(PAR(I),I=1,3)
1172 RMIPR=PAR(5+(J-1)*3)
1173 RMAPR=PAR(6+(J-1)*3)
1174 WRITE(CHMAIL,10600)J,ZPR,RMIPR,RMAPR
1180 CALL CGCEV(1,Q(ICPOIN))
1182 T(1,J)=GRMAT(3*J-2,NLEVEL)
1183 T(2,J)=GRMAT(3*J-1,NLEVEL)
1184 T(3,J)=GRMAT(3*J,NLEVEL)
1187 CALL CGAFFI(T,Q(ICPOIN))
1191 CALL CGSHIF(XV,YV,ZV,Q(ICPOIN))
1196 CALL GDSHIF(IVOLNA,ICPOIN)
1200 CALL GDBOMB(ICPOIN,ISHAPE)
1201 IF(ITSTCU.EQ.0)GOTO 300
1205 * Hidden Volume Removal:
1206 * Computing closed volumes visibility and skipping
1207 * the unvisible ones; a great increase in speed
1208 * and a great reduction in n. of words used are obtained
1211 CALL CGMNMX(Q(ICPOIN),RRMIN,RRMAX)
1219 IF(AA1.GT.0.001.AND.AA2.GT.0.001.AND.AA3.GT.0.001.AND.
1220 + BB1.LT.-0.001.AND.BB2.LT.-0.001.AND.BB3.LT.-0.001)THEN
1221 AMARMA(IVOL) =MIN(RMAR(IVOL),RMAR(IVOL+1))
1222 AMARMA(IVOL+1)=MAX(RMAR(IVOL),RMAR(IVOL+1))
1223 AMIRMA(IVOL) =MIN(RMIR(IVOL),RMIR(IVOL+1))
1224 AMIRMA(IVOL+1)=MAX(RMIR(IVOL),RMIR(IVOL+1))
1226 RMAX2=AMARMA(IVOL+1)
1228 RMIN2=AMIRMA(IVOL+1)
1229 IF(SRAGMX.NE.0.)THEN
1230 DO 280 ITER=1,IPORNT
1231 IF(RMAX1.EQ.PORMAR(ITER).OR.RMAX2.EQ.PORMAR(ITER))
1233 IF(RMIN1.EQ.PORMIR(ITER).OR.RMIN2.EQ.PORMIR(ITER))
1235 IF(PORMIR(ITER).NE.0)GOTO 290
1240 IF((AMARMA(IVOL+1).GE.SRAGMX.OR.AMARMA(IVOL) .GE.SRAG
1242 IF((AMIRMA(IVOL+1).LE.RAINT2.AND.AMIRMA(IVOL)
1243 + .LE.RAINT1).AND.(RAINT2.NE.0))GOTO 290
1245 IF(IWORK.EQ.0.OR.IWORK.EQ.3)THEN
1246 NCGVOL=NCGVOL-NWPROD
1253 IF(RRMIN(1).LT.S1)S1=RRMIN(1)
1254 IF(RRMIN(2).LT.S2)S2=RRMIN(2)
1255 IF(RRMIN(3).LT.S3)S3=RRMIN(3)
1256 IF(RRMAX(1).GT.SS1)SS1=RRMAX(1)
1257 IF(RRMAX(2).GT.SS2)SS2=RRMAX(2)
1258 IF(RRMAX(3).GT.SS3)SS3=RRMAX(3)
1259 IF(RMAR(IVOL).GT.SRAGMX)SRAGMX=RMAR(IVOL)
1260 IF(RMAR(IVOL).LT.SRAGMN)SRAGMN=RMAR(IVOL)
1261 IF(RMAR(IVOL+1).GT.SRAGMX)SRAGMX=RMAR(IVOL+1)
1262 IF(RMAR(IVOL+1).LT.SRAGMN)SRAGMN=RMAR(IVOL+1)
1263 IF(RMIR(IVOL).GT.RAINT2)RAINT2=RMIR(IVOL)
1264 IF(RMIR(IVOL).LT.RAINT1)RAINT1=RMIR(IVOL)
1265 IF(RMIR(IVOL+1).GT.RAINT2)RAINT2=RMIR(IVOL+1)
1266 IF(RMIR(IVOL+1).LT.RAINT1)RAINT1=RMIR(IVOL+1)
1267 PORMAR(IVOL)=RMAR(IVOL)
1268 PORMIR(IVOL)=RMIR(IVOL)
1272 * Create clipping objects
1273 IF(ICUT.NE.0.OR.IHOLE.NE.0)CALL GDCGSL(IVOLNA,ISHAPE)
1275 IF (IPRJ.EQ.IPERS) THEN
1276 CALL CGPERS(Q(ICPOIN))
1278 * Inserting object in Hide + Wire structures
1279 CALL GDCGHI(IWORK,NOBJ,NWWS,LSTEP,ISG,NTVOL,ISHAPE)
1285 10000 FORMAT(' Check Parameters of Shape ',I3,' in volume ',A4)
1286 10100 FORMAT(' Warning >>> RMIN1 greater than RMAX1 for shape '
1287 + ,I3,' in volume ',A4)
1288 10200 FORMAT(' Warning >>> RMIN2 greater than RMAX2 for shape '
1289 + ,I3,' in volume ',A4)
1290 10300 FORMAT(' Warning >>> PHIMIN greater than PHIMAX for shape'
1291 + ,I3,' in volume ',A4)
1292 *10400 FORMAT(' PGON with NPDV = ',I5,' in volume ',A4,' NPDV very
1293 * + large . It must be < 30 . Volume will not be drawn. ')
1294 10400 FORMAT(' PHI1 = ',F8.3,' DPHI = ',F8.3,' NPDV = ',F8.1
1296 10500 FORMAT(' PHI1 = ',F8.3,' DPHI = ',F8.3,' NZ = ',F8.1)
1297 10600 FORMAT(' J = ',I5,' Z = ',F8.3,' RMIN = ',F8.3
1299 *10800 FORMAT(' Please, increase size of Zebra store by ',I10,