explicit_mapmaking
 All Classes Files Pages
Explicit Mapamking

A mapmaker for the POLARBEAR experiment capable of solving explicitely the mapmaking algebra.

Context

Data model

\begin{eqnarray*} d = As + Ty + n \end{eqnarray*}

where

\begin{itemize} \item[$d$] Data \item[$A$] Pointing matrix (sparse matrix) \item[$s$] Unknown sky vector (three stokes parameters for each sky pixel) \item[$T$] Templates matrix (any signal other than the sky) \item[$y$] Unknown templates amplitudes vector \item[$n$] Noise vector, its covariance matrix is $N$ \end{itemize}

Goal

Estimate $s$:

\begin{eqnarray*} \hat{s} = (A^\top F A)^{-1} A^\top F d } \end{eqnarray*}

where

\begin{eqnarray*} F = N^{-1} - N^{-1} T (T^\top N^{-1} T)^{-1} T^\top N^{-1} \end{eqnarray*}

Specifities of the data model

Data are divided into chuncks called constant elevation scan (CES). The noise of each CES is stationary, its inverse variance is called weight. At each time sample, the known quantities are: the data recorded by the bolometer (entry of $d$), the sky pixels being observed, the polarization angle of the detectors phi and the index of the ground being observed.

The matrix $A$ has a line for each time sample three columns for each sky pixel: the stokes parameters I, Q and U. There are two types of CESes: temperature and polarization. For a given time sample (i.e. for a given line), all the columns of the matrix $A$ are equal to 0 except I, Q and U of the sky pixel being observed: they are equal to $0$, $\cos (2\phi)$ and $\sin(2\phi)$ for polarization CESes and $1$, $0$ and $0$ for temperature CESes.

The matrix $T$ is block diagonal. Each block involves only the time samples of a single CES and has two types of columns: ground templates and polynomial templates.

Specifity of this mapmaker

Mapmakers usually solves iteratively the equation

\begin{eqnarray*} A^\top F A\hat{s} = A^\top F d. \end{eqnarray*}

This is why $A^\top F d$ is often referred to as RHS of the mapmaking equation. The specificity of this mapmaker is the capability of explicitly computing

\begin{eqnarray*} A^\top F A, \end{eqnarray*}

compute its eigenstructure and perform the inversion.

The code thanks advantage from the fact that the temperature and polarization analysis are independent: they are performed separately.

The library

The classes provided by the library allow to:

Case of use

Making a map from data explicit_mapmaking.cpp

Input

hdf5 files containing for each CES:

Output

An example of the output hierarchy (files are not included):

output_root
|-log
|-P
|---atfa
|-----blocks
|---eigenstructure
|-----values
|-------blocks
|-----vectors
|-------blocks
|---inverse
|-----blocks
|---rhs
|-----blocks
|-T
|---atfa
|-----blocks
|---eigenstructure
|-----values
|-------blocks
|-----vectors
|-------blocks
|---inverse
|-----blocks
|---rhs
|-----blocks