4#include <hipo4/reader.h>
5#include <iguana/algorithms/AlgorithmSequence.h>
7inline int TestBanklist(std::string data_file)
11 fmt::print(stderr,
"ERROR: need a data file for command 'banklist'\n");
16 iguana::GlobalConcurrencyModel =
"single";
19 std::vector<std::string> input_bank_names = {
28 hipo::reader reader(data_file.c_str());
29 auto banks = reader.getBanks(input_bank_names);
32 std::vector<std::string> algo_names = {
38 seq.
Add(
"clas12::SectorFinder",
"creator_1a");
39 seq.
Add(
"clas12::CalorimeterLinker",
"creator_2");
40 seq.
Add(
"clas12::SectorFinder",
"creator_1b");
49 fmt::println(
"BANKLIST:");
50 for(
decltype(banks)::size_type i = 0; i < banks.size(); i++) {
51 auto& bank = banks.at(i);
52 fmt::println(
" - {}: {}", i, bank.getSchema().getName());
56 assert((seq.
Get(
"creator_1a")->GetCreatedBankVariant() == 0));
57 assert((seq.
Get(
"creator_1b")->GetCreatedBankVariant() == 1));
58 assert((seq.
Get(
"creator_2")->GetCreatedBankVariant() == 0));
62 for(
decltype(input_bank_names)::size_type i = 0; i < input_bank_names.size(); i++) {
63 auto const& bank_name = input_bank_names.at(i);
68 for(
decltype(algo_names)::size_type i = 0; i < algo_names.size(); i++) {
69 auto const& algo_name = algo_names.at(i);
71 assert((idx == input_bank_names.size() + i));
75 for(
auto const& algo_name : algo_names) {
77 for(
auto const& bank_name : input_bank_names) {
79 assert((idx == seq.
Get(algo_name)->GetBankIndex(banks, bank_name)));
80 assert((idx == seq.
GetBankIndex(banks, bank_name, algo_name)));
89 for(
auto const& algo_name : algo_names) {
91 assert((idx == seq.
Get(algo_name)->GetCreatedBankIndex(banks)));
Algorithm: An algorithm that can run a sequence of algorithms
hipo::banklist::size_type GetCreatedBankIndex(hipo::banklist &banks, std::string const &algo_instance_name) const noexcept(false)
void Add(std::string const &algo_class_name, std::string const &algo_instance_name="")
ALGORITHM * Get(std::string const &algo_instance_name)
std::string GetCreatedBankName(std::string const &algo_instance_name) const noexcept(false)
hipo::banklist::size_type GetBankIndex(hipo::banklist &banks, std::string const &bank_name, std::string const &algo_instance_name) const noexcept(false)
void PrintSequence(Logger::Level level=Logger::info) const
virtual void Stop() final
Stop Function: Finalize this algorithm after all events are processed.
virtual void Start(hipo::banklist &banks) final
Start Function: Initialize this algorithm before any events are processed, with the intent to process...