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']
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)
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)