Iguana 0.0.0
Implementation Guardian of Analysis Algorithms
Loading...
Searching...
No Matches
iguana::AlgorithmSequence Class Reference

#include <AlgorithmSequence.h>

Detailed Description

User-level class for running a sequence of algorithms.

The Start, Run, and Stop methods will sequentially call the corresponding algorithms' methods, in the order the algorithms were added to the sequence by AlgorithmSequence::Add.

Definition at line 11 of file AlgorithmSequence.h.

Public Member Functions

void Start (hipo::banklist &banks) override
 Initialize this algorithm before any events are processed, with the intent to process banks
 
void Run (hipo::banklist &banks) const override
 Run this algorithm for an event.
 
void Stop () override
 Finalize this algorithm after all events are processed.
 
void Add (std::string const &class_name, std::string const &instance_name="")
 
template<class ALGORITHM >
void Add (std::string_view instance_name="")
 
void Add (algo_t &&algo)
 
template<class ALGORITHM >
ALGORITHM * Get (std::string const &instance_name)
 
template<typename OPTION_TYPE >
void SetOption (std::string const &algo_name, std::string const &key, const OPTION_TYPE val)
 
void SetName (std::string_view name)
 
void PrintSequence (Logger::Level level=Logger::info) const
 
void SetConfigFileForEachAlgorithm (std::string const &name)
 Set a custom configuration file for each algorithm in the sequence.
 
void SetConfigDirectoryForEachAlgorithm (std::string const &name)
 Set a custom configuration file directory for each algorithm in the sequence.
 
void ForEachAlgorithm (std::function< void(algo_t &)> func)
 Call a function for each algorithm in the sequence.
 
- Public Member Functions inherited from iguana::Algorithm
 Algorithm (std::string_view name)
 
void Start ()
 Initialize this algorithm before any events are processed, with the intent to process bank rows rather than full banks;.
 
template<typename OPTION_TYPE >
OPTION_TYPE SetOption (std::string const &key, const OPTION_TYPE val)
 
template<typename OPTION_TYPE >
OPTION_TYPE GetOptionScalar (std::string const &key, YAMLReader::node_path_t node_path={}) const
 
template<typename OPTION_TYPE >
std::vector< OPTION_TYPE > GetOptionVector (std::string const &key, YAMLReader::node_path_t node_path={}) const
 
template<typename OPTION_TYPE >
std::set< OPTION_TYPE > GetOptionSet (std::string const &key, YAMLReader::node_path_t node_path={}) const
 
void SetName (std::string_view name)
 
std::unique_ptr< YAMLReader > const & GetConfig () const
 
void SetConfig (std::unique_ptr< YAMLReader > &&yaml_config)
 
void SetConfigFile (std::string const &name)
 
void SetConfigDirectory (std::string const &name)
 
- Public Member Functions inherited from iguana::Object
 Object (std::string_view name="", Logger::Level lev=Logger::DEFAULT_LEVEL)
 
std::unique_ptr< Logger > & Log ()
 
void SetName (std::string_view name)
 
std::string GetName () const
 
void SetLogLevel (std::string_view lev)
 
void SetLogLevel (Logger::Level const lev)
 
std::unique_ptr< Logger > & GetLog ()
 

Additional Inherited Members

- Protected Member Functions inherited from iguana::Algorithm
void ParseYAMLConfig ()
 Parse YAML configuration files. Sets m_yaml_config.
 
hipo::bank & GetBank (hipo::banklist &banks, hipo::banklist::size_type const idx, std::string const &expected_bank_name="") const noexcept(false)
 
hipo::banklist::size_type GetBankIndex (hipo::banklist &banks, std::string const &bank_name) const noexcept(false)
 
hipo::schema CreateBank (hipo::banklist &banks, hipo::banklist::size_type &bank_idx, std::string const &bank_name, std::vector< std::string > schema_def, int group_id, int item_id) const noexcept(false)
 
void ShowBanks (hipo::banklist &banks, std::string_view message="", Logger::Level const level=Logger::trace) const
 
void ShowBank (hipo::bank &bank, std::string_view message="", Logger::Level const level=Logger::trace) const
 
template<typename OPTION_TYPE >
std::optional< OPTION_TYPE > GetCachedOption (std::string const &key) const
 
- Protected Attributes inherited from iguana::Algorithm
std::string m_class_name
 Class name of this algorithm.
 
bool m_rows_only
 If true, algorithm can only operate on bank rows; Algorithm::GetBank, and therefore Algorithm::Run, cannot be called.
 
std::string m_default_config_file
 Default configuration file name.
 
std::string o_user_config_file
 
std::string o_user_config_dir
 
