LALPulsar  6.1.0.1-fe68b98
ComputeSky.h File Reference

Computes phase coefficients necessary for a correct demodulation. More...

Prototypes

void LALComputeSky (LALStatus *status, REAL8 *skyConst, INT8 iSkyCoh, CSParams *params)
 Given an input index which refers to the sky patch under consideration, this routine returns the phase model coefficients \( A_{s\alpha} \) and \( B_{s\alpha} \) which are needed to correctly account for the phase variance of a signal over time. More...
 

Detailed Description

Computes phase coefficients necessary for a correct demodulation.

Author
Berukoff, S.J., Papa, M.A.

Synopsis

#include <lal/ComputeSky.h>

This is a short summary of the analytical calculations which form the basis for the code in this routine.

Recall that a demodulated Fourier Transform (DeFT) is given by

\begin{equation} \label{eq_e4a} \hat{x}_b({\vec{\lambda}})= \sum_{\alpha =0}^{M-1}\sum_{k=0}^{N-1}\tilde{x}_{\alpha k}\left[\frac{1}{N}\sum_{j=0}^{N-1}e^{-2\pi i(\Phi_{\alpha jb}(\vec{\lambda})-\frac{jk}{N})}\right] \end{equation}

The index \( b \) defines the DeFT frequency bin, the index \( \alpha \) loops through the SFTs that build the DeFT, \( k \) runs on all the SFT frequency bins, and \( j \) is a time index that runs on each SFT. The next step in the development of the demodulation technique involves Taylor expanding the phase model about the temporal midpoint of each short segment of data, while retaining only first order terms. The Taylor expansion of \( \Phi (t) \) about the temporal midpoint \( t_{\alpha,1/2} \) is

\begin{equation} \label{eq_taylor2} \Phi_{\alpha}(t) = \Phi(t_{\alpha,1/2})+\left[t-t_{\alpha,1/2}\right]\frac{d\Phi}{dt}(t_{\alpha,1/2}) \\ \end{equation}

For each value of \( \alpha \) , this expression consist of either constant or linear terms in time. With the particular time discretization chosen in this code, \( t=t_{0}+(N\alpha+j)\ T_{obs}/NM \) , we have

\begin{equation} \label{eq_time} \left[t-t_{\alpha,1/2}\right]=\frac{\ T_{obs}}{M}\left(\frac{j}{N}-\frac{1}{2}\right)=\mathcal{T}_{s}\left(\frac{j}{N}-\frac{1}{2}\right), \end{equation}

where \( \mathcal{T}_{s} \) is the short time baseline of the \( M \) short FTs. On the other hand, the phase can also be expressed as a function of SSB time \( T \) (i.e. the time at the solar system barycenter). We will assume the source to be at rest in this reference frame. Now, if one adopts the notation \( \Delta T_{\alpha}\equiv\left[T(t_{\alpha,1/2})- T(t_{0})\right] \) and \( \dot{T}_{\alpha}\equiv dT/dt(t_{\alpha,1/2}) \) the phase terms in the above equation are (neglecting constants)

\begin{eqnarray} \label{eq_phi} \Phi(t_{\alpha,1/2}) & = & f_{0}\Delta T_{\alpha}+\frac{1}{2}f_{1}\Delta T_{\alpha}^{2} +\frac{1}{3}f_{2}\Delta T_{\alpha}^{3}+\frac{1}{4}f_{3}\Delta T_{\alpha}^{4}+\frac{1}{5}f_{4}\Delta T_{\alpha}^{5} +\frac{1}{6}f_{5}\Delta T_{\alpha}^{6} \\ & & \\ \label{eq_dphi} \frac{d\Phi}{dt}(t_{\alpha,1/2}) & = & \dot{T}_{\alpha}\left(f_{0}+ f_{1}\Delta T_{\alpha} +f_{2}\Delta T_{\alpha}^{2}+f_{3}\Delta T_{\alpha}^{3} +f_{4}\Delta T_{\alpha}^{4}+f_{5}\Delta T_{\alpha}^{5}\right). \end{eqnarray}

These constants, for each value of \( \alpha \) , require \( \dot{T}_{\alpha} \) and \( \Delta T_{\alpha} \) , which are calculated by a suitable timing routine. For this demodulation package, this timing routine is provided by tdb(). Thus, for a given sky position, the timing routine will be called once for each short time chunk, each call returning a specific \( \dot{T}_{\alpha} \) and \( \Delta T_{\alpha} \) . By substituting Eq. \eqref{eq_time}, Eq. \eqref{eq_phi} and Eq. \eqref{eq_dphi} in Eq. \eqref{eq_taylor2} and grouping together the terms in \( j \) (linear in \( t \) ) in order to save computations, we have

