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.
 
 
 
 
 
 

136 lines
4.0 KiB

!
! SPDX-License-Identifier: GPL-3.0-or-later
! Copyright (C) 2019-2022, respective authors of MCFM.
!
subroutine qqb_dm_monophot_g_Samps(p,i3,i2,i1,i4,i5,i6,amp)
implicit none
include 'types.f'
include 'constants.f'
include 'mxpart.f'
include 'dm_params.f'
include 'zprods_decl.f'
include 'sprods_com.f'
real(dp):: p(mxpart,4),q(mxpart,4)
complex(dp):: amp(2,2,2,2,2)
integer:: i1,i2,i3,i4,i5,i6
integer:: h1,h2,h3,h4,h5
complex(dp):: amp_p(2,2,2),amp_dec(2,2)
real(dp):: s34,beta,bp
complex(dp):: s1234
c=========== q(i1)+g(i2)+qb(i3)+gamma(i4)+x(i5)+x~(i6)
c---- order is quark helicity,gluon helicity photon helciity dm
if(xmass>1d-8) then
c---------generate massless phase space
call gen_masslessvecs(p,q,i5,i6)
c--------- generate spinors
call spinoru(6,q,za,zb)
else
c--------massless dm can use usual spinoru
call spinoru(6,p,za,zb)
endif
amp_p(:,:,:)=czip
amp(:,:,:,:,:)=czip
c========== Helicity conserving amplitudes
do h1=1,6
do h2=1,6
s(h1,h2)=Dble(za(h1,h2)*zb(h2,h1))
enddo
enddo
c------ setupdecay
s34=Dble(za(i5,i6)*zb(i6,i5))
beta=sqrt(1d0-4d0*xmass**2/s34)
bp=0.5d0*(one+beta)
s1234= za(i1,i2)*zb(i2,i1) + za(i1,i3)*zb(i3,i1) +
& za(i2,i3)*zb(i3,i2) + za(i1,i4)*zb(i4,i1) +
& za(i2,i4)*zb(i4,i2) + za(i3,i4)*zb(i4,i3)
call dm_scal_decay(i5,i6,za,zb,bp,amp_dec)
amp_p(1,1,1)= (s1234*zb(i3,i1))/
& (zb(i2,i1)*zb(i3,i2)*zb(i4,i1)*
& zb(i4,i3))
amp_p(1,1,2)=-(((s(i1,i2) + s(i1,i3) + s(i2,i3))*
& za(i1,i3))/
& (za(i1,i4)*za(i3,i4)*zb(i2,i1)*
& zb(i3,i2))) +
& (za(i1,i2)*
& (za(i1,i3)*zb(i4,i1) +
& za(i2,i3)*zb(i4,i2)))/
& ((s(i1,i2) + s(i1,i4) + s(i2,i4))*
& za(i1,i4)*zb(i2,i1)) -
& (za(i2,i3)*
& (-(za(i1,i2)*zb(i4,i2)) -
& za(i1,i3)*zb(i4,i3)))/
& ((s(i2,i3) + s(i2,i4) + s(i3,i4))*
& za(i3,i4)*zb(i3,i2))
amp_p(1,2,1)= (za(i1,i4)*
& (za(i1,i3)*zb(i2,i1) +
& za(i3,i4)*zb(i4,i2)))/
& ((s(i1,i2) + s(i1,i4) + s(i2,i4))*
& za(i1,i2)*zb(i4,i1)) -
& ((s(i1,i3) + s(i1,i4) + s(i3,i4))*
& za(i1,i3))/
& (za(i1,i2)*za(i2,i3)*zb(i4,i1)*
& zb(i4,i3)) +
& (za(i3,i4)*
& (za(i1,i3)*zb(i3,i2) +
& za(i1,i4)*zb(i4,i2)))/
& ((s(i2,i3) + s(i2,i4) + s(i3,i4))*
& za(i2,i3)*zb(i4,i3))
amp_p(2,1,1)= zb(i3,i1)**3/
& (zb(i2,i1)*zb(i3,i2)*zb(i4,i1)*
& zb(i4,i3))
amp_p(1,2,2)=-(za(i1,i3)**3/
& (za(i1,i2)*za(i1,i4)*za(i2,i3)*
& za(i3,i4)))
amp_p(2,1,2)= ((s(i1,i3) + s(i1,i4) + s(i3,i4))*
& zb(i3,i1))/
& (za(i1,i4)*za(i3,i4)*zb(i2,i1)*
& zb(i3,i2)) -
& ((za(i2,i3)*zb(i3,i1) +
& za(i2,i4)*zb(i4,i1))*zb(i4,i3))/
& ((s(i2,i3) + s(i2,i4) + s(i3,i4))*
& za(i3,i4)*zb(i3,i2)) -
& (zb(i4,i1)*
& (za(i1,i2)*zb(i3,i1) +
& za(i2,i4)*zb(i4,i3)))/
& ((s(i1,i2) + s(i1,i4) + s(i2,i4))*
& za(i1,i4)*zb(i2,i1))
amp_p(2,2,1)=-((zb(i2,i1)*
& (za(i1,i4)*zb(i3,i1) +
& za(i2,i4)*zb(i3,i2)))/
& ((s(i1,i2) + s(i1,i4) + s(i2,i4))*
& za(i1,i2)*zb(i4,i1))) +
& ((-(za(i2,i4)*zb(i2,i1)) -
& za(i3,i4)*zb(i3,i1))*zb(i3,i2))/
& ((s(i2,i3) + s(i2,i4) + s(i3,i4))*
& za(i2,i3)*zb(i4,i3)) +
& ((s(i1,i2) + s(i1,i3) + s(i2,i3))*
& zb(i3,i1))/
& (za(i1,i2)*za(i2,i3)*zb(i4,i1)*
& zb(i4,i3))
amp_p(2,2,2)=-((s1234*za(i1,i3))/(za(i1,i2)*za(i1,i4)*
& za(i2,i3)*za(i3,i4)))
do h1=1,2
do h2=1,2
do h3=1,2
do h4=1,2
do h5=1,2
amp(h1,h2,h3,h4,h5)=amp_p(h1,h2,h3)*amp_dec(h4,h5)
enddo
enddo
enddo
enddo
enddo
return
end