1
subroutine txxxxx(p,tmass,nhel,nst , tc)
3
c This subroutine computes a TENSOR wavefunction.
6
c real p(0:3) : four-momentum of tensor boson
7
c real tmass : mass of tensor boson
8
c integer nhel : helicity of tensor boson
9
c = -2,-1,0,1,2 : (0 is forbidden if tmass=0.0)
10
c integer nst = -1 or 1 : +1 for final, -1 for initial
13
c complex tc(18) : tensor wavefunction epsilon^mu^nu(t)
16
double precision p(0:3), tmass
20
double complex ft(6,4), ep(4), em(4), e0(4)
21
double precision pt, pt2, pp, pzpt, emp, sqh, sqs
24
double precision rZero, rHalf, rOne, rTwo
25
parameter( rZero = 0.0d0, rHalf = 0.5d0 )
26
parameter( rOne = 1.0d0, rTwo = 2.0d0 )
32
sqs = sqrt(rHalf/3.d0)
34
pt2 = p(1)**2 + p(2)**2
35
pp = min(p(0),sqrt(pt2+p(3)**2))
36
pt = min(pp,sqrt(pt2))
38
ft(5,1) = dcmplx(p(0),p(3))*nst
39
ft(6,1) = dcmplx(p(1),p(2))*nst
43
if ( pp.eq.rZero ) then
44
ep(1) = dcmplx( rZero )
45
ep(2) = dcmplx( -sqh )
46
ep(3) = dcmplx( rZero , nst*sqh )
47
ep(4) = dcmplx( rZero )
49
ep(1) = dcmplx( rZero )
50
ep(4) = dcmplx( pt/pp*sqh )
51
if ( pt.ne.rZero ) then
52
pzpt = p(3)/(pp*pt)*sqh
53
ep(2) = dcmplx( -p(1)*pzpt , -nst*p(2)/pt*sqh )
54
ep(3) = dcmplx( -p(2)*pzpt , nst*p(1)/pt*sqh )
56
ep(2) = dcmplx( -sqh )
57
ep(3) = dcmplx( rZero , nst*sign(sqh,p(3)) )
64
if ( pp.eq.rZero ) then
65
em(1) = dcmplx( rZero )
67
em(3) = dcmplx( rZero , nst*sqh )
68
em(4) = dcmplx( rZero )
70
em(1) = dcmplx( rZero )
71
em(4) = dcmplx( -pt/pp*sqh )
72
if ( pt.ne.rZero ) then
73
pzpt = -p(3)/(pp*pt)*sqh
74
em(2) = dcmplx( -p(1)*pzpt , -nst*p(2)/pt*sqh )
75
em(3) = dcmplx( -p(2)*pzpt , nst*p(1)/pt*sqh )
78
em(3) = dcmplx( rZero , nst*sign(sqh,p(3)) )
83
if ( abs(nhel).le.1 ) then
85
if ( pp.eq.rZero ) then
86
e0(1) = dcmplx( rZero )
87
e0(2) = dcmplx( rZero )
88
e0(3) = dcmplx( rZero )
89
e0(4) = dcmplx( rOne )
92
e0(1) = dcmplx( pp/tmass )
93
e0(4) = dcmplx( p(3)*emp )
94
if ( pt.ne.rZero ) then
95
e0(2) = dcmplx( p(1)*emp )
96
e0(3) = dcmplx( p(2)*emp )
98
e0(2) = dcmplx( rZero )
99
e0(3) = dcmplx( rZero )
104
if ( nhel.eq.2 ) then
107
ft(i,j) = ep(i)*ep(j)
110
else if ( nhel.eq.-2 ) then
113
ft(i,j) = em(i)*em(j)
116
else if (tmass.eq.0) then
122
else if (tmass.ne.0) then
123
if ( nhel.eq.1 ) then
126
ft(i,j) = sqh*( ep(i)*e0(j) + e0(i)*ep(j) )
129
else if ( nhel.eq.0 ) then
132
ft(i,j) = sqs*( ep(i)*em(j) + em(i)*ep(j)
133
& + rTwo*e0(i)*e0(j) )
136
else if ( nhel.eq.-1 ) then
139
ft(i,j) = sqh*( em(i)*e0(j) + e0(i)*em(j) )
143
write(stdo,*) 'invalid helicity in TXXXXX'