CosmoBolognaLib
Free Software C++/Python libraries for cosmological calculations
model_cosmology.cpp

This example shows how to estimate f*sigma8(z=1)

// ==================================================
// Example code: how to model cosmological parameters
// Data from Addison et al. 2013
// ==================================================
#include "Data1D.h"
int main () {
try {
// ---------------------------------------------------------------------------
// ---------------- using one of the built-in cosmological models ------------
// ---------------------------------------------------------------------------
// ----------------------------------------------
// ---------------- read the dataset ------------
// ----------------------------------------------
cbl::Path path;
const std::string data_file = path.DirCosmo()+"/External/Data/BAO/BAO_Addison2013.dat";
const std::string covariance_file = path.DirCosmo()+"/External/Data/BAO/BAO_Addison2013_covariance.dat";
auto data = std::make_shared<cbl::data::Data1D>(cbl::data::Data1D(data_file, 1));
data->set_covariance(covariance_file, 2, 1);
// ------------------------------------------------
// ---------------- read the data type ------------
// ------------------------------------------------
std::vector<std::string> data_type;
std::ifstream fin(data_file.c_str());
std::string line;
// skip header
getline(fin,line);
while(getline(fin, line)) {
double A;
std::string dt;
std::stringstream ss(line);
ss >> A >> A >> A >> dt;
data_type.push_back(dt);
}
fin.clear(); fin.close();
// ------------------------------------------------------------------------------------
// ---------------- modelling cosmological parameters from BAO information ------------
// ------------------------------------------------------------------------------------
cbl::modelling::cosmo::Modelling_Cosmology modelCosmo(data, data_type);
// ---------------------------------------------------------------------
// ---------------- define cosmological parameters to model ------------
// ---------------------------------------------------------------------
modelCosmo.set_fiducial_cosmology(cosmology);
cbl::statistics::PriorDistribution rs_prior(cbl::glob::DistributionType::_Gaussian_, {cosmology.rs_CAMB(), 10}, 130, 180, 5645);
modelCosmo.set_cosmological_parameters(Cpar, {OmegaM_prior, H0_prior, rs_prior});
// ----------------------------------------------------------------------
// ------------- run chains and write output chain and model ------------
// ----------------------------------------------------------------------
const int chain_size = 100;
const int nwalkers = 10;
const int seed = 4232;
std::vector<double> starting_parameters = {cosmology.Omega_matter(), cosmology.H0(), 150.};
modelCosmo.sample_posterior(chain_size, nwalkers, seed);
modelCosmo.set_fit_range(cbl::Min(data->xx()), cbl::Max(data->xx()));
modelCosmo.show_results();
}
catch(cbl::glob::Exception &exc) { std::cerr << exc.what() << std::endl; exit(1); }
return 0;
}
The class Data1D.
int main()
main function to create the logo of the CosmoBolognaLib
Definition: Logo.cpp:41
The class Modelling_Cosmology.
The class Path.
Definition: Path.h:145
std::string DirCosmo()
get the directory where the CosmoBolognaLbi are stored
Definition: Path.h:178
The class Cosmology.
Definition: Cosmology.h:277
The class Data1D.
Definition: Data1D.h:51
The class Exception.
Definition: Exception.h:111
const char * what() const noexcept override
the error description
Definition: Exception.h:203
void show_results(const int start=0, const int thin=1, const int nbins=50, const bool show_mode=false, const int ns=-1)
show the results of the MCMC sampling on screen
Definition: Modelling.cpp:269
void set_likelihood(const statistics::LikelihoodType likelihood_type, const std::vector< size_t > x_index={0, 2}, const int w_index=-1, const double prec=1.e-10, const int Nres=-1)
set the likelihood function
Definition: Modelling.cpp:124
void sample_posterior(const int chain_size, const int nwalkers, const int seed=666, const double aa=2, const bool parallel=true)
sample the posterior, initializing the chains by drawing from the prior distributions
Definition: Modelling.cpp:187
void set_fit_range(const double xmin, const double xmax)
set the fit range
Definition: Modelling1D.cpp:46
void set_fiducial_cosmology(const cbl::cosmology::Cosmology cosmology)
set the fiducial cosmology
void set_cosmological_parameters(const std::vector< cbl::cosmology::CosmologicalParameter > cosmoPar_name, const std::vector< cbl::statistics::PriorDistribution > cosmoPar_prior, const std::string distance_prior=par::defaultString, const std::vector< std::string > external_dataset={})
set the cosmological parameters
The class PriorDistribution.
@ _H0_
: the Hubble constant at z=0 [km/sec/Mpc]
@ _Omega_matter_LCDM_
: the density of baryons, cold dark matter and massive neutrinos (in units of the critical density) a...
@ _Planck15_
Planck collaboration 2015, paper XIII: Table 4, TT,TE,EE+lowP+lensing.
@ _Uniform_
Identity function.
@ _Gaussian_
Gaussian function.
@ _Gaussian_Covariance_
Gaussian likelihood covariance.
T Min(const std::vector< T > vect)
minimum element of a std::vector
Definition: Kernel.h:1324
T Max(const std::vector< T > vect)
maximum element of a std::vector
Definition: Kernel.h:1336