Skip to content

Latest commit

 

History

History
130 lines (72 loc) · 2.56 KB

README.md

File metadata and controls

130 lines (72 loc) · 2.56 KB

Matrix Element Kinematic Discriminant (MEKD)

Framework for using squared matrix elements for event classification.

get with

$ git clone https://github.com/odysei/MEKD

Build (standalone)

Bash procedure follows below.

  • Setup the environment:

    $ . scripts/setup_flags.sh

    $ . scripts/add_local_lib.sh

  • Buil the library: libMEKD.so

    $ make -j N

Directory structure

  • bin:

  • data:

  • doc:

  • interface:

  • lib:

  • scripts:

  • src:

  • test:

  • utils:

Usage

Instantiation

The MEKD class is instantiated by providing a vector of process descriptions, like the following:

vector<process_description> my_processes;

...

MEKD my_MEs(my_processes);

Evaluation

Prepare your input, see input and input_c (MEKD_input.h), and your output vector (don't forget to reserve size), and run eval_MEs, like this:

input my_input;

vector my_results;

...

eval_MEs(my_input, my_results);

If you vary couplings via the code, the parameter file values will be overriden during a runtime. In other words, use one or the other method, but don't mix as you will run into an unwanted behavior.

Some details on evaluation

Internal computation sequence is the following:

HEF_MEKD (4 leptons) for v2 and earlier:

  1. eval_MEs(...) (user runs this)
  2. ME_runners[i]->evaluate(...)
  3. Run_ME_Configurator_HYPOTHESIS(...) (turn on/off couplings)
  4. Run_ME_Configurator_SPIN(...) (generic coupling mixer)
  5. Run_ME_Dispatcher_SPIN(...) (find and dispatch correct ME)
  6. Run_MEs_Evaluator_Initial_State_TYPE(..., ME)

v3:

  1. eval_MEs(...) (user runs this)
  2. ME_runners[i]->evaluate(...)
  3. template<> evaluate_PROCESS(...)
  4. template<> Configurator_Spin0(...) (prepares Parameters_X: couplings, mass, etc.)
  5. template<> ME_Evaluator_IS_XX(...) (evaluates provided ME)

Formatting

The following code style(s) is(are) used:

to update all files in a current directory.

Notes

Inherently from MadGraph code has some of its parameters as statics, which is, in general, dangerous. Will likely have some problems if running multithreaded or/with several objects with "similar" calculations, i.e., unwanted xtalk.