54 if (ff<0.5)
coutCBL <<
"Warning you are calling pw function for NS with f = "<<ff<<endl;
55 return (1./ff-1.)*2.*ww*erfc(ww/sqrt(2.))+(2.-1./ff)*sqrt(2./
par::pi)*exp(-ww*ww*0.5);
58 double alpha = 0.815*exp(-2.*ff*ff*ff)/pow(ff,0.707);
59 double Denumerator = (exp(ww*ww*0.5)+
alpha-1.);
60 return alpha*ww*exp(ww*ww*0.5)/Denumerator/Denumerator;
71 double cbl::cosmology::Cosmology::pz (
const double m0,
const double z0,
const double frac,
const double redshift,
const std::string model_model,
const std::string method_SS,
const bool store_output,
const std::string output_root)
const
73 double dcz0 = deltac(z0)/DN(z0);
74 double dcz = deltac(redshift)/DN(redshift);
75 double SS = sigma2M(m0, method_SS, redshift, store_output, output_root);
77 double SSf = sigma2M(mf, method_SS, redshift, store_output, output_root);
78 double ww = (dcz-dcz0)/sqrt(SSf-SS);
79 if (model_model==
"NS"){
80 if(frac<0.5)
coutCBL <<
"Warning you are calling pw function for NS with frac = "<<frac<<endl;
81 return (1./frac-1.)*2.*ww*erfc(ww/sqrt(2.))+(2.-1./frac)*sqrt(2./
par::pi)*exp(-ww*ww*0.5);
83 if (model_model==
"GTS"){
84 double alpha = 0.815*exp(-2.*frac*frac*frac)/pow(frac,0.707);
85 double Denumerator = (exp(ww*ww*0.5)+
alpha-1.);
86 return alpha*ww*exp(ww*ww*0.5)/Denumerator/Denumerator;
100 if(ff<0.5)
coutCBL <<
"Warning you are calling cumPw function for NS with f = "<<ff<<endl;
101 double F0 = erf(ww/sqrt(2.))+ww*ww*erfc(ww/sqrt(2.))-sqrt(2./
par::pi)*ww*exp(-ww*ww*0.5);
102 double F1 = (1./ff-1.)-(1./ff-1.)*F0;
103 double F2 = (2.-1./ff)*(1.-erf(ww/sqrt(2.)));
107 double alpha = 0.815*exp(-2.*ff*ff*ff)/pow(ff,0.707);
108 double Denumerator = (exp(0.5*ww*ww)+
alpha-1.);
109 return alpha/Denumerator;
122 if (model_model==
"NS") {
125 vector<double> Pw(nn);
126 for(
int i=0; i<nn; i++) {
127 double F0 = erf(ww[i]/sqrt(2.))+ww[i]*ww[i]*erfc(ww[i]/sqrt(2.))-sqrt(2./
par::pi)*ww[i]*exp(-ww[i]*ww[i]*0.5);
128 double F1 = (1./ff-1.)-(1./ff-1.)*F0;
129 double F2 = (2.-1./ff)*(1.-erf(ww[i]/sqrt(2.)));
132 string type =
"Poly";
138 if (model_model==
"GTS") {
139 double alpha = 0.815*exp(-2*ff*ff*ff)/pow(ff, 0.707);
141 wf[1] = sqrt(2.*log(
alpha+1.));
153 double cbl::cosmology::Cosmology::wf (
const double mm,
const double redshift,
const double ff,
const double zf,
const std::string method_SS,
const bool store_output,
const std::string output_root)
const
155 double deltacz = deltac(redshift)/DN(redshift);
156 double deltaczf = deltac(zf)/DN(zf);
157 double SS = sigma2M(mm, method_SS, redshift, store_output, output_root);
159 double SSf = sigma2M(mf, method_SS, redshift, store_output, output_root);
160 return (deltaczf-deltacz)/sqrt(SSf-SS);
168 double cbl::cosmology::Cosmology::Redshift (
const double mm,
const double redshift,
const double ff,
const std::string method_SS,
const double wwf,
const bool store_output,
const std::string output_root)
const
172 double dc0 = deltac(redshift)/DN(redshift);
173 double SS = sigma2M(mm, method_SS, redshift, store_output, output_root);
175 double SSf = sigma2M(mf, method_SS, redshift, store_output, output_root);
176 double dd = wwf*sqrt(SSf-SS) + dc0;
178 vector<double> dci(nn);
180 for (
int i=0; i<nn; i++) {
181 double zi = -1 + pow(10.,lzi[i]);
182 dci[i] = deltac(zi)/DN(zi);
192 void cbl::cosmology::Cosmology::medianzf (
const double ff,
const double mass,
const double z0,
const std::string model_model,
const std::string method_SS, std::vector<double> &zf,
const bool store_output,
const std::string output_root)
const
196 medianwf(ff, model_model, wf);
198 zf[0] = Redshift(mass, z0, ff, method_SS, wf[0], store_output, output_root);
199 zf[1] = Redshift(mass, z0, ff, method_SS, wf[1], store_output, output_root);
200 zf[2] = Redshift(mass, z0, ff, method_SS, wf[2], store_output, output_root);
#define coutCBL
CBL print message.
void medianwf(const double ff, const std::string model_model, std::vector< double > &wf) const
median formation w
double pw(const double ww, const double ff, const std::string author) const
differential distribution
double cumPw(const double ww, const double ff, const std::string author) const
cumulative distribution
double pz(const double m0, const double z0, const double frac, const double redshift, const std::string model_model, const std::string method_SS, const bool store_output=true, const std::string output_root="test") const
formation probability
double Redshift(const double d_c=1., const double z1_guess=0., const double z2_guess=10., const double prec=0.0001) const
redshift at a given comoving distance
void medianzf(const double ff, const double mass, const double z0, const std::string model_model, const std::string method_SS, std::vector< double > &zf, const bool store_output=true, const std::string output_root="test") const
median formation z
double wf(const double mm, const double redshift, const double ff, const double zf, const std::string method_SS, const bool store_output=true, const std::string output_root="test") const
rescaled variable w as in Lacey and Coles 1993
static const double pi
: the ratio of a circle's circumference to its diameter
static const double alpha
: the fine-structure constant
The global namespace of the CosmoBolognaLib
std::vector< T > linear_bin_vector(const size_t nn, const T min, const T max)
fill a std::vector with linearly spaced values
double interpolated(const double _xx, const std::vector< double > xx, const std::vector< double > yy, const std::string type)
1D interpolation