24#include <lal/LALStdlib.h>
25#include <lal/LALConstants.h>
26#include <lal/LALDetectors.h>
27#include <lal/LALString.h>
28#include <lal/LALDict.h>
29#include <lal/LALDictSequence.h>
32#include <lal/AVFactories.h>
33#include <lal/StringVector.h>
34#include <lal/LALSimulation.h>
35#include <lal/LALSimInspiral.h>
36#include <lal/H5FileIO.h>
37#include <lal/LALSimInspiralWaveformParams.h>
38#include <lal/LALSimInspiralInjection.h>
41#define UNUSED __attribute__ ((unused))
52 static const char *map[][2] = {
53 {
"mass1_det",
"mass1" },
54 {
"mass2_det",
"mass2" },
55 {
"d_lum",
"distance" },
56 {
"f22_ref_spin",
"f22_ref" },
57 {
"coa_phase",
"phi_ref" },
58 {
"cbc_model",
"approximant" },
60 int to = inverse ? 0 : 1;
61 int from = inverse ? 1 : 0;
63 if (strcmp(key, map[
i][from]) == 0)
70 if (strcmp(key,
"mass1") == 0)
72 else if (strcmp(key,
"mass2") == 0)
74 else if (strcmp(key,
"distance") == 0)
85 LALDictSequence *injseq = NULL;
126 for (
size_t pos = 0; pos < npar; ++pos) {
145 if (injseq == NULL) {
148 }
else if (ninj != injseq->length)
151 key = strrchr(
name,
'/');
152 key = key ? key + 1:
name;
159 for (
size_t i = 0;
i < strvec->
length; ++
i) {
161 if (!strlen(strvec->
data[
i]))
163 if (strcmp(key,
"ModeArray") == 0) {
177 for (
size_t i = 0;
i < intvec->
length; ++
i) {
189 for (
size_t i = 0;
i < dblvec->
length; ++
i) {
191 if (!isfinite(dblvec->
data[
i]))
231 LALDict *types = (LALDict *)thunk;
243 LALDict *types = NULL;
256 for (
size_t i = 0;
i < injseq->length; ++
i)
271 for (
size_t i = 0;
i < injseq->length; ++
i)
272 if (strcmp(key,
"ModeArray") == 0) {
291 for (
size_t i = 0;
i < injseq->length; ++
i)
301 for (
size_t i = 0;
i < injseq->length; ++
i)
340 REAL8 t_co_gps_add = 0.0;
417 LALDict *dict1 = *(LALDict **)(uintptr_t)
a;
418 LALDict *dict2 = *(LALDict **)(uintptr_t)b;
429 LALDict *dict = *(LALDict **)(uintptr_t)
a;
439 LALDict *dict1 = *(LALDict **)(uintptr_t)
a;
440 LALDict *dict2 = *(LALDict **)(uintptr_t)b;
451 LALDict *dict = *(LALDict **)(uintptr_t)
a;
520 LALDictSequence *
new = NULL;
521 LALDictSequence *tmp;
565 LALSimInspiralGenerator *generator = NULL;
626 REAL8 t_co_gps_add = 0.0;
struct tagLALH5File LALH5File
struct tagLALH5Dataset LALH5Dataset
int XLALDictContains(const LALDict *dict, const char *key)
LALDictEntry * XLALDictIterNext(LALDictIter *iter)
LALDictEntry * XLALDictLookup(const LALDict *dict, const char *key)
char * XLALDictPopStringValue(LALDict *dict, const char *key)
const char * XLALDictLookupStringValue(const LALDict *dict, const char *key)
int XLALDictRemove(LALDict *dict, const char *key)
void XLALDestroyDict(LALDict *dict)
LALDict * XLALDictDuplicate(const LALDict *orig)
LALDict * XLALCreateDict(void)
void XLALDictIterInit(LALDictIter *iter, LALDict *dict)
const char * XLALDictEntryGetKey(const LALDictEntry *entry)
int XLALDictInsertStringValue(LALDict *dict, const char *key, const char *string)
const LALValue * XLALDictEntryGetValue(const LALDictEntry *entry)
void XLALDictForeach(LALDict *dict, void(*func)(char *, LALValue *, void *), void *thunk)
REAL8 XLALDictLookupREAL8Value(const LALDict *dict, const char *key)
int XLALDictInsertINT4Value(LALDict *dict, const char *key, INT4 value)
int XLALDictInsertREAL8Value(LALDict *dict, const char *key, REAL8 value)
INT4 XLALDictLookupINT4Value(const LALDict *dict, const char *key)
void XLALDestroyDictSequence(LALDictSequence *sequence)
LALDictSequence * XLALCopyDictSequence(const LALDictSequence *sequence)
LALDictSequence * XLALResizeDictSequence(LALDictSequence *sequence, int first, size_t length)
LALDictSequence * XLALCreateDictSequence(size_t length)
REAL8 XLALSimInspiralChirpTimeBound(REAL8 fstart, REAL8 m1, REAL8 m2, REAL8 s1, REAL8 s2)
Routine to compute an overestimate of the inspiral time from a given frequency.
REAL8 XLALSimInspiralMergeTimeBound(REAL8 m1, REAL8 m2)
Routine to compute an overestimate of the merger time.
REAL8 XLALSimInspiralRingdownTimeBound(REAL8 M, REAL8 s)
Routine to compute an overestimate of the ringdown time.
REAL8 XLALSimInspiralFinalBlackHoleSpinBound(REAL8 S1z, REAL8 S2z)
Routine to compute an overestimate of a final black hole dimensionless spin.
int XLALSimInspiralGetApproximantFromString(const char *waveform)
Parses a waveform string to determine approximant.
int XLALSimInspiralGeneratorAddConditioningForApproximant(LALSimInspiralGenerator *generator, int approximant)
LIGOTimeGPS * XLALSimInspiralInjectionEndTime(LIGOTimeGPS *epoch, LALDict *injparams)
static int XLALSimInspiralParamsCompareStartTimeToGPSTime(void *thunk UNUSED, const void *a, const void *b)
static const char file_format_attr_val[]
static void XLALSimInspiralDictInsertParameterType(char *key, LALValue *value, void *thunk)
static const char cbc_waveform_params_group[]
LALDictSequence * XLALSimInspiralInjectionSequenceFromH5File(const char *fname)
int XLALSimInspiralInjectionSequenceToH5File(const LALDictSequence *injseq, const char *fname)
int XLALSimInspiralInjectionTDWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, LALDict *injparams, REAL8 deltaT)
static const char file_format_attr_key[]
static int XLALSimInspiralParamsCompareStartTime(void *thunk UNUSED, const void *a, const void *b)
static int XLALSimInspiralParamsCompareEndTimeToGPSTime(void *thunk UNUSED, const void *a, const void *b)
static int XLALSimInspiralParamsCompareEndTime(void *thunk UNUSED, const void *a, const void *b)
int XLALSimInspiralInjectionSequenceIsStartTimeOrdered(LALDictSequence *injseq)
int XLALSimInspiralInjectionSequenceOrderByStartTime(LALDictSequence *injseq)
static const char * translate_key(const char *key, int inverse)
LIGOTimeGPS * XLALSimInspiralInjectionStartTime(LIGOTimeGPS *epoch, LALDict *injparams)
LALDictSequence * XLALSimInspiralInjectionSequenceInInterval(const LALDictSequence *injseq, const LIGOTimeGPS *start, const LIGOTimeGPS *end)
int XLALSimInspiralInjectionSequenceOrderByEndTime(LALDictSequence *injseq)
REAL8TimeSeries * XLALSimInspiralInjectionStrain(LALDict *injparams, REAL8 deltaT, const LALDetector *detector)
static double si_scale_factor(const char *key)
int XLALSimInspiralInjectionSequenceIsEndTimeOrdered(LALDictSequence *injseq)
void XLALDestroyValue(LALValue *value)
LALValue * XLALValueDuplicate(const LALValue *value)
LALTYPECODE XLALValueGetType(const LALValue *value)
INT4 XLALValueGetINT4(const LALValue *value)
void XLALH5FileClose(LALH5File UNUSED *file)
size_t XLALH5DatasetQueryNPoints(LALH5Dataset UNUSED *dset)
void XLALH5DatasetFree(LALH5Dataset UNUSED *dset)
size_t XLALH5FileQueryNDatasets(const LALH5File UNUSED *file)
int XLALH5AttributeAddString(LALH5Generic UNUSED object, const char UNUSED *key, const char UNUSED *value)
LALH5File * XLALH5GroupOpen(LALH5File UNUSED *file, const char UNUSED *name)
int XLALH5AttributeQueryStringValue(char UNUSED *value, size_t UNUSED size, const LALH5Generic UNUSED object, const char UNUSED *key)
int XLALH5FileQueryDatasetName(char UNUSED *name, size_t UNUSED size, const LALH5File UNUSED *file, int UNUSED pos)
LALTYPECODE XLALH5DatasetQueryType(LALH5Dataset UNUSED *dset)
LALH5File * XLALH5FileOpen(const char UNUSED *path, const char UNUSED *mode)
size_t XLALH5AttributeCheckExists(const LALH5Generic UNUSED object, const char UNUSED *name)
LALH5Dataset * XLALH5DatasetRead(LALH5File UNUSED *file, const char UNUSED *name)
LALH5Dataset * XLALH5DatasetAllocREAL8Vector(LALH5File *file, const char *name, REAL8Vector *vector)
INT4Vector * XLALH5DatasetReadINT4Vector(LALH5Dataset *dset)
LALStringVector * XLALH5DatasetReadStringVector(LALH5Dataset *dset)
LALH5Dataset * XLALH5DatasetAllocINT4Vector(LALH5File *file, const char *name, INT4Vector *vector)
REAL8Vector * XLALH5DatasetReadREAL8Vector(LALH5Dataset *dset)
LALH5Dataset * XLALH5DatasetAllocStringVector(LALH5File *file, const char *name, LALStringVector *vector)
void * XLALMalloc(size_t n)
int XLALSimInspiralGenerateTDWaveform(REAL8TimeSeries **hplus, REAL8TimeSeries **hcross, LALDict *params, LALSimInspiralGenerator *generator)
Returns time-domain polarizations for a specific approximant.
LALSimInspiralGenerator * XLALSimInspiralChooseGenerator(Approximant approx, LALDict *params)
Returns LALSimInspiralGenerator object from approximant.
void XLALDestroySimInspiralGenerator(LALSimInspiralGenerator *generator)
Destroy LALSimInspiralGenerator object.
Approximant
Enum that specifies the PN approximant to be used in computing the waveform.
REAL8TimeSeries * XLALSimDetectorStrainREAL8TimeSeries(const REAL8TimeSeries *hplus, const REAL8TimeSeries *hcross, REAL8 right_ascension, REAL8 declination, REAL8 psi, const LALDetector *detector)
Transforms the waveform polarizations into a detector strain.
char char * XLALStringDuplicate(const char *s)
int XLALMergeSort(void *base, size_t nobj, size_t size, void *params, int(*compar)(void *, const void *, const void *))
int XLALIsSorted(void *base, size_t nobj, size_t size, void *params, int(*compar)(void *, const void *, const void *))
ssize_t XLALSearchSorted(const void *key, const void *base, size_t nobj, size_t size, void *params, int(*compar)(void *, const void *, const void *), int side)
void XLALDestroyStringVector(LALStringVector *vect)
LALStringVector * XLALCreateEmptyStringVector(UINT4 length)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
INT4Vector * XLALCreateINT4Vector(UINT4 length)
void XLALDestroyINT4Vector(INT4Vector *vector)
REAL8Vector * XLALCreateREAL8Vector(UINT4 length)
void XLALDestroyREAL8Vector(REAL8Vector *vector)
int XLALGetBaseErrno(void)
#define XLAL_CHECK(assertion,...)
#define XLAL_CHECK_VAL(val, assertion,...)
int XLALSetErrno(int errnum)
#define XLAL_PRINT_WARNING(...)
#define XLAL_CHECK_FAIL(assertion,...)
#define XLAL_CHECK_NULL(assertion,...)
#define XLAL_ERROR_FAIL(...)
#define XLAL_IS_REAL8_FAIL_NAN(val)
LIGOTimeGPS * XLALGPSSetREAL8(LIGOTimeGPS *epoch, REAL8 t)
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
int XLALGPSCmp(const LIGOTimeGPS *t0, const LIGOTimeGPS *t1)