LALInspiral 5.0.3.1-eeff03c
LALInspiralAmplitudeCorrectedWave.c
Go to the documentation of this file.
1/*
2* Copyright (C) 2007 Duncan Brown, David McKechan, Thomas Cokelaer
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/**
21 * \author Cokelaer T, McKechan D
22 * \file
23 *
24 * \brief The code \c LALInspiralAmplitudeCorrectedWave generates an time-domain inspiral waveform corresponding to the
25 * \c approximant \c TaylorT1 and \c PadeT1 as outlined in the
26 * documentation for the function \c LALInspiralWave.
27 *
28 * ### Prototypes ###
29 *
30 * <tt>LALInspiralAmplitudeCorrectedWave()</tt>
31 * <ul>
32 * <li> \c signalvec: Output containing the inspiral waveform.</li>
33 * <li> \c params: Input containing binary chirp parameters.</li>
34 * </ul>
35 *
36 * <tt>LALInspiralAmplitudeCorrectedWaveTemplates()</tt>
37 * <ul>
38 * <li> \c signalvec1: Output containing the 0-phase inspiral waveform.</li>
39 * <li> \c signalvec2: Output containing the \f$\pi/2\f$-phase inspiral waveform.</li>
40 * <li> \c params: Input containing binary chirp parameters.</li>
41 * </ul>
42 *
43 * ### Description ###
44 *
45 * \c LALInspiralAmplitudeCorrectedWave is called if the user has specified the
46 * \c enum \c approximant to be
47 * either \c TaylorT1 or \c PadeT1.
48 * \c LALInspiralAmplitudeCorrectedWaveTemplates is exactly the same as <tt>LALInspiralAmplitudeCorrectedWave,</tt> except that
49 * it generates two templates one for which the starting phase is
50 * <tt>params.startPhase</tt> and the other for which the phase is
51 * <tt>params.startPhase + \f$\pi/2\f$</tt>.
52 *
53 * ### Algorithm ###
54 *
55 * This code uses a fourth-order Runge-Kutta algorithm to solve the ODEs
56 * in \eqref{eq_ode2}.
57 *
58 * ### Uses ###
59 *
60 * \c LALInspiralSetup\\
61 * \c LALInspiralChooseModel\\
62 * \c LALInspiralVelocity\\
63 * \c LALInspiralPhasing1\\
64 * \c LALInspiralDerivatives\\
65 * \c LALRungeKutta4.
66 *
67 * ### Notes ###
68 *
69 */
70
71/*
72 Interface routine needed to generate time-domain T- or a P-approximant
73 waveforms by solving the ODEs using a 4th order Runge-Kutta; April 5, 00.
74*/
75#include <math.h>
76#include <lal/LALInspiral.h>
77#include <lal/LALStdlib.h>
78#include <lal/Units.h>
79#include <lal/SeqFactories.h>
80#include <lal/GenerateInspiral.h>
81#include <lal/GeneratePPNInspiral.h>
82#include <lal/DetResponse.h>
83#include <lal/LIGOMetadataInspiralUtils.h>
84
85#ifdef __GNUC__
86#define UNUSED __attribute__ ((unused))
87#else
88#define UNUSED
89#endif
90
91static void
94 REAL4Vector *signalvec1,
95 REAL4Vector *signalvec2,
97 REAL4Vector *ff,
98 REAL8Vector *phi,
99 INT4 *countback,
101 );
102
103void
106 REAL4Vector *signalvec,
108 )
109 {
110
111 INT4 count;
112
115
116 ASSERT(signalvec, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
117 ASSERT(signalvec->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
118
119 /* Initially the waveform is empty*/
120 memset(signalvec->data, 0, signalvec->length*sizeof(REAL4));
121
122 /*Call the engine function*/
123 LALInspiralAmplitudeCorrectedWaveEngine(status->statusPtr, signalvec, NULL, NULL, NULL, NULL, &count, params);
125
127 RETURN (status);
128}
129
130void
133 REAL4Vector *signalvec1,
134 REAL4Vector *signalvec2,
136 )
137 {
138
139 INT4 count;
140
143
144 ASSERT(signalvec1, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
145 ASSERT(signalvec2, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
146 ASSERT(signalvec1->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
147 ASSERT(signalvec2->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
148
149 /* Initially the waveforms are empty */
150 memset(signalvec1->data, 0, signalvec1->length * sizeof(REAL4));
151 memset(signalvec2->data, 0, signalvec2->length * sizeof(REAL4));
152
153 /* Call the engine function */
154 LALInspiralAmplitudeCorrectedWaveEngine(status->statusPtr, signalvec1, signalvec2, NULL, NULL, NULL, &count, params);
156
158 RETURN (status);
159}
160
161/*
162 Interface routine needed to generate time-domain T- or a P-approximant
163 waveforms for injection packages T.Cokelaer sept 2003
164*/
165
166void
169 CoherentGW *waveform,
171 PPNParamStruc *ppnParams
172 )
173{
174
175 INT4 count, i;
176 REAL8 p, phiC;
177
178 REAL4Vector a; /* pointers to generated amplitude data */
179 REAL4Vector ff; /* pointers to generated frequency data */
180 REAL8Vector phi; /* generated phase data */
181
183
184 CHAR message[256];
185
186 InspiralInit paramsInit;
187
190
191 /* Make sure parameter and waveform structures exist. */
192 ASSERT( params, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL );
193 ASSERT(waveform, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
194 ASSERT( !( waveform->a ), status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL );
195 ASSERT( !( waveform->f ), status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL );
196 ASSERT( !( waveform->phi ), status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL );
197
198 /* Compute some parameters*/
199 LALInspiralInit(status->statusPtr, params, &paramsInit);
201
202 if (paramsInit.nbins == 0){
204 RETURN (status);
205 }
206
207 /* Now we can allocate memory and vector for coherentGW structure*/
208
209 ff.length = paramsInit.nbins;
210 a.length = 2* paramsInit.nbins;
211 phi.length = paramsInit.nbins;
212
213 ff.data = (REAL4 *) LALCalloc(paramsInit.nbins, sizeof(REAL4));
214 a.data = (REAL4 *) LALCalloc(2 * paramsInit.nbins, sizeof(REAL4));
215 phi.data= (REAL8 *) LALCalloc(paramsInit.nbins, sizeof(REAL8));
216
217 /* Check momory allocation is okay */
218 if (!(ff.data) || !(a.data) || !(phi.data))
219 {
220 if (ff.data) LALFree(ff.data);
221 if (a.data) LALFree(a.data);
222 if (phi.data) LALFree(phi.data);
223
224
225 ABORT( status, LALINSPIRALH_EMEM, LALINSPIRALH_MSGEMEM );
226 }
227
228 count = 0;
229
230 /* Call the engine function */
231 LALInspiralAmplitudeCorrectedWaveEngine(status->statusPtr, NULL, NULL, &a, &ff, &phi, &count, params);
233 {
234 LALFree(ff.data);
235 LALFree(a.data);
236 LALFree(phi.data);
237 }
238 ENDFAIL( status );
239
240 p = phi.data[count-1];
241
242 params->fFinal = ff.data[count-1];
243 sprintf(message, "cycles = %f", p/(double)LAL_TWOPI);
244 LALInfo(status, message);
245
246 if ( (INT4)(p/LAL_TWOPI) < 2 ){
247 sprintf(message, "The waveform has only %f cycles; we don't keep waveform with less than 2 cycles.",
248 p/(double)LAL_TWOPI );
249 XLALPrintError("%s", message);
250 LALWarning(status, message);
251 }
252
253 /*wrap the phase vector*/
254 phiC = phi.data[count-1] ;
255 for (i = 0; i < count; i++)
256 {
257 phi.data[i] = phi.data[i] - phiC + ppnParams->phi;
258 }
259
260 /* Allocate the waveform structures. */
261 if ( ( waveform->a = (REAL4TimeVectorSeries *)
262 LALCalloc(1, sizeof(REAL4TimeVectorSeries) ) ) == NULL ) {
264 LALINSPIRALH_MSGEMEM );
265 }
266 if ( ( waveform->f = (REAL4TimeSeries *)
267 LALCalloc(1, sizeof(REAL4TimeSeries) ) ) == NULL ) {
268 LALFree( waveform->a ); waveform->a = NULL;
270 LALINSPIRALH_MSGEMEM );
271 }
272 if ( ( waveform->phi = (REAL8TimeSeries *)
273 LALCalloc(1, sizeof(REAL8TimeSeries) ) ) == NULL ) {
274 LALFree( waveform->a ); waveform->a = NULL;
275 LALFree( waveform->f ); waveform->f = NULL;
277 LALINSPIRALH_MSGEMEM );
278 }
279
280
281 in.length = (UINT4)(count);
282 in.vectorLength = 2;
283
284 LALSCreateVectorSequence( status->statusPtr, &( waveform->h->data ), &in );
286
287 LALSCreateVectorSequence( status->statusPtr, &( waveform->a->data ), &in );
289
290 LALSCreateVector( status->statusPtr, &( waveform->f->data ), count);
292
293 LALDCreateVector( status->statusPtr, &( waveform->phi->data ), count );
295
296 memcpy(waveform->f->data->data , ff.data, count*(sizeof(REAL4)));
297 memcpy(waveform->h->data->data , a.data, 2*count*(sizeof(REAL4)));
298 memcpy(waveform->a->data->data , a.data, 2*count*(sizeof(REAL4)));
299 memcpy(waveform->phi->data->data ,phi.data, count*(sizeof(REAL8)));
300
301 waveform->a->deltaT = waveform->f->deltaT = waveform->phi->deltaT = waveform->h->deltaT
302 = ppnParams->deltaT;
303
304 waveform->a->sampleUnits = lalStrainUnit;
305 waveform->f->sampleUnits = lalHertzUnit;
307 waveform->position = ppnParams->position;
308 waveform->psi = ppnParams->psi;
309
310 snprintf( waveform->a->name, LALNameLength, "T1 inspiral amplitude" );
311 snprintf( waveform->f->name, LALNameLength, "T1 inspiral frequency" );
312 snprintf( waveform->phi->name, LALNameLength, "T1 inspiral phase" );
313
314 /* --- fill some output ---*/
315 ppnParams->tc = (double)(count-1) / params->tSampling ;
316 ppnParams->length = count;
317 ppnParams->dfdt = ((REAL4)(waveform->f->data->data[count-1]
318 - waveform->f->data->data[count-2]))
319 * ppnParams->deltaT;
320 ppnParams->fStop = params->fFinal;
322 ppnParams->termDescription = GENERATEPPNINSPIRALH_MSGEFSTOP;
323
324 ppnParams->fStart = ppnParams->fStartIn;
325
326 /* --- free memory --- */
327 LALFree(ff.data);
328 LALFree(a.data);
329 LALFree(phi.data);
330
332 RETURN (status);
333}
334
335/*
336 * Engine function for use by other LALInspiralAmplitudeCorrectedWave* functions
337 * Craig Robinson April 2005
338 */
339
340void
343 REAL4Vector *signalvec1,
344 REAL4Vector *signalvec2,
345 REAL4Vector *a,
346 REAL4Vector UNUSED *ff,
347 REAL8Vector UNUSED *phi,
348 INT4 *countback,
350{
351 PPNParamStruc ppnParams;
352 CoherentGW waveform;
353 INT4 i, count;
354 REAL8 dt;
355 REAL8 mTot = 0;
356 REAL8 UNUSED unitHz = 0;
357 REAL8 mu = 0;
358 REAL8 cosI = 0;/* cosine of system inclination */
359 REAL8 etab = 0;
360 REAL8 fFac = 0; /* SI normalization for f and t */
361 REAL8 UNUSED f2aFac = 0;/* factor multiplying f in amplitude function */
362 REAL8 UNUSED apFac = 0, acFac = 0;/* extra factor in plus and cross amplitudes */
363
364 REAL4 hPlus, hCross;
365 double fPlus, fCross;
366
367 /* LALDetector det;
368 InterferometerNumber ifoNumber = LAL_UNKNOWN_IFO;
369 REAL4 longitude,latitude,polarization,gmst;
370*/
373
374 ASSERT (params, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
375 ASSERT (params->nStartPad >= 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
376 ASSERT (params->nEndPad >= 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
377 ASSERT (params->fLower > 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
378 ASSERT (params->tSampling > 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
379
380
381 /* First, we compute the fplus and fcross*/
382/* memset( &det, 0, sizeof(LALDetector));
383 ifoNumber = XLALIFONumber("H1");
384 XLALReturnDetector(&det, ifoNumber);
385 longitude = 0.4;
386 latitude = 0.4;
387 gmst = 0.4;
388 XLALComputeDetAMResponse(&fPlus, &fCross, det.response, longitude, latitude, params->polarisationAngle, gmst);
389 */
390 /* For overhead injection, we just need to compute these 2 expresions for fplus and fcross */
391 fPlus = cos(2.*params->polarisationAngle);
392 fCross = sin(2.*params->polarisationAngle);
393
394 dt = 1./params->tSampling;
395
396 /* some values to be used to compute h(t)*/
397 {
398 mTot = params->mass1 + params->mass2;
399 etab = params->mass1 * params->mass2;
400 etab /= mTot;
401 etab /= mTot;
402 unitHz = mTot *LAL_MTSUN_SI*(REAL8)LAL_PI;
403 /*cosI and the following parameters are probably useless. apFac and acFac
404 * are computed within GeneratePPNAmpCor*/
405 cosI = cos( params->inclination );
406 mu = etab * mTot;
407 fFac = 1.0 / ( 4.0*LAL_TWOPI*LAL_MTSUN_SI*mTot );
408 f2aFac = LAL_PI*LAL_MTSUN_SI*mTot*fFac;
409 apFac = acFac = -2.0 * mu * LAL_MRSUN_SI/params->distance;
410 apFac *= 1.0 + cosI*cosI;
411 acFac *= 2.0*cosI;
412 params->nStartPad = 0;
413 }
414
415 /* this parameters are not used in GeneratePPNAmp*/
416 ppnParams.position.latitude = ppnParams.position.longitude = 0.;
418 ppnParams.psi = 0.0;
419 ppnParams.lengthIn = 0.0;
420
421 /* The following fields are used by GeneratePPNAmpCor function */
422 /* Variable Parameters */
423 ppnParams.mTot = mTot;
424 ppnParams.eta = etab;
425 ppnParams.d = LAL_PC_SI*1.0e3;
426 ppnParams.inc = params->inclination;
427 /* GeneratePPN does not set the starting phase.*/
428 ppnParams.phi = params->startPhase;
429 ppnParams.fStartIn = params->fLower;
430 /* set to zero so that GeneratePPNAmp recomputes the flso*/
431 ppnParams.fStopIn = 0.;
432 ppnParams.ppn = NULL;
433 ppnParams.ampOrder = params->ampOrder;
434 /* set ther PN order of the flux */
435 LALSCreateVector( status->statusPtr, &(ppnParams.ppn), params->order + 1 );
436 ppnParams.ppn->data[0] = 1.0;
437 if ( params->order > 0 )
438 ppnParams.ppn->data[1] = 0.0;
439 for ( i = 2; i <= (INT4)( params->order ); i++ )
440 ppnParams.ppn->data[i] = 1.0;
441 ppnParams.fStopIn = 0;
442 ppnParams.deltaT = dt;
443
444
445 count = 0;
446 if (signalvec2) {
447 params->nStartPad = 0;
448 } /* for template genera memset( &waveform, 0, sizeof(CoherentGW) );
449tion, that value must be zero*/
450 else if (signalvec1) {
451 count = params->nStartPad;
452 }
453
454 memset( &waveform, 0, sizeof(CoherentGW) );
455 LALGeneratePPNAmpCorInspiral( status->statusPtr, &waveform, &ppnParams );
456
457
458
459
460
461 count = 0;
462 for (i=0;i<(INT4)waveform.h->data->length; i++)
463 {
464 /* Non-injection case */
465 if (signalvec1)
466 {
467 /* For amplitude corrected waveforms, we do not want only h+ or only hx but F+h+ + FxHx*/
468 hPlus = (REAL4) waveform.h->data->data[2*i];
469 hCross = (REAL4) waveform.h->data->data[2*i+1];
470 *(signalvec1->data + count) = fPlus * hPlus + fCross * hCross;
471 /* todo: add an Abort if signalvec2<>0*/
472 if (signalvec2)
473 {
474 *(signalvec2->data + count) = (REAL4) waveform.h->data->data[2*i+1];
475 }
476 }
477
478 /* Injection case */
479 else if (a)
480 {
481 #if 0
482 omega = v*v*v;
483 ff->data[count] = (REAL4)(omega/unitHz);
484 f2a = pow (f2aFac * omega, 2./3.);
485 /* waveform->a does not exist. Only waveform->h is populated within
486 GeneratePPNAmpCorr function.
487 */
488 a->data[2*count] = (REAL4) waveform.a->data->data[count];
489 a->data[2*count+1] = (REAL4) waveform.a->data->data[count];
490 phi->data[count] = (REAL8) waveform.phi->data->data[count];
491 #endif
492 }
493
494 count++;
495 }
496
497
498 params->tC = count*dt;
499
500 /* The final frequency needs to take into account the amplitude corrected order */
501 params->fFinal = waveform.f->data->data[count-1] * (params->ampOrder+2.)/2.;
502
503
504 *countback = count;
505
506 /* destroy the waveform signal */
507 if ( waveform.a ){
508 LALSDestroyVectorSequence( status->statusPtr, &(waveform.a->data) );
510 LALFree( waveform.a );
511 }
512 if ( waveform.shift )
513 {
514 LALSDestroyVector( status->statusPtr, &(waveform.shift->data) );
516 LALFree( waveform.shift );
517 }
518
519 if ( waveform.f ){
520 LALSDestroyVector( status->statusPtr, &(waveform.f->data) );
522 LALFree( waveform.f );
523 }
524
525 if ( waveform.phi ){
526 LALDDestroyVector( status->statusPtr, &(waveform.phi->data) );
528 LALFree( waveform.phi );
529 }
530
531 if ( waveform.h ){
532 LALSDestroyVectorSequence( status->statusPtr, &(waveform.h->data) );
534 LALFree( waveform.h );
535 }
536
537
539 RETURN (status);
540
541}
void LALInspiralInit(LALStatus *status, InspiralTemplate *params, InspiralInit *paramsInit)
void LALInspiralAmplitudeCorrectedWaveForInjection(LALStatus *status, CoherentGW *waveform, InspiralTemplate *params, PPNParamStruc *ppnParams)
static void LALInspiralAmplitudeCorrectedWaveEngine(LALStatus *status, REAL4Vector *signalvec1, REAL4Vector *signalvec2, REAL4Vector *a, REAL4Vector *ff, REAL8Vector *phi, INT4 *countback, InspiralTemplate *params)
void LALInspiralAmplitudeCorrectedWave(LALStatus *status, REAL4Vector *signalvec, InspiralTemplate *params)
void LALInspiralAmplitudeCorrectedWaveTemplates(LALStatus *status, REAL4Vector *signalvec1, REAL4Vector *signalvec2, InspiralTemplate *params)
#define LALCalloc(m, n)
#define LALFree(p)
#define ABORT(statusptr, code, mesg)
#define CHECKSTATUSPTR(statusptr)
#define ENDFAIL(statusptr)
#define ATTATCHSTATUSPTR(statusptr)
#define ASSERT(assertion, statusptr, code, mesg)
#define DETATCHSTATUSPTR(statusptr)
#define INITSTATUS(statusptr)
#define RETURN(statusptr)
#define BEGINFAIL(statusptr)
double i
void LALSDestroyVectorSequence(LALStatus *status, REAL4VectorSequence **vectorSequence)
void LALSCreateVectorSequence(LALStatus *status, REAL4VectorSequence **vectorSequence, CreateVectorSequenceIn *vSeqParams)
#define GENERATEPPNINSPIRALH_EFSTOP
Reached requested termination frequency.
void LALGeneratePPNAmpCorInspiral(LALStatus *stat, CoherentGW *output, PPNParamStruc *params)
Computes a parametrized post-Newtonian inspiral waveform with ampltidude corrections.
#define LAL_PI
#define LAL_TWOPI
#define LAL_MTSUN_SI
#define LAL_PC_SI
#define LAL_MRSUN_SI
double REAL8
char CHAR
uint32_t UINT4
int32_t INT4
float REAL4
LALNameLength
int LALWarning(LALStatus *status, const char *warning)
int LALInfo(LALStatus *status, const char *info)
#define LALINSPIRALH_EMEM
Memory allocation error.
Definition: LALInspiral.h:57
#define LALINSPIRALH_ENULL
Arguments contained an unexpected null pointer.
Definition: LALInspiral.h:56
#define LALINSPIRALH_ESIZE
Invalid input range.
Definition: LALInspiral.h:59
static const INT4 a
COORDINATESYSTEM_EQUATORIAL
const LALUnit lalStrainUnit
const LALUnit lalHertzUnit
const LALUnit lalDimensionlessUnit
void LALDCreateVector(LALStatus *, REAL8Vector **, UINT4)
void LALDDestroyVector(LALStatus *, REAL8Vector **)
void LALSDestroyVector(LALStatus *, REAL4Vector **)
void LALSCreateVector(LALStatus *, REAL4Vector **, UINT4)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
list mu
p
REAL4TimeSeries * shift
SkyPosition position
REAL4TimeVectorSeries * a
REAL8TimeSeries * phi
REAL4TimeVectorSeries * h
REAL4TimeSeries * f
The inspiral waveform parameter structure containing information about the waveform to be generated.
Definition: LALInspiral.h:205
This structure stores the parameters for constructing a restricted post-Newtonian waveform.
REAL4 fStopIn
The requested termination frequency of the waveform, in Hz; If set to 0, the waveform will be generat...
REAL4Vector * ppn
The parameters selecting the type of post-Newtonian expansion; If ppn=NULL, a "normal" (physical) ex...
const CHAR * termDescription
The termination code description (above)
INT4 termCode
The termination condition (above) that stopped computation of the waveform.
REAL4 dfdt
The maximum value of encountered over any timestep used in generating the waveform.
REAL4 phi
The phase at coalescence (or arbitrary reference phase for a post -Newtonian approximation),...
REAL4 psi
polarization angle (radians)
REAL4 fStart
The actual starting frequency of the waveform, in Hz (normally close but not identical to fStartIn)
INT4 ampOrder
PN amplitude selection 0-5.
SkyPosition position
location of source on sky
UINT4 length
The length of the generated waveform.
REAL4 fStop
The frequency at the termination of the waveform, in Hz.
REAL4 eta
The mass ratio of the binary system; Physically this parameter must lie in the range ; values outsid...
REAL8 tc
The time from the start of the waveform to coalescence (in the point-mass approximation),...
REAL4 mTot
The total mass of the binary system, in solar masses.
REAL4 fStartIn
The requested starting frequency of the waveform, in Hz.
REAL8 deltaT
The requested sampling interval of the waveform, in s.
REAL4 d
The distance to the system, in metres.
UINT4 lengthIn
The maximum number of samples in the generated waveform; If zero, the waveforms can be arbitrarily lo...
REAL4 inc
The inclination of the system to the line of sight, in radians.
CHAR name[LALNameLength]
REAL4Sequence * data
LALUnit sampleUnits
CHAR name[LALNameLength]
REAL4VectorSequence * data
REAL4 * data
REAL8Sequence * data
LALUnit sampleUnits
CHAR name[LALNameLength]
REAL8 * data
REAL8 longitude
REAL8 latitude
CoordinateSystem system
double inclination
double distance