Power law norm spectral model#

This model parametrises a power law spectral correction with a norm and tilt parameter.

Example plot#

Here is an example plot of the model:

from astropy import units as u
import matplotlib.pyplot as plt
from gammapy.modeling.models import (
    Models,
    PowerLawNormSpectralModel,
    PowerLawSpectralModel,
    SkyModel,
    TemplateSpectralModel,
)

energy_bounds = [0.1, 100] * u.TeV

energy = [0.3, 1, 3, 10, 30] * u.TeV
values = [40, 30, 20, 10, 1] * u.Unit("TeV-1 s-1 cm-2")
template = TemplateSpectralModel(energy, values)
norm = PowerLawNormSpectralModel(
    norm=5,
    reference=1 * u.TeV,
)

template.plot(energy_bounds=energy_bounds, label="Template model")
pwl_norm = template * norm
pwl_norm.plot(energy_bounds, label="Template model with PowerLaw norm correction")
plt.legend(loc="best")
plt.grid(which="both")
plot powerlaw norm spectral

YAML representation#

Here is an example YAML file using the model:

model = SkyModel(spectral_model=pwl_norm, name="power-law-norm-model")
models = Models([model])

print(models.to_yaml())
components:
-   name: power-law-norm-model
    type: SkyModel
    spectral:
        type: CompoundSpectralModel
        model1:
            type: TemplateSpectralModel
            parameters:
            -   name: norm
                value: 1.0
            energy:
                data:
                - 0.3
                - 1.0
                - 3.0
                - 10.0
                - 30.0
                unit: TeV
            values:
                data:
                - 40.0
                - 30.0
                - 20.0
                - 10.0
                - 1.0
                unit: 1 / (cm2 s TeV)
        model2:
            type: PowerLawNormSpectralModel
            parameters:
            -   name: norm
                value: 5.0
            -   name: tilt
                value: 0.0
            -   name: reference
                value: 1.0
                unit: TeV
        operator: mul

Gallery generated by Sphinx-Gallery