]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/ggeom/gcent.F
100 parameters now allowed for geant shapes
[u/mrichter/AliRoot.git] / GEANT321 / ggeom / gcent.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
d43b40e2 5* Revision 1.1.1.1 1999/05/18 15:55:17 fca
6* AliRoot sources
7*
fe4da5cc 8* Revision 1.1.1.1 1995/10/24 10:20:48 cernlib
9* Geant
10*
11*
12#include "geant321/pilot.h"
13*CMZ : 3.21/02 29/03/94 15.41.28 by S.Giani
14*-- Author :
15 SUBROUTINE GCENT(IAX,X0)
16C.
17C. ******************************************************************
18C. * *
19C * SUBROUTINE TO CENTRE A SLICE OF THE NLEVEL TH *
20C * SHAPE, WHEN THE CENTRE OF THE SLICE ALONG AXIS *
21C * NUMBER IAX AFTER ROTATION BY MATRIX IROT IS AT *
22C * X0(IAX). THE CENTER IN THE UNROTATED FRAME IS *
23C * RETURNED. *
24C * *
25C. * ==>Called by : GFTRAC, GINVOL, GLVOLU, GMEDIV, GNEXT, *
26C. * GTMEDI, GTNEXT *
27C. * Author A.McPherson ********* *
28C. * *
29C. ******************************************************************
30C.
31#include "geant321/gcbank.inc"
32#include "geant321/gcvolu.inc"
33#include "geant321/gcunit.inc"
d43b40e2 34 DIMENSION X0(3),PAR(100),ATT(20)
fe4da5cc 35C.
36C. ------------------------------------------------------------------
37C.
38C
39 IVO=LVOLUM(NLEVEL)
40 JVO=LQ(JVOLUM-IVO)
41 ISH=Q(JVO+2)
42C
43 IF(ISH.EQ.4) GO TO 20
44C
45C NOT A GENERAL TRAPEZOID.
46C
47 IF(ISH.EQ.10.AND.IAX.NE.1) GO TO 20
48C
49C NOT A PARALLELEPIPED WITH NON X AXIS SLICING.
50C
51 DO 10 I=1,3
52 IF(I.NE.IAX) X0(I)=0.0
53 10 CONTINUE
54C
55 GO TO 999
56 20 CONTINUE
57C
58C
59 JIN=0
60 IF(NLEVEL.LE.1) GO TO 30
61C
62 IN = LINDEX(NLEVEL)
63 IVOO = LVOLUM(NLEVEL-1)
64 JVOO = LQ(JVOLUM-IVOO)
65 IF (Q(JVOO+3).LT.0.) THEN
66 JIN = LQ(JVOO-1)
67 ELSE
68 JIN = LQ(JVOO-IN)
69 ENDIF
70C
71 30 CONTINUE
72C
73C
74 IF (NLEVEL.LT.NLDEV(NLEVEL)) THEN
75 JPAR = 0
76 ELSE
77* (case with structure JVOLUM locally developed)
78 JPAR = LQ(LQ(JVOLUM-LVOLUM(NLDEV(NLEVEL))))
79 IF (NLEVEL.EQ.NLDEV(NLEVEL)) GO TO 120
80 DO 110 ILEV = NLDEV(NLEVEL), NLEVEL-1
81 IF (IQ(JPAR+1).EQ.0) THEN
82 JPAR = LQ(JPAR-LINDEX(ILEV+1))
83 IF (JPAR.EQ.0) GO TO 120
84 ELSE IF (IQ(JPAR-3).GT.1) THEN
85 JPAR = LQ(JPAR-LINDEX(ILEV+1))
86 ELSE
87 JPAR = LQ(JPAR-1)
88 ENDIF
89 IF (ILEV.EQ.NLEVEL-1) THEN
90 JPAR = JPAR + 5
91 NPAR = IQ(JPAR)
92 CALL UCOPY (Q(JPAR+1), PAR, NPAR)
93 ENDIF
94 110 CONTINUE
95 GO TO 130
96 ENDIF
97* (normal case)
98 120 CONTINUE
99*
100C
101 CALL GFIPAR(JVO,JIN,IN,NPAR,NATT,PAR,ATT)
102C
103 130 CONTINUE
104 IF(ISH.EQ.10) GO TO 40
105C
106C A GENERAL TRAPEZOID
107C
108 IF(IAX.NE.3) GO TO 41
109C
110 X0(1)=PAR(2)*X0(IAX)
111 X0(2)=PAR(3)*X0(IAX)
112C
113 GO TO 999
114C
115 41 IF(IAX.NE.2) GO TO 900
116C
117 X0(1) = X0(IAX)*PAR(7)
118 GO TO 999
119C
120 40 CONTINUE
121C
122C PARALLELEPIPED WITH NON X AXIS SLICING.
123C
124 X0(1)=PAR(IAX+2)*X0(IAX)
125C
126 IF(IAX.EQ.3) GO TO 50
127C
128 X0(3)=0.0
129C
130 GO TO 999
131 50 CONTINUE
132C
133 X0(2)=PAR(6)*X0(3)
134C
135 GO TO 999
136C
137 900 CONTINUE
138C
139C GENERAL TRAPEZOID SLICED OTHER THAN IN Z
140C DOES NOT MAKE SENSE.
141C
142 WRITE(CHMAIL,1000) ISH,IAX
143 CALL GMAIL(0,0)
144 WRITE(CHMAIL,2000)
145 CALL GMAIL(0,0)
146 1000 FORMAT(' ISH,IAX =',2I5,' DOES NOT MAKE SENSE.')
147 2000 FORMAT(' IT IS A GENERAL TRAPEZOID SLICED OTHER THAN IN Z')
148C
149C
150 999 CONTINUE
151 END