CosmoBolognaLib
Free Software C++/Python libraries for cosmological calculations
Modelling_DensityProfile.h
Go to the documentation of this file.
1 /********************************************************************
2  * Copyright (C) 2021 by Federico Marulli and Giorgio Lesci *
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 __MODELLINGDPROFILE__
35 #define __MODELLINGDPROFILE__
36 
37 #include "HaloProfile.h"
38 #include "StackedDensityProfile.h"
40 
41 
42 // ===================================================================================================
43 
44 
45 namespace cbl {
46 
47  namespace modelling {
48 
56  namespace densityprofile {
57 
66 
68  std::vector<statistics::PriorDistribution> priors_excluded;
69 
71  std::vector< std::function<double(std::vector<double> &par, const int idx, std::vector<statistics::PriorDistribution> prior, const int i_prior)> > get_parameter;
72 
74  std::vector<statistics::ParameterType> Par_type;
75 
77  std::vector<std::string> Par_string;
78 
80  std::vector<statistics::PriorDistribution> param_prior;
81 
83  int i_Rt;
84 
86  int i_conc;
87 
89  int i_logM=0;
90 
92  int i_foff;
93 
96 
98  int i_AB;
99 
101  int i_OB;
102 
105 
108 
111 
114 
117 
119  std::function<double(const double, cbl::cosmology::HaloProfile)> conc_func;
120 
122  std::function<double(const double, const double, const double, const double, const double, const double)> conc_scaling_relation_func;
123 
125  std::function<std::vector<double>(const std::vector<double>, cbl::cosmology::HaloProfile, const std::string, const std::string, const std::string)> two_halo_func;
126 
128  std::function<std::vector<double>(const std::vector<double>, cbl::cosmology::HaloProfile, const double, const std::string, const std::string)> two_halo_func_fast;
129 
131  std::shared_ptr<cosmology::Cosmology> cosmology;
132 
134  std::vector<cosmology::CosmologicalParameter> Cpar;
135 
137  std::shared_ptr<modelling::massobsrel::Modelling_MassObservableRelation> scaling_relation;
138 
140  std::shared_ptr<cosmology::HaloProfile> halo_profile;
141 
143  double redshift;
144 
146  double mass_proxy;
147 
150 
152  double proxy_pivot;
153 
155  double contrast;
156 
158  double logM_base;
159 
161  double mass_pivot;
162 
164  std::string bias_author;
165 
167  std::string method_Pk;
168 
170  std::string interp_type;
171 
176  };
177 
201 
202  protected:
203 
206 
208  bool m_2halo;
209 
212 
215 
217  std::string m_profile_author;
218 
220  std::string m_halo_def;
221 
223  double m_Delta;
224 
225 
226  public:
227 
232 
238 
257  Modelling_DensityProfile (const std::shared_ptr<cbl::measure::stackprofile::StackedDensityProfile> profile, const std::string profile_author="NFW_trunc", const bool _2halo=false, const std::string halo_def="critical", const double Delta=200.);
258 
277  Modelling_DensityProfile (const std::shared_ptr<cbl::data::Data> dataset, const std::string profile_author="NFW_trunc", const bool _2halo=false, const std::string halo_def="critical", const double Delta=200.);
278 
283  virtual ~Modelling_DensityProfile () = default;
284 
286 
291 
298 
303 
329  void set_data_model (const cbl::cosmology::Cosmology cosmology, const double redshift, const double contrast, const double logM_base, const double mass_pivot, const std::string bias_author="Tinker", const std::string method_Pk="EisensteinHu", std::string interp_type="Linear");
330 
365  void set_data_model (const cosmology::Cosmology cosmology, const double redshift, const double mass_proxy, const double redshift_pivot, const double proxy_pivot, const double contrast, const double logM_base, const double mass_pivot, const double Nclusters, const std::string bias_author="Tinker", const std::string method_Pk="EisensteinHu", std::string interp_type="Linear");
366 
429  void set_model_DensityProfile_cosmology (const std::vector<cbl::cosmology::CosmologicalParameter> cosmo_param, const std::vector<statistics::PriorDistribution> cosmo_prior, const statistics::PriorDistribution Rt_prior, const statistics::PriorDistribution concentration_prior, const statistics::PriorDistribution logM_prior, const statistics::PriorDistribution f_off_prior, const statistics::PriorDistribution sigma_off_prior, const statistics::PriorDistribution anisotropic_boost_prior, const statistics::PriorDistribution orientation_boost_prior);
430 
496  void set_model_DensityProfile_cosmology (const std::vector<cbl::cosmology::CosmologicalParameter> cosmo_param, const std::vector<statistics::PriorDistribution> cosmo_prior, const statistics::PriorDistribution Rt_prior, const std::string cM_author, const statistics::PriorDistribution logM_prior, const statistics::PriorDistribution f_off_prior, const statistics::PriorDistribution sigma_off_prior, const statistics::PriorDistribution anisotropic_boost_prior, const statistics::PriorDistribution orientation_boost_prior);
497 
603  void set_model_DensityProfile_cosmology (const std::vector<cbl::cosmology::CosmologicalParameter> cosmo_param, const std::vector<statistics::PriorDistribution> cosmo_prior, const std::string z_evo, const statistics::PriorDistribution Rt_prior, const statistics::PriorDistribution concentration_prior, const statistics::PriorDistribution f_off_prior, const statistics::PriorDistribution sigma_off_prior, const statistics::PriorDistribution anisotropic_boost_prior, const statistics::PriorDistribution orientation_boost_prior, const statistics::PriorDistribution alpha_prior, const statistics::PriorDistribution beta_prior, const statistics::PriorDistribution gamma_prior, const statistics::PriorDistribution scatter0_prior, const statistics::PriorDistribution scatterM_prior, const statistics::PriorDistribution scatterM_exponent_prior, const statistics::PriorDistribution scatterz_prior, const statistics::PriorDistribution scatterz_exponent_prior);
604 
737  void set_model_DensityProfile_cosmology (const std::vector<cbl::cosmology::CosmologicalParameter> cosmo_param, const std::vector<statistics::PriorDistribution> cosmo_prior, const std::string z_evo, const statistics::PriorDistribution Rt_prior, const statistics::PriorDistribution c0_prior, const statistics::PriorDistribution cM_prior, const statistics::PriorDistribution cz_prior, const statistics::PriorDistribution f_off0_prior, const statistics::PriorDistribution f_offM_prior, const statistics::PriorDistribution f_offz_prior, const statistics::PriorDistribution sigma_off0_prior, const statistics::PriorDistribution sigma_offM_prior, const statistics::PriorDistribution sigma_offz_prior, const statistics::PriorDistribution anisotropic_boost_prior, const statistics::PriorDistribution orientation_boost_prior, const statistics::PriorDistribution alpha_prior, const statistics::PriorDistribution beta_prior, const statistics::PriorDistribution gamma_prior, const statistics::PriorDistribution scatter0_prior, const statistics::PriorDistribution scatterM_prior, const statistics::PriorDistribution scatterM_exponent_prior, const statistics::PriorDistribution scatterz_prior, const statistics::PriorDistribution scatterz_exponent_prior);
738 
750  void exclude_parameter_from_MCMC (const std::string parameter);
751 
753  };
754 
755 
769  std::vector<double> model_density (const std::vector<double> radius, const std::shared_ptr<void> inputs, std::vector<double> &parameter);
770 
817  std::vector<double> compute_model_density_scaling_relation (const std::vector<double> radius, cbl::cosmology::Cosmology cosmo, cbl::cosmology::HaloProfile halo_profile, std::shared_ptr<STR_Profile_data_model> pp, const double conc, const double c0, const double cM, const double cz, const double AB_fact, const double OB_fact, const double alpha, const double beta, const double gamma, const double scatter0, const double scatterM, const double scatterM_exp, const double scatterz, const double scatterz_exp);
818 
833  std::vector<double> model_density_scaling_relation (const std::vector<double> radius, const std::shared_ptr<void> inputs, std::vector<double> &parameter);
834 
849  std::vector<double> model_density_scaling_relation_evolving_concentration_offcentering (const std::vector<double> radius, const std::shared_ptr<void> inputs, std::vector<double> &parameter);
850 
851  }
852  }
853 }
854 
855 #endif
The class HaloProfile.
The class Modelling_MassObservableRelation.
The class StackedDensityProfile.
The class Cosmology.
Definition: Cosmology.h:277
The class HaloProfile.
Definition: HaloProfile.h:52
The class Modelling.
Definition: Modelling.h:64
STR_Profile_data_model data_model()
get the member m_data_model
virtual ~Modelling_DensityProfile()=default
default destructor
Modelling_DensityProfile()=default
default constuctor _DensityProfile
bool m_evolving_offcentering
if true, the offcentering parameters evolve with redshift and mass proxy
std::string m_profile_author
author(s) of the cluster density profile
void set_model_DensityProfile_cosmology(const std::vector< cbl::cosmology::CosmologicalParameter > cosmo_param, const std::vector< statistics::PriorDistribution > cosmo_prior, const statistics::PriorDistribution Rt_prior, const statistics::PriorDistribution concentration_prior, const statistics::PriorDistribution logM_prior, const statistics::PriorDistribution f_off_prior, const statistics::PriorDistribution sigma_off_prior, const statistics::PriorDistribution anisotropic_boost_prior, const statistics::PriorDistribution orientation_boost_prior)
Set the profile and cosmological parameters used to model the cluster density profile.
void exclude_parameter_from_MCMC(const std::string parameter)
Exclude the selected parameter from the MCMC parameter space, and randomly extract its value from the...
bool m_mass_is_derived
if true, the mass is a parameter derived from the scaling relation
STR_Profile_data_model m_data_model
the container of parameters for the density model computation
bool m_2halo
if true, consider the 2-halo contribution
void set_data_model(const cbl::cosmology::Cosmology cosmology, const double redshift, const double contrast, const double logM_base, const double mass_pivot, const std::string bias_author="Tinker", const std::string method_Pk="EisensteinHu", std::string interp_type="Linear")
Set the data used to construct generic models of halo profiles.
The class PriorDistribution.
static const double alpha
: the fine-structure constant
Definition: Constants.h:233
std::vector< double > model_density_scaling_relation(const std::vector< double > radius, const std::shared_ptr< void > inputs, std::vector< double > &parameter)
Compute the excess density profile model in all the radial bins. The mass is derived from the scaling...
std::vector< double > model_density(const std::vector< double > radius, const std::shared_ptr< void > inputs, std::vector< double > &parameter)
Compute the excess density profile model in all the radial bins.
std::vector< double > model_density_scaling_relation_evolving_concentration_offcentering(const std::vector< double > radius, const std::shared_ptr< void > inputs, std::vector< double > &parameter)
Compute the excess density profile model in all the radial bins. The mass is derived from the scaling...
std::vector< double > compute_model_density_scaling_relation(const std::vector< double > radius, cbl::cosmology::Cosmology cosmo, cbl::cosmology::HaloProfile halo_profile, std::shared_ptr< STR_Profile_data_model > pp, const double conc, const double c0, const double cM, const double cz, const double AB_fact, const double OB_fact, const double alpha, const double beta, const double gamma, const double scatter0, const double scatterM, const double scatterM_exp, const double scatterz, const double scatterz_exp)
Compute the excess density profile model in all the radial bins when mass is derived from the scaling...
The global namespace of the CosmoBolognaLib
Definition: CAMB.h:38
std::string method_Pk
method used for the computation of the power spectrum
int i_AB_func
index of the function returning the anisotropic boost
int i_OB_func
index of the function returning the orientation boost
std::string interp_type
interpolation type for the power spectrum
std::vector< statistics::PriorDistribution > param_prior
parameter priors
std::vector< std::function< double(std::vector< double > &par, const int idx, std::vector< statistics::PriorDistribution > prior, const int i_prior)> > get_parameter
vector of functions returning some parameter values
int i_foff
index of the fraction of off-centered clusters
std::function< double(const double, cbl::cosmology::HaloProfile)> conc_func
function returning the concentration
int i_Rt_func
index of the function returning the truncation factor
std::vector< cosmology::CosmologicalParameter > Cpar
Cosmological parameters.
int i_sigmaoff_func
index of the function returning the off-centering scale
std::function< std::vector< double >const std::vector< double >, cbl::cosmology::HaloProfile, const std::string, const std::string, const std::string)> two_halo_func
function returning the 2-halo term
double proxy_pivot
Mass proxy pivot in the scaling relation.
std::vector< std::string > Par_string
parameter names
double redshift_pivot
Redshift pivot in the scaling relation.
std::string bias_author
author(s) who proposed the bias function
std::vector< statistics::PriorDistribution > priors_excluded
vector of priors of the parameters excluded from the MCMC
std::function< double(const double, const double, const double, const double, const double, const double)> conc_scaling_relation_func
function returning the concentration from a log(concentration)-log(mass) relation
std::shared_ptr< cosmology::HaloProfile > halo_profile
HaloProfile object pointer.
std::vector< statistics::ParameterType > Par_type
parameter types
std::function< std::vector< double >const std::vector< double >, cbl::cosmology::HaloProfile, const double, const std::string, const std::string)> two_halo_func_fast
function returning the 2-halo term, taking the halo bias in input
std::shared_ptr< cosmology::Cosmology > cosmology
Fiducial cosmology pointer.
int i_foff_func
index of the function returning the fraction of off-centered clusters
double contrast
The density contrast with respect to the critical density (i.e. if equal to 200, is considered)
std::shared_ptr< modelling::massobsrel::Modelling_MassObservableRelation > scaling_relation
Modelling_MassObservableRelation object pointer.