~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/fvtokk.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine ftoxkk(fo,tc,g,fmass,fwidth , fto)
 
2
c
 
3
c This subroutine computes an off-shell fermion wavefunction from a
 
4
c flowing-OUT external fermion and a KK tensor boson.
 
5
c
 
6
c input:
 
7
c       complex fo(6)          : flow-out fermion                   <fo|
 
8
c       complex tc(6,4)        : input    tensor                      t
 
9
c       real    g              : coupling constant                   gtf
 
10
c       real    fmass          : mass  of OUTPUT fermion f'
 
11
c       real    fwidth         : width of OUTPUT fermion f'
 
12
c
 
13
c output:
 
14
c       complex fvo(6)         : off-shell fermion             <fo,t,f'|
 
15
c
 
16
      implicit none
 
17
      double complex fo(6), tc(6,4), fto(6), d
 
18
      double complex k14p, k14m, k23, k23s, p14p, p14m
 
19
      double complex D1, D2, D3, D4, Tii, mTii
 
20
      double complex T11, T22, T33, T44, T12, T13, T14, T23, T24, T34
 
21
      double precision g, fmass, fwidth, pf(4), k(4), pf2, m2
 
22
      integer i
 
23
 
 
24
      double precision rZero, rTwo
 
25
      parameter( rZero = 0.0d0, rTwo = 2.0d0 )
 
26
      double complex ci
 
27
      parameter( ci = ( 0.0d0, 1.0d0 ) )
 
28
c
 
29
      m2 = rTwo*fmass
 
30
 
 
31
      fto(5) = fo(5) + tc(5,1)
 
32
      fto(6) = fo(6) + tc(6,1)
 
33
 
 
34
      pf(1) = dreal(fto(5))
 
35
      pf(2) = dreal(fto(6))
 
36
      pf(3) = dimag(fto(6))
 
37
      pf(4) = dimag(fto(5))
 
38
      pf2 = pf(1)**2 - pf(2)**2 - pf(3)**2 - pf(4)**2
 
39
 
 
40
      k(1) = dreal(fo(5)) + pf(1)
 
41
      k(2) = dreal(fo(6)) + pf(2)
 
42
      k(3) = dimag(fo(6)) + pf(3)
 
43
      k(4) = dimag(fo(5)) + pf(4)
 
44
 
 
45
      k14p = dcmplx( k(1)+k(4), rZero )
 
46
      k14m = dcmplx( k(1)-k(4), rZero )
 
47
      k23  = dcmplx( k(2), k(3) )
 
48
      k23s = dconjg( k23 )
 
49
      p14p = dcmplx( pf(1)+pf(4), rZero )
 
50
      p14m = dcmplx( pf(1)-pf(4), rZero )
 
51
 
 
52
      T11 = rTwo*tc(1,1)
 
53
      T22 = rTwo*tc(2,2)
 
54
      T33 = rTwo*tc(3,3)
 
55
      T44 = rTwo*tc(4,4)
 
56
      T12 = tc(1,2) + tc(2,1)
 
57
      T13 = tc(1,3) + tc(3,1)
 
58
      T14 = tc(1,4) + tc(4,1)
 
59
      T23 = tc(2,3) + tc(3,2)
 
60
      T24 = tc(2,4) + tc(4,2)
 
61
      T34 = tc(3,4) + tc(4,3)
 
62
 
 
63
      D1 =   k(1)*(T11-T14) + k(2)*(T24-T12)
 
64
     &     + k(3)*(T34-T13) + k(4)*(T44-T14)
 
65
 
 
66
      D2 =   k(1)*(ci*T13-T12) + k(2)*(T22-ci*T23)
 
67
     &     + k(3)*(T23-ci*T33) + k(4)*(T24-ci*T34)
 
68
 
 
69
      D3 = - k(1)*(T12+ci*T13) + k(2)*(T22+ci*T23)
 
