Example #1
0
def simulate_spectrum_dataset(model, random_state=0):
    energy = np.logspace(-0.5, 1.5, 21) * u.TeV
    aeff = EffectiveAreaTable.from_parametrization(energy=energy)
    bkg_model = PowerLawSpectralModel(index=2.5, amplitude="1e-12 cm-2 s-1 TeV-1")

    dataset = SpectrumDatasetOnOff(
        aeff=aeff, model=model, livetime=100 * u.h, acceptance=1, acceptance_off=5
    )

    eval = SpectrumEvaluator(model=bkg_model, aeff=aeff, livetime=100 * u.h)

    bkg_model = eval.compute_npred()
    dataset.fake(random_state=random_state, background_model=bkg_model)
    return dataset
Example #2
0
def test_counts_predictor(case):
    opts = case.copy()
    del opts["npred"]
    predictor = SpectrumEvaluator(**opts)
    actual = predictor.compute_npred().total_counts
    assert_allclose(actual, case["npred"])
Example #3
0
from gammapy.irf import EnergyDispersion, EffectiveAreaTable
from gammapy.spectrum import models, SpectrumEvaluator
import numpy as np
import astropy.units as u
import matplotlib.pyplot as plt

e_true = np.logspace(-2, 2.5, 109) * u.TeV
e_reco = np.logspace(-2, 2, 73) * u.TeV

aeff = EffectiveAreaTable.from_parametrization(energy=e_true)
edisp = EnergyDispersion.from_gauss(e_true=e_true, e_reco=e_reco,
                                    sigma=0.3, bias=0)

model = models.PowerLaw(index=2.3,
                        amplitude="2.5e-12 cm-2 s-1 TeV-1",
                        reference="1 TeV")

livetime = 1 * u.h

predictor = SpectrumEvaluator(model=model,
                              aeff=aeff,
                              edisp=edisp,
                              livetime=livetime)
predictor.compute_npred().plot_hist()
plt.show()
Example #4
0
# Take a quick look at the simulated counts
dataset.counts.plot()

# ## Include Background
#
# In this section we will include a background component. Furthermore, we will also simulate more than one observation and fit each one individually in order to get average fit results.

# In[ ]:

# We assume a PowerLaw shape of the background as well
bkg_model = PowerLaw(index=2.5,
                     amplitude=1e-11 * u.Unit("cm-2 s-1 TeV-1"),
                     reference=1 * u.TeV)

evaluator = SpectrumEvaluator(model=bkg_model, aeff=aeff, livetime=livetime)

npred_bkg = evaluator.compute_npred()

# In[ ]:

dataset = SpectrumDatasetOnOff(
    aeff=aeff,
    edisp=edisp,
    model=model_ref,
    livetime=livetime,
    acceptance=1,
    acceptance_off=5,
)

# In[ ]: