EnergyDispersion2D#

class gammapy.irf.EnergyDispersion2D[source]#

Bases: IRF

Offset-dependent energy dispersion matrix.

Data format specification: EDISP_2D

Parameters:
axeslist of MapAxis or MapAxes
Required axes (in the given order) are:
  • energy_true (true energy axis)

  • migra (energy migration axis)

  • offset (field of view offset axis)

datandarray

Energy dispersion probability density.

Examples

Read energy dispersion IRF from disk:

>>> from gammapy.maps import MapAxis, MapAxes
>>> from gammapy.irf import EnergyDispersion2D
>>> filename = '$GAMMAPY_DATA/hess-dl3-dr1/data/hess_dl3_dr1_obs_id_020136.fits.gz'
>>> edisp2d = EnergyDispersion2D.read(filename, hdu="EDISP")

Create energy dispersion matrix (EnergyDispersion2D) for a given field of view offset and energy binning:

>>> energy_axis = MapAxis.from_bounds(0.1, 20, nbin=60, unit="TeV", interp="log", name='energy')
>>> edisp = edisp2d.to_edisp_kernel(
... offset='1.2 deg',
... energy_axis=energy_axis,
... energy_axis_true=energy_axis.copy(name='energy_true'),
... )

Create energy dispersion IRF from axes:

>>> energy_axis_true = MapAxis.from_energy_bounds("1 TeV", "10 TeV", nbin=10, name="energy_true")
>>> offset_axis = MapAxis.from_bounds(0, 1, nbin=3, unit="deg", name="offset", node_type="edges")
>>> migra_axis = MapAxis.from_bounds(0, 3, nbin=3, name="migra", node_type="edges")
>>> axes = MapAxes([energy_axis_true, migra_axis, offset_axis])
>>> edisp2d_axes = EnergyDispersion2D(axes=axes)

Attributes Summary

Methods Summary

from_gauss(energy_axis_true, migra_axis, ...)

Create Gaussian energy dispersion matrix (EnergyDispersion2D).

normalize()

Normalise energy dispersion.

peek([figsize])

Quick-look summary plots.

plot_bias([ax, offset, add_cbar, axes_loc, ...])

Plot migration as a function of true energy for a given offset.

plot_migration([ax, offset, energy_true])

Plot energy dispersion for given offset and true energy.

to_edisp_kernel(offset[, energy_axis_true, ...])

Detector response R(Delta E_reco, Delta E_true).

Attributes Documentation

default_unit = Unit(dimensionless)#
required_axes = ['energy_true', 'migra', 'offset']#
tag = 'edisp_2d'#

Methods Documentation

classmethod from_gauss(energy_axis_true, migra_axis, offset_axis, bias, sigma, pdf_threshold=1e-06)[source]#

Create Gaussian energy dispersion matrix (EnergyDispersion2D).

The output matrix will be Gaussian in (energy_true / energy).

The bias and sigma should be either floats or arrays of same dimension than energy_true. bias refers to the mean value of the migra distribution minus one, i.e. bias=0 means no bias.

Note that, the output matrix is flat in offset.

Parameters:
energy_axis_trueMapAxis

True energy axis.

migra_axisQuantity

Migra axis.

offset_axisQuantity

Bin edges of offset.

biasfloat or ndarray

Center of Gaussian energy dispersion, bias.

sigmafloat or ndarray

RMS width of Gaussian energy dispersion, resolution.

pdf_thresholdfloat, optional

Zero suppression threshold. Default is 1e-6.

normalize()[source]#

Normalise energy dispersion.

peek(figsize=(15, 5))[source]#

Quick-look summary plots.

This method creates a figure with three subplots:

  • Bias plot : migration as a function of true energy for a given offset

  • Migration matrix plot : energy dispersion for given offset and true energy

  • Energy dispersion matrix plot : probability density function matrix to have energy as a function of energy_true

Parameters:
figsizetuple, optional

Size of the resulting plot. Default is (15, 5).

plot_bias(ax=None, offset=None, add_cbar=False, axes_loc=None, kwargs_colorbar=None, **kwargs)[source]#

Plot migration as a function of true energy for a given offset.

Parameters:
axAxes, optional

Matplotlib axes. Default is None.

offsetAngle, optional

Offset. Default is None.

add_cbarbool, optional

Add a colorbar to the plot. Default is False.

axes_locdict, optional

Keyword arguments passed to append_axes.

kwargs_colorbardict, optional

Keyword arguments passed to colorbar.

kwargsdict

Keyword arguments passed to pcolormesh.

Returns:
axAxes

Matplotlib axes.

plot_migration(ax=None, offset=None, energy_true=None, **kwargs)[source]#

Plot energy dispersion for given offset and true energy.

Parameters:
axAxes, optional

Matplotlib axes. Default is None.

offsetAngle, optional

Offset. Default is None.

energy_trueQuantity, optional

True energy. Default is None.

**kwargsdict

Keyword arguments forwarded to plot.

Returns:
axAxes

Matplotlib axes.

to_edisp_kernel(offset, energy_axis_true=None, energy_axis=None)[source]#

Detector response R(Delta E_reco, Delta E_true).

Probability to reconstruct an energy in a given true energy band in a given reconstructed energy band.

Parameters:
offsetAngle

Offset.

energy_axis_trueMapAxis, optional

True energy axis. Default is None.

energy_axisMapAxis, optional

Reconstructed energy axis. Default is None.

Returns:
edispEDispKernel

Energy dispersion matrix.

__init__(axes, data=0, unit='', is_pointlike=False, fov_alignment=FoVAlignment.RADEC, meta=None, interp_kwargs=None)#
classmethod __new__(*args, **kwargs)#