30#include <gsl/gsl_rng.h>
31#include <gsl/gsl_randist.h>
32#include <lal/LALSimBurst.h>
33#include <lal/LALConstants.h>
34#include <lal/FrequencySeries.h>
35#include <lal/Sequence.h>
36#include <lal/TimeFreqFFT.h>
37#include <lal/TimeSeries.h>
38#include <lal/RealFFT.h>
41#include <lal/LALInferenceBurstRoutines.h>
43#define LAL_PI_1_2 1.7724538509055160272981674833411451
44#define LAL_PI_1_4 1.3313353638003897127975349179502808
45#define LAL_4RT2 1.1892071150027210667174999705604759
46#define FRTH_2_Pi 0.8932438417380023314010427521746490
47#define FRTH_2_times_PI 1.5832334870861595385799030344545584
48#define LAL_SQRT_PI 1.7724538509055160272981674833411451
61 *
a = 1.0 / sqrt(2.0 - e2);
62 *b = *
a * sqrt(1.0 - e2);
69 if ( strstr(inString,
"SineGaussianF" ) )
73 else if ( strstr(inString,
"SineGaussian" ) )
77 else if ( strstr(inString,
"GaussianF" ) )
81 else if ( strstr(inString,
"Gaussian" ) )
85 else if ( strstr(inString,
"DampedSinusoidF" ) )
89 else if ( strstr(inString,
"DampedSinusoid" ) )
95 XLALPrintError(
"Cannot parse burst approximant from string: %s \n", inString );
105 if ( strstr(inString,
"Gaussian" ) )
107 else if ( strstr(inString,
"GaussianF" ) )
109 else if ( strstr(inString,
"SineGaussian" ) )
111 else if ( strstr(inString,
"SineGaussianF" ) )
113 else if ( strstr(inString,
"DampedSinusoid" ) )
115 else if ( strstr(inString,
"DampedSinusoidF" ) )
117 else if (strstr(inString,
"RingdownF") )
187 XLALPrintWarning(
"XLAL Warning - %s: Large value of deltaF = %e requested...This corresponds to a very short TD signal (with padding). Consider a smaller value.\n", __func__,
deltaF);
189 XLALPrintWarning(
"XLAL Warning - %s: Small value of deltaF = %e requested...This corresponds to a very long TD signal. Consider a larger value.\n", __func__,
deltaF);
191 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested...Check for errors, this could create a very long waveform.\n", __func__,
f_min);
192 if(
f_min > 40.000001 )
193 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested...Check for errors, the signal will start in band.\n", __func__,
f_min);
228 XLALPrintError(
"FD version of burst approximant not implemented in lalsimulation\n");
263 XLALPrintWarning(
"XLAL Warning - %s: Small value of fmin = %e requested...Check for errors, this could create a very long waveform.\n", __func__,
f_min);
264 if(
f_min > 40.000001 )
265 XLALPrintWarning(
"XLAL Warning - %s: Large value of fmin = %e requested...Check for errors, the signal will start in band.\n", __func__,
f_min);
302 XLALPrintError(
"TD version of burst approximant not implemented in lalsimulation\n");
317 switch (bapproximant)
320 return strdup(
"SineGaussianF");
322 return strdup(
"SineGaussian");
324 return strdup(
"GaussianF");
326 return strdup(
"Gaussian");
328 return strdup(
"DampedSinusoidF");
330 return strdup(
"DampedSinusoid");
385 REAL8 centre_frequency,
400 const double cgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 + eqq);
401 const double sgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 - eqq);
403 double h0plus =
hrss *
a / sqrt(cgsq *
cp*
cp + sgsq * sp*sp);
404 double h0cross =
hrss * b / sqrt(cgsq * sp*sp + sgsq *
cp*
cp);
409 const REAL8 max_sigmas=6.0;
415 length = 2 * length + 1;
424 if(!*hplus || !*hcross) {
427 *hplus = *hcross = NULL;
437 for(
i = 0;
i < (*hplus)->data->length;
i++) {
440 fac = exp(-0.5 * phi * phi / (
Q *
Q));
441 (*hplus)->data->data[
i] = h0plus * fac*cos(phi-phase);
442 (*hcross)->data->data[
i] = h0cross * fac*sin(phi-phase) ;
458 REAL8 centre_frequency,
473 const double cgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 + eqq);
474 const double sgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 - eqq);
476 double h0plus =
hrss *
a / sqrt(cgsq *
cp*
cp + sgsq * sp*sp);
477 double h0cross =
hrss * b / sqrt(cgsq * sp*sp + sgsq *
cp*
cp);
482 const REAL8 max_sigmas=6.0;
486 length = 2 * length + 1;
494 REAL8 sigma= centre_frequency/
Q;
497 REAL8 Fmax=centre_frequency +max_sigmas*sigma;
499 if (Fmax>(1.0/(2.0*
deltaT)))
502 REAL8 Fmin= centre_frequency -max_sigmas*sigma;
504 if (Fmin<0.0 || Fmin >=Fmax)
507 size_t lower =(size_t) ( Fmin/
deltaF);
508 size_t upper= (size_t) ( Fmax/
deltaF+1);
517 if(!hptilde || !hctilde) {
520 hctilde=hptilde = NULL;
535 for(
i = lower;
i < upper;
i++) {
537 phi2minus= (f-centre_frequency )*(f-centre_frequency );
538 ephimin=exp(-phi2minus*tau2pi2);
562 REAL8 centre_frequency,
577 const double cgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 + eqq);
578 const double sgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 - eqq);
580 double h0plus =
hrss *
a / sqrt(cgsq *
cp*
cp + sgsq * sp*sp);
581 double h0cross =
hrss * b / sqrt(cgsq * sp*sp + sgsq *
cp*
cp);
586 const REAL8 max_sigmas=3.0;
590 length = 2 * length + 1;
598 REAL8 sigma= centre_frequency/
Q;
601 REAL8 Fmax=centre_frequency +max_sigmas*sigma;
603 if (Fmax>(1.0/(2.0*
deltaT)))
606 REAL8 Fmin= centre_frequency -max_sigmas*sigma;
608 if (Fmin<0.0 || Fmin >=Fmax)
611 size_t lower =(size_t) ( Fmin/
deltaF);
612 size_t upper= (size_t) ( Fmax/
deltaF+1);
621 if(!hptilde || !hctilde) {
624 hctilde=hptilde = NULL;
639 for(
i = 0;
i < upper;
i++) {
641 phi2minus= (f-centre_frequency )*(f-centre_frequency );
642 ephimin=exp(-phi2minus*tau2pi2);
676 const double hplusrss =
hrss * cos(polarization);
677 const double hcrossrss =
hrss * sin(polarization);
680 const double h0plus = hplusrss /sdur*
FRTH_2_Pi ;
681 const double h0cross = hcrossrss/sdur*
FRTH_2_Pi;
692 length = 2 * length + 1;
701 if(!*hplus || !*hcross) {
704 *hplus = *hcross = NULL;
711 for(
i = 0;
i < (*hplus)->data->length;
i++) {
714 (*hplus)->data->data[
i] = h0plus *fac;
715 (*hcross)->data->data[
i] = h0cross*fac;
738 const double hplusrss =
hrss * cos(phase);
739 const double hcrossrss =
hrss * sin(phase);
753 length = 2 * length + 1;
760 size_t upper= (size_t) ( Fmax/
deltaF+1);
769 if(!hptilde || !hctilde) {
772 hctilde=hptilde = NULL;
780 for(
i = 0;
i < upper;
i++) {
807 REAL8 centre_frequency,
822 const double cgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 + eqq);
823 const double sgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 - eqq);
825 double h0plus =
hrss *
a / sqrt(cgsq *
cp*
cp + sgsq * sp*sp);
826 double h0cross =
hrss * b / sqrt(cgsq * sp*sp + sgsq *
cp*
cp);
831 const REAL8 max_sigmas=12.0;
837 length = 2 * length + 1;
846 if(!*hplus || !*hcross) {
849 *hplus = *hcross = NULL;
859 for(
i = 0;
i < (*hplus)->data->length;
i++) {
862 fac = exp(-0.5 *phi /
Q);
863 (*hplus)->data->data[
i] = h0plus * fac*cos(phi-phase);
864 (*hcross)->data->data[
i] = h0cross * fac*sin(phi-phase) ;
875 REAL8 centre_frequency,
891 const double cgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 + eqq);
892 const double sgsq =
Q / (4.0 * centre_frequency *
LAL_SQRT_PI) * (1.0 - eqq);
894 double h0plus =
hrss *
a / sqrt(cgsq *
cp*
cp + sgsq * sp*sp);
895 double h0cross =
hrss * b / sqrt(cgsq * sp*sp + sgsq *
cp*
cp);
900const REAL8 max_sigmas=12.0;
906length = 2 * length + 1;
911 REAL8 sigma= centre_frequency/
Q;
914 REAL8 Fmax=centre_frequency +max_sigmas*sigma;
916 if (Fmax>(1.0/(2.0*
deltaT)))
919 REAL8 Fmin= centre_frequency -max_sigmas*sigma;
921 if (Fmin<0.0 || Fmin >=Fmax)
924 size_t lower =(size_t) ( Fmin/
deltaF);
925 size_t upper= (size_t) ( Fmax/
deltaF+1);
934 if(!hptilde || !hctilde) {
937 hctilde=hptilde = NULL;
949 double lambda=
LAL_PI*centre_frequency/
Q;
952 double omega2=twopif*twopif;
953 for(
i = lower;
i < upper;
i++) {
988#include <lal/FrequencySeries.h>
989#include <lal/TimeSeries.h>
1079 return XLALSimBurstChooseTDWaveform(hplus, hcross,
deltaT,f0,
q,tau,
f_min,
f_max,
hrss,polar_angle,polar_ecc,extraParams,
approximant);
1082 changedParams =
CacheArgsDifferenceBitmask(
cache,
deltaT,
deltaF,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1091 if (*hcross == NULL) {
1101 if( (changedParams &
INTRINSIC) != 0 ) {
1102 status =
XLALSimBurstChooseTDWaveform(hplus, hcross,
deltaT,f0,
q,tau,
f_min,
f_max,
hrss,polar_angle,polar_ecc,extraParams,
approximant);
1106 return StoreTDHCache(
cache, *hplus, *hcross,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1110 if(
cache->hplus == NULL ||
cache->hcross == NULL) {
1111 status =
XLALSimBurstChooseTDWaveform(hplus, hcross,
deltaT,f0,
q,tau,
f_min,
f_max,
hrss,polar_angle,polar_ecc,extraParams,
approximant);
1113 return StoreTDHCache(
cache, *hplus, *hcross,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1120 if( changedParams &
HRSS ) {
1128 cache->hplus->deltaT, &(
cache->hplus->sampleUnits),
1133 cache->hcross->deltaT, &(
cache->hcross->sampleUnits),
1135 if (*hcross == NULL) {
1141 (*hplus)->data->data[
j] = hrss_ratio
1142 * (
cache->hplus->data->data[
j]);
1143 (*hcross)->data->data[
j] = hrss_ratio
1144 *
cache->hcross->data->data[
j];
1185 return XLALSimBurstChooseFDWaveform(hptilde, hctilde,
deltaF,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1189 changedParams =
CacheArgsDifferenceBitmask(
cache,
deltaT,
deltaF,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1198 if (*hctilde == NULL) {
1208 if( (changedParams &
INTRINSIC) != 0 ) {
1209 status =
XLALSimBurstChooseFDWaveform(hptilde, hctilde,
deltaF,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1212 return StoreFDHCache(
cache, *hptilde, *hctilde,
deltaF,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1215 if(
cache->hptilde == NULL ||
cache->hctilde == NULL) {
1216 status =
XLALSimBurstChooseFDWaveform(hptilde, hctilde,
deltaF,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1219 return StoreFDHCache(
cache, *hptilde, *hctilde,
deltaF,
deltaT,f0,
q, tau,
f_min,
f_max,
hrss,polar_angle, polar_ecc,extraParams,
approximant);
1226 if( changedParams &
HRSS ) {
1233 &(
cache->hptilde->epoch),
cache->hptilde->f0,
1234 cache->hptilde->deltaF, &(
cache->hptilde->sampleUnits),
1239 &(
cache->hctilde->epoch),
cache->hctilde->f0,
1240 cache->hctilde->deltaF, &(
cache->hctilde->sampleUnits),
1242 if (*hctilde == NULL) {
1249 (*hptilde)->data->data[
j] = hrss_ratio
1250 *
cache->hptilde->data->data[
j];
1251 (*hctilde)->data->data[
j] = hrss_ratio
1252 *
cache->hctilde->data->data[
j];
1277 if (
cache != NULL) {
1347 if (
cache->hptilde != NULL) {
1349 cache->hptilde = NULL;
1352 if (
cache->hctilde != NULL) {
1354 cache->hctilde = NULL;
1365 cache->polar_angle =polar_angle;
1366 cache->polar_ecc = polar_ecc;
1367 if (extraParams==NULL)
1368 cache->extraParams=NULL;
1385 if (
cache->hcross == NULL) {
1387 cache->hplus = NULL;
1413 if (
cache->hplus != NULL) {
1415 cache->hplus = NULL;
1418 if (
cache->hcross != NULL) {
1420 cache->hcross = NULL;
1432 cache->polar_angle =polar_angle;
1433 cache->polar_ecc = polar_ecc;
1434 if (extraParams==NULL)
1435 cache->extraParams=NULL;
1455 if (
cache->hctilde == NULL) {
1457 cache->hptilde = NULL;
1498 memcpy(parameter->
data->name,
name, 32);
1499 parameter->
data->value = value;
1501 parameter->
next=NULL;
1517 if (*parameter==NULL)
1531 temp->next = newParam;
1535 XLALPrintError(
"XLAL Error - %s: parameter '%s' exists already! Not added to the structure\n",
1558 if(!strcmp(parameter->
data->name,
name)) parameter->
data->value = value;
1559 parameter=parameter->
next;
1584 if(!strcmp(parameter->
data->name,
name))
return parameter->
data->value;
1585 parameter=parameter->
next;
1606 if(!parameter)
return 0;
1607 while(parameter) {
if(!strcmp(parameter->
data->name,
name))
return 1;
else parameter=parameter->
next;}
1617 if (parameter!=NULL)
1622 parameter=parameter->
next;
1628 XLALPrintError(
"XLAL Error - %s: parameter not allocated!\n", __func__);
1640 tmp=parameter->
next;
int XLALSimBurstImplementedTDApproximants(BurstApproximant approximant)
char * XLALGetStringFromBurstApproximant(BurstApproximant bapproximant)
XLAL function to determine string from approximant enum.
int XLALInferenceBurstSineGaussianF(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, REAL8 Q, REAL8 centre_frequency, REAL8 hrss, REAL8 eccentricity, REAL8 phase, REAL8 deltaF, REAL8 deltaT)
double XLALSimBurstGetExtraParam(const LALSimBurstExtraParam *parameter, const char *name)
Function that returns the value of the desired parameters in the extra burst parameters linked list.
static CacheVariableDiffersBitmask CacheArgsDifferenceBitmask(LALSimBurstWaveformCache *cache, REAL8 deltaT, REAL8 deltaF, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant)
Function to compare the requested arguments to those stored in the cache, returns a bitmask which det...
int XLALInferenceBurstGaussianF(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, REAL8 duration, REAL8 hrss, REAL8 phase, REAL8 deltaF, REAL8 deltaT)
CacheVariableDiffersBitmask
Bitmask enumerating which parameters have changed, to determine if the requested waveform can be tran...
int XLALSimBurstChooseFDWaveform(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 deltaF, REAL8 deltaT, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant)
int XLALGetBurstApproximantFromString(const CHAR *inString)
XLAL function to determine burst approximant from a string.
static int StoreTDHCache(LALSimBurstWaveformCache *cache, REAL8TimeSeries *hplus, REAL8TimeSeries *hcross, REAL8 deltaT, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant)
Store the output TD hplus and hcross in the cache.
LALSimBurstWaveformCache * XLALCreateSimBurstWaveformCache(void)
Construct and initialize a waveform cache.
static void semi_major_minor_from_e(double e, double *a, double *b)
int XLALSimBurstChooseTDWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 deltaT, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant)
int XLALSimBurstChooseFDWaveformFromCache(COMPLEX16FrequencySeries **hptilde, COMPLEX16FrequencySeries **hctilde, REAL8 deltaF, REAL8 deltaT, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant, LALSimBurstWaveformCache *cache)
Chooses between different approximants when requesting a waveform to be generated Returns the wavefor...
void XLALSimBurstDestroyExtraParam(LALSimBurstExtraParam *parameter)
Function that destroys the whole burst extra params linked list.
void XLALDestroySimBurstWaveformCache(LALSimBurstWaveformCache *cache)
Destroy a waveform cache.
int XLALInferenceBurstGaussian(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 duration, REAL8 hrss, REAL8 eccentricity, REAL8 polarization, REAL8 delta_t)
int XLALInferenceBurstDampedSinusoid(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 Q, REAL8 centre_frequency, REAL8 hrss, REAL8 eccentricity, REAL8 phase, REAL8 delta_t)
int XLALInferenceBurstSineGaussianFFast(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, REAL8 Q, REAL8 centre_frequency, REAL8 hrss, REAL8 eccentricity, REAL8 phase, REAL8 deltaF, REAL8 deltaT)
int XLALSimBurstPrintExtraParam(FILE *fp, LALSimBurstExtraParam *parameter)
Function that prints the whole test burst extra parameters linked list.
int XLALSimBurstSetExtraParam(LALSimBurstExtraParam *parameter, const char *name, const double value)
Function that sets the value of the desired parameter in the extra burst parameters linked list to 'v...
int XLALSimBurstChooseTDWaveformFromCache(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 deltaT, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant, LALSimBurstWaveformCache *cache)
Chooses between different approximants when requesting a waveform to be generated Returns the wavefor...
int XLALInferenceBurstDampedSinusoidF(COMPLEX16FrequencySeries **hplus, COMPLEX16FrequencySeries **hcross, REAL8 Q, REAL8 centre_frequency, REAL8 hrss, REAL8 eccentricity, REAL8 phase, REAL8 deltaF, REAL8 deltaT)
int XLALSimBurstAddExtraParam(LALSimBurstExtraParam **parameter, const char *name, double value)
Function that adds a parameter to the test GR parameters linked list.
int XLALSimBurstImplementedFDApproximants(BurstApproximant approximant)
Checks whether the given approximant is implemented in lalsimulation's XLALSimInspiralChooseFDWavefor...
LALSimBurstExtraParam * XLALSimBurstCreateExtraParam(const char *name, double value)
Function that creates the head node of the test GR parameters linked list.
static int StoreFDHCache(LALSimBurstWaveformCache *cache, COMPLEX16FrequencySeries *hptilde, COMPLEX16FrequencySeries *hctilde, REAL8 deltaF, REAL8 deltaT, REAL8 f0, REAL8 q, REAL8 tau, REAL8 f_min, REAL8 f_max, REAL8 hrss, REAL8 polar_angle, REAL8 polar_ecc, LALSimBurstExtraParam *extraParams, BurstApproximant approximant)
Store the output FD hptilde and hctilde in cache.
int XLALSimBurstExtraParamExists(const LALSimBurstExtraParam *parameter, const char *name)
Function that checks whether the requested parameter exists within the burst extra parameters linked ...
int XLALCheckBurstApproximantFromString(const CHAR *inString)
int XLALInferenceBurstSineGaussian(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, REAL8 Q, REAL8 centre_frequency, REAL8 hrss, REAL8 eccentricity, REAL8 phase, REAL8 delta_t)
Input:
BurstApproximant
Enum that specifies the PN approximant to be used in computing the waveform.
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
COMPLEX16FrequencySeries * XLALCutCOMPLEX16FrequencySeries(const COMPLEX16FrequencySeries *series, size_t first, size_t length)
void XLALDestroyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
void * XLALMalloc(size_t n)
void * XLALCalloc(size_t m, size_t n)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
REAL8TimeSeries * XLALCutREAL8TimeSeries(const REAL8TimeSeries *series, size_t first, size_t length)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
const LALUnit lalStrainUnit
#define XLAL_ERROR_NULL(...)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
int int XLALPrintWarning(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
LIGOTimeGPS * XLALGPSSetREAL8(LIGOTimeGPS *epoch, REAL8 t)