~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/sssxxx.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

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