Loading [MathJax]/extensions/TeX/AMSsymbols.js
LALPulsar 7.1.1.1-8a6b96f
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
SFTfunctions.h
Go to the documentation of this file.
1/*
2* Copyright (C) 2010 -- 2014 Evan Goetz
3*
4* This program is free software; you can redistribute it and/or modify
5* it under the terms of the GNU General Public License as published by
6* the Free Software Foundation; either version 2 of the License, or
7* (at your option) any later version.
8*
9* This program is distributed in the hope that it will be useful,
10* but WITHOUT ANY WARRANTY; without even the implied warranty of
11* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12* GNU General Public License for more details.
13*
14* You should have received a copy of the GNU General Public License
15* along with with program; see the file COPYING. If not, write to the
16* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17* MA 02110-1301 USA
18*/
19
20#ifndef __SFTFUNCTIONS_H__
21#define __SFTFUNCTIONS_H__
22
23#include <lal/SSBtimes.h>
24#include <lal/LALComputeAM.h>
25#include <lal/LALInitBarycenter.h>
26
27#include <gsl/gsl_sf_trig.h>
28
29#include "TwoSpectTypes.h"
30#include "vectormath.h"
31
32typedef struct {
42
44MultiSFTVector *extractSFTband( const SFTCatalog *catalog, const REAL8 minfbin, const REAL8 maxfbin );
45MultiSFTVector *getMultiSFTVector( UserInput_t *params, const REAL8 minfbin, const REAL8 maxfbin );
46MultiSFTVector *generateSFTdata( UserInput_t *uvar, const MultiLALDetector *detectors, const EphemerisData *edat, const INT4 maxbinshift, const gsl_rng *rng );
47REAL4VectorAligned *coherentlyAddSFTs( const MultiSFTVector *multiSFTvector, const MultiSSBtimes *multissb, const MultiAMCoeffs *multiAMcoeffs, const LIGOTimeGPSVector *jointTimestamps, const REAL4VectorAlignedArray *backgroundRatio, const INT4 cosiSign, const assumeNSparams *NSparams, const UserInput_t *params, REAL4VectorAligned *backgroundScaling );
48REAL4VectorAligned *convertSFTdataToPowers( const SFTVector *sfts, const UserInput_t *params, const REAL8 normalization );
49REAL4VectorAligned *readInSFTs( UserInput_t *params, const REAL8 normalization, const REAL8 minfbin, const REAL8 maxfbin );
50
51REAL4TimeSeries *computeNSfreqTS( const PulsarParams *pulsarParams, LIGOTimeGPS tepoch, REAL8 Tsft, REAL8 SFToverlap, REAL8 duration );
52
55MultiLIGOTimeGPSVector *getMultiTimeStampsFromSegmentsFile( const LALStringVector *filenames, const REAL8 t0, const REAL8 Tsft, const REAL8 SFToverlap, const REAL8 dur );
56
59
61INT4Vector *existingSFTs( const REAL4VectorAligned *tfdata, const UINT4 numffts );
62void removeBadSFTs( REAL4VectorAligned *tfdata, const INT4Vector *badsfts );
63
64INT4 slideTFdata( REAL4VectorAligned *output, const UserInput_t *params, const REAL4VectorAligned *tfdata, const INT4Vector *binshifts );
65INT4 tfRngMeans( REAL4VectorAligned *output, const REAL4VectorAligned *tfdata, const UINT4 numffts, const UINT4 numfbins, const UINT4 blksize );
66INT4 tfMeanSubtract( REAL4VectorAligned *tfdata, const REAL4VectorAligned *rngMeans, const REAL4VectorAligned *backgroundScaling, const UINT4 numffts, const UINT4 numfbins );
67INT4 tfWeight( REAL4VectorAligned *output, const REAL4VectorAligned *tfdata, REAL4VectorAligned *rngMeans, REAL4VectorAligned *antPatternWeights, const REAL4VectorAligned *backgroundScaling, const INT4Vector *indexValuesOfExistingSFTs, const UserInput_t *params );
69INT4 checkBackgroundScaling( const REAL4VectorAligned *background, const REAL4VectorAligned *backgroundScaling, const INT4Vector *SFTexistVector );
70
71REAL8 determineSumOfWeights( const REAL4VectorAligned *antweightssq, const REAL4VectorAligned *rngMeanssq );
72
73INT4 printSFTtimestamps2File( const MultiSFTVector *multiSFTvector, const UserInput_t *params );
74
75
76#endif
REAL4VectorAligned * readInSFTs(UserInput_t *params, const REAL8 normalization, const REAL8 minfbin, const REAL8 maxfbin)
Read in the data SFTs in one function.
Definition: SFTfunctions.c:826
MultiLIGOTimeGPSVector * getMultiTimeStampsFromSFTs(const MultiSFTVector *multiSFTvector, const UserInput_t *params)
Create a list of timestamps from SFTs that might be a subset from those in an SFTCatalog,...
Definition: SFTfunctions.c:873
REAL8 determineSumOfWeights(const REAL4VectorAligned *antweightssq, const REAL4VectorAligned *rngMeanssq)
Determine the sum of the weights.
INT4 tfRngMeans(REAL4VectorAligned *output, const REAL4VectorAligned *tfdata, const UINT4 numffts, const UINT4 numfbins, const UINT4 blksize)
Determine the running mean of each SFT.
void removeBadSFTs(REAL4VectorAligned *tfdata, const INT4Vector *badsfts)
Remove the marked SFTs as bad by setting values to 0.
LIGOTimeGPSVector * jointTimestampsFromMultiTimestamps(const MultiLIGOTimeGPSVector *multiTimestamps)
Definition: SFTfunctions.c:981
REAL4TimeSeries * computeNSfreqTS(const PulsarParams *pulsarParams, LIGOTimeGPS tepoch, REAL8 Tsft, REAL8 SFToverlap, REAL8 duration)
Compute the GW frequency time series (in the SSB) for a set of assumed parameters.
Definition: SFTfunctions.c:689
INT4 replaceTFdataWithSubsequentTFdata(REAL4VectorAlignedArray *tfdataarray, const UINT4 numffts)
INT4Vector * markBadSFTs(const REAL4VectorAligned *tfdata, const UserInput_t *params)
Mark the non-Gaussian SFTs using K-S and Kuiper's tests.
SFTCatalog * findSFTdata(const UserInput_t *params)
Find the SFT data specified by user input.
Definition: SFTfunctions.c:35
INT4 tfMeanSubtract(REAL4VectorAligned *tfdata, const REAL4VectorAligned *rngMeans, const REAL4VectorAligned *backgroundScaling, const UINT4 numffts, const UINT4 numfbins)
Subtract running mean values from the SFT data, modifying input time-frequency data.
INT4 printSFTtimestamps2File(const MultiSFTVector *multiSFTvector, const UserInput_t *params)
MultiSFTVector * extractSFTband(const SFTCatalog *catalog, const REAL8 minfbin, const REAL8 maxfbin)
Extract the SFT coefficients from the band of interest.
Definition: SFTfunctions.c:76
REAL4VectorAligned * convertSFTdataToPowers(const SFTVector *sfts, const UserInput_t *params, const REAL8 normalization)
Convert a SFTVector of sfts into powers.
Definition: SFTfunctions.c:753
INT4 tfWeight(REAL4VectorAligned *output, const REAL4VectorAligned *tfdata, REAL4VectorAligned *rngMeans, REAL4VectorAligned *antPatternWeights, const REAL4VectorAligned *backgroundScaling, const INT4Vector *indexValuesOfExistingSFTs, const UserInput_t *params)
Weight the SFTs based on antenna pattern and noise variance (Equation 11, assuming the input time-fre...
MultiSFTVector * generateSFTdata(UserInput_t *uvar, const MultiLALDetector *detectors, const EphemerisData *edat, const INT4 maxbinshift, const gsl_rng *rng)
INT4 slideTFdata(REAL4VectorAligned *output, const UserInput_t *params, const REAL4VectorAligned *tfdata, const INT4Vector *binshifts)
Slide the time-frequency data to account for detector motion.
MultiLIGOTimeGPSVector * squeezeMultiTimestamps(const MultiLIGOTimeGPSVector *multiTS)
MultiSFTVector * getMultiSFTVector(UserInput_t *params, const REAL8 minfbin, const REAL8 maxfbin)
Get a MultiSFTVector from the user-input values.
Definition: SFTfunctions.c:102
INT4 checkBackgroundScaling(const REAL4VectorAligned *background, const REAL4VectorAligned *backgroundScaling, const INT4Vector *SFTexistVector)
Go through the backgroundScaling vector and zero out if the SFTexistVector has a 0 in that SFT locati...
MultiLIGOTimeGPSVector * getMultiTimeStampsFromSegmentsFile(const LALStringVector *filenames, const REAL8 t0, const REAL8 Tsft, const REAL8 SFToverlap, const REAL8 dur)
Create a list of timestamps from a segment list.
Definition: SFTfunctions.c:938
MultiLIGOTimeGPSVector * getMultiTimeStampsFromSFTCatalog(const SFTCatalog *catalog)
Create a list of timestamps from an SFTCatalog.
Definition: SFTfunctions.c:849
INT4Vector * existingSFTs(const REAL4VectorAligned *tfdata, const UINT4 numffts)
Determine if the SFTs are existing based on whether the first data point of power in each SFT is 0.
REAL4VectorAligned * coherentlyAddSFTs(const MultiSFTVector *multiSFTvector, const MultiSSBtimes *multissb, const MultiAMCoeffs *multiAMcoeffs, const LIGOTimeGPSVector *jointTimestamps, const REAL4VectorAlignedArray *backgroundRatio, const INT4 cosiSign, const assumeNSparams *NSparams, const UserInput_t *params, REAL4VectorAligned *backgroundScaling)
Add SFTs together from a MultiSFTVector.
Definition: SFTfunctions.c:147
double REAL8
uint32_t UINT4
int32_t INT4
A vector of COMPLEX8FrequencySeries.
This structure contains all information about the center-of-mass positions of the Earth and Sun,...
A vector of 'timestamps' of type LIGOTimeGPS.
Definition: SFTfileIO.h:188
Multi-IFO container for antenna-pattern coefficients and atenna-pattern matrix .
Definition: LALComputeAM.h:137
array of detectors definitions 'LALDetector'
A collection of (multi-IFO) LIGOTimeGPSVector time-stamps vectors.
Definition: SFTfileIO.h:198
A collection of SFT vectors – one for each IFO in a multi-IFO search.
Definition: SFTfileIO.h:179
Multi-IFO container for SSB timings.
Definition: SSBtimes.h:67
Type defining the parameters of a pulsar-source of CW Gravitational waves.
An "SFT-catalogue": a vector of SFTdescriptors, as returned by XLALSFTdataFind()
Definition: SFTfileIO.h:238
REAL8 * assumeNSpsi
Definition: SFTfunctions.h:35
REAL8 * assumeNScosi
Definition: SFTfunctions.h:34
LIGOTimeGPS * assumeNSorbitTp
Definition: SFTfunctions.h:39
LIGOTimeGPS * assumeNSrefTime
Definition: SFTfunctions.h:40
REAL8 * assumeNSasini
Definition: SFTfunctions.h:38
SkyPosition assumeNSpos
Definition: SFTfunctions.h:33
REAL8 * assumeNSGWfreq
Definition: SFTfunctions.h:36
REAL8 * assumeNSorbitP
Definition: SFTfunctions.h:37