@classmethod
def process(cls, config_input, logger=None):
    """Parse the input field of the config dict.

        :param config_input:    The configuration dict.
        :param logger:          A logger object for logging debug info. [default: None]

        :returns: stars, wcs, pointing

        stars is a list of Star instances with the initial data.
        wcs is a dict of WCS solutions indexed by chipnum.
        pointing is either a galsim.CelestialCoord or None.
        """
    import piff
    input_handler_class = getattr(piff, 'Input' + config_input.get('type',
        'Files'))
    input_handler = input_handler_class(config_input, logger)
    stars = input_handler.makeStars(logger)
    if len(stars) == 0:
        raise RuntimeError('No stars read in from input catalog(s).')
    wcs = input_handler.getWCS(logger)
    pointing = input_handler.getPointing(logger)
    return stars, wcs, pointing
