IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 29, 2015, 6:14:05 AM (11 years ago)
Author:
eugene
Message:

merge changes from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150112/Ohana/src/addstar/src/ReadStarsFITS.c

    r37729 r38059  
    44// (excluding SDSS data and reference database info, such as 2MASS)
    55// NOTE: these must also be listed in MatchHeaders.c (line ~ 62)
    6 Stars     *Convert_SMPDATA        PROTO((FTable *table, unsigned int *nstars));
    7 Stars     *Convert_PS1_DEV_0      PROTO((FTable *table, unsigned int *nstars));
    8 Stars     *Convert_PS1_DEV_1      PROTO((FTable *table, unsigned int *nstars));
    9 Stars     *Convert_PS1_V1         PROTO((FTable *table, unsigned int *nstars));
    10 Stars     *Convert_PS1_V1_Alt     PROTO((FTable *table, unsigned int *nstars));
    11 Stars     *Convert_PS1_V2         PROTO((FTable *table, unsigned int *nstars));
    12 Stars     *Convert_PS1_V3         PROTO((FTable *table, unsigned int *nstars));
    13 Stars     *Convert_PS1_V4         PROTO((FTable *table, unsigned int *nstars));
    14 Stars     *Convert_PS1_V5         PROTO((FTable *table, unsigned int *nstars));
    15 Stars     *Convert_PS1_V5_Lensing PROTO((FTable *table, unsigned int *nstars));
    16 Stars     *Convert_PS1_V5_Lensing_Alt PROTO((FTable *table, unsigned int *nstars));
    17 Stars     *Convert_PS1_SV1        PROTO((FTable *table, unsigned int *nstars));
    18 Stars     *Convert_PS1_SV1_Alt    PROTO((FTable *table, unsigned int *nstars));
    19 Stars     *Convert_PS1_SV2        PROTO((FTable *table, unsigned int *nstars));
    20 Stars     *Convert_PS1_SV3        PROTO((FTable *table, unsigned int *nstars));
    21 Stars     *Convert_PS1_SV4        PROTO((FTable *table, unsigned int *nstars));
    22 Stars     *Convert_PS1_DV3        PROTO((FTable *table, unsigned int *nstars));
    23 Stars     *Convert_PS1_DV4        PROTO((FTable *table, unsigned int *nstars));
     6Stars     *Convert_SMPDATA           PROTO((FTable *table, unsigned int *nstars));
     7Stars     *Convert_PS1_DEV_0         PROTO((FTable *table, unsigned int *nstars));
     8Stars     *Convert_PS1_DEV_1         PROTO((FTable *table, unsigned int *nstars));
     9Stars     *Convert_PS1_V1            PROTO((FTable *table, unsigned int *nstars));
     10Stars     *Convert_PS1_V1_Alt        PROTO((FTable *table, unsigned int *nstars));
     11Stars     *Convert_PS1_V2            PROTO((FTable *table, unsigned int *nstars));
     12Stars     *Convert_PS1_V3            PROTO((FTable *table, unsigned int *nstars));
     13Stars     *Convert_PS1_V4            PROTO((FTable *table, unsigned int *nstars));
     14Stars     *Convert_PS1_V5            PROTO((FTable *table, unsigned int *nstars));
     15Stars     *Convert_PS1_V5_R0_Lensing PROTO((FTable *table, unsigned int *nstars));
     16Stars     *Convert_PS1_V5_R1_Lensing PROTO((FTable *table, unsigned int *nstars));
     17Stars     *Convert_PS1_V5_R2_Lensing PROTO((FTable *table, unsigned int *nstars));
     18Stars     *Convert_PS1_SV1           PROTO((FTable *table, unsigned int *nstars));
     19Stars     *Convert_PS1_SV1_Alt       PROTO((FTable *table, unsigned int *nstars));
     20Stars     *Convert_PS1_SV2           PROTO((FTable *table, unsigned int *nstars));
     21Stars     *Convert_PS1_SV3           PROTO((FTable *table, unsigned int *nstars));
     22Stars     *Convert_PS1_SV4           PROTO((FTable *table, unsigned int *nstars));
     23Stars     *Convert_PS1_DV3           PROTO((FTable *table, unsigned int *nstars));
     24Stars     *Convert_PS1_DV4           PROTO((FTable *table, unsigned int *nstars));
     25Stars     *Convert_PS1_DV5           PROTO((FTable *table, unsigned int *nstars));
    2426
    2527// given a file with the pointer at the start of the table block and the
     
    8587        break;
    8688      case 312:
    87         stars = Convert_PS1_V5_Lensing_Alt (&table, &Nstars);
     89        stars = Convert_PS1_V5_R0_Lensing (&table, &Nstars);
    8890        break;
    8991      case 320:
    90         stars = Convert_PS1_V5_Lensing (&table, &Nstars);
     92        stars = Convert_PS1_V5_R1_Lensing (&table, &Nstars);
     93        break;
     94      case 328:
     95        stars = Convert_PS1_V5_R2_Lensing (&table, &Nstars);
    9196        break;
    9297      default:
     
    112117  if (!strcmp (type, "PS1_DV4")) {
    113118    stars = Convert_PS1_DV4 (&table, &Nstars);
     119  }
     120  if (!strcmp (type, "PS1_DV5")) {
     121    stars = Convert_PS1_DV5 (&table, &Nstars);
    114122  }
    115123  if (stars == NULL) {
     
    860868}
    861869
    862 Stars *Convert_PS1_V5_Lensing (FTable *table, unsigned int *nstars) {
     870Stars *Convert_PS1_V5_R0_Lensing (FTable *table, unsigned int *nstars) {
    863871
    864872  off_t Nstars;
     
    866874  double ZeroPt;
    867875  Stars *stars;
    868   CMF_PS1_V5_Lensing *ps1data;
    869 
    870   ps1data = gfits_table_get_CMF_PS1_V5_Lensing (table, &Nstars, NULL);
     876  CMF_PS1_V5_R0_Lensing *ps1data;
     877
     878  ps1data = gfits_table_get_CMF_PS1_V5_R0_Lensing (table, &Nstars, NULL);
    871879  if (!ps1data) {
    872880    fprintf (stderr, "skipping inconsistent entry\n");
     
    985993}
    986994
    987 Stars *Convert_PS1_V5_Lensing_Alt (FTable *table, unsigned int *nstars) {
     995Stars *Convert_PS1_V5_R1_Lensing (FTable *table, unsigned int *nstars) {
    988996
    989997  off_t Nstars;
     
    991999  double ZeroPt;
    9921000  Stars *stars;
    993   CMF_PS1_V5_Lensing_Alt *ps1data;
    994 
    995   ps1data = gfits_table_get_CMF_PS1_V5_Lensing_Alt (table, &Nstars, NULL);
     1001  CMF_PS1_V5_R1_Lensing *ps1data;
     1002
     1003  ps1data = gfits_table_get_CMF_PS1_V5_R1_Lensing (table, &Nstars, NULL);
    9961004  if (!ps1data) {
    9971005    fprintf (stderr, "skipping inconsistent entry\n");
     
    11101118}
    11111119
    1112 Stars *Convert_PS1_SV1 (FTable *table, unsigned int *nstars) {
     1120Stars *Convert_PS1_V5_R2_Lensing (FTable *table, unsigned int *nstars) {
    11131121
    11141122  off_t Nstars;
     
    11161124  double ZeroPt;
    11171125  Stars *stars;
    1118   CMF_PS1_SV1 *ps1data;
    1119 
    1120   if (table[0].header[0].Naxis[0] == 196) {
    1121     stars = Convert_PS1_SV1_Alt (table, nstars);
    1122     return (stars);
    1123   }
    1124 
    1125   ps1data = gfits_table_get_CMF_PS1_SV1 (table, &Nstars, NULL);
     1126  CMF_PS1_V5_R2_Lensing *ps1data;
     1127
     1128  ps1data = gfits_table_get_CMF_PS1_V5_R2_Lensing (table, &Nstars, NULL);
    11261129  if (!ps1data) {
    11271130    fprintf (stderr, "skipping inconsistent entry\n");
     
    11491152    stars[i].measure.dMcal      = ps1data[i].dMcal;
    11501153    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
     1154    stars[i].measure.dMap       = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;
     1155                       
     1156    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
     1157    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
     1158                       
     1159    // these fluxes are converted from counts to counts/sec in FilterStars.c
     1160    stars[i].measure.FluxPSF    = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);
     1161    stars[i].measure.dFluxPSF   = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);
     1162    stars[i].measure.FluxKron   = ps1data[i].kronFlux;
     1163    stars[i].measure.dFluxKron  = ps1data[i].kronFluxErr;
     1164    stars[i].measure.FluxAp     = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);
     1165    stars[i].measure.dFluxAp    = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);
     1166
     1167    stars[i].measure.Sky        = ps1data[i].sky;
     1168    stars[i].measure.dSky       = ps1data[i].dSky;
     1169                       
     1170    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
     1171    stars[i].measure.psfQF      = ps1data[i].psfQF;
     1172    stars[i].measure.psfQFperf  = ps1data[i].psfQFperf;
     1173
     1174    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
     1175    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     1176    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
     1177
     1178    stars[i].measure.FWx        = ToShortPixels(ps1data[i].fx);
     1179    stars[i].measure.FWy        = ToShortPixels(ps1data[i].fy);
     1180    stars[i].measure.theta      = ToShortDegrees(ps1data[i].df);
     1181
     1182    stars[i].measure.Mxx        = ToShortPixels(ps1data[i].Mxx);
     1183    stars[i].measure.Mxy        = ToShortPixels(ps1data[i].Mxy);
     1184    stars[i].measure.Myy        = ToShortPixels(ps1data[i].Myy);
     1185                       
     1186    stars[i].measure.photFlags  = ps1data[i].flags;
     1187    stars[i].measure.photFlags2 = ps1data[i].flags2;
     1188
     1189    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     1190    stars[i].measure.detID      = ps1data[i].detID;
     1191
     1192    ALLOCATE (stars[i].lensing, Lensing, 1);
     1193    dvo_lensing_init (stars[i].lensing);
     1194
     1195    stars[i].lensing->X11_sm_obj  = ps1data[i].X11_sm_obj;
     1196    stars[i].lensing->X12_sm_obj  = ps1data[i].X12_sm_obj;
     1197    stars[i].lensing->X22_sm_obj  = ps1data[i].X22_sm_obj;
     1198    stars[i].lensing->E1_sm_obj   = ps1data[i].E1_sm_obj;
     1199    stars[i].lensing->E2_sm_obj   = ps1data[i].E2_sm_obj;
     1200
     1201    stars[i].lensing->X11_sh_obj  = ps1data[i].X11_sh_obj;
     1202    stars[i].lensing->X12_sh_obj  = ps1data[i].X12_sh_obj;
     1203    stars[i].lensing->X22_sh_obj  = ps1data[i].X22_sh_obj;
     1204    stars[i].lensing->E1_sh_obj   = ps1data[i].E1_sh_obj;
     1205    stars[i].lensing->E2_sh_obj   = ps1data[i].E2_sh_obj;
     1206
     1207    stars[i].lensing->X11_sm_psf  = ps1data[i].X11_sm_psf;
     1208    stars[i].lensing->X12_sm_psf  = ps1data[i].X12_sm_psf;
     1209    stars[i].lensing->X22_sm_psf  = ps1data[i].X22_sm_psf;
     1210    stars[i].lensing->E1_sm_psf   = ps1data[i].E1_sm_psf;
     1211    stars[i].lensing->E2_sm_psf   = ps1data[i].E2_sm_psf;
     1212
     1213    stars[i].lensing->X11_sh_psf  = ps1data[i].X11_sh_psf;
     1214    stars[i].lensing->X12_sh_psf  = ps1data[i].X12_sh_psf;
     1215    stars[i].lensing->X22_sh_psf  = ps1data[i].X22_sh_psf;
     1216    stars[i].lensing->E1_sh_psf   = ps1data[i].E1_sh_psf;
     1217    stars[i].lensing->E2_sh_psf   = ps1data[i].E2_sh_psf;
     1218
     1219    stars[i].lensing->E1_psf      = ps1data[i].E1_psf;
     1220    stars[i].lensing->E2_psf      = ps1data[i].E2_psf;
     1221
     1222    // stars[i].lensing->F_ApR5    = ps1data[i].F_ApR5;
     1223    // stars[i].lensing->dF_ApR5   = ps1data[i].dF_ApR5;
     1224    // stars[i].lensing->sF_ApR5   = ps1data[i].sF_ApR5;
     1225    // stars[i].lensing->fF_ApR5   = ps1data[i].fF_ApR5;
     1226    //
     1227    // stars[i].lensing->F_ApR6    = ps1data[i].F_ApR6;
     1228    // stars[i].lensing->dF_ApR6   = ps1data[i].dF_ApR6;
     1229    // stars[i].lensing->sF_ApR6   = ps1data[i].sF_ApR6;
     1230    // stars[i].lensing->fF_ApR6   = ps1data[i].fF_ApR6;
     1231
     1232    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     1233    stars[i].lensing->detID      = ps1data[i].detID;
     1234
     1235    // the Average fields and the following Measure fields are set in FilterStars after
     1236    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID.
     1237
     1238    // averef is set in find_matches
     1239
     1240    // dbFlags is zero on ingest.
     1241
     1242    // the following fields are currently not being set anywhere: t_msec
     1243  }   
     1244  *nstars = Nstars;
     1245  return (stars);
     1246}
     1247
     1248Stars *Convert_PS1_SV1 (FTable *table, unsigned int *nstars) {
     1249
     1250  off_t Nstars;
     1251  unsigned int i;
     1252  double ZeroPt;
     1253  Stars *stars;
     1254  CMF_PS1_SV1 *ps1data;
     1255
     1256  if (table[0].header[0].Naxis[0] == 196) {
     1257    stars = Convert_PS1_SV1_Alt (table, nstars);
     1258    return (stars);
     1259  }
     1260
     1261  ps1data = gfits_table_get_CMF_PS1_SV1 (table, &Nstars, NULL);
     1262  if (!ps1data) {
     1263    fprintf (stderr, "skipping inconsistent entry\n");
     1264    return (NULL);
     1265  }
     1266  ZeroPt = GetZeroPoint();
     1267
     1268  ALLOCATE (stars, Stars, Nstars);
     1269  for (i = 0; i < Nstars; i++) {
     1270    InitStar (&stars[i]);
     1271    stars[i].measure.Xccd       = ps1data[i].X;
     1272    stars[i].measure.Yccd       = ps1data[i].Y;
     1273    stars[i].measure.dXccd      = ToShortPixels(ps1data[i].dX);
     1274    stars[i].measure.dYccd      = ToShortPixels(ps1data[i].dY);
     1275
     1276    stars[i].measure.posangle   = ToShortDegrees(ps1data[i].posangle);
     1277    stars[i].measure.pltscale   = ps1data[i].pltscale;
     1278
     1279    if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {
     1280      stars[i].measure.M      = NAN;
     1281    } else {
     1282      stars[i].measure.M      = ps1data[i].M + ZeroPt;
     1283    }
     1284    stars[i].measure.dM         = ps1data[i].dM;
     1285    stars[i].measure.dMcal      = ps1data[i].dMcal;
     1286    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
    11511287    stars[i].measure.dMap       = ps1data[i].dM; // a proxy measure
    11521288                       
     
    16951831}
    16961832
    1697 
    1698 
     1833Stars *Convert_PS1_DV5 (FTable *table, unsigned int *nstars) {
     1834
     1835  off_t Nstars;
     1836  unsigned int i;
     1837  double ZeroPt;
     1838  Stars *stars;
     1839  CMF_PS1_DV5 *ps1data;
     1840
     1841  ps1data = gfits_table_get_CMF_PS1_DV5 (table, &Nstars, NULL);
     1842  if (!ps1data) {
     1843    fprintf (stderr, "skipping inconsistent entry\n");
     1844    return (NULL);
     1845  }
     1846  ZeroPt = GetZeroPoint();
     1847
     1848  ALLOCATE (stars, Stars, Nstars);
     1849  for (i = 0; i < Nstars; i++) {
     1850    InitStar (&stars[i]);
     1851    stars[i].measure.Xccd       = ps1data[i].X;
     1852    stars[i].measure.Yccd       = ps1data[i].Y;
     1853    stars[i].measure.dXccd      = ToShortPixels(ps1data[i].dX);
     1854    stars[i].measure.dYccd      = ToShortPixels(ps1data[i].dY);
     1855
     1856    stars[i].measure.posangle   = ToShortDegrees(ps1data[i].posangle);
     1857    stars[i].measure.pltscale   = ps1data[i].pltscale;
     1858
     1859    if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {
     1860      stars[i].measure.M      = NAN;
     1861    } else {
     1862      stars[i].measure.M      = ps1data[i].M + ZeroPt;
     1863    }
     1864    stars[i].measure.dM         = ps1data[i].dM;
     1865    stars[i].measure.dMcal      = ps1data[i].dMcal;
     1866    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
     1867    stars[i].measure.dMap       = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;
     1868                       
     1869    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
     1870    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
     1871                       
     1872    // these fluxes are converted from counts to counts/sec in FilterStars.c
     1873    stars[i].measure.FluxPSF    = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);
     1874    stars[i].measure.dFluxPSF   = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);
     1875    stars[i].measure.FluxKron   = ps1data[i].kronFlux;
     1876    stars[i].measure.dFluxKron  = ps1data[i].kronFluxErr;
     1877    stars[i].measure.FluxAp     = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);
     1878    stars[i].measure.dFluxAp    = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);
     1879
     1880    stars[i].measure.Sky        = ps1data[i].sky;
     1881    stars[i].measure.dSky       = ps1data[i].dSky;
     1882                       
     1883    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
     1884    stars[i].measure.psfQF      = ps1data[i].psfQF;
     1885    stars[i].measure.psfQFperf  = ps1data[i].psfQFperf;
     1886    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
     1887    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     1888    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
     1889
     1890    stars[i].measure.FWx        = ToShortPixels(ps1data[i].fx);
     1891    stars[i].measure.FWy        = ToShortPixels(ps1data[i].fy);
     1892    stars[i].measure.theta      = ToShortDegrees(ps1data[i].df);
     1893
     1894    stars[i].measure.Mxx        = ToShortPixels(ps1data[i].Mxx);
     1895    stars[i].measure.Mxy        = ToShortPixels(ps1data[i].Mxy);
     1896    stars[i].measure.Myy        = ToShortPixels(ps1data[i].Myy);
     1897                       
     1898    stars[i].measure.photFlags  = ps1data[i].flags;
     1899    stars[i].measure.photFlags2 = ps1data[i].flags2;
     1900
     1901    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     1902    stars[i].measure.detID      = ps1data[i].detID;
     1903
     1904    // the Average fields and the following Measure fields are set in FilterStars after
     1905    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID.
     1906
     1907    // averef is set in find_matches
     1908
     1909    // dbFlags is zero on ingest.
     1910
     1911    // the following fields are currently not being set anywhere: t_msec
     1912  }   
     1913  *nstars = Nstars;
     1914  return (stars);
     1915}
     1916
     1917
     1918
Note: See TracChangeset for help on using the changeset viewer.