def get_sens(ana,
             ra,
             sindec,
             ext=np.radians(0),
             llh_ext=None,
             cut_n_sigma=None,
             sigsub=False,
             gamma=2,
             batch_size=500):
    src = cy.utils.Sources(ra=0, dec=np.arcsin(sindec), extension=ext)
    flux = hyp.PowerLawFlux(gamma)
    tr = get_tr(src=src,
                ana=ana,
                ext=ext,
                llh_ext=llh_ext,
                flux=flux,
                cut_n_sigma=cut_n_sigma,
                sigsub=sigsub)
    bg = cy.dists.Chi2TSD(tr.get_many_fits(1000))
    sens = tr.find_n_sig(bg.median(),
                         0.9,
                         batch_size=batch_size,
                         max_batch_size=1000,
                         tol=0.03,
                         coverage=2)
    sens['flux'] = tr.to_E2dNdE(sens['n_sig'], E0=100, unit=1e3)
    return sens['flux']
Beispiel #2
0
def get_tr(src,
           ana=ana7,
           ext=np.radians(0),
           llh_ext=None,
           flux=hyp.PowerLawFlux(2),
           inj=True,
           use_energy=True,
           cut_n_sigma=None,
           sigsub=False,
           _fit_null=True,
           mp_cpus=mp_cpus):
    llh_ext = ext if llh_ext is None else llh_ext
    llh_src = cy.utils.Sources(ra=src.ra, dec=src.dec, extension=llh_ext)

    if cut_n_sigma is None:
        cut_n_sigma = 5 if llh_ext < np.radians(3) else 3

    # get_llh needs the src list
    llh_kw = dict(src=llh_src, cut_n_sigma=cut_n_sigma, sigsub=sigsub)
    # get_injs needs the src list and signal spectrum
    inj_kw = dict(src=src,
                  llh_src=llh_src,
                  flux=flux,
                  cut_n_sigma=cut_n_sigma,
                  inj=inj)
    # trial.get_trial_runner loops over sub analyses and gives a single TrialRunner
    return trial.get_trial_runner(ana,
                                  get_llh,
                                  get_injs,
                                  llh_kw=llh_kw,
                                  inj_kw=inj_kw,
                                  mp_cpus=mp_cpus)
Beispiel #3
0
def get_tr (src, ana=ana7, flux=hyp.PowerLawFlux (2), inj=True, use_energy=True, cut_n_sigma=5, sigsub=False, _fit_null=True, mp_cpus=mp_cpus):
    # get_llh needs the src list
    llh_kw = dict (src=src, sigsub=sigsub)
    # get_injs needs the src list and signal spectrum
    inj_kw = dict (src=src, flux=flux, cut_n_sigma=cut_n_sigma, inj=inj)
    # trial.get_trial_runner loops over sub analyses and gives a single TrialRunner
    return trial.get_trial_runner (
        ana, get_llh, get_injs, llh_kw=llh_kw, inj_kw=inj_kw, mp_cpus=mp_cpus)