Iguana LATEST
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
26 class SectorFinder : public Algorithm
27 {
28
30
31 private: // hooks
32 void ConfigHook() override;
33 void StartHook(hipo::banklist& banks) override;
34 bool RunHook(hipo::banklist& banks) const override;
35
36 public:
37
39 static int const UNKNOWN_SECTOR = -1;
40
50 bool Run(
51 hipo::bank const& particleBank,
52 hipo::bank const& trackBank,
53 hipo::bank const& calBank,
54 hipo::bank const& scintBank,
55 hipo::bank& resultBank) const
56 {
57 return RunImpl(&particleBank, &trackBank, &calBank, &scintBank, nullptr, nullptr, &resultBank);
58 }
59
71 hipo::bank const& particleBank,
72 hipo::bank const& trackBank,
73 hipo::bank const& calBank,
74 hipo::bank const& scintBank,
75 hipo::bank const& userChargedBank,
76 hipo::bank& resultBank) const
77 {
78 return RunImpl(&particleBank, &trackBank, &calBank, &scintBank, &userChargedBank, nullptr, &resultBank);
79 }
80
92 hipo::bank const& particleBank,
93 hipo::bank const& trackBank,
94 hipo::bank const& calBank,
95 hipo::bank const& scintBank,
96 hipo::bank const& userNeutralBank,
97 hipo::bank& resultBank) const
98 {
99 return RunImpl(&particleBank, &trackBank, &calBank, &scintBank, nullptr, &userNeutralBank, &resultBank);
100 }
101
111 hipo::bank const& particleBank,
112 hipo::bank const& userChargedBank,
113 hipo::bank const& userNeutralBank,
114 hipo::bank& resultBank) const
115 {
116 return RunImpl(&particleBank, nullptr, nullptr, nullptr, &userChargedBank, &userNeutralBank, &resultBank);
117 }
118
162 std::vector<int> const& sectors,
163 std::vector<int> const& pindices,
164 int const& pindex_particle) const;
165
186 std::vector<int> const& sectors_track,
187 std::vector<int> const& pindices_track,
188 std::vector<int> const& sectors_cal,
189 std::vector<int> const& pindices_cal,
190 std::vector<int> const& sectors_scint,
191 std::vector<int> const& pindices_scint,
192 int const& pindex_particle) const;
193
208 std::vector<int> GetStandardSector(
209 std::vector<int> const& sectors_track,
210 std::vector<int> const& pindices_track,
211 std::vector<int> const& sectors_cal,
212 std::vector<int> const& pindices_cal,
213 std::vector<int> const& sectors_scint,
214 std::vector<int> const& pindices_scint,
215 std::vector<int> const& pindices_particle) const;
216
224 void GetListsSectorPindex(hipo::bank const& bank, std::vector<int>& sectors, std::vector<int>& pindices) const;
225
226 private:
227
237 bool RunImpl(
238 hipo::bank const* particleBank,
239 hipo::bank const* trackBank,
240 hipo::bank const* calBank,
241 hipo::bank const* scintBank,
242 hipo::bank const* userChargedBank,
243 hipo::bank const* userNeutralBank,
244 hipo::bank* resultBank) const;
245
247 hipo::banklist::size_type b_particle;
248 hipo::banklist::size_type b_track;
249 hipo::banklist::size_type b_calorimeter;
250 hipo::banklist::size_type b_scint;
251 hipo::banklist::size_type b_user_charged;
252 hipo::banklist::size_type b_user_neutral;
253 hipo::banklist::size_type b_result;
254 bool userSpecifiedBank_charged{false};
255 bool userSpecifiedBank_neutral{false};
256
257 // `b_result` bank item indices
258 int i_sector;
259 int i_pindex;
260
262 std::string o_bankname_charged;
263 std::string o_bankname_neutral;
264
265 // only want sectors from FD detectors
266 std::set<int> const listFDDets{
267 DetectorType::DC,
268 DetectorType::ECAL,
269 DetectorType::FTOF,
270 DetectorType::HTCC,
271 DetectorType::LTCC,
272 DetectorType::RICH};
273 };
274
275}
#define DEFINE_IGUANA_ALGORITHM(ALGO_NAME, ALGO_FULL_NAME)
common objects used in algorithms
Algorithm(std::string_view name)
Definition Algorithm.h:73
Algorithm: Find the sector for all rows in REC::Particle
Definition Algorithm.h:27
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
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:50
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:70
static int const UNKNOWN_SECTOR
if this algorithm cannot determine the sector, this value will be used
Definition Algorithm.h:39
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
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...
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:110
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:91
General CLAS12 algorithms.
Definition Algorithm.h:5