1 #ifndef CROMBIE_ETAPHIMAP_H 2 #define CROMBIE_ETAPHIMAP_H 1 16 std::function<
double(
const T*)> eta = [](
const T* p){
return p->eta(); },
17 std::function<double(const T*)> phi = [](
const T* p){
return p->phi(); })
31 std::vector<const T*>
GetParticles(
double eta,
double phi,
double dr)
const;
47 std::function<double(const T*)>
geteta;
48 std::function<double(const T*)>
getphi;
53 unsigned bin(
double eta,
double phi)
const;
54 unsigned bin(
unsigned eta_bin,
unsigned phi_bin)
const;
56 unsigned etabin(
double eta)
const;
58 unsigned phibin(
double phi)
const;
70 for (
auto& cand : collection) {
80 double dr2 = std::pow(dr, 2);
82 std::vector<const T*> output;
84 auto min_eta =
etabin(eta - dr);
85 auto max_eta =
etabin(eta + dr);
86 auto min_phi =
phibin(phi - dr);
87 auto max_phi =
phibin(phi + dr);
89 auto running_phi = min_phi;
91 for (
auto running_eta = min_eta; running_eta <= max_eta; ++running_eta) {
92 for (
auto* particle :
particles[
bin(running_eta, running_phi)]) {
94 output.push_back(particle);
98 if (running_phi == max_phi)
127 return TVector2::Phi_0_2pi(phi)/
_spacing;