You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
1.6 KiB
85 lines
1.6 KiB
!
|
|
! SPDX-License-Identifier: GPL-3.0-or-later
|
|
! Copyright (C) 2019-2022, respective authors of MCFM.
|
|
!
|
|
|
|
subroutine ubarspinor0(q,i,f)
|
|
implicit none
|
|
include 'types.f'
|
|
include 'cplx.h'
|
|
c-----subroutine for massless ubar spinor
|
|
c Weyl representation
|
|
|
|
include 'swapxz.f'
|
|
integer:: i
|
|
complex(dp):: p(4),q(4),f(4),fc,czip
|
|
real(dp):: px,py,phase
|
|
parameter(czip=(0._dp,0._dp))
|
|
logical,save::first
|
|
data first/.true./
|
|
|
|
if (first) then
|
|
write(6,*) 'ubarspinor0:swapxz=',swapxz
|
|
first=.false.
|
|
endif
|
|
|
|
c Translate from MCFM notation
|
|
p(1)=q(4)
|
|
p(2)=q(3)
|
|
p(3)=-q(2)
|
|
p(4)=q(1)
|
|
if (swapxz) then
|
|
c performing the swap (x<->z),(y->-y)
|
|
p(1)=q(4)
|
|
p(2)=q(3)
|
|
p(3)=-q(2)
|
|
p(4)=q(1)
|
|
else
|
|
p(1)=q(4)
|
|
p(2)=q(1)
|
|
p(3)=q(2)
|
|
p(4)=q(3)
|
|
endif
|
|
|
|
px=+real(p(2))
|
|
py=+real(p(3))
|
|
c pz=+real(p(4))
|
|
|
|
fc=sqrt(p(1)+p(4))
|
|
if (real(p(1)+p(4)) > 0) then
|
|
phase=1._dp
|
|
else
|
|
phase=-1._dp
|
|
endif
|
|
|
|
|
|
|
|
if (abs(fc)>1.e-8_dp) then
|
|
if (i == 1) then
|
|
f(1)=czip
|
|
f(2)=czip
|
|
f(3)=+fc
|
|
f(4)=cplx2(px,-py)/fc
|
|
elseif (i == -1) then
|
|
f(1)=cplx2(px,py)/fc
|
|
f(2)=-fc
|
|
f(3)=czip
|
|
f(4)=czip
|
|
endif
|
|
|
|
else
|
|
if (i == 1) then
|
|
f(1)=czip
|
|
f(2)=czip
|
|
f(3)=czip
|
|
f(4)=-phase*sqrt(2._dp*p(1))
|
|
elseif (i == -1) then
|
|
f(1)=phase*sqrt(2._dp*p(1))
|
|
f(2)=czip
|
|
f(3)=czip
|
|
f(4)=czip
|
|
endif
|
|
endif
|
|
return
|
|
end
|
|
|