]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/cgpack/cgelli.F
Minor corrections after big transformer changes
[u/mrichter/AliRoot.git] / GEANT321 / cgpack / cgelli.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:19:42 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.31 by S.Giani
11*-- Author :
12 SUBROUTINE CGELLI(RX,RY,RZ,KA,KB,LCG,CG)
13************************************************************************
14* *
15* Name: CGELLI *
16* Author: E. Chernyaev Date: 24.01.89 *
17* Revised: *
18* *
19* Function: Create CG-object for ELLIPSOID *
20* *
21* References: CGSIZE, CGSNOR *
22* *
23* Input: RX - 1-st radius *
24* RY - 2-nd radius *
25* RZ - 3-rd radius *
26* KA - number of latitude step *
27* KB - number of longitude step *
28* LCG - max-size of CG-object *
29* *
30* Output: CG - CG-object *
31* CG(1) - length of CG-object *
32* = 0 if error in parameters *
33* < 0 if no space *
34* *
35* Errors: none *
36* *
37************************************************************************
38#include "geant321/cggpar.inc"
39 REAL CG(*)
40 INTEGER NFAC(2),NEDG(2)
41*-
42 CG(KCGSIZ) = 0.
43* T E S T P A R A M E T E R S C O R R E C T N E S S
44 IF (RX .LE. 0.) GOTO 999
45 IF (RY .LE. 0.) GOTO 999
46 IF (RZ .LE. 0.) GOTO 999
47 IF (KA .LT. 3) GOTO 999
48 IF (KB .LT. 2) GOTO 999
49* C O M P U T E S I Z E O F C G - O B J E C T
50 NFATYP = 2
51 NFAC(1)= 2 * KA
52 NEDG(1)= 3
53 NFAC(2)= (KB - 2) * KA
54 NEDG(2)= 4
55 CG(KCGSIZ) = CGSIZE(LCG,NFATYP,NFAC,NEDG)
56 IF (CG(KCGSIZ) .LE. 0.) GOTO 999
57*
58** C R E A T E C G - O B J E C T F O R E L L I P S O I D
59*
60 CG(KCGATT) = 0.
61 CG(KCGNF) = NFAC(1) + NFAC(2)
62 PI = ATAN(1.) * 4.
63 DA = (PI+PI) / KA
64 DB = PI / KB
65 JCOSB = CG(KCGSIZ) - 2*(KB+KA) - 4
66 JSINB = JCOSB + KB + 1
67 JCOSA = JSINB + KB + 1
68 JSINA = JCOSA + KA + 1
69* P R E P A R E W O R K T A B L E
70 A = 0.
71 B = 0.
72 JA = 0
73 JB = 0
74 100 CG(JCOSA+JA) = COS(A)
75 CG(JCOSA+KA-JA) = CG(JCOSA+JA)
76 CG(JSINA+JA) = SIN(A)
77 CG(JSINA+KA-JA) =-CG(JSINA+JA)
78 JA = JA + 1
79 A = A + DA
80 IF (KA-JA-JA) 200,110,100
81 110 CG(JCOSA+JA) =-1.
82 CG(JSINA+JA) = 0.
83*
84 200 CG(JCOSB+JB) = COS(B)
85 CG(JCOSB+KB-JB) =-CG(JCOSB+JB)
86 CG(JSINB+JB) = SIN(B)
87 CG(JSINB+KB-JB) = CG(JSINB+JB)
88 JB = JB + 1
89 B = B + DB
90 IF (KB-JB-JB) 300,210,200
91 210 CG(JCOSB+JB) = 0.
92 CG(JSINB+JB) = 1.
93* C R E A T E U P P E R H A L F O F E L L I P S O I D
94 300 JCG = LCGHEA
95 NB = KB - KB/2
96 DO 500 JB=1,NB
97 Z1 = RZ*CG(JCOSB+JB-1)
98 Z2 = RZ*CG(JCOSB+JB)
99 X4 = RX*CG(JSINB+JB-1)
100 X3 = RX*CG(JSINB+JB)
101 Y4 = 0.
102 Y3 = 0.
103 DO 400 JA=1,KA
104 CG(JCG+KCGAF) = 0.
105 JCGNE = JCG + KCGNE
106 JCG = JCG + LCGFAC
107 X1 = X4
108 X2 = X3
109 X3 = RX*CG(JSINB+JB) * CG(JCOSA+JA)
110 X4 = RX*CG(JSINB+JB-1) * CG(JCOSA+JA)
111 Y1 = Y4
112 Y2 = Y3
113 Y3 = RY*CG(JSINB+JB) * CG(JSINA+JA)
114 Y4 = RY*CG(JSINB+JB-1) * CG(JSINA+JA)
115 CG(JCG+KCGAE) =-1.
116 CG(JCG+KCGX1) = X1
117 CG(JCG+KCGY1) = Y1
118 CG(JCG+KCGZ1) = Z1
119 CG(JCG+KCGX2) = X2
120 CG(JCG+KCGY2) = Y2
121 CG(JCG+KCGZ2) = Z2
122*
123 CG(JCG+LCGEDG+KCGAE) =-1.
124 CG(JCG+LCGEDG+KCGX1) = X2
125 CG(JCG+LCGEDG+KCGY1) = Y2
126 CG(JCG+LCGEDG+KCGZ1) = Z2
127 CG(JCG+LCGEDG+KCGX2) = X3
128 CG(JCG+LCGEDG+KCGY2) = Y3
129 CG(JCG+LCGEDG+KCGZ2) = Z2
130*
131 CG(JCG+LCGEDG+LCGEDG+KCGAE) =-1.
132 CG(JCG+LCGEDG+LCGEDG+KCGX1) = X3
133 CG(JCG+LCGEDG+LCGEDG+KCGY1) = Y3
134 CG(JCG+LCGEDG+LCGEDG+KCGZ1) = Z2
135 CG(JCG+LCGEDG+LCGEDG+KCGX2) = X4
136 CG(JCG+LCGEDG+LCGEDG+KCGY2) = Y4
137 CG(JCG+LCGEDG+LCGEDG+KCGZ2) = Z1
138 NE = 3
139 IF(X1.EQ.X4 .AND. Y1.EQ.Y4) GOTO 350
140 NE = 4
141 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGAE) =-1.
142 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGX1) = X4
143 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGY1) = Y4
144 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGZ1) = Z1
145 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGX2) = X1
146 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGY2) = Y1
147 CG(JCG+LCGEDG+LCGEDG+LCGEDG+KCGZ2) = Z1
148 350 JCG = JCG + NE*LCGEDG
149 CG(JCGNE) = NE
150 400 CONTINUE
151 500 CONTINUE
152* C R E A T E L O W E R H A L F O F E L L I P S O I D
153 JSTOP = JCG
154 JCGUP = LCGHEA
155 JCGLOW = CG(KCGSIZ)
156 600 NE = CG(JCGUP+KCGNE)
157 JCGLOW = JCGLOW - LCGFAC - NE*LCGEDG
158 IF (JCGLOW .LT. JSTOP) GOTO 999
159 CG(JCGLOW+KCGAF) = CG(JCGUP+KCGAF)
160 CG(JCGLOW+KCGNE) = NE
161 JL = JCGLOW + LCGFAC
162 JU = JCGUP + LCGFAC
163*
164 CG(JL+KCGAE) = CG(JU+KCGAE)
165 CG(JL+KCGX1) = CG(JU+KCGX2)
166 CG(JL+KCGY1) = CG(JU+KCGY2)
167 CG(JL+KCGZ1) =-CG(JU+KCGZ2)
168 CG(JL+KCGX2) = CG(JU+KCGX1)
169 CG(JL+KCGY2) = CG(JU+KCGY1)
170 CG(JL+KCGZ2) =-CG(JU+KCGZ1)
171 JU = JU + (NE-1)*LCGEDG
172*
173 CG(JL+LCGEDG+KCGAE) = CG(JU+KCGAE)
174 CG(JL+LCGEDG+KCGX1) = CG(JU+KCGX2)
175 CG(JL+LCGEDG+KCGY1) = CG(JU+KCGY2)
176 CG(JL+LCGEDG+KCGZ1) =-CG(JU+KCGZ2)
177 CG(JL+LCGEDG+KCGX2) = CG(JU+KCGX1)
178 CG(JL+LCGEDG+KCGY2) = CG(JU+KCGY1)
179 CG(JL+LCGEDG+KCGZ2) =-CG(JU+KCGZ1)
180*
181 CG(JL+LCGEDG+LCGEDG+KCGAE) = CG(JU-LCGEDG+KCGAE)
182 CG(JL+LCGEDG+LCGEDG+KCGX1) = CG(JU-LCGEDG+KCGX2)
183 CG(JL+LCGEDG+LCGEDG+KCGY1) = CG(JU-LCGEDG+KCGY2)
184 CG(JL+LCGEDG+LCGEDG+KCGZ1) =-CG(JU-LCGEDG+KCGZ2)
185 CG(JL+LCGEDG+LCGEDG+KCGX2) = CG(JU-LCGEDG+KCGX1)
186 CG(JL+LCGEDG+LCGEDG+KCGY2) = CG(JU-LCGEDG+KCGY1)
187 CG(JL+LCGEDG+LCGEDG+KCGZ2) =-CG(JU-LCGEDG+KCGZ1)
188 IF (NE .EQ. 3) GOTO 700
189*
190 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGAE) = CG(JU-LCGEDG-LCGEDG+KCGAE)
191 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGX1) = CG(JU-LCGEDG-LCGEDG+KCGX2)
192 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGY1) = CG(JU-LCGEDG-LCGEDG+KCGY2)
193 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGZ1) =-CG(JU-LCGEDG-LCGEDG+KCGZ2)
194 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGX2) = CG(JU-LCGEDG-LCGEDG+KCGX1)
195 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGY2) = CG(JU-LCGEDG-LCGEDG+KCGY1)
196 CG(JL+LCGEDG+LCGEDG+LCGEDG+KCGZ2) =-CG(JU-LCGEDG-LCGEDG+KCGZ1)
197 700 JCGUP = JCGUP + LCGFAC + NE*LCGEDG
198 GOTO 600
199*
200 999 CALL CGSNOR(CG)
201 RETURN
202 END