@@ -97,6 +97,8 @@ typedef struct _NcDataClusterNCountsGaussIndex
9797 gdouble * z_obs_ub ;
9898 gdouble * lnM_obs_lb ;
9999 gdouble * lnM_obs_ub ;
100+ gdouble * z_obs_params ;
101+ gdouble * lnM_obs_params ;
100102} NcDataClusterNCountsGaussIndex ;
101103
102104static void
@@ -335,21 +337,25 @@ _nc_data_cluster_ncounts_gauss_begin (NcmData *data)
335337
336338 {
337339 gint i_z , i_lnM ;
340+ gint bin_index = 0 ;
338341
339342 for (i_z = 0 ; i_z < nz ; i_z ++ )
340343 {
341344 for (i_lnM = 0 ; i_lnM < nlnM ; i_lnM ++ )
342345 {
343346 NcDataClusterNCountsGaussIndex k ;
344347
345- k .i_z = i_z ;
346- k .i_lnM = i_lnM ;
347- k .z_obs_lb = ncm_vector_ptr (self -> z_obs , i_z + 0 );
348- k .z_obs_ub = ncm_vector_ptr (self -> z_obs , i_z + 1 );
349- k .lnM_obs_lb = ncm_vector_ptr (self -> lnM_obs , i_lnM + 0 );
350- k .lnM_obs_ub = ncm_vector_ptr (self -> lnM_obs , i_lnM + 1 );
348+ k .i_z = i_z ;
349+ k .i_lnM = i_lnM ;
350+ k .z_obs_lb = ncm_vector_ptr (self -> z_obs , i_z + 0 );
351+ k .z_obs_ub = ncm_vector_ptr (self -> z_obs , i_z + 1 );
352+ k .lnM_obs_lb = ncm_vector_ptr (self -> lnM_obs , i_lnM + 0 );
353+ k .lnM_obs_ub = ncm_vector_ptr (self -> lnM_obs , i_lnM + 1 );
354+ k .z_obs_params = (self -> z_obs_params != NULL ) ? ncm_matrix_ptr (self -> z_obs_params , bin_index , 0 ) : NULL ;
355+ k .lnM_obs_params = (self -> lnM_obs_params != NULL ) ? ncm_matrix_ptr (self -> lnM_obs_params , bin_index , 0 ) : NULL ;
351356
352357 g_array_append_val (self -> index_map , k );
358+ bin_index ++ ;
353359 }
354360 }
355361 }
@@ -411,14 +417,16 @@ _nc_data_cluster_ncounts_gauss_mean_func (NcmDataGaussCov *gauss_cov, NcmMSet *m
411417 for (i = 0 ; i < self -> index_map -> len ; i ++ )
412418 {
413419 const NcDataClusterNCountsGaussIndex * k = & g_array_index (self -> index_map , NcDataClusterNCountsGaussIndex , i );
420+ const gdouble * lnM_params = k -> lnM_obs_params ;
421+ const gdouble * z_params = k -> z_obs_params ;
414422
415423 const gdouble mean = nc_cluster_abundance_intp_bin_d2n (cad , cosmo , clusterz , clusterm ,
416424 k -> lnM_obs_lb ,
417425 k -> lnM_obs_ub ,
418- NULL ,
426+ lnM_params ,
419427 k -> z_obs_lb ,
420428 k -> z_obs_ub ,
421- NULL );
429+ z_params );
422430
423431 ncm_vector_set (vp , i , mean );
424432 }
@@ -467,13 +475,15 @@ _nc_data_cluster_ncounts_gauss_cov_func (NcmDataGaussCov *gauss_cov, NcmMSet *ms
467475 for (i = 0 ; i < self -> index_map -> len ; i ++ )
468476 {
469477 const NcDataClusterNCountsGaussIndex * k_i = & g_array_index (self -> index_map , NcDataClusterNCountsGaussIndex , i );
478+ const gdouble * lnM_params_i = k_i -> lnM_obs_params ;
479+ const gdouble * z_params_i = k_i -> z_obs_params ;
470480 const gdouble bias_i = nc_cluster_abundance_intp_bin_d2n_bias (cad , cosmo , clusterz , clusterm ,
471481 k_i -> lnM_obs_lb ,
472482 k_i -> lnM_obs_ub ,
473- NULL ,
483+ lnM_params_i ,
474484 k_i -> z_obs_lb ,
475485 k_i -> z_obs_ub ,
476- NULL );
486+ z_params_i );
477487
478488 for (j = 0 ; j < self -> index_map -> len ; j ++ )
479489 {
@@ -486,22 +496,24 @@ _nc_data_cluster_ncounts_gauss_cov_func (NcmDataGaussCov *gauss_cov, NcmMSet *ms
486496 const gdouble poisson_i = nc_cluster_abundance_intp_bin_d2n (cad , cosmo , clusterz , clusterm ,
487497 k_i -> lnM_obs_lb ,
488498 k_i -> lnM_obs_ub ,
489- NULL ,
499+ lnM_params_i ,
490500 k_i -> z_obs_lb ,
491501 k_i -> z_obs_ub ,
492- NULL );
502+ z_params_i );
493503
494504 ncm_matrix_set (cov , i , j , poisson_i + bias_i * bias_i * Sij );
495505 }
496506 else
497507 {
498- const gdouble bias_j = nc_cluster_abundance_intp_bin_d2n_bias (cad , cosmo , clusterz , clusterm ,
499- k_j -> lnM_obs_lb ,
500- k_j -> lnM_obs_ub ,
501- NULL ,
502- k_j -> z_obs_lb ,
503- k_j -> z_obs_ub ,
504- NULL );
508+ const gdouble * lnM_params_j = k_j -> lnM_obs_params ;
509+ const gdouble * z_params_j = k_j -> z_obs_params ;
510+ const gdouble bias_j = nc_cluster_abundance_intp_bin_d2n_bias (cad , cosmo , clusterz , clusterm ,
511+ k_j -> lnM_obs_lb ,
512+ k_j -> lnM_obs_ub ,
513+ lnM_params_j ,
514+ k_j -> z_obs_lb ,
515+ k_j -> z_obs_ub ,
516+ z_params_j );
505517
506518 ncm_matrix_set (cov , i , j , bias_i * bias_j * Sij );
507519 }
@@ -513,13 +525,15 @@ _nc_data_cluster_ncounts_gauss_cov_func (NcmDataGaussCov *gauss_cov, NcmMSet *ms
513525 for (i = 0 ; i < self -> index_map -> len ; i ++ )
514526 {
515527 const NcDataClusterNCountsGaussIndex * k_i = & g_array_index (self -> index_map , NcDataClusterNCountsGaussIndex , i );
528+ const gdouble * lnM_params = k_i -> lnM_obs_params ;
529+ const gdouble * z_params = k_i -> z_obs_params ;
516530 const gdouble poisson_i = nc_cluster_abundance_intp_bin_d2n (cad , cosmo , clusterz , clusterm ,
517531 k_i -> lnM_obs_lb ,
518532 k_i -> lnM_obs_ub ,
519- NULL ,
533+ lnM_params ,
520534 k_i -> z_obs_lb ,
521535 k_i -> z_obs_ub ,
522- NULL );
536+ z_params );
523537
524538 ncm_matrix_set (cov , i , i , poisson_i );
525539 }
0 commit comments