Source code for tjpcov.covariance_cluster_counts_gaussian
from .covariance_cluster_counts import CovarianceClusterCounts
import numpy as np
[docs]class ClusterCountsGaussian(CovarianceClusterCounts):
"""Implementation of gaussian covariance term.
This class calculates the gaussian (shot-noise) contribution to the
autocorrelation of cluster counts (NxN).
"""
def __init__(self, config):
"""Class to calculate the gaussian covariance of cluster counts
Args:
config (dict or str): If dict, it returns the configuration
dictionary directly. If string, it asumes a YAML file and
parses it.
"""
super().__init__(config)
[docs] def _get_covariance_block_for_sacc(
self, tracer_comb1, tracer_comb2, **kwargs
):
"""Compute a single covariance entry 'clusters_redshift_richness'
Args:
tracer_comb1 (`tuple` of str): e.g.
('survey', 'bin_richness_1', 'bin_z_0')
tracer_comb2 (`tuple` of str): e.g.
('survey', 'bin_richness_0', 'bin_z_0')
Returns:
array_like: Covariance for a single block
"""
return self._get_covariance_gaussian(tracer_comb1, tracer_comb2)
[docs] def _get_covariance_gaussian(self, tracer_comb1, tracer_comb2):
"""Compute a single covariance entry 'clusters_redshift_richness'
Args:
tracer_comb1 (`tuple` of str): e.g.
('survey', 'bin_richness_1', 'bin_z_0')
tracer_comb2 (`tuple` of str): e.g.
('survey', 'bin_richness_0', 'bin_z_0')
Returns:
float: Covariance for a single block
"""
richness_i = int(tracer_comb1[1].split("_")[-1])
z_i = int(tracer_comb1[2].split("_")[-1])
richness_j = int(tracer_comb2[1].split("_")[-1])
z_j = int(tracer_comb2[2].split("_")[-1])
if richness_i != richness_j or z_i != z_j:
return np.array(0)
shot_noise = self.shot_noise(z_i, richness_i)
cov_full = np.array(shot_noise)
return cov_full
[docs] def get_covariance_block(self, tracer_comb1, tracer_comb2, **kwargs):
"""Compute a single covariance entry 'clusters_redshift_richness'
Args:
tracer_comb1 (`tuple` of str): e.g. ('clusters_0_0',)
tracer_comb2 (`tuple` of str): e.g. ('clusters_0_1',)
Returns:
array_like: Covariance for a single block
"""
return self._get_covariance_gaussian(tracer_comb1, tracer_comb2)
[docs] def shot_noise(self, z_i, lbd_i):
"""Returns the cluster shot noise contribution to the covariance.
The covariance of number counts is a sum of a super sample
covariance (SSC) term plus a gaussian diagonal term. The diagonal
term is also referred to as "shot noise" which we compute here.
Args:
z_i (int): redshift bin i
lbd_i (int): richness bin i
Returns:
float: Gaussian covariance contribution
"""
# Eqn B.7 or 1601.05779.pdf eqn 1
def integrand(z):
return self.mass_richness_integral(
z, lbd_i, remove_bias=True
) * self.comoving_volume_element(z, z_i)
result = self._quad_integrate(
integrand, self.z_lower_limit, self.z_upper_limit
)
return self.survey_area * result