\begin{equation} \label{eq_phasecalc} \Phi_{\alpha}(t)=\sum_{s=0}^{n_{spin}}f_{s}A_{s\alpha}+\frac{j}{N}\sum_{s=0}^{n_{spin}}f_{s}B_{s\alpha}, \end{equation}

where \( n_{spin} \) is the maximum order of spindown parameter. Rather than store the values of \( \dot{T}_{\alpha} \) and \( \Delta T_{\alpha} \) for each value of \( \alpha \) , it is more efficient to calculate the constants \( A_{s\alpha} \) and \( B_{s\alpha} \) only once, and then use these values for every spindown parameter set used when searching in a given sky position. Analytical formulae for these constants are easily derived:

\begin{equation} A_{s \alpha}=\frac{1}{s+1}\Delta T_{\alpha}^{s+1}-\frac{1}{2}\mathcal{T}_{SFT}\dot{T}_{\alpha}\Delta T_{\alpha}^{s} \end{equation}

\begin{equation} B_{s \alpha}=\mathcal{T}_{SFT}\dot{T}_{\alpha}\Delta T_{\alpha}^{s} \end{equation}

Definition in file ComputeSky.h.

Go to the source code of this file.

Data Structures

struct  CSParams
 This structure contains the parameters for the LALComputeSky() routine. More...
 

Macros

Error Codes
#define COMPUTESKYH_ENULL   1
 
#define COMPUTESKYH_ENNUL   2
 
#define COMPUTESKYH_ENEGA   4
 
#define COMPUTESKYH_MSGENULL   "Null Pointer"
 
#define COMPUTESKYH_MSGENNUL   "Non-Null Pointer"
 
#define COMPUTESKYH_MSGENEGA   "Bad Negative Value"
 

Macro Definition Documentation

◆ COMPUTESKYH_ENULL

#define COMPUTESKYH_ENULL   1

Definition at line 117 of file ComputeSky.h.

◆ COMPUTESKYH_ENNUL

#define COMPUTESKYH_ENNUL   2

Definition at line 118 of file ComputeSky.h.

◆ COMPUTESKYH_ENEGA

#define COMPUTESKYH_ENEGA   4

Definition at line 119 of file ComputeSky.h.

◆ COMPUTESKYH_MSGENULL

#define COMPUTESKYH_MSGENULL   "Null Pointer"

Definition at line 120 of file ComputeSky.h.

◆ COMPUTESKYH_MSGENNUL

#define COMPUTESKYH_MSGENNUL   "Non-Null Pointer"

Definition at line 121 of file ComputeSky.h.

◆ COMPUTESKYH_MSGENEGA

#define COMPUTESKYH_MSGENEGA   "Bad Negative Value"

Definition at line 122 of file ComputeSky.h.

Function Documentation

◆ LALComputeSky()

void LALComputeSky ( LALStatus status,
REAL8 skyConst,
INT8  iSkyCoh,
CSParams params 
)

Given an input index which refers to the sky patch under consideration, this routine returns the phase model coefficients \( A_{s\alpha} \) and \( B_{s\alpha} \) which are needed to correctly account for the phase variance of a signal over time.

The CSParams parameter structure contains relevant information for this routine to properly run. In particular, it contains an array of timestamps in LIGOTimeGPS format, which are the GPS times of the first data from each SFT. The input is an INT4 variable iSkyCoh, which is the index of the sky patch under consideration. For each sky patch, this code needs to be run once; the necessary phase model coefficients are calculated, and can then be applied to the relevant spindown parameter sets one is using in their search.

Algorithm

The routine uses a simplistic nested for-loop structure. The outer loop is over the number of SFTs in the observation timescale; this accounts for the temporal variability of the phase model coefficients. The inner loop is over the number of spindown parameters in one set. Inside the inner loop, the values are calculated using the analytical formulae given in the ComputeSky.h documentation.

Notes

The reference-time, at which the pulsar spin-parameters are defined, is taken to be the start-time INTERPRETED as an SSB time (i.e. no translation is done, the times are numerically equal!).

Definition at line 65 of file ComputeSky.c.