]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HERWIG/src/hwrpow.f
Coding rule violations corrected.
[u/mrichter/AliRoot.git] / HERWIG / src / hwrpow.f
1
2 CDECK  ID>, HWRPOW.
3
4 *CMZ :-        -26/04/91  11.11.56  by  Bryan Webber
5
6 *-- Author :    Bryan Webber
7
8 C-----------------------------------------------------------------------
9
10       SUBROUTINE HWRPOW(XVAL,XJAC)
11
12 C-----------------------------------------------------------------------
13
14 C     RETURNS XVAL DISTRIBUTED ON (XMIN,XMAX) LIKE XVAL**XPOW
15
16 C     AND CORRESPONDING JACOBIAN FACTOR XJAC
17
18 C     SET FIRST=.TRUE. IF NEW XMIN,XMAX OR XPOW
19
20 C-----------------------------------------------------------------------
21
22       DOUBLE PRECISION HWR,XVAL,XJAC,XMIN,XMAX,XPOW,P,Q,A,B,C,Z,ZERO
23
24       LOGICAL FIRST
25
26       PARAMETER(ZERO=0.0D0)
27
28       EXTERNAL HWR
29
30       SAVE Q,A,B,C
31
32       COMMON/HWRPIN/XMIN,XMAX,XPOW,FIRST
33
34       IF (FIRST) THEN
35
36         P=XPOW+1.
37
38         IF (P.EQ.ZERO) CALL HWWARN('HWRPOW',500,*999)
39
40         Q=1./P
41
42         A=XMIN**P
43
44         B=XMAX**P-A
45
46         C=B*Q
47
48         FIRST=.FALSE.
49
50       ENDIF
51
52       Z=A+B*HWR()
53
54       XVAL=Z**Q
55
56       XJAC=XVAL*C/Z
57
58   999 END
59
60 CDECK  ID>, HWRUNG.
61
62 *CMZ :-        -26/04/91  14.55.45  by  Federico Carminati
63
64 *-- Author :    David Ward, modified by Bryan Webber
65
66 C-----------------------------------------------------------------------
67
68       FUNCTION HWRUNG(A,B)
69
70 C-----------------------------------------------------------------------
71
72 C     Random number from distribution having flat top [-A,A] & gaussian
73
74 C     tail of s.d. B
75
76 C-----------------------------------------------------------------------
77
78       DOUBLE PRECISION HWRUNG,HWRGAU,HWRUNI,A,B,PRUN,ZERO
79
80       LOGICAL HWRLOG
81
82       EXTERNAL HWRGAU,HWRUNI,HWRLOG
83
84       PARAMETER (ZERO=0.D0)
85
86       IF (A.EQ.ZERO) THEN
87
88         PRUN=0
89
90       ELSE
91
92         PRUN=1./(1.+B*1.2533/A)
93
94       ENDIF
95
96       IF(HWRLOG(PRUN)) THEN
97
98         HWRUNG=HWRUNI(0,-A,A)
99
100       ELSE
101
102         HWRUNG=HWRGAU(0,ZERO,B)
103
104         HWRUNG=HWRUNG+SIGN(A,HWRUNG)
105
106       ENDIF
107
108       END