def test_psf(): pc_inst = pc.PSFCorrection(psf_sigma_deg=0.1812, n_psf=5000, n_pts_per_psf=100, num_f_bins=20, f_trunc=0.1, nside=64) f_ary_gauss = pc_inst.f_ary df_rho_div_f_ary_gauss = pc_inst.df_rho_div_f_ary # Define parameters that specify the Fermi-LAT PSF at 2 GeV fcore = 0.748988248179 score = 0.428653790656 gcore = 7.82363229341 stail = 0.715962650769 gtail = 3.61883748683 spe = 0.00456544262478 # Define the full PSF in terms of two King functions def king_fn(x, sigma, gamma): return 1. / (2. * np.pi * sigma**2.) * (1. - 1. / gamma) * ( 1. + (x**2. / (2. * gamma * sigma**2.)))**(-gamma) def Fermi_PSF(r): return fcore * king_fn(r / spe, score, gcore) + (1 - fcore) * king_fn( r / spe, stail, gtail) # Modify the relevant parameters in pc_inst and then make or load the PSF pc_inst = pc.PSFCorrection(delay_compute=True) pc_inst.psf_r_func = lambda r: Fermi_PSF(r) pc_inst.sample_psf_max = 10. * spe * (score + stail) / 2. pc_inst.psf_samples = 10000 pc_inst.psf_tag = 'Fermi_PSF_2GeV' pc_inst.make_or_load_psf_corr() # Extract f_ary and df_rho_div_f_ary as usual f_ary_9 = pc_inst.f_ary df_rho_div_f_ary_9 = pc_inst.df_rho_div_f_ary
fermi_data = np.load('fermi_data/fermidata_counts.npy').astype(np.int32) fermi_exposure = np.load('fermi_data/fermidata_exposure.npy') n.load_data(fermi_data, fermi_exposure) analysis_mask = cm.make_mask_total(band_mask=True, band_mask_range=50) n.load_mask(analysis_mask) dif = np.load('fermi_data/template_dif.npy') iso = np.load('fermi_data/template_iso.npy') n.add_template(dif, 'dif') n.add_template(iso, 'iso') n.add_template(np.ones(len(iso)), 'iso_np', units='PS') n.add_poiss_model('dif', '$A_\mathrm{dif}$', [0, 30], False) n.add_poiss_model('iso', '$A_\mathrm{iso}$', [0, 5], False) n.add_non_poiss_model('iso_np', [ '$A^\mathrm{ps}_\mathrm{iso}$', '$n_1$', '$n_2$', '$n_3$', '$n_4$', '$S_b^{(1)}$', '$S_b^{(2)}$', '$S_b^{(3)}$' ], [[-6, 2], [2.05, 5], [1.0, 3.5], [1.0, 3.5], [-1.99, 1.99], [30, 80], [1, 30], [0.1, 1]], [True, False, False, False, False, False, False, False]) pc_inst = pc.PSFCorrection(psf_sigma_deg=0.1812) f_ary, df_rho_div_f_ary = pc_inst.f_ary, pc_inst.df_rho_div_f_ary n.configure_for_scan(f_ary=f_ary, df_rho_div_f_ary=df_rho_div_f_ary, nexp=5) n.perform_scan(nlive=500)
def test_scan_non_poiss(): n = nptfit.NPTF(tag='Test_NPoiss') fermi_data = np.array([2, 1, 1, 1, 4, 10]).astype(np.int32) fermi_exposure = np.array([1., 1., 1., 2., 2., 2.]) n.load_data(fermi_data, fermi_exposure) analysis_mask = np.array([False, False, False, False, False, True]) dif = np.array([1., 2., 3., 4., 5., 6.]) iso = np.array([1., 1., 1., 1., 1., 1.]) n.add_template(dif, 'dif') n.add_template(iso, 'iso') n.add_poiss_model('iso','$A_\mathrm{iso}$', False, fixed=True, fixed_norm=1.47) n.add_non_poiss_model('iso', ['$A^\mathrm{ps}_\mathrm{iso}$','$n_1$','$n_2$','$S_b$'], [[-6,1],[2.05,30],[-2,1.95]], [True,False,False], fixed_params = [[3,22.]]) pc_inst = pc.PSFCorrection(psf_sigma_deg=0.1812) f_ary, df_rho_div_f_ary = pc_inst.f_ary, pc_inst.df_rho_div_f_ary n.configure_for_scan(f_ary=f_ary, df_rho_div_f_ary=df_rho_div_f_ary, nexp=1) n.perform_scan(nlive=50) n.load_scan() n.load_scan() n = nptfit.NPTF(tag='Test_NPoiss') n.load_data(fermi_data, fermi_exposure) n.add_template(iso, 'iso') n.add_non_poiss_model('iso', ['$A^\mathrm{ps}_\mathrm{iso}$','$n_1$','$n_2$','$S_{b1}$'], [[0,1]], units='flux',fixed_params=[[1,2.],[2,-2.],[3,100.]]) n.configure_for_scan(nexp=len(dif)+1) n.perform_scan(nlive=50) n = nptfit.NPTF(tag='Test_NPoiss') n.load_data(fermi_data, fermi_exposure) n.add_template(iso, 'iso') n.add_non_poiss_model('iso', ['$A^\mathrm{ps}_\mathrm{iso}$','$n_1$','$n_2$','$n_3','$S_{b1}$','$S_{b2}$'], [[0,1],[0,10],[0,1.]], units='flux',fixed_params=[[1,2.],[2,-2.],[3,1.0]], dnds_model='specify_relative_breaks') n.configure_for_scan() n.perform_scan(nlive=50) n = nptfit.NPTF(tag='Test_NPoiss') n.load_data(fermi_data, fermi_exposure) n.add_template(iso, 'iso') n.add_non_poiss_model('iso', ['$A^\mathrm{ps}_\mathrm{iso}$','$n_1$','$n_2$','$n_3','$S_{b1}$','$S_{b2}$'], [[0,200]], units='flux',fixed_params=[[0,1.],[1,2.],[2,1.],[3,-2],[5,250]]) n.configure_for_scan() n.perform_scan(nlive=50) n = nptfit.NPTF(tag='Test_NPoiss') n.load_data(fermi_data, fermi_exposure) n.add_template(iso, 'iso') n.add_non_poiss_model('iso', ['$A^\mathrm{ps}_\mathrm{iso}$','$n_1$','$n_2$','$n_3','$S_{b1}$','$S_{b2}$'], [[200,400]], units='flux',dnds_model='specify_relative_breaks', fixed_params=[[0,1.],[1,2.],[2,1.],[3,-2],[4,150]]) n.configure_for_scan() n.perform_scan(nlive=50)