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#include <Math/Vector3D.h>
6#include <Math/Vector4D.h>
7
8namespace iguana::physics {
9
36 {
37
39
40 public:
41
42 void Start(hipo::banklist& banks) override;
43 bool Run(hipo::banklist& banks) const override;
44 void Stop() override;
45
51 bool Run(
52 hipo::bank const& particle_bank,
53 hipo::bank const& inc_kin_bank,
54 hipo::bank& result_bank) const;
55
59 std::vector<std::pair<int, int>> PairHadrons(hipo::bank const& particle_bank) const;
60
61 private:
62
63 // banklist indices
64 hipo::banklist::size_type b_particle;
65 hipo::banklist::size_type b_inc_kin;
66 hipo::banklist::size_type b_result;
67
68 // `b_result` bank item indices
69 int i_pindex_a;
70 int i_pindex_b;
71 int i_pdg_a;
72 int i_pdg_b;
73 int i_Mh;
74 int i_z;
75 int i_PhPerp;
76 int i_MX2;
77 int i_xF;
78 int i_yB;
79 int i_phiH;
80 int i_phiR;
81 int i_theta;
82
83 // config options
84 std::set<int> o_hadron_a_pdgs;
85 std::set<int> o_hadron_b_pdgs;
86 std::string o_phi_r_method;
87 std::string o_theta_method;
88 enum { e_RT_via_covariant_kT } m_phi_r_method;
89 enum { e_hadron_a } m_theta_method;
90
91 // storage for a single hadron
92 struct Hadron {
93 int row;
94 int pdg;
95 ROOT::Math::PxPyPzMVector p;
96 double z;
97 std::optional<ROOT::Math::XYZVector> p_perp;
98 };
99 };
100
101}
#define DEFINE_IGUANA_ALGORITHM(ALGO_NAME, ALGO_FULL_NAME)
Algorithm(std::string_view name)
Definition Algorithm.h:46
Algorithm: Calculate semi-inclusive dihadron kinematic quantities defined in iguana::physics::Dihadro...
Definition Algorithm.h:36
void Stop() override
Finalize this algorithm after all events are processed.
std::vector< std::pair< int, int > > PairHadrons(hipo::bank const &particle_bank) const
form dihadrons by pairing hadrons
bool Run(hipo::banklist &banks) const override
Run Function: Process an event's hipo::banklist
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 &particle_bank, hipo::bank const &inc_kin_bank, hipo::bank &result_bank) const
Run Function: Process an event's hipo::bank objects
Physics algorithms.
Definition Algorithm.h:5