Class
NumCosmoXcorSSCSij
Description [src]
final class NumCosmo.XcorSSCSij : GObject.Object
{
/* No available fields */
}
Super-sample covariance $S_{ij}$ matrix for a set of top-hat redshift bins.
Each redshift bin becomes a NcXcorKernelClusterTophat with a radial window
normalized to unit integral. Given the mask spectrum $C^{\rm mask}_\ell$,
$$S_{ij} = \frac{1}{4\pi C^{\rm mask}0} \sum{\ell=0}^{\ell_{\rm max}} (2\ell+1) C^{\rm mask}\ell C^{ij}\ell,$$
which reduces to the full-sky $S_{ij} = C^{ij}0 / 4\pi$ for the trivial mask $C^{\rm mask}\ell = 4\pi \delta_{\ell 0}$, the default here, also available as nc_xcor_ssc_sij_mask_cl_fullsky(). See Super-sample covariance for the derivation and the accuracy study.
The mask spectrum does not depend on cosmology, so it is supplied once, by
nc_xcor_ssc_sij_set_mask_cl(); NcmSphereMap computes it from a HEALPix
footprint. Only the $C^{ij}_\ell$ are recomputed per cosmology, which is
what makes this object cheap enough to call once per likelihood step.
Every kernel is put in permanent non-Limber mode (l_limber = -1): the
Limber approximation is not valid at the low multipoles that dominate
$S_{ij}$, and it makes the cross spectrum of two disjoint bins vanish.
The default quadrature is NC_XCOR_METHOD_KERNEL_EXACT, which needs no
tolerance and cannot fail to converge. The adaptive alternatives target a
tolerance the integrand may not support and abort when they cannot reach it,
which would end a Monte Carlo chain mid-run.
A single NcXcorSolver is built once and reused across cosmologies, so the
per-block spherical Bessel factorizations are paid for only on the first nc_xcor_ssc_sij_prepare().
Constructors
nc_xcor_ssc_sij_new
Creates a new NcXcorSSCSij over the len (z_edges) - 1 top-hat redshift
bins delimited by z_edges. The footprint defaults to the full sky; use
nc_xcor_ssc_sij_set_mask_cl() to set a real one.
Functions
nc_xcor_ssc_sij_clear
If ssc_sij is not NULL, decrements its reference count, freeing it if the
count reaches 0, and sets ssc_sij to NULL.
nc_xcor_ssc_sij_mask_cl_fullsky
Builds the mask spectrum of the full sky, $C^{\rm mask}\ell = 4\pi
\delta{\ell 0}$, for which $S_{ij}$ reduces to $C^{ij}_0 / 4\pi$. This is
the default footprint of a newly created NcXcorSSCSij.
Instance methods
nc_xcor_ssc_sij_eval
Prepares ssc_sij for cosmo if needed and returns a copy of the resulting
$S_{ij}$ matrix, which therefore survives the next prepare.
nc_xcor_ssc_sij_get_fsky
Computes the sky fraction of the footprint, $f_{\rm sky} = \sqrt{C^{\rm mask}_0 / 4\pi}$.
nc_xcor_ssc_sij_peek_matrix
Gets the $S_{ij}$ matrix computed by the last nc_xcor_ssc_sij_prepare(). The
matrix is owned by ssc_sij and is overwritten by the next prepare.
nc_xcor_ssc_sij_prepare
Computes the $S_{ij}$ matrix for cosmo, unconditionally. Use
nc_xcor_ssc_sij_prepare_if_needed() to skip the work when cosmo has not
changed since the last call.
nc_xcor_ssc_sij_prepare_if_needed
Computes the $S_{ij}$ matrix for cosmo, unless it is already the one held
from a previous call. This is the entry point for a likelihood that
recomputes $S_{ij}$ per step: it is a no-op whenever cosmo has not moved.
nc_xcor_ssc_sij_set_area
Selects the crude finite-area estimator, $S_{ij} = S^{\rm fullsky}{ij} /
f{\rm sky}$ with $f_{\rm sky} = \Omega / 4\pi$: the full-sky matrix simply
rescaled by the sky fraction area subtends. This is not a mask
deconvolution, and it knows nothing about the shape of the footprint; use
nc_xcor_ssc_sij_set_mask_cl() when the shape matters.
nc_xcor_ssc_sij_set_block_size
Sets the multipole block size handed to nc_xcor_solver_plan_blocks().
nc_xcor_ssc_sij_set_mask_cl
Sets the angular power spectrum of the survey footprint, $C^{\rm
mask}\ell$ for $\ell$ in $[0, \ell{\rm max}]$, so mask_cl has length
$\ell_{\rm max} + 1$ and its truncation sets how many multipoles are summed.
NcmSphereMap computes it from a HEALPix map; it does not depend on
cosmology, so it is set once and reused for every cosmology afterwards.
nc_xcor_ssc_sij_set_method
Sets the quadrature method used for the angular power spectra. The default,
NC_XCOR_METHOD_KERNEL_EXACT, needs no tolerance and cannot fail to
converge; the adaptive alternatives abort when they cannot reach their
target tolerance, which is fatal inside a Monte Carlo chain.
nc_xcor_ssc_sij_set_peak_epsilon
Sets the absolute floor of the adaptive refinement building the $U_i(k)$
spline of every kernel. This, not the relative tolerance, is what limits
the accuracy of the off-diagonal $S_{ij}$, which are a small residual of a
large cancellation: tightening it from NcXcorKernel‘s own 1.0e-4 default
to the 1.0e-6 used here moves $S_{06}$ by tens of percent for J-PAS-like
bins while barely moving $S_{00}$.
nc_xcor_ssc_sij_set_reltol
Sets the relative tolerance of the kernel splines and of the outer $k$ integral. This is not the knob limiting the accuracy of the off-diagonal $S_{ij}$, see nc_xcor_ssc_sij_set_peak_epsilon().
Signals
Signals inherited from GObject (1)
GObject::notify
The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.