00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127 #include <lal/LALInspiral.h>
00128 #include <lal/LALNoiseModels.h>
00129 #include <lal/LALStdlib.h>
00130 #include <lal/GeneratePPNInspiral.h>
00131
00132 NRCSID (LALINSPIRALWAVEC, "$Id: LALInspiralWave.c,v 1.34 2008/08/13 12:13:04 whelan Exp $");
00133
00134
00135 void
00136 LALInspiralWave(
00137 LALStatus *status,
00138 REAL4Vector *signal,
00139 InspiralTemplate *params
00140 )
00141 {
00142
00143 INITSTATUS(status, "LALInspiralWave", LALINSPIRALWAVEC);
00144 ATTATCHSTATUSPTR(status);
00145
00146 ASSERT (signal, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00147 ASSERT (signal->length >= 2, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00148 ASSERT (signal->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00149 ASSERT (params, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00150
00151
00152 ASSERT((INT4)params->approximant >= 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00153 ASSERT((INT4)params->approximant < NumApproximants, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00154 ASSERT((int)params->order >= 0, status, LALINSPIRALH_EORDER, LALINSPIRALH_MSGEORDER);
00155 ASSERT(params->order <= 8, status, LALINSPIRALH_EORDER, LALINSPIRALH_MSGEORDER);
00156
00157 switch (params->approximant)
00158 {
00159 case TaylorT1:
00160 case PadeT1:
00161 LALInspiralWave1(status->statusPtr, signal, params);
00162 CHECKSTATUSPTR(status);
00163 break;
00164 case TaylorT2:
00165 LALInspiralWave2(status->statusPtr, signal, params);
00166 CHECKSTATUSPTR(status);
00167 break;
00168 case TaylorT3:
00169 LALInspiralWave3(status->statusPtr, signal, params);
00170 CHECKSTATUSPTR(status);
00171 break;
00172 case EOB:
00173 case EOBNR:
00174 LALEOBWaveform(status->statusPtr, signal, params);
00175 CHECKSTATUSPTR(status);
00176 break;
00177 case BCV:
00178 LALBCVWaveform(status->statusPtr, signal, params);
00179 CHECKSTATUSPTR(status);
00180 break;
00181 case BCVSpin:
00182 LALBCVSpinWaveform(status->statusPtr, signal, params);
00183 CHECKSTATUSPTR(status);
00184 break;
00185 case TaylorF1:
00186 LALInspiralStationaryPhaseApprox1(status->statusPtr, signal, params);
00187 CHECKSTATUSPTR(status);
00188 break;
00189 case TaylorF2:
00190 case FindChirpSP:
00191 LALInspiralStationaryPhaseApprox2(status->statusPtr, signal, params);
00192 CHECKSTATUSPTR(status);
00193 break;
00194 case PadeF1:
00195 ABORT(status, LALINSPIRALH_ECHOICE, LALINSPIRALH_MSGECHOICE);
00196 break;
00197 case SpinTaylorT3:
00198 LALInspiralSpinModulatedWave(status->statusPtr, signal, params);
00199 CHECKSTATUSPTR(status);
00200 break;
00201 case SpinTaylor:
00202
00203
00204
00205
00206 LALSTPNWaveform(status->statusPtr, signal, params);
00207 CHECKSTATUSPTR(status);
00208 break;
00209 case AmpCorPPN:
00210 LALInspiralAmplitudeCorrectedWave(status->statusPtr, signal, params);
00211 CHECKSTATUSPTR(status);
00212 break;
00213 case Eccentricity:
00214 LALInspiralEccentricity(status->statusPtr, signal, params);
00215 CHECKSTATUSPTR(status);
00216 break;
00217 default:
00218 ABORT( status, 9999, "Unknown case in switch." );
00219 }
00220
00221 DETATCHSTATUSPTR(status);
00222 RETURN (status);
00223 }
00224
00225
00226 NRCSID (LALINSPIRALWAVETEMPLATESC, "$Id: LALInspiralWave.c,v 1.34 2008/08/13 12:13:04 whelan Exp $");
00227
00228
00229 void
00230 LALInspiralWaveTemplates(
00231 LALStatus *status,
00232 REAL4Vector *signal1,
00233 REAL4Vector *signal2,
00234 InspiralTemplate *params
00235 )
00236 {
00237
00238 INITSTATUS(status, "LALInspiralWaveTemplates", LALINSPIRALWAVETEMPLATESC);
00239 ATTATCHSTATUSPTR(status);
00240
00241 ASSERT (signal1, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00242 ASSERT (signal2, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00243 ASSERT (signal1->length >= 2, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00244 ASSERT (signal2->length >= 2, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00245 ASSERT (signal1->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00246 ASSERT (signal2->data, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00247 ASSERT (params, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00248
00249
00250 ASSERT((INT4)params->approximant >= 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00251 ASSERT((INT4)params->approximant < NumApproximants, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00252 ASSERT((INT4)params->order >= 0, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00253 ASSERT((INT4)params->order <= 8, status, LALINSPIRALH_ESIZE, LALINSPIRALH_MSGESIZE);
00254
00255 switch (params->approximant)
00256 {
00257 case TaylorT1:
00258 case PadeT1:
00259 LALInspiralWave1Templates(status->statusPtr, signal1, signal2, params);
00260 CHECKSTATUSPTR(status);
00261 break;
00262 case TaylorT2:
00263 LALInspiralWave2Templates(status->statusPtr, signal1, signal2, params);
00264 CHECKSTATUSPTR(status);
00265 break;
00266 case TaylorT3:
00267 LALInspiralWave3Templates(status->statusPtr, signal1, signal2, params);
00268 CHECKSTATUSPTR(status);
00269 break;
00270 case EOB:
00271 case EOBNR:
00272 LALEOBWaveformTemplates(status->statusPtr, signal1, signal2, params);
00273 CHECKSTATUSPTR(status);
00274 break;
00275 case TaylorF1:
00276 case TaylorF2:
00277 case FindChirpSP:
00278 case PadeF1:
00279 case BCV:
00280 case BCVSpin:
00281 case SpinTaylor:
00282 LALSTPNWaveformTemplates(status->statusPtr, signal1, signal2, params);
00283 CHECKSTATUSPTR(status);
00284 break;
00285 case AmpCorPPN:
00286 LALInspiralAmplitudeCorrectedWaveTemplates(status->statusPtr, signal1, signal2, params);
00287 CHECKSTATUSPTR(status);
00288 break;
00289 case Eccentricity:
00290 LALInspiralEccentricityTemplates(status->statusPtr, signal1, signal2, params);
00291 CHECKSTATUSPTR(status);
00292 break;
00293 default:
00294 ABORT( status, 9999, "Unknown case in switch." );
00295
00296 }
00297
00298 DETATCHSTATUSPTR(status);
00299 RETURN (status);
00300 }
00301
00302
00303
00304 NRCSID (LALINSPIRALWAVEFORINJECTIONC, "$Id: LALInspiralWave.c,v 1.34 2008/08/13 12:13:04 whelan Exp $");
00305
00306
00307 void
00308 LALInspiralWaveForInjection(
00309 LALStatus *status,
00310 CoherentGW *waveform,
00311 InspiralTemplate *inspiralParams,
00312 PPNParamStruc *ppnParams)
00313 {
00314
00315 INITSTATUS(status, "LALInspiralWaveForInjection", LALINSPIRALWAVEFORINJECTIONC);
00316 ATTATCHSTATUSPTR(status);
00317
00318 ASSERT (inspiralParams, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00319 ASSERT (ppnParams, status, LALINSPIRALH_ENULL, LALINSPIRALH_MSGENULL);
00320
00321
00322 switch (inspiralParams->approximant)
00323 {
00324 case TaylorT1:
00325 case PadeT1:
00326 LALInspiralWave1ForInjection(status->statusPtr, waveform, inspiralParams, ppnParams);
00327 CHECKSTATUSPTR(status);
00328 break;
00329 case TaylorT2:
00330 LALInspiralWave2ForInjection(status->statusPtr, waveform, inspiralParams, ppnParams);
00331 CHECKSTATUSPTR(status);
00332 break;
00333 case TaylorT3:
00334 LALInspiralWave3ForInjection(status->statusPtr, waveform, inspiralParams, ppnParams);
00335 CHECKSTATUSPTR(status);
00336 break;
00337 case EOB:
00338 case EOBNR:
00339 LALEOBWaveformForInjection(status->statusPtr, waveform, inspiralParams, ppnParams);
00340 CHECKSTATUSPTR(status);
00341 break;
00342 case BCV:
00343
00344 case BCVSpin:
00345 case TaylorF1:
00346 case TaylorF2:
00347 case FindChirpSP:
00348 case PadeF1:
00349 ABORT(status, LALINSPIRALH_ECHOICE, LALINSPIRALH_MSGECHOICE);
00350 break;
00351 case SpinTaylor:
00352 LALSTPNWaveformForInjection(status->statusPtr, waveform, inspiralParams, ppnParams);
00353 CHECKSTATUSPTR(status);
00354 break;
00355 case AmpCorPPN:
00356 LALInspiralAmplitudeCorrectedWaveForInjection(status->statusPtr, waveform, inspiralParams, ppnParams);
00357 CHECKSTATUSPTR(status);
00358 break;
00359 default:
00360 ABORT( status, 9999, "Unknown case in switch." );
00361
00362 }
00363
00364 DETATCHSTATUSPTR(status);
00365 RETURN (status);
00366 }
00367