17 Point(
float x,
float y,
float w);
28 Node(
float x,
float y,
float z);
41 long max_points = -1);
43 void AddPoint(
float x,
float y,
float w);
45 void SetPoints(
const std::vector<Point> &points);
46 void SetPoints(
const TH2D &h);
48 TH2D GetHistogram(
double luminosity)
const;
49 TGraph GetGraph(
double luminosity,
bool keep_in_frame =
true)
const;
61 static std::uniform_real_distribution<float>
urd_;
63 void InsertPoint(
float x,
float y,
float w)
const;
64 void InsertPoint(
const Point &p)
const;
65 void RemovePoint(std::list<Node>::iterator node)
const;
67 std::list<Node>::iterator NearestNeighbors()
const;
69 static void Link(std::list<Node>::iterator node,
70 std::list<Node>::iterator neighbor,
73 void EmptyHistogram();
76 void Cluster(
double luminosity)
const;
77 void SetupNodes(
double luminosity)
const;
78 void MergeNodes()
const;
79 void MergeNodes(std::list<Node>::iterator a,
80 std::list<Node>::iterator b)
const;
81 void SplitNode()
const;
float WeightedDistance(const Point &a, const Point &b)
bool operator<(const Point &other) const
std::vector< Point > orig_points_
std::ostream & operator<<(std::ostream &stream, const Clustering::Point &p)
static std::mt19937_64 prng_
std::vector< Point > final_points_
std::list< Node >::iterator neighbor_
static std::uniform_real_distribution< float > urd_
std::vector< std::list< Node >::iterator > neighbor_of_