~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/vvvsxx.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine vvvsxx(ga,gb,gc,sc,g1,g2,vertex)
 
2
c
 
3
c- by RF - Mar. 2006
 
4
c
 
5
c This subroutine computes an amplitude of the coupling of three gauge bosons
 
6
c and a scalar particle
 
7
c
 
8
c input:
 
9
c       complex ga(6)          : first  incoming vector   (gluon)
 
10
c       complex gb(6)          : second incoming vector   (gluon)
 
11
c       complex gc(6)          : third  incoming vector   (gluon)
 
12
c       complex sc(3)          : incoming scalar particle (Higgs)
 
13
c       real    g1             : coupling constant        (QCD)
 
14
c       complex g2(2)          : coupling constant: gc(1) scalar
 
15
c                                                   gc(2) pseudo-scalar
 
16
c
 
17
c output:
 
18
c       complex vertex         : amplitude  
 
19
c
 
20
 
 
21
      implicit none
 
22
 
 
23
c--   dimension of the current set to arbitrary length
 
24
c      INTEGER DIM
 
25
c      PARAMETER(DIM=18)
 
26
      include "dimension.inc"
 
27
      double complex ga(DIM),gb(DIM),gc(DIM),sc(DIM)
 
28
 
 
29
      double complex dvertx, vertex, vertex1, vertex2
 
30
      double complex vab, vbc, vca, v123, v124, v134, v234
 
31
      double complex pgagb, pgagc, pgbga, pgbgc, pgcga, pgcgb
 
32
      double precision pga(0:3),pgb(0:3),pgc(0:3),pabc(4)
 
33
      double precision g1
 
34
      double complex g2(2)
 
35
 
 
36
      pga(0) = dble( ga(5))
 
37
      pga(1) = dble( ga(6))
 
38
      pga(2) = dimag(ga(6))
 
39
      pga(3) = dimag(ga(5))
 
40
 
 
41
      pgb(0) = dble( gb(5))
 
42
      pgb(1) = dble( gb(6))
 
43
      pgb(2) = dimag(gb(6))
 
44
      pgb(3) = dimag(gb(5))
 
45
 
 
46
      pgc(0) = dble( gc(5))
 
47
      pgc(1) = dble( gc(6))
 
48
      pgc(2) = dimag(gc(6))
 
49
      pgc(3) = dimag(gc(5))
 
50
 
 
51
      vertex1 = (0D0,0D0)
 
52
      vertex2 = (0D0,0D0)
 
53
 
 
54
      if (g2(1).NE.(0D0,0D0)) then
 
55
      vab = ga(1)*gb(1)-ga(2)*gb(2)-ga(3)*gb(3)-ga(4)*gb(4)
 
56
      vbc = gb(1)*gc(1)-gb(2)*gc(2)-gb(3)*gc(3)-gb(4)*gc(4)
 
57
      vca = gc(1)*ga(1)-gc(2)*ga(2)-gc(3)*ga(3)-gc(4)*ga(4)
 
58
 
 
59
      pgagb = pga(0)*gb(1) - pga(1)*gb(2) - pga(2)*gb(3) - pga(3)*gb(4)
 
60
      pgagc = pga(0)*gc(1) - pga(1)*gc(2) - pga(2)*gc(3) - pga(3)*gc(4)
 
61
      pgbga = pgb(0)*ga(1) - pgb(1)*ga(2) - pgb(2)*ga(3) - pgb(3)*ga(4)
 
62
      pgbgc = pgb(0)*gc(1) - pgb(1)*gc(2) - pgb(2)*gc(3) - pgb(3)*gc(4)
 
63
      pgcga = pgc(0)*ga(1) - pgc(1)*ga(2) - pgc(2)*ga(3) - pgc(3)*ga(4)
 
64
      pgcgb = pgc(0)*gb(1) - pgc(1)*gb(2) - pgc(2)*gb(3) - pgc(3)*gb(4)
 
65
 
 
66
      dvertx = vab*(pgagc-pgbgc) + vbc*(pgbga-pgcga) + vca*(pgcgb-pgagb)
 
67
      vertex1= dvertx * g2(1)
 
68
      endif
 
69
 
 
70
      if (g2(2).NE.(0D0,0D0)) then
 
71
      pabc(1) = pga(0) + pgb(0) + pgc(0)
 
72
      pabc(2) = pga(1) + pgb(1) + pgc(1)
 
73
      pabc(3) = pga(2) + pgb(2) + pgc(2)
 
74
      pabc(4) = pga(3) + pgb(3) + pgc(3)
 
75
 
 
76
      v123 =   ga(1)*gb(2)*gc(3) - ga(1)*gb(3)*gc(2) - ga(2)*gb(1)*gc(3)
 
77
     &       + ga(2)*gb(3)*gc(1) + ga(3)*gb(1)*gc(2) - ga(3)*gb(2)*gc(1)
 
78
      v124 = - ga(1)*gb(2)*gc(4) + ga(1)*gb(4)*gc(2) + ga(2)*gb(1)*gc(4)
 
79
     &       - ga(2)*gb(4)*gc(1) - ga(4)*gb(1)*gc(2) + ga(4)*gb(2)*gc(1)
 
80
      v134 =   ga(1)*gb(3)*gc(4) - ga(1)*gb(4)*gc(3) - ga(3)*gb(1)*gc(4)
 
81
     &       + ga(3)*gb(4)*gc(1) + ga(4)*gb(1)*gc(3) - ga(4)*gb(3)*gc(1)
 
82
      v234 = - ga(2)*gb(3)*gc(4) + ga(2)*gb(4)*gc(3) + ga(3)*gb(2)*gc(4)
 
83
     &       - ga(3)*gb(4)*gc(2) - ga(4)*gb(2)*gc(3) + ga(4)*gb(3)*gc(2)
 
84
 
 
85
 
 
86
      vertex2= g2(2) * (  v123*pabc(4) + v124*pabc(3)
 
87
     &                  + v134*pabc(2) + v234*pabc(1) )
 
88
      endif
 
89
 
 
90
      vertex = g1*sc(1) * (vertex1 + vertex2)
 
91
 
 
92
      return
 
93
      end