CosmoBolognaLib
Free Software C++/Python libraries for cosmological calculations
TwoPointCorrelation.h
Go to the documentation of this file.
1 /********************************************************************
2  * Copyright (C) 2010 by Federico Marulli *
3  * federico.marulli3@unibo.it *
4  * *
5  * This program is free software; you can redistribute it and/or *
6  * modify it under the terms of the GNU General Public License as *
7  * published by the Free Software Foundation; either version 2 of *
8  * the License, or (at your option) any later version. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public *
16  * License along with this program; if not, write to the Free *
17  * Software Foundation, Inc., *
18  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19  ********************************************************************/
20 
34 #ifndef __TWOPOINT__
35 #define __TWOPOINT__
36 
37 
38 #include "Measure.h"
39 #include "ChainMesh_Catalogue.h"
40 #include "Pair1D_extra.h"
41 #include "Pair2D_extra.h"
42 
43 
44 // ===================================================================================================
45 
46 
47 namespace cbl {
48 
49  namespace measure {
50 
58  namespace twopt {
59 
64  enum class TwoPType {
65 
67  _monopole_,
68 
71 
74 
77 
80 
82  _wedges_,
83 
85  _filtered_,
86 
88  _angular_,
89 
92 
95 
96  };
97 
103  inline std::vector<std::string> TwoPTypeNames () {return {"monopole", "projected", "deprojected", "multipoles_integrated", "multipoles_direct", "wedges", "filtered", "angular", "2D_Cartesian", "2D_polar"}; }
104 
111  inline TwoPType TwoPTypeCast (const int twoPTypeIndex) {return castFromValue<TwoPType>(twoPTypeIndex);}
112 
119  inline TwoPType TwoPTypeCast (const std::string twoPTypeName)
120  { return castFromName<TwoPType>(twoPTypeName, TwoPTypeNames()); }
121 
128  inline std::vector<TwoPType> TwoPTypeCast (const std::vector<int> twoPTypeIndeces)
129  { return castFromValues<TwoPType>(twoPTypeIndeces); }
130 
137  inline std::vector<TwoPType> TwoPTypeCast (const std::vector<std::string> twoPTypeNames)
138  { return castFromNames<TwoPType>(twoPTypeNames, TwoPTypeNames()); }
139 
144  enum class Estimator {
145 
147  _natural_,
148 
151 
154 
155  };
156 
162  inline std::vector<std::string> EstimatorNames () { return {"natural", "LandySzalay", "SzapudiSzalay"}; }
163 
170  inline Estimator EstimatorCast (const int estimatorIndex) { return castFromValue<Estimator>(estimatorIndex);}
171 
178  inline Estimator EstimatorCast (const std::string estimatorName) {return castFromName<Estimator>(estimatorName, EstimatorNames());}
179 
186  inline std::vector<Estimator> EstimatorCast (const std::vector<int> estimatorIndeces) {return castFromValues<Estimator>(estimatorIndeces);}
187 
194  inline std::vector<Estimator> EstimatorCast (const std::vector<std::string> estimatorNames) {return castFromNames<Estimator>(estimatorNames, EstimatorNames());}
195 
206  class TwoPointCorrelation : public Measure {
207 
208  protected :
209 
214 
217 
219 
220 
225 
227  std::shared_ptr<catalogue::Catalogue> m_data;
228 
230  std::shared_ptr<catalogue::Catalogue> m_random;
231 
233 
234 
239 
241  std::shared_ptr<pairs::Pair> m_dd;
242 
244  std::shared_ptr<pairs::Pair> m_rr;
245 
247  std::shared_ptr<pairs::Pair> m_dr;
248 
250 
255 
257  std::vector<std::shared_ptr<pairs::Pair>> m_dd_res;
258 
260  std::vector<std::shared_ptr<pairs::Pair>> m_rr_res;
261 
263  std::vector<std::shared_ptr<pairs::Pair>> m_dr_res;
264 
266 
271 
274 
277 
279 
280 
285 
292  virtual void write_pairs (const std::shared_ptr<pairs::Pair> PP, const std::string dir, const std::string file) const = 0;
293 
300  virtual void read_pairs (std::shared_ptr<pairs::Pair> PP, const std::vector<std::string> dir, const std::string file) const = 0;
301 
308  virtual void write_pairs (const std::vector<std::shared_ptr<pairs::Pair> > PP, const std::string dir, const std::string file) const = 0;
309 
316  virtual void read_pairs (std::vector<std::shared_ptr<pairs::Pair> > PP, const std::vector<std::string> dir, const std::string file) const = 0;
317 
319 
324 
332  void resets ();
333 
335 
336 
341 
361  void count_pairs (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr<pairs::Pair> pp, const bool cross=true, const bool tcount=false);
362 
386  void count_pairs_region (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr<pairs::Pair> pp, std::vector< std::shared_ptr<pairs::Pair> > pp_regions, const bool cross=true, const bool tcount=false);
387 
413  void count_pairs_region_test (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr<pairs::Pair> pp, std::vector< std::shared_ptr<pairs::Pair> > pp_res, const std::vector<double> weight, const bool cross=true, const bool tcount=false);
414 
440  void count_pairs_region_test_1D (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr<pairs::Pair> pp, std::vector< std::shared_ptr<pairs::Pair> > pp_res, const std::vector<double> weight, const bool cross=true, const bool tcount=false);
441 
467  void count_pairs_region_test_2D (const std::shared_ptr<catalogue::Catalogue> cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr<pairs::Pair> pp, std::vector< std::shared_ptr<pairs::Pair> > pp_res, const std::vector<double> weight, const bool cross=true, const bool tcount=false);
468 
508  void count_allPairs (const TwoPType type, const std::string dir_output_pairs=par::defaultString, const std::vector<std::string> dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1);
509 
555  void count_allPairs_region (std::vector<std::shared_ptr<pairs::Pair> > &dd_regions, std::vector<std::shared_ptr<pairs::Pair> > &rr_regions, std::vector<std::shared_ptr<pairs::Pair> > &dr_regions, const TwoPType type, const std::string dir_output_pairs=par::defaultString, const std::vector<std::string> dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1);
556 
599  void count_allPairs_region_test (const TwoPType type, const std::vector<double> weight, const std::string dir_output_pairs=par::defaultString, const std::vector<std::string> dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1);
600 
602 
603 
608 
632  virtual std::shared_ptr<data::Data> correlation_NaturalEstimator (const std::shared_ptr<pairs::Pair> dd, const std::shared_ptr<pairs::Pair> rr, const int nData=0, const double nData_weighted=0., const int nRandom=0, const double nRandom_weighted=0.) = 0;
633 
660  virtual std::shared_ptr<data::Data> correlation_LandySzalayEstimator (const std::shared_ptr<pairs::Pair> dd, const std::shared_ptr<pairs::Pair> rr, const std::shared_ptr<pairs::Pair> dr, const int nData, const double nData_weighted, const int nRandom, const double nRandom_weighted) = 0;
661 
672  virtual std::shared_ptr<data::Data> Filtered (const std::shared_ptr<data::Data> data)
673  { (void)data; ErrorCBL("", "Filtered", "TwoPointCorrelation.h"); std::shared_ptr<data::Data> dd; return dd; }
674 
689  virtual std::shared_ptr<data::Data> Projected (const std::vector<double> rp, const std::vector<double> pi, const std::vector<std::vector<double> > xi, const std::vector<std::vector<double> > error_xi)
690  { (void)rp; (void)pi; (void)xi; (void)error_xi; ErrorCBL("", "Projected", "TwoPointCorrelation.h"); std::shared_ptr<data::Data> data; return data; }
691 
705  virtual std::shared_ptr<data::Data> Deprojected (const std::vector<double> rp, const std::vector<double> ww, const std::vector<double> error_ww)
706  { (void)rp; (void)ww; (void)error_ww; ErrorCBL("", "Deprojected", "TwoPointCorrelation.h"); std::shared_ptr<data::Data> data; return data; }
707 
723  virtual std::shared_ptr<data::Data> Multipoles (const std::vector<double> rr, const std::vector<double> mu, const std::vector<std::vector<double>> xi, const std::vector<std::vector<double>> error_xi)
724  { (void)rr; (void)mu; (void)xi; (void)error_xi; ErrorCBL("", "Multipoles", "TwoPointCorrelation.h"); std::shared_ptr<data::Data> data; return data; }
725 
741  virtual std::shared_ptr<data::Data> Wedges (const std::vector<double> rr, const std::vector<double> mu, const std::vector<std::vector<double>> xi, const std::vector<std::vector<double> > error_xi)
742  { (void)rr; (void)mu; (void)xi; (void)error_xi; ErrorCBL("", "Wedges", "TwoPointCorrelation.h"); std::shared_ptr<data::Data> data; return data; }
743 
744 
777  virtual void measurePoisson (const std::string dir_output_pairs = par::defaultString, const std::vector<std::string> dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
778  { (void)dir_output_pairs; (void)dir_input_pairs; (void)count_dd; (void)count_rr; (void)count_dr; (void)tcount; (void)estimator; (void)fact; cbl::ErrorCBL("", "measurePoisson", "TwoPointCorrelation.h"); }
779 
817  virtual void measureJackknife (const std::string dir_output_pairs = par::defaultString, const std::vector<std::string> dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
818  { (void)dir_output_pairs; (void)dir_input_pairs; (void)dir_output_resample; (void)count_dd; (void)count_rr; (void)count_dr; (void)tcount; (void)estimator; (void)fact; cbl::ErrorCBL("", "measureJackknife", "TwoPointCorrelation.h"); }
819 
857  virtual void measureJackknifeTest (const std::string dir_output_pairs = par::defaultString, const std::vector<std::string> dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
858  { (void)dir_output_pairs; (void)dir_input_pairs; (void)dir_output_resample; (void)count_dd; (void)count_rr; (void)count_dr; (void)tcount; (void)estimator; (void)fact; cbl::ErrorCBL("", "measureJackknifeTest", "TwoPointCorrelation.h"); }
859 
902  virtual void measureBootstrap (const int nMocks, const std::string dir_output_pairs=par::defaultString, const std::vector<std::string> dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1, const int seed=3213)
903  { (void)nMocks; (void)dir_output_pairs; (void)dir_input_pairs; (void)dir_output_resample; (void)count_dd; (void)count_rr; (void)count_dr; (void)tcount; (void)estimator; (void)fact; (void)seed; cbl::ErrorCBL("", "measureBootstrap", "TwoPointCorrelation.h"); }
904 
915  virtual std::vector<std::shared_ptr<data::Data> > XiJackknife (const std::vector<std::shared_ptr<pairs::Pair> > dd, const std::vector<std::shared_ptr<pairs::Pair> > rr)
916  { (void)dd; (void)rr; cbl::ErrorCBL("", "XiJackknife", "TwoPointCorrelation.h"); std::vector<std::shared_ptr<data::Data> > data; return data; }
917 
932  virtual std::vector<std::shared_ptr<data::Data> > XiJackknife (const std::vector<std::shared_ptr<pairs::Pair> > dd, const std::vector<std::shared_ptr<pairs::Pair> > rr, const std::vector<std::shared_ptr<pairs::Pair> > dr)
933  { (void)dd; (void)rr; (void)dr; cbl::ErrorCBL("", "XiJackknife", "TwoPointCorrelation.h"); std::vector<std::shared_ptr<data::Data> > data; return data; }
934 
945  virtual std::vector<std::shared_ptr<data::Data> > XiJackknifeTest (const std::vector<std::shared_ptr<pairs::Pair> > dd, const std::vector<std::shared_ptr<pairs::Pair> > rr)
946  { (void)dd; (void)rr; cbl::ErrorCBL("", "XiJackknifeTest", "TwoPointCorrelation.h"); std::vector<std::shared_ptr<data::Data> > data; return data; }
947 
961  virtual std::vector<std::shared_ptr<data::Data> > XiJackknifeTest (const std::vector<std::shared_ptr<pairs::Pair> > dd, const std::vector<std::shared_ptr<pairs::Pair> > rr, const std::vector<std::shared_ptr<pairs::Pair> > dr)
962  { (void)dd; (void)rr; (void)dr; cbl::ErrorCBL("", "XiJackknifeTest", "TwoPointCorrelation.h"); std::vector<std::shared_ptr<data::Data> > data; return data; }
963 
981  virtual std::vector<std::shared_ptr<data::Data> > XiBootstrap (const int nMocks, const std::vector<std::shared_ptr<pairs::Pair> > dd, const std::vector<std::shared_ptr<pairs::Pair> > rr, const int seed=3213)
982  { (void)nMocks; (void)dd; (void)rr; (void)seed; cbl::ErrorCBL("", "XiBootstrap", "TwoPointCorrelation.h"); std::vector<std::shared_ptr<data::Data> > data; return data; }
983 
1001  virtual std::vector<std::shared_ptr<data::Data> > XiBootstrap (const int nMocks, const std::vector<std::shared_ptr<pairs::Pair> > dd, const std::vector<std::shared_ptr<pairs::Pair> > rr, const std::vector<std::shared_ptr<pairs::Pair> > dr, const int seed=3213)
1002  { (void)nMocks; (void)dd; (void)rr; (void)dr; (void)seed; cbl::ErrorCBL("", "XiBootstrap", "TwoPointCorrelation.h"); std::vector<std::shared_ptr<data::Data> > data; return data; }
1003 
1005 
1006 
1007  public:
1008 
1013 
1018  TwoPointCorrelation () = default;
1019 
1040  : m_data(std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(data)))), m_random(std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(random)))), m_compute_extra_info(compute_extra_info), m_random_dilution_fraction(random_dilution_fraction) {}
1041 
1046  virtual ~TwoPointCorrelation () = default;
1047 
1088  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType, const double Min, const double Max, const int nbins, const double shift, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1089 
1130  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType, const double Min, const double Max, const double binSize, const double shift, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1131 
1187  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const int nbins_D1, const double shift_D1, const BinType binType_D2, const double Min_D2, const double Max_D2, const int nbins_D2, const double shift_D2, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1188 
1244  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const double binSize_D1, const double shift_D1, const BinType binType_D2, const double Min_D2, const double Max_D2, const double binSize_D2, const double shift_D2, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1245 
1298  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const int nbins_D1, const double shift_D1, const double Min_D2, const double Max_D2, const int nbins_D2, const double shift_D2, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1299 
1352  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const double binSize_D1, const double shift_D1, const double Min_D2, const double Max_D2, const double binSize_D2, const double shift_D2, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1353 
1408  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const int nbins_D1, const double shift_D1, const double Min_D2, const double Max_D2, const int nbins_D2, const double shift_D2, const double piMax_integral, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1409 
1464  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const double binSize_D1, const double shift_D1, const double Min_D2, const double Max_D2, const double binSize_D2, const double shift_D2, const double piMax_integral, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1465 
1520  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const int nbins_D1, const double shift_D1, const int nWedges, const int nbins_D2, const double shift_D2, const std::vector<std::vector<double>> mu_integral_limits={{0., 0.5}, {0.5, 1}}, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1521 
1577  static std::shared_ptr<TwoPointCorrelation> Create (const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType_D1, const double Min_D1, const double Max_D1, const double binSize_D1, const double shift_D1, const int nWedges, const double binSize_D2, const double shift_D2, const std::vector<std::vector<double>> mu_integral_limits={{0., 0.5}, {0.5, 1}}, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function<double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.);
1578 
1580 
1581 
1586 
1591  TwoPType twoPType () const { return m_twoPType; }
1592 
1597  std::shared_ptr<catalogue::Catalogue> data () const { return m_data; }
1598 
1603  std::shared_ptr<catalogue::Catalogue> random () const { return m_random; }
1604 
1609  std::shared_ptr<pairs::Pair> dd () const { return m_dd; }
1610 
1615  std::shared_ptr<pairs::Pair> rr () const { return m_rr; }
1616 
1621  std::shared_ptr<pairs::Pair> dr () const { return m_dr; }
1622 
1628  bool compute_extra_info () const { return m_compute_extra_info; }
1629 
1637 
1642  virtual std::vector<double> xx () const = 0;
1643 
1648  virtual std::vector<double> yy () const { cbl::ErrorCBL("", "yy", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1649 
1654  virtual std::vector<double> xi1D () const { cbl::ErrorCBL("", "xi1D", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1655 
1662  virtual std::vector<double> error1D () const { cbl::ErrorCBL("", "error1D", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1663 
1668  virtual std::vector<std::vector<double> > xi2D () const { cbl::ErrorCBL("", "xi2D", "TwoPointCorrelation.h"); std::vector<std::vector<double> > vv; return vv; }
1669 
1674  virtual std::vector<std::vector<double> > error2D () const { cbl::ErrorCBL("", "error2D", "TwoPointCorrelation.h"); std::vector<std::vector<double> > vv; return vv; }
1675 
1680  virtual std::vector<double> xiMonopole () const
1681  { cbl::ErrorCBL("", "xiMonopole", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1682 
1687  virtual std::vector<double> errorMonopole () const
1688  { cbl::ErrorCBL("", "errorMonopole", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1689 
1694  virtual std::vector<double> xiQuadrupole () const
1695  { cbl::ErrorCBL("", "xiQuadrupole", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1696 
1701  virtual std::vector<double> errorQuadrupole () const
1702  { cbl::ErrorCBL("", "errorQuadrupole", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1703 
1708  virtual std::vector<double> xiHexadecapole () const
1709  { cbl::ErrorCBL("", "xiHexadecapole", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1710 
1715  virtual std::vector<double> errorHexadecapole () const
1716  { cbl::ErrorCBL("", "errorHexadecapole", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1717 
1722  virtual std::vector<double> xiPerpendicular () const
1723  { cbl::ErrorCBL("", "xiPerpendicular", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1724 
1729  virtual std::vector<double> errorPerpendicular () const
1730  { cbl::ErrorCBL("", "errorPerpendicular", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1731 
1736  virtual std::vector<double> xiParallel () const
1737  { cbl::ErrorCBL("", "xiParallel", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1738 
1743  virtual std::vector<double> errorParallel () const
1744  { cbl::ErrorCBL("", "errorParallel", "TwoPointCorrelation.h"); std::vector<double> vv; return vv; }
1745 
1747 
1748 
1753 
1758  void set_data (const catalogue::Catalogue data) { m_data = std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(data))); }
1759 
1765  void set_random (const catalogue::Catalogue random) { m_random = std::make_shared<catalogue::Catalogue>(catalogue::Catalogue(std::move(random))); }
1766 
1768 
1769 
1774 
1816  virtual void measure (const ErrorType errorType=ErrorType::_Poisson_, const std::string dir_output_pairs=par::defaultString, const std::vector<std::string> dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const int nMocks=0, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1, const int seed=3213) = 0;
1817 
1819 
1820 
1825 
1831  virtual void read (const std::string dir, const std::string file) = 0;
1832 
1839  virtual void write (const std::string dir=par::defaultString, const std::string file=par::defaultString, const int rank=0) const = 0;
1840 
1850  virtual void write (const std::string dir, const std::string file, const bool full, const int rank=0) const
1851  { (void)dir; (void)file; (void)full; (void)rank; cbl::ErrorCBL("", "write", "TwoPointCorrelation.h"); }
1852 
1854 
1855 
1860 
1866  virtual void read_covariance (const std::string dir, const std::string file) = 0;
1867 
1873  virtual void write_covariance (const std::string dir, const std::string file) const = 0;
1874 
1882  virtual void compute_covariance (const std::vector<std::shared_ptr<data::Data>> xi, const bool JK) = 0;
1883 
1892  virtual void compute_covariance (const std::vector<std::string> file, const bool JK) = 0;
1893 
1938  double PoissonError (const Estimator estimator, const double dd, const double rr, const double dr, const int nData, const int nRandom) const;
1939 
1941 
1942  };
1943  }
1944  }
1945 }
1946 
1947 #endif
Implementation of the chain-mesh data structure.
The class Measure.
The classes Pair1D_extra*.
The classes Pair2D_extra*.
The class Catalogue.
Definition: Catalogue.h:654
The class ChainMesh_Catalogue.
The class Measure.
Definition: Measure.h:142
virtual std::vector< double > xiParallel() const
get the parallel wedge of the polar xi
virtual void measureJackknife(const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
measure the two-point correlation function estimating the covariance with Jackknife resampling
virtual std::shared_ptr< data::Data > correlation_LandySzalayEstimator(const std::shared_ptr< pairs::Pair > dd, const std::shared_ptr< pairs::Pair > rr, const std::shared_ptr< pairs::Pair > dr, const int nData, const double nData_weighted, const int nRandom, const double nRandom_weighted)=0
get a dataset containing the two-point correlation function measured with the Landy-Szalay estimator,...
std::shared_ptr< pairs::Pair > dr() const
get the protected member m_dr
void count_allPairs(const TwoPType type, const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
count the data-data, random-random and data-random pairs, used to construct the estimator of the two-...
std::shared_ptr< catalogue::Catalogue > random() const
get the protected member m_random
virtual void read_covariance(const std::string dir, const std::string file)=0
read the measured covariance matrix
TwoPointCorrelation(const catalogue::Catalogue data, const catalogue::Catalogue random, const bool compute_extra_info=false, const double random_dilution_fraction=1.)
constructor
virtual std::vector< std::vector< double > > error2D() const
get the error on the binned correlation function
virtual void measureJackknifeTest(const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
measure the two-point correlation function estimating the covariance with Jackknife resampling,...
virtual void write_covariance(const std::string dir, const std::string file) const =0
write the measured two-point correlation
virtual std::shared_ptr< data::Data > Wedges(const std::vector< double > rr, const std::vector< double > mu, const std::vector< std::vector< double >> xi, const std::vector< std::vector< double > > error_xi)
measure the wedges of the two-poinr correlation function
std::shared_ptr< catalogue::Catalogue > m_data
input data catalogue
virtual void write_pairs(const std::shared_ptr< pairs::Pair > PP, const std::string dir, const std::string file) const =0
write the number of pairs
std::vector< std::shared_ptr< pairs::Pair > > m_rr_res
number of random-random pairs
std::shared_ptr< pairs::Pair > m_dr
number of data-random pairs
void count_allPairs_region_test(const TwoPType type, const std::vector< double > weight, const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
count the data-data, random-random and data-random pairs, used to construct the estimator of the two-...
virtual void measure(const ErrorType errorType=ErrorType::_Poisson_, const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const int nMocks=0, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1, const int seed=3213)=0
measure the two-point correlation function
virtual std::vector< double > error1D() const
get the error on the binned correlation function function
virtual void compute_covariance(const std::vector< std::string > file, const bool JK)=0
compute the covariance matrix
virtual std::shared_ptr< data::Data > Deprojected(const std::vector< double > rp, const std::vector< double > ww, const std::vector< double > error_ww)
measure the deprojected two-point correlation function
virtual std::vector< double > xx() const =0
get the x coordinates
virtual std::vector< std::shared_ptr< data::Data > > XiBootstrap(const int nMocks, const std::vector< std::shared_ptr< pairs::Pair > > dd, const std::vector< std::shared_ptr< pairs::Pair > > rr, const int seed=3213)
measure the Bootstrap resampling of the two-point correlation function, ξ(r)
virtual std::vector< double > errorQuadrupole() const
get the error on the quadrupole of the polar xi
void count_pairs_region(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr< pairs::Pair > pp, std::vector< std::shared_ptr< pairs::Pair > > pp_regions, const bool cross=true, const bool tcount=false)
count the number of pairs, used for Jackknife/Bootstrap methods
virtual std::vector< double > xiMonopole() const
get the monopole of the polar xi
void set_random(const catalogue::Catalogue random)
add a random catalogue
virtual void compute_covariance(const std::vector< std::shared_ptr< data::Data >> xi, const bool JK)=0
compute the covariance matrix
TwoPType twoPType() const
get the protected member m_twoPType
virtual std::shared_ptr< data::Data > Filtered(const std::shared_ptr< data::Data > data)
measure the filtered two-point correlation function, , where
virtual std::vector< double > xiHexadecapole() const
get the hexadecapole of the polar xi
double PoissonError(const Estimator estimator, const double dd, const double rr, const double dr, const int nData, const int nRandom) const
the Poisson errors
void set_data(const catalogue::Catalogue data)
add a data catalogue
bool compute_extra_info() const
get the protected member m_compute_extra_info
std::vector< std::shared_ptr< pairs::Pair > > m_dd_res
number of data-data pairs
std::shared_ptr< pairs::Pair > m_rr
number of random-random pairs
std::shared_ptr< catalogue::Catalogue > m_random
output data catalogue
bool random_dilution_fraction() const
get the protected member m_random_dilution_fraction
std::shared_ptr< pairs::Pair > rr() const
get the protected member m_rr
virtual std::vector< double > xi1D() const
get the the binned correlation function
virtual std::shared_ptr< data::Data > Multipoles(const std::vector< double > rr, const std::vector< double > mu, const std::vector< std::vector< double >> xi, const std::vector< std::vector< double >> error_xi)
measure the multipoles of the two-point correlation function
void count_pairs_region_test_2D(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr< pairs::Pair > pp, std::vector< std::shared_ptr< pairs::Pair > > pp_res, const std::vector< double > weight, const bool cross=true, const bool tcount=false)
count the number of pairs, used for Jackknife/Bootstrap methods, 2D pairs
virtual std::vector< double > xiPerpendicular() const
get the perpendicular wedge of the polar xi
virtual void read(const std::string dir, const std::string file)=0
read the measured two-point correlation
virtual std::vector< std::shared_ptr< data::Data > > XiJackknife(const std::vector< std::shared_ptr< pairs::Pair > > dd, const std::vector< std::shared_ptr< pairs::Pair > > rr)
measure the Jackknife resampling of the two-point correlation function, ξ(r)
virtual std::vector< double > errorMonopole() const
get the error on the monopole of the polar xi
virtual std::vector< std::vector< double > > xi2D() const
get the the binned correlation function
std::shared_ptr< pairs::Pair > dd() const
get the protected member m_dd
std::shared_ptr< catalogue::Catalogue > data() const
get the protected member m_data
virtual std::shared_ptr< data::Data > correlation_NaturalEstimator(const std::shared_ptr< pairs::Pair > dd, const std::shared_ptr< pairs::Pair > rr, const int nData=0, const double nData_weighted=0., const int nRandom=0, const double nRandom_weighted=0.)=0
get a dataset containing the two-point correlation function measured with the natural estimator,...
virtual std::vector< std::shared_ptr< data::Data > > XiBootstrap(const int nMocks, const std::vector< std::shared_ptr< pairs::Pair > > dd, const std::vector< std::shared_ptr< pairs::Pair > > rr, const std::vector< std::shared_ptr< pairs::Pair > > dr, const int seed=3213)
measure the Bootstrap resampling of the two-point correlation function, ξ(r)
virtual std::vector< std::shared_ptr< data::Data > > XiJackknifeTest(const std::vector< std::shared_ptr< pairs::Pair > > dd, const std::vector< std::shared_ptr< pairs::Pair > > rr)
measure the Jackknife resampling of the two-point correlation function, ξ(r)
virtual void measureBootstrap(const int nMocks, const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const std::string dir_output_resample=par::defaultString, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1, const int seed=3213)
measure the two-point correlation function estimating the covariance with Bootstrap resampling
virtual std::vector< double > yy() const
get the y coordinates
void count_pairs(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr< pairs::Pair > pp, const bool cross=true, const bool tcount=false)
count the number of pairs
std::vector< std::shared_ptr< pairs::Pair > > m_dr_res
number of data-random pairs
virtual std::vector< std::shared_ptr< data::Data > > XiJackknifeTest(const std::vector< std::shared_ptr< pairs::Pair > > dd, const std::vector< std::shared_ptr< pairs::Pair > > rr, const std::vector< std::shared_ptr< pairs::Pair > > dr)
measure the Jackknife resampling of the two-point correlation function, ξ(r)
virtual void write(const std::string dir=par::defaultString, const std::string file=par::defaultString, const int rank=0) const =0
write the measured two-point correlation
virtual void write(const std::string dir, const std::string file, const bool full, const int rank=0) const
write the measured two-point correlation
virtual void read_pairs(std::shared_ptr< pairs::Pair > PP, const std::vector< std::string > dir, const std::string file) const =0
read the number of pairs
void count_pairs_region_test(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr< pairs::Pair > pp, std::vector< std::shared_ptr< pairs::Pair > > pp_res, const std::vector< double > weight, const bool cross=true, const bool tcount=false)
count the number of pairs, used for Jackknife/Bootstrap methods
virtual std::vector< std::shared_ptr< data::Data > > XiJackknife(const std::vector< std::shared_ptr< pairs::Pair > > dd, const std::vector< std::shared_ptr< pairs::Pair > > rr, const std::vector< std::shared_ptr< pairs::Pair > > dr)
measure the Jackknife resampling of the two-point correlation function, ξ(r)
TwoPType m_twoPType
two-point correlation function type
static std::shared_ptr< TwoPointCorrelation > Create(const TwoPType type, const catalogue::Catalogue data, const catalogue::Catalogue random, const BinType binType, const double Min, const double Max, const int nbins, const double shift, const CoordinateUnits angularUnits=CoordinateUnits::_radians_, std::function< double(double)> angularWeight=nullptr, const bool compute_extra_info=false, const double random_dilution_fraction=1.)
static factory used to construct two-point correlation functions of any type
TwoPointCorrelation()=default
default constructor
virtual std::vector< double > errorHexadecapole() const
get the error on the hexadecapole of the polar xi
std::shared_ptr< pairs::Pair > m_dd
number of data-data pairs
virtual void write_pairs(const std::vector< std::shared_ptr< pairs::Pair > > PP, const std::string dir, const std::string file) const =0
write the number of pairs
virtual std::shared_ptr< data::Data > Projected(const std::vector< double > rp, const std::vector< double > pi, const std::vector< std::vector< double > > xi, const std::vector< std::vector< double > > error_xi)
measure the projected two-point correlation function
virtual std::vector< double > xiQuadrupole() const
get the quadrupole of the polar xi
double m_random_dilution_fraction
fraction between the number of random objects in the diluted and original samples,...
virtual void read_pairs(std::vector< std::shared_ptr< pairs::Pair > > PP, const std::vector< std::string > dir, const std::string file) const =0
read the number of pairs
void count_allPairs_region(std::vector< std::shared_ptr< pairs::Pair > > &dd_regions, std::vector< std::shared_ptr< pairs::Pair > > &rr_regions, std::vector< std::shared_ptr< pairs::Pair > > &dr_regions, const TwoPType type, const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
count the data-data, random-random and data-random pairs, used to construct the estimator of the two-...
virtual ~TwoPointCorrelation()=default
default destructor
virtual std::vector< double > errorParallel() const
get the error on the parallel wedge of the polar xi
bool m_compute_extra_info
true → compute extra information related to the pairs, such as the mean pair separation and redshift
virtual std::vector< double > errorPerpendicular() const
get the perpendicular wedge of the polar xi
virtual void measurePoisson(const std::string dir_output_pairs=par::defaultString, const std::vector< std::string > dir_input_pairs={}, const bool count_dd=true, const bool count_rr=true, const bool count_dr=true, const bool tcount=true, const Estimator estimator=Estimator::_LandySzalay_, const double fact=0.1)
measure the two-point correlation function with Poisson errors
void count_pairs_region_test_1D(const std::shared_ptr< catalogue::Catalogue > cat1, const chainmesh::ChainMesh_Catalogue &ChM, std::shared_ptr< pairs::Pair > pp, std::vector< std::shared_ptr< pairs::Pair > > pp_res, const std::vector< double > weight, const bool cross=true, const bool tcount=false)
count the number of pairs, used for Jackknife/Bootstrap methods, 1D pairs
static const std::string defaultString
default std::string value
Definition: Constants.h:336
static const double pi
: the ratio of a circle's circumference to its diameter
Definition: Constants.h:199
std::vector< std::string > EstimatorNames()
return a vector containing the Estimator names
TwoPType TwoPTypeCast(const int twoPTypeIndex)
cast an enum of type TwoPType from its index
Estimator
the two-point correlation estimator
@ _SzapudiSzalay_
Szapudi&Szalay estimator.
@ _LandySzalay_
Landy&Szalay estimator.
@ _natural_
natural estimator
Estimator EstimatorCast(const int estimatorIndex)
cast an enum of type Estimator from its index
std::vector< std::string > TwoPTypeNames()
return a vector containing the TwoPType names
TwoPType
the two-point correlation function type
@ _projected_
the projected two-point correlation function, w(rp)
@ _2D_Cartesian_
2D two-point correlation function in Cartesian coordinates, ξ(rp,π)
@ _multipoles_integrated_
the multipoles of the two-point correlation function, ξi(r), computed with the integrated estimator
@ _wedges_
the wedges of the two-point correlation function, ξi(r)
@ _deprojected_
the deprojected two-point correlation function, ξ(r)
@ _monopole_
the angle-averaged two-point correlation function, i.e. the monopole, ξ(r)
@ _filtered_
filtered two-point correlation function
@ _angular_
angular two-point correlation function
@ _2D_polar_
2D two-point correlation function in polar coordinates, ξ(r,μ)
@ _multipoles_direct_
the multipoles of the two-point correlation function, ξi(r), computed with the direct estimator
ErrorType
the two-point correlation function error type
Definition: Measure.h:59
@ _Poisson_
Poissonian error.
The global namespace of the CosmoBolognaLib
Definition: CAMB.h:38
T Min(const std::vector< T > vect)
minimum element of a std::vector
Definition: Kernel.h:1324
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
T Max(const std::vector< T > vect)
maximum element of a std::vector
Definition: Kernel.h:1336
CoordinateUnits
the coordinate units
Definition: Kernel.h:562
@ _radians_
angle in radians
BinType
the binning type
Definition: Kernel.h:505