diff --git a/FixedOrderGen/t/CMakeLists.txt b/FixedOrderGen/t/CMakeLists.txt
index aba4113..8844ef9 100644
--- a/FixedOrderGen/t/CMakeLists.txt
+++ b/FixedOrderGen/t/CMakeLists.txt
@@ -1,147 +1,162 @@
set(tst_dir "${CMAKE_CURRENT_SOURCE_DIR}")
foreach(tst W_reconstruct_enu W_2j_classify W_nj_classify)
add_executable(test_${tst} ${tst_dir}/${tst}.cc)
target_link_libraries(test_${tst} hejfog_lib)
add_test(NAME ${tst} COMMAND test_${tst} WORKING_DIRECTORY ${tst_dir})
endforeach()
# this only tests if the runcard actually works, not if the result is correct
add_test(
NAME main_2j
COMMAND HEJFOG ${tst_dir}/config_2j.yml
)
add_test(
NAME main_h2j
COMMAND HEJFOG ${tst_dir}/config_h2j.yml
)
add_test(
NAME main_h2j_decay
COMMAND HEJFOG ${tst_dir}/config_h2j_decay.yml
)
add_test(
NAME peakpt
COMMAND HEJFOG ${tst_dir}/config_2j_peak.yml
)
# check that uno emission doesn't change FKL xs
add_executable(FKL_uno FKL_uno.cc)
target_link_libraries(FKL_uno hejfog_lib)
add_test(
NAME FKL_uno
# calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
COMMAND FKL_uno ${tst_dir}/config_h3j_uno.yml 0.0243548 0.000119862
)
# xs tests
add_executable(xs_gen xs_gen.cc)
target_link_libraries(xs_gen hejfog_lib)
## Higgs
add_test(
+ NAME xs_hqQ
+ # calculated with Sherpa see #132
+ COMMAND xs_gen ${tst_dir}/config_hqQ.yml 1.612e-02 1.26303e-04
+)
+add_test(
NAME xs_h2j
# calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
COMMAND xs_gen ${tst_dir}/config_h2j.yml 2.04928 0.00956022
)
add_test(
NAME xs_h3j
# calculated with HEJ revision bd4388fe55cbc3f5a7b6139096456c551294aa31
COMMAND xs_gen ${tst_dir}/config_h3j.yml 1.07807 0.0132409
)
add_test(
NAME xs_h5j
# calculated with HEJ revision dbde2ffbb3b383ae6709b2424d8f0f9d5658270b
COMMAND xs_gen ${tst_dir}/config_h5j.yml 0.0112504 0.000199633
)
add_test(
NAME xs_h3j_uno
# calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
COMMAND xs_gen ${tst_dir}/config_h3j_uno.yml 0.00347538 3.85875e-05
)
add_test(
NAME xs_h2j_decay
# calculated with HEJ revision 9570e3809613272ac4b8bf3236279ba23cf64d20
COMMAND xs_gen ${tst_dir}/config_h2j_decay.yml 0.00466994 2.20995e-05
)
## pure jets
add_test(
+ NAME xs_qQ
+ # calculated with Sherpa see #132
+ COMMAND xs_gen ${tst_dir}/config_qQ.yml 7.354e+05 1.905e+03
+)
+add_test(
NAME xs_2j
# calculated with "combined" HEJ svn r3480
COMMAND xs_gen ${tst_dir}/config_2j.yml 86.42031848e06 590570
)
add_test(
NAME xs_3j_uno
# calculated with HEJ revision 9401196fba75b5d16bc33f2a309175fecaca00f1
COMMAND xs_gen ${tst_dir}/config_3j_uno.yml 900 14.3131
)
add_test(
NAME xs_3j_qqx
# calculated with HEJ revision 9401196fba75b5d16bc33f2a309175fecaca00f1
COMMAND xs_gen ${tst_dir}/config_3j_qqx.yml 62040 1005
)
add_test(
NAME xs_4j_qqx
# calculated with HEJ revision 9401196fba75b5d16bc33f2a309175fecaca00f1
COMMAND xs_gen ${tst_dir}/config_4j_qqx.yml 28936 550
)
add_test(
NAME xs_4j
# calculated with HEJ revision 13207b5f67a5f40a2141aa7ee515b022bd4efb65
COMMAND xs_gen ${tst_dir}/config_4j.yml 915072 15402.4
)
## W
add_test(
+ NAME xs_WqQ
+ # calculated with Sherpa see #132
+ COMMAND xs_gen ${tst_dir}/config_WpqQ.yml 3.086e+00 4.511e-02
+)
+add_test(
NAME xs_W2j
# calculated with HEJ revision 987bb30a7985a24a7961f98cfbbc74d3a7992970
COMMAND xs_gen ${tst_dir}/config_Wm2j.yml 231.404 3.43798
)
add_test(
NAME xs_W3j_uno
# calculated with HEJ revision 996f728a56ed67b980fccbe79948fe56914aaccd+1
COMMAND xs_gen ${tst_dir}/config_Wp3j_uno.yml 0.295275 0.0056667
)
add_test(
NAME xs_W3j_eqqx
# calculated with HEJ revision 987bb30a7985a24a7961f98cfbbc74d3a7992970
COMMAND xs_gen ${tst_dir}/config_Wp3j_qqx.yml 8.45323 0.103449
)
add_test(
NAME xs_W4j_qqx
# calculated with HEJ revision 987bb30a7985a24a7961f98cfbbc74d3a7992970
COMMAND xs_gen ${tst_dir}/config_Wp4j_qqx.yml 0.0851908 0.00300447
)
# Test that sum of partons == proton
add_executable(PSP_channel PSP_channel.cc)
target_link_libraries(PSP_channel hejfog_lib)
# pure jets
add_test(
NAME channel_2j
COMMAND PSP_channel ${tst_dir}/config_2j.yml
)
add_test(
NAME channel_3j_qqx
COMMAND PSP_channel ${tst_dir}/config_3j_qqx.yml
)
add_test(
NAME channel_3j_uno
COMMAND PSP_channel ${tst_dir}/config_3j_uno.yml
)
add_test(
NAME channel_4j_qqx
COMMAND PSP_channel ${tst_dir}/config_4j_qqx.yml
)
# W+jets
# pure jets
add_test(
NAME channel_W2j
COMMAND PSP_channel ${tst_dir}/config_Wm2j.yml
)
add_test(
NAME channel_W3j_uno
COMMAND PSP_channel ${tst_dir}/config_Wp3j_uno.yml
)
add_test(
NAME channel_W3j_eqqx
COMMAND PSP_channel ${tst_dir}/config_Wp3j_qqx.yml
)
add_test(
NAME channel_W4j_qqx
COMMAND PSP_channel ${tst_dir}/config_Wp4j_qqx.yml
)
diff --git a/FixedOrderGen/t/config_WpqQ.yml b/FixedOrderGen/t/config_WpqQ.yml
new file mode 100644
index 0000000..f57da2d
--- /dev/null
+++ b/FixedOrderGen/t/config_WpqQ.yml
@@ -0,0 +1,35 @@
+events: 400000
+
+jets:
+ min pt: 20
+ algorithm: antikt
+ R: 0.4
+ max rapidity: 6
+
+beam:
+ energy: 6500
+ particles: [p, p]
+
+pdf: 11000
+
+process: u s => e+ nu_e 2j
+
+subleading fraction: .4
+
+scales: 125.
+
+random generator:
+ name: mixmax
+
+vev: 246.2196508
+
+particle properties:
+ Higgs:
+ mass: 125
+ width: 0.004165
+ W:
+ mass: 80.385
+ width: 2.085
+ Z:
+ mass: 91.1876
+ width: 2.495
diff --git a/FixedOrderGen/t/config_hqQ.yml b/FixedOrderGen/t/config_hqQ.yml
new file mode 100644
index 0000000..a3849ea
--- /dev/null
+++ b/FixedOrderGen/t/config_hqQ.yml
@@ -0,0 +1,40 @@
+events: 400000
+
+jets:
+ min pt: 20
+ algorithm: antikt
+ R: 0.4
+ max rapidity: 6
+
+beam:
+ energy: 6500
+ particles: [p, p]
+
+pdf: 11000
+
+process: u d => h 2j
+
+subleading fraction: .4
+
+scales: 125.
+
+random generator:
+ name: mixmax
+
+decays:
+ Higgs:
+ branching ratio: 1
+ into: [photon, photon]
+
+vev: 246.2196508
+
+particle properties:
+ Higgs:
+ mass: 125
+ width: 0.004165
+ W:
+ mass: 80.385
+ width: 2.085
+ Z:
+ mass: 91.1876
+ width: 2.495
diff --git a/FixedOrderGen/t/config_qQ.yml b/FixedOrderGen/t/config_qQ.yml
new file mode 100644
index 0000000..483f8f1
--- /dev/null
+++ b/FixedOrderGen/t/config_qQ.yml
@@ -0,0 +1,35 @@
+events: 400000
+
+jets:
+ min pt: 20
+ algorithm: antikt
+ R: 0.4
+ max rapidity: 6
+
+beam:
+ energy: 7000
+ particles: [p, p]
+
+pdf: 11000
+
+process: u d => 2j
+
+subleading fraction: .4
+
+scales: 125.
+
+random generator:
+ name: mixmax
+
+vev: 246.2196508
+
+particle properties:
+ Higgs:
+ mass: 125
+ width: 0.004165
+ W:
+ mass: 80.385
+ width: 2.085
+ Z:
+ mass: 91.1876
+ width: 2.495
diff --git a/doc/sphinx/HEJFOG.rst b/doc/sphinx/HEJFOG.rst
index 72bc54f..7352786 100644
--- a/doc/sphinx/HEJFOG.rst
+++ b/doc/sphinx/HEJFOG.rst
@@ -1,296 +1,296 @@
The HEJ Fixed Order Generator
=============================
For high jet multiplicities event generation with standard fixed-order
generators becomes increasingly cumbersome. For example, the
leading-order production of a Higgs Boson with five or more jets is
computationally prohibitively expensive.
To this end, HEJ 2 provides the ``HEJFOG`` fixed-order generator
that allows to generate events with high jet multiplicities. To
facilitate the computation the limit of Multi-Regge Kinematics with
large invariant masses between all outgoing particles is assumed in the
matrix elements. The typical use of the ``HEJFOG`` is to supplement
low-multiplicity events from standard generators with high-multiplicity
events before using the HEJ 2 program to add high-energy
resummation.
Installation
------------
The ``HEJFOG`` comes bundled together with HEJ 2 and the
installation is very similar. After downloading HEJ 2 and
installing the prerequisites as described in :ref:`Installation` the
``HEJFOG`` can be installed with::
cmake /path/to/FixedOrderGen -DCMAKE_INSTALL_PREFIX=target/directory
make install
where :file:`/path/to/FixedOrderGen` refers to the :file:`FixedOrderGen`
subdirectory in the HEJ 2 directory. If HEJ 2 was
installed to a non-standard location, it may be necessary to specify the
directory containing :file:`HEJ-config.cmake`. If the base installation
directory is :file:`/path/to/HEJ`, :file:`HEJ-config.cmake` should be
found in :file:`/path/to/HEJ/lib/cmake/HEJ` and the commands for
installing the ``HEJFOG`` would read::
cmake /path/to/FixedOrderGen -DHEJ_DIR=/path/to/HEJ/lib/cmake/HEJ -DCMAKE_INSTALL_PREFIX=target/directory
make install
The installation can be tested with::
make test
-provided that the CT10nlo PDF set is installed.
+provided that the ``CT10nlo`` PDF sets is installed.
Running the fixed-order generator
---------------------------------
After installing the ``HEJFOG`` you can modify the provided
configuration file :file:`configFO.yml` and run the generator with::
HEJFOG configFO.yml
The resulting event file, by default named :file:`HEJFO.lhe`, can then be
fed into HEJ 2 like any event file generated from a standard
fixed-order generator, see :ref:`Running HEJ 2`.
Settings
--------
Similar to HEJ 2, the ``HEJFOG`` uses a `YAML
`_ configuration file. The settings are
.. _`process`:
**process**
The scattering process for which events are being generated. The
format is
:code:`in1 in2 => out1 out2 ...`
The incoming particles, :code:`in1`, :code:`in2` can be
- quarks: :code:`u`, :code:`d`, :code:`u_bar`, and so on
- gluons: :code:`g`
- protons :code:`p` or antiprotons :code:`p_bar`
The outgoing particles, can be
- jets: :code:`j`, multiple jets can be grouped together e.g. :code:`2j`
- bosons: Any gauge boson, they might further :ref:`decay`
- leptons: if they can be reconstructed to a :code:`W+` or :code:`W-`,
e.g. :code:`e+ nu_e`
At most one of the outgoing particles can be a boson, the rest has to be
partonic. At the moment only Higgs :code:`h`, :code:`W+` and :code:`W-`
bosons are supported. All other outgoing particles are jets. There have to be
at least two jets. Instead of the leptons decays of the bosons can be added
through the :ref:`decays`. The latter is required to decay a Higgs
boson. So :code:`p p => Wp j j` is the same as :code:`p p => e+ nu_e 2j`, if
the decay :code:`Wp => e+ nu_e` is specified in `decays`_.
.. _`events`:
**events**
Specifies the number of events to generate.
.. _`jets`:
**jets**
Defines the properties of the generated jets.
.. _`jets: min pt`:
**min pt**
Minimum jet transverse momentum in GeV.
.. _`jets: peak pt`:
**peak pt**
Optional setting to specify the dominant jet transverse momentum
in GeV. If the generated events are used as input for HEJ
resummation, this should be set to the minimum transverse momentum
of the resummation jets. In all cases it has to be larger than
:code:`min pt`. The effect is that only a small fraction of jets
will be generated with a transverse momentum below the value of
this setting.
.. _`jets: algorithm`:
**algorithm**
The algorithm used to define jets. Allowed settings are
:code:`kt`, :code:`cambridge`, :code:`antikt`,
:code:`cambridge for passive`. See the `FastJet
`_ documentation for a description of these
algorithms.
.. _`jets: R`:
**R**
The R parameter used in the jet algorithm.
.. _`jets: max rapidity`:
**max rapidity**
Maximum absolute value of the jet rapidity.
.. _`beam`:
**beam**
Defines various properties of the collider beam.
.. _`beam: energy`:
**energy**
The beam energy in GeV. For example, the 13
TeV LHC corresponds to a value of 6500.
.. _`beam: particles`:
**particles**
A list :code:`[p1, p2]` of two beam particles. The only supported
entries are protons :code:`p` and antiprotons :code:`p_bar`.
.. _`pdf`:
**pdf**
The `LHAPDF number `_ of the PDF set.
For example, 230000 corresponds to an NNPDF 2.3 NLO PDF set.
.. _`subleading fraction`:
**subleading fraction**
This setting is related to the fraction of events that are not a FKL
configuration. All possible subleading process are listed in
:ref:`subleading channels`. This value must be
positive and not larger than 1. It should typically be chosen between
0.01 and 0.1. Note that while this parameter influences the chance of
generating subleading configurations, it generally does not
correspond to the actual fraction of subleading events.
.. _`subleading channels`:
**subleading channels**
Optional parameters to select a specific subleading process, multiple
channels can be selected at once. If multiple subleading configurations
are possible one will be selected at random for each event, thus each
final state will include at most one subleading process, e.g. either
:code:`unordered` or :code:`qqx`. Only has an effect if
:code:`subleading fraction` is non-zero. Subleading processes requested here
also have to be available from HEJ, for a list of implemented processes see
:ref:`event treatment`. The following values are allowed:
- :code:`all`: All channels allowed. This is the default.
- :code:`none`: No subleading contribution, only the leading (FKL)
configurations are allowed. This is equivalent to
:code:`subleading fraction: 0`.
- :code:`unordered`: Unordered emission allowed.
Unordered emission are any rapidity ordering where exactly one gluon is
emitted outside the rapidity ordering required in FKL events. More
precisely, if at least one of the incoming particles is a quark or
antiquark and there are more than two jets in the final state,
:code:`subleading fraction` states the probability that the flavours
of the outgoing particles are assigned in such a way that an unordered
configuration arises.
- :code:`qqx`: Production of a quark-antiquark pair. In the leading
(FKL) configurations all partons except for the most backward and
forward ones are gluons. If the :code:`qqx` channel is allowed,
:code:`subleading fraction` gives the probability of emitting a
quark-antiquark pair in place of two gluons that are adjacent in
rapidity.
.. _`unweight`:
**unweight**
This setting defines the parameters for the partial unweighting of
events. You can disable unweighting by removing this entry from the
configuration file.
.. _`unweight: sample size`:
**sample size**
The number of weighted events used to calibrate the unweighting.
A good default is to set this to the number of target
`events`_. If the number of `events`_ is large this can
lead to significant memory consumption and a lower value should be
chosen. Contrarily, for large multiplicities the unweighting
efficiency becomes worse and the sample size should be increased.
.. _`unweight: max deviation`:
**max deviation**
Controls the range of events to which unweighting is applied. A
larger value means that a larger fraction of events are unweighted.
Typical values are between -1 and 1.
.. _`decays`:
**decays**
Optional setting specifying the decays of the particle. Only the decay
into two particles is implemented. Each decay has the form
:code:`boson: {into: [p1,p2], branching ratio: r}`
where :code:`boson` is the corresponding boson, :code:`p1` and :code:`p2` are
the particle names of the decay product (e.g. :code:`photon`) and :code:`r`
is the branching ratio. The branching ratio is optional (:code:`1` by
default).
Decays of a Higgs boson are treated as the production and subsequent
decay of an on-shell Higgs boson, so decays into e.g. Z bosons are not
supported. In contrast W bosons are decayed off-shell, thus the
branching ratio should not be specified or set to :code:`1`.
.. _`FOG scales`:
**scales**
Specifies the renormalisation and factorisation scales for the output events.
For details, see the corresponding entry in the HEJ 2
:ref:`settings`. Note that this should usually be a single value, as
the weights resulting from additional scale choices will simply be ignored
when adding high-energy resummation with HEJ 2.
.. _`FOG event output`:
**event output**
Specifies the name of a single event output file or a list of such files. See
the corresponding entry in the HEJ 2 :ref:`settings` for
details.
.. _`RanLux init`:
.. _`FOG random generator`:
**random generator**
Sets parameters for random number generation. See the HEJ 2
:ref:`settings` for details.
.. _`FOG analyses`:
**analyses**
Specifies the name and settings for one or more analyses library. This
can be useful to specify cuts at the fixed-order level. See the
corresponding entry in the HEJ 2 :ref:`settings`
for details.
.. _`FOG vev`:
**vev**
Higgs vacuum expectation value in GeV. All electro-weak constants are derived
from this together with the :ref:`particle properties `.
.. _`FOG particle properties`:
**particle properties**
Specifies various properties of the different particles (Higgs, W or Z).
These have to be specified for all bosons. See the corresponding entry in the
HEJ 2 :ref:`settings` for details.
.. _`FOG Higgs coupling`:
**Higgs coupling**
This collects a number of settings concerning the effective coupling of the
Higgs boson to gluons. See the corresponding entry in the HEJ 2
:ref:`settings` for details.