def n_chi(chi): """Vectorized.""" # Invert the distance redshift relation by interpolating. c = Cosmology() redshifts_s = np.linspace(0.01, 3, 50) chi_s = c.comoving_distance(redshifts_s) redshift_interp = interpolate.interp1d(chi_s, redshifts_s, kind='cubic') redshifts = redshift_interp(chi) # Calculate the source density at both redshifts. dL = c.luminosity_distance(redshifts) dL_star = c.luminosity_distance(Z_STAR) # Minimum detectable L/L* x_min = (dL / dL_star)**2 # Get source density by integrating the luminocity function. n = [] dndL_fun = lambda x : x**ALPHA * np.exp(-x) for x_m in x_min: this_n, err = integrate.quad(dndL_fun, x_m, np.inf) n.append(this_n) n = np.array(n) return n
def interpolator(): c = Cosmology() chi = c.comoving_distance(REDSHIFTS) interpolator = interpolate.interp2d(K, chi, DATA, kind='cubic') return interpolator