Source code for galsim.deltafunction

# Copyright (c) 2012-2023 by the GalSim developers team on GitHub
# https://github.com/GalSim-developers
#
# This file is part of GalSim: The modular galaxy image simulation toolkit.
# https://github.com/GalSim-developers/GalSim
#
# GalSim is free software: redistribution and use in source and binary forms,
# with or without modification, are permitted provided that the following
# conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
#    list of conditions, and the disclaimer given in the accompanying LICENSE
#    file.
# 2. Redistributions in binary form must reproduce the above copyright notice,
#    this list of conditions, and the disclaimer given in the documentation
#    and/or other materials provided with the distribution.
#

__all__ = [ 'DeltaFunction' ]

import numpy as np
import math

from . import _galsim
from .gsobject import GSObject
from .gsparams import GSParams
from .utilities import doc_inherit


[docs]class DeltaFunction(GSObject): """A class describing a DeltaFunction surface brightness profile. The DeltaFunction surface brightness profile is characterized by a single property, its ``flux``. A DeltaFunction can be initialized with a specified flux. Parameters: flux: The flux (in photons/cm^2/s) of the profile. [default: 1] gsparams: An optional `GSParams` argument. [default: None] """ _opt_params = { "flux" : float } _mock_inf = 1.e300 # Some arbitrary very large number to use when we need infinity. _has_hard_edges = False _is_axisymmetric = True _is_analytic_x = False _is_analytic_k = True def __init__(self, flux=1., gsparams=None): self._gsparams = GSParams.check(gsparams) self._flux = float(flux) def __eq__(self, other): return (self is other or (isinstance(other, DeltaFunction) and self.flux == other.flux and self.gsparams == other.gsparams)) def __hash__(self): return hash(("galsim.DeltaFunction", self.flux, self.gsparams)) def __repr__(self): return 'galsim.DeltaFunction(flux=%r, gsparams=%r)'%(self.flux, self.gsparams) def __str__(self): s = 'galsim.DeltaFunction(' if self.flux != 1.0: s += 'flux=%s'%self.flux s += ')' return s @property def _maxk(self): return DeltaFunction._mock_inf @property def _stepk(self): return DeltaFunction._mock_inf @property def _max_sb(self): return DeltaFunction._mock_inf def _xValue(self, pos): if pos.x == 0. and pos.y == 0.: return DeltaFunction._mock_inf else: return 0. def _kValue(self, kpos): return self.flux def _shoot(self, photons, rng): flux_per_photon = self.flux / len(photons) photons.x = 0. photons.y = 0. photons.flux = flux_per_photon def _drawKImage(self, image, jac=None): image.array[:,:] = self.flux
[docs] @doc_inherit def withFlux(self, flux): return DeltaFunction(flux=flux, gsparams=self.gsparams)