Page MenuHomeHEPForge

No OneTemporary

diff --git a/doc/sphinx/HEJ.rst b/doc/sphinx/HEJ.rst
index cc6171d..6ae67be 100644
--- a/doc/sphinx/HEJ.rst
+++ b/doc/sphinx/HEJ.rst
@@ -1,326 +1,359 @@
.. _`Running HEJ 2`:
Running HEJ 2
=============
Quick start
-----------
In order to run HEJ 2, you need a configuration file and a file
containing fixed-order events. A sample configuration is given by the
:file:`config.yml` file distributed together with HEJ 2. Events in the
Les Houches Event File format can be generated with standard Monte Carlo
generators like `MadGraph5_aMC@NLO <https://launchpad.net/mg5amcnlo>`_
or `Sherpa <https://sherpa.hepforge.org/trac/wiki>`_. If HEJ 2 was
compiled with `HDF5 <https://www.hdfgroup.org/>`_ support, it can also
read event files in the format suggested in
`arXiv:1905.05120 <https://arxiv.org/abs/1905.05120>`_.
HEJ 2 assumes that the cross section is given by the sum of the event
weights. Depending on the fixed-order generator it may be necessary to
adjust the weights in the Les Houches Event File accordingly.
The processes supported by HEJ 2 are
- Pure multijet production
- Production of a Higgs boson with jets
- Production of a W boson with jets
..
- *TODO* Production of a Z boson or photon with jets
where at least two jets are required in each case. For the time being,
only leading-order events are supported.
After generating an event file :file:`events.lhe` adjust the parameters
under the `fixed order jets`_ setting in :file:`config.yml` to the
settings in the fixed-order generation. Resummation can then be added by
running::
HEJ config.yml events.lhe
Using the default settings, this will produce an output event file
:file:`HEJ.lhe` with events including high-energy resummation.
When using the `Docker image <https://hub.docker.com/r/hejdock/hej>`_,
HEJ can be run with
.. code-block:: bash
docker run -v $PWD:$PWD -w $PWD hejdock/hej HEJ config.yml events.lhe
.. _`HEJ 2 settings`:
Settings
--------
HEJ 2 configuration files follow the `YAML <http://yaml.org/>`_
format. The following configuration parameters are supported:
.. _`trials`:
**trials**
High-energy resummation is performed by generating a number of
resummation phase space configurations corresponding to an input
fixed-order event. This parameter specifies how many such
configurations HEJ 2 should try to generate for each input
event. Typical values vary between 10 and 100.
.. _`min extparton pt`:
**min extparton pt**
Specifies the minimum transverse momentum in GeV of the most forward
and the most backward parton. This setting is needed to regulate an
otherwise uncancelled divergence. Its value should be slightly below
the minimum transverse momentum of jets specified by `resummation
jets: min pt`_. See also the `max ext soft pt fraction`_ setting.
.. _`max ext soft pt fraction`:
**max ext soft pt fraction**
Specifies the maximum fraction that soft radiation can contribute to
the transverse momentum of each the most forward and the most backward
jet. Values between around 0.05 and 0.1 are recommended. See also the
`min extparton pt`_ setting.
.. _`fixed order jets`:
**fixed order jets**
This tag collects a number of settings specifying the jet definition
in the event input. The settings should correspond to the ones used in
the fixed-order Monte Carlo that generated the input events.
.. _`fixed order jets: min pt`:
**min pt**
Minimum transverse momentum in GeV of fixed-order jets.
.. _`fixed order 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
<http://fastjet.fr/>`_ documentation for a description of these
algorithms.
.. _`fixed order jets: R`:
**R**
The R parameter used in the jet algorithm, roughly corresponding
to the jet radius in the plane spanned by the rapidity and the
azimuthal angle.
.. _`resummation jets`:
**resummation jets**
This tag collects a number of settings specifying the jet definition
in the observed, i.e. resummed events. These settings are optional, by
default the same values as for the `fixed order jets`_ are assumed.
.. _`resummation jets: min pt`:
**min pt**
Minimum transverse momentum in GeV of resummation jets. This
should be between 25% and 50% larger than the minimum transverse
momentum of fixed order jets set by `fixed order jets: min pt`_.
.. _`resummation jets: algorithm`:
**algorithm**
The algorithm used to define jets. The HEJ 2 approach to
resummation relies on properties of :code:`antikt` jets, so this
value is strongly recommended. For a list of possible other
values, see the `fixed order jets: algorithm`_ setting.
.. _`resummation jets: R`:
**R**
The R parameter used in the jet algorithm.
.. _`event treatment`:
**event treatment**
Specify how to treat different event types. The different event types
contribute to different orders in the high-energy limit. The possible values
are :code:`reweight` to enable resummation, :code:`keep` to keep the events as
they are up to a possible change of renormalisation and factorisation scale,
and :code:`discard` to discard these events.
.. _`FKL`:
**FKL**
Specifies how to treat events respecting FKL rapidity ordering. These
configurations are dominant in the high-energy limit.
.. _`unordered`:
**unordered**
Specifies how to treat events with one emission that does not respect FKL
ordering, e.g. :code:`u d => g u d`. In the high-energy limit, such
configurations are logarithmically suppressed compared to FKL
configurations.
.. _`extremal qqx`:
**extremal qqx**
Specifies how to treat events with a quark-antiquark pair as extremal
partons in rapidity, e.g. :code:`g d => u u_bar d`. In the high-energy
limit, such configurations are logarithmically suppressed compared to FKL
configurations. :code:`reweight` is currently only supported for W boson
plus jets production.
.. _`central qqx`:
**central qqx**
Specifies how to treat events with a quark-antiquark pair central in
rapidity, e.g. :code:`g g => g u u_bar g`. In the high-energy limit, such
configurations are logarithmically suppressed compared to FKL
configurations. :code:`reweight` is currently only supported for W boson
plus jets production.
.. _`non-resummable`:
**non-resummable**
Specifies how to treat events where no resummation is possible. Only
:code:`keep` or :code:`discard` are valid options, *not* :code:`reweight`
for obvious reasons.
- .. _`scales`:
+.. _`scales`:
**scales**
Specifies the renormalisation and factorisation scales for the output
events. This can either be a single entry or a list :code:`[scale1,
scale2, ...]`. For the case of a list the first entry defines the
central scale. Possible values are fixed numbers to set the scale in
GeV or the following:
- :code:`H_T`: The sum of the scalar transverse momenta of all
final-state particles
- :code:`max jet pperp`: The maximum transverse momentum of all jets
- :code:`jet invariant mass`: Sum of the invariant masses of all jets
- :code:`m_j1j2`: Invariant mass between the two hardest jets.
Scales can be multiplied or divided by overall factors, e.g. :code:`H_T/2`.
It is also possible to import scales from an external library, see
:ref:`Custom scales`
.. _`scale factors`:
**scale factors**
A list of numeric factors by which each of the `scales`_ should be
multiplied. Renormalisation and factorisation scales are varied
independently. For example, a list with entries :code:`[0.5, 2]`
would give the four scale choices (0.5μ\ :sub:`r`, 0.5μ\ :sub:`f`);
(0.5μ\ :sub:`r`, 2μ\ :sub:`f`); (2μ\ :sub:`r`, 0.5μ\ :sub:`f`); (2μ\
:sub:`r`, 2μ\ :sub:`f`) in this order. The ordering corresponds to
the order of the final event weights.
.. _`max scale ratio`:
**max scale ratio**
Specifies the maximum factor by which renormalisation and
factorisation scales may difer. For a value of :code:`2` and the
example given for the `scale factors`_ the scale choices
(0.5μ\ :sub:`r`, 2μ\ :sub:`f`) and (2μ\ :sub:`r`, 0.5μ\ :sub:`f`)
will be discarded.
.. _`log correction`:
**log correction**
Whether to include corrections due to the evolution of the strong
coupling constant in the virtual corrections. Allowed values are
:code:`true` and :code:`false`.
.. _`event output`:
**event output**
Specifies the name of a single event output file or a list of such
files. The file format is either specified explicitly or derived from
the suffix. For example, :code:`events.lhe` or, equivalently
:code:`Les Houches: events.lhe` generates an output event file
:code:`events.lhe` in the Les Houches format. The supported formats
are
- :code:`file.lhe` or :code:`Les Houches: file`: The Les Houches
event file format.
- :code:`file.hepmc2` or :code:`HepMC2: file`: HepMC format version 2.
- :code:`file.hepmc3` or :code:`HepMC3: file`: HepMC format version 3.
- :code:`file.hepmc` or :code:`HepMC: file`: The latest supported
version of the HepMC format, currently version 3.
.. _`random generator`:
**random generator**
Sets parameters for random number generation.
.. _`random generator: name`:
**name**
Which random number generator to use. Currently, :code:`mixmax`
and :code:`ranlux64` are supported. Mixmax is recommended. See
the `CLHEP documentation
<http://proj-clhep.web.cern.ch/proj-clhep/index.html#docu>`_ for
details on the generators.
.. _`random generator: seed`:
**seed**
The seed for random generation. This should be a single number for
:code:`mixmax` and the name of a state file for :code:`ranlux64`.
.. _`analysis`:
**analysis**
Name and Setting for the event analyses; either a custom
analysis plugin or Rivet. For the first the :code:`plugin` sub-entry
should be set to the analysis file path. All further entries are passed on
to the analysis. To use Rivet a list of Rivet analyses have to be
given in :code:`rivet` and prefix for the yoda file has to be set
through :code:`output`. See :ref:`Writing custom analyses` for details.
+.. _`vev`:
+
+**vev**
+ Higgs vacuum expectation value in GeV. All electro-weak constants are derived
+ from this together with the `particle properties`_.
+
+.. _`particle properties`:
+
+**particle properties**
+
+ Specifies various properties of the different particles (Higgs, W or Z). All
+ electro-weak constants are derived from these together with the :ref:`vacuum
+ expectation value<vev>`.
+
+.. _`particle properties: particle`:
+
+ **Higgs, W or Z**
+ The particle (Higgs, |W+| or |W-|, Z) for which the following properties
+ are defined.
+
+ .. |W+| replace:: W\ :sup:`+`
+ .. |W-| replace:: W\ :sup:`-`
+
+ .. _`particle properties: particle: mass`:
+
+ **mass**
+ The mass of the particle in GeV.
+
+ .. _`particle properties: particle: width`:
+
+ **width**
+ The total decay width of the particle in GeV.
+
.. _`Higgs coupling`:
**Higgs coupling**
This collects a number of settings concerning the effective coupling
of the Higgs boson to gluons. This is only relevant for the
production process of a Higgs boson with jets and only supported if
HEJ 2 was compiled with `QCDLoop
<https://github.com/scarrazza/qcdloop>`_ support.
.. _`Higgs coupling: use impact factors`:
**use impact factors**
Whether to use impact factors for the coupling to the most forward
and most backward partons. Impact factors imply the infinite
top-quark mass limit.
.. _`Higgs coupling: mt`:
**mt**
The value of the top-quark mass in GeV. If this is not specified,
the limit of an infinite mass is taken.
.. _`Higgs coupling: include bottom`:
**include bottom**
Whether to include the Higgs coupling to bottom quarks.
.. _`Higgs coupling: mb`:
**mb**
The value of the bottom-quark mass in GeV. Only used for the Higgs
coupling, external bottom-quarks are always assumed to be massless.
Advanced Settings
~~~~~~~~~~~~~~~~~
All of the following settings are optional. Please **do not set** any of the
following options, unless you know exactly what you are doing. The default
behaviour gives the most reliable results for a wide range of observables.
.. _`regulator parameter`:
**regulator parameter**
Slicing parameter to regularise the subtraction term, called :math:`\lambda`
in `arxiv:1706.01002 <https://arxiv.org/abs/1706.01002>`_. Default is 0.2
diff --git a/doc/sphinx/HEJFOG.rst b/doc/sphinx/HEJFOG.rst
index 4a22e7d..7c33009 100644
--- a/doc/sphinx/HEJFOG.rst
+++ b/doc/sphinx/HEJFOG.rst
@@ -1,310 +1,295 @@
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.
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
<http://yaml.org/>`_ 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 require `particle properties`_
+ - bosons: Any gauge boson, they might further :ref:`decay<decays>`
- 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:`particle properties<particle properties: particle:
- 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 `particle properties`_.
+ through the :ref:`decays<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
<http://fastjet.fr/>`_ 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 <https://lhapdf.hepforge.org/pdfsets>`_ 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<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. 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. Quark-antiquark pairs are currently only implemented for
W boson production.
.. _`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.
-.. _`particle properties`:
+.. _`decays`:
-**particle properties**
- Specifies various properties of the different particles (Higgs, W or Z).
- This is only relevant if the chosen `process`_ is the production of the
- corresponding particles with jets. E.g. for the `process`_
- :code:`p p => h 2j` the :code:`mass`, :code:`width` and (optionally)
- :code:`decays` of the :code:`Higgs` boson are required, while all other
- particle properties will be ignored.
-
-.. _`particle properties: particle`:
-
- **Higgs, W+, W- or Z**
- The particle (Higgs, |W+|, |W-|, Z) for which the following
- properties are defined.
-
- .. |W+| replace:: W\ :sup:`+`
- .. |W-| replace:: W\ :sup:`-`
-
- .. _`particle properties: particle: mass`:
-
- **mass**
- The mass of the particle in GeV.
-
- .. _`particle properties: particle: width`:
-
- **width**
- The total decay width of the particle in GeV.
+**decays**
+ Optional setting specifying the decays of the particle. Only the decay
+ into two particles is implemented. Each decay has the form
- .. _`particle properties: particle: decays`:
+ :code:`boson: {into: [p1,p2], branching ratio: r}`
- **decays**
- Optional setting specifying the decays of the particle. Only the decay
- into two particles is implemented. Each decay has the form
+ 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).
- :code:`{into: [p1,p2], branching ratio: r}`
+ 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`.
- where :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 changed or set to :code:`1`.
-
-.. _`scales`:
+.. _`FOG scales`:
**scales**
- Specifies the renormalisation and factorisation scales for the output
- events. For details, see the corresponding entry in the HEJ 2
- :ref:`HEJ 2 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.
+ Specifies the renormalisation and factorisation scales for the output events.
+ For details, see the corresponding entry in the HEJ 2
+ :ref:`settings<scales>`. 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.
-.. _`event output`:
+.. _`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:`HEJ 2 settings` for details.
+ 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<event output>` for
+ details.
.. _`RanLux init`:
-.. _`random generator`:
+.. _`FOG random generator`:
**random generator**
Sets parameters for random number generation. See the HEJ 2
- :ref:`HEJ 2 settings` for details.
+ :ref:`settings<random generator>` for details.
-.. _`analysis`:
+.. _`FOG analysis`:
**analysis**
Specifies the name and settings for a custom analysis library. This
can be useful to specify cuts at the fixed-order level. See the
- corresponding entry in the HEJ 2 :ref:`HEJ 2 settings`
+ corresponding entry in the HEJ 2 :ref:`settings<analysis>`
for details.
-.. _`Higgs coupling`:
+.. _`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>`.
+
+.. _`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<particle properties>` 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:`HEJ 2 settings` for details.
+ 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<Higgs coupling>` for details.
diff --git a/include/HEJ/EWConstants.hh b/include/HEJ/EWConstants.hh
index b470f21..b055b34 100644
--- a/include/HEJ/EWConstants.hh
+++ b/include/HEJ/EWConstants.hh
@@ -1,86 +1,89 @@
/** \file
* \brief Defines the electro weak parameters
*
* \authors The HEJ collaboration (see AUTHORS for details)
* \date 2019
* \copyright GPLv2 or later
*/
#pragma once
#include <cmath>
#include "HEJ/exceptions.hh"
#include "HEJ/PDG_codes.hh"
namespace HEJ {
+ //! collection of basic particle properties
struct ParticleProperties{
double mass;
double width;
};
+ //! Collection of electro-weak constants
class EWConstants {
public:
EWConstants() = default;
+ //! initialise by Vacuum expectation value & boson properties
EWConstants(
- double vev,
- ParticleProperties const & Wprop,
- ParticleProperties const & Zprop,
- ParticleProperties const & Hprop):
- set{true},vev_{vev}, Wprop_{Wprop}, Zprop_{Zprop}, Hprop_{Hprop} {}
- //! initialise constants by Vacuum expectation value & boson properties
+ double vev, //!< vacuum expectation value
+ ParticleProperties const & Wprop, //!< W boson mass & width
+ ParticleProperties const & Zprop, //!< Z boson mass & width
+ ParticleProperties const & Hprop //!< Higgs boson mass & width
+ ): set{true},vev_{vev}, Wprop_{Wprop}, Zprop_{Zprop}, Hprop_{Hprop} {}
+ //! set constants by Vacuum expectation value & boson properties
void set_vevWZH(
- double vev,
- ParticleProperties const & Wprop,
- ParticleProperties const & Zprop,
- ParticleProperties const & Hprop
+ double vev, //!< vacuum expectation value
+ ParticleProperties const & Wprop, //!< W boson mass & width
+ ParticleProperties const & Zprop, //!< Z boson mass & width
+ ParticleProperties const & Hprop //!< Higgs boson mass & width
){
set = true; vev_= vev; Wprop_= Wprop; Zprop_= Zprop; Hprop_= Hprop;
}
//! vacuum expectation value
double vev() const {check_set(); return vev_;}
//! Properties of the W boson
ParticleProperties const & Wprop() const {check_set(); return Wprop_;}
//! Properties of the Z boson
ParticleProperties const & Zprop() const {check_set(); return Zprop_;}
//! Properties of the Higgs boson
ParticleProperties const & Hprop() const {check_set(); return Hprop_;}
//! access Properties by boson id
ParticleProperties const & prop(ParticleID const id) const {
using namespace pid;
switch(id){
case Wp:
case Wm:
return Wprop();
case Z:
return Zprop();
case h:
return Hprop();
default:
- throw std::invalid_argument("No particle properties available for particle "+name(id));
+ throw std::invalid_argument("No properties available for particle "+name(id));
}
}
//! cosine of Weinberg angle
double cos_tw() const {return Wprop().mass/Zprop().mass;}
//! cosine square of Weinberg angle
double cos2_tw() const {return cos_tw()*cos_tw();}
//! sinus Weinberg angle
double sin_tw() const {return sqrt(sin2_tw());}
//! sinus square of Weinberg angle
double sin2_tw() const {return 1. - cos2_tw();}
//! elector magnetic coupling
double alpha_em() const {return e2()/4./M_PI;}
//! weak coupling
double alpha_w() const {return gw2()/2.;}
private:
double gw2() const {return 4*Wprop().mass/vev()*Wprop().mass/vev();}
double e2() const {return gw2()*sin2_tw();}
void check_set() const {
if(!set) throw std::invalid_argument("EW constants not specified");
}
bool set{false};
double vev_;
ParticleProperties Wprop_;
ParticleProperties Zprop_;
ParticleProperties Hprop_;
};
}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Dec 21, 2:02 PM (11 h, 37 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4023055
Default Alt Text
(30 KB)

Event Timeline