11     nStars = lsst.pex.config.Field(dtype=int, default=1,
 
   12                                    doc=
"Number of stars to add")
 
   13     magnitude = lsst.pex.config.Field(dtype=float, default=20.0,
 
   14                                       doc=
"Magnitude of all stars to be added")
 
   15     margin = lsst.pex.config.Field(dtype=int, default=
None, optional=
True,
 
   16                                    doc=
"Size of margin at edge that should not be added")
 
   17     seed = lsst.pex.config.Field(dtype=int, default=1,
 
   18                                  doc=
"Seed for random number generator")
 
   22     ConfigClass = RandomStarFakeSourcesConfig
 
   25         BaseFakeSourcesTask.__init__(self, **kwargs)
 
   26         print(
"RNG seed:", self.
config.seed)
 
   30     def run(self, exposure, background):
 
   32         self.
log.
info(
"Adding fake random stars")
 
   33         psf = exposure.getPsf()
 
   34         psfBBox = psf.computeImage().getBBox()
 
   35         margin = int(np.floor(
max(psfBBox.getWidth(), psfBBox.getHeight())/2)) + 1
 
   36         if self.
config.margin 
is not None:
 
   37             if self.
config.margin < margin:
 
   38                 raise ValueError(
"margin is not large enough for PSF")
 
   39         bboxI = exposure.getBBox(lsst.afw.image.PARENT)
 
   41         bboxD = lsst.afw.geom.BoxD(bboxI)
 
   42         flux = exposure.getCalib().getFlux(self.
config.magnitude)
 
   43         md = exposure.getMetadata()
 
   44         for i 
in range(self.
config.nStars):
 
   45             x = self.
rng.flat(bboxD.getMinX(), bboxD.getMaxX())
 
   46             y = self.
rng.flat(bboxD.getMinY(), bboxD.getMaxY())
 
   47             md.set(
"FAKE%d" % i, 
"%.3f, %.3f" % (x, y))
 
   48             self.
log.
info(
"Adding fake at: %.1f,%.1f" % (x, y))
 
   49             psfImage = psf.computeImage(lsst.afw.geom.Point2D(x, y))
 
   52             psfMaskedImage = lsst.afw.image.MaskedImageF(psfImage.convertF())
 
   54             mask = psfMaskedImage.getMask()
 
   60             subMaskedImage = exposure.getMaskedImage().
Factory(exposure.getMaskedImage(),
 
   61                                                                psfImage.getBBox(lsst.afw.image.PARENT),
 
   62                                                                lsst.afw.image.PARENT)
 
   63             subMaskedImage += psfMaskedImage