Changeset 35342
- Timestamp:
- Apr 2, 2013, 1:55:12 PM (13 years ago)
- Location:
- branches/eam_branches/ipp-20130307/Ohana/src
- Files:
-
- 9 edited
-
libdvo/include/dvodb.h (modified) (3 diffs)
-
libdvo/src/ImageMetadata.c (modified) (10 diffs)
-
libdvo/src/ImageMetadataSelection.c (modified) (4 diffs)
-
libdvo/src/ImageSelection.c (modified) (1 diff)
-
libdvo/src/dbExtractMeasures.c (modified) (5 diffs)
-
libdvo/src/dbFields.c (modified) (1 diff)
-
opihi/dvo/dvo_host_utils.c (modified) (1 diff)
-
opihi/dvo/mextract.c (modified) (1 diff)
-
opihi/dvo/photometry.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20130307/Ohana/src/libdvo/include/dvodb.h
r35263 r35342 125 125 MEAS_YFIX, 126 126 MEAS_POS_SYS_ERR, 127 MEAS_XFIELD, 128 MEAS_YFIELD, 127 129 MEAS_XMOSAIC, 128 130 MEAS_YMOSAIC, … … 301 303 double crval1; 302 304 double crval2; 305 float theta; 303 306 unsigned int imageID; 304 307 unsigned int externID; … … 382 385 ImageMetadata *MatchImageMetadataDVO (unsigned int imageID); 383 386 Coords *MatchMosaicMetadata (unsigned int imageID); 387 Coords *MatchFieldMetadata (unsigned int imageID); 384 388 off_t match_image_by_ID (ImageMetadata *image, off_t Nimage, unsigned int ID); 385 389 void sort_image_metadata (ImageMetadata *image, off_t Nimage); -
branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/ImageMetadata.c
r35263 r35342 63 63 GET_COLUMN (crval1, "CRVAL1", double); 64 64 GET_COLUMN (crval2, "CRVAL2", double); 65 GET_COLUMN (theta, "THETA", float); 65 66 GET_COLUMN (Mcal, "MCAL", float); 66 67 GET_COLUMN (secz, "SECZ", float); … … 75 76 image[i].crval1 = crval1[i] ; 76 77 image[i].crval2 = crval2[i] ; 78 image[i].theta = theta[i] ; 77 79 image[i].Mcal = Mcal[i] ; 78 80 image[i].secz = secz[i] ; … … 87 89 free (crval1); 88 90 free (crval2); 91 free (theta); 89 92 free (Mcal); 90 93 free (secz); … … 112 115 FTable ftable; 113 116 117 BuildChipMatch (image, Nimage); 118 114 119 gfits_init_header (&header); 115 120 header.extend = TRUE; … … 124 129 gfits_define_bintable_column (&theader, "D", "CRVAL1", "ra at center", "degrees", 1.0, 0.0); 125 130 gfits_define_bintable_column (&theader, "D", "CRVAL2", "dec at center", "degrees", 1.0, 0.0); 131 gfits_define_bintable_column (&theader, "E", "THETA", "camera rot angle", "degrees", 1.0, 0.0); 126 132 gfits_define_bintable_column (&theader, "E", "MCAL", "zero point offset", "magnitudes", 1.0, 0.0); 127 133 gfits_define_bintable_column (&theader, "E", "SECZ", "airmass", "none", 1.0, 0.0); … … 134 140 unsigned int *imageID, *externID, *expname; 135 141 double *crval1, *crval2; 136 float *Mcal, *Xcenter, *Ycenter, *secz ;142 float *Mcal, *Xcenter, *Ycenter, *secz, *theta; 137 143 138 144 // create intermediate storage arrays … … 142 148 ALLOCATE (crval1, double, Nimage); 143 149 ALLOCATE (crval2, double, Nimage); 150 ALLOCATE (theta, float, Nimage); 144 151 ALLOCATE (Mcal, float, Nimage); 145 152 ALLOCATE (secz, float, Nimage); … … 149 156 // assign the storage arrays 150 157 for (i = 0; i < Nimage; i++) { 158 int Nmosaic = FindMosaicForImage (image, Nimage, i); 159 if (!Nmosaic) continue; 160 Nmosaic --; 151 161 imageID[i] = image[i].imageID; 152 162 externID[i] = image[i].externID; 153 crval1[i] = image[i].coords.crval1; 154 crval2[i] = image[i].coords.crval2; 163 crval1[i] = image[Nmosaic].coords.crval1; 164 crval2[i] = image[Nmosaic].coords.crval2; 165 166 theta[i] = DEG_RAD*atan2(image[Nmosaic].coords.pc1_2, image[Nmosaic].coords.pc1_1); 167 155 168 Mcal[i] = image[i].Mcal; 156 169 secz[i] = image[i].secz; … … 172 185 gfits_set_bintable_column (&theader, &ftable, "CRVAL1", crval1, Nimage); 173 186 gfits_set_bintable_column (&theader, &ftable, "CRVAL2", crval2, Nimage); 187 gfits_set_bintable_column (&theader, &ftable, "THETA", theta, Nimage); 174 188 gfits_set_bintable_column (&theader, &ftable, "MCAL", Mcal, Nimage); 175 189 gfits_set_bintable_column (&theader, &ftable, "SECZ", secz, Nimage); … … 182 196 free (crval1); 183 197 free (crval2); 198 free (theta); 184 199 free (Mcal); 185 200 free (secz); -
branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/ImageMetadataSelection.c
r35263 r35342 5 5 static off_t Nimage = 0; 6 6 static Coords mosaic; 7 static Coords field; 7 8 8 9 /* load images based on parameters and region, etc */ … … 11 12 image = NULL; 12 13 14 /* field defines a frame with 0,0 at the field center, and 1 arcsec / pixel */ 15 field.crpix1 = field.crpix2 = 0.0; 16 field.cdelt1 = field.cdelt2 = 1.0 / 3600; 17 field.pc1_1 = field.pc2_2 = 1.0; 18 field.pc1_2 = field.pc2_1 = 0.0; 19 field.Npolyterms = 0; 20 strcpy (field.ctype, "RA---SIN"); 21 13 22 /* mosaic defines a frame with 0,0 at the mosaic center, and 1 arcsec / pixel */ 14 23 mosaic.crpix1 = mosaic.crpix2 = 0.0; … … 42 51 } 43 52 53 Coords *MatchFieldMetadata (unsigned int imageID) { 54 55 int m; 56 57 m = match_image_by_ID (image, Nimage, imageID); 58 if (m == -1) return (NULL); 59 60 // if WRP, return the image, otherwise return NULL 61 // if (strcmp(&image[m].coords.ctype[4], "-WRP")) return NULL; 62 // return (&image[m].coords); 63 64 field.crval1 = image[m].crval1; 65 field.crval2 = image[m].crval2; 66 return (&field); 67 } 68 44 69 Coords *MatchMosaicMetadata (unsigned int imageID) { 45 70 … … 48 73 m = match_image_by_ID (image, Nimage, imageID); 49 74 if (m == -1) return (NULL); 75 76 // if WRP, return the image, otherwise return NULL 77 // if (strcmp(&image[m].coords.ctype[4], "-WRP")) return NULL; 78 // return (&image[m].coords); 79 50 80 mosaic.crval1 = image[m].crval1; 51 81 mosaic.crval2 = image[m].crval2; 82 83 mosaic.pc1_1 = cos(RAD_DEG*image[m].theta); 84 mosaic.pc1_2 = sin(RAD_DEG*image[m].theta); 85 mosaic.pc2_2 = cos(RAD_DEG*image[m].theta); 86 mosaic.pc2_1 = -sin(RAD_DEG*image[m].theta); 87 52 88 return (&mosaic); 53 89 } -
branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/ImageSelection.c
r35263 r35342 93 93 int m; 94 94 95 // mosaic.crval1 = 0; 96 // mosaic.crval2 = 0; 95 97 m = match_image_subset (image, subset, Nsubset, time, source); 96 98 if (m == -1) return (NULL); 97 mosaic.crval1 = image[m].coords.crval1; 98 mosaic.crval2 = image[m].coords.crval2; 99 return (&mosaic); 99 // mosaic = image[m].coords.crval1; 100 // mosaic = image[m].coords.crval2; 101 102 // if WRP, return the image, otherwise return NULL 103 if (strcmp(&image[m].coords.ctype[4], "-WRP")) return NULL; 104 return (&image[m].coords); 100 105 } -
branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/dbExtractMeasures.c
r35312 r35342 16 16 static int REMOTE_CLIENT = FALSE; 17 17 18 // the following values are calculated together in a single function, eg., 19 // ApplyTransform() returning Glon & Glat. for a single measurement, we want to do this 20 // calculation once and save both values in case both are requested (usually both are if 21 // either is) 18 22 static int haveGalacticAve = FALSE; 19 23 static double GLON_AVE = 0.0; … … 31 35 static double ELON_MEAS = 0.0; 32 36 static double ELAT_MEAS = 0.0; 37 38 static int haveMosaicMeas = FALSE; 39 static double XMOS_MEAS = 0.0; 40 static double YMOS_MEAS = 0.0; 41 42 static int haveFieldMeas = FALSE; 43 static double XFIELD_MEAS = 0.0; 44 static double YFIELD_MEAS = 0.0; 33 45 34 46 int dbExtractMeasuresInit (int isRemoteClient) { … … 66 78 67 79 int dbExtractMeasuresInitMeas () { 80 haveMosaicMeas = FALSE; 68 81 haveGalacticMeas = FALSE; 69 82 haveEclipticMeas = FALSE; … … 76 89 int Nsec; 77 90 dbValue value; 78 double ra, dec, x, y,dT;79 80 Coords *mosaic ;91 double dT; 92 93 Coords *mosaic, *fieldc; 81 94 PhotCode *equiv; 82 95 … … 465 478 value.Flt = FromShortPixels(measure[0].dRsys); 466 479 break; 467 case MEAS_XMOSAIC: /* OK */ 468 ra = average[0].R - measure[0].dR / 3600.0; 469 dec = average[0].D - measure[0].dD / 3600.0; 470 if (REMOTE_CLIENT) { 471 mosaic = MatchMosaicMetadata (measure[0].imageID); 472 } else { 473 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 474 } 475 if (mosaic == NULL) break; 476 RD_to_XY (&x, &y, ra, dec, mosaic); 477 value.Flt = x; 480 481 case MEAS_XFIELD: /* offset relative to exposure center in ra,dec space */ 482 if (!haveFieldMeas) { 483 if (REMOTE_CLIENT) { 484 fieldc = MatchFieldMetadata (measure[0].imageID); 485 } else { 486 fprintf (stderr, "non-parallel Xmos broken\n"); 487 abort(); 488 // fieldc = MatchField (measure[0].t, measure[0].photcode); 489 } 490 if (fieldc == NULL) break; 491 double Rm = average[0].R - measure[0].dR / 3600.0; 492 double Dm = average[0].D - measure[0].dD / 3600.0; 493 RD_to_XY (&XFIELD_MEAS, &YFIELD_MEAS, Rm, Dm, fieldc); 494 } 495 value.Flt = XFIELD_MEAS; 496 break; 497 case MEAS_YFIELD: /* OK */ 498 if (!haveFieldMeas) { 499 if (REMOTE_CLIENT) { 500 fieldc = MatchFieldMetadata (measure[0].imageID); 501 } else { 502 fprintf (stderr, "non-parallel Xmos broken\n"); 503 abort(); 504 // fieldc = MatchField (measure[0].t, measure[0].photcode); 505 } 506 if (fieldc == NULL) break; 507 double Rm = average[0].R - measure[0].dR / 3600.0; 508 double Dm = average[0].D - measure[0].dD / 3600.0; 509 RD_to_XY (&XFIELD_MEAS, &YFIELD_MEAS, Rm, Dm, fieldc); 510 } 511 value.Flt = YFIELD_MEAS; 512 break; 513 514 case MEAS_XMOSAIC: /* offset relative to exposure center in camera coords */ 515 if (!haveMosaicMeas) { 516 if (REMOTE_CLIENT) { 517 mosaic = MatchMosaicMetadata (measure[0].imageID); 518 } else { 519 fprintf (stderr, "non-parallel Xmos broken\n"); 520 abort(); 521 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 522 } 523 if (mosaic == NULL) break; 524 double Rm = average[0].R - measure[0].dR / 3600.0; 525 double Dm = average[0].D - measure[0].dD / 3600.0; 526 RD_to_XY (&XMOS_MEAS, &YMOS_MEAS, Rm, Dm, mosaic); 527 } 528 value.Flt = XMOS_MEAS; 478 529 break; 479 530 case MEAS_YMOSAIC: /* OK */ 480 ra = average[0].R - measure[0].dR / 3600.0; 481 dec = average[0].D - measure[0].dD / 3600.0; 482 if (REMOTE_CLIENT) { 483 mosaic = MatchMosaicMetadata (measure[0].imageID); 484 } else { 485 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 486 } 487 if (mosaic == NULL) break; 488 RD_to_XY (&x, &y, ra, dec, mosaic); 489 value.Flt = y; 531 if (!haveMosaicMeas) { 532 if (REMOTE_CLIENT) { 533 mosaic = MatchMosaicMetadata (measure[0].imageID); 534 } else { 535 fprintf (stderr, "non-parallel Xmos broken\n"); 536 abort(); 537 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 538 } 539 if (mosaic == NULL) break; 540 double Rm = average[0].R - measure[0].dR / 3600.0; 541 double Dm = average[0].D - measure[0].dD / 3600.0; 542 RD_to_XY (&XMOS_MEAS, &YMOS_MEAS, Rm, Dm, mosaic); 543 } 544 value.Flt = YMOS_MEAS; 490 545 break; 491 546 -
branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/dbFields.c
r35237 r35342 220 220 if (!strcasecmp (fieldName, "YFIX")) ESCAPE (MEAS_YFIX, MAG_NONE, OPIHI_FLT); 221 221 if (!strcasecmp (fieldName, "POS_SYS_ERR")) ESCAPE (MEAS_POS_SYS_ERR, MAG_NONE, OPIHI_FLT); 222 if (!strcasecmp (fieldName, "XFIELD")) ESCAPE (MEAS_XFIELD, MAG_NONE, OPIHI_FLT); 223 if (!strcasecmp (fieldName, "YFIELD")) ESCAPE (MEAS_YFIELD, MAG_NONE, OPIHI_FLT); 222 224 if (!strcasecmp (fieldName, "XMOSAIC")) ESCAPE (MEAS_XMOSAIC, MAG_NONE, OPIHI_FLT); 223 225 if (!strcasecmp (fieldName, "YMOSAIC")) ESCAPE (MEAS_YMOSAIC, MAG_NONE, OPIHI_FLT); -
branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/dvo_host_utils.c
r35327 r35342 199 199 200 200 if (table->hosts[i].status) continue; 201 if (!table->hosts[i].pid) continue; 201 202 202 203 if (ReadVectors) { -
branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mextract.c
r35327 r35342 16 16 if (field->ID == MEAS_CENTER_OFFSET) return TRUE; // 0.5*NX, 0.5*NY 17 17 if (field->ID == MEAS_EXPNAME_AS_INT) return TRUE; // expname (or as int) 18 if (field->ID == MEAS_ AIRMASS)return TRUE; // airmass18 if (field->ID == MEAS_MEAN_AIRMASS) return TRUE; // airmass 19 19 return FALSE; 20 20 } -
branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/photometry.c
r34405 r35342 1127 1127 double value; 1128 1128 Image *image; 1129 Coords *mosaic;1129 // Coords *mosaic; 1130 1130 1131 1131 value = 0; … … 1193 1193 # endif 1194 1194 break; 1195 # if 0 1195 1196 case MEAS_XMOSAIC: /* OK */ 1196 1197 ra = average[0].R - measure[0].dR / 3600.0; 1197 1198 dec = average[0].D - measure[0].dD / 3600.0; 1198 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 1199 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); // XXX not used anymore 1199 1200 if (mosaic == NULL) break; 1200 1201 RD_to_XY (&x, &y, ra, dec, mosaic); … … 1204 1205 ra = average[0].R - measure[0].dR / 3600.0; 1205 1206 dec = average[0].D - measure[0].dD / 3600.0; 1206 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); 1207 mosaic = MatchMosaic (measure[0].t, measure[0].photcode); // XXX not used anymore 1207 1208 if (mosaic == NULL) break; 1208 1209 RD_to_XY (&x, &y, ra, dec, mosaic); 1209 1210 value = y; 1210 1211 break; 1212 # endif 1211 1213 } 1212 1214 return (value);
Note:
See TracChangeset
for help on using the changeset viewer.
