IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35342


Ignore:
Timestamp:
Apr 2, 2013, 1:55:12 PM (13 years ago)
Author:
eugene
Message:

clarify Xmosaic, Ymosaic; add Xfield, Yfield; do not launch remote dvo client for machines not needed

Location:
branches/eam_branches/ipp-20130307/Ohana/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20130307/Ohana/src/libdvo/include/dvodb.h

    r35263 r35342  
    125125      MEAS_YFIX,
    126126      MEAS_POS_SYS_ERR,
     127      MEAS_XFIELD,
     128      MEAS_YFIELD,
    127129      MEAS_XMOSAIC,
    128130      MEAS_YMOSAIC,
     
    301303  double crval1;
    302304  double crval2;
     305  float theta;
    303306  unsigned int imageID;
    304307  unsigned int externID;
     
    382385ImageMetadata *MatchImageMetadataDVO (unsigned int imageID);
    383386Coords *MatchMosaicMetadata (unsigned int imageID);
     387Coords *MatchFieldMetadata (unsigned int imageID);
    384388off_t match_image_by_ID (ImageMetadata *image, off_t Nimage, unsigned int ID);
    385389void sort_image_metadata (ImageMetadata *image, off_t Nimage);
  • branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/ImageMetadata.c

    r35263 r35342  
    6363  GET_COLUMN (crval1,   "CRVAL1",         double);
    6464  GET_COLUMN (crval2,   "CRVAL2",         double);
     65  GET_COLUMN (theta,    "THETA",          float);
    6566  GET_COLUMN (Mcal,     "MCAL",           float);
    6667  GET_COLUMN (secz,     "SECZ",           float);
     
    7576    image[i].crval1   = crval1[i]  ;
    7677    image[i].crval2   = crval2[i]  ;
     78    image[i].theta    = theta[i]  ;
    7779    image[i].Mcal     = Mcal[i]    ;
    7880    image[i].secz     = secz[i]    ;
     
    8789  free (crval1);
    8890  free (crval2);
     91  free (theta);
    8992  free (Mcal);
    9093  free (secz);
     
    112115  FTable ftable;
    113116
     117  BuildChipMatch (image, Nimage);
     118
    114119  gfits_init_header (&header);
    115120  header.extend = TRUE;
     
    124129  gfits_define_bintable_column (&theader, "D", "CRVAL1", "ra at center", "degrees", 1.0, 0.0);
    125130  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);
    126132  gfits_define_bintable_column (&theader, "E", "MCAL", "zero point offset", "magnitudes", 1.0, 0.0);
    127133  gfits_define_bintable_column (&theader, "E", "SECZ", "airmass", "none", 1.0, 0.0);
     
    134140  unsigned int *imageID, *externID, *expname;
    135141  double *crval1, *crval2;
    136   float *Mcal, *Xcenter, *Ycenter, *secz;
     142  float *Mcal, *Xcenter, *Ycenter, *secz, *theta;
    137143
    138144  // create intermediate storage arrays
     
    142148  ALLOCATE (crval1,   double,         Nimage);
    143149  ALLOCATE (crval2,   double,         Nimage);
     150  ALLOCATE (theta,    float,          Nimage);
    144151  ALLOCATE (Mcal,     float,          Nimage);
    145152  ALLOCATE (secz,     float,          Nimage);
     
    149156  // assign the storage arrays
    150157  for (i = 0; i < Nimage; i++) {
     158    int Nmosaic = FindMosaicForImage (image, Nimage, i);
     159    if (!Nmosaic) continue;
     160    Nmosaic --;
    151161    imageID[i]  = image[i].imageID;
    152162    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
    155168    Mcal[i]     = image[i].Mcal;
    156169    secz[i]     = image[i].secz;
     
    172185  gfits_set_bintable_column (&theader, &ftable, "CRVAL1",         crval1,  Nimage);
    173186  gfits_set_bintable_column (&theader, &ftable, "CRVAL2",         crval2,  Nimage);
     187  gfits_set_bintable_column (&theader, &ftable, "THETA",          theta,   Nimage);
    174188  gfits_set_bintable_column (&theader, &ftable, "MCAL",           Mcal,    Nimage);
    175189  gfits_set_bintable_column (&theader, &ftable, "SECZ",           secz,    Nimage);
     
    182196  free (crval1);
    183197  free (crval2);
     198  free (theta);
    184199  free (Mcal);
    185200  free (secz);
  • branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/ImageMetadataSelection.c

    r35263 r35342  
    55static off_t Nimage = 0;
    66static Coords mosaic;
     7static Coords field;
    78
    89/* load images based on parameters and region, etc */
     
    1112  image = NULL;
    1213 
     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
    1322  /* mosaic defines a frame with 0,0 at the mosaic center, and 1 arcsec / pixel */
    1423  mosaic.crpix1 = mosaic.crpix2 = 0.0;
     
    4251}
    4352
     53Coords *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
    4469Coords *MatchMosaicMetadata (unsigned int imageID) {
    4570
     
    4873  m = match_image_by_ID (image, Nimage, imageID);
    4974  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
    5080  mosaic.crval1 = image[m].crval1;
    5181  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
    5288  return (&mosaic);
    5389}
  • branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/ImageSelection.c

    r35263 r35342  
    9393  int m;
    9494
     95  // mosaic.crval1 = 0;
     96  // mosaic.crval2 = 0;
    9597  m = match_image_subset (image, subset, Nsubset, time, source);
    9698  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);
    100105}
  • branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/dbExtractMeasures.c

    r35312 r35342  
    1616static int REMOTE_CLIENT = FALSE;
    1717
     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)
    1822static int haveGalacticAve = FALSE;
    1923static double GLON_AVE = 0.0;
     
    3135static double ELON_MEAS = 0.0;
    3236static double ELAT_MEAS = 0.0;
     37
     38static int haveMosaicMeas = FALSE;
     39static double XMOS_MEAS = 0.0;
     40static double YMOS_MEAS = 0.0;
     41
     42static int haveFieldMeas = FALSE;
     43static double XFIELD_MEAS = 0.0;
     44static double YFIELD_MEAS = 0.0;
    3345
    3446int dbExtractMeasuresInit (int isRemoteClient) {
     
    6678
    6779int dbExtractMeasuresInitMeas () {
     80  haveMosaicMeas   = FALSE;
    6881  haveGalacticMeas = FALSE;
    6982  haveEclipticMeas = FALSE;
     
    7689  int Nsec;
    7790  dbValue value;
    78   double ra, dec, x, y, dT;
    79 
    80   Coords *mosaic;
     91  double dT;
     92
     93  Coords *mosaic, *fieldc;
    8194  PhotCode *equiv;
    8295
     
    465478      value.Flt = FromShortPixels(measure[0].dRsys);
    466479      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;
    478529      break;
    479530    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;
    490545      break;
    491546
  • branches/eam_branches/ipp-20130307/Ohana/src/libdvo/src/dbFields.c

    r35237 r35342  
    220220  if (!strcasecmp (fieldName, "YFIX"))           ESCAPE (MEAS_YFIX,           MAG_NONE, OPIHI_FLT);
    221221  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);
    222224  if (!strcasecmp (fieldName, "XMOSAIC"))        ESCAPE (MEAS_XMOSAIC,        MAG_NONE, OPIHI_FLT);
    223225  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  
    199199
    200200    if (table->hosts[i].status) continue;
     201    if (!table->hosts[i].pid) continue;
    201202
    202203    if (ReadVectors) {
  • branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/mextract.c

    r35327 r35342  
    1616    if (field->ID == MEAS_CENTER_OFFSET)  return TRUE; // 0.5*NX, 0.5*NY
    1717    if (field->ID == MEAS_EXPNAME_AS_INT) return TRUE; // expname (or as int)
    18     if (field->ID == MEAS_AIRMASS)        return TRUE; // airmass
     18    if (field->ID == MEAS_MEAN_AIRMASS)   return TRUE; // airmass
    1919    return FALSE;
    2020}
  • branches/eam_branches/ipp-20130307/Ohana/src/opihi/dvo/photometry.c

    r34405 r35342  
    11271127  double value;
    11281128  Image *image;
    1129   Coords *mosaic;
     1129  // Coords *mosaic;
    11301130
    11311131  value = 0;
     
    11931193# endif
    11941194      break;
     1195# if 0
    11951196    case MEAS_XMOSAIC: /* OK */
    11961197      ra  = average[0].R - measure[0].dR / 3600.0;
    11971198      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
    11991200      if (mosaic == NULL) break;
    12001201      RD_to_XY (&x, &y, ra, dec, mosaic);
     
    12041205      ra  = average[0].R - measure[0].dR / 3600.0;
    12051206      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
    12071208      if (mosaic == NULL) break;
    12081209      RD_to_XY (&x, &y, ra, dec, mosaic);
    12091210      value = y;
    12101211      break;
     1212# endif
    12111213  }
    12121214  return (value);
Note: See TracChangeset for help on using the changeset viewer.