Changeset 8514
- Timestamp:
- Aug 23, 2006, 10:31:27 AM (20 years ago)
- Location:
- trunk/Ohana/src/gastro
- Files:
-
- 2 added
- 5 deleted
- 5 edited
-
Makefile (modified) (2 diffs)
-
include/gastro.h (modified) (5 diffs)
-
src/ConfigInit.c (modified) (1 diff)
-
src/delta.number (deleted)
-
src/g2mass.c (deleted)
-
src/gcatalog.c (deleted)
-
src/getgsc.c (added)
-
src/getptolemy.c (added)
-
src/gptolemy.c (deleted)
-
src/greference.c (modified) (5 diffs)
-
src/gregions2.c (deleted)
-
src/misc.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/gastro/Makefile
r8299 r8514 26 26 $(SRC)/gstars.$(ARCH).o \ 27 27 $(SRC)/gargs.$(ARCH).o \ 28 $(SRC)/gregions2.$(ARCH).o \29 $(SRC)/gcatalog.$(ARCH).o \30 28 $(SRC)/gcenter.$(ARCH).o \ 31 29 $(SRC)/granges.$(ARCH).o \ … … 40 38 $(SRC)/greference.$(ARCH).o \ 41 39 $(SRC)/getusno.$(ARCH).o \ 40 $(SRC)/getgsc.$(ARCH).o \ 41 $(SRC)/getptolemy.$(ARCH).o \ 42 42 $(SRC)/plotstuff.$(ARCH).o \ 43 $(SRC)/gptolemy.$(ARCH).o \44 $(SRC)/g2mass.$(ARCH).o \45 43 $(SRC)/misc.$(ARCH).o 44 45 #$(SRC)/gregions2.$(ARCH).o \ 46 #$(SRC)/gcatalog.$(ARCH).o \ 47 #$(SRC)/gptolemy.$(ARCH).o \ 48 #$(SRC)/g2mass.$(ARCH).o \ 46 49 47 50 gastro: $(BIN)/gastro.$(ARCH) -
trunk/Ohana/src/gastro/include/gastro.h
r4828 r8514 44 44 double F_DEC; 45 45 46 char GSCFILE[256], GSC _DIR[256], LONEOS_REGION_FILE[256];46 char GSCFILE[256], GSCDIR[256], LONEOS_REGION_FILE[256]; 47 47 double ASEC_PIX; 48 48 char ROUGH_ASTROMETRY[64]; … … 80 80 } USNOstats; 81 81 82 typedef struct {83 char name[10];84 double RA[2], DEC[2];85 } CatalogRegion;86 87 82 /* this seems to be a problem: is not included from math.h with the -ansi flag */ 88 83 extern double hypot PROTO((double, double)); 89 84 90 char **find_dec_bands PROTO((CatalogRegion area, char **names, int *Nnames)); 91 char **gregions PROTO((CatStats *catstats, int *nnames)); 92 char **load_ra_blocks PROTO((int Ndec, CatalogRegion area, char **names, int *Ntnames)); 93 SStars *get_catalog_stars PROTO((double *, double *, double *, int, double, double, double, double, int *)); 94 SStars *get_stars PROTO((char *, int *)); 85 SStars *getptolemy PROTO((CatStats *catstats, int *NSTARS)); 86 SStars *getgsc PROTO((CatStats *catstats, int *NSTARS)); 95 87 USNOdata *getusno PROTO((USNOstats *usnostats, CatStats *catstats, int *Nusno)); 96 88 SStars *gstars PROTO((char *file, int *NSTARS, Coords *coords, int *NX, int *NY, double *dNdM)); … … 101 93 void PrepPlotting PROTO((int Npts, Graphdata *graphmode, int N)); 102 94 void XDead PROTO(()); 103 void ahelp PROTO(());104 95 void alter_header PROTO((char *, char **, int, double, double, double, double, double, double, double, double, int)); 105 96 void area_of_region PROTO((CatStats *region)); 106 void args PROTO((int *, char **));107 97 void define_region PROTO((CatStats *catstats, Coords *coords, int NX, int NY)); 108 void delta PROTO((SStars *, SStars *, int, int, double *, double *, double *, double *));109 int dms_to_ddd PROTO((double *Value, char *string));110 void extract_catalog PROTO((char *, double **, double **, double **, int *));111 98 void find_shift PROTO((SStars *, SStars *, int, int, double, double, int *, double *, double *, double *)); 112 int g2mass PROTO((char *fullpath, SStars **stars, int *Nstars));113 99 void gargs PROTO((int *argc, char **argv, Coords *coords)); 114 100 int gaussj PROTO((double **a, int n, double **b, int m)); 115 int gcatalog PROTO((char *filename, SStars **stars, int *Nstars));116 101 int gcenter PROTO((SStars *stars1in, SStars *stars2, int N1, int N2, Coords *coords, int NX, int NY, double *dR)); 117 102 int get_region_coords PROTO((double *ra, double *dec, int rnumber, char *side)); … … 120 105 void gheader PROTO((char *file, Coords coords, double dR, int Nmatch)); 121 106 void gproject PROTO((SStars *catalog, SStars **stars, int Ncat, int *Nstars, Coords *coords, int NX, int NY, double dNdM, int N1)); 122 int gptolemy PROTO((char *fullpath, SStars **stars, int *Nstars));123 107 void granges PROTO((SStars *stars1, SStars *stars2, int N1, int N2, int NPIX, double *gx, double *gy, double *gx0, double *gy0)); 124 108 int greference PROTO((SStars **cat, int *Ncat, Coords *coords, int NX, int NY)); … … 129 113 int mk_vector PROTO((int n, int m, int norder)); 130 114 int open_graph PROTO((int N)); 131 int parse_GSC_line PROTO((CatalogRegion *region, char *line));132 115 void precess PROTO((double *, double *, double, double)); 133 void ralter_header PROTO((char *, char *, double, double, double, double, double, double, double, double, int));134 116 void ranges PROTO((SStars *, SStars *, int, int, double *, double *, double *, double *, double, double)); 135 void rargs PROTO((int *, char **));136 117 void rotate PROTO((SStars *stars, int Nstars, double angle, int Xo, int Yo)); 137 118 void sort_stars PROTO((SStars *stars, int N)); 138 119 void sort_lists PROTO((double *X, double *Y, int *S, int N)); 139 120 void stats PROTO((char *, double *, double *, double *, double *, double)); 140 int str_to_radec PROTO((double *ra, double *dec, char *str1, char *str2));141 void svd PROTO((double ** matrix, int N, double **vector, int M));142 void svdcmp PROTO((double **a, int m, int n, double **w, double **v)); -
trunk/Ohana/src/gastro/src/ConfigInit.c
r4828 r8514 15 15 if (VERBOSE) fprintf (stderr, "loaded config file: %s\n", file); 16 16 17 ScanConfig (config, "OFFSET_RADIUS", "%lf", 0, &SEARCH_RADIUS); 18 ScanConfig (config, "MIN_MATCHES", "%d", 0, &MIN_MATCHES); 19 ScanConfig (config, "DEFAULT_RADIUS", "%lf", 0, &DEFAULT_RADIUS); 20 ScanConfig (config, "MINIMUM_RADIUS", "%lf", 0, &MINIMUM_RADIUS); 21 ScanConfig (config, "MAX_ERROR", "%lf", 0, &MAX_ERROR); 22 ScanConfig (config, "MAX_NONLINEAR", "%lf", 0, &MAX_NONLINEAR); 23 ScanConfig (config, "MAX_PRECISE", "%lf", 0, &MIN_PRECISE); 24 ScanConfig (config, "CCD_PC1_1", "%lf", 0, &CCD_PC1_1); 25 ScanConfig (config, "CCD_PC2_2", "%lf", 0, &CCD_PC2_2); 26 ScanConfig (config, "CCD_PC1_2", "%lf", 0, &CCD_PC1_2); 27 ScanConfig (config, "CCD_PC2_1", "%lf", 0, &CCD_PC2_1); 28 ScanConfig (config, "ASEC_PIX", "%lf", 0, &ASEC_PIX); 29 ScanConfig (config, "NFIELD", "%lf", 0, &NFIELD); 30 ScanConfig (config, "NPOLYTERMS", "%d", 0, &NPOLYTERMS); 31 ScanConfig (config, "MMIN", "%lf", 0, &MMIN); 32 ScanConfig (config, "ROT_ZERO", "%lf", 0, &ROT_ZERO); 33 ScanConfig (config, "dROT", "%lf", 0, &dROT); 34 ScanConfig (config, "NROT", "%d", 0, &NROT); 35 ScanConfig (config, "POLAR_ALIGNMENT", "%d", 0, &POLAR_ALIGNMENT); 36 ScanConfig (config, "GSCFILE", "%s", 0, GSCFILE); 37 ScanConfig (config, "GSCDIR", "%s", 0, GSC_DIR); 38 ScanConfig (config, "POLAR_AXIS_RA", "%lf", 0, &POLE_RA); 39 ScanConfig (config, "POLAR_AXIS_DEC", "%lf", 0, &POLE_DEC); 40 ScanConfig (config, "RA_OFFSET", "%lf", 0, &RA_OFFSET); 41 ScanConfig (config, "DEC_OFFSET", "%lf", 0, &DEC_OFFSET); 42 ScanConfig (config, "LONEOS_REGIONS", "%s", 0, LONEOS_REGION_FILE); 43 ScanConfig (config, "USNO_CDROM", "%s", 0, CDROM); 44 ScanConfig (config, "ASTRO_REFCAT", "%s", 0, REFCAT); 45 ScanConfig (config, "CATDIR", "%s", 0, CATDIR); 46 ScanConfig (config, "CATMODE", "%s", 0, CATMODE); 47 ScanConfig (config, "CATFORMAT", "%s", 0, CATFORMAT); 48 ScanConfig (config, "ROUGH_ASTROMETRY", "%s", 0, ROUGH_ASTROMETRY); 49 ScanConfig (config, "PHOTCODE_FILE", "%s", 0, PhotCodeFile); 17 ScanConfig (config, "OFFSET_RADIUS", "%lf", 0, &SEARCH_RADIUS); // max allowed offset in gcenter 18 ScanConfig (config, "MIN_MATCHES", "%d", 0, &MIN_MATCHES); // min allowed fitted stars 19 ScanConfig (config, "DEFAULT_RADIUS", "%lf", 0, &DEFAULT_RADIUS); // starting radius for matched fit 20 ScanConfig (config, "MINIMUM_RADIUS", "%lf", 0, &MINIMUM_RADIUS); // min allowed radius for matched fit 21 ScanConfig (config, "MAX_ERROR", "%lf", 0, &MAX_ERROR); // max allowed error for valid solution 22 ScanConfig (config, "MAX_NONLINEAR", "%lf", 0, &MAX_NONLINEAR); // max allowed shear |(11*22 - 12*21) / (L1*L2)| 23 ScanConfig (config, "CCD_PC1_1", "%lf", 0, &CCD_PC1_1); // guess if WCS is missing 24 ScanConfig (config, "CCD_PC2_2", "%lf", 0, &CCD_PC2_2); // guess if WCS is missing 25 ScanConfig (config, "CCD_PC1_2", "%lf", 0, &CCD_PC1_2); // guess if WCS is missing 26 ScanConfig (config, "CCD_PC2_1", "%lf", 0, &CCD_PC2_1); // guess if WCS is missing 27 ScanConfig (config, "ASEC_PIX", "%lf", 0, &ASEC_PIX); // guess if WCS is missing 28 ScanConfig (config, "NFIELD", "%lf", 0, &NFIELD); // search region in field units 29 ScanConfig (config, "NPOLYTERMS", "%d", 0, &NPOLYTERMS); // fit order 30 ScanConfig (config, "ROT_ZERO", "%lf", 0, &ROT_ZERO); // rotation search region 31 ScanConfig (config, "dROT", "%lf", 0, &dROT); // rotation search region 32 ScanConfig (config, "NROT", "%d", 0, &NROT); // rotation search region 33 ScanConfig (config, "POLAR_ALIGNMENT", "%d", 0, &POLAR_ALIGNMENT); // apply polar alignment correction 34 ScanConfig (config, "POLAR_AXIS_RA", "%lf", 0, &POLE_RA); // true coords of pole (should be HA, not RA) 35 ScanConfig (config, "POLAR_AXIS_DEC", "%lf", 0, &POLE_DEC); // true coords of pole 36 ScanConfig (config, "RA_OFFSET", "%lf", 0, &RA_OFFSET); // ?? not well defined (should be euler angle) 37 ScanConfig (config, "DEC_OFFSET", "%lf", 0, &DEC_OFFSET); // ?? not well defined (should be euler angle) 38 ScanConfig (config, "LONEOS_REGIONS", "%s", 0, LONEOS_REGION_FILE); // table of LONEOS regions to fix guess astrometry 50 39 51 if (*CATMODE == 0) strcpy (CATMODE, "RAW"); 52 if (*CATFORMAT == 0) strcpy (CATFORMAT, "ELIXIR"); 40 ScanConfig (config, "GSCFILE", "%s", 0, GSCFILE); // location of sky table 41 ScanConfig (config, "GSCDIR", "%s", 0, GSCDIR); // location of HST GSC data 42 ScanConfig (config, "USNO_CDROM", "%s", 0, CDROM); // location of USNO A data (USNO_A_DIR in gastro2) 43 ScanConfig (config, "ASTRO_REFCAT", "%s", 0, REFCAT); // which astrometry catalog to use 44 ScanConfig (config, "CATDIR", "%s", 0, CATDIR); // location of ptolemy-format ref data 45 ScanConfig (config, "ROUGH_ASTROMETRY", "%s", 0, ROUGH_ASTROMETRY); // where to get initial guess (header, config) 46 ScanConfig (config, "PHOTCODE_FILE", "%s", 0, PhotCodeFile); // location of photcode table to convert supplied photcode 53 47 54 48 if (strcasecmp (ROUGH_ASTROMETRY, "header") && -
trunk/Ohana/src/gastro/src/greference.c
r2435 r8514 6 6 int greference (SStars **cat, int *Ncat, Coords *coords, int NX, int NY) { 7 7 8 char **regions; 9 int i, Nregions, Nusno; 8 int i; 10 9 CatStats catstats; 11 USNOstats usnostats;12 USNOdata *usno;13 10 14 11 if (VERBOSE) fprintf (stderr, "\nloading astrometric reference data from %s\n", REFCAT); … … 17 14 18 15 define_region (&catstats, coords, NX, NY); 16 ALLOCATE (*cat, SStars, 1); 19 17 20 18 /* get stars from the USNO catalog for the given region */ … … 27 25 /* if RA crosses 0,360 boundary, do 2 passes */ 28 26 if (catstats.RA[0] > catstats.RA[1]) { 29 CatStats substats; 30 USNOdata *usno1, *usno2; 31 int Nusno1, Nusno2; 27 int Nusno1, Nusno2; 28 USNOdata *usno1, *usno2; 29 USNOstats usnostats; 30 CatStats substats; 32 31 33 substats = catstats;34 substats.RA[0] = 0.0;35 usno1 = getusno (&usnostats, &substats, &Nusno1);32 substats = catstats; 33 substats.RA[0] = 0.0; 34 usno1 = getusno (&usnostats, &substats, &Nusno1); 36 35 37 substats = catstats;38 substats.RA[1] = 360.0;39 usno2 = getusno (&usnostats, &substats, &Nusno2);36 substats = catstats; 37 substats.RA[1] = 360.0; 38 usno2 = getusno (&usnostats, &substats, &Nusno2); 40 39 41 ALLOCATE (*cat, SStars, MAX (Nusno1 + Nusno2, 1));42 for (i = 0; i < Nusno1; i++) {43 cat[0][i].X = usno1[i].R;44 cat[0][i].Y = usno1[i].D;45 cat[0][i].mag = fabs(usno1[i].r);46 }47 for (i = Nusno1; i < Nusno2; i++) {48 cat[0][i].X = usno2[i].R;49 cat[0][i].Y = usno2[i].D;50 cat[0][i].mag = fabs(usno2[i].r);51 }52 *Ncat = Nusno1 + Nusno2;53 free (usno1);54 free (usno2);40 REALLOCATE (*cat, SStars, MAX (Nusno1 + Nusno2, 1)); 41 for (i = 0; i < Nusno1; i++) { 42 cat[0][i].X = usno1[i].R; 43 cat[0][i].Y = usno1[i].D; 44 cat[0][i].mag = fabs(usno1[i].r); 45 } 46 for (i = Nusno1; i < Nusno2; i++) { 47 cat[0][i].X = usno2[i].R; 48 cat[0][i].Y = usno2[i].D; 49 cat[0][i].mag = fabs(usno2[i].r); 50 } 51 *Ncat = Nusno1 + Nusno2; 52 free (usno1); 53 free (usno2); 55 54 } else { 56 usno = getusno (&usnostats, &catstats, &Nusno); 55 int Nusno; 56 USNOdata *usno; 57 USNOstats usnostats; 57 58 58 ALLOCATE (*cat, SStars, MAX (Nusno, 1)); 59 for (i = 0; i < Nusno; i++) { 60 cat[0][i].X = usno[i].R; 61 cat[0][i].Y = usno[i].D; 62 cat[0][i].mag = fabs(usno[i].r); 63 } 64 *Ncat = Nusno; 65 free (usno); 59 usno = getusno (&usnostats, &catstats, &Nusno); 60 61 REALLOCATE (*cat, SStars, MAX (Nusno, 1)); 62 for (i = 0; i < Nusno; i++) { 63 cat[0][i].X = usno[i].R; 64 cat[0][i].Y = usno[i].D; 65 cat[0][i].mag = fabs(usno[i].r); 66 } 67 *Ncat = Nusno; 68 free (usno); 66 69 } 67 70 if (VERBOSE) fprintf (stderr, "%d stars from USNO 1.0\n", *Ncat); … … 69 72 70 73 if (!strcmp (REFCAT, "GSC") || !strcmp (REFCAT, "BOTH")) { 71 regions = gregions (&catstats, &Nregions); 72 for (i = 0; i < Nregions; i++) { 73 if (!gcatalog (regions[i], cat, Ncat)) 74 return (FALSE); 74 int j, Ngsc; 75 SStars *gsc; 76 77 gsc = getgsc (&catstats, &Ngsc); 78 REALLOCATE (*cat, SStars, MAX (Ngsc + *Ncat, 1)); 79 for (j = *Ncat, i = 0; i < Ngsc; i++) { 80 cat[0][j] = gsc[i]; 75 81 } 76 if (VERBOSE) fprintf (stderr, "%d stars from HST GSC\n", *Ncat); 82 if (VERBOSE) fprintf (stderr, "%d stars from HST GSC\n", Ngsc); 83 *Ncat += Ngsc; 77 84 } 78 85 79 86 if (!strcmp (REFCAT, "PTOLEMY")) { 80 regions = gregions (&catstats, &Nregions); 81 for (i = 0; i < Nregions; i++) { 82 if (!gptolemy (regions[i], cat, Ncat)) continue; 83 } 87 free (*cat); 88 *cat = getptolemy (&catstats, Ncat); 84 89 if (VERBOSE) fprintf (stderr, "%d stars from PTOLEMY\n", *Ncat); 85 90 } 86 87 if (!strcmp (REFCAT, "2MASS")) {88 /* this needs to be written to handle the complete 2mass catalog.89 at the moment, I only have a small subset */90 if (!g2mass ("/data/milo/eugene/elixir/refs/2mass/2mass.dat", cat, Ncat)) exit (1);91 if (VERBOSE) fprintf (stderr, "%d stars from 2MASS\n", *Ncat);92 }93 94 91 return (TRUE); 95 96 92 } 97 93 … … 110 106 XY_to_RD (&R, &D, X, Y, coords); 111 107 /* coords returns a region all in same phase 112 while (R < 0.0) R += 360.0;113 while (R >= 360.0) R -= 360.0;108 while (R < 0.0) R += 360.0; 109 while (R >= 360.0) R -= 360.0; 114 110 */ 115 111 catstats[0].RA[0] = MIN (catstats[0].RA[0], R); -
trunk/Ohana/src/gastro/src/misc.c
r2435 r8514 35 35 } 36 36 37 /***** convert [-]00:00:00 to 0.0000 ****/38 int dms_to_ddd (double *Value, char *string) {39 40 int valid, neg, status;41 double tmp, value;42 char *p1, *p2, *px;43 44 valid = FALSE;45 neg = FALSE;46 stripwhite (string);47 p1 = string;48 px = string + strlen(string);49 50 if (string[0] == '-') {51 valid = TRUE;52 neg = TRUE;53 p1 = &string[1];54 }55 if (string[0] == '+') {56 valid = TRUE;57 neg = FALSE;58 p1 = &string[1];59 }60 if (isdigit(string[0])) {61 valid = TRUE;62 p1 = &string[0];63 }64 if (!valid) { return (FALSE); }65 66 status = 1;67 tmp = strtod (p1, &p2);68 if (p2 == p1) return (FALSE); /* entry not a number: +fred */69 value = tmp;70 if (p2 == px) goto escape; /* entry only number: +1.0 */71 p1 = p2 + 1;72 73 tmp = strtod (p1, &p2);74 if (p2 == p1) goto escape; /* entry not a number: +1:fred */75 status = 2;76 value += tmp / 60.0;77 if (p2 == px) goto escape; /* entry only number: +1:1 */78 p1 = p2 + 1;79 80 tmp = strtod (p1, &p2);81 if (p2 == p1) goto escape; /* entry not a number: +1:1:fred */82 value += tmp / 3600.0;83 84 escape:85 if (neg) {86 value *= -1;87 }88 *Value = value;89 90 return (status);91 }92 93 /**********/94 int str_to_radec (double *ra, double *dec, char *str1, char *str2) {95 96 double Ra, Dec;97 98 *ra = *dec = 0;99 switch (dms_to_ddd (&Ra, str1)) {100 case 0:101 fprintf (stderr, "syntax error in RA\n");102 return (FALSE);103 case 1:104 break;105 case 2:106 Ra = Ra * 15;107 break;108 }109 switch (dms_to_ddd (&Dec, str2)) {110 case 0:111 fprintf (stderr, "syntax error in DEC\n");112 return (FALSE);113 case 1:114 case 2:115 break;116 }117 *ra = Ra;118 *dec = Dec;119 return (TRUE);120 }121 122 37 void area_of_region (CatStats *region) { 123 38
Note:
See TracChangeset
for help on using the changeset viewer.
