~madteam/mg5amcnlo/series2.0

50.9.3 by Johan Alwall
Added Template and HELAS into bzr
1
      subroutine jggxxx(v1,v2,g, jvv)
2
c
3
c This subroutine computes an off-shell vector current from the three-
4
c point gauge boson coupling.  The vector propagator is given in Feynman
5
c gauge for a massless vector and in unitary gauge for a massive vector.
6
c
7
c input:
8
c       complex v1(6)          : first  vector                        v1
9
c       complex v2(6)          : second vector                        v2
10
c       real    g              : coupling constant (see the table below)
11
c
12
c output:
13
c       complex jvv(6)         : vector current            j^mu(v:v1,v2)
14
c
15
      implicit none
16
      double complex v1(6),v2(6),jvv(6),j12(0:3)
17
      double complex sv1,sv2,v12
18
      double precision p1(0:3),p2(0:3),q(0:3),g,gs,s
19
20
#ifdef HELAS_CHECK
21
      double precision rZero
22
      parameter( rZero = 0.0d0 )
23
      integer stdo
24
      parameter( stdo = 6 )
25
#endif
26
c
27
#ifdef HELAS_CHECK
28
      if ( abs(v1(1))+abs(v1(2))+abs(v1(3))+abs(v1(4)).eq.rZero ) then
29
         write(stdo,*) ' helas-warn  : v1 in jggxxx is zero vector'
30
      endif
31
      if ( abs(v1(5))+abs(v1(6)).eq.rZero ) then
32
         write(stdo,*)
33
     &        ' helas-error : v1 in jggxxx has zero momentum'
34
      endif
35
      if (abs(v2(1))+abs(v2(2))+abs(v2(3))+abs(v2(4)).eq.rZero ) then
36
         write(stdo,*) ' helas-warn  : v2 in jggxxx is zero vector'
37
      endif
38
      if ( abs(v2(5))+abs(v2(6)).eq.rZero ) then
39
         write(stdo,*)
40
     &        ' helas-error : v2 in jggxxx has zero momentum'
41
      endif
42
      if ( g.eq.rZero ) then
43
         write(stdo,*) ' helas-error : g in jggxxx is zero coupling'
44
      endif
45
#endif
46
47
      jvv(5) = v1(5) + v2(5)
48
      jvv(6) = v1(6) + v2(6)
49
50
      p1(0) = dble( v1(5))
51
      p1(1) = dble( v1(6))
52
      p1(2) = dimag(v1(6))
53
      p1(3) = dimag(v1(5))
54
      p2(0) = dble( v2(5))
55
      p2(1) = dble( v2(6))
56
      p2(2) = dimag(v2(6))
57
      p2(3) = dimag(v2(5))
58
      q(0) = -dble( jvv(5))
59
      q(1) = -dble( jvv(6))
60
      q(2) = -dimag(jvv(6))
61
      q(3) = -dimag(jvv(5))
62
      s = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
63
64
      v12 = v1(1)*v2(1)-v1(2)*v2(2)-v1(3)*v2(3)-v1(4)*v2(4)
65
      sv1 =   (p2(0)-q(0))*v1(1) -(p2(1)-q(1))*v1(2)
66
     &      - (p2(2)-q(2))*v1(3) -(p2(3)-q(3))*v1(4)
67
      sv2 = - (p1(0)-q(0))*v2(1) +(p1(1)-q(1))*v2(2)
68
     &      + (p1(2)-q(2))*v2(3) +(p1(3)-q(3))*v2(4)
69
      j12(0) = (p1(0)-p2(0))*v12 +sv1*v2(1) +sv2*v1(1)
70
      j12(1) = (p1(1)-p2(1))*v12 +sv1*v2(2) +sv2*v1(2)
71
      j12(2) = (p1(2)-p2(2))*v12 +sv1*v2(3) +sv2*v1(3)
72
      j12(3) = (p1(3)-p2(3))*v12 +sv1*v2(4) +sv2*v1(4)
73
74
      gs = -g/s
75
76
      jvv(1) = gs*j12(0)
77
      jvv(2) = gs*j12(1)
78
      jvv(3) = gs*j12(2)
79
      jvv(4) = gs*j12(3)
80
c
81
      return
82
      end