# Plugins: The Custom Code¶

This page provides a coincise overview of plugins. Plugins are functions written in C++ which can be called by the CWB pipeline at different stages of the analysis. Plugins enable the customization of the analysis and the extraction of information relevant to monitor the data processing. The interface and the list of plugin stages are described in the CWB_Plugin_Template.C

The name of the plugins used during the analysis must be declared in the user_parameters.C file:
plugin = TMacro("macro/CWB_Plugin_Template.C");

The user can make use of configuration files for the plugins. These files are unnamed ROOT macros and must be declared in the user_parameters.C file:
configPlugin = TMacro("macro/CWB_Plugin_Template_Config.C");


## Compilation of the plugins¶

The plugins are compiled at run time for each job while the analysis is executed. Nevertheless, the plugins can be compiled before running the analysis using the command cwb_compile:
cwb-compile macro/CWB_Plugin_Template.C


The compilation generates the following shared object:

macro/CWB_Plugin_TestClassMDC_LCI_C.so


Finally, the config/user_parameters.C must be edited by adding the following lines:

plugin = TMacro("macro/CWB_Plugin_Template.C");
plugin.SetTitle("macro/CWB_Plugin_Template_C.so");


## Examples of plugins¶

The following link provides an example of a plugin:
This plugin enables the injection ‘on the fly’ of simulated CBC signals. The corresponding configPlugin used to define the MDC set is available at the following link:

Further plugins are already available to the user and can be used at different stages of the pipeline. These are collected in the distribution directory \$HOME_WAT/tools/cwb/plugins/, together with the related configPlugins file. The available plugins are summarised by the following image and are also listed below in this page.

LIST OF THE AVAILABLE PLUGINS