]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/ggeom/ginme.F
Minor corrections after big transformer changes
[u/mrichter/AliRoot.git] / GEANT321 / ggeom / ginme.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:50 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.29 by S.Giani
11*-- Author :
12 SUBROUTINE GINME(X,SH,P,IYES)
13C.
14C.
15C. ******************************************************************
16C. * *
17C. * SUBROUTINE TO COMPUTE WHETHER THE POINT X IS IN THE SHAPE *
18C. * NUMBER SH WITH PARAMETERS P. *
19C. * IYES IS SET TO 1 IF SO; TO ZERO IF NOT. *
20C. * *
21C. * ==>Called by : GFTRAC, GINVOL, GMEDIA, GMEPOS, GSTRAC, *
22C. * GTMEDI *
23C. * Author A.McPherson ********* *
24C. * *
25C. ******************************************************************
26C.
27#include "geant321/gcunit.inc"
28#include "geant321/gconsp.inc"
29#include "geant321/gcshno.inc"
30#if defined(CERNLIB_USRJMP)
31#include "geant321/gcjump.inc"
32#endif
33 DIMENSION X(3),P(*)
34C.
35C. ------------------------------------------------------------------
36C.
37 IYES=0
38 ISH=SH
39*
40 IF(ISH.EQ.5) THEN
41*
42* Tube axis = Z axis
43 IF (ABS(X(3)).GT.P(3)) GO TO 999
44 R2=X(1)**2+X(2)**2
45 IF(R2.LT.P(1)**2) GO TO 999
46 IF(R2.GT.P(2)**2) GO TO 999
47 IYES=1
48*
49 ELSEIF(ISH.EQ.6) THEN
50*
51* Tube segment
52 IF (ABS(X(3)).GT.P(3)) GO TO 999
53 R2=X(1)**2+X(2)**2
54 IF(R2.LT.P(1)**2) GO TO 999
55 IF(R2.GT.P(2)**2) GO TO 999
56 IYES=1
57 IF (R2.LT.1.0E - 6) GO TO 999
58 IYES=0
59 PHI = ATAN2(X(2),X(1)) * RADDEG
60 DP=P(5)-P(4)
61 IF(DP.LE.0.0) DP=DP+360.0
62 DDP=PHI-P(4)
63 SG = SIGN(1.0,DDP)
64 DDP = MOD( ABS(DDP), 360. )
65 IF(SG.LE.0.) DDP = 360.-DDP
66 IF(DDP.GT.DP) GO TO 999
67 IYES=1
68*
69 ELSEIF(ISH.EQ.1) THEN
70*
71* Rectilinear box
72 IF (ABS(X(1)).GT.P(1)) GO TO 999
73 IF (ABS(X(2)).GT.P(2)) GO TO 999
74 IF (ABS(X(3)).GT.P(3)) GO TO 999
75 IYES=1
76*
77 ELSEIF(ISH.EQ.2) THEN
78*
79* Rectilinear trapezoidal section with only the X
80* thickness changing with z
81 DZ =P(4)
82 IF (ABS(X(3)).GT.DZ) GO TO 999
83 DY = P(3)
84 IF (ABS(X(2)).GT.DY) GO TO 999
85 DX =0.5*(P(2)*(X(3)+DZ)+P(1)*(DZ-X(3)))/DZ
86 IF (ABS(X(1)).GT.DX) GO TO 999
87 IYES=1
88*
89 ELSEIF(ISH.EQ.3) THEN
90*
91* Rectilinear trapezoidal section with both X and Y
92* thicknesses varying with Z
93 DZ =P(5)
94 IF (ABS(X(3)).GT.DZ) GO TO 999
95 DX =0.5*(P(2)*(X(3)+DZ)+P(1)*(DZ-X(3)))/DZ
96 IF (ABS(X(1)).GT.DX) GO TO 999
97 DY = 0.5*(P(4)*(X(3)+DZ)+P(3)*(DZ-X(3)))/DZ
98 IF (ABS(X(2)).GT.DY) GO TO 999
99 IYES=1
100*
101 ELSEIF(ISH.EQ.9) THEN
102*
103* Spherical segment
104 R2 = X(1)**2 + X(2)**2 + X(3)**2
105 IF (R2.LT.P(1)**2.OR.R2.GT.P(2)**2) GO TO 999
106 IYES=1
107 IF (R2.LT.1.0E -12) GO TO 999
108 IYES=0
109 IF (X(1).EQ.0..AND.X(2).EQ.0.) THEN
110 PHI = 0.
111 ELSE
112 PHI = ATAN2(X(2),X(1))*RADDEG
113 ENDIF
114 DP=P(6)-P(5)
115 IF(DP.LE.0.0) DP=DP+360.0
116 DDP=PHI-P(5)
117 SG = SIGN(1.0,DDP)
118 DDP = MOD( ABS(DDP), 360. )
119 IF(SG.LE.0.) DDP = 360.-DDP
120 IF(DDP.GT.DP) GO TO 999
121 R2 = X(1)**2 + X(2)**2
122 IF(R2.GT.0.0) R2=SQRT(R2)
123 THETA = ATAN2(R2,X(3)) * RADDEG
124 IF (THETA.LT.P(3).OR.THETA.GT.P(4)) GO TO 999
125 IYES=1
126*
127 ELSEIF(ISH.EQ.4) THEN
128*
129* General trapezoidal section
130 CALL GINTRP(X,P,IYES)
131*
132 ELSEIF(ISH.EQ.7) THEN
133*
134* Conical tube
135 DZ =P(1)
136 IF (ABS(X(3)).GT.DZ) GO TO 999
137 R2 =X(1)**2 + X(2)**2
138 RL = 0.5*(P(4)*(X(3)+DZ)+P(2)*(DZ-X(3)))/DZ
139 RH = 0.5*(P(5)*(X(3)+DZ)+P(3)*(DZ-X(3)))/DZ
140 IF (R2.LT.RL**2.OR.R2.GT.RH**2) GO TO 999
141 IYES=1
142*
143 ELSEIF(ISH.EQ.8) THEN
144*
145* Conical tube segment
146 DZ =P(1)
147 IF (ABS(X(3)).GT.DZ) GO TO 999
148 R2 =X(1)**2 + X(2)**2
149 RL = 0.5*(P(4)*(X(3)+DZ)+P(2)*(DZ-X(3)))/DZ
150 RH = 0.5*(P(5)*(X(3)+DZ)+P(3)*(DZ-X(3)))/DZ
151 IF (R2.LT.RL**2.OR.R2.GT.RH**2) GO TO 999
152 IYES=1
153 IF (R2.LT.1.0E - 6) GO TO 999
154 IYES=0
155 PHI = ATAN2(X(2),X(1)) * RADDEG
156 DP=P(7)-P(6)
157 IF(DP.LE.0.0) DP=DP+360.0
158 DDP=PHI-P(6)
159 SG = SIGN(1.0,DDP)
160 DDP = MOD( ABS(DDP), 360. )
161 IF(SG.LE.0.) DDP = 360.-DDP
162 IF(DDP.GT.DP) GO TO 999
163 IYES=1
164*
165 ELSEIF(ISH.EQ.10) THEN
166*
167* Parallelepiped
168 CALL GINPAR(X,P,IYES)
169*
170 ELSEIF(ISH.EQ.11) THEN
171*
172* Polygon
173 CALL GINPGO(X,P,IYES)
174*
175 ELSEIF(ISH.EQ.12) THEN
176*
177* Polycone
178 CALL GINPCO(X,P,IYES)
179*
180 ELSEIF (ISH.EQ.13) THEN
181*
182* Elliptical tube
183 IF (ABS(X(3)).GT.P(3)) GOTO 999
184 A2=P(1)**2
185 B2=P(2)**2
186 R2=X(1)**2/A2+X(2)**2/B2
187 IF (R2.GT.1.0) GOTO 999
188 IYES=1
189*
190 ELSEIF(ISH.EQ.14) THEN
191*
192* HYPErboloid axis = Z axis.
193 IF (ABS(X(3)) .GT. P(3)) GO TO 999
194 R2 = X(1)**2 + X(2)**2
195 DR2 = (X(3) * TAN(P(4)*DEGRAD))**2
196 IF (R2 .LT. P(1)**2 + DR2) GO TO 999
197 IF (R2 .GT. P(2)**2 + DR2) GO TO 999
198 IYES=1
199*
200 ELSEIF(ISH.EQ.28) THEN
201*
202* General twisted trapezoid.
203 CALL GINGTR(X,P,IYES)
204*
205 ELSEIF( ISH.EQ.NSCTUB) THEN
206*
207* Cut tube.
208 CALL GINCTU(X,P,IYES)
209*
210 ELSE
211*
212* User shape ?
213#if !defined(CERNLIB_USRJMP)
214 CALL GUINME(X,SH,P,IYES)
215#endif
216#if defined(CERNLIB_USRJMP)
217 CALL JUMPT4(JUINME,X,SH,P,IYES)
218#endif
219*
220 IF(IYES.LT.0) THEN
221*
222* Shape number not supported by system nor by user
223 WRITE(CHMAIL,10000) ISH
224 CALL GMAIL(0,0)
225 ENDIF
226 ENDIF
227*
22810000 FORMAT(' *** GINME *** Shape number ',I5,' not yet implemented')
229 999 END