sfof
kdtree_class.hpp
Go to the documentation of this file.
1 
7 #ifndef KDTREE_CLASS_H
8 #define KDTREE_CLASS_H
9 
19 #include <cstdlib>
20 #include <iostream>
21 #include <sstream>
22 #include <string>
23 #include <algorithm>
24 #include <string>
25 #include <vector>
26 #include <deque>
27 #include "astro.hpp"
28 #include "galaxy_class.hpp"
29 #include "point_class.hpp"
30 
31 #define FLTC (1.0 + 1e-5)
33 
34 class Kdtree{
35 
36 public:
37 
38  class Kdtree_node{
39 
40  private:
42 
43  public:
46 
47  class Point bottom_left, top_right;
48  class Point center;
49  double radius;
50  int axis;
51  unsigned int Ngalaxies;
52 
53  void print_node_info(class Kdtree_node *, const std::vector<Galaxy> &);
54 
55  node_to_galaxy check_node(class Point &, double, int);
56 
57  }; /*End of Kdtree_node nested class*/
58 
59 private:
61 
62 public:
63 
65  std::vector<Galaxy> AllG;
66  std::vector<Galaxy*> GalPtrs;
67 
71 
72  double sample_area;
73 
74  class Kdtree_node* build_kdtree (std::vector<Galaxy*>::iterator begin,
75  std::vector<Galaxy*>::iterator end,
76  class Point [2],
77  int);
78 
79  void set_Kdtree(std::vector<Galaxy> &, double);
80 
81  void write_Kdtree(const std::string &);
82 
83  void WalkTree(class Kdtree_node *, int);
84 
85  void WalkTree(class Kdtree_node *, std::ofstream &);
86 
87  int range_search(Point &, int, double, std::deque<Galaxy*> &) const;
88 
89  int range_search(Galaxy &, double, std::deque<Galaxy*> &) const;
90 
91  int range_search_loop(Kdtree_node *, class Point &, int, double, node_to_galaxy, std::deque<Galaxy*> &) const;
92 
93 };
94 
95 #endif /* KDTREE_CLASS_H */
Galaxy
Class for storing galaxy properties.
Definition: galaxy_class.hpp:71
point_class.hpp
Kdtree::range_search_loop
int range_search_loop(Kdtree_node *, class Point &, int, double, node_to_galaxy, std::deque< Galaxy * > &) const
Definition: kdtree_class.cpp:301
Kdtree::astro
Astro astro
Definition: kdtree_class.hpp:60
Kdtree::Kdtree_node::print_node_info
void print_node_info(class Kdtree_node *, const std::vector< Galaxy > &)
Definition: kdtree_class.cpp:11
Kdtree::WalkTree
void WalkTree(class Kdtree_node *, std::ofstream &)
Point
Definition: point_class.hpp:18
Kdtree::Kdtree_node::left
Kdtree_node * left
Definition: kdtree_class.hpp:45
Kdtree::MAX
Point MAX
Definition: kdtree_class.hpp:68
Kdtree::Kdtree_node::Ngalaxies
unsigned int Ngalaxies
Definition: kdtree_class.hpp:51
Astro
Class containing basic functions required for astronomy.
Definition: astro.hpp:22
Kdtree::sample_area
double sample_area
Definition: kdtree_class.hpp:72
Kdtree::range_search
int range_search(Point &, int, double, std::deque< Galaxy * > &) const
Definition: kdtree_class.cpp:291
Kdtree::build_kdtree
class Kdtree_node * build_kdtree(std::vector< Galaxy * >::iterator begin, std::vector< Galaxy * >::iterator end, class Point[2], int)
Definition: kdtree_class.cpp:176
Kdtree::Kdtree_node::check_node
node_to_galaxy check_node(class Point &, double, int)
Definition: kdtree_class.cpp:20
Kdtree
Class for constructing a kd-tree.
Definition: kdtree_class.hpp:34
External
@ External
Definition: kdtree_class.hpp:32
Kdtree::Kdtree_node::right
Kdtree_node * right
Definition: kdtree_class.hpp:45
Kdtree::set_Kdtree
void set_Kdtree(std::vector< Galaxy > &, double)
Definition: kdtree_class.cpp:69
astro.hpp
Kdtree::Kdtree_node::axis
int axis
Definition: kdtree_class.hpp:50
Internal
@ Internal
Definition: kdtree_class.hpp:32
galaxy_class.hpp
Kdtree::Nodes
class Kdtree_node * Nodes
Definition: kdtree_class.hpp:64
Kdtree::GalPtrs
std::vector< Galaxy * > GalPtrs
Definition: kdtree_class.hpp:66
Kdtree::write_Kdtree
void write_Kdtree(const std::string &)
Definition: kdtree_class.cpp:49
Kdtree::max_axis_inequality
double max_axis_inequality
Definition: kdtree_class.hpp:70
Intersects
@ Intersects
Definition: kdtree_class.hpp:32
Kdtree::AllG
std::vector< Galaxy > AllG
Definition: kdtree_class.hpp:65
Kdtree::root
class Kdtree_node * root
Definition: kdtree_class.hpp:64
Kdtree::NLeaves
int NLeaves
Definition: kdtree_class.hpp:69
Kdtree::Kdtree_node
Class structure for kd-tree properties.
Definition: kdtree_class.hpp:38
Kdtree::Kdtree_node::radius
double radius
Definition: kdtree_class.hpp:49
Kdtree::Kdtree_node::center
class Point center
Definition: kdtree_class.hpp:48
Kdtree::WalkTree
void WalkTree(class Kdtree_node *, int)
Definition: kdtree_class.cpp:263
Kdtree::NNodes
int NNodes
Definition: kdtree_class.hpp:69
Kdtree::NMaxNodes
int NMaxNodes
Definition: kdtree_class.hpp:69
Kdtree::Kdtree_node::Gal
Galaxy * Gal
Definition: kdtree_class.hpp:44
Kdtree::Kdtree_node::top_right
class Point bottom_left top_right
Definition: kdtree_class.hpp:47
node_to_galaxy
node_to_galaxy
Definition: kdtree_class.hpp:32
Kdtree::MIN
Point MIN
Definition: kdtree_class.hpp:68
Kdtree::Kdtree_node::astro
Astro astro
Nested class structure for kd-tree node properties.
Definition: kdtree_class.hpp:41