23 from lsst.pex.config
import ListField
24 from lsst.afw.coord
import IcrsCoord
25 import lsst.afw.geom
as afwGeom
26 from .cachingSkyMap
import CachingSkyMap
27 from .tractInfo
import ExplicitTractInfo
29 __all__ = [
"DiscreteSkyMap"]
33 """Configuration for the DiscreteSkyMap""" 34 raList = ListField(dtype=float, default=[], doc=
"Right Ascensions of tracts (ICRS, degrees)")
35 decList = ListField(dtype=float, default=[], doc=
"Declinations of tracts (ICRS, degrees)")
36 radiusList = ListField(dtype=float, default=[], doc=
"Radii of tracts (degrees)")
39 super(DiscreteSkyMapConfig, self).
validate()
41 raise ValueError(
"Number of radii (%d) and RAs (%d) do not match" %
44 raise ValueError(
"Number of radii (%d) and Decs (%d) do not match" %
49 """Discrete sky map pixelization. 51 We put a square Tract at each of the nominated coordinates. 53 ConfigClass = DiscreteSkyMapConfig
59 @param[in] config: an instance of self.ConfigClass; if None the default config is used 60 @param[in] version: software version of this class, to retain compatibility with old instances 62 numTracts = len(config.radiusList)
63 super(DiscreteSkyMap, self).
__init__(numTracts, config, version)
66 """Generate the TractInfo for a particular index""" 67 center = IcrsCoord(self.
config.raList[index] * afwGeom.degrees,
68 self.
config.decList[index] * afwGeom.degrees)
69 radius = self.
config.radiusList[index]
70 wcs = self.
_wcsFactory.makeWcs(crPixPos=afwGeom.Point2D(0, 0), crValCoord=center)
72 radius * afwGeom.degrees, self.
config.tractOverlap * afwGeom.degrees, wcs)
def __init__(self, config, version=0)
def generateTract(self, index)