.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "tutorials/data/hess.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_tutorials_data_hess.py: H.E.S.S. with Gammapy ===================== Explore H.E.S.S. event lists and IRFs. Introduction ------------ `H.E.S.S. `__ is an array of gamma-ray telescopes located in Namibia. Gammapy is regularly used and fully supports H.E.S.S. high level data analysis, after export to the current `open data level 3 format `__. The H.E.S.S. data is private, and H.E.S.S. analysis is mostly documented and discussed in the internal Wiki pages and in H.E.S.S.-internal communication channels. However, in 2018, a small sub-set of archival H.E.S.S. data was publicly released, called the `H.E.S.S. DL3 DR1 `__, the data level 3, data release number 1. This dataset is 50 MB in size and is used in many Gammapy analysis tutorials, and can be downloaded via `gammapy download `__. This notebook is a quick introduction to this specific DR1 release. It briefly describes H.E.S.S. data and instrument responses and show a simple exploration of the data with the creation of theta-squared plot. H.E.S.S. members can find details on the DL3 FITS production on this `Confluence page `__ and access more detailed tutorials in the BitBucket `hess-open-tools` repository. DL3 DR1 ------- This is how to access data and IRFs from the H.E.S.S. data level 3, data release 1. .. GENERATED FROM PYTHON SOURCE LINES 44-55 .. code-block:: Python import astropy.units as u from astropy.coordinates import SkyCoord # %matplotlib inline import matplotlib.pyplot as plt from IPython.display import display from gammapy.data import DataStore from gammapy.makers.utils import make_theta_squared_table from gammapy.maps import MapAxis .. GENERATED FROM PYTHON SOURCE LINES 56-58 Check setup ----------- .. GENERATED FROM PYTHON SOURCE LINES 58-64 .. code-block:: Python from gammapy.utils.check import check_tutorials_setup from gammapy.visualization import plot_theta_squared_table check_tutorials_setup() .. rst-class:: sphx-glr-script-out .. code-block:: none System: python_executable : /home/runner/work/gammapy-docs/gammapy-docs/gammapy/.tox/build_docs/bin/python python_version : 3.9.20 machine : x86_64 system : Linux Gammapy package: version : 1.3 path : /home/runner/work/gammapy-docs/gammapy-docs/gammapy/.tox/build_docs/lib/python3.9/site-packages/gammapy Other packages: numpy : 1.26.4 scipy : 1.13.1 astropy : 5.2.2 regions : 0.8 click : 8.1.7 yaml : 6.0.2 IPython : 8.18.1 jupyterlab : not installed matplotlib : 3.9.2 pandas : not installed healpy : 1.17.3 iminuit : 2.30.1 sherpa : 4.16.1 naima : 0.10.0 emcee : 3.1.6 corner : 2.2.3 ray : 2.39.0 Gammapy environment variables: GAMMAPY_DATA : /home/runner/work/gammapy-docs/gammapy-docs/gammapy-datasets/1.3 .. GENERATED FROM PYTHON SOURCE LINES 65-73 A useful way to organize the relevant files are the index tables. The observation index table contains information on each particular run, such as the pointing, or the run ID. The HDU index table has a row per relevant file (i.e., events, effective area, psf…) and contains the path to said file. Together they can be loaded into a Datastore by indicating the directory in which they can be found, in this case `$GAMMAPY_DATA/hess-dl3-dr1`: .. GENERATED FROM PYTHON SOURCE LINES 75-76 Create and get info on the data store .. GENERATED FROM PYTHON SOURCE LINES 76-81 .. code-block:: Python data_store = DataStore.from_dir("$GAMMAPY_DATA/hess-dl3-dr1") data_store.info() .. rst-class:: sphx-glr-script-out .. code-block:: none Data store: HDU index table: BASE_DIR: /home/runner/work/gammapy-docs/gammapy-docs/gammapy-datasets/1.3/hess-dl3-dr1 Rows: 630 OBS_ID: 20136 -- 47829 HDU_TYPE: ['aeff', 'bkg', 'edisp', 'events', 'gti', 'psf'] HDU_CLASS: ['aeff_2d', 'bkg_3d', 'edisp_2d', 'events', 'gti', 'psf_table'] Observation table: Observatory name: 'N/A' Number of observations: 105 .. GENERATED FROM PYTHON SOURCE LINES 82-83 Preview an excerpt from the observation table .. GENERATED FROM PYTHON SOURCE LINES 83-86 .. code-block:: Python display(data_store.obs_table[:2][["OBS_ID", "DATE-OBS", "RA_PNT", "DEC_PNT", "OBJECT"]]) .. rst-class:: sphx-glr-script-out .. code-block:: none OBS_ID DATE-OBS RA_PNT DEC_PNT OBJECT deg deg ------ ---------- -------- ---------- -------- 20136 2004-03-26 228.6125 -58.771667 MSH15-52 20137 2004-03-26 228.6125 -59.771667 MSH15-52 .. GENERATED FROM PYTHON SOURCE LINES 87-88 Get a single observation .. GENERATED FROM PYTHON SOURCE LINES 88-91 .. code-block:: Python obs = data_store.obs(23523) .. GENERATED FROM PYTHON SOURCE LINES 92-93 Select and peek events .. GENERATED FROM PYTHON SOURCE LINES 93-96 .. code-block:: Python obs.events.select_offset([0, 2.5] * u.deg).peek() .. image-sg:: /tutorials/data/images/sphx_glr_hess_001.png :alt: hess :srcset: /tutorials/data/images/sphx_glr_hess_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 97-98 Peek the effective area .. GENERATED FROM PYTHON SOURCE LINES 98-101 .. code-block:: Python obs.aeff.peek() .. image-sg:: /tutorials/data/images/sphx_glr_hess_002.png :alt: hess :srcset: /tutorials/data/images/sphx_glr_hess_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none /home/runner/work/gammapy-docs/gammapy-docs/gammapy/.tox/build_docs/lib/python3.9/site-packages/astropy/units/quantity.py:673: RuntimeWarning: invalid value encountered in divide result = super().__array_ufunc__(function, method, *arrays, **kwargs) .. GENERATED FROM PYTHON SOURCE LINES 102-103 Peek the energy dispersion .. GENERATED FROM PYTHON SOURCE LINES 103-106 .. code-block:: Python obs.edisp.peek() .. image-sg:: /tutorials/data/images/sphx_glr_hess_003.png :alt: hess :srcset: /tutorials/data/images/sphx_glr_hess_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 107-108 Peek the psf .. GENERATED FROM PYTHON SOURCE LINES 108-110 .. code-block:: Python obs.psf.peek() .. image-sg:: /tutorials/data/images/sphx_glr_hess_004.png :alt: hess :srcset: /tutorials/data/images/sphx_glr_hess_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 111-112 Peek the background rate .. GENERATED FROM PYTHON SOURCE LINES 112-115 .. code-block:: Python obs.bkg.to_2d().plot() plt.show() .. image-sg:: /tutorials/data/images/sphx_glr_hess_005.png :alt: hess :srcset: /tutorials/data/images/sphx_glr_hess_005.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 116-122 Theta squared event distribution -------------------------------- As a quick look plot it can be helpful to plot the quadratic offset (theta squared) distribution of the events. .. GENERATED FROM PYTHON SOURCE LINES 122-137 .. code-block:: Python position = SkyCoord(ra=83.63, dec=22.01, unit="deg", frame="icrs") theta2_axis = MapAxis.from_bounds(0, 0.2, nbin=20, interp="lin", unit="deg2") observations = data_store.get_observations([23523, 23526]) theta2_table = make_theta_squared_table( observations=observations, position=position, theta_squared_axis=theta2_axis, ) plt.figure(figsize=(10, 5)) plot_theta_squared_table(theta2_table) plt.show() .. image-sg:: /tutorials/data/images/sphx_glr_hess_006.png :alt: hess :srcset: /tutorials/data/images/sphx_glr_hess_006.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 138-146 Exercises --------- - Find the `OBS_ID` for the runs of the Crab nebula - Compute the expected number of background events in the whole RoI for `OBS_ID=23523` in the 1 TeV to 3 TeV energy band, from the background IRF. .. GENERATED FROM PYTHON SOURCE LINES 149-156 Next steps ---------- Now you know how to access and work with H.E.S.S. data. All other tutorials and documentation apply to H.E.S.S. and CTAO or any other IACT that provides DL3 data and IRFs in the standard format. .. _sphx_glr_download_tutorials_data_hess.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/gammapy/gammapy-webpage/v1.3?urlpath=lab/tree/notebooks/1.3/tutorials/data/hess.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: hess.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: hess.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: hess.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_