]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gdraw/gdspec.F
New detector loop split in 2
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdspec.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.3 1996/10/01 14:12:05 ravndal
6* right units for SPHE specs.
7*
8* Revision 1.2 1996/09/30 14:54:13 ravndal
9* Right units for the spec of PARA
10*
11* Revision 1.1.1.1 1995/10/24 10:20:28 cernlib
12* Geant
13*
14*
15#include "geant321/pilot.h"
16*CMZ : 3.21/02 20/07/94 18.08.26 by S.Ravndal
17*-- Author :
18 SUBROUTINE GDSPEC(NAME)
19C.
20C. ******************************************************************
21C. * *
22C. * This routine draws specifications of volume NAME *
23C. * *
24C. * ==>Called by : <USER>, <GXINT>, GDFSPC *
25C. * Authors : P.Zanarini ********* *
26C. * A.McPherson ***** *
27C. * *
28C. ******************************************************************
29C.
30#include "geant321/gcbank.inc"
31#include "geant321/gcdraw.inc"
32#include "geant321/gcnum.inc"
33#include "geant321/gcshno.inc"
34 CHARACTER*4 ICTUB(11)
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)
43 CHARACTER*12 CHTEXT
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
47C
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 '/
67C
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,
72 + 360*0/
73C
74 DATA U01/14.5,5.5,14.5/
75 DATA V01/14.,5.,5./
76 DATA THE/45.,0.,90./
77 DATA PHI/135.,0.,180./
78 DATA XMAN1/8.8/
79 DATA YMAN1/11.6/
80C.
81C. ------------------------------------------------------------------
82C.
83C Is NAME an existing volume ?
84C
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
89C
90C Normalize to PLTRNX,PLTRNY
91C
92 DO 10 I=1,3
93 U0(I)=U01(I)*PLTRNX/20.
94 V0(I)=V01(I)*PLTRNY/20.
95 10 CONTINUE
96 XMAN=XMAN1*PLTRNX/20.
97 YMAN=YMAN1*PLTRNY/20.
98C
99C Save GDRAW calling parameters
100C and ZOOM internal parameters
101C
102 SAVTHE=GTHETA
103 SAVPHI=GPHI
104 SAVPSI=GPSI
105 SAVU0=GU0
106 SAVV0=GV0
107 SAVSCU=GSCU
108 SAVSCV=GSCV
109 SVGZUA=GZUA
110 SVGZVA=GZVA
111 SVGZUB=GZUB
112 SVGZVB=GZVB
113 SVGZUC=GZUC
114 SVGZVC=GZVC
115 GZUA=1
116 GZVA=1
117 GZUB=0
118 GZVB=0
119 GZUC=0
120 GZVC=0
121C
122C Get shape type
123C
124 JVO=LQ(JVOLUM-IVO)
125 ISHAPE=Q(JVO+2)
126C
127C Get user parameters
128C
129 CALL GFPARA(NAME,1,0,NPAR,NATT,PAR,ATT)
130 IF(NPAR.LE.0) GO TO 250
131C
132C
133C Check parameter sizes
134C
135 PARMAX=-1.
136 DO 40 I=1,NPAR
137 IF(NNDM(ISHAPE).LE.0) GO TO 30
138 NDM=NNDM(ISHAPE)
139 DO 20 IDM=1,NDM
140 IF(I.EQ.INDM(IDM,ISHAPE)) GO TO 40
141 20 CONTINUE
142 30 ABSPAR=ABS(PAR(I))
143 PARMAX=MAX(PARMAX,ABSPAR)
144 40 CONTINUE
145C
146 GSCU=MIN(PLTRNX,PLTRNY)/(7.*PARMAX)
147 GSCV=GSCU
148 AXSIZ=PARMAX*0.35
149C
150C Draw header
151C
152 CALL GDHEAD(-1,NAME,0.)
153C
154C Draw parameters list
155C
156 DY=0.4
157 IF(NPAR.GT.20) NPAR=20
158 IF(NPAR.GT.10) DY=5.0/NPAR
159 H=DY*0.7
160C
161 DO 210 I=1,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)
168 GO TO 200
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)
173 GO TO 200
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)
178 GO TO 200
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)
186 ENDIF
187 GO TO 200
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)
192 GO TO 200
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)
197 IF(I.GT.3)THEN
198 CALL UCTOH(' = <',ISPAR(2),4,4)
199 CALL UCTOH('DEG$',ISPAR(3),4,4)
200 ENDIF
201 GO TO 200
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)
206 GO TO 200
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)
211 IF(I.GT.5)THEN
212 CALL UCTOH(' = <',ISPAR(2),4,4)
213 CALL UCTOH('DEG$',ISPAR(3),4,4)
214 ENDIF
215 GO TO 200
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)
220 IF(I.GT.2)THEN
221 CALL UCTOH(' = <',ISPAR(2),4,4)
222 CALL UCTOH('DEG$',ISPAR(3),4,4)
223 ENDIF
224 GO TO 200
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)
229 IF(I.GT.3)THEN
230 CALL UCTOH(' = <',ISPAR(2),4,4)
231 CALL UCTOH('DEG$',ISPAR(3),4,4)
232 ENDIF
233 GO TO 200
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)
237 IU=I
238 IF(IU.LT.8) GO TO 150
239 I2=I-5
240 I3=I2/3
241 I4=I2-I3*3
242 IU=I4+5
243 150 CALL UCTOH(IPGON(IU),ISPAR(1),4,4)
244 IF(I.LT.3)THEN
245 CALL UCTOH(' = <',ISPAR(2),4,4)
246 CALL UCTOH('DEG$',ISPAR(3),4,4)
247 ENDIF
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)
251 IU=I
252 IF(IU.LT.7) GO TO 160
253 I2=I-4
254 I3=I2/3
255 I4=I2-I3*3
256 IU=I4+4
257 160 CALL UCTOH(IPCON(IU),ISPAR(1),4,4)
258 IF(I.EQ.4) CALL UCTOH('CM $',ISPAR(3),4,4)
259C
260 GO TO 200
261 170 CONTINUE
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)
266 GO TO 200
267 180 CONTINUE
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)
272 IF(I .GT. 3) THEN
273 CALL UCTOH(' = <',ISPAR(2),4,4)
274 CALL UCTOH('DEG$',ISPAR(3),4,4)
275 ENDIF
276 GO TO 200
277C
278 190 CONTINUE
279C
280C Cut tube
281C
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)
289 ELSE IF(I.GE.6)THEN
290 CALL UCTOH(' = ',ISPAR(2),4,4)
291 CALL UCTOH(' $ ',ISPAR(3),4,4)
292 END IF
293 GO TO 200
294 ENDIF
295C
296C General twisted trapezoid.
297C
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)
304C
305 200 CONTINUE
306 IF (I.EQ.1) THEN
307 XTEXT=4.*PLTRNX/20.
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)
312 ENDIF
313 Y=16.5-(I+0.5)*DY
314 XTEXT=3.*PLTRNX/20.
315 YTEXT=Y*PLTRNY/20.
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.
324 YTEXT=Y*PLTRNY/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)
328 210 CONTINUE
329C
330C Draw views
331C
332 CALL GFATT(NAME,'SEEN',KSEEN)
333C
334C Add local value SEEN 1 to starting node of tree
335C
336 KSEEN=KSEEN+110
337 ISEEN=KSEEN
338 CALL GSATT(NAME,'SEEN',ISEEN)
339C
340 CALL GSATT(NAME,'COLO',2)
341 CALL GDNSON(NAME,NSON,IDIV)
342 DO 220 N=1,NSON
343 CALL GDSON(N,NAME,ISON)
344 CALL GFATT(ISON,'SEEN',KSEEN)
345C
346C ISON is a volume with multiplicity;
347C first occurrence has already been set
348C
349 IF (KSEEN.GT.50) GO TO 220
350C
351C Add local value SEEN -2 to each one-level-down node
352C
353 KSEEN=KSEEN+80
354 ISEEN=KSEEN
355 CALL GSATT(ISON,'SEEN',ISEEN)
356C
357 CALL GSATT(ISON,'COLO',4)
358 220 CONTINUE
359C
360 CALL GDCOL(3)
361 XSCAL=PLTRNX/4.
362 YSCAL=PLTRNY/2.
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)
366C
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)
373C
374 230 CALL GDCOL(0)
375C
376C Reset global SEEN values
377C
378 DO 240 IVO=1,NVOLUM
379 CALL UHTOC(IQ(JVOLUM+IVO),4,NAMSEE,4)
380 CALL GFATT(NAMSEE,'SEEN',KSEEN)
381 IF (KSEEN.LT.50) GO TO 240
382 ISEENL=KSEEN/10.+0.5
383 ISEENG=KSEEN-ISEENL*10.
384 CALL GSATT(NAMSEE,'SEEN',ISEENG)
385 240 CONTINUE
386C
387 250 CONTINUE
388C
389C Restore GDRAW calling parameters
390C and ZOOM internal parameters
391C
392 GTHETA=SAVTHE
393 GPHI=SAVPHI
394 GPSI=SAVPSI
395 GU0=SAVU0
396 GV0=SAVV0
397 GSCU=SAVSCU
398 GSCV=SAVSCV
399 NGVIEW=0
400 GZUA=SVGZUA
401 GZVA=SVGZVA
402 GZUB=SVGZUB
403 GZVB=SVGZVB
404 GZUC=SVGZUC
405 GZVC=SVGZVC
406 CALL ISELNT(1)
407 999 END