]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gdraw/gdplst.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdplst.F
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