IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38852


Ignore:
Timestamp:
Oct 13, 2015, 11:40:43 AM (11 years ago)
Author:
eugene
Message:

add stack extensions

Location:
trunk/Ohana/src/addstar
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/addstar/src/mkcmf.c

    r38441 r38852  
    2525void writeStars_PS1_DEV_0 (FTable *ftable, double *X, double *Y, double *M, int Nstars);
    2626
     27int WriteXSRCtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     28int WriteXFITtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     29int WriteXRADtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     30int WriteDETFtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     31
    2732int ADDNOISE = TRUE;
    2833float BAD_PSFQF_FRAC = 0.0;
     
    5459  }
    5560
     61  int WriteXSRC = FALSE;
     62  int WriteXFIT = FALSE;
     63  int WriteXRAD = FALSE;
     64  int WriteDETF = FALSE;
     65  if ((N = get_argument (argc, argv, "-stack"))) {
     66    remove_argument (N, &argc, argv);
     67    WriteXSRC = WriteXFIT = WriteXRAD = WriteDETF = TRUE;
     68  }
     69
    5670  static char *photcode = "SIMTEST.r.Chip";
    5771  if ((N = get_argument (argc, argv, "-photcode"))) {
     
    8397  }
    8498
    85   char extname[80], exthead[80];
     99  char extname[80], exthead[80], extroot[80];
     100  strcpy (extroot, "Chip");
    86101  strcpy (extname, "Chip.psf");
    87102  strcpy (exthead, "Chip.hdr");
    88   if ((N = get_argument (argc, argv, "-extname"))) {
    89     remove_argument (N, &argc, argv);
     103  if ((N = get_argument (argc, argv, "-extroot"))) {
     104    remove_argument (N, &argc, argv);
     105    snprintf (extroot, 80, "%s", argv[N]);
    90106    snprintf (extname, 80, "%s.psf", argv[N]);
    91107    snprintf (exthead, 80, "%s.hdr", argv[N]);
     
    280296  gfits_print (&header, "IMNAXIS1", "%d", 1, (int)(Xmax));
    281297  gfits_print (&header, "IMNAXIS2", "%d", 1, (int)(Ymax));
     298  gfits_print (&header, "NAXIS1",   "%d", 1, (int)(Xmax));
     299  gfits_print (&header, "NAXIS2",   "%d", 1, (int)(Ymax));
    282300
    283301  gfits_modify (&header, "NSTARS",   "%d", 1, Nstars);
     
    301319  PutCoords (&coords, &header);
    302320  gfits_modify (&header, "EXTNAME",   "%s", 1, exthead);
     321
     322  // various other fields needed to ipptopsps
     323  gfits_modify (&header, "FWHM_MAJ",          "%f", 1, FX*2.8);
     324  gfits_modify (&header, "FWHM_MIN",          "%f", 1, FY*2.8);
     325  gfits_modify (&header, "MSKY_MN",           "%f", 1, SKY);
     326  gfits_modify (&header, "MSKY_SIG",          "%f", 1, DSKY);
     327  gfits_modify (&header, "DETEFF.MAGREF",     "%f", 1, -5.0);
     328  gfits_modify (&header, "ZPT_OBS",           "%f", 1, 25.0);
     329  gfits_modify (&header, "ZPT_ERR",           "%f", 1, 0.03);
     330  gfits_modify (&header, "ANGLE",             "%f", 1, 0.1);
     331  gfits_modify (&header, "IQ_FW1",            "%f", 1, FX*2.8);
     332  gfits_modify (&header, "IQ_FW2",            "%f", 1, FX*2.8);
     333  gfits_modify (&header, "IQ_M2C",            "%f", 1, FX*2.8);
     334  gfits_modify (&header, "IQ_M2S",            "%f", 1, FX*2.8);
     335  gfits_modify (&header, "IQ_M3",             "%f", 1, FX*2.8);
     336  gfits_modify (&header, "IQ_M4",             "%f", 1, FX*2.8);
     337  gfits_modify (&header, "APMIFIT",           "%f", 1, 0.1);
     338  gfits_modify (&header, "DAPMIFIT",          "%f", 1, 0.03);
     339  gfits_modify (&header, "DETECTOR",          "%s", 1, "CCID58-1-02a2");
     340  gfits_modify (&header, "DETREND.MASK",      "%s", 1, "detref615.XY33.fits");
     341  gfits_modify (&header, "DETREND.DARK",      "%s", 1, "GPC1.DARKTEST.norm.856.0.XY33.fits");
     342  gfits_modify (&header, "DETREND.FLAT",      "%s", 1, "GPC1.FLATTEST.300.XY33.co.fits");
     343  gfits_modify (&header, "DETREND.NOISEMAP",  "%s", 1, "GPC1.noisemap.norm.965.0.XY33.fits");
     344  gfits_modify (&header, "DETREND.NONLIN",    "%s", 1, "linearity_data.XY33.fits");
     345  gfits_modify (&header, "DETREND.VIDEODARK", "%s", 1, "GPC1.VIDEODARK.979.0.XY33.fits");
     346
     347  gfits_modify (&header, "PSFMODEL",          "%s", 1, "PS_MODEL_PS1_V1");
     348  gfits_modify (&header, "AST_CDX",           "%f", 1, 0.05);
     349  gfits_modify (&header, "AST_CDY",           "%f", 1, 0.04);
     350
     351  // gfits_modify (&header, "ZPT_OBS",       "%", 1, );
     352  // gfits_modify (&header, "CERROR",        "%f", 1, );
    303353
    304354  int i;
     
    380430  gfits_fwrite_Theader (fits, ftable.header);
    381431  gfits_fwrite_table   (fits, &ftable);
     432
     433  if (WriteXSRC) WriteXSRCtable (fits, extroot, X, Y, M, Flag, Nstars);
     434  if (WriteXFIT) WriteXFITtable (fits, extroot, X, Y, M, Flag, Nstars);
     435  if (WriteXRAD) WriteXRADtable (fits, extroot, X, Y, M, Flag, Nstars);
     436  if (WriteDETF) WriteDETFtable (fits, extroot, X, Y, M, Flag, Nstars);
     437
    382438  fclose (fits);
    383439
     
    11331189}
    11341190
     1191int WriteXSRCtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     1192
     1193  int i, j;
     1194  Header header;
     1195  FTable ftable;
     1196
     1197  char extdata[80];
     1198  snprintf (extdata, 80, "%s.xsrc", extroot);
     1199
     1200  /* Example Code to create a bintable */
     1201  {
     1202    gfits_create_table_header (&header, "BINTABLE", extdata);
     1203
     1204    gfits_define_bintable_column (&header, "1J", "IPP_IDET"           , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1205    gfits_define_bintable_column (&header, "1E", "X_EXT"              , "no comment", NULL, 1.0, 0.0);
     1206    gfits_define_bintable_column (&header, "1E", "Y_EXT"              , "no comment", NULL, 1.0, 0.0);
     1207    gfits_define_bintable_column (&header, "1E", "X_EXT_SIG"          , "no comment", NULL, 1.0, 0.0);
     1208    gfits_define_bintable_column (&header, "1E", "Y_EXT_SIG"          , "no comment", NULL, 1.0, 0.0);
     1209    gfits_define_bintable_column (&header, "1E", "F25_ARATIO"         , "no comment", NULL, 1.0, 0.0);
     1210    gfits_define_bintable_column (&header, "1E", "F25_THETA"          , "no comment", NULL, 1.0, 0.0);
     1211    gfits_define_bintable_column (&header, "1E", "PETRO_MAG"          , "no comment", NULL, 1.0, 0.0);
     1212    gfits_define_bintable_column (&header, "1E", "PETRO_MAG_ERR"      , "no comment", NULL, 1.0, 0.0);
     1213    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS"       , "no comment", NULL, 1.0, 0.0);
     1214    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_ERR"   , "no comment", NULL, 1.0, 0.0);
     1215    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_50"    , "no comment", NULL, 1.0, 0.0);
     1216    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_50_ERR", "no comment", NULL, 1.0, 0.0);
     1217    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_90"    , "no comment", NULL, 1.0, 0.0);
     1218    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_90_ERR", "no comment", NULL, 1.0, 0.0);
     1219    gfits_define_bintable_column (&header, "1E", "PETRO_FILL"         , "no comment", NULL, 1.0, 0.0);
     1220    gfits_define_bintable_column (&header, "1E", "HALF_LIGHT_RADIUS"  , "no comment", NULL, 1.0, 0.0);
     1221    gfits_define_bintable_column (&header, "1E", "G_RT"               , "no comment", NULL, 1.0, 0.0);
     1222    gfits_define_bintable_column (&header, "1E", "G_RA"               , "no comment", NULL, 1.0, 0.0);
     1223    gfits_define_bintable_column (&header, "1E", "G_S2"               , "no comment", NULL, 1.0, 0.0);
     1224    gfits_define_bintable_column (&header, "1E", "G_A"                , "no comment", NULL, 1.0, 0.0);
     1225    gfits_define_bintable_column (&header, "1E", "G_BUMPY"            , "no comment", NULL, 1.0, 0.0);
     1226    gfits_define_bintable_column (&header, "9E", "PROF_SB"            , "no comment", NULL, 1.0, 0.0);
     1227    gfits_define_bintable_column (&header, "9E", "PROF_FLUX"          , "no comment", NULL, 1.0, 0.0);
     1228    gfits_define_bintable_column (&header, "9E", "PROF_FILL"          , "no comment", NULL, 1.0, 0.0);
     1229
     1230    // generate the output array that carries the data
     1231    gfits_create_table (&header, &ftable);
     1232
     1233    // create intermediate storage arrays
     1234    int    *IPP_IDET            ; ALLOCATE (IPP_IDET            ,  int   , Nstars);
     1235    float  *X_EXT               ; ALLOCATE (X_EXT               ,  float , Nstars);
     1236    float  *Y_EXT               ; ALLOCATE (Y_EXT               ,  float , Nstars);
     1237    float  *X_EXT_SIG           ; ALLOCATE (X_EXT_SIG           ,  float , Nstars);
     1238    float  *Y_EXT_SIG           ; ALLOCATE (Y_EXT_SIG           ,  float , Nstars);
     1239    float  *F25_ARATIO          ; ALLOCATE (F25_ARATIO          ,  float , Nstars);
     1240    float  *F25_THETA           ; ALLOCATE (F25_THETA           ,  float , Nstars);
     1241    float  *PETRO_MAG           ; ALLOCATE (PETRO_MAG           ,  float , Nstars);
     1242    float  *PETRO_MAG_ERR       ; ALLOCATE (PETRO_MAG_ERR       ,  float , Nstars);
     1243    float  *PETRO_RADIUS        ; ALLOCATE (PETRO_RADIUS        ,  float , Nstars);
     1244    float  *PETRO_RADIUS_ERR    ; ALLOCATE (PETRO_RADIUS_ERR    ,  float , Nstars);
     1245    float  *PETRO_RADIUS_50     ; ALLOCATE (PETRO_RADIUS_50     ,  float , Nstars);
     1246    float  *PETRO_RADIUS_50_ERR ; ALLOCATE (PETRO_RADIUS_50_ERR ,  float , Nstars);
     1247    float  *PETRO_RADIUS_90     ; ALLOCATE (PETRO_RADIUS_90     ,  float , Nstars);
     1248    float  *PETRO_RADIUS_90_ERR ; ALLOCATE (PETRO_RADIUS_90_ERR ,  float , Nstars);
     1249    float  *PETRO_FILL          ; ALLOCATE (PETRO_FILL          ,  float , Nstars);
     1250    float  *HALF_LIGHT_RADIUS   ; ALLOCATE (HALF_LIGHT_RADIUS   ,  float , Nstars);
     1251    float  *G_RT                ; ALLOCATE (G_RT                ,  float , Nstars);
     1252    float  *G_RA                ; ALLOCATE (G_RA                ,  float , Nstars);
     1253    float  *G_S2                ; ALLOCATE (G_S2                ,  float , Nstars);
     1254    float  *G_A                 ; ALLOCATE (G_A                 ,  float , Nstars);
     1255    float  *G_BUMPY             ; ALLOCATE (G_BUMPY             ,  float , Nstars);
     1256    float  *PROF_SB             ; ALLOCATE (PROF_SB             ,  float , 9*Nstars);
     1257    float  *PROF_FLUX           ; ALLOCATE (PROF_FLUX           ,  float , 9*Nstars);
     1258    float  *PROF_FILL           ; ALLOCATE (PROF_FILL           ,  float , 9*Nstars);
     1259
     1260    // assign the storage arrays
     1261    for (i = 0; i < Nstars; i++) {
     1262      float flux = pow (10.0, -0.4*M[i]);
     1263      float fSN = 1.0 / sqrt(flux);
     1264
     1265      IPP_IDET            [i] = i;
     1266      X_EXT               [i] = X[i];
     1267      Y_EXT               [i] = Y[i];
     1268      X_EXT_SIG           [i] = FX * fSN;
     1269      Y_EXT_SIG           [i] = FY * fSN;
     1270      F25_ARATIO          [i] = 0.9;
     1271      F25_THETA           [i] = 10.0;
     1272      PETRO_MAG           [i] = M[i];
     1273      PETRO_MAG_ERR       [i] = fSN;
     1274      PETRO_RADIUS        [i] = 8.0;
     1275      PETRO_RADIUS_ERR    [i] = 0.1;
     1276      PETRO_RADIUS_50     [i] = 4.0;
     1277      PETRO_RADIUS_50_ERR [i] = 0.1;
     1278      PETRO_RADIUS_90     [i] = 12.0;
     1279      PETRO_RADIUS_90_ERR [i] = 0.1;
     1280      PETRO_FILL          [i] = 0.95;
     1281      HALF_LIGHT_RADIUS   [i] = 6.0;
     1282      G_RT                [i] = 1.0;
     1283      G_RA                [i] = 1.0;
     1284      G_S2                [i] = 1.0;
     1285      G_A                 [i] = 1.0;
     1286      G_BUMPY             [i] = 1.0;
     1287      for (j = 0; j < 9; j++) {
     1288        PROF_SB             [j + 9*i] = flux / 10.0;
     1289        PROF_FLUX           [j + 9*i] = flux;
     1290        PROF_FILL           [j + 9*i] = 0.9;
     1291      }
     1292    }
     1293
     1294    // set the table data
     1295    gfits_set_bintable_column (&header, &ftable, "IPP_IDET"           , IPP_IDET            , Nstars);
     1296    gfits_set_bintable_column (&header, &ftable, "X_EXT"              , X_EXT               , Nstars);
     1297    gfits_set_bintable_column (&header, &ftable, "Y_EXT"              , Y_EXT               , Nstars);
     1298    gfits_set_bintable_column (&header, &ftable, "X_EXT_SIG"          , X_EXT_SIG           , Nstars);
     1299    gfits_set_bintable_column (&header, &ftable, "Y_EXT_SIG"          , Y_EXT_SIG           , Nstars);
     1300    gfits_set_bintable_column (&header, &ftable, "F25_ARATIO"         , F25_ARATIO          , Nstars);
     1301    gfits_set_bintable_column (&header, &ftable, "F25_THETA"          , F25_THETA           , Nstars);
     1302    gfits_set_bintable_column (&header, &ftable, "PETRO_MAG"          , PETRO_MAG           , Nstars);
     1303    gfits_set_bintable_column (&header, &ftable, "PETRO_MAG_ERR"      , PETRO_MAG_ERR       , Nstars);
     1304    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS"       , PETRO_RADIUS        , Nstars);
     1305    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_ERR"   , PETRO_RADIUS_ERR    , Nstars);
     1306    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_50"    , PETRO_RADIUS_50     , Nstars);
     1307    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_50_ERR", PETRO_RADIUS_50_ERR , Nstars);
     1308    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_90"    , PETRO_RADIUS_90     , Nstars);
     1309    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_90_ERR", PETRO_RADIUS_90_ERR , Nstars);
     1310    gfits_set_bintable_column (&header, &ftable, "PETRO_FILL"         , PETRO_FILL          , Nstars);
     1311    gfits_set_bintable_column (&header, &ftable, "HALF_LIGHT_RADIUS"  , HALF_LIGHT_RADIUS   , Nstars);
     1312    gfits_set_bintable_column (&header, &ftable, "G_RT"               , G_RT                , Nstars);
     1313    gfits_set_bintable_column (&header, &ftable, "G_RA"               , G_RA                , Nstars);
     1314    gfits_set_bintable_column (&header, &ftable, "G_S2"               , G_S2                , Nstars);
     1315    gfits_set_bintable_column (&header, &ftable, "G_A"                , G_A                 , Nstars);
     1316    gfits_set_bintable_column (&header, &ftable, "G_BUMPY"            , G_BUMPY             , Nstars);
     1317    gfits_set_bintable_column (&header, &ftable, "PROF_SB"            , PROF_SB             , Nstars);
     1318    gfits_set_bintable_column (&header, &ftable, "PROF_FLUX"          , PROF_FLUX           , Nstars);
     1319    gfits_set_bintable_column (&header, &ftable, "PROF_FILL"          , PROF_FILL           , Nstars);
     1320  }
     1321
     1322  gfits_fwrite_Theader (fits, &header);
     1323  gfits_fwrite_table  (fits, &ftable);
     1324  gfits_free_header (&header);
     1325  gfits_free_table (&ftable);
     1326
     1327  return TRUE;
     1328}
     1329
     1330int WriteXFITtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     1331
     1332  int i;
     1333  Header header;
     1334  FTable ftable;
     1335
     1336  char extdata[80];
     1337  snprintf (extdata, 80, "%s.xfit", extroot);
     1338
     1339  /* Example Code to create a bintable */
     1340  {
     1341    gfits_create_table_header (&header, "BINTABLE", extdata);
     1342
     1343    // define the table layout
     1344    gfits_define_bintable_column (&header, "J",   "IPP_IDET"         , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1345    gfits_define_bintable_column (&header, "E",   "X_EXT"            , "no comment", NULL, 1.0, 0.0);
     1346    gfits_define_bintable_column (&header, "E",   "Y_EXT"            , "no comment", NULL, 1.0, 0.0);
     1347    gfits_define_bintable_column (&header, "E",   "X_EXT_SIG"        , "no comment", NULL, 1.0, 0.0);
     1348    gfits_define_bintable_column (&header, "E",   "Y_EXT_SIG"        , "no comment", NULL, 1.0, 0.0);
     1349    gfits_define_bintable_column (&header, "E",   "SKY_EXT"          , "no comment", NULL, 1.0, 0.0);
     1350    gfits_define_bintable_column (&header, "E",   "RA_EXT"           , "no comment", NULL, 1.0, 0.0);
     1351    gfits_define_bintable_column (&header, "E",   "DEC_EXT"          , "no comment", NULL, 1.0, 0.0);
     1352    gfits_define_bintable_column (&header, "E",   "EXT_INST_MAG"     , "no comment", NULL, 1.0, 0.0);
     1353    gfits_define_bintable_column (&header, "E",   "EXT_INST_MAG_SIG" , "no comment", NULL, 1.0, 0.0);
     1354    gfits_define_bintable_column (&header, "E",   "EXT_CHISQ"        , "no comment", NULL, 1.0, 0.0);
     1355    gfits_define_bintable_column (&header, "J",   "EXT_NDOF"         , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1356    gfits_define_bintable_column (&header, "J",   "EXT_MODEL_TYPE"   , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1357    gfits_define_bintable_column (&header, "I",   "EXT_FLAGS"        , "no comment", NULL, 1.0, FT_BZERO_INT16); // unsigned
     1358    gfits_define_bintable_column (&header, "E",   "PSF_INST_MAG"     , "no comment", NULL, 1.0, 0.0);
     1359    gfits_define_bintable_column (&header, "E",   "AP_MAG"           , "no comment", NULL, 1.0, 0.0);
     1360    gfits_define_bintable_column (&header, "E",   "KRON_MAG"         , "no comment", NULL, 1.0, 0.0);
     1361    gfits_define_bintable_column (&header, "J",   "NPARAMS"          , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1362    gfits_define_bintable_column (&header, "15A", "MODEL_TYPE"       , "no comment", NULL, 1.0, 0.0);
     1363    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MAJ"    , "no comment", NULL, 1.0, 0.0);
     1364    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MIN"    , "no comment", NULL, 1.0, 0.0);
     1365    gfits_define_bintable_column (&header, "E",   "EXT_THETA"        , "no comment", NULL, 1.0, 0.0);
     1366    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MAJ_ERR", "no comment", NULL, 1.0, 0.0);
     1367    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MIN_ERR", "no comment", NULL, 1.0, 0.0);
     1368    gfits_define_bintable_column (&header, "E",   "EXT_THETA_ERR"    , "no comment", NULL, 1.0, 0.0);
     1369    gfits_define_bintable_column (&header, "E",   "EXT_PAR_07"       , "no comment", NULL, 1.0, 0.0);
     1370
     1371    // generate the output array that carries the data
     1372    gfits_create_table (&header, &ftable);
     1373
     1374    // create intermediate storage arrays
     1375    int    *IPP_IDET           ; ALLOCATE (IPP_IDET         ,  int   , Nstars);
     1376    float  *X_EXT              ; ALLOCATE (X_EXT            ,  float , Nstars);
     1377    float  *Y_EXT              ; ALLOCATE (Y_EXT            ,  float , Nstars);
     1378    float  *X_EXT_SIG          ; ALLOCATE (X_EXT_SIG        ,  float , Nstars);
     1379    float  *Y_EXT_SIG          ; ALLOCATE (Y_EXT_SIG        ,  float , Nstars);
     1380    float  *SKY_EXT            ; ALLOCATE (SKY_EXT          ,  float , Nstars);
     1381    float  *RA_EXT             ; ALLOCATE (RA_EXT           ,  float , Nstars);
     1382    float  *DEC_EXT            ; ALLOCATE (DEC_EXT          ,  float , Nstars);
     1383    float  *EXT_INST_MAG       ; ALLOCATE (EXT_INST_MAG     ,  float , Nstars);
     1384    float  *EXT_INST_MAG_SIG   ; ALLOCATE (EXT_INST_MAG_SIG ,  float , Nstars);
     1385    float  *EXT_CHISQ          ; ALLOCATE (EXT_CHISQ        ,  float , Nstars);
     1386    int    *EXT_NDOF           ; ALLOCATE (EXT_NDOF         ,  int   , Nstars);
     1387    int    *EXT_MODEL_TYPE     ; ALLOCATE (EXT_MODEL_TYPE   ,  int   , Nstars);
     1388    short  *EXT_FLAGS          ; ALLOCATE (EXT_FLAGS        ,  short , Nstars);
     1389    float  *PSF_INST_MAG       ; ALLOCATE (PSF_INST_MAG     ,  float , Nstars);
     1390    float  *AP_MAG             ; ALLOCATE (AP_MAG           ,  float , Nstars);
     1391    float  *KRON_MAG           ; ALLOCATE (KRON_MAG         ,  float , Nstars);
     1392    int    *NPARAMS            ; ALLOCATE (NPARAMS          ,  int   , Nstars);
     1393    char   *MODEL_TYPE         ; ALLOCATE (MODEL_TYPE       ,  char  , Nstars*15);
     1394    float  *EXT_WIDTH_MAJ      ; ALLOCATE (EXT_WIDTH_MAJ    ,  float , Nstars);
     1395    float  *EXT_WIDTH_MIN      ; ALLOCATE (EXT_WIDTH_MIN    ,  float , Nstars);
     1396    float  *EXT_THETA          ; ALLOCATE (EXT_THETA        ,  float , Nstars);
     1397    float  *EXT_WIDTH_MAJ_ERR  ; ALLOCATE (EXT_WIDTH_MAJ_ERR,  float , Nstars);
     1398    float  *EXT_WIDTH_MIN_ERR  ; ALLOCATE (EXT_WIDTH_MIN_ERR,  float , Nstars);
     1399    float  *EXT_THETA_ERR      ; ALLOCATE (EXT_THETA_ERR    ,  float , Nstars);
     1400    float  *EXT_PAR_07         ; ALLOCATE (EXT_PAR_07       ,  float , Nstars);
     1401
     1402    // assign the storage arrays
     1403    for (i = 0; i < Nstars; i++) {
     1404      float flux = pow (10.0, -0.4*M[i]);
     1405      float fSN = 1.0 / sqrt(flux);
     1406
     1407      IPP_IDET         [i] = i;
     1408      X_EXT            [i] = X[i];
     1409      Y_EXT            [i] = Y[i];
     1410      X_EXT_SIG        [i] = FX * fSN;
     1411      Y_EXT_SIG        [i] = FY * fSN;
     1412      SKY_EXT          [i] = 0.1;
     1413      RA_EXT           [i] = NAN;
     1414      DEC_EXT          [i] = NAN;
     1415      EXT_INST_MAG     [i] = M[i];
     1416      EXT_INST_MAG_SIG [i] = fSN;
     1417      EXT_CHISQ        [i] = 1.0;
     1418      EXT_NDOF         [i] = 10;
     1419      EXT_MODEL_TYPE   [i] = -1;
     1420      EXT_FLAGS        [i] = 0x0010;
     1421      PSF_INST_MAG     [i] = M[i];
     1422      AP_MAG           [i] = M[i];
     1423      KRON_MAG         [i] = M[i];
     1424      NPARAMS          [i] = 7;
     1425      EXT_WIDTH_MAJ    [i] = FX*2.8;
     1426      EXT_WIDTH_MIN    [i] = FY*2.8;
     1427      EXT_THETA        [i] = 10.0;
     1428      EXT_WIDTH_MAJ_ERR[i] = FX*3.0;
     1429      EXT_WIDTH_MIN_ERR[i] = FY*3.0;
     1430      EXT_THETA_ERR    [i] = 0.5;
     1431      EXT_PAR_07       [i] = NAN;
     1432
     1433      strcpy (&MODEL_TYPE[15*i], "PS_MODEL_DEV");
     1434    }
     1435
     1436    // set the table data
     1437    gfits_set_bintable_column (&header, &ftable, "IPP_IDET"         , IPP_IDET         , Nstars);
     1438    gfits_set_bintable_column (&header, &ftable, "X_EXT"            , X_EXT            , Nstars);
     1439    gfits_set_bintable_column (&header, &ftable, "Y_EXT"            , Y_EXT            , Nstars);
     1440    gfits_set_bintable_column (&header, &ftable, "X_EXT_SIG"        , X_EXT_SIG        , Nstars);
     1441    gfits_set_bintable_column (&header, &ftable, "Y_EXT_SIG"        , Y_EXT_SIG        , Nstars);
     1442    gfits_set_bintable_column (&header, &ftable, "SKY_EXT"          , SKY_EXT          , Nstars);
     1443    gfits_set_bintable_column (&header, &ftable, "RA_EXT"           , RA_EXT           , Nstars);
     1444    gfits_set_bintable_column (&header, &ftable, "DEC_EXT"          , DEC_EXT          , Nstars);
     1445    gfits_set_bintable_column (&header, &ftable, "EXT_INST_MAG"     , EXT_INST_MAG     , Nstars);
     1446    gfits_set_bintable_column (&header, &ftable, "EXT_INST_MAG_SIG" , EXT_INST_MAG_SIG , Nstars);
     1447    gfits_set_bintable_column (&header, &ftable, "EXT_CHISQ"        , EXT_CHISQ        , Nstars);
     1448    gfits_set_bintable_column (&header, &ftable, "EXT_NDOF"         , EXT_NDOF         , Nstars);
     1449    gfits_set_bintable_column (&header, &ftable, "EXT_MODEL_TYPE"   , EXT_MODEL_TYPE   , Nstars);
     1450    gfits_set_bintable_column (&header, &ftable, "EXT_FLAGS"        , EXT_FLAGS        , Nstars);
     1451    gfits_set_bintable_column (&header, &ftable, "PSF_INST_MAG"     , PSF_INST_MAG     , Nstars);
     1452    gfits_set_bintable_column (&header, &ftable, "AP_MAG"           , AP_MAG           , Nstars);
     1453    gfits_set_bintable_column (&header, &ftable, "KRON_MAG"         , KRON_MAG         , Nstars);
     1454    gfits_set_bintable_column (&header, &ftable, "NPARAMS"          , NPARAMS          , Nstars);
     1455    gfits_set_bintable_column (&header, &ftable, "MODEL_TYPE"       , MODEL_TYPE       , Nstars);
     1456    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MAJ"    , EXT_WIDTH_MAJ    , Nstars);
     1457    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MIN"    , EXT_WIDTH_MIN    , Nstars);
     1458    gfits_set_bintable_column (&header, &ftable, "EXT_THETA"        , EXT_THETA        , Nstars);
     1459    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MAJ_ERR", EXT_WIDTH_MAJ_ERR, Nstars);
     1460    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MIN_ERR", EXT_WIDTH_MIN_ERR, Nstars);
     1461    gfits_set_bintable_column (&header, &ftable, "EXT_THETA_ERR"    , EXT_THETA_ERR    , Nstars);
     1462    gfits_set_bintable_column (&header, &ftable, "EXT_PAR_07"       , EXT_PAR_07       , Nstars);
     1463  }
     1464  /**/
     1465
     1466  gfits_fwrite_Theader (fits, &header);
     1467  gfits_fwrite_table  (fits, &ftable);
     1468  gfits_free_header (&header);
     1469  gfits_free_table (&ftable);
     1470
     1471  return TRUE;
     1472}
     1473
     1474int WriteXRADtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     1475
     1476  int i, j;
     1477  Header header;
     1478  FTable ftable;
     1479
     1480  char extdata[80];
     1481  snprintf (extdata, 80, "%s.xrad", extroot);
     1482
     1483  /* Example Code to create a bintable */
     1484  {
     1485    gfits_create_table_header (&header, "BINTABLE", extdata);
     1486
     1487    // define the table layout
     1488    gfits_define_bintable_column (&header, "J",   "IPP_IDET"         , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1489    gfits_define_bintable_column (&header, "E",   "X_APER"           , "no comment", NULL, 1.0, 0.0);
     1490    gfits_define_bintable_column (&header, "E",   "Y_APER"           , "no comment", NULL, 1.0, 0.0);
     1491    gfits_define_bintable_column (&header, "E",   "PSF_FWHM"         , "no comment", NULL, 1.0, 0.0);
     1492    gfits_define_bintable_column (&header, "9E",  "APER_FLUX"        , "no comment", NULL, 1.0, 0.0);
     1493    gfits_define_bintable_column (&header, "9E",  "APER_FLUX_ERR"    , "no comment", NULL, 1.0, 0.0);
     1494    gfits_define_bintable_column (&header, "9E",  "APER_FLUX_STDEV"  , "no comment", NULL, 1.0, 0.0);
     1495    gfits_define_bintable_column (&header, "9E",  "APER_FILL"        , "no comment", NULL, 1.0, 0.0);
     1496
     1497    // generate the output array that carries the data
     1498    gfits_create_table (&header, &ftable);
     1499
     1500    // create intermediate storage arrays
     1501    int    *IPP_IDET           ; ALLOCATE (IPP_IDET         ,  int   , Nstars);
     1502    float  *X_APER             ; ALLOCATE (X_APER           ,  float , Nstars);
     1503    float  *Y_APER             ; ALLOCATE (Y_APER           ,  float , Nstars);
     1504    float  *PSF_FWHM           ; ALLOCATE (PSF_FWHM         ,  float , Nstars);
     1505    float  *APER_FLUX          ; ALLOCATE (APER_FLUX        ,  float , Nstars*9);
     1506    float  *APER_FLUX_ERR      ; ALLOCATE (APER_FLUX_ERR    ,  float , Nstars*9);
     1507    float  *APER_FLUX_STDEV    ; ALLOCATE (APER_FLUX_STDEV  ,  float , Nstars*9);
     1508    float  *APER_FILL          ; ALLOCATE (APER_FILL        ,  float , Nstars*9);
     1509
     1510    // assign the storage arrays
     1511    for (i = 0; i < Nstars; i++) {
     1512      float flux = pow (10.0, -0.4*M[i]);
     1513      // float fSN = 1.0 / sqrt(flux);
     1514
     1515      IPP_IDET         [i] = i;
     1516      X_APER           [i] = X[i];
     1517      Y_APER           [i] = Y[i];
     1518      PSF_FWHM         [i] = FX*2.8;
     1519      for (j = 0; j < 9; j ++) {
     1520        APER_FLUX      [j + 9*i] = flux;
     1521        APER_FLUX_ERR  [j + 9*i] = sqrt(flux);
     1522        APER_FLUX_STDEV[j + 9*i] = sqrt(flux);
     1523        APER_FILL      [j + 9*i] = 0.9;
     1524      }
     1525    }
     1526
     1527    // set the table data
     1528    gfits_set_bintable_column (&header, &ftable, "IPP_IDET"         , IPP_IDET         , Nstars);
     1529    gfits_set_bintable_column (&header, &ftable, "X_APER"           , X_APER           , Nstars);
     1530    gfits_set_bintable_column (&header, &ftable, "Y_APER"           , Y_APER           , Nstars);
     1531    gfits_set_bintable_column (&header, &ftable, "PSF_FWHM"         , PSF_FWHM         , Nstars);
     1532    gfits_set_bintable_column (&header, &ftable, "APER_FLUX"        , APER_FLUX        , Nstars);
     1533    gfits_set_bintable_column (&header, &ftable, "APER_FLUX_ERR"    , APER_FLUX_ERR    , Nstars);
     1534    gfits_set_bintable_column (&header, &ftable, "APER_FLUX_STDEV"  , APER_FLUX_STDEV  , Nstars);
     1535    gfits_set_bintable_column (&header, &ftable, "APER_FILL"        , APER_FILL        , Nstars);
     1536  }
     1537  /**/
     1538
     1539  gfits_fwrite_Theader (fits, &header);
     1540  gfits_fwrite_table  (fits, &ftable);
     1541  gfits_free_header (&header);
     1542  gfits_free_table (&ftable);
     1543
     1544  return TRUE;
     1545}
     1546
     1547int WriteDETFtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     1548  return TRUE;
     1549}
     1550
     1551int WriteDummyTable (FILE *fits) {
     1552
     1553  Header header;
     1554  FTable ftable;
     1555
     1556  /* Example Code to create a bintable
     1557  {
     1558    gfits_create_table_header (&header, "BINTABLE", extroot);
     1559
     1560    // define the table layout
     1561    gfits_define_bintable_column (&header, "D", "NAME", "comment", NULL, 1.0, 0.0);
     1562    gfits_define_bintable_column (&header, "E", "NAME", "comment", NULL, 1.0, 0.0);
     1563    gfits_define_bintable_column (&header, "J", "NAME", "comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1564    gfits_define_bintable_column (&header, "I", "NAME", "comment", NULL, 1.0, FT_BZERO_INT16); // unsigned
     1565
     1566    // generate the output array that carries the data
     1567    gfits_create_table (&header, &ftable);
     1568
     1569    // create intermediate storage arrays
     1570    double *R; ALLOCATE (R,  double, Nvalue);
     1571    float  *M; ALLOCATE (M,  float , Nvalue);
     1572    int    *I; ALLOCATE (I,  int   , Nvalue);
     1573    short  *P; ALLOCATE (P,  short , Nvalue);
     1574
     1575    // assign the storage arrays
     1576    for (i = 0; Nvalue; i++) {
     1577      R[i] = value;
     1578      M[i] = value;
     1579      I[i] = value;
     1580      P[i] = value;
     1581    }
     1582
     1583    // set the table data
     1584    gfits_set_bintable_column (&header, &ftable, "NAME", R, catalog->Nmeasure);
     1585    gfits_set_bintable_column (&header, &ftable, "NAME", M, catalog->Nmeasure);
     1586    gfits_set_bintable_column (&header, &ftable, "NAME", I, catalog->Nmeasure);
     1587    gfits_set_bintable_column (&header, &ftable, "NAME", P, catalog->Nmeasure);
     1588  }
     1589  */
     1590
     1591  gfits_fwrite_Theader (fits, &header);
     1592  gfits_fwrite_table  (fits, &ftable);
     1593  gfits_free_header (&header);
     1594  gfits_free_table (&ftable);
     1595 
     1596  return TRUE;
     1597}
     1598
  • trunk/Ohana/src/addstar/test

Note: See TracChangeset for help on using the changeset viewer.