CosmoBolognaLib
Free Software C++/Python libraries for cosmological calculations
ThreePointCorrelation.h
Go to the documentation of this file.
1 /********************************************************************
2  * Copyright (C) 2010 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 
37 #ifndef __THREEPOINT__
38 #define __THREEPOINT__
39 
40 
41 #include "Measure.h"
42 #include "ChainMesh_Catalogue.h"
43 #include "Triplet1D.h"
44 #include "Triplet2D.h"
45 
46 
47 // ===================================================================================================
48 
49 
50 namespace cbl {
51 
52  namespace measure {
53 
61  namespace threept {
62 
67  enum class ThreePType {
68 
71 
74 
77 
80 
81  };
82 
89  inline std::vector<std::string> ThreePTypeNames () {return {"angular_connected", "angular_reduced", "comoving_connected", "comoving_reduced"}; }
90 
97  inline ThreePType ThreePTypeCast (const int threePTypeIndex) {return castFromValue<ThreePType>(threePTypeIndex);}
98 
105  inline ThreePType ThreePTypeCast (const std::string threePTypeName) {return castFromName<ThreePType>(threePTypeName, ThreePTypeNames());}
106 
113  inline std::vector<ThreePType> ThreePTypeCast (const std::vector<int> threePTypeIndeces) {return castFromValues<ThreePType>(threePTypeIndeces);}
114 
121  inline std::vector<ThreePType> ThreePTypeCast (const std::vector<std::string> threePTypeNames) {return castFromNames<ThreePType>(threePTypeNames, ThreePTypeNames());}
122 
133 
134  protected :
135 
140 
143 
145 
150 
152  std::shared_ptr<catalogue::Catalogue> m_data;
153 
155  std::shared_ptr<catalogue::Catalogue> m_random;
156 
158 
159 
164 
166  std::shared_ptr<triplets::Triplet> m_ddd;
167 
169  std::shared_ptr<triplets::Triplet> m_rrr;
170 
172  std::shared_ptr<triplets::Triplet> m_ddr;
173 
175  std::shared_ptr<triplets::Triplet> m_drr;
176 
177 
179  std::vector<std::shared_ptr<triplets::Triplet>> m_ddd_regions;
180 
182  std::vector<std::shared_ptr<triplets::Triplet>> m_rrr_regions;
183 
185  std::vector<std::shared_ptr<triplets::Triplet>> m_ddr_regions;
186 
188  std::vector<std::shared_ptr<triplets::Triplet>> m_drr_regions;
189 
191 
192 
197 
220  void count_triplets (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX2, std::shared_ptr<triplets::Triplet> tt, const bool tcount=false);
221 
259  void count_allTriplets (const std::string dir_output_triplets=par::defaultString, const std::vector<std::string> dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1);
260 
288  void count_triplets_region (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX2, std::shared_ptr<triplets::Triplet> tt, std::vector<std::shared_ptr<triplets::Triplet>> tt_regions, const std::vector<std::vector<double>> weight, const bool tcount=false);
289 
329  void count_allTriplets_region (const std::vector<std::vector<double>> weight, const std::string dir_output_triplets=par::defaultString, const std::vector<std::string> dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1);
330 
335 
343  void write_triplets (const std::shared_ptr<triplets::Triplet> TT, const std::string dir, const std::string file) const;
344 
352  void read_triplets (std::shared_ptr<triplets::Triplet> TT, const std::vector<std::string> dir, const std::string file);
353 
355 
356 
357 
358  public:
359 
364 
368  ThreePointCorrelation () = default;
369 
378  : m_data(std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(data)))), m_random(std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(random)))) {}
379 
383  virtual ~ThreePointCorrelation () = default;
384 
406  static std::shared_ptr<ThreePointCorrelation> Create (const ThreePType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const triplets::TripletType tripletType, const double side_s, const double side_u, const double perc_increase, const int nbins);
407 
430  static std::shared_ptr<ThreePointCorrelation> Create (const ThreePType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const triplets::TripletType tripletType, const double r12, const double r12_binSize, const double r13, const double r13_binSize, const int nbins);
431 
455  static std::shared_ptr<ThreePointCorrelation> Create (const catalogue::Catalogue data, const catalogue::Catalogue random, const double r12Min, const double r12Max, const double r13Min, const double r13Max, const int nOrders, const double split=-1, const int seed=234);
456 
479  static std::shared_ptr<ThreePointCorrelation> Create (const catalogue::Catalogue data, const catalogue::Catalogue random, const double rMin, const double rMax, const double binSize, const int nOrders, const double split=-1, const int seed=234);
480 
482 
483 
488 
493  ThreePType threePType () const { return m_threePType; }
494 
499  std::shared_ptr<catalogue::Catalogue> data () const { return m_data; }
500 
505  std::shared_ptr<catalogue::Catalogue> random () const { return m_random; }
506 
511  std::shared_ptr<triplets::Triplet> ddd () const { return m_ddd; }
512 
517  std::shared_ptr<triplets::Triplet> rrr () const { return m_rrr; }
518 
523  std::shared_ptr<triplets::Triplet> ddr () const { return m_ddr; }
524 
529  std::shared_ptr<triplets::Triplet> drr () const { return m_drr; }
530 
535  virtual std::vector<double> scale () const
536  { cbl::ErrorCBL("", "scale", "ThreePointCorrelation.h"); std::vector<double> vv; return vv; }
537 
543  virtual std::vector<double> zeta () const
544  { cbl::ErrorCBL("", "zeta", "ThreePointCorrelation.h"); std::vector<double> vv; return vv; }
545 
550  virtual std::vector<double> QQ () const
551  { cbl::ErrorCBL("", "QQ", "ThreePointCorrelation.h"); std::vector<double> vv; return vv; }
552 
559  virtual std::vector<double> error () const
560  { cbl::ErrorCBL("", "error", "ThreePointCorrelation.h"); std::vector<double> vv; return vv; }
561 
562 
564 
565 
570 
575  void set_data (const catalogue::Catalogue data) { m_data = std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(data))); }
576 
581  void set_random (const catalogue::Catalogue random) { m_random = std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(random))); }
582 
584 
589 
625  virtual void measure (const std::string dir_output_triplets, const std::vector<std::string> dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
626  { (void)dir_output_triplets; (void)dir_input_triplets; (void)count_ddd; (void)count_rrr; (void)count_ddr; (void)count_drr; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h"); }
627 
668  virtual void measure (const std::vector<std::vector<double>> weight, const bool doJK, const std::string dir_output_triplets=par::defaultString, const std::vector<std::string> dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
669  { (void)weight; (void)doJK; (void)dir_output_triplets; (void)dir_input_triplets; (void)count_ddd; (void)count_rrr; (void)count_ddr; (void)count_drr; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h"); }
670 
710  virtual void measure (const ErrorType errorType, const std::string dir_output_triplets, const std::vector<std::string> dir_input_triplets={}, const int nResamplings=100, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
711  { (void)errorType; (void)dir_output_triplets; (void)dir_input_triplets; (void)nResamplings; (void)count_ddd; (void)count_rrr; (void)count_ddr; (void)count_drr; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h"); }
712 
751  virtual void measure (const std::string dir_output_triplets, const std::string dir_output_2pt, const std::vector<std::string> dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
752  { (void)dir_output_triplets; (void)dir_output_2pt; (void)dir_input_triplets; (void)count_ddd; (void)count_rrr; (void)count_ddr; (void)count_drr; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h!"); }
753 
797  virtual void measure (const std::vector<std::vector<double>> weight, const bool doJK, const std::string dir_output_triplets, const std::string dir_output_2pt, const std::vector<std::string> dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
798  { (void)weight; (void)doJK; (void)dir_output_triplets; (void)dir_output_2pt; (void)dir_input_triplets; (void)count_ddd; (void)count_rrr; (void)count_ddr; (void)count_drr; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h"); }
799 
842  virtual void measure (const ErrorType errorType, const std::string dir_output_triplets, const std::string dir_output_2pt, const std::vector<std::string> dir_input_triplets={}, const int nResamplings=100, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
843  { (void)errorType; (void)dir_output_triplets; (void)dir_output_2pt; (void)dir_input_triplets; (void)nResamplings; (void)count_ddd; (void)count_rrr; (void)count_ddr; (void)count_drr; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h"); }
844 
845 
876  virtual void measure (const ErrorType errorType, const std::string dir_output_triplets, const std::vector<std::string> dir_input_triplets, const int nResamplings, const bool count_triplets, const bool tcount, const double fact, const int seed=3213)
877  { (void)errorType; (void)dir_output_triplets; (void)dir_input_triplets; (void)nResamplings; (void)count_triplets; (void)tcount; (void)fact; (void)seed; cbl::ErrorCBL("", "measure", "ThreePointCorrelation.h"); }
878 
879 
881 
882 
888 
894  virtual void write (const std::string dir, const std::string file) const = 0;
895 
904  virtual void write (const std::string dir, const std::string file, const bool connected) const
905  { (void)dir; (void)file; (void)connected; cbl::ErrorCBL("", "write", "ThreePointCorrelation.h"); }
906 
912  virtual void write_covariance (const std::string dir, const std::string file) const
913  { (void)dir; (void)file; cbl::ErrorCBL("", "write_covariance", "ThreePointCorrelation.h"); }
914 
916 
917  };
918  }
919  }
920 }
921 
922 #endif
Implementation of the chain-mesh data structure.
The class Measure.
The class Triplet1D.
The class Triplet2D.
The class Catalogue.
Definition: Catalogue.h:654
The class ChainMesh_Catalogue.
The class Measure.
Definition: Measure.h:142
std::shared_ptr< catalogue::Catalogue > m_random
output data catalogue
std::shared_ptr< catalogue::Catalogue > m_data
input data catalogue
virtual std::vector< double > QQ() const
get the protected member m_QQ
virtual void measure(const std::string dir_output_triplets, const std::vector< std::string > dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
method to measure the three-point correlation function
std::shared_ptr< catalogue::Catalogue > random() const
get the protected member m_random
virtual void write(const std::string dir, const std::string file, const bool connected) const
write the measured three-point correlation
virtual std::vector< double > error() const
get the protected member ThreePointCorrelation_comoving_connected::m_error
ThreePType m_threePType
three-point correlation function type
void count_allTriplets_region(const std::vector< std::vector< double >> weight, const std::string dir_output_triplets=par::defaultString, const std::vector< std::string > dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1)
count the data-data-data, random-random-random, data-data-random and data-random-random triplets,...
std::shared_ptr< triplets::Triplet > ddd() const
get the protected member m_ddd
void count_triplets_region(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX2, std::shared_ptr< triplets::Triplet > tt, std::vector< std::shared_ptr< triplets::Triplet >> tt_regions, const std::vector< std::vector< double >> weight, const bool tcount=false)
method to count the number of triplets
std::shared_ptr< triplets::Triplet > drr() const
get the protected member m_drr
virtual void measure(const ErrorType errorType, const std::string dir_output_triplets, const std::vector< std::string > dir_input_triplets, const int nResamplings, const bool count_triplets, const bool tcount, const double fact, const int seed=3213)
measure the three-point correlation function multipoles
std::vector< std::shared_ptr< triplets::Triplet > > m_rrr_regions
number of random-random-random triplets
static std::shared_ptr< ThreePointCorrelation > Create(const ThreePType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const triplets::TripletType tripletType, const double side_s, const double side_u, const double perc_increase, const int nbins)
static factory used to construct three-point correlation functions of any type
std::shared_ptr< triplets::Triplet > m_rrr
number of random-random-random triplets
std::shared_ptr< triplets::Triplet > ddr() const
get the protected member m_ddr
std::shared_ptr< triplets::Triplet > m_ddd
number of data-data-data triplets
std::vector< std::shared_ptr< triplets::Triplet > > m_ddr_regions
number of data-data-random triplets
virtual void measure(const std::vector< std::vector< double >> weight, const bool doJK, const std::string dir_output_triplets=par::defaultString, const std::vector< std::string > dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
method to measure the three-point correlation function
std::shared_ptr< triplets::Triplet > m_drr
number of data-random-random triplets
virtual void write(const std::string dir, const std::string file) const =0
write the measured three-point correlation
std::vector< std::shared_ptr< triplets::Triplet > > m_drr_regions
number of data-random-random triplets
virtual void measure(const ErrorType errorType, const std::string dir_output_triplets, const std::string dir_output_2pt, const std::vector< std::string > dir_input_triplets={}, const int nResamplings=100, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
method to measure the three-point correlation function
void set_random(const catalogue::Catalogue random)
add a random catalogue
std::shared_ptr< catalogue::Catalogue > data() const
get the protected member m_data
void count_triplets(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX1, const chainmesh::ChainMesh_Catalogue &ChainMesh_rMAX2, std::shared_ptr< triplets::Triplet > tt, const bool tcount=false)
method to count the number of triplets
void set_data(const catalogue::Catalogue data)
add a data catalogue
virtual void write_covariance(const std::string dir, const std::string file) const
write the measured three-point correlation covariance
virtual std::vector< double > zeta() const
get the protected member m_zeta
virtual std::vector< double > scale() const
get the protected member m_scale
std::shared_ptr< triplets::Triplet > m_ddr
number of data-data-random triplets
ThreePointCorrelation(const catalogue::Catalogue data, const catalogue::Catalogue random)
constructor
virtual void measure(const std::string dir_output_triplets, const std::string dir_output_2pt, const std::vector< std::string > dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
method to measure the three-point correlation function
virtual void measure(const ErrorType errorType, const std::string dir_output_triplets, const std::vector< std::string > dir_input_triplets={}, const int nResamplings=100, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
method to measure the three-point correlation function
virtual ~ThreePointCorrelation()=default
default destructor
ThreePType threePType() const
get the protected member m_threePType
void write_triplets(const std::shared_ptr< triplets::Triplet > TT, const std::string dir, const std::string file) const
write the number of triplets
void read_triplets(std::shared_ptr< triplets::Triplet > TT, const std::vector< std::string > dir, const std::string file)
read the number of triplets
virtual void measure(const std::vector< std::vector< double >> weight, const bool doJK, const std::string dir_output_triplets, const std::string dir_output_2pt, const std::vector< std::string > dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1, const int seed=3213)
method to measure the three-point correlation function
std::vector< std::shared_ptr< triplets::Triplet > > m_ddd_regions
number of data-data-data triplets
std::shared_ptr< triplets::Triplet > rrr() const
get the protected member m_rrr
ThreePointCorrelation()=default
default constructor
void count_allTriplets(const std::string dir_output_triplets=par::defaultString, const std::vector< std::string > dir_input_triplets={}, const bool count_ddd=true, const bool count_rrr=true, const bool count_ddr=true, const bool count_drr=true, const bool tcount=false, const double fact=0.1)
count the data-data-data, random-random-random, data-data-random and data-random-random triplets,...
static const std::string defaultString
default std::string value
Definition: Constants.h:336
ThreePType
the three-point correlation function type
@ _comoving_connected_
the connected three-point correlation function in comoving coordinates
@ _angular_reduced_
the reduced three-point correlation function in angular coordinates
@ _angular_connected_
the connected three-point correlation function in angular coordinates
@ _comoving_reduced_
the reduced three-point correlation function in comoving coordinates
std::vector< std::string > ThreePTypeNames()
return a vector containing the ThreePType names
ThreePType ThreePTypeCast(const int threePTypeIndex)
cast an enum of type ThreePType from its index
ErrorType
the two-point correlation function error type
Definition: Measure.h:59
TripletType
the triplet type
Definition: Triplet.h:62
The global namespace of the CosmoBolognaLib
Definition: CAMB.h:38
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