Iguana 0.0.0
Implementation Guardian of Analysis Algorithms
|
This documentation shows how to use the Iguana algorithms.
For more documentation, see
To see Iguana algorithms used in the context of analysis code, with various languages and use cases, see:
NOTE: If you're not familiar with Iguana, please read the sections below first.
Iguana algorithms are in C++; to use Iguana with other languages, see:
An Iguana algorithm is a function that maps input HIPO bank data to output data. The available algorithms are:
The algorithm types are defined based on what they do to HIPO bank data:
Filter | Remove rows of a bank based on some bool condition |
Transformer | Transform (mutate) elements of a bank |
Creator | Create a new bank |
Most algorithms are configurable:
All algorithms have the following functions, which may be used in analysis code that uses the HIPO C++ API; for analysis code that does not, skip to the Action Functions section.
iguana::Algorithm::Start | Run before event processing |
iguana::Algorithm::Run | Run for every event |
iguana::Algorithm::Stop | Run after event processing |
The action functions do the real work of the algorithm, and are meant to be easily callable from any analysis, even if HIPO banks are not directly used. These functions are unique to each algorithm, so view the algorithm documentation for details, or browse the full list:
The action functions have types that correspond to the algorithm types. Furthermore, some action functions can only be useful if all of the rows of a bank are included in its inputs, which motivates the following additional classification:
Scalar | All inputs and outputs are scalar quantities (single values). This type of function may be used on a single bank row. |
Vector | All inputs and outputs are vector quantities (lists of values). This type of action function needs values from all of the bank rows. |
Mixed | Inputs and outputs are scalar or vector quantities. |
To maximize compatibility with user analysis code, these functions are overloaded, e.g., for every scalar function there is a corresponding vector function that calls it on each element of its input vectors.