def rho(self, rs, zs, masses, cons): ''' SHAPE r, cluster ''' scale_radii = self.scale_radius(zs, masses, cons) numerator = self.delta_c(cons) * self.reference_density(zs) total_num_dims = rs.ndim + numerator.ndim - 1 numerator = mathutils.atleast_kd(numerator, total_num_dims, append_dims=False) xs = rs / (mathutils.atleast_kd( scale_radii, total_num_dims, append_dims=False)) denominator = xs * (1 + xs)**2 return numerator / denominator
def rho(self, rs, zs, masses, cons): ''' SHAPE r, z, params ''' scale_radii = self.scale_radius(zs, masses, cons) numerator = self.delta_c(cons)[None, :] * self.reference_density( zs)[:, None] total_num_dims = rs.ndim + numerator.ndim - 1 numerator = mathutils.atleast_kd(numerator, total_num_dims, append_dims=False) xs = rs[..., None] / mathutils.atleast_kd( scale_radii, total_num_dims, append_dims=False) denominator = xs * (1 + xs)**2 return numerator / denominator
def excess_surface_density(self, rs, zs, masses, cons): ''' SHAPE r, mass, z, cons ''' scale_radii = self.scale_radius(zs, masses, cons) prefactor = scale_radii * self.delta_c(cons)[ None, None, :] * self.reference_density(zs)[None, :, None] prefactor = prefactor * (u.Msun / u.Mpc**2).to(self.units) xs = rs[..., None, :, None] / mathutils.atleast_kd( scale_radii, rs.ndim + scale_radii.ndim - 1, append_dims=False) postfactor = self._esd_inequality_func(xs) return prefactor[None, :] * postfactor
def rho_with_analytic_result(radii, param_1, param_2): total_ndim = radii.ndim+2 radii = mathutils.atleast_kd(radii, total_ndim) param_1 = mathutils.atleast_kd(param_1[:, None], total_ndim, append_dims=False) param_2 = mathutils.atleast_kd(param_2, total_ndim, append_dims=False) return (radii**2) * param_1 * param_2
def prob_dist_func(r, scale): scale = mathutils.atleast_kd(scale, r.ndim+1, append_dims=False) return scale*np.ones(r.shape + (1,))