23 #include <gsl/gsl_rng.h>
24 #include <gsl/gsl_randist.h>
27 #include <lal/LALConstants.h>
28 #include <lal/LALStdlib.h>
29 #include <lal/FrequencySeries.h>
30 #include <lal/Sequence.h>
31 #include <lal/TimeSeries.h>
32 #include <lal/TimeFreqFFT.h>
33 #include <lal/Units.h>
34 #include <lal/LALSimNoise.h>
63 for (k = 0; k <
s->data->length/2 + 1; ++k) {
65 stilde->
data->
data[k] = gsl_ran_gaussian_ziggurat(rng,
sigma);
66 stilde->
data->
data[k] += I * gsl_ran_gaussian_ziggurat(rng,
sigma);
156 rng = gsl_rng_alloc(gsl_rng_default);
161 || (
size_t)floor(0.5 + 1.0/(
s->deltaT * psd->
deltaF)) !=
s->data->length)
165 if (stride >
s->data->length)
171 }
else if (stride ==
s->data->length) {
181 memcpy(overlap->
data,
s->data->data + stride, overlap->
length*
sizeof(*overlap->
data));
187 for (j = 0; j < overlap->
length; ++j) {
190 s->data->data[j] =
x*overlap->
data[j] +
y*
s->data->data[j];
211 void mkligodata(
void)
213 const double flow = 40.0;
215 const double srate = 16384.0;
217 size_t stride = length / 2;
223 rng = gsl_rng_alloc(gsl_rng_default);
231 for (j = 0; j < stride; ++j)
245 const double recdur = 1024.0;
246 const double segdur = 8.0;
247 const double srate = 4096.0;
248 const double flow = 9.0;
257 double deltaF = 1.0 /
segdur;
258 size_t reclen = recdur *
srate;
260 size_t stride = seglen / 2;
261 size_t numseg = 1 + (reclen - seglen)/stride;
262 size_t klow =
flow / deltaF;
266 if (reclen != (numseg - 1)*stride + seglen) {
267 fprintf(stderr,
"warning: numseg, seglen, reclen, and stride not commensurate\n");
268 reclen = (numseg - 1)*stride + seglen;
271 rng = gsl_rng_alloc(gsl_rng_default);
278 fp = fopen(
"psd1.dat",
"w");
279 for (k = klow; k < psd->
data->
length - 1; ++k)
283 for (
i = 0;
i < numseg; ++
i) {
290 fp = fopen(
"noise.dat",
"w");
302 fp = fopen(
"psd2.dat",
"w");
303 for (k = klow; k < psd->
data->
length - 1; ++k)
void LALCheckMemoryLeaks(void)
static double sigma(const double a, const double b, const sysq *system)
Internal function that computes the spin-spin couplings.
static int XLALSimNoiseSegment(REAL8TimeSeries *s, REAL8FrequencySeries *psd, gsl_rng *rng)
int main(int argc, char *argv[])
REAL8FrequencySeries * XLALCreateREAL8FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
COMPLEX16FrequencySeries * XLALCreateCOMPLEX16FrequencySeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaF, const LALUnit *sampleUnits, size_t length)
void XLALDestroyREAL8FrequencySeries(REAL8FrequencySeries *series)
void XLALDestroyCOMPLEX16FrequencySeries(COMPLEX16FrequencySeries *series)
int XLALSimNoise(REAL8TimeSeries *s, size_t stride, REAL8FrequencySeries *psd, gsl_rng *rng)
Routine that may be used to generate sequential segments of data with a specified stride from one seg...
int XLALSimNoisePSD(REAL8FrequencySeries *psd, double flow, double(*psdfunc)(double))
Evaluates a power spectral density function, psdfunc, at the frequencies required to populate the fre...
double XLALSimNoisePSDaLIGOHighFrequency(double f)
Provides the noise power spectrum for aLIGO under the configuration tuned to narrow-band high-frequen...
double XLALSimNoisePSDiLIGOSRD(double f)
Provides the noise power spectrum based on a phenomenological fit to the SRD curve for iLIGO.
void XLALDestroyREAL8FFTPlan(REAL8FFTPlan *plan)
REAL8FFTPlan * XLALCreateReverseREAL8FFTPlan(UINT4 size, int measurelvl)
REAL8FFTPlan * XLALCreateForwardREAL8FFTPlan(UINT4 size, int measurelvl)
void XLALDestroyREAL8Sequence(REAL8Sequence *sequence)
REAL8Sequence * XLALCreateREAL8Sequence(size_t length)
int XLALREAL8AverageSpectrumWelch(REAL8FrequencySeries *spectrum, const REAL8TimeSeries *tseries, UINT4 seglen, UINT4 stride, const REAL8Window *window, const REAL8FFTPlan *plan)
int XLALREAL8FreqTimeFFT(REAL8TimeSeries *tser, const COMPLEX16FrequencySeries *freq, const REAL8FFTPlan *plan)
REAL8TimeSeries * XLALCreateREAL8TimeSeries(const CHAR *name, const LIGOTimeGPS *epoch, REAL8 f0, REAL8 deltaT, const LALUnit *sampleUnits, size_t length)
void XLALDestroyREAL8TimeSeries(REAL8TimeSeries *series)
const LALUnit lalStrainUnit
const LALUnit lalSecondUnit
const LALUnit lalDimensionlessUnit
LALUnit * XLALUnitMultiply(LALUnit *output, const LALUnit *unit1, const LALUnit *unit2)
LALUnit * XLALUnitSqrt(LALUnit *output, const LALUnit *input)
void XLALDestroyREAL8Window(REAL8Window *window)
REAL8Window * XLALCreateHannREAL8Window(UINT4 length)
void XLALAbortErrorHandler(const char *func, const char *file, int line, int errnum)
XLALErrorHandlerType * XLALSetErrorHandler(XLALErrorHandlerType *newHandler)
LIGOTimeGPS * XLALGPSAdd(LIGOTimeGPS *epoch, REAL8 dt)
REAL8 XLALGPSGetREAL8(const LIGOTimeGPS *epoch)