Note

You are not reading the most up to date version of Gammapy documentation.
Access the latest stable version v1.3 or the list of Gammapy releases.

Ring background

Overview

This technique is used in classical Cherenkov astronomy for the 2D image computation.

To include the classical ring background estimation into a data reduction chain, Gammapy provides the RingBackgroundMaker and AdaptiveRingBackgroundMaker classed. Theses classes can only be used for image based data. A given MapDataset has to be reduced to a single image by calling MapDataset.to_image()

from gammapy.makers import MapDatasetMaker, RingBackgroundMaker, SafeMaskMaker
from gammapy.datasets import MapDataset
from gammapy.data import DataStore
from gammapy.maps import MapAxis, WcsGeom, Map
from regions import CircleSkyRegion
from astropy import units as u

data_store = DataStore.from_dir("$GAMMAPY_DATA/hess-dl3-dr1")
observations = data_store.get_observations([23592, 23559])

energy_axis = MapAxis.from_energy_bounds("1 TeV", "10 TeV", nbin=1)
energy_axis_true = MapAxis.from_energy_bounds("0.3 TeV", "30 TeV", nbin=20, per_decade=True, name="energy_true")

geom = WcsGeom.create(skydir=(83.63, 22.01), axes=[energy_axis], width=5, binsz=0.02)

stacked = MapDataset.create(geom, energy_axis_true=energy_axis_true)

maker = MapDatasetMaker()
safe_mask_maker = SafeMaskMaker(
        methods=["aeff-default", "offset-max"], offset_max="2.5 deg"
)

circle = CircleSkyRegion(center=geom.center_skydir, radius=0.2 * u.deg)
exclusion_mask = Map.from_geom(geom, data=geom.region_mask([circle], inside=False))

ring_bkg_maker = RingBackgroundMaker(r_in="0.3 deg", width="0.3 deg", exclusion_mask=exclusion_mask)

for obs in observations:
        dataset = maker.run(stacked, obs)
        dataset = safe_mask_maker.run(dataset, obs)
        dataset_on_off = ring_bkg_maker.run(dataset)
        stacked.stack(dataset_on_off)