5 * Revision 1.1.1.1 1995/10/24 10:20:48 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.28 by S.Giani
12 SUBROUTINE GFCOOR(X,IAXIS,C)
14 C. *****************************************************************
16 C. * ROUTINE TO COMPUTE THE COORDINATE C CORRESPONDING TO THE *
17 C. * AXIS IAXIS FOR THE POINT X(1-3). *
18 C. * IAXIS = 1 IS THE USUAL X AXIS ------> X(1) *
19 C. * IAXIS = 2 IS THE USUAL Y AXIS ------> X(2) *
20 C. * IAXIS = 3 IS THE USUAL Z AXIS ------> X(3) *
21 C. * IAXIS = 4 IS THE X,Y PLANE R VALUE. *
22 C. * IAXIS = 5 IS THE FULL X,Y,Z R VALUE. *
23 C. * IAXIS = 6 IS AZIMUTH PHI (ANGLE IN X,Y PLANE). *
24 C. * IAXIS = 7 IS THE POLAR ANGLE THETA (R,Z PLANE). *
26 C. * ==>Called by : GFTRAC, GINVOL, GMEDIA, GNEXT, GTMEDI, *
28 C. * Author A.McPherson ********* *
30 C. *****************************************************************
32 #include "geant321/gconsp.inc"
33 #include "geant321/gcunit.inc"
36 C. ----------------------------------------------------
38 IF(IAXIS.LE.0.OR.IAXIS.GE.8) THEN
39 WRITE(CHMAIL,10000) IAXIS
42 ELSEIF(IAXIS.LE.3) THEN
45 ELSEIF(IAXIS.EQ.4) THEN
47 IF(C.GT.0.0) C=SQRT(C)
49 ELSEIF(IAXIS.EQ.5) THEN
50 C=X(1)*X(1)+X(2)*X(2)+X(3)*X(3)
51 IF(C.GT.0.0) C=SQRT(C)
53 ELSEIF(IAXIS.EQ.6) THEN
55 IF(ABS(X(1)).GE.1.0E-10.AND.ABS(X(2)).GE.1.0E-10) THEN
56 C=ATAN2(X(2),X(1))*RADDEG
57 ELSEIF(ABS(X(4)).GE.1.0E-10.AND.ABS(X(5)).GE.1.0E-10) THEN
58 C=ATAN2(X(5),X(4))*RADDEG
60 IF(C.LT.0.0) C=C+360.0
62 ELSEIF(IAXIS.EQ.7) THEN
64 IF(ABS(X(3)).LT.1.0E-10) GO TO 999
66 IF(R.GT.0.0) R=SQRT(R)
67 C=ATAN2(R,X(3))*RADDEG
68 IF(C.LT.0.0) C=C+180.0
69 IF(C.EQ.0.0.AND.X(3).LE.0.0) C=180.0
72 10000 FORMAT(' ***** GFCOOR: IAXIS =',I5,' NOT SUPPORTED *****')