xw = 0.23153 # Weak-mixing angle (not used in the Gmu scheme)
aemmz = 7.7585538055706e-03 # alpha_EM(MZ) (not used in the Gmu scheme)
# W and Z total widths used in the propagator are determined by the following inputs
zwidth = 2.4950 # Width of the Z boson
wwidth = 2.091 # Width of the W boson
runningwidth = false # Use Z and W propagators including energy-dependent width effects
# CKM matrix
Vud = 0.97427
Vus = 0.2253
Vub = 0.00351
Vcd = 0.2252
Vcs = 0.97344
Vcb = 0.0412
# Z/gamma* coupling to quarks
Zuu = 1.0
Zdd = 1.0
Zss = 1.0
Zcc = 1.0
Zbb = 1.0
# Include virtual photon and interference in Z/gamma* production
useGamma = true
# Resummation parameters
qtcutoff = 0.02 # Resummation cutoff in GeV
# modlog = true # Modified logarithms in the Sudakov L~ = log( (Q*b/b0)^2 + 1)
# modlog = false # Canonical logarithms in the Sudakov L = log( (Q*b/b0)^2 )
modlog = true
+# Switch off exponentiation of C coefficients
+nocexp = false
+
+# Sum all logs before exponentiation (helpful with bprescription = 0, but create issues with bprescription = 2)
+sumlogs = false
+
# Prescription to avoid the Landau pole in the Bessel inverse transform
# 0: bstar prescription, which freezes b at bmax: b -> bstar = b/sqrt(1+b^2/bmax^2)
# 1: Integrate all the way up to the Landau singularity b_L = b0/Q * exp(1/(2*beta0*alphas))
# 2: Minimal prescription (complex plane)
# 3: Minimal prescription (real axis)
bprescription = 0
blim = -1 #blim for the bstar prescription, applies to bprescription = 0. A positive value set a fixed bmax=blim, a negative values sets bmax=b_L/(-blim), where b_L is the Landau singularity.
+blim_pdf = 0 #if not zero, set a different blim for the PDF evolution
+blim_sudakov = 0 #if not zero, set a different blim for the Sudakov form factor
+blim_cexp = 0.5 #if not zero, set a different blim for the C exponentiation
+
+bstar_pdf = false #force bstar prescription for the PDF evolution
+bstar_sudakov = false #force bstar prescription for the Sudakov form factor
+bstar_cexp = false #force bstar prescription for the C exponentiation
phibr = 4. #set arg(z) as phib = pi/phibr for the integration contour in the complex plane for bprescription = 2 (should be set phibr > 4. )
bcf = 0.5 #select the point bc = bcf * b_L, where the integration contour is bended in the complex plane, as a fraction of the Landau singularity b_L. Applies to bprescription = 2 or 3
# Strategy for the direct Mellin transform of PDFs at the factorization scale
# Set to 1 to use the dyres approximation of PDFs and integration contour in the complex plane for the Mellin inversion
# Set to 0 to use exact PDFs and straight line contour in the complex plane for the Mellin inversion
opts_approxpdf = 0
# x-to-N direct Mellin transform of PDFs
opts_pdfintervals = 100 # Number of intervals for integration of PDF moments
pdfrule = 200 # Gaussian rule for the x-to-N Mellin transform
# Type of PDF evolution
#0: DYRES (backward evolution)
#1: Pegasus as DYRES (backward evolution)
#2: Mellin transform (forward evolution)
#3: Pegasus VFN (forward evolution)
#4: Pegasus VFN with alphas from DYRES (forward evolution)
evolmode = 0
+# Evolve PDFs from mufac (instead of mures) to b0/b
+mufevol = false
+
# Settings for the inverse Hankel transform
bintaccuracy = 1.0e-4 # Accuracy of the integration
# Settings for the inverse Mellin integrations
mellininv = 0 # Strategy for the Mellin inversion (0 Gauss-Legendre, 1 Talbot)
mellinintervals = 1 # Number of intervals
mellinrule = 64 # Number of nodes
# Options for the Mellin inversion with Gauss-Legendre integration
zmax = 27. # Upper limit of the contour in the imaginary axis
cpoint = 1. # Point of intersection of the contour with the real axis
phi = 0.5 # Angle between the real axis and the linear contour in units of pi
mellincores = 1 # Number of parallel threads for the Mellin integration
mellin1d = false # Use 1d (y-integrated) or 2d (y-dependent) Mellin inversion
xspace = false # Access PDFs in Bjorken-x space, without Mellin inversion (option available only in the LL case where the convolution is trivial)
cubaint = in.GetBool ( "cubaint" ); //true # integration with Cuba Suave
trapezint = in.GetBool ( "trapezint" ); //false # trapezoidal rule for the phi_lep integration and semi-analytical for costh
quadint = in.GetBool ( "quadint" ); //false # quadrature rule for the phi_lep integration and semi-analytical for costh
suavepoints = in.GetNumber ( "suavepoints" ); //1000000 # number of points for suave integration, newpoints is set to suavepoints/10;
nphitrape = in.GetNumber ( "nphitrape" ); //1000 # number of steps for trapezoidal rule of phi_lep integration
phiintervals = in.GetNumber ( "phiintervals" );
phirule = in.GetNumber ( "phirule" );
ncstart = in.GetNumber ( "ncstart" ); //1000 # starting sampling for the costh semi-analytical integration (common settings for the trapezoidal and quadrature rules)
cout << "At least one between qtcut and xqtcut must be > 0" << endl;
exit (-1);
}
//Automatic selector of integration type
if (intDimBorn < 0)
if (BORNquad)
intDimBorn = 2;
else
intDimBorn = 4;
if (intDimRes < 0)
if (BORNquad)
if (opts.makecuts)
intDimRes = 2;
else
intDimRes = 1; // -> Check this works also when not fully integrated in rapidity!!!
else
intDimRes = 4;
//Here check also if yrange is above ymax to set mellin1d = true when makecuts is false
if (intDimCT < 0)
if (CTquad)
if (opts.makecuts) // || yrange below ymax
intDimCT = 2;
else
intDimCT = 1;
else
intDimCT = 8;
if (intDimVJ < 0)
if (VJquad)
if (opts.makecuts)
intDimVJ = 5;
else
intDimVJ = 3;
else
intDimVJ = 7;
- if (doVJ && intDimVJ < 7 && order == 2)
+ if (makecuts && doVJ && intDimVJ < 7 && order >= 2)
{
cout << "cannot perform quadrature integration for V+jet at NNLO" << endl;
exit (-1);
}
// resummation term integration dimension
if (intDimRes<4 && intDimRes>0){
resint1d = (intDimRes == 1);
resint2d = (intDimRes == 2);
resint3d = (intDimRes == 3);
resintvegas = false;
} else {
resint2d = false;
resint3d = false;
resintvegas = true;
}
// born term integration dimension
if (intDimBorn < 4 && intDimBorn>1){
bornint2d = (intDimBorn == 2);
bornintvegas4d = false;
bornintvegas6d = false;
} else {
bornint2d = false;
bornintvegas4d = (intDimBorn == 4);
bornintvegas6d = (intDimBorn > 5);
}
// counter term integration dimension
if (intDimCT<4 && intDimCT>0){
ctint1d = (intDimCT == 1);
ctint2d = (intDimCT == 2);
ctint3d = (intDimCT == 3);
ctintvegas6d = false;
ctintvegas8d = false;
} else {
ctint2d = false;
ctint3d = false;
ctintvegas6d = (intDimCT <= 6);
ctintvegas8d = (intDimCT > 6);
}
// V+J integration dimension
if (intDimVJ < 7 && intDimVJ > 2)
{
vjint3d = (intDimVJ == 3);
vjint5d = (intDimVJ == 5);
vjintvegas7d = false;
}
else
{
vjint3d = false;
vjint5d = false;
vjintvegas7d = true;
}
if (mellin1d && (!(resint2d || resint1d) || makecuts))
{
cout << "mellin1d option is possible only for 1d or 2d integration of resummed piece, no cuts on leptons, and integration between [-ymin,ymax]" << endl;
exit (-1);
}
if (mellinintervals*mellinrule >= 512)
{
cout << "mellinintervals*mellinrule should be less than 512 " << endl;
exit(-1);
}
if (makecuts && vjint3d)
{
cout << "Required cuts on the final state leptons, enforce 5D integration for V+J fixed order cross section" << endl;
vjint3d = false;
vjint5d = true;
}
if (makecuts && helicity >= 0)
{
cout << "Required cuts on the final state leptons, cannot calculate helicity cross sections, enforce helicity = -1" << endl;
helicity = -1;
}
if (opts_.approxpdf_ == 1)
{
cout << "DYRES-style approximate PDF requested, enforce vegas integration for the resummed cross section" << endl;
resint2d = false;
resint3d = false;
resintvegas = true;
}
// -- binning
// check bins size
if ( bins.qtbins .size() < 2) throw QuitProgram("Option `qtbins` needs at least 2 items ");
if ( bins.ybins .size() < 2) throw QuitProgram("Option `ybins` needs at least 2 items ");
if ( bins.mbins .size() < 2) throw QuitProgram("Option `mbins` needs at least 2 items ");