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.
 
 
 
 
 
 

240 lines
12 KiB

!
! SPDX-License-Identifier: GPL-3.0-or-later
! Copyright (C) 2019-2022, respective authors of MCFM.
!
function virt_mm(mQ,ig,is,ie,in,ic,p)
implicit none
include 'types.f'
complex(dp):: virt_mm
c***********************************************************************
c Author: F. Tramontano *
c December, 2008 *
c***********************************************************************
c---- One-loop -- helicity amplitude for W+c production
c---- hQ=-1 with Q(mu)=Q1(mu)+mQ^2/2/Q.g*g(mu)
c---- hg=-1 with s(mu) as gauge vector
c for nwz=+1
c f(-p1)+f(-p2)--> W^+(n(p3)+e^+(p4)) + Qbar(p5)
c For nwz=-1
c f(-p1)+f(-p2)--> W^-(e^-(p3)+nbar(p4))+ Q(p5)
c----
include 'constants.f'
include 'mxpart.f'
include 'epinv.f'
include 'epinv2.f'
include 'b0.f'
include 'scheme.f'
include 'scale.f'
include 'zprods_decl.f'
include 'nwz.f'
integer:: is,ig,ic,ie,in,nu,jpart
real(dp):: p(mxpart,4),q(mxpart,4)
real(dp):: dot,taucg,taugs,taucs,msq,mQ
real(dp):: qsq,tcg,tcs,qsqhat,qgs,qcg,qcs,cgs1
real(dp):: ddilog,epin,epin2,xlog
complex(dp):: smm,lomm
complex(dp):: amm1,amm2,amm3,amm4,amm5
complex(dp):: fq2m2,fc002,fc00,ffc00,ffc002,fI3me
complex(dp):: ffcg1,ffcg3,ffcs1,ffcs2,fun1,fun2,fun4
complex(dp):: fL6m1,fL6m2,fL6m3,L6m1,L6m2,L6m3
complex(dp):: lnrat,C0fa2m,C0fb2m,I3me
c scheme='dred'
msq=mQ**2
xlog=log(musq/msq)
epin=epinv+xlog
epin2=epinv*epinv2+epinv*xlog+half*xlog**2
taugs=+two*dot(p,is,ig)
taucs=+two*dot(p,ic,is)
taucg=+two*dot(p,ic,ig)
qsqhat=taucs+taucg+taugs
qsq=qsqhat+msq
tcg=taucg+msq
tcs=taucs+msq
qgs=qsqhat-taugs
qcg=qsqhat-taucg
qcs=qsqhat-taucs
cgs1=taucs-msq*taugs/taucg
fq2m2=-msq/qsq+lnrat(-qsqhat,msq)*msq*qsqhat/qsq**2
ffcs1=fun4(tcs,qsq,msq)
ffcg1=fun1(tcg,qsq,msq)
ffcg3=fun2(qsq,tcg,msq)
ffcs2=fun2(tcs,qsq,msq)
fL6m1=L6m1(taucg,taucs,taugs,msq,qsq)
fL6m2=L6m2(taucg,taucs,taugs,msq,qsq)
fL6m3=L6m3(taucg,taucs,taugs,msq,qsq)
fI3me=I3me(msq,taugs,qsq)
ffc00=fc00(msq,taugs,qsq)
ffc002=fc002(msq,taugs,qsq)
do nu=1,4
do jpart=1,5
q(jpart,nu)=p(jpart,nu)
if (jpart==ic) q(ic,nu)=p(ic,nu)-msq/taucg*p(ig,nu)
enddo
enddo
if (nwz == -1) then
call spinoru(5,q,za,zb)
else
call spinoru(5,q,zb,za)
endif
amm1=za(ig,ie)*zb(ig,in)/za(is,ic)/zb(ig,ic)**2
amm2=za(ig,ie)*zb(is,in)/zb(ig,ic)
amm3=za(is,ie)*zb(is,in)/za(is,ic)/zb(ig,ic)**2
amm4=za(ie,ic)*zb(is,in)*zb(is,ic)/zb(ig,is)/zb(ig,ic)
amm5=-amm1-amm3
smm= - 1.D0/2.D0*taucs*taucg**(-2)*mQ**2*xn**(-1)*qcs*qcg*
& cgs1**(-1)*amm1*fL6m1 - 1.D0/2.D0*taucs*taucg**(-2)*mQ**2*
& xn**(-1)*qcs*cgs1**(-1)*amm2*fL6m1 - 1.D0/2.D0*taucs*
& taucg**(-2)*mQ**2*xn**(-1)*qcs**2*cgs1**(-1)*amm3*fL6m1 - 1.D0
& /2.D0*taucs*taucg**(-1)*taugs**(-1)*xn**(-1)*qcs*amm2*fL6m1
& - 1.D0/2.D0*taucs*taucg**(-1)*taugs**(-1)*xn**(-1)*qcs**2*
& amm3*fL6m1 - 1.D0/2.D0*taucs*taucg**(-1)*qsqhat*xn**(-1)*amm1
& *fL6m1 + taucs*taucg*taugs**(-1)*cf*amm3 + 1.D0/2.D0*taucs*
& taucg*taugs**(-1)*xn*amm3*fL6m3 + 1.D0/2.D0*taucs*taugs**(-1)
& *mQ**2*xn**(-1)*amm1*fL6m2 + taucs*taugs**(-1)*cf*qcs*amm5*
& fq2m2 + 1.D0/2.D0*taucs*taugs**(-1)*cf*qcg*amm5*fq2m2 - 4.D0*
& taucs*qsq**(-1)*mQ**2*cf*amm1 - 2.D0*taucs*qsq**(-1)*mQ**2*
& xn**(-1)*amm1 + 2.D0*taucs*qsq**(-1)*mQ**2*xn*amm1 + 4.D0*
& taucs*qsq**(-1)*cf*cgs1*amm1 + 2.D0*taucs*qsq**(-1)*xn**(-1)*
& cgs1*amm1 - 2.D0*taucs*qsq**(-1)*xn*cgs1*amm1 - 4.D0*taucs*cf
& *amm1*fq2m2
smm = smm + 3.D0*taucs*cf*amm1 + taucs*cf*amm3 - 2.D0*taucs*
& xn**(-1)*amm1*ffcs2 - 2.D0*taucs*xn**(-1)*amm1*fq2m2 + 2.D0*
& taucs*xn*amm1*fq2m2 - taucs*xn*amm1 - 1.D0/2.D0*taucs**2*
& taugs**(-1)*cf*amm1 - 1.D0/2.D0*taucs**2*taugs**(-1)*cf*amm3
& + 2.D0*taucg**(-1)*taugs*mQ**2*cf*amm3*ffcg3 - 2.D0*
& taucg**(-1)*mQ**2*cf*amm2*ffcg3 - taucg**(-1)*mQ**2*xn*amm2*
& fL6m3 - 1.D0/2.D0*taucg*taugs**(-1)*tcs*xn**(-1)*amm3*fL6m2
& - 1.D0/2.D0*taucg*taugs**(-1)*xn**(-1)*amm2*fL6m2 - taucg*
& qsq**(-1)*mQ**2*cf*amm3*ffcg3 + 1.D0/2.D0*taugs**(-1)*qsq*
& xn**(-1)*amm2*fL6m2 + 1.D0/2.D0*taugs**(-1)*mQ**2*xn**(-1)*
& qcs*amm3*fL6m2 + taugs**(-1)*cf*cgs1*amm2 - taugs**(-1)*
& xn**(-1)*cgs1*amm2*fL6m2 + 1.D0/2.D0*taugs**(-1)*xn*qcg*amm2*
& fL6m3 + taugs*tcs*xn**(-1)*amm1*ffcs1 + taugs*qsq**(-1)*mQ**2
& *cf*amm3*ffcg1 - 2.D0*taugs*qsq**(-1)*mQ**2*cf*amm3*ffcg3 +
& taugs*xn**(-1)*amm1*ffcs2 + tcg**(-1)*mQ**4*cf*amm3 -
& qsq**(-1)*mQ**2*cf*amm2*ffcg3
smm = smm - mQ**2*cf*amm1 - 2.D0*mQ**2*cf*amm3*ffcg3 - 3.D0*mQ**2
& *cf*amm3 - mQ**2*xn**(-1)*amm1*ffcs2 - mQ**2*xn**(-1)*amm3*
& ffcg3 - 1.D0/2.D0*mQ**2*xn*qcs*cgs1**(-1)*amm3*fL6m3 - 1.D0/2.
& D0*mQ**2*xn*qcg*cgs1**(-1)*amm1*fL6m3 - 1.D0/2.D0*mQ**2*xn*
& cgs1**(-1)*amm2*fL6m3 + 1.D0/2.D0*mQ**2*xn*amm1*fL6m3 - mQ**2
& *xn*amm3*fL6m3 - xlog*b0*amm2 - xlog*b0*amm4 + 3.D0/2.D0*epin
& *cf*amm2 + 3.D0/2.D0*epin*cf*amm4 + epin*b0*amm2 + epin*b0*
& amm4 - 1.D0/2.D0*epin*xn**(-1)*amm2 - 1.D0/2.D0*epin*xn**(-1)
& *amm4 + 1.D0/2.D0*epin*xn*amm2 + 1.D0/2.D0*epin*xn*amm4 - 1.D0
& /2.D0*epin2*xn**(-1)*amm2 - 1.D0/2.D0*epin2*xn**(-1)*amm4 + 3.
& D0/2.D0*epin2*xn*amm2 + 3.D0/2.D0*epin2*xn*amm4 + 1.D0/2.D0*
& cf*qcs*amm5*fq2m2 + 5.D0/2.D0*cf*amm2 + 5.D0/2.D0*cf*amm4 - 1.
& D0/2.D0*xn**(-1)*pisqo6*amm2 - 1.D0/2.D0*xn**(-1)*pisqo6*amm4
& - xn**(-1)*amm2*ffcs2 - xn**(-1)*amm2*fL6m2 - xn**(-1)*amm2
& + 1.D0/2.D0*xn*pisqo6*amm2
smm=smm+ 1.D0/2.D0*xn*pisqo6*amm4 - ddilog(
& msq**(-1)*tcs)*xn**(-1)*amm2 - ddilog(msq**(-1)*tcs)*xn**(-1)*
& amm4 + ddilog(msq**(-1)*tcg)*xn*amm2 + ddilog(msq**(-1)*tcg)*
& xn*amm4 - lnrat( - taucs,msq)*taucs*tcs**(-1)*mQ**2*xn**(-1)*
& amm1 - 2.D0*lnrat( - taucs,msq)*taucs**2*tcs**(-1)*xn**(-1)*
& amm1 + lnrat( - taucs,msq)*tcs**(-1)*mQ**2*xn**(-1)*amm2 -
& lnrat( - taucs,msq)*tcs*xn**(-1)*amm3 + lnrat( - taucs,msq)*
& epin*xn**(-1)*amm2 + lnrat( - taucs,msq)*epin*xn**(-1)*amm4
& - lnrat( - taucs,msq)**2*xn**(-1)*amm2 - lnrat( - taucs,msq)
& **2*xn**(-1)*amm4 - 2.D0*lnrat( - taucg,msq)*taucg*tcg**(-1)*
& mQ**2*cf*amm1 - lnrat( - taucg,msq)*taucg*tcg**(-1)*mQ**2*
& xn**(-1)*amm1 + lnrat( - taucg,msq)*taucg**2*tcg**(-2)*mQ**2*
& cf*amm3 - 2.D0*lnrat( - taucg,msq)*tcg**(-1)*mQ**2*cf*qcs*
& amm3 - 2.D0*lnrat( - taucg,msq)*tcg**(-1)*mQ**4*cf*amm1 -
& lnrat( - taucg,msq)*tcg**(-1)*mQ**4*xn**(-1)*amm1 - lnrat( -
& taucg,msq)*epin*xn*amm2 - lnrat( - taucg,msq)*epin*xn*amm4 +
& lnrat(
& - taucg,msq)**2*xn*amm2 + lnrat( - taucg,msq)**2*xn*amm4 -
& lnrat( - taugs,msq)*taucs*taugs**(-1)*cf*amm2 + lnrat( -
& taugs,msq)*taucs*cf*amm5 + lnrat( - taugs,msq)*taucs*xn**(-1)
& *amm3 + lnrat( - taugs,msq)*taucs**2*taugs**(-1)*cf*amm3 + 1.D
& 0/2.D0*lnrat( - taugs,msq)*taucs**2*mQ**(-2)*cf*amm5 + 1.D0/2.
& D0*lnrat( - taugs,msq)*taugs*cf*amm5 - lnrat( - taugs,msq)*
& mQ**2*cf*amm3 - lnrat( - taugs,msq)*mQ**2*cf*amm5 - lnrat( -
& taugs,msq)*epin*xn*amm2 - lnrat( - taugs,msq)*epin*xn*amm4 +
& 1.D0/2.D0*lnrat( - taugs,msq)*xn**(-1)*qcg*amm5 - lnrat( -
& taugs,msq)*xn*amm2 + 1.D0/2.D0*lnrat( - taugs,msq)**2*xn*amm2
& + 1.D0/2.D0*lnrat( - taugs,msq)**2*xn*amm4 - 3.D0*lnrat( -
& qsqhat,msq)*taucs*taucg*taugs**(-1)*qsq**(-1)*qsqhat*cf*amm3
& - 2.D0*lnrat( - qsqhat,msq)*taucs*taugs**(-1)*qsq**(-1)*
& mQ**2*qsqhat*cf*amm3 + 3.D0*lnrat( - qsqhat,msq)*taucs*
& qsq**(-1)*qsqhat*cf*amm3 + 2.D0*lnrat( - qsqhat,msq)*taucs*
& qsq**(-1)*qsqhat*cf*amm5
smm = smm + 3.D0/2.D0*lnrat( - qsqhat,msq)*taucs*qsq**(-1)*qsqhat
& *xn*amm1 - lnrat( - qsqhat,msq)*taucs**2*taugs**(-1)*qsq**(-1)*
& qsqhat*cf*amm3 - 1.D0/2.D0*lnrat( - qsqhat,msq)*taucs**2*
& taugs**(-1)*qsq**(-1)*qsqhat*cf*amm5 - 1.D0/2.D0*lnrat( -
& qsqhat,msq)*taucs**2*qsq**(-1)*mQ**(-2)*qsqhat*cf*amm5 +
& lnrat( - qsqhat,msq)*taucg**(-1)*taugs*qsq**(-1)*mQ**2*qsqhat
& *cf*amm3 - lnrat( - qsqhat,msq)*taugs**(-1)*qsq**(-1)*qsqhat*
& cf*qcg*amm2 - lnrat( - qsqhat,msq)*taugs**(-1)*qsq**(-1)*
& qsqhat*cf*cgs1*amm2 - lnrat( - qsqhat,msq)*taugs*qsq**(-1)*
& qsqhat*cf*amm3 - 3.D0/2.D0*lnrat( - qsqhat,msq)*taugs*
& qsq**(-1)*qsqhat*cf*amm5 - 1.D0/2.D0*lnrat( - qsqhat,msq)*
& taugs*qsq**(-1)*qsqhat*xn*amm1 + 2.D0*lnrat( - qsqhat,msq)*
& qsq**(-1)*mQ**2*qsqhat*cf*amm3 - 3.D0*lnrat( - qsqhat,msq)*
& qsq**(-1)*mQ**2*qsqhat*cf*amm5 + 3.D0/2.D0*lnrat( - qsqhat,
& msq)*qsq**(-1)*mQ**2*qsqhat*xn**(-1)*amm1 - 1.D0/2.D0*lnrat(
& - qsqhat,msq)*qsq**(-1)*mQ**2*qsqhat*xn*amm1
smm = smm + lnrat( - qsqhat,msq)*qsq**(-1)*qsqhat*xn**(-1)*qcg*
& amm1 + 1.D0/2.D0*lnrat( - qsqhat,msq)*qsq**(-1)*qsqhat*xn**(-1)*
& qcg*amm3 + lnrat( - qsqhat,msq)*qsq**(-1)*qsqhat*xn**(-1)*
& amm2 - 2.D0*C0fb2m(tcg,msq)*taucs**(-1)*taucg**(-1)*taugs*
& mQ**4*xn**(-1)*amm2 + C0fb2m(tcg,msq)*taucs**(-1)*taucg*mQ**2
& *xn**(-1)*cgs1*amm3 + C0fb2m(tcg,msq)*taucs**(-1)*mQ**2*
& xn**(-1)*qcg*amm2 - C0fb2m(tcg,msq)*taucs**(-1)*mQ**4*
& xn**(-1)*amm2 + 2.D0*C0fa2m(tcs,qsq,msq)*taucs**(-1)*
& taucg**(-2)*mQ**4*xn**(-1)*qcs**2*amm2 - C0fa2m(tcs,qsq,msq)*
& taucs**(-1)*taucg**(-1)*mQ**2*xn**(-1)*qcs**2*amm2 - C0fa2m(
& tcs,qsq,msq)*taucs**(-1)*taucg**(-1)*mQ**4*xn**(-1)*qcs*amm2
& - C0fa2m(tcs,qsq,msq)*taucs**(-1)*mQ**2*xn**(-1)*qcs*cgs1*
& amm3 + C0fa2m(tcs,qsq,msq)*taucs**(-1)*mQ**2*xn**(-1)*qcs*
& amm2 - 2.D0*C0fa2m(tcs,qsq,msq)*taucs*mQ**2*xn**(-1)*amm1 +
& C0fa2m(tcs,qsq,msq)*taucg**(-1)*taugs*mQ**4*xn**(-1)*amm1 - 2.
& D0*C0fa2m(tcs,qsq,msq)*taucg**(-1)*mQ**2*xn**(-1)*qcs*amm2
smm = smm - C0fa2m(tcs,qsq,msq)*mQ**2*xn**(-1)*amm2 - 18.D0*
& ffc002*taucs*taugs**(-1)*cf*qcs*amm5 + 6.D0*ffc002*taucs**2*
& taugs**(-1)*mQ**(-2)*cf*qgs*amm5 + 6.D0*ffc002*taucg*
& taugs**(-1)*cf*qcg*amm5 + 12.D0*ffc002*mQ**2*cf*amm5 + 24.D0*
& ffc00*taucs*taucg*taugs**(-1)*cf*amm3 + 4.D0*ffc00*taucs*
& taugs**(-2)*cf*qgs*amm2 + 4.D0*ffc00*taucs*taugs**(-1)*tcs*cf
& *amm1 + 16.D0*ffc00*taucs*taugs**(-1)*mQ**2*cf*amm3 + 12.D0*
& ffc00*taucs*taugs**(-1)*cf*qcs*amm1 + 8.D0*ffc00*taucs*
& taugs**(-1)*cf*amm2 + 12.D0*ffc00*taucs*cf*amm3 - 4.D0*ffc00*
& taucs**2*taugs**(-2)*qsqhat*cf*amm3 + 8.D0*ffc00*taucs**2*
& taugs**(-1)*cf*amm3 + 12.D0*ffc00*taucg*taugs**(-1)*mQ**2*cf*
& amm1 - 8.D0*ffc00*taucg*taugs**(-1)*mQ**2*cf*amm3 - 4.D0*
& ffc00*taucg*taugs**(-1)*cf*amm2 - 16.D0*ffc00*taugs**(-1)*
& mQ**2*cf*qcs*amm1 - 8.D0*ffc00*taugs**(-1)*mQ**2*cf*amm2 + 2.D
& 0*ffc00*taugs**(-1)*xn**(-1)*qgs*qcg*amm5 - 4.D0*ffc00*tcg*
& xn**(-1)*amm5
smm = smm - 28.D0*ffc00*mQ**2*cf*amm3 + fI3me*taucs*mQ**2*
& xn**(-1)*amm3 - 3.D0*fI3me*taucs*mQ**2*xn*amm3 - fI3me*taucs*
& xn*amm2 - fI3me*taucg**(-1)*taugs*mQ**4*xn*amm1 + 2.D0*fI3me*
& taucg**(-1)*taugs*mQ**4*xn*amm3 - 2.D0*fI3me*taucg**(-1)*
& mQ**2*xn*cgs1*amm2 - fI3me*taucg*mQ**2*xn**(-1)*amm3 - fI3me*
& taugs*mQ**2*xn**(-1)*amm1 - 2.D0*fI3me*taugs*mQ**2*xn**(-1)*
& amm3 + 2.D0*fI3me*mQ**2*cf*amm2 - fI3me*mQ**2*xn*amm2 + fI3me
& *xn*cgs1*amm2
lomm =-(za(ig,ie)*zb(ig,is)+za(ie,ic)*zb(is,ic))*zb(is,in)
& /zb(ig,is)/zb(ig,ic)
c--- include finite counterterm to go from DR to MSbar scheme
c--- alphas(DR) = alphas(MSbar) * (1+ (Nc / 6) * alphas(MSbar) / (2*pi))
smm=smm + lomm * xn/six
c--- include finite counterterm due to FDH scheme
c--- gw = gw * ( 1 - 2 * cf * alphas(MSbar) / (2*pi))
smm=smm - lomm * cf * two
if (scheme == 'tH-V') then
smm = smm - lomm * (cf/two + xn/six)
endif
virt_mm=smm
return
end