]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 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 |