sfof
galaxy_class.hpp
Go to the documentation of this file.
1 
7 #ifndef GALAXY_CLASS_H
8 #define GALAXY_CLASS_H
9 
18 #include <math.h>
19 #include <string>
20 #include "astro.hpp"
21 #include "cosmo.hpp"
22 #include "exceptions.hpp"
23 
24 class UnionFind{
25 
26 private:
27 
30 
31 public:
32 
36  UnionFind(): parent(nullptr){}
37 
44  if (parent == nullptr)
45  parent = this;
46  if (parent != this)
47  parent = parent->find();
48  return parent;
49  }
50 
55  void join(UnionFind* u){
56  UnionFind* a = find();
57  UnionFind* b = u->find();
58  if(a != b)
59  a->parent = b;
60  }
61 
65  bool is_singleton(){
66  return parent == nullptr;
67  }
68 
69 };
70 
71 class Galaxy {
72 
73 public:
74 
77 
79  int num;
80 
82  int bin;
83  std::vector<int> bins;
84 
88 
90  double z;
91 
93  double z_err;
94 
96  double da;
97 
99  double v;
100 
102  unsigned long id;
103 
106  std::vector<bool> in_cluster;
107 
116  Galaxy(int num_val, unsigned long id_val, double ra_val, double dec_val,
117  double z_val) {
118  if (z_val < 0)
119  throw BadArgumentException("Galaxy", "z_val", ">= 0.0");
120  num = num_val;
121  id = id_val;
122  P.P[0] = ra_val;
123  P.P[1] = dec_val;
124  z = z_val;
125  v = z / (1 + z);
126  da = 0;
127  bin = 0;
128  };
129 
139  Galaxy(int num_val, unsigned long id_val, double ra_val, double dec_val,
140  double z_val, double z_err_val) {
141  if (z_val < 0)
142  throw BadArgumentException("Galaxy", "z_val", ">= 0.0");
143  if (z_err_val < 0)
144  throw BadArgumentException("Galaxy", "z_err_val", ">= 0.0");
145  num = num_val;
146  id = id_val;
147  P.P[0] = ra_val;
148  P.P[1] = dec_val;
149  z = z_val;
150  z_err = z_err_val;
151  da = 0;
152  bin = 0;
153  };
154 
163  void assign_dist (double, double, double, double);
164 
171  void assign_bin (double, double);
172 
180  void assign_bins (double, double, double);
181 
187  void set_cluster_status (int);
188 
189  friend bool operator== (const Galaxy &gal1, const Galaxy &gal2);
190  friend bool operator< (const Galaxy &gal1, const Galaxy &gal2);
191 
192 private:
193 
196 
199 
200 };
201 
206 inline bool operator== (const Galaxy &gal1, const Galaxy &gal2) {
207  return gal1.id == gal2.id;
208 }
209 
214 inline bool operator< (const Galaxy& gal1, const Galaxy& gal2) {
215  return gal1.id < gal2.id;
216 }
217 
218 #endif // GALAXY_CLASS_H
UnionFind
Definition: galaxy_class.hpp:24
Galaxy
Class for storing galaxy properties.
Definition: galaxy_class.hpp:71
exceptions.hpp
Galaxy::cosmo
Cosmo cosmo
Include Cosmo class.
Definition: galaxy_class.hpp:198
Galaxy::uf
UnionFind uf
Class structure for galaxy properties.
Definition: galaxy_class.hpp:76
Galaxy::astro
Astro astro
Include Astro class.
Definition: galaxy_class.hpp:195
Point
Definition: point_class.hpp:18
Galaxy::operator==
friend bool operator==(const Galaxy &gal1, const Galaxy &gal2)
Bool == operator for Galaxy class.
Definition: galaxy_class.hpp:206
Galaxy::Galaxy
Galaxy(int num_val, unsigned long id_val, double ra_val, double dec_val, double z_val, double z_err_val)
Initialise Galaxy instance.
Definition: galaxy_class.hpp:139
Galaxy::assign_dist
void assign_dist(double, double, double, double)
This method calculates the angular diameter distance of a Galaxy instance for a given cosmology.
Definition: galaxy_class.cpp:5
operator<
bool operator<(const Galaxy &gal1, const Galaxy &gal2)
Bool < operator for Galaxy class.
Definition: galaxy_class.hpp:214
Astro
Class containing basic functions required for astronomy.
Definition: astro.hpp:22
Galaxy::P
Point P
coordinates of the Galaxy instance: the entries corresponds to Right ascension and Declination respec...
Definition: galaxy_class.hpp:87
Galaxy::z
double z
Redshift of Galaxy instance.
Definition: galaxy_class.hpp:90
Galaxy::operator<
friend bool operator<(const Galaxy &gal1, const Galaxy &gal2)
Bool < operator for Galaxy class.
Definition: galaxy_class.hpp:214
Galaxy::set_cluster_status
void set_cluster_status(int)
This method sets the initial Cluster instance membership of the Galaxy instance to False.
Definition: galaxy_class.cpp:34
cosmo.hpp
Galaxy::da
double da
Angular diameter distance of Galaxy instance.
Definition: galaxy_class.hpp:96
astro.hpp
Galaxy::num
int num
Number associated to Galaxy instance.
Definition: galaxy_class.hpp:79
Galaxy::in_cluster
std::vector< bool > in_cluster
Vector of flags indicating if the Galaxy instance is a member of a Cluster instance for a given Zbin ...
Definition: galaxy_class.hpp:106
UnionFind::is_singleton
bool is_singleton()
This method checks if an object is a singleton.
Definition: galaxy_class.hpp:65
Cosmo
Class containing basic functions required for Cosmology.
Definition: cosmo.hpp:19
Galaxy::assign_bin
void assign_bin(double, double)
This method assigns the Zbin instance corresponding to the Galaxy instance.
Definition: galaxy_class.cpp:15
Galaxy::v
double v
Velocity of Galaxy instance.
Definition: galaxy_class.hpp:99
Galaxy::assign_bins
void assign_bins(double, double, double)
This method assigns the Zbin instances corresponding to the Galaxy instance.
Definition: galaxy_class.cpp:24
Galaxy::id
unsigned long id
ID of Galaxy instance.
Definition: galaxy_class.hpp:102
Galaxy::bin
int bin
Zbin instance corresponding to Galaxy instance.
Definition: galaxy_class.hpp:82
BadArgumentException
Class for bad argument exceptions.
Definition: exceptions.hpp:9
Galaxy::Galaxy
Galaxy(int num_val, unsigned long id_val, double ra_val, double dec_val, double z_val)
Initialise Galaxy instance.
Definition: galaxy_class.hpp:116
Point::P
double P[DIMENSIONS]
Definition: point_class.hpp:20
UnionFind::find
UnionFind * find()
This method finds the representative element of the UF structure, while performing the path compressi...
Definition: galaxy_class.hpp:43
UnionFind::parent
UnionFind * parent
Class structure for union find algorithm.
Definition: galaxy_class.hpp:29
UnionFind::join
void join(UnionFind *u)
This method joins the UnionFind passed as an argument.
Definition: galaxy_class.hpp:55
Galaxy::bins
std::vector< int > bins
Definition: galaxy_class.hpp:83
Galaxy::z_err
double z_err
Photometric redshift error of Galaxy instance.
Definition: galaxy_class.hpp:93
UnionFind::UnionFind
UnionFind()
This method initializes the union-find structure as a singleton.
Definition: galaxy_class.hpp:36
operator==
bool operator==(const Galaxy &gal1, const Galaxy &gal2)
Bool == operator for Galaxy class.
Definition: galaxy_class.hpp:206