~maddevelopers/mg5amcnlo/3.0.2-alpha0

« back to all changes in this revision

Viewing changes to HELAS/iotxkk.F

Added Template and HELAS into bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      subroutine iotxkk(fi,fo,tc,g,fmass , vertex)
 
2
c
 
3
c This subroutine computes an amplitude of the fermion-fermion-vector
 
4
c coupling.
 
5
c
 
6
c input:
 
7
c       complex fi(6)          : flow-in  fermion                   |fi>
 
8
c       complex fo(6)          : flow-out fermion                   <fo|
 
9
c       complex tc(6,4)        : input    tensor                      t
 
10
c       real    g              : coupling constant                 -kappa/8
 
11
c       real    fmass          : fermion mass                        m_f
 
12
c
 
13
c output:
 
14
c       complex vertex         : amplitude                        <fo|t|fi>
 
15
c     
 
16
      implicit none
 
17
      double complex fi(6), fo(6), tc(6,4), vertex
 
18
      double precision g, fmass
 
19
 
 
20
      double complex k23, k23s, D1, D2, D3, D4, Tii
 
21
      double complex T11, T22, T33, T44, T12, T13, T14, T23, T24, T34
 
22
      double complex f13, f14, f23, f24, f31, f32, f41, f42
 
23
      double precision k(4), k14p, k14m, m2
 
24
 
 
25
      double precision rZero, rTwo
 
26
      parameter( rZero = 0.0d0, rTwo = 2.0d0 )
 
27
      double complex ci
 
28
      parameter( ci = ( 0.0d0, 1.0d0 ) )
 
29
c
 
30
      m2 = rTwo*fmass
 
31
 
 
32
      k(1) = dreal(fi(5)+fo(5))
 
33
      k(2) = dreal(fi(6)+fo(6))
 
34
      k(3) = dimag(fi(6)+fo(6))
 
35
      k(4) = dimag(fi(5)+fo(5))
 
36
      k23  = dcmplx( k(2),k(3) )
 
37
      k23s = dconjg( k23 )
 
38
      k14p = k(1) + k(4)
 
39
      k14m = k(1) - k(4)
 
40
 
 
41
      f13 = fo(1)*fi(3)
 
42
      f14 = fo(1)*fi(4)
 
43
      f23 = fo(2)*fi(3)
 
44
      f24 = fo(2)*fi(4)
 
45
      f31 = fo(3)*fi(1)
 
46
      f32 = fo(3)*fi(2)
 
47
      f41 = fo(4)*fi(1)
 
48
      f42 = fo(4)*fi(2)
 
49
 
 
50
      T11 = rTwo*tc(1,1)
 
51
      T22 = rTwo*tc(2,2)
 
52
      T33 = rTwo*tc(3,3)
 
53
      T44 = rTwo*tc(4,4)
 
54
      T12 = tc(1,2) + tc(2,1)
 
55
      T13 = tc(1,3) + tc(3,1)
 
56
      T14 = tc(1,4) + tc(4,1)
 
57
      T23 = tc(2,3) + tc(3,2)
 
58
      T24 = tc(2,4) + tc(4,2)
 
59
      T34 = tc(3,4) + tc(4,3)
 
60
 
 
61
      D1 =   k(1)*(T11-T14) - k(2)*(T12-T24)
 
62
     &     - k(3)*(T13-T34) - k(4)*(T14-T44)
 
63
 
 
64
      D2 = - k(1)*(T12-ci*T13) + k(2)*(T22-ci*T23)
 
65
     &     + k(3)*(T23-ci*T33) + k(4)*(T24-ci*T34)
 
66
 
 
67
      D3 = - k(1)*(T12+ci*T13) + k(2)*(T22+ci*T23)
 
68
     &     + k(3)*(T23+ci*T33) + k(4)*(T24+ci*T34)
 
69
 
 
70
      D4 =   k(1)*(T11+T14) - k(2)*(T12+T24)
 
71
     &     - k(3)*(T13+T34) - k(4)*(T14+T44)
 
72
 
 
73
      Tii = T11 - T22 - T33 - T44
 
74
 
 
75
      vertex = D1*(f13+f42) + D2*(f14-f32) + D3*(f23-f41) + D4*(f24+f31)
 
76
 
 
77
      vertex = vertex + Tii*( - k14p*(f24+f31) - k14m*(f13+f42)
 
78
     &                        +  k23*(f23-f41) + k23s*(f14-f32) )
 
79
 
 
80
      if ( fmass.ne.rZero ) then
 
81
         vertex = vertex + m2*Tii*(  fo(1)*fi(1) + fo(2)*fi(2)
 
82
     &                             + fo(3)*fi(3) + fo(4)*fi(4) )
 
83
      end if
 
84
 
 
85
      vertex = vertex * g
 
86
c
 
87
      return
 
88
      end