22#include <lal/LALStdio.h>
23#include <lal/LALStdlib.h>
24#include <lal/LALConstants.h>
27#include <lal/AVFactories.h>
28#include <lal/SeqFactories.h>
29#include <lal/VectorOps.h>
31#include <lal/SimulateCoherentGW.h>
33#include <lal/LIGOMetadataTables.h>
34#include <lal/RealFFT.h>
35#include <lal/TimeFreqFFT.h>
38#define UNUSED __attribute__ ((unused))
73 LALTimeInterval dummyInterval;
81 GENERATERINGH_MSGENUL );
83 GENERATERINGH_MSGENUL );
87 GENERATERINGH_MSGEOUT );
89 GENERATERINGH_MSGEOUT );
91 GENERATERINGH_MSGEOUT );
93 GENERATERINGH_MSGEOUT );
107 init_phase = simRingdown->
phase;
184 memset(
output->phi->data->data, 0,
sizeof(
REAL8 ) *
output->phi->data->length );
185 memset(
output->a->data->data, 0,
sizeof(
REAL4 ) *
186 output->a->data->length *
output->a->data->vectorLength );
189 fData =
output->f->data->data;
190 phiData =
output->phi->data->data;
191 aData =
output->a->data->data;
193 if ( !( strcmp( simRingdown->
waveform,
"Ringdown" ) ) )
195 for (
i = 0;
i < nPointInj;
i++ )
198 gtime = twopif0 / 2 / quality *
t ;
200 *(phiData++) = twopif0 *
t+init_phase;
201 *(aData++) =
h0 * ( 1.0 + pow( cos( simRingdown->
inclination ), 2 ) ) *
203 *(aData++) =
h0* 2.0 * cos( simRingdown->
inclination ) * exp( - gtime );
244 injStartTime =
series->epoch.gpsSeconds - 10;
262 transfer->
f0 = resp->
f0;
282 "waveform with no time delay" );
301 unity->
data[
k] = 1.0;
326 while ( simRingdown )
332 simRingdown = simRingdown->
next;
338 if( !( strcmp( simRingdown->
coordinates,
"HORIZON" ) ) )
342 else if ( !( strcmp( simRingdown->
coordinates,
"ZENITH" ) ) )
348 else if ( !( strcmp( simRingdown->
coordinates,
"GEOGRAPHIC" ) ) )
352 else if ( !( strcmp( simRingdown->
coordinates,
"EQUATORIAL" ) ) )
356 else if ( !( strcmp( simRingdown->
coordinates,
"ECLIPTIC" ) ) )
360 else if ( !( strcmp( simRingdown->
coordinates,
"GALACTIC" ) ) )
377 UINT4 jj, kplus, kcross;
379 "waveform-%d-%d-%s.txt",
385 for( jj = 0, kplus = 0, kcross = 1; jj <
waveform.phi->data->length;
386 ++jj, kplus += 2, kcross +=2 )
398 fprintf( stderr,
"a->epoch->gpsSeconds = %d\na->epoch->gpsNanoSeconds = %d\n",
400 fprintf( stderr,
"phi->epoch->gpsSeconds = %d\nphi->epoch->gpsNanoSeconds = %d\n",
402 fprintf( stderr,
"f->epoch->gpsSeconds = %d\nf->epoch->gpsNanoSeconds = %d\n",
428 "signal-%d-%d-%s.txt",
434 for( jj = 0; jj < signalvec.
data->
length; ++jj )
442 fprintf( stderr,
"series.epoch->gpsSeconds = %d\nseries.epoch->gpsNanoSeconds = %d\n",
443 series->epoch.gpsSeconds,
series->epoch.gpsNanoSeconds );
444 fprintf( stderr,
"signalvec->epoch->gpsSeconds = %d\nsignalvec->epoch->gpsNanoSeconds = %d\n",
470 simRingdown = simRingdown->
next;
#define ABORT(statusptr, code, mesg)
#define CHECKSTATUSPTR(statusptr)
#define ENDFAIL(statusptr)
#define TRY(func, statusptr)
#define ATTATCHSTATUSPTR(statusptr)
#define ASSERT(assertion, statusptr, code, mesg)
#define DETATCHSTATUSPTR(statusptr)
#define INITSTATUS(statusptr)
#define RETURN(statusptr)
#define BEGINFAIL(statusptr)
void LALSimulateCoherentGW(LALStatus *status, REAL4TimeSeries *output, CoherentGW *input, DetectorResponse *detector)
void LALSDestroyVectorSequence(LALStatus *status, REAL4VectorSequence **vectorSequence)
void LALSCreateVectorSequence(LALStatus *status, REAL4VectorSequence **vectorSequence, CreateVectorSequenceIn *vSeqParams)
REAL4TimeSeries * XLALRespFilt(REAL4TimeSeries *strain, COMPLEX8FrequencySeries *transfer)
const LALDetector lalCachedDetectors[LAL_NUM_DETECTORS]
#define GENERATERINGH_EOUT
Output field a, f, phi, or shift already exists.
#define GENERATERINGH_ENUL
Unexpected null pointer in arguments.
#define GENERATERINGH_EMEM
Out of memory.
void LALGenerateRing(LALStatus *stat, CoherentGW *output, REAL4TimeSeries UNUSED *series, SimRingdownTable *simRingdown, RingParamStruc *params)
void LALRingInjectSignals(LALStatus *stat, REAL4TimeSeries *series, SimRingdownTable *injections, COMPLEX8FrequencySeries *resp, INT4 calType)
#define GENERATERINGH_ETYP
Waveform type not implemented.
void LALSSInjectTimeSeries(LALStatus *, REAL4TimeSeries *output, REAL4TimeSeries *signalvec)
int LALWarning(LALStatus *status, const char *warning)
COORDINATESYSTEM_GALACTIC
COORDINATESYSTEM_ECLIPTIC
COORDINATESYSTEM_GEOGRAPHIC
COORDINATESYSTEM_EQUATORIAL
const LALUnit lalStrainUnit
const LALUnit lalADCCountUnit
const LALUnit lalHertzUnit
const LALUnit lalDimensionlessUnit
LALUnit * XLALUnitDivide(LALUnit *output, const LALUnit *unit1, const LALUnit *unit2)
void LALCCreateVector(LALStatus *, COMPLEX8Vector **, UINT4)
void LALDCreateVector(LALStatus *, REAL8Vector **, UINT4)
void LALCDestroyVector(LALStatus *, COMPLEX8Vector **)
void LALDDestroyVector(LALStatus *, REAL8Vector **)
void LALSDestroyVector(LALStatus *, REAL4Vector **)
void LALSCreateVector(LALStatus *, REAL4Vector **, UINT4)
void LALCCVectorDivide(LALStatus *status, COMPLEX8Vector *out, const COMPLEX8Vector *in1, const COMPLEX8Vector *in2)
SimInspiralTable * injections
This structure stores the parameters for constructing a burst gravitational waveform.
REAL8 deltaT
requested sampling interval (s)
CoordinateSystem system
coordinate system to assume for simRingdown
CHAR waveform[LIGOMETA_WAVEFORM_MAX]
struct tagSimRingdownTable * next
LIGOTimeGPS geocent_start_time
CHAR coordinates[LIGOMETA_COORDINATES_MAX]
int output(const char *outfile, int outtype, REAL4TimeSeries *series)