Iguana 1.0.0
Implementation Guardian of Analysis Algorithms
Loading...
Searching...
No Matches
Algorithm.h
1#pragma once
2
3#include "iguana/algorithms/Algorithm.h"
5
6namespace iguana::clas12 {
7
29 class SectorFinder : public Algorithm
30 {
31
33
34 public:
35
37 static int const UNKNOWN_SECTOR = -1;
38
39 void Start(hipo::banklist& banks) override;
40 bool Run(hipo::banklist& banks) const override;
41 void Stop() override;
42
52 bool Run(
53 hipo::bank const& particleBank,
54 hipo::bank const& trackBank,
55 hipo::bank const& calBank,
56 hipo::bank const& scintBank,
57 hipo::bank& resultBank) const
58 {
59 return RunImpl(&particleBank, &trackBank, &calBank, &scintBank, nullptr, nullptr, &resultBank);
60 }
61
73 hipo::bank const& particleBank,
74 hipo::bank const& trackBank,
75 hipo::bank const& calBank,
76 hipo::bank const& scintBank,
77 hipo::bank const& userChargedBank,
78 hipo::bank& resultBank) const
79 {
80 return RunImpl(&particleBank, &trackBank, &calBank, &scintBank, &userChargedBank, nullptr, &resultBank);
81 }
82
94 hipo::bank const& particleBank,
95 hipo::bank const& trackBank,
96 hipo::bank const& calBank,
97 hipo::bank const& scintBank,
98 hipo::bank const& userNeutralBank,
99 hipo::bank& resultBank) const
100 {
101 return RunImpl(&particleBank, &trackBank, &calBank, &scintBank, nullptr, &userNeutralBank, &resultBank);
102 }
103
113 hipo::bank const& particleBank,
114 hipo::bank const& userChargedBank,
115 hipo::bank const& userNeutralBank,
116 hipo::bank& resultBank) const
117 {
118 return RunImpl(&particleBank, nullptr, nullptr, nullptr, &userChargedBank, &userNeutralBank, &resultBank);
119 }
120
164 std::vector<int> const& sectors,
165 std::vector<int> const& pindices,
166 int const& pindex_particle) const;
167
188 std::vector<int> const& sectors_track,
189 std::vector<int> const& pindices_track,
190 std::vector<int> const& sectors_cal,
191 std::vector<int> const& pindices_cal,
192 std::vector<int> const& sectors_scint,
193 std::vector<int> const& pindices_scint,
194 int const& pindex_particle) const;
195
210 std::vector<int> GetStandardSector(
211 std::vector<int> const& sectors_track,
212 std::vector<int> const& pindices_track,
213 std::vector<int> const& sectors_cal,
214 std::vector<int> const& pindices_cal,
215 std::vector<int> const& sectors_scint,
216 std::vector<int> const& pindices_scint,
217 std::vector<int> const& pindices_particle) const;
218
226 void GetListsSectorPindex(hipo::bank const& bank, std::vector<int>& sectors, std::vector<int>& pindices) const;
227
228 private:
229
239 bool RunImpl(
240 hipo::bank const* particleBank,
241 hipo::bank const* trackBank,
242 hipo::bank const* calBank,
243 hipo::bank const* scintBank,
244 hipo::bank const* userChargedBank,
245 hipo::bank const* userNeutralBank,
246 hipo::bank* resultBank) const;
247
249 hipo::banklist::size_type b_particle;
250 hipo::banklist::size_type b_track;
251 hipo::banklist::size_type b_calorimeter;
252 hipo::banklist::size_type b_scint;
253 hipo::banklist::size_type b_user_charged;
254 hipo::banklist::size_type b_user_neutral;
255 hipo::banklist::size_type b_result;
256 bool userSpecifiedBank_charged{false};
257 bool userSpecifiedBank_neutral{false};
258
259 // `b_result` bank item indices
260 int i_sector;
261 int i_pindex;
262
264 std::string o_bankname_charged;
265 std::string o_bankname_neutral;
266
267 // only want sectors from FD detectors
268 std::set<int> const listFDDets{
269 DetectorType::DC,
270 DetectorType::ECAL,
271 DetectorType::FTOF,
272 DetectorType::HTCC,
273 DetectorType::LTCC,
274 DetectorType::RICH};
275 };
276
277}
#define DEFINE_IGUANA_ALGORITHM(ALGO_NAME, ALGO_FULL_NAME)
common objects used in algorithms
Algorithm(std::string_view name)
Definition Algorithm.h:46
Algorithm: Find the sector for all rows in REC::Particle
Definition Algorithm.h:30
int GetSector(std::vector< int > const &sectors, std::vector< int > const &pindices, int const &pindex_particle) const
Action Function: for a given particle with index pindex_particle, get its sector from a detector bank...
void GetListsSectorPindex(hipo::bank const &bank, std::vector< int > &sectors, std::vector< int > &pindices) const
void Start(hipo::banklist &banks) override
Initialize this algorithm before any events are processed, with the intent to process banks.
bool Run(hipo::bank const &particleBank, hipo::bank const &trackBank, hipo::bank const &calBank, hipo::bank const &scintBank, hipo::bank &resultBank) const
Run Function: Process an event's hipo::bank objects
Definition Algorithm.h:52
bool RunWithCustomChargedBank(hipo::bank const &particleBank, hipo::bank const &trackBank, hipo::bank const &calBank, hipo::bank const &scintBank, hipo::bank const &userChargedBank, hipo::bank &resultBank) const
Run Function: Process an event's hipo::bank objects
Definition Algorithm.h:72
static int const UNKNOWN_SECTOR
if this algorithm cannot determine the sector, this value will be used
Definition Algorithm.h:37
std::vector< int > GetStandardSector(std::vector< int > const &sectors_track, std::vector< int > const &pindices_track, std::vector< int > const &sectors_cal, std::vector< int > const &pindices_cal, std::vector< int > const &sectors_scint, std::vector< int > const &pindices_scint, std::vector< int > const &pindices_particle) const
Action Function: get sectors for all particles, using the standard method
bool Run(hipo::banklist &banks) const override
Run Function: Process an event's hipo::banklist
int GetStandardSector(std::vector< int > const &sectors_track, std::vector< int > const &pindices_track, std::vector< int > const &sectors_cal, std::vector< int > const &pindices_cal, std::vector< int > const &sectors_scint, std::vector< int > const &pindices_scint, int const &pindex_particle) const
Action Function: for a given particle with index pindex_particle, get its sector from using the stand...
void Stop() override
Finalize this algorithm after all events are processed.
bool RunWithCustomBanks(hipo::bank const &particleBank, hipo::bank const &userChargedBank, hipo::bank const &userNeutralBank, hipo::bank &resultBank) const
Run Function: Process an event's hipo::bank objects
Definition Algorithm.h:112
bool RunWithCustomNeutralBank(hipo::bank const &particleBank, hipo::bank const &trackBank, hipo::bank const &calBank, hipo::bank const &scintBank, hipo::bank const &userNeutralBank, hipo::bank &resultBank) const
Run Function: Process an event's hipo::bank objects
Definition Algorithm.h:93
General CLAS12 algorithms.
Definition Algorithm.h:5