|  | Iguana 1.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:
See existing algorithms for examples.
Definition at line 40 of file Algorithm.h.
| Public Member Functions | |
| Algorithm (std::string_view name) | |
| std::unique_ptr< YAMLReader > const & | GetConfig () const | 
| hipo::bank | GetCreatedBank (std::string const &bank_name="") const noexcept(false) | 
| std::string | GetCreatedBankName () const noexcept(false) | 
| std::vector< std::string > | GetCreatedBankNames () const noexcept(false) | 
| hipo::schema | GetCreatedBankSchema (std::string const &bank_name="") const noexcept(false) | 
| template<typename OPTION_TYPE> | |
| OPTION_TYPE | GetOptionScalar (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 | 
| template<typename OPTION_TYPE> | |
| std::vector< OPTION_TYPE > | GetOptionVector (std::string const &key, YAMLReader::node_path_t node_path={}) const | 
| virtual bool | Run (hipo::banklist &banks) const =0 | 
| Run Function: Process an event's hipo::banklist | |
| void | SetConfig (std::unique_ptr< YAMLReader > &&yaml_config) | 
| void | SetConfigDirectory (std::string const &name) | 
| void | SetConfigFile (std::string const &name) | 
| void | SetName (std::string_view name) | 
| template<typename OPTION_TYPE> | |
| OPTION_TYPE | SetOption (std::string const &key, const OPTION_TYPE val) | 
| void | Start () | 
| Initialize this algorithm before any events are processed, with the intent to process bank rows rather than full banks;. | |
| virtual void | Start (hipo::banklist &banks)=0 | 
| Initialize this algorithm before any events are processed, with the intent to process banks. | |
| virtual void | Stop ()=0 | 
| Finalize this algorithm after all events are processed. | |
| Public Member Functions inherited from iguana::Object | |
| std::unique_ptr< Logger > & | GetLog () | 
| std::string | GetName () const | 
| std::unique_ptr< Logger > & | Log () | 
| Object (std::string_view name="", Logger::Level lev=Logger::DEFAULT_LEVEL) | |
| void | SetLogLevel (Logger::Level const lev) | 
| void | SetLogLevel (std::string_view lev) | 
| void | SetName (std::string_view name) | 
| Protected Member Functions | |
| hipo::schema | CreateBank (hipo::banklist &banks, hipo::banklist::size_type &bank_idx, std::string const &bank_name) const noexcept(false) | 
| 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) | 
| template<typename OPTION_TYPE> | |
| std::optional< OPTION_TYPE > | GetCachedOption (std::string const &key) const | 
| void | ParseYAMLConfig () | 
| Parse YAML configuration files. Sets m_yaml_config. | |
| void | ShowBank (hipo::bank const &bank, std::string_view message="", Logger::Level const level=Logger::trace) const | 
| void | ShowBanks (hipo::banklist const &banks, std::string_view message="", Logger::Level const level=Logger::trace) const | 
| void | ThrowSinceRenamed (std::string const &new_name, std::string const &version) const noexcept(false) | 
| Protected Attributes | |
| std::string | m_class_name | 
| Class name of this algorithm. | |
| std::string | m_default_config_file | 
| Default configuration file name. | |
| std::mutex | m_mutex | 
| A mutex for 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 | o_user_config_dir | 
| std::string | o_user_config_file | 
| Protected Attributes inherited from iguana::Object | |
| std::unique_ptr< Logger > | m_log | 
| Logger instance for this object | |
| std::string | m_name | 
| The name of 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)
| hipo::bank iguana::Algorithm::GetCreatedBank | ( | std::string const & | bank_name = "" | ) | const | 
Get a bank created by a creator-type algorithm. The bank must be defined in src/iguana/bankdefs/iguana.json. Use this function if you intend to use specialized Run(hipo::bank&, ...) functions, where one of its parameters is a (reference to) a created bank.
| [in] | bank_name | the created bank name, which is only needed if the algorithm creates more than one bank | 
| std::string iguana::Algorithm::GetCreatedBankName | ( | ) | const | 
Get the created bank name, for creator-type algorithms which create only one new bank
| std::vector< std::string > iguana::Algorithm::GetCreatedBankNames | ( | ) | const | 
Get the list of created bank names, for creator-type algorithms
| hipo::schema iguana::Algorithm::GetCreatedBankSchema | ( | std::string const & | bank_name = "" | ) | const | 
Get a bank schema created by a creator-type algorithm. The bank must be defined in src/iguana/bankdefs/iguana.json.
| [in] | bank_name | the created bank name, which is only needed if the algorithm creates more than one bank | 
| 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 Function: Process an event's hipo::banklist
| banks | the list of banks to process | 
Implemented in iguana::AlgorithmSequence, iguana::clas12::CalorimeterLinker, iguana::clas12::EventBuilderFilter, iguana::clas12::FiducialFilter, iguana::clas12::FTEnergyCorrection, iguana::clas12::MomentumCorrection, iguana::clas12::PhotonGBTFilter, iguana::clas12::PhotonGBTFilterValidator, iguana::clas12::rga::FiducialFilterPass1, iguana::clas12::rga::FiducialFilterPass1Validator, iguana::clas12::rga::FiducialFilterPass2, iguana::clas12::rga::FiducialFilterPass2Validator, iguana::clas12::rga::FTEnergyCorrection, iguana::clas12::rga::MomentumCorrection, iguana::clas12::rga::MomentumCorrectionValidator, iguana::clas12::RGAFiducialFilter, 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 84 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::PhotonGBTFilter, iguana::clas12::PhotonGBTFilterValidator, iguana::clas12::rga::FiducialFilterPass1, iguana::clas12::rga::FiducialFilterPass1Validator, iguana::clas12::rga::FiducialFilterPass2, iguana::clas12::rga::FiducialFilterPass2Validator, iguana::clas12::rga::FTEnergyCorrection, iguana::clas12::rga::MomentumCorrection, iguana::clas12::rga::MomentumCorrectionValidator, 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::PhotonGBTFilter, iguana::clas12::PhotonGBTFilterValidator, iguana::clas12::rga::FiducialFilterPass1, iguana::clas12::rga::FiducialFilterPass1Validator, iguana::clas12::rga::FiducialFilterPass2, iguana::clas12::rga::FiducialFilterPass2Validator, iguana::clas12::rga::FTEnergyCorrection, iguana::clas12::rga::MomentumCorrection, iguana::clas12::rga::MomentumCorrectionValidator, 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 | 
Throw a runtime exception since this algorithm has been renamed. Guidance will be printed for the user.
| new_name | the new name of the algorithm | 
| version | the first software version where this change applies | 
| 
 | protected | 
Class name of this algorithm.
Definition at line 236 of file Algorithm.h.
| 
 | protected | 
Default configuration file name.
Definition at line 242 of file Algorithm.h.
| 
 | mutableprotected | 
A mutex for this algorithm.
Definition at line 253 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 239 of file Algorithm.h.
| 
 | protected | 
User's configuration file directory. Set it with Algorithm::SetConfigDirectory
Definition at line 250 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 246 of file Algorithm.h.