~madteam/mg5amcnlo/series2.0

50.9.3 by Johan Alwall
Added Template and HELAS into bzr
1
      subroutine vssxxx(vc,s1,s2,gc , vertex)
2
c
3
c This subroutine computes an amplitude from the vector-scalar-scalar
4
c coupling.  The coupling is absent in the minimal SM in unitary gauge.
5
c
6
c       complex vc(6)          : input  vector                        v
7
c       complex s1(3)          : first  scalar                        s1
8
c       complex s2(3)          : second scalar                        s2
9
c       complex gc             : coupling constant (s1 charge)
10
c
11
c examples of the coupling constant gc for SUSY particles are as follows:
12
c   -----------------------------------------------------------
13
c   |    s1    | (q,i3) of s1  ||   v=a   |   v=z   |   v=w   |
14
c   -----------------------------------------------------------
15
c   | nu~_l    | (  0  , +1/2) ||   ---   |  gzn(1) |  gwf(1) |
16
c   | e~_l     | ( -1  , -1/2) ||  gal(1) |  gzl(1) |  gwf(1) |
17
c   | u~_l     | (+2/3 , +1/2) ||  gau(1) |  gzu(1) |  gwf(1) |
18
c   | d~_l     | (-1/3 , -1/2) ||  gad(1) |  gzd(1) |  gwf(1) |
19
c   -----------------------------------------------------------
20
c   | e~_r-bar | ( +1  ,  0  ) || -gal(2) | -gzl(2) | -gwf(2) |
21
c   | u~_r-bar | (-2/3 ,  0  ) || -gau(2) | -gzu(2) | -gwf(2) |
22
c   | d~_r-bar | (+1/3 ,  0  ) || -gad(2) | -gzd(2) | -gwf(2) |
23
c   -----------------------------------------------------------
24
c where the s1 charge is defined by the flowing-OUT quantum number.
25
c
26
c output:
27
c       complex vertex         : amplitude                gamma(v,s1,s2)
28
c     
29
      implicit none
30
      double complex vc(6),s1(3),s2(3),gc,vertex
31
      double precision p(0:3)
32
33
#ifdef HELAS_CHECK
34
      double precision p0,p1,p2,p3,q0,q1,q2,q3,r0,r1,r2,r3,pm
35
      double precision epsi
36
      parameter( epsi = 4.0d-5 )
37
      double precision rZero
38
      parameter( rZero = 0.0d0 )
39
      double complex cZero
40
      parameter( cZero = ( 0.0d0, 0.0d0 ) )
41
      integer stdo
42
      parameter( stdo = 6 )
43
#endif
44
c
45
#ifdef HELAS_CHECK
46
      p0 = dble( s1(2))
47
      p1 = dble( s1(3))
48
      p2 = dimag(s1(3))
49
      p3 = dimag(s1(2))
50
      q0 = dble( s2(2))
51
      q1 = dble( s2(3))
52
      q2 = dimag(s2(3))
53
      q3 = dimag(s2(2))
54
      r0 = dble( vc(5))
55
      r1 = dble( vc(6))
56
      r2 = dimag(vc(6))
57
      r3 = dimag(vc(5))
58
      if ( abs(vc(1))+abs(vc(2))+abs(vc(3))+abs(vc(4)).eq.rZero ) then
59
         write(stdo,*) ' helas-warn  : vc in vssxxx is zero vector'
60
      endif
61
      if ( abs(vc(5))+abs(vc(6)).eq.rZero ) then
62
         write(stdo,*)
63
     &        ' helas-error : vc in vssxxx has zero momentum'
64
      endif
65
      if ( s1(1).eq.cZero ) then
66
         write(stdo,*) ' helas-warn  : s1 in vssxxx is zero scalar'
67
      endif
68
      if ( abs(s1(2))+abs(s1(3)).eq.rZero ) then
69
         write(stdo,*)
70
     &        ' helas-error : s1 in vssxxx has zero momentum'
71
      endif
72
      if ( s2(1).eq.cZero ) then
73
         write(stdo,*) ' helas-warn  : s2 in vssxxx is zero scalar'
74
      endif
75
      if ( abs(s2(2))+abs(s2(3)).eq.rZero ) then
76
         write(stdo,*)
77
     &        ' helas-error : s2 in vssxxx has zero momentum'
78
      endif
79
      pm = max( abs(p0),abs(q0),abs(r0),abs(p1),abs(q1),abs(r1),
80
     &          abs(p2),abs(q2),abs(r2),abs(p3),abs(q3),abs(r3) )
81
      if ( abs(vc(5)+s1(2)+s2(2))+abs(vc(6)+s1(3)+s2(3))
82
     &                                              .ge.pm*epsi ) then
83
         write(stdo,*)
84
     &        ' helas-error : vc,s1,s2 in vssxxx'
85
         write(stdo,*)
86
     &        '             : have not balanced momenta'
87
      endif
88
      if ( gc.eq.cZero ) then
89
         write(stdo,*) ' helas-error : g in vssxxx is zero coupling'
90
      endif
91
#endif
92
93
      p(0) = dble( s1(2)-s2(2))
94
      p(1) = dble( s1(3)-s2(3))
95
      p(2) = dimag(s1(3)-s2(3))
96
      p(3) = dimag(s1(2)-s2(2))
97
98
      vertex = gc*s1(1)*s2(1)
99
     &        *(vc(1)*p(0)-vc(2)*p(1)-vc(3)*p(2)-vc(4)*p(3))
100
c
101
      return
102
      end