1
subroutine jiodmx(fi,fo,gc,vmass,vwidth , jio)
3
c This subroutine computes an off-shell vector dipole moment
4
c (non-renormalizable) current from an external
5
c fermion pair. The vector boson propagator is given in Feynman gauge
6
c for a massless vector and in unitary gauge for a massive vector.
9
c complex fi(6) : flow-in fermion |fi>
10
c complex fo(6) : flow-out fermion <fo|
11
c complex gc(2,2) : coupling constants gvf
12
c : first index is L,R as normal
13
c : second index is EDM,-MDM
14
c real vmass : mass of output vector v
15
c real vwidth : width of output vector v
18
c complex jio(6) : vector current j^mu(<fo|v|fi>)
21
double complex fi(6), fo(6), jio(6), c0, c1, c2, c3, d
22
double complex gc(2,2), gL, gR
23
double precision q(0:3), vmass, vwidth, q2, vm2, dd
25
double complex f1122, f12, f21, f12p21, f12m21
26
double complex f3344, f34, f43, f34p43, f34m43
27
double complex dumL1, dumL2, dumL3, dumL4
28
double complex dumR1, dumR2, dumR3, dumR4
29
double precision rZero, rOne
30
parameter( rZero = 0.0d0, rOne = 1.0d0 )
31
double complex cImag, cZero
32
parameter( cImag = ( 0.0d0, 1.0d0 ), cZero = ( 0.0d0, 0.0d0 ) )
40
if ( abs(fi(1))+abs(fi(2))+abs(fi(3))+abs(fi(4)).eq.rZero ) then
41
write(stdo,*) ' helas-warn : fi in jiodmx is zero spinor'
43
if ( abs(fi(5))+abs(fi(6)).eq.rZero ) then
45
& ' helas-error : fi in jiodmx has zero momentum'
47
if ( abs(fo(1))+abs(fo(2))+abs(fo(3))+abs(fo(4)).eq.rZero ) then
48
write(stdo,*) ' helas-warn : fo in jiodmx is zero spinor'
50
if ( abs(fo(5))+abs(fo(6)).eq.rZero ) then
52
& ' helas-error : fo in jiodmx has zero momentum'
54
if ( gc(1,1).eq.cZero .and. gc(2,1).eq.cZero .and.
55
& gc(1,2).eq.cZero .and. gc(2,2).eq.cZero ) then
57
& ' helas-error : gc in jiodmx is zero coupling'
59
if ( vmass.lt.rZero ) then
60
write(stdo,*) ' helas-error : vmass in jiodmx is negative'
61
write(stdo,*) ' : vmass = ',vmass
63
if ( vwidth.lt.rZero ) then
64
write(stdo,*) ' helas-error : vwidth in jiodmx is negative'
65
write(stdo,*) ' : vwidth = ',vwidth
69
gL = -gc(1,1) + cImag*gc(1,2)
70
gR = gc(2,1) + cImag*gc(2,2)
72
jio(5) = fo(5) - fi(5)
73
jio(6) = fo(6) - fi(6)
79
q2 = q(0)**2-(q(1)**2+q(2)**2+q(3)**2)
83
if ( abs(jio(5))+abs(jio(6)).eq.rZero ) then
85
& ' helas-error : jio in jiodmx has zero momentum'
87
if ( vwidth.eq.rZero .and. q2.eq.vm2 ) then
89
& ' helas-error : jio in jiodmxq is on vmass pole'
91
& ' : q = ',q(0),q(1),q(2),q(3)
93
& ' : abs(q)= ',sqrt(abs(q2))
102
f1122 = fo(1)*fi(1) - fo(2)*fi(2)
107
if ( gc(2,1).ne.cZero .or. gc(2,2).ne.cZero ) then
108
f3344 = fo(3)*fi(3) - fo(4)*fi(4)
115
c note overall (-), since k in vertex is -q above
116
dumL1 = -q(2)*f12m21 - cImag*( q(1)*f12p21 + q(3)*f1122 )
117
dumL2 = q(2)*f1122 - cImag*( q(0)*f12p21 - q(3)*f12m21 )
118
dumL3 = -q(0)*f12m21 - q(1)*f1122 - q(3)*f12p21
119
dumL4 = -q(2)*f12p21 - cImag*( q(0)*f1122 + q(1)*f12m21 )
120
if ( gc(2,1).ne.cZero .or. gc(2,2).ne.cZero ) then
121
dumR1 = q(2)*f34m43 + cImag*( q(1)*f34p43 + q(3)*f3344 )
122
dumR2 = q(2)*f3344 + cImag*( q(0)*f34p43 + q(3)*f34m43 )
123
dumR3 = q(0)*f34m43 - q(1)*f3344 - q(3)*f34p43
124
dumR4 = -q(2)*f34p43 + cImag*( q(0)*f3344 - q(1)*f34m43 )
127
if ( vmass.ne.rZero ) then
129
d = rOne/dcmplx( q2-vm2, vmass*vwidth )
136
if ( gc(2,1).ne.cZero .or.
137
& gc(2,2).ne.cZero ) then
158
if ( gc(2,1).ne.cZero .or.
159
& gc(2,2).ne.cZero ) then
160
jio(1) = jio(1) + gR*dumR1
161
jio(2) = jio(2) + gR*dumR2
162
jio(3) = jio(3) + gR*dumR3
163
jio(4) = jio(4) + gR*dumR4