SFB Decomposition (C++)

Return Types

struct catana::KClkk

Return Type of SFB decomposition methods.

k_ln contains the k at which C_l(k,k) is evaluated c_ln contains the corresponding C_l(k,k) (index 0: 0<l<lmax, index 1: 0<n<nmax)

Public Functions

KClkk(unsigned short lmax, unsigned short nmax, double rmax)

Construct KClkk for given lmax and nmax.

This will initialize k_ln to the Zeros of the spherical bessel functions normalized with rmax. The c_ln and f_lmn will be set to 0.

Parameters
  • lmax: k_ln and c_ln will contain space for l in [0,lmax)
  • nmax: k_ln and c_ln will contain space for n in [0,nmax)
  • rmax: the radius at which the boundary condition f(rmax)=0 is assumed. Will normalize the k_ln at which the c_ln are evaluated.

void savetxt(std::string filename_base)

Save k_ln and c_ln to files ‘{filename_base}.(k_ln/c_ln) respectively. Rows are l, columns are n.

Public Members

Eigen::ArrayXXd k_ln

the k’s at which c_ln are evaluated

Eigen::ArrayXXd c_ln

the C_l(k_n, k_n)

std::vector<Eigen::ArrayXXcd> f_lmn

the coefficients from which the c_ln were computed

SFB Decomposition

KClkk catana::sfb_decomposition(const PixelizedPointContainer &pix_obj_cont, unsigned short lmax, unsigned short nmax, double rmax, bool store_flmn, bool verbose)

compute the SFB transform on a PixelizedPointContainer

This method makes use of the fast pixelized decomposition scheme.

Return
SFB components including the k at which they were computed and the C_l(k). If store_flmn, will also save the f_lm(k) components
Parameters
  • point_container: data to analyze
  • lmax: largest multipole to compute
  • nmax: largest k-index to compute
  • rmax: maximal radius of data
  • store_flmn: if true the output will contain the f_lmn coefficients, otherwise only the C_ln
  • verbose: if true print additional logging information to stdout

KClkk catana::sfb_decomposition(const PointContainer &points, unsigned short lmax, unsigned short nmax, double rmax, bool store_flmn, bool verbose)

compute the SFB transform on a PointContainer

Warning: This method uses the slow brute-force method. Consider using a PixelizedPointContainer instead

Return
SFB components including the k at which they were computed and the C_l(k). If store_flmn, will also save the f_lm(k) components
Parameters
  • point_container: data to analyze
  • lmax: largest multipole to compute
  • nmax: largest k-index to compute
  • rmax: maximal radius of data
  • store_flmn: if true the output will contain the f_lmn coefficients, otherwise only the C_ln
  • verbose: if true print additional logging information to stdout

Analyzer

The catana::Analyzer class is a convenience wrapper combining data input, filtering and analyzing. It requires a catana::io::Source and arbitrary catana::io::Filter instances can be added for filtering.

class catana::Analyzer

The Analyzer Class combines input (source, filters) and decomposition.

Public Functions

Analyzer()
Analyzer(io::Source *source)

Construct from a child class of source and a window volume for normalization.

void set_source(io::Source *source)

Reset source.

void set_subsample_size(unsigned int n)

If only a random subset of source shall be decomposed, set subsample size here.

void add_filter(io::Filter *filter)

If the input source shall be filtered, add filter instances.

KClkk compute_sfb(unsigned short lmax, unsigned short nmax, double rmax, bool store_flmn, bool verbose)

Do the decomposition with the raw (brute-force) method.

KClkk compute_sfb_pixelized(unsigned short lmax, unsigned short nmax, double rmax, unsigned int nside, bool store_flmn, bool verbose)

Do the decomposition with the pixelized method using HEALPix and FFTW.