27int main(
int argc,
char** argv)
31 char const* inFileName = argc > 1 ? argv[1] :
"data.hipo";
32 int const numEvents = argc > 2 ? std::stoi(argv[2]) : 3;
35 hipo::reader reader(inFileName, {0});
38 hipo::dictionary dict;
39 reader.readDictionary(dict);
40 hipo::bank bank_config(dict.getSchema(
"RUN::config"));
41 hipo::bank bank_particle(dict.getSchema(
"REC::Particle"));
42 hipo::bank bank_calorimeter(dict.getSchema(
"REC::Calorimeter"));
43 hipo::bank bank_track(dict.getSchema(
"REC::Track"));
44 hipo::bank bank_scintillator(dict.getSchema(
"REC::Scintillator"));
56 algo_eventbuilder_filter.
SetOption(
"log",
"info");
57 algo_sector_finder.
SetOption(
"log",
"info");
58 algo_momentum_correction.
SetOption(
"log",
"info");
62 algo_eventbuilder_filter.
SetOption<std::vector<int>>(
"pids", {11, 211, -211});
65 algo_eventbuilder_filter.
Start();
66 algo_sector_finder.
Start();
67 algo_momentum_correction.
Start();
75 while(reader.next() && (numEvents == 0 || iEvent++ < numEvents)) {
79 event.getStructure(bank_config);
80 event.getStructure(bank_particle);
81 event.getStructure(bank_calorimeter);
82 event.getStructure(bank_track);
83 event.getStructure(bank_scintillator);
86 fmt::println(
"===== EVENT {} =====", bank_config.getInt(
"event", 0));
89 fmt::println(
"----- BEFORE IGUANA -----");
95 if(!algo_eventbuilder_filter.
Run(bank_particle))
97 if(!algo_sector_finder.
Run(bank_particle, bank_track, bank_calorimeter, bank_scintillator, bank_sector))
99 if(!algo_momentum_correction.
Run(bank_particle, bank_sector, bank_config))
103 fmt::println(
"----- AFTER IGUANA -----");
104 bank_particle.show();
108 fmt::print(
"----- Analysis Particles -----\n");
109 fmt::print(
" {:<20} {:<20} {:<20} {:<20}\n",
"row == pindex",
"PDG",
"|p|",
"sector");
113 for(
auto const& row : bank_particle.getRowList()) {
115 bank_particle.getFloat(
"px", row),
116 bank_particle.getFloat(
"py", row),
117 bank_particle.getFloat(
"pz", row));
118 auto pdg = bank_particle.getInt(
"pid", row);
119 auto sector = bank_sector.getInt(
"sector", row);
120 fmt::print(
" {:<20} {:<20} {:<20.3f} {:<20}\n", row, pdg, p, sector);
126 algo_eventbuilder_filter.
Stop();
127 algo_sector_finder.
Stop();
128 algo_momentum_correction.
Stop();