def crossMatchTo(self, reference, radius=<NUM_LIT:1>*u.arcsec, visualize=False):
<EOL>i_ref, d2d_ref, d3d_ref = self.coordinates.match_to_catalog_sky(reference.atEpoch(self.coordinates.obstime))<EOL>ok = d2d_ref < radius<EOL>self.speak('<STR_LIT>'.format(np.sum(ok), radius))<EOL>if visualize:<EOL><INDENT>self.speak('<STR_LIT:p>')<EOL>plt.hist(d2d_ref.arcsec, range=(<NUM_LIT:0>,<NUM_LIT:15>))<EOL>plt.axvline(radius.arcsec)<EOL>plt.xlabel('<STR_LIT>')<EOL>plt.ylabel('<STR_LIT>')<EOL><DEDENT>return ok, i_ref[ok]<EOL>
Cross-match this catalog onto another reference catalog.
If proper motions are included in the reference, then
its coordinates will be propagated to the obstime/epoch
of this current catalog.

Parameters
----------

reference : Constellation
    A reference Constellation to which we want to
    cross-match the stars in this catalog. Most likely,
    you'll want to use Gaia for this (since it has
    good astrometry and good proper motions).

radius : float, with astropy units of angle
    How close to objects need to be in the cross-match
    for them to be considered a matched pair?

Returns
-------

i_this : array of indices
    The elements of this catalog that are matched.

i_ref : array of indices
    The elements of the reference catalog, corresponding to