.. 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. `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 at https://hess-confluence.desy.de/ 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 this `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 40-51 .. 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, WcsGeom .. GENERATED FROM PYTHON SOURCE LINES 52-54 Check setup ----------- .. GENERATED FROM PYTHON SOURCE LINES 54-60 .. 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.19 machine : x86_64 system : Linux Gammapy package: version : 1.3.dev241+g0271bebfc 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.0 astropy : 5.2.2 regions : 0.8 click : 8.1.7 yaml : 6.0.1 IPython : 8.18.1 jupyterlab : not installed matplotlib : 3.8.4 pandas : not installed healpy : 1.16.6 iminuit : 2.25.2 sherpa : 4.16.0 naima : 0.10.0 emcee : 3.1.6 corner : 2.2.2 ray : 2.20.0 Gammapy environment variables: GAMMAPY_DATA : /home/runner/work/gammapy-docs/gammapy-docs/gammapy-datasets/dev .. GENERATED FROM PYTHON SOURCE LINES 61-69 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 71-72 Create and get info on the data store .. GENERATED FROM PYTHON SOURCE LINES 72-77 .. 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/dev/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 78-79 Preview an excerpt from the observation table .. GENERATED FROM PYTHON SOURCE LINES 79-82 .. 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 83-84 Get a single observation .. GENERATED FROM PYTHON SOURCE LINES 84-87 .. code-block:: Python obs = data_store.obs(23523) .. GENERATED FROM PYTHON SOURCE LINES 88-89 Select and peek events .. GENERATED FROM PYTHON SOURCE LINES 89-92 .. 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 93-94 Peek the effective area .. GENERATED FROM PYTHON SOURCE LINES 94-97 .. 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 98-99 Peek the energy dispersion .. GENERATED FROM PYTHON SOURCE LINES 99-102 .. 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 103-104 Peek the psf .. GENERATED FROM PYTHON SOURCE LINES 104-106 .. 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 107-108 Peek the background rate .. GENERATED FROM PYTHON SOURCE LINES 108-111 .. 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 112-118 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 118-133 .. 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 134-142 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 145-152 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 CTA 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/main?urlpath=lab/tree/notebooks/dev/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 ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_