How to generate APPLgrids¶
Author: Rabah Abdul Khalek
APPLgrids
are the partonic cross sections needed to compute hadronic observables (proton-proton collisions).
These QCD-perturbative components are generated by Monte-Carlo
simulation and tabulated in .root
format.
After installing MCFM-6.8
interfaced with mcfm-bridge-0.0.34-nnpdf
(see Installation in~).
Follow the following steps to generate APPLgrids
.
Configuration in mcfm-bridge-0.0.34-nnpdf¶
The first step is to setup the kinematics of the cross-section distribution you’re interested in.
To do that, you have to edit mcfm-bridge-0.0.34-nnpdf/src/mcfm_interface.cxx
by doing the following:
Binning:
In
void book_grid()
, you should dictate the:Type of process:
mcfm-z
for z production,mcfm-TT
for ttbar, etc.q2Low
,q2Up
,nQ2bins
andqorder
are binning information for the grid constructor.Ngrids
the number of grids generated. For example, if your cross-section is double differential in var1(10 bins) and var2(3 bins). You can generate 3 grids corresponding to var2 that each contain 10 bins of var1.strcpy(gridFiles[0],"_yZ.root");
this dictates the name of the output grid. In our exampleLHCBZ13TEV_yZ.root
.nObsBins[0] = 17;
the number of bins.static const double _y[18]
the breakdown of binning.obsBins[0] = { _y };
append the observable.
example:
else if ( glabel == "LHCBZ13TEV" ) { std::cout << "LHCb Z -> e+ e- rapidity distribution, 294 pb-1, 13 TeV" << std::endl; pdf_function = "mcfm-z"; q2Low = 8315.17, q2Up = 8315.19; nQ2bins = 3; qorder = 1; Ngrids = 1; strcpy(gridFiles[0],"_yZ.root"); nObsBins[0] = 17; static const double _y[18] = { 2.000, 2.125, 2.250, 2.375, 2.500, 2.625, 2.750, 2.875, 3.000, 3.125, 3.250, 3.375, 3.500, 3.625, 3.750, 3.875, 4.000, 4.250 }; obsBins[0] = { _y }; }
Specify the distribution (here, it’s a distribution in rapidity of the outcoming particles 3 and 4):
In
void getObservable(const double evt[][mxpart])
, you should add the name of your dataset and determine the kinematic variable that the cross-section will span over. example:else if (glabel == "LHCBZ13TEV") { Observable [ 0 ] = rapidity34; }
Configuration of RunCard in MCFM-6.8¶
For this, you need to duplicate the default run card: cp MCFM-6.8/Bin/input.DAT MCFM-6.8/Bin/LHCBZ13TEV.dat
.
and edit the later according to the information in the paper, e.g the kinematic cuts, update the masses and theory settings etc.
Generation¶
**/!\ To change according to the conda installation via conda /!\ **
You need to make
again mcfm-bridge after editing mcfm_interface.cxx
:
cd external/mcfm-bridge-0.0.34-nnpdf
make install
cd external/MCFM-6.8
make -j
./runmcfm <InputCard.Dat> #once to create the grids
./runmcfm <InputCard.Dat> #once to fill them