]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
d43b40e2 | 5 | * Revision 1.1.1.1 1999/05/18 15:55:04 fca |
6 | * AliRoot sources | |
7 | * | |
fe4da5cc | 8 | * Revision 1.1.1.1 1995/10/24 10:20:30 cernlib |
9 | * Geant | |
10 | * | |
11 | * | |
12 | #include "geant321/pilot.h" | |
13 | *CMZ : 3.21/02 29/03/94 15.41.27 by S.Giani | |
14 | *-- Author : | |
15 | SUBROUTINE GSPE3D(NAME,TETA3,PHI3,PSI3,U03,V03,ZM3) | |
16 | C. | |
17 | C. ****************************************************************** | |
18 | C. * * | |
19 | C. * This routine draws specifications of volume NAME * | |
20 | C. * * | |
21 | C. * ==>Called by : <USER>, <GXINT>, GDFSPC * | |
22 | C. * * | |
23 | C. * Author : S.Giani 29-10-92 ************ * | |
24 | C. * * | |
25 | C. ****************************************************************** | |
26 | C. | |
27 | #include "geant321/gcbank.inc" | |
28 | #include "geant321/gcdraw.inc" | |
29 | #include "geant321/gcnum.inc" | |
30 | #include "geant321/gcshno.inc" | |
31 | COMMON/SP3D/ISPFLA | |
32 | * | |
33 | CHARACTER*4 NAME,NAMSEE,ISON | |
d43b40e2 | 34 | DIMENSION PAR(100) |
fe4da5cc | 35 | DIMENSION U0(3),V0(3),THE(3),PHI(3) |
36 | DIMENSION U01(3),V01(3) | |
37 | DIMENSION NNDM(100),INDM(5,100),ATT(10) | |
38 | SAVE NNDM,INDM,U01,V01,THE,PHI,XMAN1,YMAN1 | |
39 | C | |
40 | DATA NNDM/0,0,0,4,0,2,0,2,4,3,4,3,0,0,13*0,5,72*0/ | |
41 | 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, | |
42 | + 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, | |
43 | + 1,2,3,4,0, 1,2,3,0,0, 0,0,0,0,0, 70*0, 2,3,4,8,12, | |
44 | + 360*0/ | |
45 | C | |
46 | DATA U01/14.5,5.5,14.5/ | |
47 | DATA V01/14.,5.,5./ | |
48 | DATA THE/45.,0.,90./ | |
49 | DATA PHI/135.,0.,180./ | |
50 | DATA XMAN1/3./ | |
51 | DATA YMAN1/3./ | |
52 | C. | |
53 | C. ------------------------------------------------------------------ | |
54 | C. | |
55 | CALL ICLRWK(1,1) | |
56 | ISPFLA=0 | |
57 | C Is NAME an existing volume ? | |
58 | C | |
59 | CALL IGRNG(20.,20.) | |
60 | CALL GLOOK(NAME,IQ(JVOLUM+1),NVOLUM,IVO) | |
61 | IF (IVO.LE.0) GO TO 999 | |
62 | C | |
63 | C Normalize to PLTRNX,PLTRNY | |
64 | C | |
65 | DO 10 I=1,3 | |
66 | U0(I)=U01(I)*PLTRNX/20. | |
67 | V0(I)=V01(I)*PLTRNY/20. | |
68 | 10 CONTINUE | |
69 | XMAN=XMAN1*PLTRNX/20. | |
70 | YMAN=YMAN1*PLTRNY/20. | |
71 | C | |
72 | C Save GDRAW calling parameters | |
73 | C and ZOOM internal parameters | |
74 | C | |
75 | GTHETA=TETA3 | |
76 | GPHI=PHI3 | |
77 | GPSI=PSI3 | |
78 | * | |
79 | SAVTHE=GTHETA | |
80 | SAVPHI=GPHI | |
81 | SAVPSI=GPSI | |
82 | SAVU0=GU0 | |
83 | SAVV0=GV0 | |
84 | SAVSCU=GSCU | |
85 | SAVSCV=GSCV | |
86 | SVGZUA=GZUA | |
87 | SVGZVA=GZVA | |
88 | SVGZUB=GZUB | |
89 | SVGZVB=GZVB | |
90 | SVGZUC=GZUC | |
91 | SVGZVC=GZVC | |
92 | GZUA=1 | |
93 | GZVA=1 | |
94 | GZUB=0 | |
95 | GZVB=0 | |
96 | GZUC=0 | |
97 | GZVC=0 | |
98 | C | |
99 | C Get shape type | |
100 | C | |
101 | JVO=LQ(JVOLUM-IVO) | |
102 | ISHAPE=Q(JVO+2) | |
103 | C | |
104 | C Get user parameters | |
105 | C | |
106 | CALL GFPARA(NAME,1,0,NPAR,NATT,PAR,ATT) | |
107 | IF(NPAR.LE.0) GO TO 70 | |
108 | C | |
109 | C | |
110 | C Check parameter sizes | |
111 | C | |
112 | PARMAX=-1. | |
113 | DO 40 I=1,NPAR | |
114 | IF(NNDM(ISHAPE).LE.0) GO TO 30 | |
115 | NDM=NNDM(ISHAPE) | |
116 | DO 20 IDM=1,NDM | |
117 | IF(I.EQ.INDM(IDM,ISHAPE)) GO TO 40 | |
118 | 20 CONTINUE | |
119 | 30 ABSPAR=ABS(PAR(I)) | |
120 | PARMAX=MAX(PARMAX,ABSPAR) | |
121 | 40 CONTINUE | |
122 | C | |
123 | AXSIZ=PARMAX*.5 | |
124 | PARMAX=PARMAX/ZM3 | |
125 | GSCU=MIN(PLTRNX,PLTRNY)/(7.*PARMAX) | |
126 | GSCV=GSCU | |
127 | C | |
128 | C Draw header | |
129 | C | |
130 | CALL GDHEAD(-1,NAME,0.) | |
131 | C | |
132 | C Draw parameters list | |
133 | C | |
134 | C | |
135 | C Draw views | |
136 | C | |
137 | CALL GFATT(NAME,'SEEN',KSEEN) | |
138 | C | |
139 | C Add local value SEEN 1 to starting node of tree | |
140 | C | |
141 | KSEEN=KSEEN+110 | |
142 | ISEEN=KSEEN | |
143 | CALL GSATT(NAME,'SEEN',ISEEN) | |
144 | C | |
145 | CALL GSATT(NAME,'COLO',2) | |
146 | CALL GDNSON(NAME,NSON,IDIV) | |
147 | DO 50 N=1,NSON | |
148 | CALL GDSON(N,NAME,ISON) | |
149 | CALL GFATT(ISON,'SEEN',KSEEN) | |
150 | C | |
151 | C ISON is a volume with multiplicity; | |
152 | C first occurrence has already been set | |
153 | C | |
154 | IF (KSEEN.GT.50) GO TO 50 | |
155 | C | |
156 | C Add local value SEEN -2 to each one-level-down node | |
157 | C | |
158 | KSEEN=KSEEN+80 | |
159 | ISEEN=KSEEN | |
160 | CALL GSATT(ISON,'SEEN',ISEEN) | |
161 | C | |
162 | CALL GSATT(ISON,'COLO',4) | |
163 | 50 CONTINUE | |
164 | C | |
165 | ISPFLA=1 | |
166 | CALL GDRAW(NAME,TETA3,PHI3,PSI3,U03,V03,GSCU,GSCV) | |
167 | CALL GDCOL(3) | |
168 | * XSCAL=PLTRNX/4. | |
169 | * YSCAL=PLTRNY/2. | |
170 | XSCAL=17. | |
171 | YSCAL=3. | |
172 | CALL GDSCAL(XSCAL,YSCAL) | |
173 | ** IF (GSCU.LE.0.05) CALL GDMAN(XMAN,YMAN) | |
174 | IF (GSCU.LE.0.05) CALL GDWMN1(XMAN,YMAN) | |
175 | CALL GDAXIS(0.,0.,0.,AXSIZ) | |
176 | ISPFLA=0 | |
177 | C | |
178 | CALL GPVOLX(IVO) | |
179 | * | |
180 | CALL GDCOL(0) | |
181 | C | |
182 | C Reset global SEEN values | |
183 | C | |
184 | DO 60 IVO=1,NVOLUM | |
185 | CALL UHTOC(IQ(JVOLUM+IVO),4,NAMSEE,4) | |
186 | CALL GFATT(NAMSEE,'SEEN',KSEEN) | |
187 | IF (KSEEN.LT.50) GO TO 60 | |
188 | ISEENL=KSEEN/10.+0.5 | |
189 | ISEENG=KSEEN-ISEENL*10. | |
190 | CALL GSATT(NAMSEE,'SEEN',ISEENG) | |
191 | 60 CONTINUE | |
192 | C | |
193 | 70 CONTINUE | |
194 | C | |
195 | C Restore GDRAW calling parameters | |
196 | C and ZOOM internal parameters | |
197 | C | |
198 | GTHETA=SAVTHE | |
199 | GPHI=SAVPHI | |
200 | GPSI=SAVPSI | |
201 | GU0=SAVU0 | |
202 | GV0=SAVV0 | |
203 | GSCU=SAVSCU | |
204 | GSCV=SAVSCV | |
205 | NGVIEW=0 | |
206 | GZUA=SVGZUA | |
207 | GZVA=SVGZVA | |
208 | GZUB=SVGZUB | |
209 | GZVB=SVGZVB | |
210 | GZUC=SVGZUC | |
211 | GZVC=SVGZVC | |
212 | 999 END |