~chirality-flow/chiralityflow/ChiralityFlowMG

« back to all changes in this revision

Viewing changes to HELAS/hvvvxx.F

  • Committer: andrew.lifson at lu
  • Date: 2021-09-02 13:57:34 UTC
  • Revision ID: andrew.lifson@thep.lu.se-20210902135734-4eybgli0iljkax9b
added fresh copy of MG5_aMC_v3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine hvvvxx(ga,gb,gc,g1,g2,mass,width,jhvvv)
 
2
c
 
3
c- by RF - Mar. 2006
 
4
c
 
5
c This subroutine computes an off-shell (pseudo-)scalar current
 
6
c from the coupling of three gauge bosons
 
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       real    g1             : coupling constant        (QCD)
 
13
c       complex g2             : coupling constant: g2(1) scalar
 
14
c                                                   g2(2) pseudo-scalar
 
15
c       real mass              : mass of the outgoing scalar
 
16
c       real width             : width of the outgoing scalar
 
17
c
 
18
c output:
 
19
c       complex jhvvv(3)       : output (pseudo-)scalar current
 
20
c
 
21
 
 
22
      implicit none
 
23
 
 
24
c--   dimension of the current set to arbitrary length
 
25
      INTEGER DIM
 
26
      PARAMETER(DIM=18)
 
27
c      include "dimension.inc"
 
28
      double complex ga(DIM),gb(DIM),gc(DIM),jhvvv(DIM)
 
29
 
 
30
      double complex dvertx, vertex, vertex1, vertex2,dj
 
31
      double complex vab, vbc, vca, v123, v124, v134, v234
 
32
      double complex pgagb, pgagc, pgbga, pgbgc, pgcga, pgcgb
 
33
      double precision pga(0:3),pgb(0:3),pgc(0:3),pabc(4)
 
34
      double precision g1,mass, width, q2, q(4)
 
35
      double complex g2(2)
 
36
 
 
37
      pga(0) = dble( ga(5))
 
38
      pga(1) = dble( ga(6))
 
39
      pga(2) = dimag(ga(6))
 
40
      pga(3) = dimag(ga(5))
 
41
 
 
42
      pgb(0) = dble( gb(5))
 
43
      pgb(1) = dble( gb(6))
 
44
      pgb(2) = dimag(gb(6))
 
45
      pgb(3) = dimag(gb(5))
 
46
 
 
47
      pgc(0) = dble( gc(5))
 
48
      pgc(1) = dble( gc(6))
 
49
      pgc(2) = dimag(gc(6))
 
50
      pgc(3) = dimag(gc(5))
 
51
 
 
52
      vertex1 = (0D0,0D0)
 
53
      vertex2 = (0D0,0D0)
 
54
 
 
55
 
 
56
      jhvvv(2) = ga(5) + gb(5) + gc(5)
 
57
      jhvvv(3) = ga(6) + gb(6) + gc(6)
 
58
 
 
59
 
 
60
      q(1) = -dble( jhvvv(2))
 
61
      q(2) = -dble( jhvvv(3))
 
62
      q(3) = -dimag(jhvvv(3))
 
63
      q(4) = -dimag(jhvvv(2))
 
64
 
 
65
      q2 = q(1)**2 - q(2)**2 - q(3)**2 - q(4)**2
 
66
 
 
67
      dj = g1 /dcmplx( q2-mass**2, mass*width )
 
68
 
 
69
 
 
70
      if (g2(1).NE.(0D0,0D0)) then
 
71
      vab = ga(1)*gb(1)-ga(2)*gb(2)-ga(3)*gb(3)-ga(4)*gb(4)
 
72
      vbc = gb(1)*gc(1)-gb(2)*gc(2)-gb(3)*gc(3)-gb(4)*gc(4)
 
73
      vca = gc(1)*ga(1)-gc(2)*ga(2)-gc(3)*ga(3)-gc(4)*ga(4)
 
74
 
 
75
      pgagb = pga(0)*gb(1) - pga(1)*gb(2) - pga(2)*gb(3) - pga(3)*gb(4)
 
76
      pgagc = pga(0)*gc(1) - pga(1)*gc(2) - pga(2)*gc(3) - pga(3)*gc(4)
 
77
      pgbga = pgb(0)*ga(1) - pgb(1)*ga(2) - pgb(2)*ga(3) - pgb(3)*ga(4)
 
78
      pgbgc = pgb(0)*gc(1) - pgb(1)*gc(2) - pgb(2)*gc(3) - pgb(3)*gc(4)
 
79
      pgcga = pgc(0)*ga(1) - pgc(1)*ga(2) - pgc(2)*ga(3) - pgc(3)*ga(4)
 
80
      pgcgb = pgc(0)*gb(1) - pgc(1)*gb(2) - pgc(2)*gb(3) - pgc(3)*gb(4)
 
81
 
 
82
      dvertx = vab*(pgagc-pgbgc) + vbc*(pgbga-pgcga) + vca*(pgcgb-pgagb)
 
83
      vertex1= - dvertx * g2(1)
 
84
      endif
 
85
 
 
86
      if (g2(2).NE.(0D0,0D0)) then
 
87
      pabc(1) = pga(0) + pgb(0) + pgc(0)
 
88
      pabc(2) = pga(1) + pgb(1) + pgc(1)
 
89
      pabc(3) = pga(2) + pgb(2) + pgc(2)
 
90
      pabc(4) = pga(3) + pgb(3) + pgc(3)
 
91
 
 
92
      v123 =   ga(1)*gb(2)*gc(3) - ga(1)*gb(3)*gc(2) - ga(2)*gb(1)*gc(3)
 
93
     &       + ga(2)*gb(3)*gc(1) + ga(3)*gb(1)*gc(2) - ga(3)*gb(2)*gc(1)
 
94
      v124 = - ga(1)*gb(2)*gc(4) + ga(1)*gb(4)*gc(2) + ga(2)*gb(1)*gc(4)
 
95
     &       - ga(2)*gb(4)*gc(1) - ga(4)*gb(1)*gc(2) + ga(4)*gb(2)*gc(1)
 
96
      v134 =   ga(1)*gb(3)*gc(4) - ga(1)*gb(4)*gc(3) - ga(3)*gb(1)*gc(4)
 
97
     &       + ga(3)*gb(4)*gc(1) + ga(4)*gb(1)*gc(3) - ga(4)*gb(3)*gc(1)
 
98
      v234 = - ga(2)*gb(3)*gc(4) + ga(2)*gb(4)*gc(3) + ga(3)*gb(2)*gc(4)
 
99
     &       - ga(3)*gb(4)*gc(2) - ga(4)*gb(2)*gc(3) + ga(4)*gb(3)*gc(2)
 
100
 
 
101
 
 
102
      vertex2= - g2(2) * (  v123*pabc(4) + v124*pabc(3)
 
103
     &                    + v134*pabc(2) + v234*pabc(1) )
 
104
      endif
 
105
 
 
106
      jhvvv(1) = dj * (vertex1 + vertex2)
 
107
 
 
108
      return
 
109
      end