Note

You are not reading the most up to date version of Gammapy documentation.
Access the latest stable version v1.3 or the list of Gammapy releases.

SensitivityEstimator

class gammapy.scripts.SensitivityEstimator(irf, livetime, slope=2.0, alpha=0.2, sigma=5.0, gamma_min=10.0, bkg_sys=0.05, random=0)[source]

Bases: object

Estimate differential sensitivity for the ON/OFF method, ie 1D analysis

Parameters:

irf : CTAPerf

IRF object

livetime : Quantity

Livetime (object with the units of time), e.g. 5*u.h

slope : float, optional

Index of the spectral shape (Power-law), should be positive (>0)

alpha : float, optional

On/OFF normalisation

sigma : float, optional

Minimum significance

gamma_min : float, optional

Minimum number of gamma-rays

bkg_sys : float, optional

Fraction of Background systematics relative to the number of ON counts

random: : int, optional

Number of random trial to derive the number of gamma-rays

Notes

For the moment, only the differential point-like sensitivity is computed at a fixed offset. This class allows to determine for each reconstructed energy bin the flux associated to the number of gamma-ray events for which the significance is ‘sigma’, and being larger than ‘gamma_min’ and ‘bkg_sys’% larger than the number of background events in the ON region

TODO:

  • make the computation for any source size
  • compute the integral sensitivity
  • Add options to use different spectral shape?

Examples

Compute and plot a sensitivity curve for CTA:

from gammapy.scripts import CTAPerf, SensitivityEstimator
filename = '$GAMMAPY_EXTRA/datasets/cta/perf_prod2/point_like_non_smoothed/South_5h.fits.gz'
irf = CTAPerf.read(filename)
sens = SensitivityEstimator(irf=irf, livetime='5h')
sens.run()
sens.print_results()
sens.plot()

Further examples in cta_sensitivity.html .

Attributes Summary

diff_sensi_table Differential sensitivity table (Table).

Methods Summary

get_1TeV_differential_flux(excess_counts, …) Compute the differential fluxes at 1 TeV.
get_bkg(bkg_rate) Return the Background rate for each energy bin
get_excess(bkg_counts) Compute the gamma-ray excess for each energy bin.
plot([ax]) Plot the sensitivity curve.
print_results() Print results to the console.
run() Run the algorithm to compute the differential sensitivity as explained in the document of the class.

Attributes Documentation

diff_sensi_table

Differential sensitivity table (Table).

Methods Documentation

get_1TeV_differential_flux(excess_counts, model, aeff, rmf)[source]

Compute the differential fluxes at 1 TeV.

Parameters:

excess_counts : ndarray

Array of gamma-ray excess (bins in reconstructed energy)

model : SpectralModel

Spectral model

aeff : EffectiveAreaTable

Effective area

rmf : EnergyDispersion

RMF

Returns:

flux : Quantity

Array of 1TeV fluxes (bins in reconstructed energy)

get_bkg(bkg_rate)[source]

Return the Background rate for each energy bin

Parameters:

bkg_rate : BgRateTable

Table of background rate

Returns:

rate : ndarray

Return an array of background counts (bins in reconstructed energy)

get_excess(bkg_counts)[source]

Compute the gamma-ray excess for each energy bin.

Parameters:

bkg_counts : ndarray

Array of background counts (bins in reconstructed energy)

Returns:

count : ndarray

Array of gamma-ray excess (bins in reconstructed energy)

Notes

Find the number of needed gamma excess events using newtons method. Defines a function significance_on_off(x, off, alpha) - self.sigma and uses scipy.optimize.newton to find the x for which this function is zero.

plot(ax=None)[source]

Plot the sensitivity curve.

print_results()[source]

Print results to the console.

run()[source]

Run the algorithm to compute the differential sensitivity as explained in the document of the class.