]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/peanut/cosleg.F
Initial version
[u/mrichter/AliRoot.git] / GEANT321 / peanut / cosleg.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:22:00 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.46 by S.Giani
11*-- Author :
12*$ CREATE COSLEG.FOR
13*COPY COSLEG
14*
15*=== cosleg ===========================================================*
16*
17 FUNCTION COSLEG ( ACOLEG )
18
19#include "geant321/dblprc.inc"
20#include "geant321/dimpar.inc"
21#include "geant321/iounit.inc"
22*
23*----------------------------------------------------------------------*
24*----------------------------------------------------------------------*
25*
26 DIMENSION ACOLEG (0:2)
27 REAL RNDM(2)
28*
29 IF ( ACOLEG (0) .NE. 0.5D+00 ) THEN
30 ANORM = 0.5D+00 / ACOLEG (0)
31 DO 100 I = 0,2
32 ACOLEG (I) = ACOLEG (I) * ANORM
33 100 CONTINUE
34 END IF
35 ACOF = 1.5D+00 * ACOLEG (2)
36 BCOF = ACOLEG (1)
37 CCOF = ACOLEG (0) - 0.5D+00 * ACOLEG (2)
38 FORWRA = 0.3333333333333333D+00 * ACOF
39 FORWRB = 0.5D+00 * BCOF
40 FORWRC = CCOF
41 FORWRD = FORWRA + FORWRB + FORWRC
42 BACKWR = 1.D+00 - FORWRD
43 CALL GRNDM(RNDM,1)
44 RNDCOS = RNDM (1)
45 IF ( RNDCOS .LT. FORWRD ) THEN
46 RNDCOS = RNDCOS
47 IF ( RNDCOS .LT. FORWRA ) THEN
48 COSLEG = ( RNDCOS / FORWRA )**0.3333333333333333D+00
49 ELSE IF ( RNDCOS .LT. FORWRA + FORWRB ) THEN
50 COSLEG = SQRT ( ( RNDCOS - FORWRA ) / FORWRB )
51 ELSE
52 COSLEG = ( RNDCOS - FORWRA - FORWRB ) / FORWRC
53 END IF
54 ELSE
55 COSLEG = - ( RNDCOS - FORWRD ) / BACKWR
56 IF ( ACOF .LT. - ANGLGB ) THEN
57 COSMAX = - 0.5D+00 * BCOF / ACOF
58 IF ( COSMAX .GT. 0.D+00 ) THEN
59 PROMAX = CCOF
60 ELSE IF ( COSMAX .LT. -1.D+00 ) THEN
61 PROMAX = ACOF - BCOF + CCOF
62 ELSE
63 PROMAX = ACOF * COSMAX**2 + BCOF * COSMAX + CCOF
64 END IF
65 ELSE IF ( ACOF .GT. ANGLGB ) THEN
66 IF ( ACOF .GT. BCOF ) THEN
67 PROMAX = ACOF - BCOF + CCOF
68 ELSE
69 PROMAX = CCOF
70 END IF
71 ELSE
72 PROMAX = CCOF
73 END IF
74 200 CONTINUE
75 FREJE = ( ACOF * COSLEG**2 + BCOF * COSLEG + CCOF ) / PROMAX
76 CALL GRNDM(RNDM,2)
77 IF ( RNDM (1) .GE. FREJE ) THEN
78 COSLEG = - RNDM (2)
79 GO TO 200
80 END IF
81 END IF
82*=== End of subroutine cosleg =========================================*
83 RETURN
84 END