PSFMap#
- class gammapy.irf.PSFMap[source]#
Bases:
IRFMap
Class containing the Map of PSFs and allowing to interact with it.
- Parameters:
Examples
from astropy.coordinates import SkyCoord from gammapy.maps import WcsGeom, MapAxis from gammapy.data import Observation, FixedPointingInfo from gammapy.irf import load_irf_dict_from_file from gammapy.makers import MapDatasetMaker # Define observation pointing_position = SkyCoord(0, 0, unit="deg", frame="galactic") pointing = FixedPointingInfo( fixed_icrs=pointing_position.icrs, ) filename = "$GAMMAPY_DATA/cta-1dc/caldb/data/cta/1dc/bcf/South_z20_50h/irf_file.fits" irfs = load_irf_dict_from_file(filename) obs = Observation.create(pointing=pointing, irfs=irfs, livetime="1h") # Define energy axis. Note that the name is fixed. energy_axis = MapAxis.from_energy_bounds("0.1 TeV", "10 TeV", nbin=3, name="energy_true") # Define rad axis. Again note the axis name rad_axis = MapAxis.from_bounds(0, 0.5, nbin=100, name="rad", unit="deg") # Create WcsGeom geom = WcsGeom.create( binsz=0.25, width="5 deg", skydir=pointing_position, axes=[rad_axis, energy_axis] ) maker = MapDatasetMaker() psf = maker.make_psf(geom=geom, observation=obs) # Get a PSF kernel at the center of the image upsample_geom = geom.upsample(factor=10).drop("rad") psf_kernel = psf.get_psf_kernel(geom=upsample_geom)
Attributes Summary
Methods Summary
containment
(rad, energy_true[, position])Containment at given coordinates.
containment_radius
(fraction, energy_true[, ...])Containment at given coordinates.
containment_radius_map
(energy_true[, fraction])Containment radius map.
from_gauss
(energy_axis_true[, rad_axis, ...])Create all-sky PSF map from Gaussian width.
from_geom
(geom)Create PSF map from geometry.
get_psf_kernel
(geom[, position, max_radius, ...])Return a PSF kernel at the given position.
Normalize PSF map.
peek
([figsize])Quick-look summary plots.
plot_containment_radius_vs_energy
([ax, fraction])Plot containment fraction as a function of energy.
plot_psf_vs_rad
([ax, energy_true])Plot PSF vs radius.
sample_coord
(map_coord[, random_state, ...])Apply PSF corrections on the coordinates of a set of simulated events.
to_image
([spectral_model, keepdims])Reduce to a 2D map after weighing with the associated exposure and a spectrum.
Attributes Documentation
- energy_name#
- psf_map#
- required_axes = ['rad', 'energy_true']#
- tag = 'psf_map'#
Methods Documentation
- classmethod from_gauss(energy_axis_true, rad_axis=None, sigma=<Quantity 0.1 deg>, geom=None)[source]#
Create all-sky PSF map from Gaussian width.
This is used for testing and examples.
The width can be the same for all energies or be an array with one value per energy node. It does not depend on position.
- get_psf_kernel(geom, position=None, max_radius=None, containment=0.999, precision_factor=12)[source]#
Return a PSF kernel at the given position.
The PSF is returned in the form a WcsNDMap defined by the input Geom.
- Parameters:
- geom
Geom
Target geometry to use.
- position
SkyCoord
, optional Target position. Should be a single coordinate. By default, the center position is used.
- max_radius
Angle
, optional Maximum angular size of the kernel map. Default is None and it will be computed for the
containment
fraction set.- containmentfloat, optional
Containment fraction to use as size of the kernel. The radius can be overwritten using the
max_radius
argument. Default is 0.999.- precision_factorint, optional
Factor between the bin half-width of the geom and the median R68% containment radius. Used only for the oversampling method. Default is 12.
- geom
- Returns:
- peek(figsize=(12, 10))[source]#
Quick-look summary plots.
This method creates a figure with four subplots:
Containment radius at center of map plot : Containment radius as a function of energy for containment fractions of 65% and 95%.
PSF at center of map plot : PSF vs radius.
Exposure 2D map : exposure summed over true energy
Containment radius map : 2D sky map of the 68% containment radius at 1 TeV
- Parameters:
- figsizetuple, optional
Size of figure. Default is (12, 10).
- plot_containment_radius_vs_energy(ax=None, fraction=(0.68, 0.95), **kwargs)[source]#
Plot containment fraction as a function of energy.
The method plots the containment radius at the center of the map.
- plot_psf_vs_rad(ax=None, energy_true=<Quantity [ 0.1, 1., 10. ] TeV>, **kwargs)[source]#
Plot PSF vs radius.
The method plots the profile at the center of the map.
- sample_coord(map_coord, random_state=0, chunk_size=10000)[source]#
Apply PSF corrections on the coordinates of a set of simulated events.
- Parameters:
- map_coord
MapCoord
object. 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.
- map_coord
- Returns:
- corr_coord
MapCoord
Sequence of PSF-corrected coordinates of the input map_coord map.
- corr_coord
- to_image(spectral_model=None, keepdims=True)[source]#
Reduce to a 2D map after weighing with the associated exposure and a spectrum.
- Parameters:
- spectral_model
SpectralModel
, optional Spectral model to compute the weights. Default is power-law with spectral index of 2.
- keepdimsbool, optional
If True, the energy axis is kept with one bin. If False, the axis is removed.
- spectral_model
- Returns:
- classmethod __new__(*args, **kwargs)#