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.
847 lines
31 KiB
847 lines
31 KiB
!
|
|
! SPDX-License-Identifier: GPL-3.0-or-later
|
|
! Copyright (C) 2019-2022, respective authors of MCFM.
|
|
!
|
|
|
|
module singletop2_nnlo_vars
|
|
implicit none
|
|
logical, public, save :: singletop2_nnlo_enable_light = .true.
|
|
logical, public, save :: singletop2_nnlo_enable_heavy_prod = .true.
|
|
logical, public, save :: singletop2_nnlo_enable_heavy_decay = .true.
|
|
|
|
! flags for interferences
|
|
logical, public, save :: singletop2_nnlo_enable_lxh = .true.
|
|
logical, public, save :: singletop2_nnlo_enable_lxd = .true.
|
|
logical, public, save :: singletop2_nnlo_enable_hxd = .true.
|
|
|
|
logical, public, save :: singletop2_nnlo_fully_inclusive = .false.
|
|
|
|
integer, public, parameter :: max_corr_on_beam = 2
|
|
integer, public, parameter :: max_bcontrib = 5
|
|
|
|
! replaces ipsgen 1,2 or 3
|
|
integer, public :: currentContrib = 0
|
|
|
|
! bcontribs are
|
|
! 1: main b
|
|
! 2: additional b
|
|
! 3: additional b~
|
|
! 4: additional pair b b~
|
|
|
|
integer, public, save :: corr_on_beam = 1
|
|
!$omp threadprivate(corr_on_beam)
|
|
|
|
integer, public, save :: b_contrib = 1
|
|
!$omp threadprivate(b_contrib)
|
|
|
|
! which tau phase space region is selected
|
|
integer, public, save :: taups = 0
|
|
|
|
integer, public, save :: maxbeams, beams_enabled(2)
|
|
|
|
integer, public, parameter :: quarkChannel = 1, gluonChannel = 2
|
|
integer, public, save :: partons_enabled
|
|
|
|
logical, public, save :: maskb1(-5:5), maskb2(-5:5)
|
|
|
|
logical, public, save :: usemask = .false.
|
|
|
|
public :: setup_singletop
|
|
|
|
private
|
|
|
|
contains
|
|
|
|
! this routine maps the triplet (nproc, currentPart, currentIps) to
|
|
! * currentContrib (light, heavy, decay)
|
|
! * partons enabled (mask, partons_enabled)
|
|
! * corr_on_beam (beams_enabled)
|
|
|
|
! some information is redundant, like mask and partons_enabled
|
|
! but we want different granularity in different pieces
|
|
|
|
! we do not want to depend at all anymore on "ipsgen" in any of the
|
|
! singletop codes, but just rely on the derived variables above
|
|
subroutine setup_singletop(ips)
|
|
! use MCFMStorage, only: currentPart, currentIps
|
|
use Integration
|
|
implicit none
|
|
include 'nproc.f'
|
|
include 'kpart.f'
|
|
include 'mpicommon.f'
|
|
|
|
integer, intent(in) :: ips
|
|
|
|
maskb1(:) = .false.
|
|
maskb2(:) = .false.
|
|
|
|
if (ips == 0) then
|
|
! this happens when chooser is called in in parseinput
|
|
! if (rank == 0) then
|
|
! write (*,*) "WARNING: setup_singletop called with ips = 0"
|
|
! endif
|
|
return
|
|
endif
|
|
|
|
if (nproc == 1650) then
|
|
if (kpart == klord) then
|
|
if (any(ips == [1,2])) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(:) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = ips
|
|
return
|
|
elseif (any(ips == [3,4])) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = ips - 2
|
|
return
|
|
elseif (any(ips == [5])) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1([0,5]) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (any(ips == [6])) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2([0,5]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 7) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(1:2) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
endif
|
|
|
|
elseif (origKpart == knnlo .and. kpart == kvirt) then
|
|
if (ips == 1) then
|
|
! light line RV, *b
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 2) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .false.
|
|
maskb1(5) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(:) = .true.
|
|
maskb2([-3,-1,2,4]) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 4) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4]) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 5) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(1:2) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
endif
|
|
elseif (kpart == kvirt) then
|
|
if (ips == 1) then
|
|
! 165 nlo, virt, all together
|
|
currentContrib = 1
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 2) then
|
|
! 165 nlo, virt, all together
|
|
currentContrib = 2
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
endif
|
|
elseif (origKpart == knnlo .and. kpart == kreal) then
|
|
#define SINGLETOP_NNLO_REALCHANNELS 12
|
|
#define OFFSET 7
|
|
#if SINGLETOP_NNLO_REALCHANNELS == 66
|
|
if (any(ips == [(i, i=1+OFFSET,33+OFFSET, 1)])) then
|
|
! light line, beam 1
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
|
|
usemask = .true.
|
|
maskb2(5) = .true.
|
|
|
|
if (ips < 12+OFFSET) then
|
|
maskb1(ips-6-OFFSET) = .true.
|
|
if (ips-6 == OFFSET) then
|
|
partons_enabled = gluonChannel
|
|
else
|
|
partons_enabled = quarkChannel
|
|
endif
|
|
taups = 1
|
|
elseif (ips < 23+OFFSET) then
|
|
maskb1(ips-6-11-OFFSET) = .true.
|
|
if (ips-6-11 == OFFSET) then
|
|
partons_enabled = gluonChannel
|
|
else
|
|
partons_enabled = quarkChannel
|
|
endif
|
|
taups = 2
|
|
else
|
|
maskb1(ips-6-22-OFFSET) = .true.
|
|
if (ips-6-22 == OFFSET) then
|
|
partons_enabled = gluonChannel
|
|
else
|
|
partons_enabled = quarkChannel
|
|
endif
|
|
taups = 3
|
|
endif
|
|
|
|
return
|
|
elseif (any(ips == [(i, i=34+OFFSET,66+OFFSET, 1)])) then
|
|
! light line beam 2
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
|
|
partons_enabled = quarkChannel
|
|
|
|
if (ips < 45+OFFSET) then
|
|
maskb2(ips-6-33-OFFSET) = .true.
|
|
if (ips-6-33 == OFFSET) then
|
|
partons_enabled = gluonChannel
|
|
else
|
|
partons_enabled = quarkChannel
|
|
endif
|
|
taups = 1
|
|
elseif (ips < 56+OFFSET) then
|
|
maskb2(ips-6-33-11-OFFSET) = .true.
|
|
if (ips-6-33-11 == OFFSET) then
|
|
partons_enabled = gluonChannel
|
|
else
|
|
partons_enabled = quarkChannel
|
|
endif
|
|
taups = 2
|
|
else
|
|
maskb2(ips-6-33-22-OFFSET) = .true.
|
|
if (ips-6-33-22 == OFFSET) then
|
|
partons_enabled = gluonChannel
|
|
else
|
|
partons_enabled = quarkChannel
|
|
endif
|
|
taups = 3
|
|
endif
|
|
return
|
|
#else
|
|
if (any(ips == [1+OFFSET,2+OFFSET,3+OFFSET])) then
|
|
! light line, qb
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
|
|
usemask = .true.
|
|
maskb1(-5:-1) = .true.
|
|
maskb1(1:5) = .true.
|
|
|
|
maskb2(5) = .true.
|
|
|
|
partons_enabled = quarkChannel
|
|
|
|
taups = ips - OFFSET
|
|
return
|
|
|
|
elseif (any(ips == [4+OFFSET,5+OFFSET,6+OFFSET])) then
|
|
! light line gb
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
|
|
usemask = .true.
|
|
maskb1(0) = .true.
|
|
maskb2(5) = .true.
|
|
|
|
partons_enabled = gluonChannel
|
|
|
|
taups = ips - (3+OFFSET)
|
|
return
|
|
|
|
elseif (any(ips == [7+OFFSET,8+OFFSET,9+OFFSET])) then
|
|
! light line bq
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
|
|
maskb2(-5:-1) = .true.
|
|
maskb2(1:5) = .true.
|
|
|
|
partons_enabled = quarkChannel
|
|
|
|
taups = ips - (6+OFFSET)
|
|
return
|
|
|
|
elseif (any(ips == [10+OFFSET,11+OFFSET,12+OFFSET])) then
|
|
! light line bg
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2(0) = .true.
|
|
|
|
partons_enabled = gluonChannel
|
|
|
|
taups = ips - (9+OFFSET)
|
|
return
|
|
|
|
#endif
|
|
elseif (ips == 1) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-1,-3,2,4]) = .true.
|
|
maskb2(-5:-1) = .true.
|
|
maskb2(1:4) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 2) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-1,-3,2,4]) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(-5:-1) = .true.
|
|
maskb1(1:4) = .true.
|
|
maskb2([-1,-3,2,4]) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 4) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2([-1,-3,2,4]) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 5) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-1,-3,2,4]) = .true.
|
|
maskb2(0) = .true.
|
|
partons_enabled = gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 6) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(0) = .true.
|
|
maskb2([-1,-3,2,4]) = .true.
|
|
partons_enabled = gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 7) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(1:2) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
endif
|
|
elseif (kpart == kreal) then
|
|
if (ips == 1) then
|
|
! 165 nlo, real, quarks, just beam 1
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(-5:-1) = .true.
|
|
maskb1(1:5) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 2) then
|
|
! 165 nlo, real, quarks, just beam 2
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2(-5:-1) = .true.
|
|
maskb2(1:5) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 3) then
|
|
! 165 nlo, real, gluon, just beam 1
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(0) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 4) then
|
|
! 165 nlo, real, gluon, just beam 2
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2(0) = .true.
|
|
partons_enabled = gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 5) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-1,-3,2,4]) = .true.
|
|
maskb2(-5:-1) = .true.
|
|
maskb2(1:5) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 6) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(-5:-1) = .true.
|
|
maskb1(1:5) = .true.
|
|
maskb2([-1,-3,2,4]) = .true.
|
|
partons_enabled = quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 7) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-1,-3,2,4]) = .true.
|
|
maskb2(0) = .true.
|
|
partons_enabled = gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 8) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(0) = .true.
|
|
maskb2([-1,-3,2,4]) = .true.
|
|
partons_enabled = gluonChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 9) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = quarkChannel + gluonChannel
|
|
taups = 0
|
|
return
|
|
endif
|
|
endif
|
|
|
|
|
|
elseif (nproc == 1610) then
|
|
! it even makes sense to split up the lo into at least beams
|
|
if (kpart == klord) then
|
|
currentContrib = 1
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (kpart == kreal) then
|
|
if (ips == 1) then
|
|
currentContrib = 1
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 2) then
|
|
currentContrib = 2
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 4) then
|
|
! lxh interference, real on light, real on heavy
|
|
currentContrib = 4
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (ips == 5) then
|
|
! lxh interference, real on light, virt on heavy
|
|
currentContrib = 4
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (any(ips == [6,7])) then
|
|
currentContrib = 5
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
elseif (any(ips == [8,9])) then
|
|
currentContrib = 6
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
return
|
|
endif
|
|
elseif (kpart == kvirt) then
|
|
if (ips == 1) then
|
|
currentContrib = 1
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 2) then
|
|
currentContrib = 2
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 4) then
|
|
currentContrib = 4
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 5) then
|
|
currentContrib = 4
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (any(ips == [6,7])) then
|
|
currentContrib = 5
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (any(ips == [8,9])) then
|
|
currentContrib = 6
|
|
maxbeams = 2
|
|
beams_enabled(:) = [1,2]
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
endif
|
|
elseif (origKpart == ksnlo) then
|
|
if (ips == 1) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(:) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 2) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 4) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .false.
|
|
maskb1(:) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 5) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(1:2) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
|
|
taups = 0
|
|
coeffonly = .true.
|
|
return
|
|
endif
|
|
elseif (origKpart == knnlo) then
|
|
if (ips == 1) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(:) = .true.
|
|
maskb2(5) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 2) then
|
|
currentContrib = 1
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1(5) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 3) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 1
|
|
usemask = .true.
|
|
maskb1(:) = .true.
|
|
maskb2([-3,-1,2,4]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 4) then
|
|
currentContrib = 2
|
|
maxbeams = 1
|
|
beams_enabled(1) = 2
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4]) = .true.
|
|
maskb2(:) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
elseif (ips == 5) then
|
|
currentContrib = 3
|
|
maxbeams = 2
|
|
beams_enabled(1:2) = [1,2]
|
|
usemask = .true.
|
|
maskb1([-3,-1,2,4,5]) = .true.
|
|
maskb2([-3,-1,2,4,5]) = .true.
|
|
partons_enabled = gluonChannel + quarkChannel
|
|
taups = 0
|
|
|
|
coeffonly = .true.
|
|
return
|
|
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
write (*,*) "IPS = ", ips
|
|
write (*,*) "kpart = ", kpart
|
|
write (*,*) "origKpart = ", origKpart
|
|
write (*,*) "nproc = ", nproc
|
|
error stop "please setup part in setup_singletop"
|
|
|
|
end subroutine
|
|
|
|
end module
|