def compute_Fstat_spindown_simulateCW(): # waveform: simple spindown model def waveform(h0, cosi, freq, f1dot): def wf(dt): dphi = lal.TWOPI * (freq * dt + f1dot * 0.5 * dt**2) ap = h0 * (1.0 + cosi**2) / 2.0 ax = h0 * cosi return dphi, ap, ax return wf # waveform parameters dt_wf = 5 # create simulator S = simCW.CWSimulator(tref, tstart, Tdata, waveform(h0, cosi, freq, f1dot), dt_wf, phi0, psi, alpha, delta, detector, earth_ephem_file=earth_ephem_file, sun_ephem_file=sun_ephem_file) # write SFTs for path, i, N in S.write_sft_files(fmax, Tsft, 'simulateCWTest'): pass # load SFTs from catalog sft_catalog = lalpulsar.SFTdataFind('V-1_V1_1800SFT_simCW_simulateCWTest-*.sft', None) # create default F-statistic optional arguments Fstat_opt_args = lalpulsar.FstatOptionalArgs(lalpulsar.FstatOptionalArgsDefaults) Fstat_opt_args.FstatMethod = lalpulsar.FMETHOD_DEMOD_BEST Fstat_assume_noise = lalpulsar.MultiNoiseFloor() Fstat_assume_noise.length = 1 Fstat_assume_noise.sqrtSn[0] = assume_sqrtSh Fstat_opt_args.assumeSqrtSX = Fstat_assume_noise # create F-statistic input data Fstat_input = lalpulsar.CreateFstatInput(sft_catalog, fcmin, fcmax, dfreq, ephemerides, Fstat_opt_args) Fstat_res = 0 doppler = lalpulsar.PulsarDopplerParams() doppler.refTime = tref doppler.Alpha = alpha doppler.Delta = delta doppler.fkdot[0] = fsmin doppler.fkdot[1] = f1dot # search SFTs using F-statistic Fstat_res = lalpulsar.ComputeFstat(Fstat_res, Fstat_input, doppler, Nfs, lalpulsar.FSTATQ_2F) return Fstat_res.twoF
def compute_Fstat_spindown_reference(): # create fake SFT catalog sft_ts = lalpulsar.MakeTimestamps(tstart, Tdata, Tsft, 0) sft_catalog = lalpulsar.AddToFakeSFTCatalog(None, detector, sft_ts) # create default F-statistic optional arguments Fstat_opt_args = lalpulsar.FstatOptionalArgs( lalpulsar.FstatOptionalArgsDefaults) Fstat_opt_args.FstatMethod = lalpulsar.FMETHOD_DEMOD_BEST # create injection parameters Fstat_signal = lalpulsar.CreatePulsarParamsVector(1) Fstat_signal.data[0].Amp.aPlus = 0.5 * h0 * (1.0 + cosi * cosi) Fstat_signal.data[0].Amp.aCross = h0 * cosi Fstat_signal.data[0].Amp.psi = psi Fstat_signal.data[0].Amp.phi0 = phi0 Fstat_signal.data[0].Doppler.refTime = tref Fstat_signal.data[0].Doppler.Alpha = alpha Fstat_signal.data[0].Doppler.Delta = delta Fstat_signal.data[0].Doppler.fkdot[0] = freq Fstat_signal.data[0].Doppler.fkdot[1] = f1dot Fstat_opt_args.injectSources = Fstat_signal Fstat_assume_noise = lalpulsar.MultiNoiseFloor() Fstat_assume_noise.length = 1 Fstat_assume_noise.sqrtSn[0] = assume_sqrtSh Fstat_opt_args.assumeSqrtSX = Fstat_assume_noise # create F-statistic input data Fstat_input = lalpulsar.CreateFstatInput(sft_catalog, fcmin, fcmax, dfreq, ephemerides, Fstat_opt_args) Fstat_res = 0 doppler = lalpulsar.PulsarDopplerParams(Fstat_signal.data[0].Doppler) doppler.fkdot[0] = fsmin # search SFTs using F-statistic Fstat_res = lalpulsar.ComputeFstat(Fstat_res, Fstat_input, doppler, Nfs, lalpulsar.FSTATQ_2F) return Fstat_res.twoF