PLSuperExpCutoff3FGL¶
-
class
gammapy.spectrum.models.
PLSuperExpCutoff3FGL
(index_1=1.5, index_2=2, amplitude=<Quantity 1.e-12 1 / (cm2 s TeV)>, reference=<Quantity 1. TeV>, ecut=<Quantity 10. TeV>)[source]¶ Bases:
gammapy.spectrum.models.SpectralModel
Spectral super exponential cutoff power-law model used for 3FGL.
\[\phi(E) = \phi_0 \cdot \left(\frac{E}{E_0}\right)^{-\Gamma_1} \exp \left( \left(\frac{E_0}{E_{C}} \right)^{\Gamma_2} - \left(\frac{E}{E_{C}} \right)^{\Gamma_2} \right)\]Parameters: index_1 :
Quantity
\(\Gamma_1\)
index_2 :
Quantity
\(\Gamma_2\)
amplitude :
Quantity
\(\phi_0\)
reference :
Quantity
\(E_0\)
ecut :
Quantity
\(E_{C}\)
Examples
This is how to plot the default
PLSuperExpCutoff3FGL
model:from astropy import units as u from gammapy.spectrum.models import PLSuperExpCutoff3FGL secpl_3fgl = PLSuperExpCutoff3FGL() secpl_3fgl.plot(energy_range=[0.1, 100] * u.TeV) plt.show()
Methods Summary
__call__
(energy)Call evaluate method of derived classes copy
()A deep copy. energy_flux
(emin, emax, **kwargs)Compute energy flux in given energy range. energy_flux_error
(emin, emax, **kwargs)Compute energy flux in given energy range with error propagation. evaluate
(energy, amplitude, reference, ecut, …)Evaluate the model (static function). evaluate_error
(energy)Evaluate spectral model with error propagation. from_dict
(val)Create from dict. integral
(emin, emax, **kwargs)Integrate spectral model numerically. integral_error
(emin, emax, **kwargs)Integrate spectral model numerically with error propagation. inverse
(value[, emin, emax])Return energy for a given function value of the spectral model. plot
(energy_range[, ax, energy_unit, …])Plot spectral model curve. plot_error
(energy_range[, ax, energy_unit, …])Plot spectral model error band. spectral_index
(energy[, epsilon])Compute spectral index at given energy. to_dict
()Convert to dict. Methods Documentation
-
__call__
(energy)¶ Call evaluate method of derived classes
-
copy
()¶ A deep copy.
-
energy_flux
(emin, emax, **kwargs)¶ Compute energy flux in given energy range.
\[G(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}E \phi(E)dE\]Parameters: emin, emax :
Quantity
Lower and upper bound of integration range.
**kwargs : dict
Keyword arguments passed to func:
integrate_spectrum
-
energy_flux_error
(emin, emax, **kwargs)¶ Compute energy flux in given energy range with error propagation.
\[G(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}E \phi(E)dE\]Parameters: emin, emax :
Quantity
Lower bound of integration range.
**kwargs : dict
Keyword arguments passed to
integrate_spectrum()
Returns: energy_flux, energy_flux_error : tuple of
Quantity
Tuple of energy flux and energy flux error.
-
static
evaluate
(energy, amplitude, reference, ecut, index_1, index_2)[source]¶ Evaluate the model (static function).
-
evaluate_error
(energy)¶ Evaluate spectral model with error propagation.
Parameters: energy :
Quantity
Energy at which to evaluate
Returns: flux, flux_error : tuple of
Quantity
Tuple of flux and flux error.
-
classmethod
from_dict
(val)¶ Create from dict.
-
integral
(emin, emax, **kwargs)¶ Integrate spectral model numerically.
\[F(E_{min}, E_{max}) = \int_{E_{min}}^{E_{max}}\phi(E)dE\]If array input for
emin
andemax
is given you have to setintervals=True
if you want the integral in each energy bin.Parameters: emin, emax :
Quantity
Lower and upper bound of integration range.
**kwargs : dict
Keyword arguments passed to
integrate_spectrum()
-
integral_error
(emin, emax, **kwargs)¶ Integrate spectral model numerically with error propagation.
Parameters: emin, emax :
Quantity
Lower adn upper bound of integration range.
**kwargs : dict
Keyword arguments passed to func:
integrate_spectrum
Returns: integral, integral_error : tuple of
Quantity
Tuple of integral flux and integral flux error.
-
inverse
(value, emin=<Quantity 0.1 TeV>, emax=<Quantity 100. TeV>)¶ Return energy for a given function value of the spectral model.
Calls the
scipy.optimize.brentq
numerical root finding method.Parameters: value :
Quantity
Function value of the spectral model.
emin :
Quantity
Lower bracket value in case solution is not unique.
emax :
Quantity
Upper bracket value in case solution is not unique.
Returns: energy :
Quantity
Energies at which the model has the given
value
.
-
plot
(energy_range, ax=None, energy_unit='TeV', flux_unit='cm-2 s-1 TeV-1', energy_power=0, n_points=100, **kwargs)¶ Plot spectral model curve.
kwargs are forwarded to
matplotlib.pyplot.plot
By default a log-log scaling of the axes is used, if you want to change the y axis scaling to linear you can use:
Parameters: ax :
Axes
, optionalAxis
energy_range :
Quantity
Plot range
energy_unit : str,
Unit
, optionalUnit of the energy axis
flux_unit : str,
Unit
, optionalUnit of the flux axis
energy_power : int, optional
Power of energy to multiply flux axis with
n_points : int, optional
Number of evaluation nodes
Returns: ax :
Axes
, optionalAxis
-
plot_error
(energy_range, ax=None, energy_unit='TeV', flux_unit='cm-2 s-1 TeV-1', energy_power=0, n_points=100, **kwargs)¶ Plot spectral model error band.
Note
This method calls
ax.set_yscale("log", nonposy='clip')
andax.set_xscale("log", nonposx='clip')
to create a log-log representation. The additional argumentnonposx='clip'
avoids artefacts in the plot, when the error band extends to negative values (see also https://github.com/matplotlib/matplotlib/issues/8623).When you call
plt.loglog()
orplt.semilogy()
explicitely in your plotting code and the error band extends to negative values, it is not shown correctly. To circumvent this issue also useplt.loglog(nonposx='clip', nonposy='clip')
orplt.semilogy(nonposy='clip')
.Parameters: ax :
Axes
, optionalAxis
energy_range :
Quantity
Plot range
energy_unit : str,
Unit
, optionalUnit of the energy axis
flux_unit : str,
Unit
, optionalUnit of the flux axis
energy_power : int, optional
Power of energy to multiply flux axis with
n_points : int, optional
Number of evaluation nodes
**kwargs : dict
Keyword arguments forwarded to
matplotlib.pyplot.fill_between
Returns: ax :
Axes
, optionalAxis
-
spectral_index
(energy, epsilon=1e-05)¶ Compute spectral index at given energy.
Parameters: energy :
Quantity
Energy at which to estimate the index
epsilon : float
Fractional energy increment to use for determining the spectral index.
Returns: index : float
Estimated spectral index.
-
to_dict
()¶ Convert to dict.
-