Iguana 0.0.0
Implementation Guardian of Analysis Algorithms
Loading...
Searching...
No Matches
Iguana User's Guide

This documentation shows how to use the Iguana algorithms.

For more documentation, see

Example Code in C++, Python, and Fortran

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.

Language Bindings

Iguana algorithms are in C++; to use Iguana with other languages, see:

Algorithms

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:

Algorithm Common Functions: for HIPO C++ Users

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

Algorithm Action Functions: for All Users

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.