std::mutex m_mutex
 A mutex for this algorithm.
 
- Protected Attributes inherited from iguana::Object
std::string m_name
 The name of this object.
 
std::unique_ptr< Loggerm_log
 Logger instance for this object
 
Inheritance diagram for iguana::AlgorithmSequence:
Inheritance graph

Member Function Documentation

◆ Add() [1/3]

void iguana::AlgorithmSequence::Add ( algo_t && algo)

Add an existing algorithm to the sequence. The AlgorithmSequence instance will take ownership of the algorithm (if it is an lvalue, you will have to std::move it).

Example

Add(std::make_unique<iguana::MyAlgorithm>("my_algorithm_name"));
void Add(std::string const &class_name, std::string const &instance_name="")
Parameters
algothe algorithm

◆ Add() [2/3]

void iguana::AlgorithmSequence::Add ( std::string const & class_name,
std::string const & instance_name = "" )

Create and add an algorithm to the sequence, by name.

Example

Add("iguana::MyAlgorithm", "my_algorithm_name");
Parameters
class_namethe name of the algorithm class
instance_namea user-specified unique name for this algorithm instance; if not specified, class_name will be used

◆ Add() [3/3]

template<class ALGORITHM >
void iguana::AlgorithmSequence::Add ( std::string_view instance_name = "")
inline

Create and add an algorithm to the sequence.

Example

Add<iguana::MyAlgorithm>("my_algorithm_name");
Parameters
instance_namea user-specified unique name for this algorithm instance; if not specified, the class name will be used

Definition at line 42 of file AlgorithmSequence.h.

◆ ForEachAlgorithm()

void iguana::AlgorithmSequence::ForEachAlgorithm ( std::function< void(algo_t &)> func)

Call a function for each algorithm in the sequence.

Use as:

ForEachAlgorithm([](auto& algo){ algo->...; });
void ForEachAlgorithm(std::function< void(algo_t &)> func)
Call a function for each algorithm in the sequence.
Parameters
functhe function to call for each algorithm algo

◆ Get()

template<class ALGORITHM >
ALGORITHM * iguana::AlgorithmSequence::Get ( std::string const & instance_name)
inline

Get an algorithm by its instance name

Example

Get<iguana::MyAlgorithm>("my_algorithm_name");
ALGORITHM * Get(std::string const &instance_name)
Parameters
instance_namethe instance name of the algorithm
Returns
a reference to the algorithm

Definition at line 69 of file AlgorithmSequence.h.

◆ PrintSequence()

void iguana::AlgorithmSequence::PrintSequence ( Logger::Level level = Logger::info) const

Print the names of the algorithms in this sequence

Parameters
levelthe log level of the printout

◆ Run()

void iguana::AlgorithmSequence::Run ( hipo::banklist & banks) const
overridevirtual

Run this algorithm for an event.

Parameters
banksthe list of banks to process

Implements iguana::Algorithm.

◆ SetConfigDirectoryForEachAlgorithm()

void iguana::AlgorithmSequence::SetConfigDirectoryForEachAlgorithm ( std::string const & name)

Set a custom configuration file directory for each algorithm in the sequence.

Use this function if you have a single configuration file directory for all the algorithms in your sequence

Parameters
namethe directory name

◆ SetConfigFileForEachAlgorithm()

void iguana::AlgorithmSequence::SetConfigFileForEachAlgorithm ( std::string const & name)

Set a custom configuration file for each algorithm in the sequence.

Use this function if you have a single configuration file for all the algorithms in your sequence

Parameters
namethe configuration file name

◆ SetName()

void iguana::AlgorithmSequence::SetName ( std::string_view name)

Set the name of this sequence

Parameters
namethe new name

◆ SetOption()

template<typename OPTION_TYPE >
void iguana::AlgorithmSequence::SetOption ( std::string const & algo_name,
std::string const & key,
const OPTION_TYPE val )
inline

Set an algorithm option

See also
Algorithm::SetOption
Parameters
algo_namethe algorithm instance name
keythe option name
valthe option value

Definition at line 83 of file AlgorithmSequence.h.

◆ Start()

void iguana::AlgorithmSequence::Start ( hipo::banklist & banks)
overridevirtual

Initialize this algorithm before any events are processed, with the intent to process banks

use this method if you intend to use Algorithm::Run.

Parameters
banksthe list of banks this algorithm will use, so that Algorithm::Run can cache the indices of the banks that it needs

Implements iguana::Algorithm.

◆ Stop()

void iguana::AlgorithmSequence::Stop ( )
overridevirtual

Finalize this algorithm after all events are processed.

Implements iguana::Algorithm.


The documentation for this class was generated from the following file: