This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gheisha / ang.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:07  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.38  by  S.Giani
11 *-- Author :
12 C
13 C *** VARIOUS VECTOR OPERATIONS ***
14 C
15 C COPIED FROM F14BLO.PAMLIB 23.4.82
16 C AUTHOR: V.BLOBEL (UNIVERSITY OF HAMBURG)
17 C DESYLIB
18 C
19 C *** BLANK COMMON REPLACED BY /VECUTY/ TO MATCH GEANT/GHEISHA CODE ***
20 C *** NOTE THAT P(10,100) HAS BECOME PV(10,200) DUE TO THIS         ***
21 C
22 C UN-USED ENTRIES REMOVED :
23 C     "PCOP" "PEXC" "PZER" "PWRT" "DOT4" "IMPU" "IMPULI" "ADD3"
24 C     "SUB3" "CROSS" "DOT" "SMUL" "NORZ" "PARPER" "PUNIT" "TRAP"
25 C
26 C *** ALL ENTRIES RE-WRITTEN AS SUBROUTINES USING ONLY NECESSARY ***
27 C *** "DOUBLE PRECISION" STMTS. AND ALL SPECIFIC FUNCTIONS HAVE  ***
28 C *** BEEN CHANGED TO THEIR GENERIC EQUIVALENCES                 ***
29 C *** NVE 29-MAR-1988 CERN GENEVA ***
30 C
31 C ORIGIN : H.FESEFELDT (22-JUNE-1984)
32 C
33       SUBROUTINE ANG(K,L,U,V)
34 C
35 C --- PV-ARRAY ---
36 #include "geant321/mxgkgh.inc"
37 #include "geant321/s_blankp.inc"
38 C
39       DOUBLE PRECISION A,B,C,D
40 C
41       A=0.0
42       B=0.0
43       C=0.0
44       DO 38 I=1,3
45       A=A+PV(I,K)*PV(I,K)
46       B=B+PV(I,L)*PV(I,L)
47       C=C+PV(I,K)*PV(I,L)
48  38   CONTINUE
49       D=SQRT(A*B)
50       IF (D .NE. 0.0) D=C/D
51       IF (ABS(D) .GT. 1.D0) D=SIGN(1.D0,D)
52       U=D
53       V=ACOS(D)
54       RETURN
55       END