20#ifndef _PULSARCROSSCORR_H
21#define _PULSARCROSSCORR_H
50#include <lal/AVFactories.h>
52#include <lal/DetectorSite.h>
53#include <lal/LALDatatypes.h>
54#include <lal/LALHough.h>
55#include <lal/RngMedBias.h>
56#include <lal/LALRunningMedian.h>
57#include <lal/Velocity.h>
58#include <lal/Statistics.h>
59#include <lal/ComputeFstat.h>
60#include <lal/SFTfileIO.h>
61#include <lal/NormalizeSFTRngMed.h>
62#include <lal/LALInitBarycenter.h>
63#include <lal/SFTClean.h>
64#include <gsl/gsl_cdf.h>
65#include <lal/FrequencySeries.h>
66#include <lal/Sequence.h>
70#define PULSARCROSSCORR_ENULL 1
71#define PULSARCROSSCORR_ENONULL 2
72#define PULSARCROSSCORR_EVAL 3
74#define PULSARCROSSCORR_MSGENULL "Null pointer"
75#define PULSARCROSSCORR_MSGENONULL "Non-null pointer"
76#define PULSARCROSSCORR_MSGEVAL "Invalid value"
83typedef enum tagDetChoice {
91typedef struct tagSkyPatchesInfo {
99typedef struct tagSFTDetectorInfo {
108typedef struct tagCrossCorrAmps {
114typedef struct tagCrossCorrBeamFn {
119typedef struct tagSFTListElement {
124typedef struct tagPSDListElement {
129typedef struct tagREAL8ListElement {
134typedef struct tagCrossCorrBeamFnListElement {
void LALCalculateEstimators(LALStatus *status, REAL8 *aplussq1, REAL8 *aplussq2, REAL8 *acrossq1, REAL8 *acrossq2, COMPLEX16Vector *yalpha, COMPLEX16Vector *gplus, COMPLEX16Vector *gcross, REAL8Vector *sigmaAlphasq)
void LALCalculateAveUalpha(LALStatus *status, COMPLEX16 *out, REAL8 phiI, REAL8 phiJ, REAL8 freqI, REAL8 freqJ, REAL8 deltaF, CrossCorrBeamFn beamfnsI, CrossCorrBeamFn beamfnsJ, REAL8 sigmasq)
Calculate pair weights (U_alpha) for an average over Psi and cos(iota)
void LALCreateSFTPairsIndicesFrom2SFTvectors(LALStatus *status, INT4VectorSequence **out, SFTListElement *in, REAL8 lag, INT4 listLength, DetChoice detChoice, BOOLEAN autoCorrelate)
void LALCalculateSigmaAlphaSq(LALStatus *status, REAL8 *out, UINT4 bin1, UINT4 bin2, REAL8FrequencySeries *psd1, REAL8FrequencySeries *psd2)
void LALGetSignalFrequencyInSFT(LALStatus *status, REAL8 *out, LIGOTimeGPS *epoch, PulsarDopplerParams *dopp, REAL8Vector *vel)
Calculate the frequency of the SFT at a given epoch.
void LALCorrelateSingleSFTPair(LALStatus *status, COMPLEX16 *out, COMPLEX8FrequencySeries *sft1, COMPLEX8FrequencySeries *sft2, REAL8FrequencySeries *psd1, REAL8FrequencySeries *psd2, UINT4 bin1, UINT4 bin2)
Correlate a single pair of SFT at a parameter space point.
void LALCalculateUalpha(LALStatus *status, COMPLEX16 *out, CrossCorrAmps amplitudes, REAL8 phiI, REAL8 phiJ, REAL8 freqI, REAL8 freqJ, REAL8 deltaF, CrossCorrBeamFn beamfnsI, CrossCorrBeamFn beamfnsJ, REAL8 sigmasq, REAL8 *psi, COMPLEX16 *gplus, COMPLEX16 *gcross)
Calculate pair weights (U_alpha) for the general case.
void LALGetSignalPhaseInSFT(LALStatus *status, REAL8 *out, LIGOTimeGPS *epoch, PulsarDopplerParams *dopp, REAL8Vector *pos)
Get signal phase at a given epoch.
void LALCalculateCrossCorrPower(LALStatus *status, REAL8 *out, COMPLEX16Vector *yalpha, COMPLEX16Vector *ualpha)
void LALNormaliseCrossCorrPower(LALStatus *status, REAL8 *out, COMPLEX16Vector *ualpha, REAL8Vector *sigmaAlphasq)
struct tagCrossCorrBeamFnListElement * nextBeamfn
struct tagPSDListElement * nextPSD
Type containing the 'Doppler-parameters' affecting the time-evolution of the phase.
struct tagREAL8ListElement * nextVal
COMPLEX8FrequencySeries * sft
struct tagSFTListElement * nextSFT
struct holding info about skypoints