~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/fsigld.f

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
c
 
2
c ----------------------------------------------------------------------
 
3
c
 
4
      subroutine fsigld(fi,sc,gc,fmass,fwidth,smass,mNLSP,idecay , fsi)
 
5
c
 
6
c This subroutine computes an off-shell fermion wavefunction from a
 
7
c flowing-in external fermion and a scalar boson, for the NLSP-boson-
 
8
c Goldstino vertex. The h.c. of the NLSP decay is handled via the
 
9
c input parameter idecay.
 
10
c
 
11
c input:
 
12
c       complex fi(6)          : flow-in  fermion                   |fi>
 
13
c       complex sc(3)          : input    scalar                      s
 
14
c       complex gc(2)          : coupling constants                  gsf
 
15
c       real    fmass          : mass  of output fermion f'
 
16
c       real    fwidth         : width of output fermion f'
 
17
c       integer idecay         :  1 for NLSP decay to Goldstino
 
18
c                              : -1 for Goldstino to NLSP (h.c. of above)
 
19
c
 
20
c output:
 
21
c       complex fsi(6)         : off-shell fermion             |f',s,fi>
 
22
c
 
23
      implicit none
 
24
      double complex  fi(6), sc(3), gc(2), fsi(6), s1, s2, s3, s4, ds
 
25
      double complex  p14p, p14m, p23p, p23m
 
26
      double precision  pf(0:3), fmass, fwidth, mNLSP, smass, pf2
 
27
      integer idecay
 
28
 
 
29
      double complex ci, cZero
 
30
      parameter( ci = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ) )
 
31
c
 
32
      fsi(5) = fi(5) - sc(2)
 
33
      fsi(6) = fi(6) - sc(3)
 
34
 
 
35
      pf(0) = dble( fsi(5))
 
36
      pf(1) = dble( fsi(6))
 
37
      pf(2) = dimag(fsi(6))
 
38
      pf(3) = dimag(fsi(5))
 
39
      pf2 = pf(0)**2 - pf(1)**2 - pf(2)**2 - pf(3)**2
 
40
 
 
41
      if ( idecay.ne.1 .or. idecay.ne.-1 ) then
 
42
         write(6,*) 'error in idecay of FSIGLD'
 
43
         stop
 
44
      end if
 
45
 
 
46
      p14p = dble(sc(2)) + dimag(sc(2))
 
47
      p14m = dble(sc(2)) - dimag(sc(2))
 
48
      p23p = dble(sc(3)) + dimag(sc(3))*ci
 
49
      p23m = dble(sc(3)) - dimag(sc(3))*ci
 
50
 
 
51
      ds = -sc(1)/dcmplx( pf2-fmass**2, fmass*fwidth )
 
52
 
 
53
      s1 = -idecay*gc(1)*fi(1)*smass**2
 
54
      s2 = -idecay*gc(1)*fi(2)*smass**2
 
55
      s3 = gc(1)*mNLSP*( fi(1)*p14p + fi(2)*p23m ) 
 
56
      s4 = gc(1)*mNLSP*( fi(1)*p23p + fi(2)*p14m )
 
57
 
 
58
      if ( gc(2).ne.cZero ) then
 
59
         s1 = s1 + gc(2)*mNLSP*( fi(3)*p14m - fi(4)*p23m )
 
60
         s2 = s2 + gc(2)*mNLSP*(-fi(3)*p23p + fi(4)*p14p )
 
61
         s3 = s3 - gc(2)*idecay*fi(3)*smass**2
 
62
         s4 = s4 - gc(2)*idecay*fi(4)*smass**2
 
63
      end if
 
64
 
 
65
      fsi(1) = ( (pf(0)-pf(3))*s3 - dconjg(fsi(6))*s4 + fmass*s1 )*ds
 
66
      fsi(2) = (       -fsi(6)*s3 +  (pf(0)+pf(3))*s4 + fmass*s2 )*ds
 
67
      fsi(3) = ( (pf(0)+pf(3))*s1 + dconjg(fsi(6))*s2 + fmass*s3 )*ds
 
68
      fsi(4) = (        fsi(6)*s1 +  (pf(0)-pf(3))*s2 + fmass*s4 )*ds
 
69
c
 
70
      return          
 
71
      end