Skip to content

Instrument Response Functions (IRFs)

Instrument Response Functions (IRFs) define the sensitivity and performance characteristics of a gamma-ray observatory under specific observing conditions. sensipy uses CTAO IRFs to calculate sensitivity curves and simulate observations.

IRFs include information about:

  • Effective area: How sensitively the telescope collects photons
  • Point spread function (PSF): Angular resolution
  • Energy dispersion: Energy resolution
  • Background rates: Expected background counts

sensipy supports the following CTA IRF productions:

  • prod5-v0.1 (Alpha Configuration, current recommendation from CTAO)
  • prod3b-v2 (Legacy support)

Automatically with the built-in IRF downloader

Section titled “Automatically with the built-in IRF downloader”

You can use the built-in command to download the latest CTAO IRFs:

Terminal window
uv run sensipy-download-ctao-irfs

This will automatically download and organize the latest CTAO IRFs to the ./IRFs/CTAO directory.

  1. Visit the Zenodo repository

    Go to the CTA IRF Zenodo page to access the IRF files.

  2. Download the required FITS files

    Download the .tar.gz archives for the sites, zenith angles, and durations you need. For example:

    • CTA-Performance-prod5-v0.1-North-20deg.FITS.tar.gz
    • CTA-Performance-prod5-v0.1-South-20deg.FITS.tar.gz
  3. Extract the archives

    Extract the downloaded files into an organized directory structure.

Organize your IRF files following this structure:

  • DirectoryIRFs/CTAO/ (root directory for all IRFs)
    • Directoryprod5-v0.1/
      • Directoryfits/
        • CTA-Performance-prod5-v0.1-North-20deg.FITS.tar.gz
        • CTA-Performance-prod5-v0.1-South-20deg.FITS.tar.gz
        • CTA-Performance-prod5-v0.1-North-40deg.FITS.tar.gz
    • Directoryprod3b-v2/
      • Directoryfits/

Once your IRFs are downloaded and organized, you can load them using the IRFHouse class:

from sensipy.ctaoirf import IRFHouse
# Create an IRF house pointing to your IRF directory
house = IRFHouse(base_directory="./IRFs/CTAO")
# Load a specific IRF
irf = house.get_irf(
site="south",
configuration="alpha",
zenith=20,
duration=1800,
azimuth="average",
version="prod5-v0.1",
)
print(irf)