Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / erdecks / evolio.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/03/06 15:37:35  mclareni
6 * Add geane321 source directories
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.49  by  S.Giani
11 *-- Author :
12       SUBROUTINE EVOLIO (NVLIN,NAMIN,NUMIN,NVLOUT,NAMOUT,NUMOUT)
13 *
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *    Called with INWVOL=2 this routine save the volume's tree    *
17 C.    *                                                                *
18 C.    *    Called with INWVOL=1 this routine returns                   *
19 C.    *             - the list of volumes (and number) left            *
20 C.    *             - the list of volumes (and number) entered         *
21 C.    *                                                                *
22 C.    *    ==>Called by : ERTRGO                                       *
23 C.    *       Author    M.Maire  *********                             *
24 C.    *                                                                *
25 C.    ******************************************************************
26 C.
27 #include "geant321/gcvolu.inc"
28 #include "geant321/gctrak.inc"
29 *
30       PARAMETER (NVMX=15)
31       COMMON/OLDTRE/NLVOLD,NAMOLD(NVMX),NUMOLD(NVMX),IOFLAG(NVMX),KONLY
32 *
33       DIMENSION NAMIN(NVMX),NUMIN(NVMX),NAMOUT(NVMX),NUMOUT(NVMX)
34 *
35 *
36       NVLOUT = 0
37       NVLIN  = 0
38       IF(INWVOL.EQ.0) RETURN
39       IF(NLEVEL.EQ.0) RETURN
40 *
41 * *** Save the tree when leaving a volume
42 *
43       IF(INWVOL.EQ.2) THEN
44          NLVOLD = NLEVEL
45          KONLY  = 1
46          DO 1 ILV =1,NLEVEL
47            NAMOLD(ILV) = NAMES (ILV)
48            NUMOLD(ILV) = NUMBER(ILV)
49            IOFLAG(ILV) = 2
50            IF(GONLY(ILV).NE.1.) KONLY = 0
51     1    CONTINUE
52          RETURN
53       ENDIF
54 *
55 * *** Entering in a new volume : compare the trees
56 *
57       IF(INWVOL.NE.1) RETURN
58 *
59 * *** Simplest case : old tree is 'ONLY'
60 *
61       IF(KONLY.EQ.1) THEN
62         NLMIN = MIN(NLEVEL,NLVOLD)
63         NL    = 0
64    10   NL    = NL + 1
65         IF(NL.GT.NLMIN) GO TO 12
66         IF((NAMES (NL).EQ.NAMOLD(NL)).AND.
67      *     (NUMBER(NL).EQ.NUMOLD(NL))) GO TO 10
68 *
69    12   CONTINUE
70         IF(NL.LE.NLVOLD) THEN
71           DO 14 IL = NL,NLVOLD
72             NVLOUT = NVLOUT + 1
73             NAMOUT(NVLOUT) = NAMOLD(IL)
74             NUMOUT(NVLOUT) = NUMOLD(IL)
75    14     CONTINUE
76         ENDIF
77 *
78         IF(NL.LE.NLEVEL) THEN
79           DO 16 IL = NL,NLEVEL
80             NVLIN  = NVLIN  + 1
81             NAMIN (NVLIN ) = NAMES (IL)
82             NUMIN (NVLIN ) = NUMBER(IL)
83    16     CONTINUE
84         ENDIF
85 *
86         RETURN
87       ENDIF
88 *
89 * *** Special case for 'NOT ONLY' volumes
90 *
91       IF(KONLY.EQ.0) THEN
92          DO 24 IL1 = 1,NLEVEL
93            DO 22 IL2 = 1,NLVOLD
94               IF((NAMES (IL1).EQ.NAMOLD(IL2)).AND.
95      *           (NUMBER(IL1).EQ.NUMOLD(IL2))) THEN
96                    IOFLAG(IL2) = 0
97                    GO TO 24
98               ENDIF
99    22      CONTINUE
100            NVLIN  = NVLIN  + 1
101            NAMIN (NVLIN ) = NAMES (IL1)
102            NUMIN (NVLIN ) = NUMBER(IL1)
103    24    CONTINUE
104 *
105          DO 26 IL2 = 1,NLVOLD
106            IF(IOFLAG(IL2).EQ.0) GO TO 26
107            NVLOUT = NVLOUT + 1
108            NAMOUT(NVLOUT) = NAMOLD(IL2)
109            NUMOUT(NVLOUT) = NUMOLD(IL2)
110    26    CONTINUE
111 *
112       ENDIF
113 *
114       END