]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - GEANT321/ggeom/gncone.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / GEANT321 / ggeom / gncone.F
diff --git a/GEANT321/ggeom/gncone.F b/GEANT321/ggeom/gncone.F
deleted file mode 100644 (file)
index ecc0b15..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1995/10/24 10:20:51  cernlib
-* Geant
-*
-*
-#include "geant321/pilot.h"
-*CMZ :  3.21/02 29/03/94  15.41.29  by  S.Giani
-*-- Author :
-      SUBROUTINE GNCONE(X,P,IACT,IFL,SNEXT,SNXT,SAFE)
-C.    ******************************************************************
-C.    *                                                                *
-C.    *      Compute distance to intersection with boundary surface of *
-C     *      volume CONE or CONS, from point X(1),X(2),X(3) inside     *
-C     *      the volume along track with direction cosines X(4),X(5),  *
-C     *      X(6)                                                      *
-C.    *      P     (input)  : volume parameters                        *
-C.    *      IACT  (input)  : action flag                              *
-C.    *         = 0  Compute SAFE only                                 *
-C.    *         = 1  Compute SAFE, compute SNXT only if SAFE.LT.SNEXT  *
-C.    *         = 2  Compute both SAFE and SNXT                        *
-C.    *         = 3  Compute SNXT only                                 *
-C.    *      IFL   (input)  : 1 for CONE, 2 for PHI segmented CONE     *
-C.    *      SNEXT (input)  : see IACT = 1                             *
-C.    *      SNXT  (output) : distance to volume boundary along track  *
-C.    *      SAFE  (output) : not larger than scalar distance to       *
-C.    *                       volume boundaray                         *
-C.    *      Called by : GNEXT, GNOPCO, GTNEXT                         *
-C.    *                                                                *
-C.    *      Authors   : Michel Maire and Rolf Nierhaus    21-JUN-1990 *
-C.    *                                                                *
-C.    ******************************************************************
-C.    *                                                                *
-C.    * 'CONE'    is a conical tube. It has 5 parameters :             *
-C.    *           the half length in z,                                *
-C.    *           the inside and outside radii at the low z limit,     *
-C.    *           and those at the high z limit.                       *
-C.    * 'CONS'    is a phi segment of a  conical tube.  It has 7       *
-C.    *           parameters, the same 5 as 'CONE' plus the phi limits.*
-C.    *           The segment starts at the first limit and  includes  *
-C.    *           increasing phi  value up  to the  second limit  or   *
-C.    *           that plus 360 degrees.                               *
-C.    *                                                                *
-C.    ******************************************************************
-#if !defined(CERNLIB_SINGLE)
-      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
-      REAL SNEXT, SNXT, SAFE
-      PARAMETER (F=0.01745329251994330D0)
-#endif
-#if defined(CERNLIB_SINGLE)
-      PARAMETER (F=0.01745329251994330)
-#endif
-      REAL X(6),P(7)
-*
-*     this part has to be moved outside the routine
-      RO1=0.5*(P(4)+P(2))
-      TG1=0.5*(P(4)-P(2))/P(1)
-      CR1=1./SQRT(1.+TG1*TG1)
-      RO2=0.5*(P(5)+P(3))
-      TG2=0.5*(P(5)-P(3))/P(1)
-      CR2=1./SQRT(1.+TG2*TG2)
-      IF (IFL.EQ.2) THEN
-         P6=P(6)*F
-         P7=P(7)*F
-         IF (P7.LT.P6) P7=P7+F*360.
-         C1=COS(P6)
-         S1=SIN(P6)
-         C2=COS(P7)
-         S2=SIN(P7)
-         FIO=0.5*(P7+P6)
-         CFIO=COS(FIO)
-         SFIO=SIN(FIO)
-      END IF
-*
-      SNXT=1.E10
-      R   =SQRT(X(1)**2+X(2)**2)
-      RIN =TG1*X(3)+RO1
-      ROUT=TG2*X(3)+RO2
-*
-*     Compute SAFE radius
-      IF (IACT.LT.3) THEN
-         SAF1=(R -RIN)*CR1
-         SAF2=(ROUT-R)*CR2
-         SAF3=P(1)-ABS(X(3))
-         SAF4=1.E10
-         IF (IFL.EQ.2) THEN
-            IF ((X(2)*CFIO-X(1)*SFIO).LE.0.) THEN
-               SAF4=ABS(X(1)*S1-X(2)*C1)
-            ELSE
-               SAF4=ABS(X(1)*S2-X(2)*C2)
-            END IF
-         END IF
-         SAFE=MIN(SAF1,SAF2,SAF3,SAF4)
-         IF (IACT.EQ.0) GO TO 999
-         IF (IACT.EQ.1.AND.SNEXT.LE.SAFE) GO TO 999
-      END IF
-*
-*     Intersection with z-plane
-      IF (X(6).GT. 1.E-20) THEN
-         SZ= (P(1)-X(3))/X(6)
-      ELSEIF (X(6).LT.-1.E-20) THEN
-         SZ=-(P(1)+X(3))/X(6)
-      ELSE
-         SZ= 1.E10
-      END IF
-*
-*     Intersection with cones
-*     Intersection point (x,y,z)
-*     (x,y,z) is on track: x=X(1)+t*X(4)
-*                          y=X(2)+t*X(5)
-*                          z=X(3)+t*X(6)
-*     (x,y,z) is on cone : x**2 + y**2 = (a*z+b)**2
-*
-*     (X(4)**2+X(5)**2-(a*x(6))**2)*t**2
-*     +2.*(X(1)*X(4)+X(2)*X(5)-a*x(6)*(a*x(3)+b))*t
-*     +X(1)**2+X(2)**2-(a*x(3)+b)**2=0
-*
-      T1=X(4)**2+X(5)**2
-      T2=X(1)*X(4)+X(2)*X(5)
-      T3=X(1)**2+X(2)**2
-*
-*     Intersection with the inner cone
-      SR1=1.E10
-      IF (RO1.GT.0.) THEN
-         U=T1-(TG1*X(6))**2
-         V=T2- TG1*X(6)*RIN
-         W=T3- RIN*RIN
-*        track not parallel to the cone ?
-         IF (U.NE.0.) THEN
-            B=V/U
-            C=W/U
-            D=B**2-C
-            IF (D.GE.0.) THEN
-               DS=SQRT(D)
-               IF (DS.GE.ABS(B)) THEN
-                  SR1= DS-B
-               ELSEIF (B.LE.0.)  THEN
-                  SR1=-DS-B
-               END IF
-            END IF
-         ELSEIF (V.LT.0.) THEN
-            SR1=-0.5*W/V
-         END IF
-      END IF
-*
-*     Intersection with the outer cone
-      SR2=1.E10
-      U=T1-(TG2*X(6))**2
-      V=T2- TG2*X(6)*ROUT
-      W=T3- ROUT*ROUT
-*     track not parallel to the cone ?
-      IF (U.NE.0.) THEN
-         B=V/U
-         C=W/U
-         D=B**2-C
-         IF (D.GE.0.) THEN
-            DS=SQRT(D)
-            IF (DS.GE.ABS(B)) THEN
-               SR2= DS-B
-            ELSEIF (B.LE.0.)  THEN
-               SR2=-DS-B
-            END IF
-         END IF
-      ELSEIF (V.GT.0.) THEN
-         SR2=-0.5*W/V
-      END IF
-*
-*     Intersection with phi-planes
-*     x=r*cos(phi)=X(1)+t*X(4)
-*     y=r*sin(phi)=X(2)+t*X(5)
-*     z           =X(3)+t*X(6)
-*     t=(X(2)*cos(phi)-X(1)*sin(phi))/(X(4)*sin(phi)-X(5)*cos(phi))
-*
-      SFI1=1.E10
-      SFI2=1.E10
-      IF (IFL.EQ.2) THEN
-*        track not parallel to the phi1 plane ?
-         UN=X(4)*S1-X(5)*C1
-         IF (UN.NE.0.) THEN
-            S=(X(2)*C1-X(1)*S1)/UN
-            IF (S.GE.0.) THEN
-               XI=X(1)+S*X(4)
-               YI=X(2)+S*X(5)
-               IF ((YI*CFIO-XI*SFIO).LE.0.) SFI1=S
-            END IF
-         END IF
-*        track not parallel to the phi2 plane ?
-         UN=X(4)*S2-X(5)*C2
-         IF (UN.NE.0.) THEN
-            S=(X(2)*C2-X(1)*S2)/UN
-            IF (S.GE.0.) THEN
-               XI=X(1)+S*X(4)
-               YI=X(2)+S*X(5)
-               IF ((YI*CFIO-XI*SFIO).GE.0.) SFI2=S
-            END IF
-         END IF
-      END IF
-*
-      SNXT=MIN(SR1,SR2,SZ,SFI1,SFI2)
-  999 END