]>
Commit | Line | Data |
---|---|---|
3820ca8e | 1 | |
2 | CDECK ID>, HWDRM5. | |
3 | ||
4 | *CMZ :- -20/07/99 10:56:12 by Peter Richardson | |
5 | ||
6 | *-- Author : Peter Richardson | |
7 | ||
8 | C----------------------------------------------------------------------- | |
9 | ||
10 | SUBROUTINE HWDRM5(X,Y,Z,A,B,MA,MB,MC,MD,MR,GAM) | |
11 | ||
12 | C----------------------------------------------------------------------- | |
13 | ||
14 | C Subroutine to find the maximum of the ME | |
15 | ||
16 | C----------------------------------------------------------------------- | |
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 |