Iguana 0.0.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:
Algorithm::Start
, Algorithm::Run
and Algorithm::Stop
See existing algorithms for examples.
Definition at line 39 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, 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 | |
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 45 of file Algorithm.h.
|
inlinevirtual |
Definition at line 52 of file Algorithm.h.
|
protected |
Create a new bank and push it to the bank list
[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 |
[in] | schema_def | a list of variables for the schema |
[in] | group_id | the group ID for the schema |
[in] | item_id | the item ID for the schema |
|
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::optional
) 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::set
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::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::ZVertexFilter, iguana::clas12::ZVertexFilterValidator, iguana::example::ExampleAlgorithm, 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
Algorithm::SetConfigFile
name | the directory name |
void iguana::Algorithm::SetConfigFile | ( | std::string const & | name | ) |
Set a custom configuration file for this algorithm
Algorithm::SetConfigDirectory
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 |
val
is an rvalue) Definition at line 79 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::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::ZVertexFilter, iguana::clas12::ZVertexFilterValidator, iguana::example::ExampleAlgorithm, 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::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::ZVertexFilter, iguana::clas12::ZVertexFilterValidator, iguana::example::ExampleAlgorithm, 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 208 of file Algorithm.h.
|
protected |
Default configuration file name.
Definition at line 214 of file Algorithm.h.
|
mutableprotected |
A mutex for this algorithm.
Definition at line 225 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 211 of file Algorithm.h.
|
protected |
User's configuration file directory. Set it with Algorithm::SetConfigDirectory
Definition at line 222 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 218 of file Algorithm.h.