EDispMap#

class gammapy.irf.EDispMap[source]#

Bases: IRFMap

Energy dispersion map.

Parameters:
edisp_mapMap

The input Energy Dispersion Map. Should be a Map with 2 non-spatial axes. migra and true energy axes should be given in this specific order.

exposure_mapMap, optional

Associated exposure map. Needs to have a consistent map geometry.

Examples

# Energy dispersion map for CTAO data
import numpy as np
from astropy import units as u
from astropy.coordinates import SkyCoord
from gammapy.maps import WcsGeom, MapAxis
from gammapy.irf import EnergyDispersion2D, EffectiveAreaTable2D
from gammapy.makers.utils import make_edisp_map, make_map_exposure_true_energy

# Define energy dispersion map geometry
energy_axis_true = MapAxis.from_edges(np.logspace(-1, 1, 10), unit="TeV", name="energy_true")
migra_axis = MapAxis.from_edges(np.linspace(0, 3, 100), name="migra")
pointing = SkyCoord(0, 0, unit="deg")
geom = WcsGeom.create(
        binsz=0.25 * u.deg,
        width=10 * u.deg,
        skydir=pointing,
        axes=[migra_axis, energy_axis_true],
)

# Extract EnergyDispersion2D from CTA 1DC IRF
filename = "$GAMMAPY_DATA/cta-1dc/caldb/data/cta/1dc/bcf/South_z20_50h/irf_file.fits"
edisp2D = EnergyDispersion2D.read(filename, hdu="ENERGY DISPERSION")
aeff2d = EffectiveAreaTable2D.read(filename, hdu="EFFECTIVE AREA")

# Create the exposure map
exposure_geom = geom.squash(axis_name="migra")
exposure_map = make_map_exposure_true_energy(pointing, "1 h", aeff2d, exposure_geom)

# Create the EDispMap for the specified pointing
edisp_map = make_edisp_map(edisp2D, pointing, geom, exposure_map)

# Get an Energy Dispersion (1D) at any position in the image
pos = SkyCoord(2.0, 2.5, unit="deg")
energy_axis = MapAxis.from_energy_bounds(0.1, 10, 5, unit="TeV", name="energy")
edisp = edisp_map.get_edisp_kernel(energy_axis, position=pos)

# Write map to disk
edisp_map.write("edisp_map.fits")

Attributes Summary

Methods Summary

from_diagonal_response(energy_axis_true[, ...])

Create an all-sky EDisp map with diagonal response.

from_geom(geom)

Create energy dispersion map from geometry.

get_edisp_kernel(energy_axis[, position])

Get energy dispersion at a given position.

normalize()

Normalize PSF map.

peek([figsize])

Quick-look summary plots.

sample_coord(map_coord[, random_state, ...])

Apply the energy dispersion corrections on the coordinates of a set of simulated events.

to_edisp_kernel_map(energy_axis)

Convert to map with energy dispersion kernels.

Attributes Documentation

edisp_map#
required_axes = ['migra', 'energy_true']#
tag = 'edisp_map'#

Methods Documentation

classmethod from_diagonal_response(energy_axis_true, migra_axis=None)[source]#

Create an all-sky EDisp map with diagonal response.

Parameters:
energy_axis_trueMapAxis

True energy axis.

migra_axisMapAxis, optional

Migra axis. Default is None.

Returns:
edisp_mapEDispMap

Energy dispersion map.

classmethod from_geom(geom)[source]#

Create energy dispersion map from geometry.

By default, a diagonal energy dispersion matrix is created.

Parameters:
geomGeom

Energy dispersion map geometry.

Returns:
edisp_mapEDispMap

Energy dispersion map.

get_edisp_kernel(energy_axis, position=None)[source]#

Get energy dispersion at a given position.

Parameters:
energy_axisMapAxis

Reconstructed energy axis.

positionSkyCoord

The target position. Should be a single coordinates.

Returns:
edispEnergyDispersion

The energy dispersion (i.e. rmf object).

normalize()[source]#

Normalize PSF map.

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

Quick-look summary plots.

Plots corresponding to the center of the map.

This method creates a figure with two subplots:

  • Bias plot : reconstruction bias as a function of true energy

  • Energy dispersion matrix plot : probability density function matrix

Parameters:
figsizetuple

Size of figure.

sample_coord(map_coord, random_state=0, chunk_size=10000)[source]#

Apply the energy dispersion corrections on the coordinates of a set of simulated events.

Parameters:
map_coordMapCoord

Sequence of coordinates and energies of sampled events.

random_state{int, ‘random-seed’, ‘global-rng’, RandomState}, optional

Defines random number generator initialisation. Passed to get_random_state. Default is 0.

chunk_sizeint

If set, this will slice the input MapCoord into smaller chunks of chunk_size elements. Default is 10000.

Returns:
MapCoord.

Sequence of energy dispersion corrected coordinates of the input map_coord map.

to_edisp_kernel_map(energy_axis)[source]#

Convert to map with energy dispersion kernels.

Parameters:
energy_axisMapAxis

Reconstructed energy axis.

Returns:
edispEDispKernelMap

Energy dispersion kernel map.

__init__(edisp_map, exposure_map=None)[source]#
classmethod __new__(*args, **kwargs)#