32#ifndef __FASTJET_DYNAMICNEARESTNEIGHBOURS_HH__
33#define __FASTJET_DYNAMICNEARESTNEIGHBOURS_HH__
40#include "fastjet/internal/numconsts.hh"
41#include "fastjet/Error.hh"
43FASTJET_BEGIN_NAMESPACE
58 EtaPhi(
double a,
double b) {first = a; second = b;}
61 if (second < 0) second += twopi;
62 if (second >= twopi) second -= twopi;
77 DnnError(
const std::string & message_in) :
Error(message_in) {}
120 virtual bool Valid(
const int index)
const = 0;
133 const std::vector<EtaPhi> & points_to_add,
134 std::vector<int> & indices_added,
135 std::vector<int> & indices_of_updated_neighbours) = 0;
141 std::vector<int> & indices_of_updated_neighbours) {
142 std::vector<int> indices_added;
143 std::vector<EtaPhi> points_to_add;
144 std::vector<int> indices_to_remove(1);
145 indices_to_remove[0] = index;
147 indices_of_updated_neighbours
157 const int index1,
const int index2,
160 std::vector<int> & indices_of_updated_neighbours) {
161 std::vector<int> indices_added(1);
162 std::vector<EtaPhi> points_to_add(1);
163 std::vector<int> indices_to_remove(2);
164 indices_to_remove[0] = index1;
165 indices_to_remove[1] = index2;
166 points_to_add[0] = newpoint;
168 indices_of_updated_neighbours
170 index3 = indices_added[0];
void RemovePoint(const int index, std::vector< int > &indices_of_updated_neighbours)
Remove the point labelled by index and return the list of points whose nearest neighbours have change...
virtual bool Valid(const int index) const =0
Returns true iff the given index corresponds to a point that exists in the DNN structure (meaning tha...
virtual ~DynamicNearestNeighbours()
destructor – here it is now implemented
virtual void RemoveAndAddPoints(const std::vector< int > &indices_to_remove, const std::vector< EtaPhi > &points_to_add, std::vector< int > &indices_added, std::vector< int > &indices_of_updated_neighbours)=0
remove the points labelled by the std::vector indices_to_remove, and add the points specified by the ...
void RemoveCombinedAddCombination(const int index1, const int index2, const EtaPhi &newpoint, int &index3, std::vector< int > &indices_of_updated_neighbours)
Removes the two points labelled by index1, index2 and adds in the a point with coordinates newpoint; ...
virtual int NearestNeighbourIndex(const int ii) const =0
Dummy initialiser — does nothing!
virtual double NearestNeighbourDistance(const int ii) const =0
Returns the distance to the nearest neighbour of point labelled by index ii (assumes ii is valid).
Error()
default constructors
Shortcut for dealing with eta-phi coordinates.
void sanitize()
put things into the desired range.