~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/ssssxx.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

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