CosmoBolognaLib
Free Software C++/Python libraries for cosmological calculations
Triplet1D.h
Go to the documentation of this file.
1 /********************************************************************
2  * Copyright (C) 2015 by Federico Marulli, Michele Moresco, *
3  * and Alfonso Veropalumbo *
4  * *
5  * federico.marulli3@unibo.it *
6  * *
7  * This program is free software; you can redistribute it and/or *
8  * modify it under the terms of the GNU General Public License as *
9  * published by the Free Software Foundation; either version 2 of *
10  * the License, or (at your option) any later version. *
11  * *
12  * This program is distributed in the hope that it will be useful, *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15  * GNU General Public License for more details. *
16  * *
17  * You should have received a copy of the GNU General Public *
18  * License along with this program; if not, write to the Free *
19  * Software Foundation, Inc., *
20  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
21  *******************************************************************/
22 
38 #ifndef __TRIPLET1D__
39 #define __TRIPLET1D__
40 
41 
42 #include "Triplet.h"
43 
44 
45 // ===================================================================================================
46 
47 
48 namespace cbl {
49 
50  namespace triplets {
51 
62  class Triplet1D : public Triplet {
63 
64  private:
65 
71 
75  virtual void set_parameters () = 0;
76 
78 
79 
80  protected:
81 
83  std::vector<double> m_scale;
84 
86  std::vector<double> m_TT1D;
87 
88 
93 
95  double m_r12;
96 
98  double m_r12_binSize;
99 
101  double m_r13;
102 
104  double m_r13_binSize;
105 
107  int m_nbins;
108 
110  double m_binSize;
111 
113 
114 
115  public:
116 
121 
126  : m_r12(-1), m_r12_binSize(-1), m_r13(-1), m_r13_binSize(-1), m_nbins(-1), m_binSize(-1)
127  { m_tripletDim = Dim::_1D_; }
128 
137  Triplet1D (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
139  { m_tripletDim = Dim::_1D_; }
140 
145  ~Triplet1D () = default;
146 
148 
149 
154 
160  double scale (const int i) const override { return m_scale[i]; }
161 
166  std::vector<double> scale () const override { return m_scale; }
167 
173  double TT1D (const int i) const override { return m_TT1D[i]; }
174 
179  std::vector<double> TT1D () const override { return m_TT1D; }
180 
185  double r12 () const override { return m_r12; }
186 
191  double r12_binSize () const override { return m_r12_binSize; }
192 
197  double r13 () const override { return m_r13; }
198 
203  double r13_binSize () const override { return m_r13_binSize; }
204 
209  int nbins () const override { return m_nbins; }
210 
215  double binSize () const override { return m_binSize; }
216 
218 
219 
224 
231  void set_TT1D (const int i, const double tt) { checkDim(m_TT1D, i, "m_TT1D"); m_TT1D[i] = tt; }
232 
240  void add_TT1D (const int i, const double tt) { checkDim(m_TT1D, i, "m_TT1D"); m_TT1D[i] += tt; }
241 
243 
244 
249 
256  void Sum (const std::shared_ptr<Triplet> tt, const double ww=1) override;
257 
259 
260  };
261 
262 
263  // ============================================================================================
264  // ============================================================================================
265 
266 
277  class Triplet1D_comoving : public Triplet1D {
278 
279  private:
280 
286 
290  virtual void set_parameters () = 0;
291 
293 
294 
295  public:
296 
301 
305  Triplet1D_comoving () = default;
306 
315  Triplet1D_comoving (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
317 
322  virtual ~Triplet1D_comoving () = default;
323 
325 
326  };
327 
328 
329  // ============================================================================================
330  // ============================================================================================
331 
332 
344 
345  private:
346 
351 
357  void set_parameters () override;
358 
360 
361 
362  public:
363 
368 
374 
383  Triplet1D_comoving_theta (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
386 
388 
389 
394 
403  void get_triplet (const double r12, const double r13, const double r23, int &klin) override;
404 
410  void set_triplet (const int klin, const double ww=1.) override;
411 
421  void put (const double r12, const double r13, const double r23, const double ww=1.) override;
422 
431  void put (const std::shared_ptr<catalogue::Object> obj1, const std::shared_ptr<catalogue::Object> obj2, const std::shared_ptr<catalogue::Object> obj3) override;
432 
434 
435  };
436 
437  // ============================================================================================
438  // ============================================================================================
439 
440 
452 
453  private:
454 
459 
466  void set_parameters () override;
467 
469 
470 
471  public:
472 
477 
483 
492  Triplet1D_multipoles_direct (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int norders)
495 
497 
498 
503 
512  void get_triplet (const double r12, const double r13, const double r23, int &klin)
513  { (void)r12; (void)r13; (void)r23; (void)klin; ErrorCBL("", "get_triplet", "Triplet1D.h!"); }
514 
520  void set_triplet (const int klin, const double ww=1.)
521  { (void)klin; (void)ww; cbl::ErrorCBL("", "get_triplet", "Triplet1D.h!"); }
522 
532  void put (const double r12, const double r13, const double r23, const double ww=1.) override;
533 
542  void put (const std::shared_ptr<catalogue::Object> obj1, const std::shared_ptr<catalogue::Object> obj2, const std::shared_ptr<catalogue::Object> obj3) override;
543 
545 
546  };
547 
548 
549  // ============================================================================================
550  // ============================================================================================
551 
552 
564 
565  private:
566 
568  double m_min;
569 
571  double m_max;
572 
577 
584  void set_parameters () override;
585 
587 
588 
589  public:
590 
595 
601 
610  Triplet1D_comoving_side (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
613 
615 
616 
621 
630  void get_triplet (const double r12, const double r13, const double r23, int &klin) override;
631 
637  void set_triplet (const int klin, const double ww=1.) override;
638 
648  void put (const double r12, const double r13, const double r23, const double ww=1.) override;
649 
658  void put (const std::shared_ptr<catalogue::Object> obj1, const std::shared_ptr<catalogue::Object> obj2, const std::shared_ptr<catalogue::Object> obj3) override;
659 
661 
662  };
663 
664 
665  // ============================================================================================
666  // ============================================================================================
667 
668 
680 
681  private:
682 
687 
694  void set_parameters () override;
695 
697 
698 
699  public:
700 
705 
711 
720  Triplet1D_comoving_costheta (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
723 
725 
726 
731 
740  void get_triplet (const double r12, const double r13, const double r23, int &klin) override;
741 
747  void set_triplet (const int klin, const double ww=1.) override;
748 
758  void put (const double r12, const double r13, const double r23, const double ww=1.) override;
759 
768  void put (const std::shared_ptr<catalogue::Object> obj1, const std::shared_ptr<catalogue::Object> obj2, const std::shared_ptr<catalogue::Object> obj3) override;
769 
771 
772  };
773 
774 
775  // ============================================================================================
776  // ============================================================================================
777 
778 
791  class Triplet1D_angular : public Triplet1D {
792 
793  private:
794 
799 
803  virtual void set_parameters () = 0;
804 
806 
807 
808  public:
809 
814 
818  Triplet1D_angular () = default;
819 
828  Triplet1D_angular (const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
830 
835  virtual ~Triplet1D_angular () = default;
836 
838 
839  };
840 
841  }
842 }
843 
844 #endif
The class Triplet.
The class Triplet1D_angular.
Definition: Triplet1D.h:791
virtual void set_parameters()=0
set the binning parameters
Triplet1D_angular(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
constructor
Definition: Triplet1D.h:828
Triplet1D_angular()=default
default constructor
virtual ~Triplet1D_angular()=default
default destructor
The class Triplet1D_comoving_costheta.
Definition: Triplet1D.h:679
void put(const double r12, const double r13, const double r23, const double ww=1.) override
estimate the distance between three objects and update the triplet vectors accordingly
Definition: Triplet.cpp:255
Triplet1D_comoving_costheta(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
constructor
Definition: Triplet1D.h:720
void set_parameters() override
set the binning parameters
Definition: Triplet.cpp:220
void set_triplet(const int klin, const double ww=1.) override
update the triplet
Definition: Triplet.cpp:246
Triplet1D_comoving_costheta()
default constructor
Definition: Triplet1D.h:709
void get_triplet(const double r12, const double r13, const double r23, int &klin) override
estimate the distance between two objects and update the triplet vectors accordingly
Definition: Triplet.cpp:233
The class Triplet1D_comoving_side.
Definition: Triplet1D.h:563
void set_triplet(const int klin, const double ww=1.) override
update the triplet
Definition: Triplet.cpp:104
Triplet1D_comoving_side()
default constructor
Definition: Triplet1D.h:599
void put(const double r12, const double r13, const double r23, const double ww=1.) override
estimate the distance between three objects and update the triplet vectors accordingly
Definition: Triplet.cpp:112
Triplet1D_comoving_side(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
constructor
Definition: Triplet1D.h:610
void set_parameters() override
set the binning parameters
Definition: Triplet.cpp:79
void get_triplet(const double r12, const double r13, const double r23, int &klin) override
estimate the distance between two objects and update the triplet vectors accordingly
Definition: Triplet.cpp:94
The class Triplet1D_comoving_theta.
Definition: Triplet1D.h:343
Triplet1D_comoving_theta(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
constructor
Definition: Triplet1D.h:383
void set_triplet(const int klin, const double ww=1.) override
update the triplet
Definition: Triplet.cpp:172
Triplet1D_comoving_theta()
default constructor
Definition: Triplet1D.h:372
void get_triplet(const double r12, const double r13, const double r23, int &klin) override
estimate the distance between two objects and update the triplet vectors accordingly
Definition: Triplet.cpp:159
void set_parameters() override
set the binning parameters
Definition: Triplet.cpp:146
void put(const double r12, const double r13, const double r23, const double ww=1.) override
estimate the distance between three objects and update the triplet vectors accordingly
Definition: Triplet.cpp:181
The class Triplet1D_comoving.
Definition: Triplet1D.h:277
Triplet1D_comoving()=default
default constructor
Triplet1D_comoving(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
constructor
Definition: Triplet1D.h:315
virtual void set_parameters()=0
set the binning parameters
virtual ~Triplet1D_comoving()=default
default destructor
The class Triplet1D_multipoles_direct.
Definition: Triplet1D.h:451
void set_parameters() override
set the binning parameters
Definition: Triplet.cpp:293
Triplet1D_multipoles_direct(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int norders)
constructor
Definition: Triplet1D.h:492
Triplet1D_multipoles_direct()
default constructor
Definition: Triplet1D.h:481
void put(const double r12, const double r13, const double r23, const double ww=1.) override
estimate the distance between three objects and update the triplet vectors accordingly
Definition: Triplet.cpp:304
void set_triplet(const int klin, const double ww=1.)
update the triplet
Definition: Triplet1D.h:520
void get_triplet(const double r12, const double r13, const double r23, int &klin)
estimate the distance between two objects and update the triplet vectors accordingly
Definition: Triplet1D.h:512
The class Triplet1D.
Definition: Triplet1D.h:62
std::vector< double > scale() const override
get the protected member m_scale
Definition: Triplet1D.h:166
std::vector< double > TT1D() const override
get the private member m_TT1D
Definition: Triplet1D.h:179
double m_r13_binSize
the size of r13 bin
Definition: Triplet1D.h:104
int nbins() const override
get the protected member m_nbins
Definition: Triplet1D.h:209
double scale(const int i) const override
get the protected member m_scale[i]
Definition: Triplet1D.h:160
void add_TT1D(const int i, const double tt)
set the protected member m_TT1D[i] adding the number of triplets
Definition: Triplet1D.h:240
int m_nbins
the number of bins
Definition: Triplet1D.h:107
double r13_binSize() const override
get the private member m_r13_binSize
Definition: Triplet1D.h:203
double r13() const override
get the private member m_r13
Definition: Triplet1D.h:197
virtual void set_parameters()=0
set the binning parameters
double m_r12
the size of r12
Definition: Triplet1D.h:95
double m_binSize
the bin size
Definition: Triplet1D.h:110
double m_r12_binSize
the size of r12 bin
Definition: Triplet1D.h:98
double r12_binSize() const override
get the private member m_r12_binSize
Definition: Triplet1D.h:191
double m_r13
the size of r13
Definition: Triplet1D.h:101
Triplet1D(const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins)
constructor
Definition: Triplet1D.h:137
double r12() const override
get the private member m_r12
Definition: Triplet1D.h:185
Triplet1D()
default constructor
Definition: Triplet1D.h:125
void Sum(const std::shared_ptr< Triplet > tt, const double ww=1) override
sum the number of triplets
Definition: Triplet.cpp:68
void set_TT1D(const int i, const double tt)
set the member m_TT1D[i]
Definition: Triplet1D.h:231
std::vector< double > m_scale
the binned scales
Definition: Triplet1D.h:83
double TT1D(const int i) const override
get the private member m_TT1D[i]
Definition: Triplet1D.h:173
~Triplet1D()=default
default destructor
double binSize() const override
get the protected member m_binSize
Definition: Triplet1D.h:215
std::vector< double > m_TT1D
the number of binned triplets
Definition: Triplet1D.h:86
The class Triplet.
Definition: Triplet.h:133
Dim m_tripletDim
the dimension of the triplet vectors
Definition: Triplet.h:154
TripletType m_tripletType
triplet type
Definition: Triplet.h:157
@ _comoving_side_
1D triplet in comoving coordinates and linear bins
@ _comoving_costheta_
1D triplet in comoving coordinates and linear bins of the cosine of theta
@ _comoving_theta_
1D triplet in comoving coordinates and angular bins
@ _multipoles_direct_
multipoles of the triplets
The global namespace of the CosmoBolognaLib
Definition: CAMB.h:38
void checkDim(const std::vector< T > vect, const int val, const std::string vector, bool equal=true)
check if the dimension of a std::vector is equal/lower than an input value
Definition: Kernel.h:1532
int ErrorCBL(const std::string msg, const std::string functionCBL, const std::string fileCBL, const cbl::glob::ExitCode exitCode=cbl::glob::ExitCode::_error_)
throw an exception: it is used for handling exceptions inside the CosmoBolognaLib
Definition: Kernel.h:780
@ _1D_
1D, used e.g. for 1D pairs, in angular or comoving separations