Exemple #1
0
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
Exemple #2
0
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)
Exemple #3
0
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)