~maddevelopers/mg5amcnlo/2.5.3_lep

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
      subroutine vvvtlx(ga,gb,gc,sc,g1,g2,vertex)
c
c- by RF - Feb. 2006
c
c This subroutine computes an amplitude of the coupling of three gauge bosons
c and a scalar particle
c
c input:
c       complex ga(6)          : first  incoming vector   (gluon)
c       complex gb(6)          : second incoming vector   (gluon)
c       complex gc(6)          : third  incoming vector   (gluon)
c       complex sc(3)          : incoming scalar particle (Higgs)
c       real    g1             : coupling constant        (QCD)
c       complex g2(2)          : coupling constant        (Higgs Effct. Thr.)
c
c output:
c       complex vertex         : amplitude  
c

      implicit none

c--   dimension of the current set to arbitrary length
      INTEGER DIM
      PARAMETER(DIM=18)
c      include "dimension.inc"
      double complex ga(DIM),gb(DIM),gc(DIM),sc(DIM)
      double complex dvertx, vertex, vertex1, vertex2
      double complex vab, vbc, vca, v123, v124, v134, v234
      double complex pgagb, pgagc, pgbga, pgbgc, pgcga, pgcgb
      double precision pga(0:3),pgb(0:3),pgc(0:3),pabc(4)
      double precision g1
      double complex   g2(2)

      pga(0) = dble( ga(5))
      pga(1) = dble( ga(6))
      pga(2) = dimag(ga(6))
      pga(3) = dimag(ga(5))

      pgb(0) = dble( gb(5))
      pgb(1) = dble( gb(6))
      pgb(2) = dimag(gb(6))
      pgb(3) = dimag(gb(5))

      pgc(0) = dble( gc(5))
      pgc(1) = dble( gc(6))
      pgc(2) = dimag(gc(6))
      pgc(3) = dimag(gc(5))

      vertex1 = (0D0,0D0)
      vertex2 = (0D0,0D0)

      if (g2(1).NE.(0D0,0D0)) then
      vab = ga(1)*gb(1)-ga(2)*gb(2)-ga(3)*gb(3)-ga(4)*gb(4)
      vbc = gb(1)*gc(1)-gb(2)*gc(2)-gb(3)*gc(3)-gb(4)*gc(4)
      vca = gc(1)*ga(1)-gc(2)*ga(2)-gc(3)*ga(3)-gc(4)*ga(4)

      pgagb = pga(0)*gb(1) - pga(1)*gb(2) - pga(2)*gb(3) - pga(3)*gb(4)
      pgagc = pga(0)*gc(1) - pga(1)*gc(2) - pga(2)*gc(3) - pga(3)*gc(4)
      pgbga = pgb(0)*ga(1) - pgb(1)*ga(2) - pgb(2)*ga(3) - pgb(3)*ga(4)
      pgbgc = pgb(0)*gc(1) - pgb(1)*gc(2) - pgb(2)*gc(3) - pgb(3)*gc(4)
      pgcga = pgc(0)*ga(1) - pgc(1)*ga(2) - pgc(2)*ga(3) - pgc(3)*ga(4)
      pgcgb = pgc(0)*gb(1) - pgc(1)*gb(2) - pgc(2)*gb(3) - pgc(3)*gb(4)

      dvertx = vab*(pgagc-pgbgc) + vbc*(pgbga-pgcga) + vca*(pgcgb-pgagb)
      vertex1= dvertx * g2(1)
      endif

      if (g2(2).NE.(0D0,0D0)) then
      pabc(1) = pga(0) + pgb(0) + pgc(0)
      pabc(2) = pga(1) + pgb(1) + pgc(1)
      pabc(3) = pga(2) + pgb(2) + pgc(2)
      pabc(4) = pga(3) + pgb(3) + pgc(3)

      v123 =   ga(1)*gb(2)*gc(3) - ga(1)*gb(3)*gc(2) - ga(2)*gb(1)*gc(3)
     &       + ga(2)*gb(3)*gc(1) + ga(3)*gb(1)*gc(2) - ga(3)*gb(2)*gc(1)
      v124 = - ga(1)*gb(2)*gc(4) + ga(1)*gb(4)*gc(2) + ga(2)*gb(1)*gc(4)
     &       - ga(2)*gb(4)*gc(1) - ga(4)*gb(1)*gc(2) + ga(4)*gb(2)*gc(1)
      v134 =   ga(1)*gb(3)*gc(4) - ga(1)*gb(4)*gc(3) - ga(3)*gb(1)*gc(4)
     &       + ga(3)*gb(4)*gc(1) + ga(4)*gb(1)*gc(3) - ga(4)*gb(3)*gc(1)
      v234 = - ga(2)*gb(3)*gc(4) + ga(2)*gb(4)*gc(3) + ga(3)*gb(2)*gc(4)
     &       - ga(3)*gb(4)*gc(2) - ga(4)*gb(2)*gc(3) + ga(4)*gb(3)*gc(2)


      vertex2= g2(2) * (  v123*pabc(4) + v124*pabc(3)
     &                    + v134*pabc(2) + v234*pabc(1) )
      endif

      vertex = g1*sc(1) * (vertex1 + vertex2)

      return
      end