get with
$ git clone https://github.com/odysei/MEKD
Bash procedure follows below.
-
Setup the environment:
$ . scripts/setup_flags.sh
$ . scripts/add_local_lib.sh
-
Buil the library: libMEKD.so
$ make -j N
-
bin:
-
data:
-
doc:
-
interface:
-
lib:
-
scripts:
-
src:
-
test:
-
utils:
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);
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.
Internal computation sequence is the following:
HEF_MEKD (4 leptons) for v2 and earlier:
- eval_MEs(...) (user runs this)
- ME_runners[i]->evaluate(...)
- Run_ME_Configurator_HYPOTHESIS(...) (turn on/off couplings)
- Run_ME_Configurator_SPIN(...) (generic coupling mixer)
- Run_ME_Dispatcher_SPIN(...) (find and dispatch correct ME)
- Run_MEs_Evaluator_Initial_State_TYPE(..., ME)
v3:
- eval_MEs(...) (user runs this)
- ME_runners[i]->evaluate(...)
- template<> evaluate_PROCESS(...)
- template<> Configurator_Spin0(...) (prepares Parameters_X: couplings, mass, etc.)
- template<> ME_Evaluator_IS_XX(...) (evaluates provided ME)
The following code style(s) is(are) used:
-
For C/C++: Linux Kernel Style, see https://www.kernel.org/doc/Documentation/CodingStyle
-
For Python: PEP, see https://www.python.org/dev/peps/pep-0008/
-
RUN clang-format: some automatization for C++ is available through clang-format. Use it! Run:
$ clang-format -style=file -i *.h
$ clang-format -style=file -i *.cc
$ clang-format -style=file -i *.cpp
to update all files in a current directory.
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.