![]() |
Iguana 0.8.0
Implementation Guardian of Analysis Algorithms
|
#include <Algorithm.h>
Base class for all algorithms to inherit from.
This is the base class for all algorithms. It provides common members, such as a logger instance and options data structure. Algorithm implementations must:
See existing algorithms for examples.
Definition at line 40 of file Algorithm.h.
Public Member Functions | |
Algorithm (std::string_view name) | |
virtual void | Start (hipo::banklist &banks)=0 |
Initialize this algorithm before any events are processed, with the intent to process banks | |
void | Start () |
Initialize this algorithm before any events are processed, with the intent to process bank rows rather than full banks;. | |
virtual void | Run (hipo::banklist &banks) const =0 |
Run this algorithm for an event. | |
virtual void | Stop ()=0 |
Finalize this algorithm after all events are processed. | |
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 () |
Protected Member Functions | |
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 |
Protected Attributes | |
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< Logger > | m_log |
Logger instance for this object |
|
inline |
name | the unique name for a derived class instance |
Definition at line 46 of file Algorithm.h.
|
inlinevirtual |
Definition at line 53 of file Algorithm.h.
|
protected |
Create a new bank and push it to the bank list. The bank must be defined in src/iguana/bankdefs/iguana.json.
[out] | banks | the hipo::banklist onto which the new bank will be pushed |
[out] | bank_idx | will be set to the hipo::banklist index of the new bank |
[in] | bank_name | the new bank name |
|
protected |
Get the reference to a bank from a hipo::banklist; optionally checks if the bank name matches the expectation
banks | the hipo::banklist from which to get the specified bank |
idx | the index of banks of the specified bank |
expected_bank_name | if specified, checks that the specified bank has this name |
|
protected |
Get the index of a bank in a hipo::banklist; throws an exception if the bank is not found
banks | the list of banks this algorithm will use |
bank_name | the name of the bank returns the hipo::banklist index of the bank |
|
protected |
Get an option from the option cache
key | the key name associated with this option |
std::unique_ptr< YAMLReader > const & iguana::Algorithm::GetConfig | ( | ) | const |
Get a reference to this algorithm's configuration (YAMLReader)
OPTION_TYPE iguana::Algorithm::GetOptionScalar | ( | std::string const & | key, |
YAMLReader::node_path_t | node_path = {} ) const |
Get the value of a scalar option
key | the unique key name of this option, for caching; if empty, the option will not be cached |
node_path | the YAML::Node identifier path to search for this option in the config files; if empty, it will just use key |
std::set< OPTION_TYPE > iguana::Algorithm::GetOptionSet | ( | std::string const & | key, |
YAMLReader::node_path_t | node_path = {} ) const |
Get the value of a vector option, and convert it to std::set
key | the unique key name of this option |
node_path | the YAML::Node identifier path to search for this option in the config files; if empty, it will just use key |
std::vector< OPTION_TYPE > iguana::Algorithm::GetOptionVector | ( | std::string const & | key, |
YAMLReader::node_path_t | node_path = {} ) const |
Get the value of a vector option
key | the unique key name of this option, for caching; if empty, the option will not be cached |
node_path | the YAML::Node identifier path to search for this option in the config files; if empty, it will just use key |
|
pure virtual |
Run this algorithm for an event.
banks | the list of banks to process |
Implemented in iguana::AlgorithmSequence, iguana::clas12::CalorimeterLinker, iguana::clas12::EventBuilderFilter, iguana::clas12::FiducialFilter, iguana::clas12::FiducialFilterValidator, iguana::clas12::FTEnergyCorrection, iguana::clas12::MomentumCorrection, iguana::clas12::MomentumCorrectionValidator, iguana::clas12::PhotonGBTFilter, iguana::clas12::PhotonGBTFilterValidator, iguana::clas12::SectorFinder, iguana::clas12::SectorFinderValidator, iguana::clas12::TrajLinker, iguana::clas12::ZVertexFilter, iguana::clas12::ZVertexFilterValidator, iguana::example::ExampleAlgorithm, iguana::physics::Depolarization, iguana::physics::DepolarizationValidator, iguana::physics::DihadronKinematics, iguana::physics::DihadronKinematicsValidator, iguana::physics::InclusiveKinematics, iguana::physics::InclusiveKinematicsValidator, iguana::physics::SingleHadronKinematics, iguana::physics::SingleHadronKinematicsValidator, and iguana::Validator.
void iguana::Algorithm::SetConfig | ( | std::unique_ptr< YAMLReader > && | yaml_config | ) |
Set a custom YAMLReader to use for this algorithm
yaml_config | the custom YAMLReader instance |
void iguana::Algorithm::SetConfigDirectory | ( | std::string const & | name | ) |
Set a custom configuration file directory for this algorithm
name | the directory name |
void iguana::Algorithm::SetConfigFile | ( | std::string const & | name | ) |
Set a custom configuration file for this algorithm
name | the configuration file name |
void iguana::Algorithm::SetName | ( | std::string_view | name | ) |
Set the name of this algorithm
name | the new name |
|
inline |
Set an option specified by the user. If the option name is "log", the log level of the Logger owned by this algorithm will be changed to the specified value.
key | the name of the option |
val | the value to set |
Definition at line 80 of file Algorithm.h.
|
protected |
Dump a single bank
bank | the bank to show |
message | if specified, print a header message |
level | the log level |
|
protected |
Dump all banks in a hipo::banklist
banks | the banks to show |
message | if specified, print a header message |
level | the log level |
void iguana::Algorithm::Start | ( | ) |
Initialize this algorithm before any events are processed, with the intent to process bank rows rather than full banks;.
use this method if you intend to use "action functions" instead of Algorithm::Run.
|
pure virtual |
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 |
Implemented in iguana::AlgorithmSequence, iguana::clas12::CalorimeterLinker, iguana::clas12::EventBuilderFilter, iguana::clas12::FiducialFilter, iguana::clas12::FiducialFilterValidator, iguana::clas12::FTEnergyCorrection, iguana::clas12::MomentumCorrection, iguana::clas12::MomentumCorrectionValidator, iguana::clas12::PhotonGBTFilter, iguana::clas12::PhotonGBTFilterValidator, iguana::clas12::SectorFinder, iguana::clas12::SectorFinderValidator, iguana::clas12::TrajLinker, iguana::clas12::ZVertexFilter, iguana::clas12::ZVertexFilterValidator, iguana::example::ExampleAlgorithm, iguana::physics::Depolarization, iguana::physics::DepolarizationValidator, iguana::physics::DihadronKinematics, iguana::physics::DihadronKinematicsValidator, iguana::physics::InclusiveKinematics, iguana::physics::InclusiveKinematicsValidator, iguana::physics::SingleHadronKinematics, iguana::physics::SingleHadronKinematicsValidator, and iguana::Validator.
|
pure virtual |
Finalize this algorithm after all events are processed.
Implemented in iguana::AlgorithmSequence, iguana::clas12::CalorimeterLinker, iguana::clas12::EventBuilderFilter, iguana::clas12::FiducialFilter, iguana::clas12::FiducialFilterValidator, iguana::clas12::FTEnergyCorrection, iguana::clas12::MomentumCorrection, iguana::clas12::MomentumCorrectionValidator, iguana::clas12::PhotonGBTFilter, iguana::clas12::PhotonGBTFilterValidator, iguana::clas12::SectorFinder, iguana::clas12::SectorFinderValidator, iguana::clas12::TrajLinker, iguana::clas12::ZVertexFilter, iguana::clas12::ZVertexFilterValidator, iguana::example::ExampleAlgorithm, iguana::physics::Depolarization, iguana::physics::DepolarizationValidator, iguana::physics::DihadronKinematics, iguana::physics::DihadronKinematicsValidator, iguana::physics::InclusiveKinematics, iguana::physics::InclusiveKinematicsValidator, iguana::physics::SingleHadronKinematics, iguana::physics::SingleHadronKinematicsValidator, and iguana::Validator.
|
protected |
Class name of this algorithm.
Definition at line 203 of file Algorithm.h.
|
protected |
Default configuration file name.
Definition at line 209 of file Algorithm.h.
|
mutableprotected |
A mutex for this algorithm.
Definition at line 220 of file Algorithm.h.
|
protected |
If true, algorithm can only operate on bank rows; Algorithm::GetBank, and therefore Algorithm::Run, cannot be called.
Definition at line 206 of file Algorithm.h.
|
protected |
User's configuration file directory. Set it with Algorithm::SetConfigDirectory
Definition at line 217 of file Algorithm.h.
|
protected |
User's configuration file name, which may override the default configuration file, m_default_config_file. Set it with Algorithm::SetConfigFile
Definition at line 213 of file Algorithm.h.