5 #include <gsl/gsl_integration.h> 6 #include <gsl/gsl_spline.h> 7 #include <gsl/gsl_errno.h> 22 double (*pz_func)(
double,
double,
void*,
int*))
26 this_info -> your_pz_func = pz_func;
55 double sigma_z0 = *((
double*) params);
57 double sigma_z = sigma_z0 * (1. + z_s);
58 return exp(- (z_ph - z_s)*(z_ph - z_s) / (2.*sigma_z*sigma_z)) \
70 double* sigma_z0_copy = malloc(
sizeof(
double));
71 *sigma_z0_copy = sigma_z0;
98 this_info -> your_dN_func = dNdz_func;
112 return pow(z, alpha) * exp(-
pow(z/z0, beta) );
124 smail_par->
alpha = alpha;
190 "ccl_redshift.c: Failed to read config file.");
200 gsl_integration_cquad_workspace * workspace = gsl_integration_cquad_workspace_alloc(
ccl_gsl->
N_ITERATION);
203 F.params = &pz_val_p;
205 if(gslstatus != GSL_SUCCESS) {
209 gsl_integration_cquad_workspace_free(workspace);
226 double numerator_integrand=0, denom_integrand=0, dNdz_t;
236 "ccl_redshifts.c: Failed to read config file.");
248 dNdz_t =
ccl_dNdz(z, dN_info, status);
256 gsl_integration_cquad_workspace * workspace = gsl_integration_cquad_workspace_alloc(
ccl_gsl->
N_ITERATION);
259 F.params = &pz_p_val;
261 if(gslstatus != GSL_SUCCESS) {
263 *status |= gslstatus;
265 gsl_integration_cquad_workspace_free(workspace);
270 F.params = &norm_p_val;
272 if(gslstatus != GSL_SUCCESS) {
274 *status |= gslstatus;
277 gsl_integration_cquad_workspace_free(workspace);
282 *tomoout = dNdz_t * numerator_integrand / denom_integrand;
static double ccl_dNdz(double z, dNdz_info *params, int *status)
double dNdz_smail(double z, void *params, int *status)
dNdz_info * ccl_create_Smail_dNdz_info(double alpha, double beta, double z0)
void ccl_raise_gsl_warning(int gslstatus, const char *msg,...)
double(* your_dN_func)(double, void *, int *)
#define CCL_ERROR_MISSING_CONFIG_FILE
void ccl_free_dNdz_info(dNdz_info *my_dNdz_info)
ccl_spline_params * ccl_splines
double INTEGRATION_DNDZ_EPSREL
double(* your_pz_func)(double, double, void *, int *)
Grid< NDIM, T > sqrt(Grid< NDIM, T > lhs)
static double beta[2][28][8]
static double ccl_norm_integrand(double z, void *params)
void ccl_cosmology_read_config(void)
dNdz_info * ccl_create_dNdz_info(void *params, double(*dNdz_func)(double, void *, int *))
double gaussian_pz(double z_ph, double z_s, void *params, int *status)
pz_info * ccl_create_gaussian_photoz_info(double sigma_z0)
void ccl_free_photoz_info(pz_info *my_photoz_info)
float pow(float base, unsigned long int exp)
dNdz_info * dN_information
static double ccl_photoz(double z_ph, void *params)
void ccl_dNdz_tomog(double z, double bin_zmin, double bin_zmax, pz_info *photo_info, dNdz_info *dN_info, double *tomoout, int *status)
void ccl_raise_exception(int err, const char *msg,...)
pz_info * ccl_create_photoz_info(void *params, double(*pz_func)(double, double, void *, int *))