1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
subroutine jiogox(fi,fo,gc,vmass,vwidth , jio)
c
c This subroutine computes an off-shell vector current from an external
c fermion pair. The vector boson propagator is given in Feynman gauge
c for a massless vector and in unitary gauge for a massive vector in the
c case when they are all color octets.
c
c input:
c complex fi(6) : flow-in fermion |fi>
c complex fo(6) : flow-out fermion <fo|
c complex gc(2) : coupling constants gvf
c real vmass : mass of OUTPUT vector v
c real vwidth : width of OUTPUT vector v
c
c output:
c complex jio(6) : vector current j^mu(<fo|v|fi>)
c
implicit none
double complex fi(6),fo(6),gc(2),jio(6),c0,c1,c2,c3,cs,d
double precision q(0:3),vmass,vwidth,q2,vm2
double complex cm2 ! mass**2- I Gamma mass (Fabio)
double precision rZero, rOne
parameter( rZero = 0.0d0, rOne = 1.0d0 )
double complex cImag, cZero
parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ) )
jio(5) = fo(5)-fi(5)
jio(6) = fo(6)-fi(6)
q(0) = dble( jio(5))
q(1) = dble( jio(6))
q(2) = dimag(jio(6))
q(3) = dimag(jio(5))
q2 = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
vm2 = vmass**2
if ( vmass.ne.rZero ) then
d = rOne/dcmplx( q2-vm2, vmass*vwidth )
c For the running width, use below instead of the above d.
c d = rOne/dcmplx( q2-vm2, max(vwidth*q2/vmass,rZero) )
if ( gc(2).ne.cZero ) then
c0 = gc(1)*( fo(3)*fi(1)+fo(4)*fi(2))
& +gc(2)*( fo(1)*fi(3)+fo(2)*fi(4))
c1 = -gc(1)*( fo(3)*fi(2)+fo(4)*fi(1))
& +gc(2)*( fo(1)*fi(4)+fo(2)*fi(3))
c2 =( gc(1)*( fo(3)*fi(2)-fo(4)*fi(1))
& +gc(2)*(-fo(1)*fi(4)+fo(2)*fi(3)))*cImag
c3 = gc(1)*(-fo(3)*fi(1)+fo(4)*fi(2))
& +gc(2)*( fo(1)*fi(3)-fo(2)*fi(4))
else
d = d*gc(1)
c0 = fo(3)*fi(1)+fo(4)*fi(2)
c1 = -fo(3)*fi(2)-fo(4)*fi(1)
c2 = ( fo(3)*fi(2)-fo(4)*fi(1))*cImag
c3 = -fo(3)*fi(1)+fo(4)*fi(2)
end if
c Fabio's implementation of the fixed width
cm2=dcmplx( vm2, -vmass*vwidth )
c cs = (q(0)*c0-q(1)*c1-q(2)*c2-q(3)*c3)/vm2
cs = (q(0)*c0-q(1)*c1-q(2)*c2-q(3)*c3)/cm2
jio(1) = (c0-cs*q(0))*d
jio(2) = (c1-cs*q(1))*d
jio(3) = (c2-cs*q(2))*d
jio(4) = (c3-cs*q(3))*d
else
d = dcmplx( rOne/q2, rZero )
if ( gc(2).ne.cZero ) then
jio(1) = ( gc(1)*( fo(3)*fi(1)+fo(4)*fi(2))
& +gc(2)*( fo(1)*fi(3)+fo(2)*fi(4)) )*d
jio(2) = (-gc(1)*( fo(3)*fi(2)+fo(4)*fi(1))
& +gc(2)*( fo(1)*fi(4)+fo(2)*fi(3)) )*d
jio(3) = ( gc(1)*( fo(3)*fi(2)-fo(4)*fi(1))
& +gc(2)*(-fo(1)*fi(4)+fo(2)*fi(3)))
& *d*cImag
jio(4) = ( gc(1)*(-fo(3)*fi(1)+fo(4)*fi(2))
& +gc(2)*( fo(1)*fi(3)-fo(2)*fi(4)) )*d
else
d = d*gc(1)
jio(1) = ( fo(3)*fi(1)+fo(4)*fi(2))*d
jio(2) = -( fo(3)*fi(2)+fo(4)*fi(1))*d
jio(3) = ( fo(3)*fi(2)-fo(4)*fi(1))*d*cImag
jio(4) = (-fo(3)*fi(1)+fo(4)*fi(2))*d
end if
end if
c
return
end
|