5 * Revision 1.3 1996/10/01 14:12:05 ravndal
6 * right units for SPHE specs.
8 * Revision 1.2 1996/09/30 14:54:13 ravndal
9 * Right units for the spec of PARA
11 * Revision 1.1.1.1 1995/10/24 10:20:28 cernlib
15 #include "geant321/pilot.h"
16 *CMZ : 3.21/02 20/07/94 18.08.26 by S.Ravndal
18 SUBROUTINE GDSPEC(NAME)
20 C. ******************************************************************
22 C. * This routine draws specifications of volume NAME *
24 C. * ==>Called by : <USER>, <GXINT>, GDFSPC *
25 C. * Authors : P.Zanarini ********* *
26 C. * A.McPherson ***** *
28 C. ******************************************************************
30 #include "geant321/gcbank.inc"
31 #include "geant321/gcdraw.inc"
32 #include "geant321/gcnum.inc"
33 #include "geant321/gcshno.inc"
35 CHARACTER*4 NAME,NAMSEE,ISON
36 CHARACTER*4 IBOX(5),ITRD1(5),ITUBE(5),ITUBS(5)
37 CHARACTER*4 ITRD2(6),ICON(5),ICONS(7),ISPH(6),ITRAP(11),IPARA(6),
38 +IPGON(7),IPCON(6),IGTRA(12),IHYPE(4),IELTU(3)
39 DIMENSION PAR(50),IPAR(12),IPA(3),ISPAR(3)
40 DIMENSION U0(3),V0(3),THE(3),PHI(3),ISHT(2)
41 DIMENSION U01(3),V01(3)
42 DIMENSION NNDM(100),INDM(5,100),ATT(10)
44 SAVE IBOX,ITRD1,ITRD2,ITRAP,ITUBE,ITUBS,ICON,ICONS,ISPH,IPARA
45 SAVE IPGON,IPCON,IGTRA,ICTUB,IHYPE,IELTU
46 SAVE NNDM,INDM,U01,V01,THE,PHI,XMAN1,YMAN1
48 DATA IBOX /'DX ','DY ','DZ ',' ',' '/
49 DATA ITRD1/'DX1 ','DX2 ','DY ','DZ ',' '/
50 DATA ITRD2/'DX1 ','DX2 ','DY1 ','DY2 ','DZ ',' '/
51 DATA ITRAP/'DZ ','THET','PHI ','H1 ','BL1 ','TL1 ','ALP1',
52 +'H2 ','BL2 ','TL2 ','ALP2'/
53 DATA ITUBE/'RMIN','RMAX','DZ ',' ',' '/
54 DATA ITUBS/'RMIN','RMAX','DZ ','PHI1','PHI2'/
55 DATA ICON /'DZ ','RMN1','RMX1','RMN2','RMX2'/
56 DATA ICONS/'DZ ','RMN1','RMX1','RMN2','RMX2','PHI1','PHI2'/
57 DATA ISPH /'RMIN','RMAX','THE1','THE2','PHI1','PHI2'/
58 DATA IPARA/'DX ','DY ','DZ ','ALPH','THET','PHI '/
59 DATA IPGON/'PHI1','DPHI','NPDV','NZ ','Z ','RMIN','RMAX'/
60 DATA IPCON/'PHI1','DPHI','NZ ','Z ','RMIN','RMAX'/
61 DATA IHYPE/'RMIN','RMAX','DZ ','TWST'/
62 DATA IGTRA/'DZ ','THET','PHI ','TWIS','H1 ','BL1 ','TL1 ',
63 +'ALP1','H2 ','BL2 ','TL2 ','ALP2'/
64 DATA ICTUB/'RMIN','RMAX','DZ ','PHI1','PHI2','LXL ','LYL ',
65 + 'LZL ','LXH ','LYH ','LZH '/
66 DATA IELTU /'A ','B ','DZ '/
68 DATA NNDM/0,0,0,4,0,2,0,2,4,3,4,3,0,0,13*0,5,72*0/
69 DATA INDM/0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 2,3,7,11,0, 0,0,0,0,0,
70 + 4,5,0,0,0, 0,0,0,0,0, 6,7,0,0,0, 3,4,5,6,0, 4,5,6,0,0,
71 + 1,2,3,4,0, 1,2,3,0,0, 0,0,0,0,0, 70*0, 2,3,4,8,12,
74 DATA U01/14.5,5.5,14.5/
77 DATA PHI/135.,0.,180./
81 C. ------------------------------------------------------------------
83 C Is NAME an existing volume ?
85 *** CALL IGRNG(20.,20.)
86 CALL HPLFRA(0.,20.,0.,20.,'AB')
87 CALL GLOOK(NAME,IQ(JVOLUM+1),NVOLUM,IVO)
88 IF (IVO.LE.0) GO TO 999
90 C Normalize to PLTRNX,PLTRNY
93 U0(I)=U01(I)*PLTRNX/20.
94 V0(I)=V01(I)*PLTRNY/20.
99 C Save GDRAW calling parameters
100 C and ZOOM internal parameters
127 C Get user parameters
129 CALL GFPARA(NAME,1,0,NPAR,NATT,PAR,ATT)
130 IF(NPAR.LE.0) GO TO 250
133 C Check parameter sizes
137 IF(NNDM(ISHAPE).LE.0) GO TO 30
140 IF(I.EQ.INDM(IDM,ISHAPE)) GO TO 40
142 30 ABSPAR=ABS(PAR(I))
143 PARMAX=MAX(PARMAX,ABSPAR)
146 GSCU=MIN(PLTRNX,PLTRNY)/(7.*PARMAX)
152 CALL GDHEAD(-1,NAME,0.)
154 C Draw parameters list
157 IF(NPAR.GT.20) NPAR=20
158 IF(NPAR.GT.10) DY=5.0/NPAR
162 CALL UCTOH(' = <',ISPAR(2),4,4)
163 CALL UCTOH('CM $',ISPAR(3),4,4)
164 IF (ISHAPE.NE.1) GO TO 50
165 CALL UCTOH('B<OX',ISHT(1),4,4)
166 CALL UCTOH(' $',ISHT(2),4,4)
167 CALL UCTOH(IBOX(I),ISPAR(1),4,4)
169 50 IF (ISHAPE.NE.2) GO TO 60
170 CALL UCTOH('T<RD',ISHT(1),4,4)
171 CALL UCTOH('>1 $',ISHT(2),4,4)
172 CALL UCTOH(ITRD1(I),ISPAR(1),4,4)
174 60 IF(ISHAPE.NE.3) GO TO 70
175 CALL UCTOH('T<RD',ISHT(1),4,4)
176 CALL UCTOH('>2 $',ISHT(2),4,4)
177 CALL UCTOH(ITRD2(I),ISPAR(1),4,4)
179 70 IF(ISHAPE.NE.4) GO TO 80
180 CALL UCTOH('T<RA',ISHT(1),4,4)
181 CALL UCTOH('P $',ISHT(2),4,4)
182 CALL UCTOH(ITRAP(I),ISPAR(1),4,4)
183 IF(I.EQ.2.OR.I.EQ.3.OR.I.EQ.7.OR.I.EQ.11)THEN
184 CALL UCTOH(' = <',ISPAR(2),4,4)
185 CALL UCTOH('DEG$',ISPAR(3),4,4)
188 80 IF (ISHAPE.NE.5) GO TO 90
189 CALL UCTOH('T<UB',ISHT(1),4,4)
190 CALL UCTOH('E $',ISHT(2),4,4)
191 CALL UCTOH(ITUBE(I),ISPAR(1),4,4)
193 90 IF (ISHAPE.NE.6) GO TO 100
194 CALL UCTOH('T<UB',ISHT(1),4,4)
195 CALL UCTOH('S $',ISHT(2),4,4)
196 CALL UCTOH(ITUBS(I),ISPAR(1),4,4)
198 CALL UCTOH(' = <',ISPAR(2),4,4)
199 CALL UCTOH('DEG$',ISPAR(3),4,4)
202 100 IF(ISHAPE.NE.7) GO TO 110
203 CALL UCTOH('C<ON',ISHT(1),4,4)
204 CALL UCTOH('E $',ISHT(2),4,4)
205 CALL UCTOH(ICON(I),ISPAR(1),4,4)
207 110 IF(ISHAPE.NE.8) GO TO 120
208 CALL UCTOH('C<ON',ISHT(1),4,4)
209 CALL UCTOH('S $',ISHT(2),4,4)
210 CALL UCTOH(ICONS(I),ISPAR(1),4,4)
212 CALL UCTOH(' = <',ISPAR(2),4,4)
213 CALL UCTOH('DEG$',ISPAR(3),4,4)
216 120 IF(ISHAPE.NE.9) GO TO 130
217 CALL UCTOH('S<PH',ISHT(1),4,4)
218 CALL UCTOH('E $',ISHT(2),4,4)
219 CALL UCTOH(ISPH(I),ISPAR(1),4,4)
221 CALL UCTOH(' = <',ISPAR(2),4,4)
222 CALL UCTOH('DEG$',ISPAR(3),4,4)
225 130 IF(ISHAPE.NE.10) GO TO 140
226 CALL UCTOH('P<AR',ISHT(1),4,4)
227 CALL UCTOH('A $',ISHT(2),4,4)
228 CALL UCTOH(IPARA(I),ISPAR(1),4,4)
230 CALL UCTOH(' = <',ISPAR(2),4,4)
231 CALL UCTOH('DEG$',ISPAR(3),4,4)
234 140 IF(ISHAPE.NE.11.AND.ISHAPE.NE.12) GO TO 170
235 CALL UCTOH('P<GO',ISHT(1),4,4)
236 CALL UCTOH('N $',ISHT(2),4,4)
238 IF(IU.LT.8) GO TO 150
243 150 CALL UCTOH(IPGON(IU),ISPAR(1),4,4)
245 CALL UCTOH(' = <',ISPAR(2),4,4)
246 CALL UCTOH('DEG$',ISPAR(3),4,4)
248 IF(I.EQ.3.OR.I.EQ.4)CALL UCTOH(' $', ISPAR(3),4,4)
249 IF(ISHAPE.EQ.11) GO TO 200
250 CALL UCTOH('P<CO',ISHT(1),4,4)
252 IF(IU.LT.7) GO TO 160
257 160 CALL UCTOH(IPCON(IU),ISPAR(1),4,4)
258 IF(I.EQ.4) CALL UCTOH('CM $',ISPAR(3),4,4)
262 IF(ISHAPE.NE.13) GO TO 180
263 CALL UCTOH('E<LT',ISHT(1),4,4)
264 CALL UCTOH('U $',ISHT(2),4,4)
265 CALL UCTOH(IELTU(I),ISPAR(1),4,4)
268 IF(ISHAPE .NE. 14) GO TO 190
269 CALL UCTOH('H<YP',ISHT(1),4,4)
270 CALL UCTOH('E $',ISHT(2),4,4)
271 CALL UCTOH(IHYPE(I),ISPAR(1),4,4)
273 CALL UCTOH(' = <',ISPAR(2),4,4)
274 CALL UCTOH('DEG$',ISPAR(3),4,4)
282 IF (ISHAPE.EQ.NSCTUB) THEN
283 CALL UCTOH('CT<U',ISHT(1),4,4)
284 CALL UCTOH('B $',ISHT(2),4,4)
285 CALL UCTOH(ICTUB(I),ISPAR(1),4,4)
286 IF(I.GE.4.AND.I.LE.5)THEN
287 CALL UCTOH(' = <',ISPAR(2),4,4)
288 CALL UCTOH('DEG$',ISPAR(3),4,4)
290 CALL UCTOH(' = ',ISPAR(2),4,4)
291 CALL UCTOH(' $ ',ISPAR(3),4,4)
296 C General twisted trapezoid.
298 IF(ISHAPE.NE.28) GO TO 230
299 CALL UCTOH('G>TR',ISHT(1),4,4)
300 CALL UCTOH('A $',ISHT(2),4,4)
301 CALL UCTOH(IGTRA(I),ISPAR(1),4,4)
302 IF(I.EQ.2.OR.I.EQ.3.OR.I.EQ.4.OR.I.EQ.8.OR. I.EQ.12) CALL
303 + UCTOH('DEG$',ISPAR(3),4,4)
308 YTEXT=16.5*PLTRNY/20.
309 CSIZE=DY*MIN(PLTRNX,PLTRNY)/20.
310 CALL UHTOC(ISHT,4,CHTEXT,12)
311 CALL GDRAWT(XTEXT,YTEXT,CHTEXT,CSIZE,0.,1,-1)
316 CSIZE=H*MIN(PLTRNX,PLTRNY)/20.
317 CALL UHTOC(ISPAR,4,CHTEXT,12)
318 CALL GDRAWT(XTEXT,YTEXT,CHTEXT,CSIZE,0.,1,-1)
319 CALL HBCDF(PAR(I),8,IPAR)
320 IF (PAR(I).EQ.0.) CALL UCTOH('0',IPAR(1),1,1)
321 CALL UCTOH('$',IPAR(9),1,1)
322 CALL UBUNCH(IPAR,IPA,9)
323 XTEXT=(H*10.+3.)*PLTRNX/20.
325 CSIZE=H*MIN(PLTRNX,PLTRNY)/20.
326 CALL UHTOC(IPA,4,CHTEXT,12)
327 CALL GDRAWT(XTEXT,YTEXT,CHTEXT,CSIZE,0.,1,-1)
332 CALL GFATT(NAME,'SEEN',KSEEN)
334 C Add local value SEEN 1 to starting node of tree
338 CALL GSATT(NAME,'SEEN',ISEEN)
340 CALL GSATT(NAME,'COLO',2)
341 CALL GDNSON(NAME,NSON,IDIV)
343 CALL GDSON(N,NAME,ISON)
344 CALL GFATT(ISON,'SEEN',KSEEN)
346 C ISON is a volume with multiplicity;
347 C first occurrence has already been set
349 IF (KSEEN.GT.50) GO TO 220
351 C Add local value SEEN -2 to each one-level-down node
355 CALL GSATT(ISON,'SEEN',ISEEN)
357 CALL GSATT(ISON,'COLO',4)
363 CALL GDSCAL(XSCAL,YSCAL)
364 ** IF (GSCU.LE.0.05) CALL GDMAN(XMAN,YMAN)
365 IF (GSCU.LE.0.05) CALL GDWMN1(XMAN,YMAN)
367 CALL GDRAW(NAME,THE(1),PHI(1),0.,U0(1),V0(1),GSCU,GSCV)
368 CALL GDAXIS(0.,0.,0.,AXSIZ)
369 CALL GDRAWC(NAME,3,0.005,U0(2),V0(2),GSCU,GSCV)
370 CALL GDAXIS(0.,0.,0.,AXSIZ)
371 CALL GDRAWC(NAME,1,0.005,U0(3),V0(3),GSCU,GSCV)
372 CALL GDAXIS(0.,0.,0.,AXSIZ)
376 C Reset global SEEN values
379 CALL UHTOC(IQ(JVOLUM+IVO),4,NAMSEE,4)
380 CALL GFATT(NAMSEE,'SEEN',KSEEN)
381 IF (KSEEN.LT.50) GO TO 240
383 ISEENG=KSEEN-ISEENL*10.
384 CALL GSATT(NAMSEE,'SEEN',ISEENG)
389 C Restore GDRAW calling parameters
390 C and ZOOM internal parameters