44 void cbl::Vmax_DC_distribution (std::vector<double> &dc, std::vector<double> &nObj,
const std::vector<double> D_C,
const std::vector<double> zobj_min,
const std::vector<double> zobj_max,
const double z_min,
const double z_max,
const double zbin_min,
const double zbin_max,
cosmology::Cosmology &cosm,
const double Area,
const int nObjRan,
const bool norm,
const std::string file_Vmax,
const double delta_dc_Vmax,
const int seed)
46 if (dc.size()>0 || nObj.size()>0)
ErrorCBL(
"",
"Vmax_DC_distribution",
"GlobalFunc/FuncCosmology.cpp");
50 vector<double> err, dc_Vmax, ww;
53 for (
unsigned int i=0; i<D_C.size(); i++) {
54 for (
int j=0; j<nObjRan; j++) {
55 Volume = ran()*cosm.
Volume(zobj_min[i], zobj_max[i], Area);
57 if (z_min<zz && zz<z_max) {
58 dc_Vmax.push_back(cosm.
D_C(zz));
64 double fact = (norm) ?
double(dc_Vmax.size())/
double(D_C.size()) : dc_Vmax.size();
66 double dc1 = cosm.
D_C(zbin_min), dc2 = cosm.
D_C(zbin_max);
68 int nbin =
nint((dc2-dc1))/delta_dc_Vmax;
72 distribution(dc, nObj, err, dc_Vmax, ww, nbin, linear, file_Vmax, fact, dc1, dc2);
81 return cosm2.
D_V(redshift)/cosm1.
D_V(redshift);
86 return cosm1.
D_A(redshift)/cosm2.
D_A(redshift);
91 return cosm2.
HH(redshift)/cosm1.
HH(redshift);
98 void cbl::max_separations_AP (
const double Rp_max,
const double Pi_max,
const double redshift,
const cosmology::Cosmology &cosm1,
const std::vector<cosmology::Cosmology> &cosm2,
double &rpM_AP,
double &piM_AP,
double &rM_AP)
100 vector<double> rp(cosm2.size()),
pi(cosm2.size());
102 for (
unsigned int i=0; i<cosm2.size(); i++) {
103 rp[i] = Rp_max*
AP_shift_rp(redshift,cosm1,cosm2[i]);
110 rM_AP = sqrt(pow(rpM_AP,2)+pow(piM_AP,2));
119 if (RR==0)
ErrorCBL(
"RR must be >0!",
"converted_xi",
"GlobalFunc/FuncCosmology.cpp");
121 double gamma =
AP_shift_r(redshift, cosm1, cosm2);
124 double lgRR = (direction) ? log10(RR/gamma) : log10(RR*gamma);
126 vector<double> lgrr, lgXi;
127 for (
unsigned int i=0; i<rr.size(); i++)
128 if (rr[i]>0 && Xi[i]>0) {
129 lgrr.push_back(log10(rr[i]));
130 lgXi.push_back(log10(Xi[i]));
133 return pow(10.,
interpolated(lgRR, lgrr, lgXi,
"Poly"));
146 double _RP = (direction) ? RP*fDA : RP/fDA;
147 double _PI = (direction) ? PI*fH : PI/fH;
Generic functions that use one or more classes of the CosmoBolognaLib.
double max_redshift(const double Volume, const double Area, const double z_min) const
maximum redshift for a given volume, sky area and minimum redshift
double Volume(const double z1, const double z2, const double Area) const
comoving volume for a given redshift range and sky area
double D_V(const double redshift) const
the average distance at a given redshift, used to rescale the correlation function
double HH(const double redshift=0.) const
the Hubble function
double D_A(const double redshift) const
the angular diameter distance at a given redshift
double D_C(const double redshift) const
the comoving line-of-sight distance at a given redshift
static const double pi
: the ratio of a circle's circumference to its diameter
The global namespace of the CosmoBolognaLib
void distribution(std::vector< double > &xx, std::vector< double > &fx, std::vector< double > &err, const std::vector< double > FF, const std::vector< double > WW, const int nbin, const bool linear=true, const std::string file_out=par::defaultString, const double fact=1., const double V1=par::defaultDouble, const double V2=par::defaultDouble, const std::string bin_type="Linear", const bool conv=false, const double sigma=0.)
derive and store the number distribution of a given std::vector
double AP_shift_r(const double redshift, const cosmology::Cosmology &cosm1, const cosmology::Cosmology &cosm2)
the Alcock-Pacinski factor used to shift comoving distances
double interpolated_2D(const double _x1, const double _x2, const std::vector< double > x1, const std::vector< double > x2, const std::vector< std::vector< double >> yy, const std::string type)
2D interpolation
void max_separations_AP(const double Rp_max, const double Pi_max, const double redshift, const cosmology::Cosmology &cosm1, const std::vector< cosmology::Cosmology > &cosm2, double &rpM_AP, double &piM_AP, double &rM_AP)
the maximum comoving separations to be used for the AP test, for a given set of test cosmologies
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
T Max(const std::vector< T > vect)
maximum element of a std::vector
double converted_xi(const double RR, const double redshift, const std::vector< double > rr, const std::vector< double > Xi, const cosmology::Cosmology &cosm1, const cosmology::Cosmology &cosm2, const bool direction)
the 1D two-point correlation function converted from one cosmology to another one
double interpolated(const double _xx, const std::vector< double > xx, const std::vector< double > yy, const std::string type)
1D interpolation
int nint(const T val)
the nearest integer
double AP_shift_pi(const double redshift, const cosmology::Cosmology &cosm1, const cosmology::Cosmology &cosm2)
the Alcock-Pacinski factor used to shift comoving distances parallel to the line-of-sight,...
double AP_shift_rp(const double redshift, const cosmology::Cosmology &cosm1, const cosmology::Cosmology &cosm2)
the Alcock-Pacinski factor used to shift comoving distances perpendicular to the line-of-sight,...
void Vmax_DC_distribution(std::vector< double > &dc, std::vector< double > &nObj, const std::vector< double > D_C, const std::vector< double > zobj_min, const std::vector< double > zobj_max, const double z_min, const double z_max, const double zbin_min, const double zbin_max, cosmology::Cosmology &cosm, const double Area, const int nObjRan, const bool norm=1, const std::string file_Vmax=par::defaultString, const double delta_dc_Vmax=100., const int seed=3213)
get a smoothed distribution of comoving distances, estimated with the Vmax method