50.9.3
by Johan Alwall
Added Template and HELAS into bzr |
1 |
subroutine ggggxx(ga,gb,gc,gd,g, vertex) |
2 |
c
|
|
3 |
c This subroutine computes the portion of the amplitude of the four-point
|
|
4 |
c coupling of 4 massless color octet gauge bosons (gluons) corresponding
|
|
5 |
c to the color structure f^{a,b,e} f{c,d,e}.
|
|
6 |
c To optain the complete amplitude, this coupling must be called three
|
|
7 |
c times (once for each color structure) with the following permutations:
|
|
8 |
c call ggggxx(ga,gb,gc,gd,g,v1)
|
|
9 |
c call ggggxx(ga,gc,gd,gb,g,v2)
|
|
10 |
c call ggggxx(ga,gd,gb,gc,g,v3)
|
|
11 |
c
|
|
12 |
c f^{a,b,e} f{c,d,e}*v1+
|
|
13 |
c f^{a,c,e} f{d,b,e}*v2+
|
|
14 |
c f^{a,d,e} f{b,c,e}*v3
|
|
15 |
c (See 2.9.1 of the manual for more information).
|
|
16 |
c
|
|
17 |
c input:
|
|
18 |
c complex ga(0:3) : Boson with adjoint color index a
|
|
19 |
c complex gb(0:3) : Boson with adjoint color index b
|
|
20 |
c complex gc(0:3) : Boson with adjoint color index c
|
|
21 |
c complex gd(0:3) : Boson with adjoint color index d
|
|
22 |
c real g : coupling of w31 with w-/w+
|
|
23 |
c
|
|
24 |
implicit none |
|
25 |
double complex ga(6),gb(6),gc(6),gd(6),vertex |
|
26 |
double complex dv1(0:3),dv2(0:3),dv3(0:3),dv4(0:3), |
|
27 |
& dvertx,v12,v13,v14,v23,v24,v34 |
|
28 |
double precision pga(0:3),pgb(0:3),pgc(0:3),pgd(0:3),g |
|
29 |
||
30 |
save dv1,dv2,dv3, dv4 |
|
31 |
c save dv1,dv2,dv3,dv4,dvertx,v12,v13,v14,v23,v24,v34
|
|
32 |
||
33 |
#ifdef HELAS_CHECK
|
|
34 |
double precision pm |
|
35 |
double precision epsi |
|
36 |
parameter( epsi = 2.0d-5 ) |
|
37 |
double precision rZero |
|
38 |
parameter( rZero = 0.0d0 ) |
|
39 |
integer stdo |
|
40 |
parameter( stdo = 6 ) |
|
41 |
#endif
|
|
42 |
c
|
|
43 |
#ifdef HELAS_CHECK
|
|
44 |
pga(0) = dble( ga(5)) |
|
45 |
pga(1) = dble( ga(6)) |
|
46 |
pga(2) = dimag(ga(6)) |
|
47 |
pga(3) = dimag(ga(5)) |
|
48 |
pgb(0) = dble( gb(5)) |
|
49 |
pgb(1) = dble( gb(6)) |
|
50 |
pgb(2) = dimag(gb(6)) |
|
51 |
pgb(3) = dimag(gb(5)) |
|
52 |
pgc(0) = dble( gc(5)) |
|
53 |
pgc(1) = dble( gc(6)) |
|
54 |
pgc(2) = dimag(gc(6)) |
|
55 |
pgc(3) = dimag(gc(5)) |
|
56 |
pgd(0) = dble( gd(5)) |
|
57 |
pgd(1) = dble( gd(6)) |
|
58 |
pgd(2) = dimag(gd(6)) |
|
59 |
pgd(3) = dimag(gd(5)) |
|
60 |
||
61 |
if ( abs(ga(1))+abs(ga(2)) |
|
62 |
& +abs(ga(3))+abs(ga(4)).eq.rZero ) then |
|
63 |
write(stdo,*) ' helas-warn : ga in ggggxx is zero vector' |
|
64 |
endif |
|
65 |
if ( abs(ga(5))+abs(ga(5)).eq.rZero ) then |
|
66 |
write(stdo,*) |
|
67 |
& ' helas-error : ga in ggggxx has zero momentum' |
|
68 |
endif |
|
69 |
if ( abs(gb(1))+abs(gb(2)) |
|
70 |
& +abs(gb(3))+abs(gb(4)).eq.rZero ) then |
|
71 |
write(stdo,*) ' helas-warn : gb in ggggxx is zero vector' |
|
72 |
endif |
|
73 |
if ( abs(gb(5))+abs(gb(5)).eq.rZero ) then |
|
74 |
write(stdo,*) |
|
75 |
& ' helas-error : gb in ggggxx has zero momentum' |
|
76 |
endif |
|
77 |
if ( abs(gc(1))+abs(gc(2)) |
|
78 |
& +abs(gc(3))+abs(gc(4)).eq.rZero ) then |
|
79 |
write(stdo,*) ' helas-warn : gc in ggggxx is zero vector' |
|
80 |
endif |
|
81 |
if ( abs(gc(5))+abs(gc(5)).eq.rZero ) then |
|
82 |
write(stdo,*) |
|
83 |
& ' helas-error : gc in ggggxx has zero momentum' |
|
84 |
endif |
|
85 |
if ( abs(gd(1))+abs(gd(2)) |
|
86 |
& +abs(gd(3))+abs(gd(4)).eq.rZero ) then |
|
87 |
write(stdo,*) ' helas-warn : gd in ggggxx is zero vector' |
|
88 |
endif |
|
89 |
if ( abs(gd(5))+abs(gd(5)).eq.rZero ) then |
|
90 |
write(stdo,*) |
|
91 |
& ' helas-error : gd in ggggxx has zero momentum' |
|
92 |
endif |
|
93 |
pm = max( abs(pga(0)),abs(pgb(0)),abs(pgc(0)),abs(pgd(0)), |
|
94 |
& abs(pga(1)),abs(pgb(1)),abs(pgc(1)),abs(pgd(1)), |
|
95 |
& abs(pga(2)),abs(pgb(2)),abs(pgc(2)),abs(pgd(2)), |
|
96 |
& abs(pga(3)),abs(pgb(3)),abs(pgc(3)),abs(pgd(3)) ) |
|
97 |
if ( abs(ga(5)+gb(5)+gc(5)+gd(5)) |
|
98 |
& +abs(ga(6)+gb(6)+gc(6)+gd(6)).ge.pm*epsi) then |
|
99 |
write(stdo,*) |
|
100 |
& ' helas-error : ga,gb,gc,gd in ggggxx' |
|
101 |
write(stdo,*) |
|
102 |
& ' : have not balanced momenta' |
|
103 |
endif |
|
104 |
if ( g.eq.rZero ) then |
|
105 |
write(stdo,*) ' helas-error : g in ggggxx is zero coupling' |
|
106 |
endif |
|
107 |
#endif
|
|
108 |
||
109 |
dv1(0) = dcmplx(ga(1)) |
|
110 |
dv1(1) = dcmplx(ga(2)) |
|
111 |
dv1(2) = dcmplx(ga(3)) |
|
112 |
dv1(3) = dcmplx(ga(4)) |
|
113 |
dv2(0) = dcmplx(gb(1)) |
|
114 |
dv2(1) = dcmplx(gb(2)) |
|
115 |
dv2(2) = dcmplx(gb(3)) |
|
116 |
dv2(3) = dcmplx(gb(4)) |
|
117 |
dv3(0) = dcmplx(gc(1)) |
|
118 |
dv3(1) = dcmplx(gc(2)) |
|
119 |
dv3(2) = dcmplx(gc(3)) |
|
120 |
dv3(3) = dcmplx(gc(4)) |
|
121 |
dv4(0) = dcmplx(gd(1)) |
|
122 |
dv4(1) = dcmplx(gd(2)) |
|
123 |
dv4(2) = dcmplx(gd(3)) |
|
124 |
dv4(3) = dcmplx(gd(4)) |
|
125 |
||
126 |
v12 = dv1(0)*dv2(0)-dv1(1)*dv2(1)-dv1(2)*dv2(2)-dv1(3)*dv2(3) |
|
127 |
v13 = dv1(0)*dv3(0)-dv1(1)*dv3(1)-dv1(2)*dv3(2)-dv1(3)*dv3(3) |
|
128 |
v14 = dv1(0)*dv4(0)-dv1(1)*dv4(1)-dv1(2)*dv4(2)-dv1(3)*dv4(3) |
|
129 |
v23 = dv2(0)*dv3(0)-dv2(1)*dv3(1)-dv2(2)*dv3(2)-dv2(3)*dv3(3) |
|
130 |
v24 = dv2(0)*dv4(0)-dv2(1)*dv4(1)-dv2(2)*dv4(2)-dv2(3)*dv4(3) |
|
131 |
v34 = dv3(0)*dv4(0)-dv3(1)*dv4(1)-dv3(2)*dv4(2)-dv3(3)*dv4(3) |
|
132 |
||
133 |
dvertx = v14*v23 -v13*v24 |
|
134 |
||
135 |
vertex = dcmplx( dvertx ) * (g*g) |
|
136 |
||
137 |
c if (abs(dvertx) .gt. 1d40) then
|
|
138 |
c write(*,*) 'Careful',abs(dvertx)
|
|
139 |
c write(*,*) v12,v13,v14
|
|
140 |
c write(*,*) v23,v24,v34
|
|
141 |
c endif
|
|
142 |
c
|
|
143 |
return |
|
144 |
end |