Source code for gammapy.background.background_estimate
# Licensed under a 3-clause BSD style license - see LICENSE.rst
from __future__ import absolute_import, division, print_function, unicode_literals
from regions import CircleSkyRegion
from .ring import ring_area_factor
__all__ = [
'BackgroundEstimate',
'ring_background_estimate',
]
[docs]class BackgroundEstimate(object):
"""Container class for background estimate.
This container holds the result from a region based background estimation
for one observation. Currently, it is filled by the functions
:func:`~gammapy.background.ring_background_estimate` and
the `~gammapy.background.ReflectedRegionsBackgroundEstimator`.
Parameters
----------
on_region : `~regions.SkyRegion`
Signal extraction region
on_events : `~gammapy.data.EventList`
Signal events
off_region : `~regions.SkyRegion`
Background extraction region
off_events : `~gammapy.data.EventList`
Background events
a_on : float
Relative background exposure of the on region
a_off : float
Relative background exposure of the off region
method : str
Background estimation method
"""
def __init__(self, on_region, on_events, off_region,
off_events, a_on, a_off, method='default'):
self.on_region = on_region
self.on_events = on_events
self.off_region = off_region
self.off_events = off_events
self.a_on = a_on
self.a_off = a_off
self.method = method
def __str__(self):
ss = self.__class__.__name__
ss += '\n Method: {}'.format(self.method)
ss += '\n on region'
ss += '\n {}'.format(self.on_region)
ss += '\n {}'.format(self.on_events)
ss += '\n off region'
ss += '\n {}'.format(self.off_region)
ss += '\n {}'.format(self.off_events)
return ss
[docs]def ring_background_estimate(pos, on_radius, inner_radius, outer_radius, events):
"""Simple ring background estimate.
No acceptance correction is applied
TODO : Replace with AnnulusSkyRegion
Parameters
----------
pos : `~astropy.coordinates.SkyCoord`
On region radius
on_radius : `~astropy.coordinates.Angle`
On region radius
inner_radius, outer_radius : `~astropy.coordinates.Angle`
Inner and outer ring radius
events : `~gammapy.data.EventList`
Event list
Returns
-------
bkg : `~gammapy.data.BackgroundEstimate`
Background estimate
"""
on_region = CircleSkyRegion(center=pos, radius=on_radius)
on_events = events.select_circular_region(on_region)
off_region = dict(inner=inner_radius, outer=outer_radius)
off_events = events.select_sky_ring(pos, inner_radius, outer_radius)
# TODO: change to region areas here (e.g. in steratian?)
a_on = 1
a_off = ring_area_factor(on_radius, inner_radius, outer_radius).value
return BackgroundEstimate(
on_region=on_region,
on_events=on_events,
off_region=off_region,
off_events=off_events,
a_on=a_on,
a_off=a_off,
method='ring',
)