IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 11, 2016, 2:29:33 PM (10 years ago)
Author:
eugene
Message:

add photometry difference weighting for the astrometric fit to the psastro.config recipe; add ZPN projection to the WCS I/O

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/czw_branch/20160809/psModules/src/astrom/pmAstrometryWCS.c

    r36492 r39685  
    277277    wcs->crpix2 = psMetadataLookupF64 (&status, header, "CRPIX2");
    278278    wcs->toSky = psProjectionAlloc (wcs->crval1*PM_RAD_DEG, wcs->crval2*PM_RAD_DEG, PM_RAD_DEG, PM_RAD_DEG, type);
     279
     280    // XXX if type == ZPN, look for PV2_%d elements:
     281    if (type == PS_PROJ_ZPN) {
     282      psVector *maxRadial = psVectorAlloc (21, PS_TYPE_F64);
     283      for (int i = 0; i <= 20; i++) {
     284        char name[64];
     285        snprintf (name, 64, "PV2_%d", i);
     286
     287        maxRadial->data.F64[i] = 0.0;
     288        double value = psMetadataLookupF64 (&status, header, name);
     289
     290        if (status) {
     291          maxRadial->data.F64[i] = value;
     292          maxRadial->n = i;
     293        }
     294
     295        // PV2_1 is implicit if not present
     296        if ((i == 1) && !status) {
     297          maxRadial->data.F64[i] = 1.0;
     298          continue;
     299        }
     300      }
     301      maxRadial->n ++;
     302      wcs->toSky->radial = maxRadial;
     303    }
    279304
    280305    // These aren't needed but having them empty is disconcerting
     
    375400    psMetadataAddF64 (header, PS_LIST_TAIL, "CRPIX1", PS_META_REPLACE, "", wcs->crpix1);
    376401    psMetadataAddF64 (header, PS_LIST_TAIL, "CRPIX2", PS_META_REPLACE, "", wcs->crpix2);
     402
     403    if (wcs->toSky->type == PS_PROJ_ZPN) {
     404      psAssert (wcs->toSky->radial, "missing radial vector");
     405      for (int i = 0; i < wcs->toSky->radial->n; i++) {
     406        if (wcs->toSky->radial->data.F64[i] == 0.0) continue;
     407        snprintf (name, 16, "PV2_%d", i);
     408        psMetadataAddF64 (header, PS_LIST_TAIL, name, PS_META_REPLACE, "", wcs->toSky->radial->data.F64[i]);
     409      }
     410    }
    377411
    378412    // XXX make it optional to write out CDi_j terms, or other versions
     
    485519    // projection from TPA (linear microns) to SKY (radians)
    486520    psProjection *toSky = psProjectionAlloc (wcs->toSky->R, wcs->toSky->D, PM_RAD_DEG*pdelt1, PM_RAD_DEG*pdelt2, wcs->toSky->type);
     521    toSky->radial = psMemIncrRefCounter (wcs->toSky->radial);
    487522
    488523    if (fpa->toSky == NULL) {
     
    633668    // cdelt1,2 has units of degrees/micron
    634669    fpa->toSky = psProjectionAlloc (wcs->toSky->R, wcs->toSky->D, wcs->cdelt1*PM_RAD_DEG, wcs->cdelt2*PM_RAD_DEG, wcs->toSky->type);
     670    fpa->toSky->radial = psMemIncrRefCounter (wcs->toSky->radial);
    635671
    636672    // create transformation with 0,0 reference pixel
     
    701737    // convert projection from FPA to SKY into wcs projection (degrees to radians)
    702738    wcs->toSky = psProjectionAlloc (fpa->toSky->R, fpa->toSky->D, PM_RAD_DEG, PM_RAD_DEG, fpa->toSky->type);
     739    wcs->toSky->radial = psMemIncrRefCounter (fpa->toSky->radial);
     740
    703741    wcs->crval1 = fpa->toSky->R*PS_DEG_RAD;
    704742    wcs->crval2 = fpa->toSky->D*PS_DEG_RAD;
Note: See TracChangeset for help on using the changeset viewer.