예제 #1
0
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
예제 #2
0
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