Skip to content

Commit

Permalink
Fix for the soft/collinear test for NLO processes. Some phase-space c…
Browse files Browse the repository at this point in the history
…uts were not taken into account when generating (the fixed) s-hat used for testing.
  • Loading branch information
rikkert-frederix committed Aug 7, 2023
1 parent ce30ec3 commit ccca274
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
8 changes: 4 additions & 4 deletions Template/NLO/SubProcesses/fks_singular.f
Expand Up @@ -6273,7 +6273,7 @@ subroutine checkres2(xsecvc,xseclvc,wgt,wgtl,xp,lxp,
c same as checkres, but also limits are arrays.
implicit none
include 'nexternal.inc'
real*8 xsecvc(15),xseclvc(15),wgt(15),wgtl(15),lxp(15,0:3,nexternal+1)
real*8 xsecvc(15),xseclvc(15),wgt(15),wgtl(15),lxp(0:3,nexternal+1)
& ,xp(15,0:3,nexternal+1)
real*8 ckc(15),rckc(15),rat
integer iflag,imax,iev,i_fks,j_fks,iret,ithrs,istop,
Expand Down Expand Up @@ -6362,7 +6362,7 @@ subroutine checkres2(xsecvc,xseclvc,wgt,wgtl,xp,lxp,
do l=0,3
write(78,*)'comp:',l
do i=1,imax
call xprintout(78,xp(i,l,k),lxp(i,l,k))
call xprintout(78,xp(i,l,k),lxp(l,k))
enddo
enddo
enddo
Expand All @@ -6373,7 +6373,7 @@ subroutine checkres2(xsecvc,xseclvc,wgt,wgtl,xp,lxp,
write(78,*)'comp:',l
do i=1,imax
call xprintout(78,xp(i,l,nexternal+1),
# lxp(i,l,nexternal+1))
# lxp(l,nexternal+1))
enddo
enddo
write(78,*)''
Expand All @@ -6392,7 +6392,7 @@ subroutine checkres2(xsecvc,xseclvc,wgt,wgtl,xp,lxp,
write(78,*)'comp:',l
do i=1,imax
call xprintout(78,xp(i,l,i_fks)+xp(i,l,j_fks),
# lxp(i,l,i_fks)+lxp(i,l,j_fks))
# lxp(l,i_fks)+lxp(l,j_fks))
enddo
enddo
endif
Expand Down
50 changes: 34 additions & 16 deletions Template/NLO/SubProcesses/test_soft_col_limits.f
Expand Up @@ -55,6 +55,10 @@ program test_soft_col_limits
LOGICAL IS_A_J(NEXTERNAL),IS_A_LP(NEXTERNAL),IS_A_LM(NEXTERNAL)
LOGICAL IS_A_PH(NEXTERNAL)
COMMON /TO_SPECISA/IS_A_J,IS_A_LP,IS_A_LM,IS_A_PH
double precision etmin(nincoming+1:nexternal-1)
double precision etmax(nincoming+1:nexternal-1)
double precision mxxmin(nincoming+1:nexternal-1,nincoming+1:nexternal-1)
common /to_cuts/etmin,etmax, mxxmin
double precision alsf,besf
common /cgfunsfp/alsf,besf
double precision alazi,beazi
Expand Down Expand Up @@ -152,23 +156,7 @@ program test_soft_col_limits
call setrun !Sets up run parameters
call setpara('param_card.dat') !Sets up couplings and masses
call fill_configurations_common
call setcuts !Sets up cuts

c When doing hadron-hadron collision reduce the effect collision energy.
c Note that tests are always performed at fixed energy with Bjorken x=1.
totmass = 0.0d0
include 'pmass.inc' ! make sure to set the masses after the model has been included
do i=nincoming+1,nexternal
if (is_a_j(i) .and. i.ne.nexternal) then
totmass = totmass + max(ptj,pmass(i))
elseif ((is_a_lp(i).or.is_a_lm(i)) .and. i.ne.nexternal) then
totmass = totmass + max(mll/2d0,mll_sf/2d0,ptl,pmass(i))
else
totmass = totmass + pmass(i)
endif
enddo
if (lpp(1).ne.0) ebeam(1)=max(ebeam(1)/20d0,totmass)
if (lpp(2).ne.0) ebeam(2)=max(ebeam(2)/20d0,totmass)
c
write (*,*) 'Give FKS configuration number ("0" loops over all)'
read (*,*) fks_conf_number
Expand Down Expand Up @@ -198,6 +186,36 @@ program test_soft_col_limits
if (abs(lpp(1)).ge.1) ndim=ndim+1
if (abs(lpp(2)).ge.1) ndim=ndim+1
nndim=ndim


call setcuts !Sets up cuts
c When doing hadron-hadron collision reduce the effect collision energy.
c Note that tests are always performed at fixed energy with Bjorken x=1.
totmass = 0.0d0
include 'pmass.inc' ! make sure to set the masses after the model has been included
do i=nincoming+1,nexternal
if (is_a_j(i) .and. i.ne.nexternal) then
totmass = totmass + max(ptj,pmass(i))
elseif ((is_a_lp(i).or.is_a_lm(i)) .and. i.ne.nexternal) then
totmass = totmass + max(mll/2d0,mll_sf/2d0,ptl,pmass(i))
else
if (any(mxxmin(i,i+1:nexternal-1).gt.0d0)) then
do k=i+1,nexternal-1
if (mxxmin(i,k).gt.0d0) then
totmass = totmass + mxxmin(i,k)
endif
enddo
elseif (etmin(i).gt.0d0) then
totmass=totmass+max(etmin(i),pmass(i))
else
totmass = totmass + pmass(i)
endif
endif
enddo
if (lpp(1).ne.0) ebeam(1)=max(ebeam(1)/20d0,totmass)
if (lpp(2).ne.0) ebeam(2)=max(ebeam(2)/20d0,totmass)


write(*,*)' '
write(*,*)' '
write(*,*)"Enter graph number (iconfig), "
Expand Down

0 comments on commit ccca274

Please sign in to comment.