]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/ggeom/gsnext.F
Allow any Cherenkov-like particle to be transported
[u/mrichter/AliRoot.git] / GEANT321 / ggeom / gsnext.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:56 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.30 by S.Giani
11*-- Author :
12 SUBROUTINE GSNEXT (MOTHER,IN,NLIST,LIST)
13C.
14C. ******************************************************************
15C. * *
16C. * Gives an ordered LIST of NLIST daughter volumes to search *
17C. * for when leaving the INth daughter of the volume MOTHER *
18C. * *
19C. * Default facility : *
20C. * If IN = 0, for each content in turn, GSNEXT builds a *
21C. * LIST limited to next (if any), previous (if any) and *
22C. * current content *
23C. * *
24C. * Called by : 'USER' *
25C. * Author : F.Bruyant ********* *
26C. * *
27C. ******************************************************************
28C.
29#include "geant321/gcbank.inc"
30#include "geant321/gcunit.inc"
31#include "geant321/gcnum.inc"
32 CHARACTER*4 MOTHER
33 DIMENSION LIST(*)
34C. ------------------------------------------------------------------
35*
36 IVO = 0
37 IF (JVOLUM.GT.0) CALL GLOOK (MOTHER, IQ(JVOLUM+1), NVOLUM, IVO)
38 IF (IVO.EQ.0) THEN
39 WRITE (CHMAIL, 1001)
40 CALL GMAIL (0, 0)
41 GO TO 999
42 ENDIF
43*
44* *** Check that volume MOTHER has contents positioned by GSPOS or
45* GSPOSP, and not ordered by User
46*
47 JVO = LQ(JVOLUM-IVO)
48 ISEARC = Q(JVO+1)
49 NIN = Q(JVO+3)
50 IF (NIN.LE.0.OR.ISEARC.GT.0) THEN
51 WRITE (CHMAIL, 1002)
52 CALL GMAIL (0, 0)
53 GO TO 999
54 ENDIF
55*
56 IF (IN.GT.0) THEN
57*
58* *** Lift a JNEAR bank for current content
59*
60 JIN = LQ(JVO-IN)
61 CALL MZBOOK (IXCONS, JNEAR,JIN,-1,'VONE', 0,0,NLIST+1, 2,0)
62 IQ(JNEAR-5) = 100*IVO +IN
63 NVOLST = 0
64 DO 19 I = 1,NLIST
65 IF(LIST(I).GT.NIN.OR.LIST(I).LT.0) THEN
66 WRITE(CHMAIL,1003) IQ(JVOLUM+IVO),I,LIST(I),NIN
67 CALL GMAIL(0,0)
68 ELSE
69 DO 20 J=1, NVOLST
70 IF(IQ(JNEAR+1+J).EQ.LIST(I)) THEN
71 WRITE(CHMAIL,1004) IQ(JVOLUM+IVO), LIST(I)
72 CALL GMAIL(0,0)
73 GOTO 19
74 ENDIF
75 20 CONTINUE
76 NVOLST = NVOLST+1
77 IQ(JNEAR+NVOLST+1) = LIST(I)
78 ENDIF
79 19 CONTINUE
80 IQ(JNEAR+1) = NVOLST
81 IF(NVOLST.LT.NLIST) THEN
82 CALL MZPUSH (IXCONS, JNEAR, 0, NVOLST-NLIST, 'R')
83 ENDIF
84*
85 ELSE IF (IN.EQ.0) THEN
86*
87* *** Default option for all contents
88*
89 DO 49 I = 1,NIN
90 JIN = LQ(JVO-I)
91 IF (LQ(JIN-1).NE.0) GO TO 49
92 N = 3
93 IF (I.EQ.1.OR.I.EQ.NIN) N = 2
94 CALL MZBOOK (IXCONS, JNEAR,JIN,-1,'VONE',0,0,N+1, 2,0)
95 IQ(JNEAR-5) = 100*IVO+I
96 JVO = LQ(JVOLUM-IVO)
97 IQ(JNEAR+1) = N
98 IQ(JNEAR+N+1) = I
99 IF (I.NE.1) GO TO 41
100 IQ(JNEAR+N) = I +1
101 GO TO 49
102 41 IF (I.NE.NIN) GO TO 42
103 IQ(JNEAR+N) = I -1
104 GO TO 49
105 42 IQ(JNEAR+N) = I +1
106 IQ(JNEAR+N-1) = I -1
107 49 CONTINUE
108*
109 ENDIF
110*
111 1001 FORMAT (' GSNEXT : Volume',A4,' does not exist *****')
112 1002 FORMAT (' GSNEXT : Volume',A4,' not a candidate for GSNEXT *****')
113 1003 FORMAT (' GSNEXT : Volume ',A4,': LIST(',I3,')=',I3,
114 + ' NIN=',I3,' value ignored')
115 1004 FORMAT (' GSNEXT : Volume',A4,': repetition of content ',
116 + I3,' ignored')
117* END GSNEXT
118 999 END