70
     &     + k(3)*(T23+ci*T33) + k(4)*(T24+ci*T34)
 
71
 
 
72
      D4 =   k(1)*(T11+T14) - k(2)*(T12+T24)
 
73
     &     - k(3)*(T13+T34) - k(4)*(T14+T44)
 
74
 
 
75
      Tii  = 16.d0*(T11 - T22 - T33 - T44)
 
76
      mTii = fmass*Tii
 
77
 
 
78
      if ( fmass.gt.rZero ) then
 
79
         d = - g/dcmplx( pf2-fmass**2, fmass*fwidth )
 
80
      else
 
81
         d = - g/dcmplx( pf2, rZero )
 
82
      end if
 
83
 
 
84
      fto(1) =   fo(1)*(p14p*D1 + fto(6)*D2)
 
85
     &         + fo(2)*(p14p*D3 + fto(6)*D4)
 
86
     &         + Tii*(- fo(1)*(p14p*k14m - fto(6)*k23s)
 
87
     &                + fo(2)*(p14p*k23  - fto(6)*k14p) )
 
88
 
 
89
      fto(2) =   fo(1)*(dconjg(fto(6))*D1 + p14m*D2)
 
90
     &         + fo(2)*(dconjg(fto(6))*D3 + p14m*D4)
 
91
     &         + Tii*(  fo(1)*(p14m*k23s - dconjg(fto(6))*k14m)
 
92
     &                - fo(2)*(p14m*k14p - dconjg(fto(6))*k23 ) )
 
93
 
 
94
      fto(3) =   fo(3)*(p14m*D4 + fto(6)*D2)
 
95
     &         + fo(4)*(p14m*D3 - fto(6)*D1)
 
96
     &         + Tii*(  fo(3)*(fto(6)*k23s - p14m*k14p)
 
97
     &                + fo(4)*(fto(6)*k14m - p14m*k23 ) )
 
98
 
 
99
      fto(4) = - fo(3)*(dconjg(fto(6))*D4 + p14p*D2)
 
100
     &         + fo(4)*(dconjg(fto(6))*D3 - p14p*D1)
 
101
     &         + Tii*(  fo(3)*(dconjg(fto(6))*k14p - p14p*k23s)
 
102
     &                + fo(4)*(dconjg(fto(6))*k23  - p14p*k14m) )
 
103
 
 
104
      if ( fmass.gt.rZero ) then
 
105
         fto(1) = fto(1) + fmass*( D4*fo(3) - D3*fo(4) )
 
106
         fto(2) = fto(2) + fmass*(-D2*fo(3) + D1*fo(4) )
 
107
         fto(3) = fto(3) + fmass*( D1*fo(1) + D3*fo(2) )
 
108
         fto(4) = fto(4) + fmass*( D2*fo(1) + D4*fo(2) )
 
109
         do i = 1,4
 
110
            fto(i) = fto(i) + mTii*m2*fo(i)
 
111
         end do
 
112
         fto(1) = fto(1) + mTii*(  fo(3)*(rTwo*p14p - k14p)
 
113
     &                           + fo(4)*(rTwo*fto(6) - k23) )
 
114
         fto(2) = fto(2) + mTii*(  fo(3)*(rTwo*dconjg(fto(6)) - k23s)
 
115
     &                           + fo(4)*(rTwo*p14m - k14m) )
 
116
         fto(3) = fto(3) + mTii*(  fo(1)*(rTwo*p14m - k14m)
 
117
     &                           + fo(2)*(k23 - rTwo*fto(6)) )
 
118
         fto(4) = fto(4) + mTii*(  fo(1)*(k23s - rTwo*dconjg(fto(6)))
 
119
     &                           + fo(2)*(rTwo*p14p - k14p) )
 
120
      end if
 
121
 
 
122
      do i = 1,4
 
123
         fto(i) = fto(i)*d
 
124
      end do
 
125
c
 
126
      return
 
127
      end