~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/jvvsxx.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine jvvsxx(ga,gb,sc,g1,g2,xm,xw,jggs)
 
2
c
 
3
c- by RF - Mar. 2006    
 
4
c
 
5
c This subroutine computes an off-shell vector current from the coupling
 
6
c of three gauge bosons and a scalar particle. The outgoing vector current
 
7
c is given in the Feynman gauge.
 
8
c
 
9
c input:
 
10
c       complex ga(6)       : first  incoming vector (gluon)
 
11
c       complex gb(6)       : second incoming vector (gluon)
 
12
c       complex sc(3)       : incoming scalar        (Higgs)
 
13
c       real    g1          : coupling constant      (QCD)
 
14
c       complex g2(2)       : coupling constant: g2(1) scalar
 
15
c                                                g2(2) pseudo-scalar
 
16
c
 
17
c output:
 
18
c       complex jggs(6)         : vector current
 
19
c not used:
 
20
c       real    xm, xw
 
21
c
 
22
 
 
23
      implicit none
 
24
c--   dimension of the current set to arbitrary length
 
25
c      INTEGER DIM
 
26
c      PARAMETER(DIM=18)
 
27
      include "dimension.inc"
 
28
      double complex ga(DIM),gb(DIM),jggs(DIM),sc(DIM)
 
29
      double complex jggs1(DIM),jggs2(DIM)
 
30
      double complex sva,svb,vab,j12(0:3)
 
31
      double complex v12,v13,v14,v23,v24,v34,dv
 
32
      double precision p1(0:3),p2(0:3),q(0:3),q2,p12q(4)
 
33
      double precision g1,xm,xw
 
34
      double complex g2(2)
 
35
 
 
36
 
 
37
      jggs(5) = ga(5) + gb(5) + sc(2)
 
38
      jggs(6) = ga(6) + gb(6) + sc(3)
 
39
 
 
40
      p1(0) = dble( ga(5))
 
41
      p1(1) = dble( ga(6))
 
42
      p1(2) = dimag(ga(6))
 
43
      p1(3) = dimag(ga(5))
 
44
 
 
45
      p2(0) = dble( gb(5))
 
46
      p2(1) = dble( gb(6))
 
47
      p2(2) = dimag(gb(6))
 
48
      p2(3) = dimag(gb(5))
 
49
 
 
50
      q(0) = -dble( jggs(5))
 
51
      q(1) = -dble( jggs(6))
 
52
      q(2) = -dimag(jggs(6))
 
53
      q(3) = -dimag(jggs(5))
 
54
 
 
55
      q2 = q(0)**2 - q(1)**2 - q(2)**2 - q(3)**2
 
56
 
 
57
      dv = g1 * sc(1) /q2
 
58
 
 
59
      jggs1(1) = (0D0,0D0)
 
60
      jggs1(2) = (0D0,0D0)
 
61
      jggs1(3) = (0D0,0D0)
 
62
      jggs1(4) = (0D0,0D0)
 
63
      jggs2(1) = (0D0,0D0)
 
64
      jggs2(2) = (0D0,0D0)
 
65
      jggs2(3) = (0D0,0D0)
 
66
      jggs2(4) = (0D0,0D0)
 
67
 
 
68
 
 
69
      if (g2(1).NE.(0D0,0D0)) then
 
70
      vab = ga(1)*gb(1) - ga(2)*gb(2) - ga(3)*gb(3) - ga(4)*gb(4)
 
71
      sva =   (p2(0)-q(0)) *ga(1) - (p2(1)-q(1)) *ga(2)
 
72
     &      - (p2(2)-q(2)) *ga(3) - (p2(3)-q(3)) *ga(4)
 
73
      svb = - (p1(0)-q(0)) *gb(1) + (p1(1)-q(1)) *gb(2)
 
74
     &      + (p1(2)-q(2)) *gb(3) + (p1(3)-q(3)) *gb(4)
 
75
 
 
76
      jggs1(1)= g2(1)*((p1(0)-p2(0))*vab + sva*gb(1) + svb*ga(1))
 
77
      jggs1(2)= g2(1)*((p1(1)-p2(1))*vab + sva*gb(2) + svb*ga(2))
 
78
      jggs1(3)= g2(1)*((p1(2)-p2(2))*vab + sva*gb(3) + svb*ga(3))
 
79
      jggs1(4)= g2(1)*((p1(3)-p2(3))*vab + sva*gb(4) + svb*ga(4))
 
80
      endif
 
81
      
 
82
      if (g2(2).NE.(0D0,0D0)) then
 
83
 
 
84
      p12q(1) = p1(0) + p2(0) + q(0)
 
85
      p12q(2) = p1(1) + p2(1) + q(1)
 
86
      p12q(3) = p1(2) + p2(2) + q(2)
 
87
      p12q(4) = p1(3) + p2(3) + q(3)
 
88
 
 
89
      v12 = ga(1)*gb(2) - ga(2)*gb(1)
 
90
      v13 = ga(1)*gb(3) - ga(3)*gb(1)
 
91
      v14 = ga(1)*gb(4) - ga(4)*gb(1)
 
92
      v23 = ga(2)*gb(3) - ga(3)*gb(2)
 
93
      v24 = ga(2)*gb(4) - ga(4)*gb(2)
 
94
      v34 = ga(3)*gb(4) - ga(4)*gb(3)
 
95
 
 
96
      jggs2(1) =   g2(2)*(   v23*p12q(4) - v24*p12q(3) + v34*p12q(2) )
 
97
      jggs2(2) = - g2(2)*( - v13*p12q(4) + v14*p12q(3) - v34*p12q(1) )
 
98
      jggs2(3) = - g2(2)*(   v12*p12q(4) - v14*p12q(2) + v24*p12q(1) )
 
99
      jggs2(4) = - g2(2)*( - v12*p12q(3) + v13*p12q(2) - v23*p12q(1) )
 
100
      endif
 
101
 
 
102
 
 
103
      jggs(1) = dv * (jggs1(1) + jggs2(1))
 
104
      jggs(2) = dv * (jggs1(2) + jggs2(2))
 
105
      jggs(3) = dv * (jggs1(3) + jggs2(3))
 
106
      jggs(4) = dv * (jggs1(4) + jggs2(4))
 
107
 
 
108
 
 
109
      return
 
110
      end