~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/vvssxx.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine vvssxx(v1,v2,s1,s2,gc , vertex)
 
2
c
 
3
c This subroutine computes an amplitude of the vector-vector-scalar-
 
4
c scalar coupling.
 
5
c
 
6
c input:
 
7
c       complex v1(6)          : first  vector                        v1
 
8
c       complex v2(6)          : second vector                        v2
 
9
c       complex s1(3)          : first  scalar                        s1
 
10
c       complex s2(3)          : second scalar                        s2
 
11
c       complex gc             : coupling constant                 gvvhh
 
12
c
 
13
c output:
 
14
c       complex vertex         : amplitude            gamma(v1,v2,s1,s2)
 
15
c     
 
16
      implicit none
 
17
      double complex v1(6),v2(6),s1(3),s2(3),gc,vertex
 
18
 
 
19
#ifdef HELAS_CHECK
 
20
      double precision p0,p1,p2,p3,q0,q1,q2,q3,r0,r1,r2,r3
 
21
      double precision o0,o1,o2,o3,pm
 
22
      double precision epsi
 
23
      parameter( epsi = 4.0d-5 )
 
24
      double precision rZero
 
25
      parameter( rZero = 0.0d0 )
 
26
      double complex cZero
 
27
      parameter( cZero = ( 0.0d0, 0.0d0 ) )
 
28
      integer stdo
 
29
      parameter( stdo = 6 )
 
30
#endif
 
31
c
 
32
#ifdef HELAS_CHECK
 
33
      p0 = dble( v1(2))
 
34
      p1 = dble( v1(3))
 
35
      p2 = dimag(v1(3))
 
36
      p3 = dimag(v1(2))
 
37
      q0 = dble( v2(2))
 
38
      q1 = dble( v2(3))
 
39
      q2 = dimag(v2(3))
 
40
      q3 = dimag(v2(2))
 
41
      r0 = dble( s1(2))
 
42
      r1 = dble( s1(3))
 
43
      r2 = dimag(s1(3))
 
44
      r3 = dimag(s1(2))
 
45
      o0 = dble( s2(2))
 
46
      o1 = dble( s2(3))
 
47
      o2 = dimag(s2(3))
 
48
      o3 = dimag(s2(2))
 
49
      if ( abs(v1(1))+abs(v1(2))+abs(v1(3))+abs(v1(4)).eq.rZero ) then
 
50
         write(stdo,*) ' helas-warn  : v1 in vvssxx is zero vector'
 
51
      endif
 
52
      if ( abs(v1(5))+abs(v1(6)).eq.rZero ) then
 
53
         write(stdo,*)
 
54
     &        ' helas-error : v1 in vvssxx has zero momentum'
 
55
      endif
 
56
      if ( abs(v2(1))+abs(v2(2))+abs(v2(3))+abs(v2(4)).eq.rZero ) then
 
57
         write(stdo,*) ' helas-warn  : v2 in vvssxx is zero vector'
 
58
      endif
 
59
      if ( abs(v2(5))+abs(v2(6)).eq.rZero ) then
 
60
         write(stdo,*)
 
61
     &        ' helas-error : v2 in vvssxx has zero momentum'
 
62
      endif
 
63
      if ( abs(s1(1)).eq.rZero ) then
 
64
         write(stdo,*) ' helas-warn  : s1 in vvssxx is zero scalar'
 
65
      endif
 
66
      if ( abs(s1(2))+abs(s1(3)).eq.rZero ) then
 
67
         write(stdo,*)
 
68
     &        ' helas-error : s1 in vvssxx has zero momentum'
 
69
      endif
 
70
      if ( abs(s2(1)).eq.rZero ) then
 
71
         write(stdo,*) ' helas-warn  : s2 in vvssxx is zero scalar'
 
72
      endif
 
73
      if ( abs(s2(2))+abs(s2(3)).eq.rZero ) then
 
74
         write(stdo,*)
 
75
     &        ' helas-error : s2 in vvssxx has zero momentum'
 
76
      endif
 
77
      pm = max( abs(p0),abs(q0),abs(r0),abs(o0),
 
78
     &          abs(p1),abs(q1),abs(r1),abs(o1),
 
79
     &          abs(p2),abs(q2),abs(r2),abs(o2),
 
80
     &          abs(p3),abs(q3),abs(r3),abs(o3) )
 
81
      if (  abs(v1(5)+v2(5)+s1(2)+s2(2))
 
82
     &     +abs(v1(6)+v2(6)+s1(3)+s2(3)).ge.pm*epsi ) then
 
83
         write(stdo,*)
 
84
     &        ' helas-error : v1,v2,s1,s2 in vvssxx'
 
85
         write(stdo,*) 
 
86
     &        '             : have not balanced momenta'
 
87
       endif
 
88
       if ( gc.eq.cZero ) then
 
89
          write(stdo,*) ' helas-error : gc in vvssxx is zero coupling'
 
90
       endif
 
91
#endif
 
92
 
 
93
      vertex = gc*s1(1)*s2(1)
 
94
     &        *(v1(1)*v2(1)-v1(2)*v2(2)-v1(3)*v2(3)-v1(4)*v2(4))
 
95
c
 
96
      return
 
97
      end