]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gdraw/gdcut.F
Remove fTree from destructor
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdcut.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:22 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 SUBROUTINE GDCUT
13C.
14C. ******************************************************************
15C. * *
16C. * Draw the 4 lines obtained by the intersection *
17C. * of the cut plane (at point DCUT along axis ICUT) and *
18C. * the NSURF surfaces stored in vector SURF. *
19C. * DCUT, ICUT, NSURF, SURF are in common block GCDRAW. *
20C. * *
21C. * ==>Called by : GDRWSC, GDSSUR *
22C. * Author : P.Zanarini ********* *
23C. * *
24C. ******************************************************************
25C.
26#include "geant321/gcbank.inc"
27#include "geant321/gcdraw.inc"
28 DIMENSION SURF(2)
29 EQUIVALENCE (WS(1),SURF(1))
30 DIMENSION P(3,2),U(2),V(2),XI(2),YI(2),ZI(2),PL(3),PR(3)
31 EQUIVALENCE (PL(1),XL),(PL(2),YL),(PL(3),ZL)
32 EQUIVALENCE (PR(1),XR),(PR(2),YR),(PR(3),ZR)
33C
34 SAVE EPS,ICUT3
35 DATA EPS/0.00001/
36C.
37C. ------------------------------------------------------------------
38C.
39C Let be L(XL,YL,ZL) and R(XR,YR,ZR) the extreme points of a line,
40C I(XI,YI,ZI) the intersection point between the line and
41C the cut-plane (for example Z=C, i.e. the plane normal to Z axis).
42C Then we have:
43C
44C
45C (XR-XL) (XR-XL)
46C XI = XL + (ZI-ZL) ------- = XL + (C-ZL) -------
47C (ZR-ZL) (ZR-ZL)
48C
49C
50C (YR-YL) (YR-YL)
51C YI = YL + (XI-XL) ------- = YL + (C-XL) -------
52C (XR-XL) (XR-XL)
53C
54C
55C ZI = C
56C
57C
58C Then we have two cases:
59C
60C 1. ZL <= ZI <= ZR
61C i.e. the cut-plane intersects the line at I(XI,YI,ZI) :
62C a line is drawn between that point and next one
63C
64C 2. ZL = ZR
65C i.e. the line is parallel to (or into) the cut-plane :
66C any line is drawn
67C
68C
69 IF (NSURF.EQ.0) GO TO 80
70C
71 IF (ICUT.EQ.0) THEN
72 ICUT3=3
73 ICUT=3
74 ELSE
75 ICUT3=0
76 ENDIF
77C
78 IF (ICUT.LT.1.OR.ICUT.GT.3) GO TO 80
79C
80 DO 70 I=1,NSURF
81C
82 ISTART=12*(I-1)+1
83 J=0
84C
85 DO 40 L=1,4
86C
87 IL=ISTART+(L-1)*3
88 IR=IL+3
89 IF (L.EQ.4) IR=ISTART
90 XL=SURF(IL)
91 YL=SURF(IL+1)
92 ZL=SURF(IL+2)
93 XR=SURF(IR)
94 YR=SURF(IR+1)
95 ZR=SURF(IR+2)
96C
97 IF (ICUT3.GT.0) THEN
98C
99C Transform PL and PR to have Z-axis = line of sight CTHETA,
100C
101 SAVTHE=GTHETA
102 SAVPHI=GPHI
103 GTHETA=CTHETA
104 GPHI=CPHI
105 NGVIEW=0
106 CALL GD3D3D(PL,-1,PL,0)
107 CALL GD3D3D(PR,-1,PR,0)
108 GTHETA=SAVTHE
109 GPHI=SAVPHI
110 NGVIEW=0
111C
112 ENDIF
113C
114C Is the line parallel to the cut-plane ?
115C
116 IF ((PL(ICUT).GE.PR(ICUT)-EPS).AND.(PL(ICUT).LE.PR(ICUT)+
117 + EPS)) GO TO 40
118C
119C No, it isn't
120C
121 AMX=MAX(PL(ICUT),PR(ICUT))
122 AMN=MIN(PL(ICUT),PR(ICUT))
123 IF ((DCUT.LT.AMN).OR.(DCUT.GT.AMX)) GO TO 40
124C
125 J=J+1
126C
127 IF (ICUT.NE.3) GO TO 10
128 XI(J)=XL+(DCUT-ZL)*(XR-XL)/(ZR-ZL)
129 YI(J)=YL+(DCUT-ZL)*(YR-YL)/(ZR-ZL)
130 ZI(J)=DCUT
131 GO TO 30
132C
133 10 IF (ICUT.NE.1) GO TO 20
134 XI(J)=DCUT
135 YI(J)=YL+(DCUT-XL)*(YR-YL)/(XR-XL)
136 ZI(J)=ZL+(DCUT-XL)*(ZR-ZL)/(XR-XL)
137 GO TO 30
138C
139 20 CONTINUE
140 XI(J)=XL+(DCUT-YL)*(XR-XL)/(YR-YL)
141 YI(J)=DCUT
142 ZI(J)=ZL+(DCUT-YL)*(ZR-ZL)/(YR-YL)
143C
144 30 IF (J.EQ.2) GO TO 50
145C
146 40 CONTINUE
147C
148 IF (J.LT.2) GO TO 70
149C
150 50 CONTINUE
151 DO 60 IND=1,2
152 P(1,IND)=XI(IND)
153 P(2,IND)=YI(IND)
154 P(3,IND)=ZI(IND)
155 60 CONTINUE
156C
157 IF (ICUT3.GT.0) THEN
158C
159C Transform back P
160C
161 SAVTHE=GTHETA
162 SAVPHI=GPHI
163 GTHETA=CTHETA
164 GPHI=CPHI
165 NGVIEW=0
166 CALL GD3D3D(P(1,1),-2,P(1,1),1)
167 GTHETA=SAVTHE
168 GPHI=SAVPHI
169 NGVIEW=0
170C
171 ENDIF
172C
173C Points are now in general reference system
174C
175 CALL GDFR3D(P,-2,U,V)
176C
177CM Short circuit in case of GMR
178C
179 IF ( IGMR .EQ. 0 ) CALL GDRAWV(U,V,2)
180CM
181 70 CONTINUE
182C
183 80 CONTINUE
184C
185 IF (ICUT3.GT.0) THEN
186 ICUT3=0
187 ICUT=0
188 ENDIF
189C
190 NSURF=0
191 ISURF=1
192C
193 END