]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwdrm5.f
Coding rule violations corrected.
[u/mrichter/AliRoot.git] / HERWIG / src / hwdrm5.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWDRM5.
3
4*CMZ :- -20/07/99 10:56:12 by Peter Richardson
5
6*-- Author : Peter Richardson
7
8C-----------------------------------------------------------------------
9
10 SUBROUTINE HWDRM5(X,Y,Z,A,B,MA,MB,MC,MD,MR,GAM)
11
12C-----------------------------------------------------------------------
13
14C Subroutine to find the maximum of the ME
15
16C-----------------------------------------------------------------------
17
18 IMPLICIT NONE
19
20 DOUBLE PRECISION X,Y,Z,MA,MB,MC,MD,MR,GAM,RES(3),A,B,C,D,
21
22 & E2S,E3S,E2M,E3M,LOW,UPP,HWRUNI,EPS,ZERO
23
24 EXTERNAL HWRUNI
25
26 PARAMETER(EPS=1D-9,ZERO=0)
27
28 C = A**2+B**2
29
30 D = 4*A*B
31
32 RES(1) = -D*(MA**2 + MB**2)*MC*MD +
33
34 & C*(GAM**2*MR**2 + MR**4 - MA**2*MC**2 - MB**2*MC**2 -
35
36 & MA**2*MD**2 - MB**2*MD**2)
37
38 RES(2) = (GAM**2*MR**2 + (-MR**2 + MA**2 + MB**2)**2)*
39
40 & (D**2*MC**2*MD**2 +
41
42 & 2*C*D*MC*MD*(-MR**2 + MC**2 + MD**2) +
43
44 & C**2*(GAM**2*MR**2 + (-MR**2 + MC**2 + MD**2)**2))
45
46 RES(3) = -D*MC*MD+C*(2*MR**2-(MA**2+MB**2+MC**2+MD**2))
47
48 IF(RES(2).GT.ZERO) THEN
49
50 RES(2) = SQRT(RES(2))
51
52 ELSE
53
54 RES(2) = 0.0D0
55
56 ENDIF
57
58 IF((RES(1)+RES(2))/RES(3).GT.(MD-MC)**2.OR.
59
60 & (RES(1)+RES(2))/RES(3).LT.(MA+MB)**2) THEN
61
62 X = (RES(1)-RES(2))/RES(3)
63
64 ELSE
65
66 X = (RES(1)+RES(2))/RES(3)
67
68 ENDIF
69
70 IF(X.GT.(MD-MC)**2) X = (MD-MC)**2
71
72 IF(X.LT.(MA+MB)**2) X = (MA+MB)**2
73
74 E2S = (X-MA**2+MB**2)/(2*SQRT(X))
75
76 E3S = (MD**2-X-MC**2)/(2*SQRT(X))
77
78 E2M = E2S**2-MB**2
79
80 E3M = E3S**2-MC**2
81
82 IF(E2M.LT.ZERO) THEN
83
84 IF(ABS(E2M/E2S).GT.EPS) CALL HWWARN('HWDRM5',2,*10)
85
86 10 E2M= 0.0D0
87
88 ENDIF
89
90 IF(E3M.LT.ZERO) THEN
91
92 IF(ABS(E3M/E3S).GT.EPS) CALL HWWARN('HWDRM5',3,*20)
93
94 20 E3M= 0.0D0
95
96 ENDIF
97
98 E2M = SQRT(E2M)
99
100 E3M = SQRT(E3M)
101
102 LOW = (E2S+E3S)**2-(E2M+E3M)**2
103
104 UPP = (E2S+E3S)**2-(E2M-E3M)**2
105
106 Y = HWRUNI(1,LOW,UPP)
107
108 Z = MA**2+MB**2+MC**2+MD**2-X-Y
109
110 END