22 #ifndef _UNIVERSALDOPPLERMETRIC_H
23 #define _UNIVERSALDOPPLERMETRIC_H
45 #include <gsl/gsl_block.h>
46 #include <gsl/gsl_vector.h>
47 #include <gsl/gsl_matrix.h>
48 #include <gsl/gsl_linalg.h>
49 #include <gsl/gsl_blas.h>
50 #include <gsl/gsl_integration.h>
52 #include <lal/LALDatatypes.h>
53 #include <lal/LALBarycenter.h>
54 #include <lal/XLALGSL.h>
55 #include <lal/DetectorStates.h>
56 #include <lal/SFTfileIO.h>
57 #include <lal/Segments.h>
68 typedef struct tagvect2Dlist_t {
77 typedef struct tagvect3Dlist_t {
87 typedef struct tagPosVel3D_t {
94 typedef enum tagDetectorMotionType {
110 typedef enum tagDopplerCoordinateID {
166 #define DOPPLERMETRIC_MAX_DIM 60
171 typedef struct tagDopplerCoordinateSystem {
179 typedef struct tagDopplerMetricParams {
201 typedef struct tagFmetricAtoms_t {
222 typedef struct tagDopplerFstatMetric {
241 typedef struct tagDopplerPhaseMetric {
int XLALDetectorPosVel(PosVel3D_t *spin_posvel, PosVel3D_t *orbit_posvel, const LIGOTimeGPS *tGPS, const LALDetector *site, const EphemerisData *edat, DetectorMotionType detMotionType)
Given a GPS time and detector, return the current position (and velocity) of the detector.
int XLALDopplerCoordinateNames2System(DopplerCoordinateSystem *coordSys, const LALStringVector *coordNames)
Given a LALStringVector of coordinate-names, parse them into a 'DopplerCoordinateSystem',...
const CHAR * XLALDetectorMotionName(DetectorMotionType detMotionType)
Provide a pointer to a static string containing the DopplerCoordinate-name cooresponding to the enum ...
REAL8 vect3D_t[3]
3D vector
DopplerCoordinateID
enum listing symbolic 'names' for all Doppler Coordinates supported by the metric codes in FstatMetri...
CHAR * XLALDopplerCoordinateHelpAll(void)
Return a string (allocated here) containing a full name - helpstring listing for all doppler-coordina...
void XLALDestroyFmetricAtoms(FmetricAtoms_t *atoms)
Free a FmetricAtoms_t structure, allowing any pointers to be NULL.
DetectorMotionType
Bitfield of different types of detector-motion to use in order to compute the Doppler-metric.
void XLALeclipticVect2equatorial(vect3D_t out, const vect3D_t in)
Convert 3-D vector from ecliptic into equatorial coordinates.
REAL8 XLALComputePhaseDerivative(REAL8 t, const PulsarDopplerParams *dopplerPoint, DopplerCoordinateID coordID, const EphemerisData *edat, const LALDetector *site, BOOLEAN includeRoemer)
FmetricAtoms_t * XLALComputeAtomsForFmetric(const DopplerMetricParams *metricParams, const EphemerisData *edat)
Function to the compute the FmetricAtoms_t, from which the F-metric and Fisher-matrix can be computed...
int XLALFindDopplerCoordinateInSystem(const DopplerCoordinateSystem *coordSys, const DopplerCoordinateID coordID)
Given a coordinate ID 'coordID', return its dimension within the given coordinate system 'coordSys',...
void XLALDestroyDopplerFstatMetric(DopplerFstatMetric *metric)
Free a DopplerFstatMetric structure.
const CHAR * XLALDopplerCoordinateHelp(DopplerCoordinateID coordID)
Provide a pointer to a static string containing the a descriptive 'help-string' describing the coordi...
REAL8 vect2D_t[2]
2D vector
void XLALmatrix33_in_vect3(vect3D_t out, mat33_t mat, const vect3D_t in)
compute matrix product mat .
void XLALDestroyDopplerPhaseMetric(DopplerPhaseMetric *metric)
Free a DopplerPhaseMetric structure.
REAL8 mat33_t[3][3]
3x3 matrix, useful for spatial 3D vector operations
const CHAR * XLALDopplerCoordinateName(DopplerCoordinateID coordID)
Provide a pointer to a static string containing the DopplerCoordinate-name cooresponding to the enum ...
#define DOPPLERMETRIC_MAX_DIM
should be large enough for a long time ...
void XLALequatorialVect2ecliptic(vect3D_t out, const vect3D_t in)
Convert 3-D vector from equatorial into ecliptic coordinates.
vect3Dlist_t * XLALComputeOrbitalDerivatives(UINT4 maxorder, const LIGOTimeGPS *tGPS, const EphemerisData *edat)
Compute time-derivatives up to 'maxorder' of the Earths' orbital position vector .
int XLALParseDetectorMotionString(const CHAR *detMotionString)
Parse a detector-motion type string into the corresponding enum-number,.
DopplerFstatMetric * XLALComputeDopplerFstatMetric(const DopplerMetricParams *metricParams, const EphemerisData *edat)
Calculate the general (single-segment coherent, or multi-segment semi-coherent) full (multi-IFO) Fsta...
int XLALPtolemaicPosVel(PosVel3D_t *posvel, const LIGOTimeGPS *tGPS)
Compute position and velocity assuming a purely "Ptolemaic" orbital motion (i.e.
void XLALDestroyVect3Dlist(vect3Dlist_t *list)
int XLALParseDopplerCoordinateString(const CHAR *coordName)
Parse a DopplerCoordinate-name into the corresponding DopplerCoordinateID.
DopplerPhaseMetric * XLALComputeDopplerPhaseMetric(const DopplerMetricParams *metricParams, const EphemerisData *edat)
Calculate an approximate "phase-metric" with the specified parameters.
@ DOPPLERCOORD_N3SX_EQU
X spin-component of unconstrained super-sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_N2X_ECL
X component of contrained sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_ETA
Lagrange parameter 'eta = ecc * sin(argp) of binary orbit (ELL1 model) [Units: none].
@ DOPPLERCOORD_N3X_ECL
X component of unconstrained super-sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_KAPPA
Lagrange parameter 'kappa = ecc * cos(argp)', ('ecc' = eccentricity, 'argp' = argument of periapse) o...
@ DOPPLERCOORD_TASC
Time of ascension (neutron star crosses line of nodes moving away from observer) for binary orbit (EL...
@ DOPPLERCOORD_N3X_EQU
X component of unconstrained super-sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_N3OY_ECL
Y orbit-component of unconstrained super-sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_ETAP
Rescaled (by asini) differential-coordinate 'detap = asini * deta' [Units: light seconds].
@ DOPPLERCOORD_KAPPAP
Rescaled (by asini) differential-coordinate 'dkappap = asini * dkappa' [Units: light seconds].
@ DOPPLERCOORD_ASINI
Projected semimajor axis of binary orbit in small-eccentricy limit (ELL1 model) [Units: light seconds...
@ DOPPLERCOORD_N3Z_EQU
Z component of unconstrained super-sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_GC_NU4
Global correlation fourth spindown [Units: Hz/s^4].
@ DOPPLERCOORD_F2DOT
Second spindown [Units: Hz/s^2].
@ DOPPLERCOORD_DASC
Distance traversed on the arc of binary orbit (ELL1 model) 'dasc = 2 * pi * (ap/porb) * tasc' [Units:...
@ DOPPLERCOORD_N2X_EQU
X component of contrained sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_DELTA
Declination [Units: radians].
@ DOPPLERCOORD_N2Y_ECL
Y component of contrained sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_GC_NU1
Global correlation first spindown [Units: Hz/s].
@ DOPPLERCOORD_GC_NU0
Global correlation frequency [Units: Hz].
@ DOPPLERCOORD_N3OZ_ECL
Z orbit-component of unconstrained super-sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_N3Y_EQU
Y component of unconstrained super-sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_F1DOT
First spindown [Units: Hz/s].
@ DOPPLERCOORD_N2Y_EQU
Y component of contrained sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_F4DOT
Fourth spindown [Units: Hz/s^4].
@ DOPPLERCOORD_GC_NU2
Global correlation second spindown [Units: Hz/s^2].
@ DOPPLERCOORD_GC_NU3
Global correlation third spindown [Units: Hz/s^3].
@ DOPPLERCOORD_ALPHA
Right ascension [Units: radians].
@ DOPPLERCOORD_NONE
No Doppler component.
@ DOPPLERCOORD_VP
Rescaled (by asini) differential-coordinate 'dvp = asini * dOMEGA', ('OMEGA' = 2 * pi/'porb') of bina...
@ DOPPLERCOORD_N3Y_ECL
Y component of unconstrained super-sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_PORB
Period of binary orbit (ELL1 model) [Units: s].
@ DOPPLERCOORD_F3DOT
Third spindown [Units: Hz/s^3].
@ DOPPLERCOORD_N3OX_ECL
X orbit-component of unconstrained super-sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_N3Z_ECL
Z component of unconstrained super-sky position in ecliptic coordinates [Units: none].
@ DOPPLERCOORD_N3SY_EQU
Y spin-component of unconstrained super-sky position in equatorial coordinates [Units: none].
@ DOPPLERCOORD_FREQ
Frequency [Units: Hz].
@ DETMOTION_SPIN
Full spin motion.
@ DETMOTION_MASKSPIN
Mask for spin motion bits.
@ DETMOTION_PTOLEORBIT
Ptolemaic (circular) orbital motion.
@ DETMOTION_SPINXY
Ecliptic-X+Y components of spin motion only.
@ DETMOTION_MASKORBIT
Mask for orbital motion bits.
@ DETMOTION_SPINZ
Ecliptic-Z component of spin motion only.
@ DETMOTION_ORBIT
Ephemeris-based orbital motion.
type describing a Doppler coordinate system: lists the number of dimensions and the symbolic names of...
UINT4 dim
number of dimensions covered
Struct to hold the output of XLALComputeDopplerFstatMetric(), including meta-info on the number of di...
double maxrelerr
estimate for largest relative error in Fmetric component integrations
gsl_matrix * gFav_ij
'average' Fstat-metric
gsl_matrix * gF_ij
full F-statistic metric gF_ij, including antenna-pattern effects (see )
DopplerMetricParams meta
"meta-info" describing/specifying the type of Doppler metric
REAL8 rho2
signal SNR rho^2 = A^mu M_mu_nu A^nu
gsl_matrix * Fisher_ab
Full 4+n dimensional Fisher matrix, ie amplitude + Doppler space.
meta-info specifying a Doppler-metric
MultiLALDetector multiIFO
detectors to compute metric for
DetectorMotionType detMotionType
the type of detector-motion assumed: full spin+orbit, pure orbital, Ptole, ...
BOOLEAN approxPhase
use an approximate phase-model, neglecting Roemer delay in spindown coordinates
PulsarParams signalParams
parameter-space point to compute metric for (doppler + amplitudes)
INT4 projectCoord
project metric onto subspace orthogonal to this axis (-1 = none, 0 = 1st coordinate,...
LALSegList segmentList
segment list: Nseg segments of the form (startGPS endGPS numSFTs)
MultiNoiseFloor multiNoiseFloor
and associated per-detector noise-floors to be used for weighting.
DopplerCoordinateSystem coordSys
number of dimensions and coordinate-IDs of Doppler-metric
Struct to hold the output of XLALComputeDopplerPhaseMetric(), including meta-info on the number of di...
double maxrelerr
estimate for largest relative error in phase-metric component integrations
gsl_matrix * g_ij
symmetric matrix holding the phase-metric, averaged over segments
DopplerMetricParams meta
"meta-info" describing/specifying the type of Doppler metric
This structure contains all information about the center-of-mass positions of the Earth and Sun,...
Struct to hold the 'atoms', ie weighted phase-derivative averages like from which the F-metric is co...
double maxrelerr
estimate for largest relative error in metric component integrations
array of detectors definitions 'LALDetector'
array of detector-specific 'noise floors' (ie PSD values), assumed constant over the frequency-band o...
Small Container to hold two 3D vectors: position and velocity.
Type containing the 'Doppler-parameters' affecting the time-evolution of the phase.
Type defining the parameters of a pulsar-source of CW Gravitational waves.
variable-length list of 2D-vectors
UINT4 length
number of elements
vect2D_t * data
array of 2D vectors
variable-length list of 3D vectors
vect3D_t * data
array of 3D vectors
UINT4 length
number of elements