Loading [MathJax]/extensions/TeX/AMSsymbols.js
LALPulsar 7.1.1.1-5e288d3
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
Header SimulatePulsarSignal.h

Detailed Description

New pulsar signal-generation routines.

Author
Reinhard Prix
Date
2004, 2013

Prototypes

REAL4TimeSeriesXLALSimulateExactPulsarSignal (const PulsarSignalParams *params)
 Simulate a pulsar signal to best accuracy possible. More...
 

Function Documentation

◆ XLALSimulateExactPulsarSignal()

REAL4TimeSeries * XLALSimulateExactPulsarSignal ( const PulsarSignalParams params)

Simulate a pulsar signal to best accuracy possible.

Author
Reinhard Prix
Date
2005

The motivation for this function is to provide functions to simulate pulsar signals with the best possible accuracy, i.e. using no approximations, contrary to LALGeneratePulsarSignal().

Obviously this is not meant as a fast code to be used in a Monte-Carlo simulation, but rather as a reference to compare other (faster) functions agains, in order to be able to gauge the quality of a given signal-generation routine.

We want to calculate \( h(t) \) , given by

\[ h(t) = F_+(t)\, h_+(t) + F_\times(t) \,h_\times(t)\,, \]

where \( F_+ \) and \( F_x \) are called the beam-pattern functions, which depend of the wave polarization \( \psi \) , the source position \( \alpha \) , \( \delta \) and the detector position and orientation ( \( \gamma \) , \( \lambda \) , \( L \) and \( \xi \) ). The expressions for the beam-pattern functions are given in [9] , which we write as

\begin{eqnarray} F_+(t) = \sin \zeta \cos 2\psi \, a(t) + \sin \zeta \sin 2\psi \, b(t)\,,\\ F_\times(t) = \sin\zeta \cos 2\psi \,b(t) - \sin\zeta \sin 2\psi \, a(t) \,, \end{eqnarray}

where \( \zeta \) is the angle between the interferometer arms, and

\begin{eqnarray} a(t) &=& a_1 \cos[ 2 (\alpha - T)) ] + a_2 \sin[ 2(\alpha - T)] + a_3 \cos[ \alpha - T ] + a_4 \sin [ \alpha - T ] + a_5\,,\\ b(t) &=& b_1 \cos[ 2(\alpha - T)] + b_2 \sin[ 2(\alpha - T) ] + b_3 \cos[ \alpha - T ] + b_4 \sin[ \alpha - T]\,, \end{eqnarray}

where \( T \) is the local (mean) sidereal time of the detector, and the time-independent coefficients \( a_i \) and \( b_i \) are given by

\begin{eqnarray} a_1 &=& \frac{1}{16} \sin 2\gamma \,(3- \cos 2\lambda)\,(3 - \cos 2\delta)\,,\\ a_2 &=& -\frac{1}{4}\cos 2\gamma \,\sin \lambda \,(3 - \cos 2\delta) \,,\\ a_3 &=& \frac{1}{4} \sin 2\gamma \,\sin 2\lambda \,\sin 2\delta \,\\ a_4 &=& -\frac{1}{2} \cos 2\gamma \,\cos \lambda \,\sin 2 \delta\,,\\ a_5 &=& \frac{3}{4} \sin 2\gamma \, \cos^2 \lambda \,\cos^2 \delta\,, \end{eqnarray}

and

\begin{eqnarray} b_1 &=& \cos 2\gamma \,\sin \lambda \,\sin \delta\,,\\ b_2 &=& \frac{1}{4} \sin 2\gamma \,(3-\cos 2\lambda)\, \sin \delta\,,\\ b_3 &=& \cos 2\gamma \,\cos \lambda \,\cos\delta \,, \\ b_4 &=& \frac{1}{2} \sin2\gamma \,\sin 2\lambda \,\cos\delta\,, \end{eqnarray}

The source model considered is a plane-wave

\begin{eqnarray} h_+(t) &=& A_+\, \cos \Psi(t)\,,\\ h_\times(t) &=& A_\times \, \sin \Psi(t)\,, \end{eqnarray}

where the wave-phase is \( \Psi(t) = \Phi_0 + \Phi(t) \) , and for an isolated pulsar we have

\begin{equation} \Phi(t) = 2\pi \left[\sum_{s=0} \frac{f^{(s)}(\tau_\mathrm{ref})}{ (s+1)!} \left( \tau(t) - \tau_\mathrm{ref} \right)^{s+1} \right]\,, \end{equation}

where \( \tau_\mathrm{ref} \) is the "reference time" for the definition of the pulsar-parameters \( f^{(s)} \) in the solar-system barycenter (SSB), and \( \tau(t) \) is the SSB-time of the phase arriving at the detector at UTC-time \( t \) , which depends on the source-position ( \( \alpha \) , \( \delta \) ) and the detector-position, namely

\begin{equation} \tau (t) = t + \frac{ \vec{r}(t)\cdot\vec{n}}{c}\,, \end{equation}

where \( \vec{r}(t) \) is the vector from SSB to the detector, and \( \vec{n} \) is the unit-vector pointing to the source.

This is a standalone "clean-room" implementation using no other outside-functions except for LALGPStoLMST1() to calculate the local (mean) sidereal time at the detector for given GPS-time, (which I double-checked with an independent Mathematica script), and and XLALBarycenter() to calculate \( \tau(t) \) .

NOTE: currently only isolated pulsars are supported

NOTE2: we don't really use the highest possible accuracy right now, as we blatently neglect all relativistic timing effects (i.e. using dT=v.n/c)

NOTE3: no heterodyning is performed here, the time-series is generated and sampled at the given rate, that's all! ==> the caller needs to make sure about the right sampling rate to use (->aliasing) and do the proper post-treatment...

Definition at line 129 of file SimulatePulsarSignal.c.