Source code for lenstronomy.LightModel.Profiles.moffat
__author__ = "sibirrer"
# this file contains a class to make a Moffat profile
__all__ = ["Moffat"]
[docs]class Moffat(object):
"""This class contains functions to evaluate a Moffat surface brightness profile.
.. math::
I(r) = I_0 * (1 + (r/\\alpha)^2)^{-\\beta}
with :math:`I_0 = amp`.
"""
[docs] def __init__(self):
self.param_names = ["amp", "alpha", "beta", "center_x", "center_y"]
self.lower_limit_default = {
"amp": 0,
"alpha": 0,
"beta": 0,
"center_x": -100,
"center_y": -100,
}
self.upper_limit_default = {
"amp": 100,
"alpha": 10,
"beta": 10,
"center_x": 100,
"center_y": 100,
}
[docs] def function(self, x, y, amp, alpha, beta, center_x=0, center_y=0):
"""2D Moffat profile.
:param x: x-position (angle)
:param y: y-position (angle)
:param amp: normalization
:param alpha: scale
:param beta: exponent
:param center_x: x-center
:param center_y: y-center
:return: surface brightness
"""
x_shift = x - center_x
y_shift = y - center_y
return amp * (1.0 + (x_shift**2 + y_shift**2) / alpha**2) ** (-beta)