JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
MELA

This is what contains the bulk of what one desires to do with MELA within Python. The baseplate of this, is of course, the Mela class in C++.

Constructors

The constructor inherits from the constructor in the C++ implementation. All the default arguments work, so one could create the Mela object with just a call to Mela().

Couplings

Couplings in MELA are what define the interactions between different particles.

These are couplings using the amplitude basis for the Higgs Boson. These are described in the following papers on the main page for JHUGen linked here.

In MadMELA (or the Madgraph matrix elements used within MELA), the values set will colloquially be called "couplings" but are actually the Wilson Coefficients that are used in Standard Model Effective Field Theory (SMEFT). Under the SMEFTSim framework, all the Wilson Coefficients being set to 0 corresponds to the Standard Model. The SMEFTSim formulation is described in the following paper here.

Standard Model Definition

In MELA, the Standard Model is defined as:

  • ghz1=1, ghg2=1 for JHUGen
  • ghz1=1, kappa_top=1, kappa_bot=1 for MCFM
  • No couplings set for MadMELA (SMEFTSim default is Standard Model)

Coupling Values

MELA in Python relies upon named couplings, rather than couplings done through indices as in C++. See the following table of all couplings here. All of the possible couplings/Wilson Coefficients you would want to set are defined by macros in mela_binding.cpp. The definition for those macros can be found here.

Most couplings can be both real and imaginary. As a consequence, most couplings are assigned via a Python iterable of size 2.

Some couplings are different. For example, all the SMEFTSim couplings for usage within MadMELA are single-valued real inputs.

import Mela
m = Mela.Mela()
m.ghz1 = [1,0] #sets ghz1 to 1
m.ghz4 = [0,1] #sets ghz4 to i
m.mdl_chwb = 1 #MadMELA coupling set to a real value!

Coupling Arrays

One can also access the arrays for each of the coupling arrays in the table above. This is sometimes useful when you want to see the entire array at once.

Due to the way the Python bindings were made, the calls to arrays need to be formulated as function calls. This would look like the following:

import Mela
m = Mela.Mela()
print(
m.selfDHggcoupl()
)
# You can also set other variables to the list to manipulate.
# Should you change the values of the list assigned
# to the variable, the actual values
# in MELA will change as well
selfDHggcoupl = m.selfDHggcoupl()

Angles

The MELA package can also be used to compute the angles of a scattering process. Simply input a given MELA event using Mela::SetInputEvent and run one of the following three functions:

Here is an example:

import Mela
m = Mela.Mela()
#Imagine making three SimpleParticle_t objects here
#to represent the mothers, daughters, and associated particles
m.SetInputEvent(daughters, associated, mothers)
m.setProcess(PROCESS, Mela.MatrixElement.JHUGen, PRODUCTION)
m4L, mZ1, mZ2, costheta1, costheta2, phi, costhetastar, phi1 = m.computeDecayAngles()
Mela::Mela
Mela(double LHCsqrts_=13., double mh_=125., TVar::VerbosityLevel verbosity_=TVar::ERROR)
the MELA constructor
Definition: Mela.cc:53