Extrapolate the Pulsar spin-paramters \( \{f^{(k)}\}\equiv\{f, \dot{f},\ddot{f},...\} \) , and "spin-ranges" \( \{ f^{(k)}, \Delta f^{(k)} \} \) from one SSB epoch to another.
The central function of this module is XLALExtrapolatePulsarSpinRange(), which extrapolates a complete "spin range" (defined as PulsarSpinRange) from one epoch to another. A "spin-range" contains an epoch, and two vectors, \( f^{(k)} \) and \( \Delta f^{(k)} \) (where "canonical" ordering refers to \( \Delta f^{(k)} >= 0 \) for all k.
The extrapolation is defined by the pulsar spindown-model:
\[ f(\tau_1) = f(\tau_0) + \frac{\dot{f}(\tau_0)}{1!} \,\Delta\tau + \frac{\ddot{f}(\tau_0)}{2!} \,\Delta\tau^2 + ... = \sum_{k=0}^s \frac{f^{(k)}(\tau_0)}{k!}\, \Delta\tau^k\,, \]
where
\[\Delta\tau \equiv \tau_1 - \tau_0\]
and therefore generally
\[ f^{(l)}(\tau_1) = \sum_{k=0}^{s - l} \frac{ f^{(k+l)}(\tau_0)}{k! }\, \Delta\tau^k\,. \]
This expression is used to extrapolate a whole "spin-range", namely at each spindown-order \( (l) \) the extrapolated range is given by
\[ \min\left[ f^{(l)}(\tau_1) \right] = \sum_{k=0}^{s - l} \frac{1}{k!} \min\left[ f^{(k+l)}(\tau_0) \, \Delta\tau^k \right]\,. \]
\[ \max\left[ f^{(l)}(\tau_1) \right] = \sum_{k=0}^{s - l} \frac{1}{k!} \max\left[ f^{(k+l)}(\tau_0) \, \Delta\tau^k \right]\,. \]
This ensures that the range will be correctly extrapolated even if \( \tau_1 < \tau_0 \) , i.e. \( \Delta\tau < 0 \) .
The initial-phase extrapolation in XLALExtrapolatePulsarPhase() proceeds in the other direction, extrapolating \( \phi(\tau_0) \) to \( \phi(\tau_1) \) , where the spins are given at \( \tau_1 \) , i.e. \( f^{(k)}(\tau_1) \) . By using the above equations, one can arrive at the following expression:
\[ \phi(\tau_1) = \phi(\tau_0) - \sum_{k=0}^s \frac{f^{(k)}(\tau_1)}{(k+1)!} \, (-\Delta\tau)^{k+1} \,. \]
This function is used in XLALEstimatePulsarAmplitudeParams() to propagate the estimated initial phase from the internal reference time back to the user-input reference time.
Prototypes | |
int | XLALInitPulsarSpinRangeFromSpins (PulsarSpinRange *range, const LIGOTimeGPS *refTime, const PulsarSpins fkdot1, const PulsarSpins fkdot2) |
Initialise a PulsarSpinRange struct from two PulsarSpins structs. More... | |
int | XLALExtrapolatePulsarSpinRange (PulsarSpinRange *range1, const PulsarSpinRange *range0, const REAL8 dtau) |
General pulsar-spin extrapolation function: given a "spin-range" (ie spins + spin-bands) range0 at time \( \tau_0 \) , propagate the whole spin-range to time \( \tau_1 \) . More... | |
int | XLALExtrapolatePulsarSpins (PulsarSpins fkdot1, const PulsarSpins fkdot0, REAL8 dtau) |
Extrapolate the Pulsar spin-parameters \( \{f, \dot{f},\ddot{f},...\} \) (fkdot0 ) from the initial reference-epoch \( \tau_0 \) to the new reference-epoch \( \tau_1 \) . More... | |
int | XLALExtrapolatePulsarPhase (REAL8 *phi1, const PulsarSpins fkdot1, const REAL8 phi0, const REAL8 dtau) |
Extrapolate phase \( \phi_0 \) from \( \tau_0 \) to \( \tau_1 \) , given the spins fkdot1 at \( \tau_1 \) . More... | |
int | XLALCWSignalCoveringBand (REAL8 *minCoverFreq, REAL8 *maxCoverFreq, const LIGOTimeGPS *time1, const LIGOTimeGPS *time2, const PulsarSpinRange *spinRange, const REAL8 binaryMaxAsini, const REAL8 binaryMinPeriod, const REAL8 binaryMaxEcc) |
Determines a frequency band which covers the frequency evolution of a band of CW signals between two GPS times. More... | |
int | XLALCWSignalBand (REAL8 *minFreq, REAL8 *maxFreq, const DetectorStateSeries *detStates, const PulsarDopplerParams *doppler) |
Determines the frequency band occupied by the frequency evolution of a given CW signal between two GPS times. More... | |
DetectorStateSeries * | XLALPrepareCWSignalBand (SkyPosition *skypos_maxdoppler, const LIGOTimeGPS tStart, const REAL8 Tspan, const REAL8 dT, const LALDetector *detector, const EphemerisData *edat) |
(Optional) Helper function for using XLALCWSignalBand(): compute DetectorStateSeries for given time-span and detector, and optionally also the sky-position with maximal Doppler band-width. More... | |
int XLALInitPulsarSpinRangeFromSpins | ( | PulsarSpinRange * | range, |
const LIGOTimeGPS * | refTime, | ||
const PulsarSpins | fkdot1, | ||
const PulsarSpins | fkdot2 | ||
) |
Initialise a PulsarSpinRange
struct from two PulsarSpins structs.
[out] | range | output spin range |
[in] | refTime | reference time |
[in] | fkdot1 | input spins |
[in] | fkdot2 | input spins |
Definition at line 70 of file ExtrapolatePulsarSpins.c.
int XLALExtrapolatePulsarSpinRange | ( | PulsarSpinRange * | range1, |
const PulsarSpinRange * | range0, | ||
const REAL8 | dtau | ||
) |
General pulsar-spin extrapolation function: given a "spin-range" (ie spins + spin-bands) range0
at time \( \tau_0 \) , propagate the whole spin-range to time \( \tau_1 \) .
*range1
is allowed to point to the same spin-range as *range0
: the input will be overwritten with the output.[out] | range1 | output spin range |
[in] | range0 | input spin range |
[in] | dtau | time difference \( \tau_1 - \tau_0 \) to extrapolate range0 to |
Definition at line 99 of file ExtrapolatePulsarSpins.c.
int XLALExtrapolatePulsarSpins | ( | PulsarSpins | fkdot1, |
const PulsarSpins | fkdot0, | ||
REAL8 | dtau | ||
) |
Extrapolate the Pulsar spin-parameters \( \{f, \dot{f},\ddot{f},...\} \) (fkdot0
) from the initial reference-epoch \( \tau_0 \) to the new reference-epoch \( \tau_1 \) .
This is equivalent to XLALExtrapolatePulsarSpins(), but uses the fixed-size array-type PulsarSpins instead, which is easier to handle and avoids any dynamic-memory hassles.
fkdot1 == fkdot0
, in which case the input will be correctly replaced by the output. [out] | fkdot1 | output spin-parameter array |
[in] | fkdot0 | input spin-parameter array |
[in] | dtau | time difference \( \tau_1 - \tau_0 \) to extrapolate fkdot0 to |
Definition at line 159 of file ExtrapolatePulsarSpins.c.
int XLALExtrapolatePulsarPhase | ( | REAL8 * | phi1, |
const PulsarSpins | fkdot1, | ||
const REAL8 | phi0, | ||
const REAL8 | dtau | ||
) |
Extrapolate phase \( \phi_0 \) from \( \tau_0 \) to \( \tau_1 \) , given the spins fkdot1
at \( \tau_1 \) .
Returns \( \phi_1 \) in the range \( [0, 2\pi] \) .
[out] | phi1 | output phase at \( \tau_1 \) |
[in] | fkdot1 | spin-params at reference \( \tau_1 \) |
[in] | phi0 | input phase at \( \tau_0 \) |
[in] | dtau | time difference \( \tau_1 - \tau_0 \) to extrapolate phi0 to |
Definition at line 205 of file ExtrapolatePulsarSpins.c.
int XLALCWSignalCoveringBand | ( | REAL8 * | minCoverFreq, |
REAL8 * | maxCoverFreq, | ||
const LIGOTimeGPS * | time1, | ||
const LIGOTimeGPS * | time2, | ||
const PulsarSpinRange * | spinRange, | ||
const REAL8 | binaryMaxAsini, | ||
const REAL8 | binaryMinPeriod, | ||
const REAL8 | binaryMaxEcc | ||
) |
Determines a frequency band which covers the frequency evolution of a band of CW signals between two GPS times.
The calculation accounts for the spin evolution of the signals, and the maximum possible Dopper modulation due to detector motion, and (for binary signals) binary orbital motion.
[out] | minCoverFreq | Minimum frequency of the covering band |
[out] | maxCoverFreq | Maximum frequency of the covering band |
[in] | time1 | One end of the GPS time range |
[in] | time2 | The other end of the GPS time range |
[in] | spinRange | Frequency and spindown range of the CW signals |
[in] | binaryMaxAsini | Maximum projected semi-major axis a*sini/c (= 0 for isolated sources) |
[in] | binaryMinPeriod | Minimum orbital period (s); must be 0 for isolated signals |
[in] | binaryMaxEcc | Maximal binary eccentricity: must be 0 for isolated signals |
Definition at line 249 of file ExtrapolatePulsarSpins.c.
int XLALCWSignalBand | ( | REAL8 * | minFreq, |
REAL8 * | maxFreq, | ||
const DetectorStateSeries * | detStates, | ||
const PulsarDopplerParams * | doppler | ||
) |
Determines the frequency band occupied by the frequency evolution of a given CW signal between two GPS times.
The calculation accounts for the spin evolution of the signals, and the actual Dopper modulation due to detector motion, and (for binary signals) binary orbital motion.
[out] | minFreq | Minimum frequency of the covering band |
[out] | maxFreq | Maximum frequency of the covering band |
[in] | detStates | detector state series, cf XLALGetDetectorStates() |
[in] | doppler | Signal phase-evolution parameters |
Definition at line 321 of file ExtrapolatePulsarSpins.c.
DetectorStateSeries * XLALPrepareCWSignalBand | ( | SkyPosition * | skypos_maxdoppler, |
const LIGOTimeGPS | tStart, | ||
const REAL8 | Tspan, | ||
const REAL8 | dT, | ||
const LALDetector * | detector, | ||
const EphemerisData * | edat | ||
) |
(Optional) Helper function for using XLALCWSignalBand(): compute DetectorStateSeries for given time-span and detector, and optionally also the sky-position with maximal Doppler band-width.
The calculation accounts for the spin evolution of the signals, and the actual Dopper modulation due to detector motion, and (for binary signals) binary orbital motion.
[out] | skypos_maxdoppler | [optional] sky-position of maximal Doppler band-width over the sky |
[in] | tStart | start GPS time of observing interval |
[in] | Tspan | total span of observing interval in seconds |
[in] | dT | step-size (in seconds) to use to sample output detector-state series |
[in] | detector | detector, cf XLALGetSiteInfo() |
[in] | edat | ephemeris data, cf XLALInitBarycenter() |
Definition at line 373 of file ExtrapolatePulsarSpins.c.