1
subroutine jgggxx(w1,w2,w3,g, jw3w)
3
c This subroutine computes an off-shell W+, W-, W3, Z or photon current
4
c from the four-point gauge boson coupling, including the contributions
5
c of W exchange diagrams. The vector propagator is given in Feynman
6
c gauge for a photon and in unitary gauge for W and Z bosons. If one
7
c sets wmass=0.0, then the ggg-->g current is given (see sect 2.9.1 of
11
c complex w1(6) : first vector w1
12
c complex w2(6) : second vector w2
13
c complex w3(6) : third vector w3
14
c real g : first coupling constant
15
c (see the table below)
18
c complex jw3w(6) : W current j^mu(w':w1,w2,w3)
21
double complex w1(6),w2(6),w3(6),jw3w(6)
22
double complex dw1(0:3),dw2(0:3),dw3(0:3)
23
double complex jj(0:3),dv,w32,w13
24
double precision p1(0:3),p2(0:3),p3(0:3),q(0:3),g,dg2,q2
26
double precision rZero, rOne
27
parameter( rZero = 0.0d0, rOne = 1.0d0 )
35
if ( abs(w1(1))+abs(w1(2))+abs(w1(3))+abs(w1(4)).eq.rZero ) then
36
write(stdo,*) ' helas-warn : w1 in jgggxx is zero vector'
38
if ( abs(w1(5))+abs(w1(6)).eq.rZero ) then
40
& ' helas-error : w1 in jgggxx has zero momentum'
42
if ( abs(w2(1))+abs(w2(2))+abs(w2(3))+abs(w2(4)).eq.rZero ) then
43
write(stdo,*) ' helas-warn : w2 in jgggxx is zero vector'
45
if ( abs(w2(5))+abs(w2(6)).eq.rZero ) then
47
& ' helas-error : w2 in jgggxx has zero momentum'
49
if ( abs(w3(1))+abs(w3(2))+abs(w3(3))+abs(w3(4)).eq.rZero ) then
50
write(stdo,*) ' helas-warn : w3 in jgggxx is zero vector'
52
if ( abs(w3(5))+abs(w3(6)).eq.rZero ) then
54
& ' helas-error : w3 in jgggxx has zero momentum'
56
if ( g.eq.rZero ) then
57
write(stdo,*) ' helas-error : g in jgggxx is zero coupling'
61
jw3w(5) = w1(5)+w2(5)+w3(5)
62
jw3w(6) = w1(6)+w2(6)+w3(6)
65
if ( abs(jw3w(5))+abs(jw3w(6)).eq.rZero ) then
67
& ' helas-error : jw3w in jw3wxx has zero momentum'
71
dw1(0) = dcmplx(w1(1))
72
dw1(1) = dcmplx(w1(2))
73
dw1(2) = dcmplx(w1(3))
74
dw1(3) = dcmplx(w1(4))
75
dw2(0) = dcmplx(w2(1))
76
dw2(1) = dcmplx(w2(2))
77
dw2(2) = dcmplx(w2(3))
78
dw2(3) = dcmplx(w2(4))
79
dw3(0) = dcmplx(w3(1))
80
dw3(1) = dcmplx(w3(2))
81
dw3(2) = dcmplx(w3(3))
82
dw3(3) = dcmplx(w3(4))
85
p1(2) = dble(dimag(w1(6)))
86
p1(3) = dble(dimag(w1(5)))
89
p2(2) = dble(dimag(w2(6)))
90
p2(3) = dble(dimag(w2(5)))
93
p3(2) = dble(dimag(w3(6)))
94
p3(3) = dble(dimag(w3(5)))
95
q(0) = -(p1(0)+p2(0)+p3(0))
96
q(1) = -(p1(1)+p2(1)+p3(1))
97
q(2) = -(p1(2)+p2(2)+p3(2))
98
q(3) = -(p1(3)+p2(3)+p3(3))
100
q2 = q(0)**2 -(q(1)**2 +q(2)**2 +q(3)**2)
102
dg2 = dble(g)*dble(g)
104
dv = rOne/dcmplx( q2 )
106
w32 = dw3(0)*dw2(0)-dw3(1)*dw2(1)-dw3(2)*dw2(2)-dw3(3)*dw2(3)
108
w13 = dw1(0)*dw3(0)-dw1(1)*dw3(1)-dw1(2)*dw3(2)-dw1(3)*dw3(3)
110
jj(0) = dg2*( dw1(0)*w32 - dw2(0)*w13 )
111
jj(1) = dg2*( dw1(1)*w32 - dw2(1)*w13 )
112
jj(2) = dg2*( dw1(2)*w32 - dw2(2)*w13 )
113
jj(3) = dg2*( dw1(3)*w32 - dw2(3)*w13 )
115
jw3w(1) = dcmplx( jj(0)*dv )
116
jw3w(2) = dcmplx( jj(1)*dv )
117
jw3w(3) = dcmplx( jj(2)*dv )
118
jw3w(4) = dcmplx( jj(3)*dv )