]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gdraw/gdshif.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdshif.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:20:28  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.27  by  S.Giani
11 *-- Author :
12 *
13       SUBROUTINE GDSHIF(IVOLNA,ICPOIN)
14 *
15 *     This subroutine allows to shift volumes in a more visible
16 *     place just for drawing, without alterating the data structure,
17 *     but perfectly simulating it.
18 *
19 #include "geant321/gcbank.inc"
20 #include "geant321/gcunit.inc"
21 #include "geant321/gcvolu.inc"
22 #include "geant321/gcgobj.inc"
23 *SG
24 #include "geant321/gcmutr.inc"
25 #include "geant321/gcdraw.inc"
26 #include "geant321/gchiln.inc"
27 #include "geant321/gcspee.inc"
28 *SG
29       COMMON /QUEST/IQUEST(100)
30 *SG
31       SAVE IOLDVO
32       DATA IOLDVO/0/
33 *
34 *    Shifting object
35          IF(KSHIFT.EQ.2)THEN
36            DO 333 IJ=1,100
37              IF(IVOLNA.EQ.IVECVO(IJ))GOTO 554
38              IF(IVECVO(IJ).EQ.0)THEN
39                IVECVO(IJ)=IVOLNA
40                GOTO 334
41              ENDIF
42  333       CONTINUE
43          ENDIF
44  334     CONTINUE
45          IF(KSHIFT.GT.0)THEN
46             IF(ISUBLI.EQ.1.AND.NIET.EQ.1)THEN
47              NIET=1
48              CALL CGSHIF(PORGX,PORGY,PORGZ,
49      +       Q(ICPOIN))
50              IF(IVOLNA.EQ.IOLDVO)GOTO 554
51              GOTO 54
52             ENDIF
53             IF(ISUBLI.EQ.1.AND.NIET.EQ.2.AND.IVOOLD.NE.0)THEN
54              NIET=1
55              IF(IVOLNA.EQ.IOLDVO)THEN
56               CALL CGSHIF(PORGX,PORGY,PORGZ,
57      +        Q(ICPOIN))
58               GOTO 554
59              ENDIF
60              DO 77 I=1,15
61             IF((NLEVEL-I).GT.0)THEN
62              IF(POX(NLEVEL-I).NE.0.OR.POY(NLEVEL-I).NE.0.OR.
63      +       POZ(NLEVEL-I).NE.0)THEN
64               PORGX=POX(NLEVEL-I)
65               PORGY=POY(NLEVEL-I)
66               PORGZ=POZ(NLEVEL-I)
67               GOTO 777
68              ENDIF
69             ELSE
70                PORGX=0.
71                PORGY=0.
72                PORGZ=0.
73                POX(NLEVEL)=0.
74                POY(NLEVEL)=0.
75                POZ(NLEVEL)=0.
76                GOTO 777
77             ENDIF
78  77          CONTINUE
79  777         CONTINUE
80              CALL CGSHIF(PORGX,PORGY,PORGZ,
81      +       Q(ICPOIN))
82              GOTO 54
83             ENDIF
84              IF(NIET.EQ.0.AND.IVOLNA.EQ.IOLDVO)GOTO 554
85              NIET=0
86  54          CONTINUE
87              DO 553 KHHH=MULTRA,1,-1
88                 CALL UCTOH(GNVNV(KHHH),IVN,4,4)
89                 IF(IVN.EQ.IVOLNA)THEN
90                    NIET=1
91                    CALL CGSHIF(GXXXX(KHHH),GYYYY(KHHH),GZZZZ(KHHH),
92      +             Q(ICPOIN))
93                    IF(IVOLNA.NE.IOLDVO)THEN
94                     POX(NLEVEL)=PORGX+GXXXX(KHHH)
95                     POY(NLEVEL)=PORGY+GYYYY(KHHH)
96                     POZ(NLEVEL)=PORGZ+GZZZZ(KHHH)
97                     PORGX=PORGX+GXXXX(KHHH)
98                     PORGY=PORGY+GYYYY(KHHH)
99                     PORGZ=PORGZ+GZZZZ(KHHH)
100                    ENDIF
101                    IVOOLD=IVOLNA
102                    IOLDVO=IVOLNA
103                    GOTO 554
104                 ENDIF
105   553        CONTINUE
106              IOLDVO=IVOLNA
107          ENDIF
108   554    CONTINUE
109   999    END
110  
111