For physical optics PSFs, we require a model of the pupil obscuration, which I propose should be a part of afw.cameraGeom.Camera. In particular, I plan to add abstract base classes
and make the following API changes:
- Camera gains a ._pupilFactory attribute and Camera.__init__ gains a pupilFactory kwarg.
- camera factories makeCameraFromPath and makeCameraFromCatalogs gain a pupilFactory kwarg with default value equal to cameraGeom.PupilFactory
- CameraMapper gains an attribute pupilFactoryClass with value cameraGeom.pupilFactory. Subclasses (e.g., HscMapper) can then set this attribute to a camera-specific pupilFactory as desired.
- CameraMapper._makeCamera passes self.pupilFactoryClass to makeCameraFromPath
See CLO post here for more details. Also, since some discussion already exists on the CLO post, please add additional comments there.