50.9.3
by Johan Alwall
Added Template and HELAS into bzr |
1 |
subroutine vssxxx(vc,s1,s2,gc , vertex) |
2 |
c
|
|
3 |
c This subroutine computes an amplitude from the vector-scalar-scalar
|
|
4 |
c coupling. The coupling is absent in the minimal SM in unitary gauge.
|
|
5 |
c
|
|
6 |
c complex vc(6) : input vector v
|
|
7 |
c complex s1(3) : first scalar s1
|
|
8 |
c complex s2(3) : second scalar s2
|
|
9 |
c complex gc : coupling constant (s1 charge)
|
|
10 |
c
|
|
11 |
c examples of the coupling constant gc for SUSY particles are as follows:
|
|
12 |
c -----------------------------------------------------------
|
|
13 |
c | s1 | (q,i3) of s1 || v=a | v=z | v=w |
|
|
14 |
c -----------------------------------------------------------
|
|
15 |
c | nu~_l | ( 0 , +1/2) || --- | gzn(1) | gwf(1) |
|
|
16 |
c | e~_l | ( -1 , -1/2) || gal(1) | gzl(1) | gwf(1) |
|
|
17 |
c | u~_l | (+2/3 , +1/2) || gau(1) | gzu(1) | gwf(1) |
|
|
18 |
c | d~_l | (-1/3 , -1/2) || gad(1) | gzd(1) | gwf(1) |
|
|
19 |
c -----------------------------------------------------------
|
|
20 |
c | e~_r-bar | ( +1 , 0 ) || -gal(2) | -gzl(2) | -gwf(2) |
|
|
21 |
c | u~_r-bar | (-2/3 , 0 ) || -gau(2) | -gzu(2) | -gwf(2) |
|
|
22 |
c | d~_r-bar | (+1/3 , 0 ) || -gad(2) | -gzd(2) | -gwf(2) |
|
|
23 |
c -----------------------------------------------------------
|
|
24 |
c where the s1 charge is defined by the flowing-OUT quantum number.
|
|
25 |
c
|
|
26 |
c output:
|
|
27 |
c complex vertex : amplitude gamma(v,s1,s2)
|
|
28 |
c
|
|
29 |
implicit none |
|
30 |
double complex vc(6),s1(3),s2(3),gc,vertex |
|
31 |
double precision p(0:3) |
|
32 |
||
33 |
#ifdef HELAS_CHECK
|
|
34 |
double precision p0,p1,p2,p3,q0,q1,q2,q3,r0,r1,r2,r3,pm |
|
35 |
double precision epsi |
|
36 |
parameter( epsi = 4.0d-5 ) |
|
37 |
double precision rZero |
|
38 |
parameter( rZero = 0.0d0 ) |
|
39 |
double complex cZero |
|
40 |
parameter( cZero = ( 0.0d0, 0.0d0 ) ) |
|
41 |
integer stdo |
|
42 |
parameter( stdo = 6 ) |
|
43 |
#endif
|
|
44 |
c
|
|
45 |
#ifdef HELAS_CHECK
|
|
46 |
p0 = dble( s1(2)) |
|
47 |
p1 = dble( s1(3)) |
|
48 |
p2 = dimag(s1(3)) |
|
49 |
p3 = dimag(s1(2)) |
|
50 |
q0 = dble( s2(2)) |
|
51 |
q1 = dble( s2(3)) |
|
52 |
q2 = dimag(s2(3)) |
|
53 |
q3 = dimag(s2(2)) |
|
54 |
r0 = dble( vc(5)) |
|
55 |
r1 = dble( vc(6)) |
|
56 |
r2 = dimag(vc(6)) |
|
57 |
r3 = dimag(vc(5)) |
|
58 |
if ( abs(vc(1))+abs(vc(2))+abs(vc(3))+abs(vc(4)).eq.rZero ) then |
|
59 |
write(stdo,*) ' helas-warn : vc in vssxxx is zero vector' |
|
60 |
endif |
|
61 |
if ( abs(vc(5))+abs(vc(6)).eq.rZero ) then |
|
62 |
write(stdo,*) |
|
63 |
& ' helas-error : vc in vssxxx has zero momentum' |
|
64 |
endif |
|
65 |
if ( s1(1).eq.cZero ) then |
|
66 |
write(stdo,*) ' helas-warn : s1 in vssxxx is zero scalar' |
|
67 |
endif |
|
68 |
if ( abs(s1(2))+abs(s1(3)).eq.rZero ) then |
|
69 |
write(stdo,*) |
|
70 |
& ' helas-error : s1 in vssxxx has zero momentum' |
|
71 |
endif |
|
72 |
if ( s2(1).eq.cZero ) then |
|
73 |
write(stdo,*) ' helas-warn : s2 in vssxxx is zero scalar' |
|
74 |
endif |
|
75 |
if ( abs(s2(2))+abs(s2(3)).eq.rZero ) then |
|
76 |
write(stdo,*) |
|
77 |
& ' helas-error : s2 in vssxxx has zero momentum' |
|
78 |
endif |
|
79 |
pm = max( abs(p0),abs(q0),abs(r0),abs(p1),abs(q1),abs(r1), |
|
80 |
& abs(p2),abs(q2),abs(r2),abs(p3),abs(q3),abs(r3) ) |
|
81 |
if ( abs(vc(5)+s1(2)+s2(2))+abs(vc(6)+s1(3)+s2(3)) |
|
82 |
& .ge.pm*epsi ) then |
|
83 |
write(stdo,*) |
|
84 |
& ' helas-error : vc,s1,s2 in vssxxx' |
|
85 |
write(stdo,*) |
|
86 |
& ' : have not balanced momenta' |
|
87 |
endif |
|
88 |
if ( gc.eq.cZero ) then |
|
89 |
write(stdo,*) ' helas-error : g in vssxxx is zero coupling' |
|
90 |
endif |
|
91 |
#endif
|
|
92 |
||
93 |
p(0) = dble( s1(2)-s2(2)) |
|
94 |
p(1) = dble( s1(3)-s2(3)) |
|
95 |
p(2) = dimag(s1(3)-s2(3)) |
|
96 |
p(3) = dimag(s1(2)-s2(2)) |
|
97 |
||
98 |
vertex = gc*s1(1)*s2(1) |
|
99 |
& *(vc(1)*p(0)-vc(2)*p(1)-vc(3)*p(2)-vc(4)*p(3)) |
|
100 |
c
|
|
101 |
return |
|
102 |
end |