/*** File libwcs/fortcat.c *** April 3, 2003 *** By Jessica Mink, jmink@cfa.harvard.edu *** Harvard-Smithsonian Center for Astrophysics *** Copyright (C) 2001-2003 *** Smithsonian Astrophysical Observatory, Cambridge, MA, USA This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Correspondence concerning WCSTools should be addressed as follows: Internet email: jmink@cfa.harvard.edu Postal address: Jessica Mink Smithsonian Astrophysical Observatory 60 Garden St. Cambridge, MA 02138 USA */ /* Fortran wrappers for subroutines which read astronomical catalogs * * Catalogs supported include: USNO-A2.0, USNO_SA2.0, ACT, Tycho 2, SAO * TDC binary format (SAO, PPM, Yale Bright Star, IRAS Point Source Catalogs) * SAO TDC ASCII format, and Starbase tab-delimited format * * For shell-level searches, use WCSTools scat, documented at * http://tdc-www.harvard.edu/software/wcstools/scat/ * * int catread_() Read catalog stars in specified region of the sky * int catrnum_() Read catalog stars with specified numbers */ #include #include #include #include #include #include #include "wcs.h" #include "wcscat.h" /* default pathname for catalog, used if catalog file not found in current working directory, but overridden by WCS_CATDIR environment variable */ char catdir[64]="/data/catalogs"; static struct StarCat **starcat; /* Catalog data structure */ /* CATREAD -- Read ASCII stars in specified region using ctgread() */ void catread_ (catfile, distsort, cra, cdec, dra, ddec, drad, csysout, eqout, epout, mag1, mag2, nsmax, nlog, nstars, xnum, xra, xdec, xpra, xpdec, xmag, xmagb) char *catfile; /* Name of reference star catalog file */ int distsort; /* 1 to sort stars by distance from center */ double cra; /* Search center J2000 right ascension in degrees */ double cdec; /* Search center J2000 declination in degrees */ double dra; /* Search half width in right ascension in degrees */ double ddec; /* Search half-width in declination in degrees */ double drad; /* Limiting separation in degrees (ignore if 0) */ char *csysout; /* Search coordinate system */ double eqout; /* Search coordinate equinox */ double epout; /* Proper motion epoch (0.0 for no proper motion) */ double mag1,mag2; /* Limiting magnitudes (none if equal) */ int nsmax; /* Maximum number of stars to be returned */ int nlog; /* Logging frequency */ int *nstars; /* Number of catalog stars found (returned) */ double *xnum; /* Array of ID numbers (returned) */ double *xra; /* Array of right ascensions (returned) */ double *xdec; /* Array of declinations (returned) */ double *xpra; /* Array of right ascension proper motions (returned) */ double *xpdec; /* Array of declination proper motions (returned) */ double *xmag; /* Array of magnitudes (returned) */ double *xmagb; /* Array of second magnitudes (returned) */ { int refcat; /* Catalog code from wcscat.h */ char **tobj; /* Array of object names (ignored) */ int *tc; /* Array of fluxes (ignored) */ int nread; /* Number of stars read from catalog */ int sysout; /* Search coordinate system */ tc = NULL; tobj = NULL; refcat = CatCode (catfile); sysout = wcscsys (csysout); nread = ctgread (catfile, refcat, distsort, cra, cdec, dra, ddec, drad, sysout, eqout, epout, mag1, mag2, nsmax, starcat, xnum, xra, xdec, xpra, xpdec, xmag, xmagb, tc, tobj, nlog); /* Return number of stars read or maximum, which ever is lower */ if (nread < nsmax) *nstars = nread; else *nstars = nsmax; return; } /* CATRNUM -- Read ASCII stars with specified numbers using ctgrnum() */ void catrnum_ (catfile, nnum, csysout, eqout, epout, match, nlog, nstars, xnum, xra, xdec, xpra, xpdec, xmag, xmagb) char *catfile; /* Name of reference star catalog file */ int nnum; /* Number of stars to look for */ char *csysout; /* Search coordinate system */ double eqout; /* Search coordinate equinox */ double epout; /* Proper motion epoch (0.0 for no proper motion) */ int match; /* 1 to match star number exactly, else sequence num.*/ int nlog; /* Logging frequency */ int *nstars; /* Number of catalog stars found (returned) */ double *xnum; /* Array of star numbers to look for */ double *xra; /* Array of right ascensions (returned) */ double *xdec; /* Array of declinations (returned) */ double *xpra; /* Array of right ascension proper motions (returned) */ double *xpdec; /* Array of declination proper motions (returned) */ double *xmag; /* Array of magnitudes (returned) */ double *xmagb; /* Array of second magnitudes (returned) */ { int refcat; /* Catalog code from wcscat.h */ int *tc; /* Array of fluxes (ignore) */ char **tobj; /* Array of object names (ignored) */ int sysout; /* Search coordinate system */ int nread; /* Number of stars read from catalog */ tc = NULL; tobj = NULL; sysout = wcscsys (csysout); refcat = CatCode (catfile); nread = ctgrnum (catfile,refcat, nnum,sysout,eqout,epout,match,starcat, xnum,xra,xdec,xpra,xpdec,xmag,xmagb,tc,tobj,nlog); *nstars = nread; return; } /* * Feb 16 2001 New subroutines * Sep 19 2001 Drop fitshead.h; it is in wcs.h * * Apr 3 2003 Use CatCode() instead of RefCat(); add nstars to catrnum_() */