34 #ifndef __HALOPROFILE__
35 #define __HALOPROFILE__
218 void m_set_profile (
const cbl::cosmology::Cosmology cosmology,
const double redshift,
const double conc,
const double Mass,
const double Delta,
const std::string profile_author,
const std::string halo_def,
const double trunc_fact=3.,
const bool miscentering=
false,
const bool single_profile=
false,
const double sigma_off=0.1,
const double f_off=1.);
262 std::vector<double>
m_rho_NFW (
const std::vector<double> rad);
282 std::vector<double>
m_Sigma_NFW (
const std::vector<double> rad);
322 std::vector<double>
m_Sigma_mis (
const std::vector<double> rad);
469 HaloProfile (
const cbl::cosmology::Cosmology cosmology,
const double redshift,
const double conc,
const double Mass,
const double Delta,
const std::string profile_author,
const std::string halo_def,
const double trunc_fact=3.,
const bool miscentering=
false,
const bool single_profile=
false,
const double sigma_off=0.1,
const double f_off=1.);
542 HaloProfile (
const cbl::cosmology::Cosmology cosmology,
const double redshift,
const std::string cM_author,
const double Mass,
const double Delta,
const std::string profile_author,
const std::string halo_def,
const double trunc_fact=3.,
const bool miscentering=
false,
const bool single_profile=
false,
const double sigma_off=0.1,
const double f_off=1.);
578 double concentration2 (
const double Vmax,
const double Rmax)
const;
627 std::vector<double>
Sigma (
const std::vector<double> rad);
641 std::vector<double>
Sigma_mis (
const std::vector<double> rad);
655 std::vector<double>
Sigma_cen (
const std::vector<double> rad);
689 std::vector<double>
Sigma_2h (
const std::vector<double> rad,
const std::string bias_author,
const std::string method_Pk=
"EisensteinHu",
const std::string interp_type=
"Linear",
const bool NL=
false);
719 std::vector<double>
Sigma_2h (
const std::vector<double> rad,
const double bias,
const std::string method_Pk=
"EisensteinHu",
const std::string interp_type=
"Linear",
const bool NL=
false);
733 std::vector<double>
DeltaSigma (
const std::vector<double> rad);
747 std::vector<double>
DeltaSigma_mis (
const std::vector<double> rad);
761 std::vector<double>
DeltaSigma_cen (
const std::vector<double> rad);
795 std::vector<double>
DeltaSigma_2h (
const std::vector<double> rad,
const std::string bias_author,
const std::string method_Pk=
"EisensteinHu",
const std::string interp_type=
"Linear",
const bool NL=
false);
825 std::vector<double>
DeltaSigma_2h (
const std::vector<double> rad,
const double bias,
const std::string method_Pk=
"EisensteinHu",
const std::string interp_type=
"Linear",
const bool NL=
false);
955 double Mass_Delta (
const double Mass,
const double Delta_in,
const double Delta_out,
const double conc,
const bool is_input_conc,
const double rRmin_guess=1.e-3,
const double rRmax_guess=10.)
const;
std::vector< double > Sigma(const std::vector< double > rad)
the total surface density profile of the halo.
~HaloProfile()=default
default destructor
void set_mass(const double mass=par::defaultDouble)
set the private member m_mass
double density_profile_FourierSpace(const double kk)
the Fourier transform of the normalised halo density
std::vector< double >(HaloProfile::* m_DeltaSigma_cen_ptr)(const std::vector< double >)
function returning the centered cluster excess surface density for a given radius
double(HaloProfile::* m_return_concentration)()
pointer returning the concentration, the one set by the user or from a concentration-mass relation fu...
double m_concentration
halo concentration
void set_concentration(const double conc=par::defaultDouble)
set the private member m_concentration
std::vector< double > Sigma_cen(const std::vector< double > rad)
the centered contribution to the total surface density profile of the halo.
std::vector< double >(HaloProfile::* m_Sigma_mis_ptr)(const std::vector< double >)
function returning the miscentering contribution to the total cluster surface density for a given rad...
std::vector< double >(HaloProfile::* m_rho_ptr)(const std::vector< double >)
cluster 3D density profile function
double m_redshift
halo redshift
std::vector< double > m_Sigma_mis(const std::vector< double > rad)
the mis-centered surface density profile of the halo (see e.g. Bellagamba et al. 2019).
double m_min_Smis
minimum value where the off-centered Sigma(R) is computed
bool m_single_profile
if true, the miscetering is related to a single cluster. Otherwise, a population of clusters is consi...
double m_Delta
overdensity factor
std::vector< double > m_DeltaSigma_cen(const std::vector< double > rad)
Excess surface density without the miscentering contribution.
double m_sigma_off
rms of the off-centered cluster distribution
bool m_miscentering
if true, account for the miscentering
double m_B
parameter B in the c-M relation
std::vector< double >(HaloProfile::* m_DeltaSigma_ptr)(const std::vector< double >)
function returning the excess cluster surface density for a given radius
std::vector< double > m_Sigma_mean_NFW_trunc(const std::vector< double > rad)
Mean surface density of the truncated NFW profile.
std::vector< double > m_Sigma_mean_NFW(const std::vector< double > rad)
Mean surface density of the NFW profile.
std::vector< double > Sigma_mis(const std::vector< double > rad)
the miscentering contribution to the total surface density profile of the halo.
double m_trunc_fact
truncation factor $F_t$ defining the truncation radius, that is
std::vector< double >(HaloProfile::* m_Sigma_mean_cen_ptr)(const std::vector< double >)
function returning the centered mean cluster surface density for a given radius
std::vector< double > m_Sigma_including_miscentering(const std::vector< double > rad)
Surface density including the miscentering contribution.
HaloProfile()=default
default constructor
std::vector< double > DeltaSigma_2h(const std::vector< double > rad, const std::string bias_author, const std::string method_Pk="EisensteinHu", const std::string interp_type="Linear", const bool NL=false)
the 2-halo contribution to the excess surface density profile of the halo, computed by assuming a hal...
std::vector< double > density_profile_3D(const std::vector< double > rad)
the 3D halo density profile.
double m_return_set_concentration()
Return the concentration set by the user.
std::string m_halo_def
halo (overdensity) definition
double m_f_off
fraction of off-centered clusters
double m_sigma_off_threshold
lower threshold for sigma_off
double concentration2(const double Vmax, const double Rmax) const
compute the halo concentration
void m_set_cM_relation(const std::string cM_author="Duffy")
set the concentration-mass relation. A function is set, computing the concentration of a dark matter ...
double rho_s()
the characteristic density of the 3D halo density profile.
double m_concentration_Duffy()
The concentration-mass relation by Duffy et al. (2008):
std::vector< double > m_rho_NFW(const std::vector< double > rad)
The NFW 3D density profile.
std::vector< double > DeltaSigma_cen(const std::vector< double > rad)
the centered contribution to the excess surface density profile of the halo.
std::vector< double > m_Sigma_NFW(const std::vector< double > rad)
Surface density of the NFW profile.
std::vector< double > DeltaSigma(const std::vector< double > rad)
the total excess surface density profile of the halo.
std::vector< double > m_DeltaSigma_mis(const std::vector< double > rad)
the mis-centered excess surface density profile of the halo (see e.g. Bellagamba et al....
double m_f_off_threshold
lower threshold for f_off
std::function< double(const double, cbl::cosmology::Cosmology, const double)> m_Delta_func
function returning the overdensity factor
std::string m_profile_author
cluster density profile author
double concentration()
get the concentration
double Delta()
get the overdensity
std::vector< double > m_DeltaSigma_including_miscentering(const std::vector< double > rad)
Excess surface density including the miscentering contribution.
double m_max_Smis
maxmimum value where the off-centered Sigma(R) is computed
double(HaloProfile::* m_rho_s_ptr)()
function returning the characteristic density of the cluster profile
double m_rho_s_NFW()
Characteristic density of the NFW profile.
double m_A
parameter A in the c-M relation
std::shared_ptr< cosmology::Cosmology > m_cosmology
pointer to the input cosmology
void set_f_off(const double f_off=par::defaultDouble)
set the private member m_f_off
std::vector< double > m_Sigma_NFW_trunc(const std::vector< double > rad)
Surface density of the truncated NFW profile.
void set_sigma_off(const double sigma_off=par::defaultDouble)
set the private member m_sigma_off
void set_trunc_fact(const double trunc_fact=par::defaultDouble)
set the private member m_trunc_fact
double m_C
parameter C in the c-M relation
std::vector< double >(HaloProfile::* m_DeltaSigma_mis_ptr)(const std::vector< double >)
function returning the miscentering contribution to the total cluster excess surface density for a gi...
std::vector< double > Sigma_2h(const std::vector< double > rad, const std::string bias_author, const std::string method_Pk="EisensteinHu", const std::string interp_type="Linear", const bool NL=false)
the 2-halo contribution to the total surface density profile of the halo, computed by assuming a halo...
void m_set_profile(const cbl::cosmology::Cosmology cosmology, const double redshift, const double conc, const double Mass, const double Delta, const std::string profile_author, const std::string halo_def, const double trunc_fact=3., const bool miscentering=false, const bool single_profile=false, const double sigma_off=0.1, const double f_off=1.)
private function that sets the halo profile parameters. If the miscentering is considered,...
double m_rho_s_NFW_trunc()
Characteristic density of the truncated NFW profile.
std::vector< double > m_rho_NFW_trunc(const std::vector< double > rad)
The truncated NFW 3D density profile.
std::vector< double >(HaloProfile::* m_Sigma_cen_ptr)(const std::vector< double >)
function returning the centered cluster surface density for a given radius
void set_cosmology(const cbl::cosmology::Cosmology cosmology)
set the cosmological model
std::vector< double >(HaloProfile::* m_Sigma_ptr)(const std::vector< double >)
function returning the cluster surface density for a given radius
double Mass_Delta(const double Mass, const double Delta_in, const double Delta_out, const double conc, const bool is_input_conc, const double rRmin_guess=1.e-3, const double rRmax_guess=10.) const
The halo mass converted to a different value of , assuming the Navarro-Frenk-White density profile.
bool m_isSet_cM_relation
if true, the concentration-mass relation is set
std::vector< double > DeltaSigma_mis(const std::vector< double > rad)
the miscentering contribution to the excess surface density profile of the halo.
static const std::string defaultString
default std::string value
static const double defaultDouble
default double value
double bias(const double Mmin, const double sigmalgM, const double M0, const double M1, const double alpha, const std::shared_ptr< void > inputs)
the mean galaxy bias
The global namespace of the CosmoBolognaLib
T Mass(const T RR, const T Rho)
the mass of a sphere of a given radius and density