5 * Revision 1.1.1.1 1995/10/24 10:20:56 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.30 by S.Giani
12 SUBROUTINE GSVOLU(KNAME,JSHAPE,NMED,UPAR,NP,IVOLU)
14 C. ******************************************************************
16 C. * CREATES A NEW VOLUME *
18 C. * JVO=LQ(JVOLUM-IVOLU) *
20 C. * Q(JVO+1)=ISEARC (SET TO 0 BY DEFAULT) *
21 C. * Q(JVO+2)=ISHAPE *
26 C. * Q(JVO+7)=PAR..... *
27 C. * Q(JVO+7+NPAR)=ATT..... *
29 C. * ==>Called by : <USER> *
30 C. * Author R.Brun ********* *
32 C. ******************************************************************
34 #include "geant321/gcbank.inc"
35 #include "geant321/gconsp.inc"
36 #include "geant321/gcnum.inc"
37 #include "geant321/gcdraw.inc"
38 #include "geant321/gcunit.inc"
39 CHARACTER*4 KNAME,JSHAPE
40 DIMENSION UPAR(50),PAR(50),ATT(20)
42 DATA ATT/1.,1.,1.,1.,1.,15*0./
45 C. ------------------------------------------------------------------
48 C Copy user parameters into local array PAR
52 IF(JSHAPE.EQ.'TRAP') NPAR=35
53 IF(JSHAPE.EQ.'GTRA') NPAR=30
54 CALL UCOPY(UPAR,PAR,NP)
59 C CHECK SHAPE VALIDITY
61 CALL GSCHK ( KNAME, JSHAPE, NPAR, ISHAPE )
63 IF(ISHAPE.LE.0)GO TO 99
64 IF(JVOLUM.GT.0)GO TO 10
66 C CREATE THE MOTHER MEDIA BANK
68 CALL MZBOOK(IXCONS,JVOLUM,JVOLUM,1,'VOLU',400,400,400,5,0)
73 C CHECK IF SUCH A VOLUME ALREADY DEFINED
76 CALL GLOOK(KNAME,IQ(JVOLUM+1),NVOLUM,IVO)
78 IF(LQ(JVOLUM-IVO).GT.0) THEN
79 WRITE(CHMAIL,10010) KNAME, IVO
80 10010 FORMAT(' **** GSVOLU: Redefinition of volume ',
83 CALL MZDROP(IXCONS,LQ(JVOLUM-IVO),' ')
88 IF(NVOLUM.GT.NVOL)CALL MZPUSH(IXCONS,JVOLUM,50,50,'I')
91 C NOW CREATE THE VOLUME BANK
93 30 CALL MZBOOK(IXCONS,JVO,JVOLUM,-IVO,'VOL1',50,50,9+NPAR+NATT,3,0)
94 CALL UCTOH(KNAME,IQ(JVOLUM+IVO),4,4)
96 C COPY PARAMETERS IN DATA AREA
101 IF(NPAR.LE.0)GO TO 99
103 IF (ISHAPE.EQ.4) THEN
105 TTH= TAN(PAR(2)*DEGRAD)
107 PAR(2) = TTH*COS(PHI)
108 PAR(3) = TTH*SIN(PHI)
109 PAR(7) = TAN(PAR(7) *DEGRAD)
110 PAR(11)= TAN(PAR(11)*DEGRAD)
112 ELSE IF (ISHAPE.EQ.10) THEN
113 * Parallelepiped change angles to tangents.
114 PAR(4)=TAN(PAR(4)*DEGRAD)
115 TTH=TAN(PAR(5)*DEGRAD)
119 ELSE IF (ISHAPE.EQ.28) THEN
120 * General twisted trapezoid.
121 CALL GTRAIN(UPAR,PAR)
126 CALL GSIPAR(JVO,0,NPAR,NATT,PAR,ATT)