IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 11, 2015, 2:02:45 PM (12 years ago)
Author:
eugene
Message:

merge changes from trunk

Location:
branches/eam_branches/ipp-20140904/Ohana
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140904/Ohana

  • branches/eam_branches/ipp-20140904/Ohana/src/addstar/src/ReadStarsFITS.c

    r37246 r37803  
    1414Stars     *Convert_PS1_V5         PROTO((FTable *table, unsigned int *nstars));
    1515Stars     *Convert_PS1_V5_Lensing PROTO((FTable *table, unsigned int *nstars));
     16Stars     *Convert_PS1_V5_Lensing_Alt PROTO((FTable *table, unsigned int *nstars));
    1617Stars     *Convert_PS1_SV1        PROTO((FTable *table, unsigned int *nstars));
    1718Stars     *Convert_PS1_SV1_Alt    PROTO((FTable *table, unsigned int *nstars));
    1819Stars     *Convert_PS1_SV2        PROTO((FTable *table, unsigned int *nstars));
    1920Stars     *Convert_PS1_SV3        PROTO((FTable *table, unsigned int *nstars));
     21Stars     *Convert_PS1_SV4        PROTO((FTable *table, unsigned int *nstars));
    2022Stars     *Convert_PS1_DV3        PROTO((FTable *table, unsigned int *nstars));
    2123Stars     *Convert_PS1_DV4        PROTO((FTable *table, unsigned int *nstars));
     
    7880  }
    7981  if (!strcmp (type, "PS1_V5")) {
    80     if (table.header[0].Naxis[0] == 312) {
    81       stars = Convert_PS1_V5_Lensing (&table, &Nstars);
    82     } else {
    83       stars = Convert_PS1_V5 (&table, &Nstars);
     82    switch (table.header[0].Naxis[0]) {
     83      case 232:
     84        stars = Convert_PS1_V5 (&table, &Nstars);
     85        break;
     86      case 312:
     87        stars = Convert_PS1_V5_Lensing_Alt (&table, &Nstars);
     88        break;
     89      case 320:
     90        stars = Convert_PS1_V5_Lensing (&table, &Nstars);
     91        break;
     92      default:
     93        fprintf (stderr, "invalid PS1_V5 table size %d\n", (int) table.header[0].Naxis[0]);
     94        return NULL;
    8495    }
    8596  }
     
    92103  if (!strcmp (type, "PS1_SV3")) {
    93104    stars = Convert_PS1_SV3 (&table, &Nstars);
     105  }
     106  if (!strcmp (type, "PS1_SV4")) {
     107    stars = Convert_PS1_SV4 (&table, &Nstars);
    94108  }
    95109  if (!strcmp (type, "PS1_DV3")) {
     
    971985}
    972986
     987Stars *Convert_PS1_V5_Lensing_Alt (FTable *table, unsigned int *nstars) {
     988
     989  off_t Nstars;
     990  unsigned int i;
     991  double ZeroPt;
     992  Stars *stars;
     993  CMF_PS1_V5_Lensing_Alt *ps1data;
     994
     995  ps1data = gfits_table_get_CMF_PS1_V5_Lensing_Alt (table, &Nstars, NULL);
     996  if (!ps1data) {
     997    fprintf (stderr, "skipping inconsistent entry\n");
     998    return (NULL);
     999  }
     1000  ZeroPt = GetZeroPoint();
     1001
     1002  ALLOCATE (stars, Stars, Nstars);
     1003  for (i = 0; i < Nstars; i++) {
     1004    InitStar (&stars[i]);
     1005    stars[i].measure.Xccd       = ps1data[i].X;
     1006    stars[i].measure.Yccd       = ps1data[i].Y;
     1007    stars[i].measure.dXccd      = ToShortPixels(ps1data[i].dX);
     1008    stars[i].measure.dYccd      = ToShortPixels(ps1data[i].dY);
     1009
     1010    stars[i].measure.posangle   = ToShortDegrees(ps1data[i].posangle);
     1011    stars[i].measure.pltscale   = ps1data[i].pltscale;
     1012
     1013    if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {
     1014      stars[i].measure.M      = NAN;
     1015    } else {
     1016      stars[i].measure.M      = ps1data[i].M + ZeroPt;
     1017    }
     1018    stars[i].measure.dM         = ps1data[i].dM;
     1019    stars[i].measure.dMcal      = ps1data[i].dMcal;
     1020    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
     1021    stars[i].measure.dMap       = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;
     1022                       
     1023    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
     1024    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
     1025                       
     1026    // these fluxes are converted from counts to counts/sec in FilterStars.c
     1027    stars[i].measure.FluxPSF    = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);
     1028    stars[i].measure.dFluxPSF   = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);
     1029    stars[i].measure.FluxKron   = ps1data[i].kronFlux;
     1030    stars[i].measure.dFluxKron  = ps1data[i].kronFluxErr;
     1031    stars[i].measure.FluxAp     = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);
     1032    stars[i].measure.dFluxAp    = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);
     1033
     1034    stars[i].measure.Sky        = ps1data[i].sky;
     1035    stars[i].measure.dSky       = ps1data[i].dSky;
     1036                       
     1037    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
     1038    stars[i].measure.psfQF      = ps1data[i].psfQF;
     1039    stars[i].measure.psfQFperf  = ps1data[i].psfQFperf;
     1040
     1041    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
     1042    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     1043    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
     1044
     1045    stars[i].measure.FWx        = ToShortPixels(ps1data[i].fx);
     1046    stars[i].measure.FWy        = ToShortPixels(ps1data[i].fy);
     1047    stars[i].measure.theta      = ToShortDegrees(ps1data[i].df);
     1048
     1049    stars[i].measure.Mxx        = ToShortPixels(ps1data[i].Mxx);
     1050    stars[i].measure.Mxy        = ToShortPixels(ps1data[i].Mxy);
     1051    stars[i].measure.Myy        = ToShortPixels(ps1data[i].Myy);
     1052                       
     1053    stars[i].measure.photFlags  = ps1data[i].flags;
     1054    stars[i].measure.photFlags2 = ps1data[i].flags2;
     1055
     1056    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     1057    stars[i].measure.detID      = ps1data[i].detID;
     1058
     1059    ALLOCATE (stars[i].lensing, Lensing, 1);
     1060    dvo_lensing_init (stars[i].lensing);
     1061
     1062    stars[i].lensing->X11_sm_obj  = ps1data[i].X11_sm_obj;
     1063    stars[i].lensing->X12_sm_obj  = ps1data[i].X12_sm_obj;
     1064    stars[i].lensing->X22_sm_obj  = ps1data[i].X22_sm_obj;
     1065    stars[i].lensing->E1_sm_obj   = ps1data[i].E1_sm_obj;
     1066    stars[i].lensing->E2_sm_obj   = ps1data[i].E2_sm_obj;
     1067
     1068    stars[i].lensing->X11_sh_obj  = ps1data[i].X11_sh_obj;
     1069    stars[i].lensing->X12_sh_obj  = ps1data[i].X12_sh_obj;
     1070    stars[i].lensing->X22_sh_obj  = ps1data[i].X22_sh_obj;
     1071    stars[i].lensing->E1_sh_obj   = ps1data[i].E1_sh_obj;
     1072    stars[i].lensing->E2_sh_obj   = ps1data[i].E2_sh_obj;
     1073
     1074    stars[i].lensing->X11_sm_psf  = ps1data[i].X11_sm_psf;
     1075    stars[i].lensing->X12_sm_psf  = ps1data[i].X12_sm_psf;
     1076    stars[i].lensing->X22_sm_psf  = ps1data[i].X22_sm_psf;
     1077    stars[i].lensing->E1_sm_psf   = ps1data[i].E1_sm_psf;
     1078    stars[i].lensing->E2_sm_psf   = ps1data[i].E2_sm_psf;
     1079
     1080    stars[i].lensing->X11_sh_psf  = ps1data[i].X11_sh_psf;
     1081    stars[i].lensing->X12_sh_psf  = ps1data[i].X12_sh_psf;
     1082    stars[i].lensing->X22_sh_psf  = ps1data[i].X22_sh_psf;
     1083    stars[i].lensing->E1_sh_psf   = ps1data[i].E1_sh_psf;
     1084    stars[i].lensing->E2_sh_psf   = ps1data[i].E2_sh_psf;
     1085
     1086    // stars[i].lensing->F_ApR5    = ps1data[i].F_ApR5;
     1087    // stars[i].lensing->dF_ApR5   = ps1data[i].dF_ApR5;
     1088    // stars[i].lensing->sF_ApR5   = ps1data[i].sF_ApR5;
     1089    // stars[i].lensing->fF_ApR5   = ps1data[i].fF_ApR5;
     1090    //
     1091    // stars[i].lensing->F_ApR6    = ps1data[i].F_ApR6;
     1092    // stars[i].lensing->dF_ApR6   = ps1data[i].dF_ApR6;
     1093    // stars[i].lensing->sF_ApR6   = ps1data[i].sF_ApR6;
     1094    // stars[i].lensing->fF_ApR6   = ps1data[i].fF_ApR6;
     1095
     1096    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     1097    stars[i].lensing->detID      = ps1data[i].detID;
     1098
     1099    // the Average fields and the following Measure fields are set in FilterStars after
     1100    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID.
     1101
     1102    // averef is set in find_matches
     1103
     1104    // dbFlags is zero on ingest.
     1105
     1106    // the following fields are currently not being set anywhere: t_msec
     1107  }   
     1108  *nstars = Nstars;
     1109  return (stars);
     1110}
     1111
    9731112Stars *Convert_PS1_SV1 (FTable *table, unsigned int *nstars) {
    9741113
     
    13041443}
    13051444
    1306 Stars *Convert_PS1_DV3 (FTable *table, unsigned int *nstars) {
     1445Stars *Convert_PS1_SV4 (FTable *table, unsigned int *nstars) {
    13071446
    13081447  off_t Nstars;
     
    13101449  double ZeroPt;
    13111450  Stars *stars;
    1312   CMF_PS1_DV3 *ps1data;
    1313 
    1314   ps1data = gfits_table_get_CMF_PS1_DV3 (table, &Nstars, NULL);
     1451  CMF_PS1_SV4 *ps1data;
     1452
     1453  ps1data = gfits_table_get_CMF_PS1_SV4 (table, &Nstars, NULL);
    13151454  if (!ps1data) {
    13161455    fprintf (stderr, "skipping inconsistent entry\n");
     
    13421481    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
    13431482    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
    1344                        
     1483
    13451484    // these fluxes are converted from counts to counts/sec in FilterStars.c
    13461485    stars[i].measure.FluxPSF    = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);
     
    13571496    stars[i].measure.psfQF      = ps1data[i].psfQF;
    13581497    stars[i].measure.psfQFperf  = ps1data[i].psfQFperf;
     1498
    13591499    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    13601500    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    13761516
    13771517    // the Average fields and the following Measure fields are set in FilterStars after
    1378     // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID.
    1379 
    1380     // averef is set in find_matches
    1381 
    1382     // dbFlags is zero on ingest.
     1518    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID,
     1519    // averef is set in find_matches, dbFlags is zero on ingest.
    13831520
    13841521    // the following fields are currently not being set anywhere: t_msec
     
    13881525}
    13891526
    1390 Stars *Convert_PS1_DV4 (FTable *table, unsigned int *nstars) {
     1527Stars *Convert_PS1_DV3 (FTable *table, unsigned int *nstars) {
    13911528
    13921529  off_t Nstars;
     
    13941531  double ZeroPt;
    13951532  Stars *stars;
    1396   CMF_PS1_DV4 *ps1data;
    1397 
    1398   ps1data = gfits_table_get_CMF_PS1_DV4 (table, &Nstars, NULL);
     1533  CMF_PS1_DV3 *ps1data;
     1534
     1535  ps1data = gfits_table_get_CMF_PS1_DV3 (table, &Nstars, NULL);
    13991536  if (!ps1data) {
    14001537    fprintf (stderr, "skipping inconsistent entry\n");
     
    14021539  }
    14031540  ZeroPt = GetZeroPoint();
    1404 
    1405   fprintf (stderr, "WARNING: Convert_PS1_DV4 not yet updated to match real format\n");
    14061541
    14071542  ALLOCATE (stars, Stars, Nstars);
     
    14741609}
    14751610
    1476 
    1477 
     1611Stars *Convert_PS1_DV4 (FTable *table, unsigned int *nstars) {
     1612
     1613  off_t Nstars;
     1614  unsigned int i;
     1615  double ZeroPt;
     1616  Stars *stars;
     1617  CMF_PS1_DV4 *ps1data;
     1618
     1619  ps1data = gfits_table_get_CMF_PS1_DV4 (table, &Nstars, NULL);
     1620  if (!ps1data) {
     1621    fprintf (stderr, "skipping inconsistent entry\n");
     1622    return (NULL);
     1623  }
     1624  ZeroPt = GetZeroPoint();
     1625
     1626  fprintf (stderr, "WARNING: Convert_PS1_DV4 not yet updated to match real format\n");
     1627
     1628  ALLOCATE (stars, Stars, Nstars);
     1629  for (i = 0; i < Nstars; i++) {
     1630    InitStar (&stars[i]);
     1631    stars[i].measure.Xccd       = ps1data[i].X;
     1632    stars[i].measure.Yccd       = ps1data[i].Y;
     1633    stars[i].measure.dXccd      = ToShortPixels(ps1data[i].dX);
     1634    stars[i].measure.dYccd      = ToShortPixels(ps1data[i].dY);
     1635
     1636    stars[i].measure.posangle   = ToShortDegrees(ps1data[i].posangle);
     1637    stars[i].measure.pltscale   = ps1data[i].pltscale;
     1638
     1639    if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {
     1640      stars[i].measure.M      = NAN;
     1641    } else {
     1642      stars[i].measure.M      = ps1data[i].M + ZeroPt;
     1643    }
     1644    stars[i].measure.dM         = ps1data[i].dM;
     1645    stars[i].measure.dMcal      = ps1data[i].dMcal;
     1646    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
     1647    stars[i].measure.dMap       = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;
     1648                       
     1649    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
     1650    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
     1651                       
     1652    // these fluxes are converted from counts to counts/sec in FilterStars.c
     1653    stars[i].measure.FluxPSF    = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);
     1654    stars[i].measure.dFluxPSF   = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);
     1655    stars[i].measure.FluxKron   = ps1data[i].kronFlux;
     1656    stars[i].measure.dFluxKron  = ps1data[i].kronFluxErr;
     1657    stars[i].measure.FluxAp     = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);
     1658    stars[i].measure.dFluxAp    = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);
     1659
     1660    stars[i].measure.Sky        = ps1data[i].sky;
     1661    stars[i].measure.dSky       = ps1data[i].dSky;
     1662                       
     1663    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
     1664    stars[i].measure.psfQF      = ps1data[i].psfQF;
     1665    stars[i].measure.psfQFperf  = ps1data[i].psfQFperf;
     1666    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
     1667    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     1668    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
     1669
     1670    stars[i].measure.FWx        = ToShortPixels(ps1data[i].fx);
     1671    stars[i].measure.FWy        = ToShortPixels(ps1data[i].fy);
     1672    stars[i].measure.theta      = ToShortDegrees(ps1data[i].df);
     1673
     1674    stars[i].measure.Mxx        = ToShortPixels(ps1data[i].Mxx);
     1675    stars[i].measure.Mxy        = ToShortPixels(ps1data[i].Mxy);
     1676    stars[i].measure.Myy        = ToShortPixels(ps1data[i].Myy);
     1677                       
     1678    stars[i].measure.photFlags  = ps1data[i].flags;
     1679    stars[i].measure.photFlags2 = ps1data[i].flags2;
     1680
     1681    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     1682    stars[i].measure.detID      = ps1data[i].detID;
     1683
     1684    // the Average fields and the following Measure fields are set in FilterStars after
     1685    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID.
     1686
     1687    // averef is set in find_matches
     1688
     1689    // dbFlags is zero on ingest.
     1690
     1691    // the following fields are currently not being set anywhere: t_msec
     1692  }   
     1693  *nstars = Nstars;
     1694  return (stars);
     1695}
     1696
     1697
     1698
Note: See TracChangeset for help on using the changeset viewer.