Skip to content

Commit

Permalink
feat: add event builder filter algorithm
Browse files Browse the repository at this point in the history
  • Loading branch information
c-dilks committed Nov 13, 2023
1 parent 33ae07d commit 36fa87a
Show file tree
Hide file tree
Showing 11 changed files with 70 additions and 11 deletions.
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ fmt_dep = dependency('fmt')
hipo_dep = dependency('hipo4', method: 'cmake', cmake_args: '-DCMAKE_PREFIX_PATH=' + get_option('hipo'))

subdir('src/services')
subdir('src/algorithms/clas12/fiducial_cuts')
subdir('src/algorithms')
subdir('src/iguana')
subdir('src/tests')
17 changes: 17 additions & 0 deletions src/algorithms/clas12/event_builder_filter/EventBuilderFilter.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include "EventBuilderFilter.h"

namespace iguana::clas12 {

void EventBuilderFilter::Start() {
m_log->Info("start event builder filter");
}

Algorithm::BankMap EventBuilderFilter::Run(Algorithm::BankMap inputBanks) {
return inputBanks;
}

void EventBuilderFilter::Stop() {
m_log->Info("stop event builder filter");
}

}
17 changes: 17 additions & 0 deletions src/algorithms/clas12/event_builder_filter/EventBuilderFilter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#pragma once

#include "services/Algorithm.h"

namespace iguana::clas12 {

class EventBuilderFilter : public Algorithm {

public:
EventBuilderFilter() : Algorithm("event_builder_filter") {}
~EventBuilderFilter() {}

void Start() override;
Algorithm::BankMap Run(Algorithm::BankMap inputBanks) override;
void Stop() override;
};
}
3 changes: 3 additions & 0 deletions src/algorithms/clas12/event_builder_filter/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Event Builder Filter

Filters a particle bank for specific Event Builder PDGs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
algo_headers = [
'FiducialCuts.h',
'clas12/event_builder_filter/EventBuilderFilter.h',
]

algo_sources = [
'FiducialCuts.cc',
'clas12/event_builder_filter/EventBuilderFilter.cc',
]

algo_lib = shared_library(
Expand Down
2 changes: 1 addition & 1 deletion src/iguana/Arbiter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace iguana {

Arbiter::Arbiter() {
algo_map.insert({clas12_FiducialCuts, std::make_shared<clas12::FiducialCuts>()});
algo_map.insert({clas12_EventBuilderFilter, std::make_shared<clas12::EventBuilderFilter>()});
}

}
4 changes: 2 additions & 2 deletions src/iguana/Arbiter.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#include <memory>

// TODO: avoid listing the algos
#include "algorithms/clas12/fiducial_cuts/FiducialCuts.h"
#include "algorithms/clas12/event_builder_filter/EventBuilderFilter.h"

namespace iguana {

Expand All @@ -18,7 +18,7 @@ namespace iguana {
// TODO: avoid listing the algos
// TODO: who should own the algorithm instances: Arbiter or the user?
enum algo {
clas12_FiducialCuts
clas12_EventBuilderFilter
};

// TODO: make private
Expand Down
1 change: 1 addition & 0 deletions src/iguana/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ iguana_lib = shared_library(
'Iguana',
iguana_sources,
include_directories: project_inc,
dependencies: [ fmt_dep, hipo_dep ],
link_with: [ algo_lib, services_lib ],
install: true,
install_dir: project_lib_install_dir,
Expand Down
7 changes: 6 additions & 1 deletion src/services/Algorithm.h
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
#pragma once

#include "Logger.h"
#include <hipo4/bank.h>

namespace iguana {

class Algorithm {

public:

using BankMap = std::unordered_map<std::string, hipo::bank>;

Algorithm(std::string name);

virtual void Start() = 0;
virtual int Run(int a, int b) = 0;
virtual BankMap Run(BankMap inputBanks) = 0;
virtual void Stop() = 0;
virtual ~Algorithm() {}

Expand Down
4 changes: 2 additions & 2 deletions src/services/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ services_lib = shared_library(
'IguanaServices',
services_sources,
include_directories: project_inc,
dependencies: fmt_dep,
dependencies: [ fmt_dep, hipo_dep ],
install: true,
install_dir: project_lib_install_dir,
install_rpath: project_lib_rpath,
)

services_dep = declare_dependency(
dependencies: fmt_dep
dependencies: [ fmt_dep, hipo_dep ]
)

install_headers(services_headers, subdir : meson.project_name())
20 changes: 18 additions & 2 deletions src/tests/main.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,25 @@ int main(int argc, char **argv) {
reader.readDictionary(factory);
factory.show();

hipo::bank particleBank(factory.getSchema("REC::Particle"));
hipo::event event;

iguana::Arbiter arb;
auto algo = arb.algo_map.at(iguana::Arbiter::clas12_FiducialCuts);
auto algo = arb.algo_map.at(iguana::Arbiter::clas12_EventBuilderFilter);
algo->Start();
fmt::print("test result: {}\n", algo->Run(3,4));

int count = 0;
while(reader.next()) {
if(count > 3) break;
reader.read(event);
event.getStructure(particleBank);

auto resultBank = algo->Run({{"REC::Particle", particleBank}});

fmt::print("BEFORE -> AFTER: {} -> {}\n", particleBank.getRows(), resultBank.at("REC::Particle").getRows());

count++;
}

algo->Stop();
}

0 comments on commit 36fa87a

Please sign in to comment.