]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1995/10/24 10:20:23 cernlib | |
6 | * Geant | |
7 | * | |
8 | * | |
9 | #include "geant321/pilot.h" | |
10 | *CMZ : 3.21/02 29/03/94 15.41.26 by S.Giani | |
11 | *-- Author : | |
12 | * | |
13 | SUBROUTINE GDPLST(JVSIM,NAME,LEVMAX,KXXX) | |
14 | * | |
15 | *************************************************************** | |
16 | * * | |
17 | * Routine name: GDPLST Date: 19-2-92 * | |
18 | * * | |
19 | * Function: It performs the drawing of the tree under the * | |
20 | * user control. Clicking the left button of the * | |
21 | * mouse when the cursor is inside the name's box * | |
22 | * will display the specification of such a volume, * | |
23 | * clicking on the red arrows will display the tree * | |
24 | * below it, clicking on the green arrows will dis- * | |
25 | * play the tree starting from an upper level. * | |
26 | * The number of levels displayed in both cases * | |
27 | * depends on the arrow which has been clicked. * | |
28 | * * | |
29 | * Author: S. Giani ****** * | |
30 | * * | |
31 | *************************************************************** | |
32 | * | |
33 | #include "geant321/gcbank.inc" | |
34 | #include "geant321/pawc.inc" | |
35 | #include "geant321/gcnum.inc" | |
36 | #include "geant321/gcunit.inc" | |
37 | #include "geant321/gcdraw.inc" | |
38 | #include "geant321/gcgobj.inc" | |
39 | #include "geant321/gcmutr.inc" | |
40 | #include "geant321/gcspee.inc" | |
41 | #include "geant321/gchil2.inc" | |
42 | #include "geant321/gccurs.inc" | |
43 | #include "geant321/gcursb.inc" | |
44 | * | |
45 | CHARACTER*4 NAME,SAVNAM,NAME1,MOTH,SAVSAN,NNNN | |
46 | CHARACTER*1 GCHAR | |
47 | * | |
48 | IF(NNPAR.EQ.3.AND.KXXX.EQ.0)GOTO 110 | |
49 | JSIM=0 | |
50 | IDINAM=2 | |
51 | IF(JAASS1.NE.0) CALL MZDROP(IXSTOR, JAASS1, ' ') | |
52 | IF(JAASS2.NE.0) CALL MZDROP(IXSTOR, JAASS2, ' ') | |
53 | IF(JAASS3.NE.0) CALL MZDROP(IXSTOR, JAASS3, ' ') | |
54 | IF(JAASS4.NE.0) CALL MZDROP(IXSTOR, JAASS4, ' ') | |
55 | IF(JTICKS.NE.0) CALL MZDROP(IXSTOR, JTICKS, ' ') | |
56 | IF(JMYLLS.NE.0) CALL MZDROP(IXSTOR, JMYLLS, ' ') | |
57 | IF(JMYMOT.NE.0) CALL MZDROP(IXSTOR, JMYMOT, ' ') | |
58 | NEE=NUMND1+10 | |
59 | NEES=NEE*7 | |
60 | CALL MZNEED(IXDIV,NEES,'G') | |
61 | CALL MZBOOK(IXDIV,JAASS1,JAASS1,1,'TREX',0,0,NEE,3,-1) | |
62 | CALL MZBOOK(IXDIV,JAASS2,JAASS2,1,'TREY',0,0,NEE,3,-1) | |
63 | CALL MZBOOK(IXDIV,JAASS3,JAASS3,1,'NAMS',0,0,NEE,2,-1) | |
64 | CALL MZBOOK(IXDIV,JAASS4,JAASS4,1,'SCAS',0,0,NEE,2,-1) | |
65 | CALL MZBOOK(IXDIV,JTICKS,JTICKS,1,'TICK',0,0,NEE,2,-1) | |
66 | CALL MZBOOK(IXDIV,JMYLLS,JMYLLS,1,'MYLS',0,0,NEE,2,-1) | |
67 | CALL MZBOOK(IXDIV,JMYMOT,JMYMOT,1,'MYMO',0,0,NEE,2,-1) | |
68 | CALL IGRNG(YPLT,XPLT) | |
69 | SAVNAM=NAME | |
70 | SAVSAN=SAVNAM | |
71 | LSAVLE=LEVMAX | |
72 | LSAVSA=LSAVLE | |
73 | YPLTNE=YPLT | |
74 | XPLTNE=XPLT | |
75 | NUMNDS=NUMND1 | |
76 | DO 10 J=1,NUMND1 | |
77 | Q(JAASS1+J)=Q(JULEV+J) | |
78 | Q(JAASS2+J)=Q(JVLEV+J) | |
79 | IQ(JAASS3+J)=IQ(JNAM1+J) | |
80 | IQ(JAASS4+J)=IQ(JSCA1+J) | |
81 | IQ(JTICKS+J)=IQ(JTICK+J) | |
82 | IQ(JMYLLS+J)=IQ(JMYLL+J) | |
83 | IQ(JMYMOT+J)=IQ(JMOT1+J) | |
84 | 10 CONTINUE | |
85 | IPLAC=LEVMAX | |
86 | 20 CONTINUE | |
87 | IPICK=0 | |
88 | IF(IDINAM.EQ.2)THEN | |
89 | CALL IGRNG(YPLT,XPLT) | |
90 | ELSE | |
91 | CALL IGRNG(YPLTNE,XPLTNE) | |
92 | ENDIF | |
93 | IF(KXXX.EQ.1)THEN | |
94 | KACKT=1 | |
95 | KCHAR=1 | |
96 | IPICK=1 | |
97 | CALL GLOOK(NAME,IQ(JVOLUM+1),NVOLUM,IVO) | |
98 | IF (IVO.LE.0) GO TO 110 | |
99 | GOTO 50 | |
100 | ENDIF | |
101 | CALL IRQLC(1,1,KCHAR,NT,V0,U0) | |
102 | IF (KCHAR.EQ.0) GO TO 50 | |
103 | GCHAR=CHAR(KCHAR) | |
104 | IF(IDINAM.EQ.2)THEN | |
105 | NUMNUM=NUMND1 | |
106 | ELSE | |
107 | NUMNUM=NUMNDS | |
108 | ENDIF | |
109 | DO 40 J=1,NUMNUM | |
110 | IF(IDINAM.EQ.2)THEN | |
111 | IF (IQ(JSCA1+J).NE.0) THEN | |
112 | IF(U0.LT.(Q(JULEV+J)-SIZD2).OR.U0.GT.(Q(JULEV+J)+SIZD2)) | |
113 | + GO TO 30 | |
114 | IF(V0.LT.(Q(JVLEV+J)-(SIZD2*2.*FACHV)-HALF).OR.V0.GT.( | |
115 | + Q(JVLEV+J)+(SIZD2*2.*FACHV)+HALF)) GO TO 30 | |
116 | IPICK=J | |
117 | KACKT=0 | |
118 | IF(V0.LT.(Q(JVLEV+J)-(SIZD2*2.*FACHV)))THEN | |
119 | KACKT=-1 | |
120 | PLAC=((Q(JVLEV+J)-(SIZD2*2.*FACHV))-V0)*(IQ(JMYLL+J) | |
121 | + -1)/HALF | |
122 | IPLACS=PLAC+1 | |
123 | ENDIF | |
124 | IF(V0.GT.(Q(JVLEV+J)+(SIZD2*2.*FACHV)))THEN | |
125 | KACKT=1 | |
126 | PLAC=(V0-(Q(JVLEV+J)+(SIZD2*2.*FACHV)))*IQ(JTICK+J)/ | |
127 | + HALF | |
128 | IPLAC=PLAC | |
129 | * IF((PLAC-IPLAC).GT..5)IPLAC=IPLAC+1 | |
130 | IPLAC=IPLAC+2 | |
131 | ENDIF | |
132 | IF (KCHAR.EQ.1.OR.KCHAR.EQ.2) GO TO 50 | |
133 | IF(GCHAR.EQ.' ')GO TO 50 | |
134 | CALL UHTOC(IQ(JNAM1+J),4,NAME1,4) | |
135 | IF (GCHAR.EQ.'2') THEN | |
136 | CALL GSATT(NAME1,'SEEN',-2) | |
137 | ELSE IF (GCHAR.EQ.'-') THEN | |
138 | CALL GSATT(NAME1,'SEEN',-1) | |
139 | ELSE IF (GCHAR.EQ.'0') THEN | |
140 | CALL GSATT(NAME1,'SEEN',0) | |
141 | ELSE IF (GCHAR.EQ.'1') THEN | |
142 | CALL GSATT(NAME1,'SEEN',1) | |
143 | ENDIF | |
144 | GO TO 20 | |
145 | ENDIF | |
146 | ENDIF | |
147 | 30 CONTINUE | |
148 | 40 CONTINUE | |
149 | 50 CONTINUE | |
150 | IF(KCHAR.EQ.0)THEN | |
151 | IF(IDINAM.EQ.2)THEN | |
152 | IF(JVSIM.EQ.2.AND.JSIM.EQ.1)CALL ICLWK(2) | |
153 | GOTO 110 | |
154 | ENDIF | |
155 | ELSE | |
156 | IF (IPICK.NE.0) THEN | |
157 | IF(JSIM.EQ.0.AND.JVSIM.EQ.2.AND.KACKT.EQ.0)THEN | |
158 | JSIM=1 | |
159 | CALL IOPWK(2,1,9) | |
160 | ENDIF | |
161 | IF(IDINAM.EQ.1)THEN | |
162 | CALL UHTOC(IQ(JAASS3+IPICK),4,NAME,4) | |
163 | CALL IDAWK(1) | |
164 | CALL IACWK(JVSIM) | |
165 | ELSEIF(IDINAM.EQ.2.AND.KXXX.NE.1)THEN | |
166 | CALL UHTOC(IQ(JNAM1+IPICK),4,NAME,4) | |
167 | ENDIF | |
168 | CALL ISELNT(1) | |
169 | * CALL ICLRWK(JVSIM,1) | |
170 | IF(KACKT.NE.0)CALL ICLRWK(0,0) | |
171 | IF(KACKT.EQ.0)THEN | |
172 | CALL IDAWK(1) | |
173 | CALL IACWK(JVSIM) | |
174 | CALL IGRNG(SAVPLX,SAVPLY) | |
175 | CALL ICLRWK(0,0) | |
176 | CALL GDSPEC(NAME) | |
177 | CALL IDAWK(JVSIM) | |
178 | CALL IACWK(1) | |
179 | IF(IDINAM.EQ.2.AND.JVSIM.EQ.1)THEN | |
180 | CALL IRQLC(1,1,KCHAR,NT,V0,U0) | |
181 | CALL ICLRWK(0,0) | |
182 | CALL ISELNT(1) | |
183 | INTFLA=1 | |
184 | CALL GDTREE(SAVSAN,0,110) | |
185 | INTFLA=-1 | |
186 | CALL GDTREE(SAVSAN,LSAVSA,111) | |
187 | ENDIF | |
188 | ELSEIF(KACKT.EQ.1)THEN | |
189 | IF(KXXX.EQ.1)KXXX=0 | |
190 | NUMNDA=NUMND1 | |
191 | NUMND1=NUMND2 | |
192 | NNNN=NAME | |
193 | IADDI=0 | |
194 | DO 81 JI=1,NUMND2 | |
195 | IQ(JNAM1+JI)=IQ(JFINAM+JI) | |
196 | IQ(JSCA1+JI)=IQ(JFISCA+JI) | |
197 | IQ(JMOT1+JI)=IQ(JFIMOT+JI) | |
198 | 81 CONTINUE | |
199 | IF(NAME.EQ.MOMO)GOTO 41 | |
200 | DO 91 II=1,16 | |
201 | CALL GDTR8(NAME,MOTH,IONL) | |
202 | IF(MOTH.EQ.MOMO)THEN | |
203 | IADDI=II | |
204 | GOTO 41 | |
205 | ENDIF | |
206 | NAME=MOTH | |
207 | 91 CONTINUE | |
208 | 41 CONTINUE | |
209 | NUMND1=NUMNDA | |
210 | NAME=NNNN | |
211 | INTFLA=1 | |
212 | CALL GDTREE(NAME,0,110) | |
213 | INTFLA=-1 | |
214 | IF(NNPAR.NE.3)THEN | |
215 | CALL GDTREE(NAME,IPLAC,111) | |
216 | ELSE | |
217 | CALL GDTREE(NAME,IPLAC,IISELT) | |
218 | GOTO 110 | |
219 | ENDIF | |
220 | IF(IDINAM.EQ.2.OR.KCHAR.EQ.2)THEN | |
221 | SAVSAN=NAME | |
222 | LSAVSA=IPLAC | |
223 | ENDIF | |
224 | ELSEIF(KACKT.EQ.-1)THEN | |
225 | NUMNDA=NUMND1 | |
226 | NUMND1=NUMND2 | |
227 | IADDI=0 | |
228 | DO 80 JII=1,NUMND2 | |
229 | IQ(JNAM1+JII)=IQ(JFINAM+JII) | |
230 | IQ(JSCA1+JII)=IQ(JFISCA+JII) | |
231 | IQ(JMOT1+JII)=IQ(JFIMOT+JII) | |
232 | 80 CONTINUE | |
233 | DO 90 II=1,IPLACS | |
234 | CALL GDTR8(NAME,MOTH,IONL) | |
235 | NAME=MOTH | |
236 | 90 CONTINUE | |
237 | NNNN=NAME | |
238 | IF(NAME.EQ.MOMO)GOTO 42 | |
239 | DO 92 II=1,16 | |
240 | CALL GDTR8(NAME,MOTH,IONL) | |
241 | IF(MOTH.EQ.MOMO)THEN | |
242 | IADDI=II | |
243 | GOTO 42 | |
244 | ENDIF | |
245 | NAME=MOTH | |
246 | 92 CONTINUE | |
247 | 42 CONTINUE | |
248 | NAME=NNNN | |
249 | NUMND1=NUMNDA | |
250 | INTFLA=1 | |
251 | CALL GDTREE(NAME,0,110) | |
252 | INTFLA=-1 | |
253 | CALL GDTREE(NAME,IPLAC,111) | |
254 | IF(IDINAM.EQ.2.OR.KCHAR.EQ.2)THEN | |
255 | SAVSAN=NAME | |
256 | LSAVSA=IPLAC | |
257 | ENDIF | |
258 | ENDIF | |
259 | CALL ISELNT(1) | |
260 | GO TO 20 | |
261 | ELSE | |
262 | GOTO 20 | |
263 | ENDIF | |
264 | ENDIF | |
265 | * | |
266 | 110 CONTINUE | |
267 | *************** CALL IGRNG(SAVPLX,SAVPLY) | |
268 | IF(JAASS1.NE.0) CALL MZDROP(IXSTOR, JAASS1, ' ') | |
269 | IF(JAASS2.NE.0) CALL MZDROP(IXSTOR, JAASS2, ' ') | |
270 | IF(JAASS3.NE.0) CALL MZDROP(IXSTOR, JAASS3, ' ') | |
271 | IF(JAASS4.NE.0) CALL MZDROP(IXSTOR, JAASS4, ' ') | |
272 | IF(JTICKS.NE.0) CALL MZDROP(IXSTOR, JTICKS, ' ') | |
273 | IF(JMYLLS.NE.0) CALL MZDROP(IXSTOR, JMYLLS, ' ') | |
274 | IF(JMYMOT.NE.0) CALL MZDROP(IXSTOR, JMYMOT, ' ') | |
275 | IF(JMYLL.NE.0) CALL MZDROP(IXSTOR, JMYLL, ' ') | |
276 | IF(JTICK.NE.0) CALL MZDROP(IXSTOR, JTICK, ' ') | |
277 | IF(JFIMOT.NE.0) CALL MZDROP(IXSTOR, JFIMOT, ' ') | |
278 | IF(JFISCA.NE.0) CALL MZDROP(IXSTOR, JFISCA, ' ') | |
279 | IF(JFINAM.NE.0) CALL MZDROP(IXSTOR, JFINAM, ' ') | |
280 | LARETT(1)=0 | |
281 | 999 END |