EnergyDispersion2D

class gammapy.irf.EnergyDispersion2D(e_true_lo, e_true_hi, migra_lo, migra_hi, offset_lo, offset_hi, data, interp_kwargs=None)[source]

Bases: object

Offset-dependent energy dispersion matrix.

See edisp_2d

Parameters:

e_true_lo : Quantity

True energy axis lower bounds

e_true_hi : Quantity

True energy axis upper bounds

migra_lo : ndarray, list

Migration axis lower bounds

migra_hi : ndarray, list

Migration axis upper bounds

offset_lo : Angle

Offset axis lower bounds

offset_hi : Angle

Offset axis upper bounds

data : ndarray

PDF matrix

Examples

Read energy dispersion from disk and create RMF matrix

>>> from gammapy.irf import EnergyDispersion2D
>>> from gammapy.utils.energy import EnergyBounds
>>> filename = '$GAMMAPY_EXTRA/test_datasets/irf/hess/pa/hess_edisp_2d_023523.fits.gz'
>>> edisp = EnergyDispersion2D.read(filename, hdu='ENERGY DISPERSION')
>>> print(edisp)
EnergyDispersion2D
NDDataArray summary info
e_true         : size =    15, min =  0.125 TeV, max = 80.000 TeV
migra          : size =   100, min =  0.051, max = 10.051
offset         : size =     6, min =  0.125 deg, max =  2.500 deg
Data           : size =  9000, min =  0.000, max =  3.405
>>> e_axis = EnergyBounds.equal_log_spacing(0.1,20,60, 'TeV')
>>> offset = '1.2 deg'
>>> rmf = edisp.to_energy_dispersion(offset=offset, e_reco=e_axis, e_true=e_axis)
>>> print(rmf)
EnergyDispersion
NDDataArray summary info
e_true         : size =    60, min =  0.105 TeV, max = 19.136 TeV
e_reco         : size =    60, min =  0.105 TeV, max = 19.136 TeV
Data           : size =  3600, min =  0.000, max =  0.266

Attributes Summary

default_interp_kwargs Default Interpolation kwargs for NDDataArray.
e_true True energy axis
migra Energy migration axis
offset Offset axis

Methods Summary

from_gauss(e_true, migra, bias, sigma, offset) Create Gaussian EnergyDispersion2D matrix.
from_hdulist(hdulist[, hdu])
from_table(table) Create from Table
get_response(offset, e_true[, e_reco, ...]) Detector response R(Delta E_reco, E_true)
peek([figsize]) Quick-look summary plots.
plot_bias([ax, offset, add_cbar]) Plot migration as a function of true energy for a given offset
plot_migration([ax, offset, e_true, migra]) Plot energy dispersion for given offset and true energy.
read(filename[, hdu]) Read from FITS file.
to_energy_dispersion(offset[, e_true, e_reco]) Detector response R(Delta E_reco, Delta E_true)

Attributes Documentation

default_interp_kwargs = {'fill_value': None, 'bounds_error': False}

Default Interpolation kwargs for NDDataArray. Extrapolate.

e_true

True energy axis

migra

Energy migration axis

offset

Offset axis

Methods Documentation

classmethod from_gauss(e_true, migra, bias, sigma, offset)[source]

Create Gaussian EnergyDispersion2D matrix.

The output matrix will be Gaussian in (e_true / e_reco). bias and sigma should be either floats or arrays of same dimension than e_true. Note that, the output matrix is flat in offset.

Parameters:

e_true : Quantity, BinnedDataAxis

Bin edges of true energy axis

migra : Quantity, BinnedDataAxis

Bin edges of migra axis

bias : float or array

Center of Gaussian energy dispersion, bias

sigma : float or array

RMS width of Gaussian energy dispersion, resolution

offset : Quantity, BinnedDataAxis, optional

Bin edges of offset

classmethod from_hdulist(hdulist, hdu='edisp_2d')[source]
classmethod from_table(table)[source]

Create from Table

get_response(offset, e_true, e_reco=None, migra_step=0.005)[source]

Detector response R(Delta E_reco, E_true)

Probability to reconstruct a given true energy in a given reconstructed energy band. In each reco bin, you integrate with a riemann sum over the default migra bin of your analysis.

Parameters:

e_true : Energy

True energy

e_reco : EnergyBounds, None

Reconstructed energy axis

offset : Angle

Offset

mig_step : float

Integration step in migration

Returns:

rv : ndarray

Redistribution vector

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

Quick-look summary plots.

Parameters:

figsize : (float, float)

Size of the resulting plot

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

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

Parameters:

ax : Axes, optional

Axis

offset : Angle, optional

Offset

add_cbar : bool

Add a colorbar to the plot.

kwargs : dict

Keyword arguments passed to pcolormesh.

Returns:

ax : Axes

Axis

plot_migration(ax=None, offset=None, e_true=None, migra=None, **kwargs)[source]

Plot energy dispersion for given offset and true energy.

Parameters:

ax : Axes, optional

Axis

offset : Angle, optional

Offset

e_true : Energy, optional

True energy

migra : array, list, optional

Migration nodes

Returns:

ax : Axes

Axis

classmethod read(filename, hdu='edisp_2d')[source]

Read from FITS file.

Parameters:

filename : str

File name

to_energy_dispersion(offset, e_true=None, e_reco=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:

offset : Angle

Offset

e_true : EnergyBounds, None

True energy axis

e_reco : EnergyBounds

Reconstructed energy axis

Returns:

edisp : EnergyDispersion

Energy disperion matrix