5 * Revision 1.1.1.1 1995/10/24 10:21:35 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.23 by S.Giani
12 SUBROUTINE GVROT(DCOSIN,PART)
14 C. ******************************************************************
16 C. * Rotates vector from one reference system into another *
17 C. * defined by the direction cosines contained in the vector *
18 C. * DCOSIN. The input vector PART is overwritten. *
21 C. * Author F.Carminati ********** *
24 C. ******************************************************************
26 DIMENSION PART(*),DCOSIN(*)
27 #if !defined(CERNLIB_SINGLE)
28 DOUBLE PRECISION DUX,DUY,DUZ,SINTH2,ONE,COSTH,SINTH,COSPH,SINPH
29 DOUBLE PRECISION DNORM
34 C. ------------------------------------------------------------------
40 IF(ABS(DUZ).GE.0.85) THEN
43 COSTH = SIGN(ONE,DUZ)*SQRT(ONE-SINTH2)
57 SINTH = SQRT((ONE+DUZ)*(ONE-DUZ))
58 DNORM = ONE/SQRT(DUX**2+DUY**2)
67 PART(1)= P1*COSTH*COSPH - P2*SINPH + P3*SINTH*COSPH
68 PART(2)= P1*COSTH*SINPH + P2*COSPH + P3*SINTH*SINPH
69 PART(3)=-P1*SINTH + P3*COSTH