![]() |
Iguana 0.8.0
Implementation Guardian of Analysis Algorithms
|
#include <AlgorithmSequence.h>
An algorithm that can run 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. | |
![]() | |
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) |
![]() | |
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 | |
![]() | |
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) 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 |
![]() | |
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. | |
![]() | |
std::string | m_name |
The name of this object. | |
std::unique_ptr< Logger > | m_log |
Logger instance for this object | |
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
algo | the algorithm |
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
class_name | the name of the algorithm class |
instance_name | a user-specified unique name for this algorithm instance; if not specified, class_name will be used |
|
inline |
Create and add an algorithm to the sequence.
Example
instance_name | a 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.
void iguana::AlgorithmSequence::ForEachAlgorithm | ( | std::function< void(algo_t &)> | func | ) |
Call a function for each algorithm in the sequence.
Use as:
func | the function to call for each algorithm algo |
|
inline |
Get an algorithm by its instance name
Example
instance_name | the instance name of the algorithm |
Definition at line 69 of file AlgorithmSequence.h.
void iguana::AlgorithmSequence::PrintSequence | ( | Logger::Level | level = Logger::info | ) | const |
Print the names of the algorithms in this sequence
level | the log level of the printout |
|
overridevirtual |
Run this algorithm for an event.
banks | the list of banks to process |
Implements iguana::Algorithm.
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
name | the directory name |
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
name | the configuration file name |
void iguana::AlgorithmSequence::SetName | ( | std::string_view | name | ) |
Set the name of this sequence
name | the new name |
|
inline |
Set an algorithm option
Algorithm::SetOption
algo_name | the algorithm instance name |
key | the option name |
val | the option value |
Definition at line 83 of file AlgorithmSequence.h.
|
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
.
banks | the list of banks this algorithm will use, so that Algorithm::Run can cache the indices of the banks that it needs |
Implements iguana::Algorithm.
|
overridevirtual |
Finalize this algorithm after all events are processed.
Implements iguana::Algorithm.