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