IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 16494


Ignore:
Timestamp:
Feb 15, 2008, 9:30:36 AM (18 years ago)
Author:
eugene
Message:

removing scale and zp as required arguments; allow overrides; adding zero points to ppSim recipe, per filter, adding -skymags as option

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppSim/src/ppSimArguments.c

    r14797 r16494  
    5757    psMetadataAddF32(arguments, PS_LIST_TAIL, "-shuttertime", 0, "Shutter time (s)", NAN);
    5858    psMetadataAddF32(arguments, PS_LIST_TAIL, "-skyrate", 0, "Sky rate (e/s)", NAN);
     59    psMetadataAddF32(arguments, PS_LIST_TAIL, "-skymags", 0, "Sky brightness in mags / square arcsec", NAN);
    5960    psMetadataAddF32(arguments, PS_LIST_TAIL, "-ra", 0, "RA (degrees)", NAN);
    6061    psMetadataAddF32(arguments, PS_LIST_TAIL, "-dec", 0, "Dec (degrees)", NAN);
     
    6970    psMetadataAddS32(arguments, PS_LIST_TAIL, "-bin", 0, "Binning in x and y", 1);
    7071
     72    if (psArgumentGet (argc, argv, "-h")) { usage(argv[0], arguments, config); }
     73    if (psArgumentGet (argc, argv, "--h")) { usage(argv[0], arguments, config); }
     74    if (psArgumentGet (argc, argv, "--help")) { usage(argv[0], arguments, config); }
     75
    7176    pmConfigFileSetsMD (config->arguments, &argc, argv, "PSPHOT.PSF", "-psf", "-psflist");
    7277
     
    7580    if (!config->camera && !status) {
    7681        psErrorStackPrint(stderr, "A camera name (-camera NAME) or an image (-file NAME) must be specified");
    77         usage(argv[0], arguments, config);
    78     }
    79 
    80     if (!psArgumentParse(arguments, &argc, argv)) { usage (argv[0], arguments, config); }
    81 
    82     if (argc != 2) { usage(argv[0], arguments, config); }
     82        exit(PS_EXIT_CONFIG_ERROR);
     83    }
     84
     85    if (!psArgumentParse(arguments, &argc, argv)) {
     86        exit(PS_EXIT_CONFIG_ERROR);
     87    }
     88
     89    if (argc != 2) {
     90        psErrorStackPrint(stderr, "Missing output filename");
     91        exit(PS_EXIT_CONFIG_ERROR);
     92    }
    8393
    8494    psString formatName = psMetadataLookupStr(NULL, arguments, "-format"); // Name of format
     
    107117    if (!typeStr) {
    108118        psErrorStackPrint(stderr, "An exposure type must be specified using -type");
    109         usage(argv[0], arguments, config);
     119        exit(PS_EXIT_CONFIG_ERROR);
    110120    }
    111121    ppSimType type = PPSIM_TYPE_NONE;   // Type to simulate
     
    120130    } else {
    121131        psErrorStackPrint(stderr, "Unrecognised exposure type: %s", typeStr);
    122         usage(argv[0], arguments, config);
     132        exit(PS_EXIT_CONFIG_ERROR);
    123133    }
    124134    assert(type != PPSIM_TYPE_NONE);
     
    135145        if (isnan(expTime)) {
    136146            psErrorStackPrint(stderr, "The exposure time must be specified using -exptime");
    137             usage(argv[0], arguments, config);
     147            exit(PS_EXIT_CONFIG_ERROR);
    138148        }
    139149    }
     
    170180    if (binning <= 0) {
    171181        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Binning (%d) is non-positive.", binning);
    172         usage(argv[0], arguments, config);
     182        exit(PS_EXIT_CONFIG_ERROR);
    173183    }
    174184    psMetadataAddS32(config->arguments, PS_LIST_TAIL, "BINNING", 0, "Binning in x and y", binning);
     
    178188    if (type == PPSIM_TYPE_OBJECT) {
    179189        // Load values required for adding stars
    180         float scale = psMetadataLookupF32(NULL, arguments, "-scale"); // Plate scale
    181         float zp = psMetadataLookupF32(NULL, arguments, "-zp"); // Zero point
    182         float seeing = psMetadataLookupF32(NULL, arguments, "-seeing"); // Zero point
    183         float ra0 = psMetadataLookupF32(NULL, arguments, "-ra"); // Right Ascension of boresight
    184         float dec0 = psMetadataLookupF32(NULL, arguments, "-dec"); // Declination of boresight
    185         float pa = psMetadataLookupF32(NULL, arguments, "-pa"); // Position angle
    186 
    187         if (isnan(ra0) || isnan(dec0) || isnan(pa) || isnan(scale) || isnan(zp) || isnan(seeing)) {
     190        float ra0     = psMetadataLookupF32(NULL, arguments, "-ra"); // Right Ascension of boresight
     191        float dec0    = psMetadataLookupF32(NULL, arguments, "-dec"); // Declination of boresight
     192        float pa      = psMetadataLookupF32(NULL, arguments, "-pa"); // Position angle
     193        float seeing  = psMetadataLookupF32(NULL, arguments, "-seeing"); // Zero point
     194
     195        // XXX scale and zp should be supplied by the config file (allow override, but this is camera-dependent)
     196        if (isnan(ra0) || isnan(dec0) || isnan(pa) || isnan(seeing)) {
    188197            psErrorStackPrint(stderr, "-ra, -dec, -pa, -scale, -zp, -seeing must be specified for OBJECT type");
    189             usage(argv[0], arguments, config);
    190         }
     198            exit(PS_EXIT_CONFIG_ERROR);
     199        }
     200
     201        float zp      = psMetadataLookupF32(NULL, arguments, "-zp"); // Zero point
     202        if (isnan(zp)) {
     203            // use the filter to get the zeropoint from the recipe
     204            psMetadataItem *zpItem = psMetadataLookup (recipe, "ZEROPTS");
     205            // check that item is multi...
     206           
     207            psArray *entries = psListToArray (zpItem->data.list);
     208         
     209            // search for matching filter
     210            for (int i = 0; i < entries->n; i++) {
     211                psMetadataItem *item = entries->data[i];
     212                psMetadata *entry = item->data.V;
     213
     214                char *filterName = psMetadataLookupStr (&status, entry, "FILTER");
     215                assert (filterName);
     216
     217                if (strcmp(filterName, filter)) continue;
     218
     219                zp = psMetadataLookupF32 (&status, entry, "ZERO_PT");
     220                assert (status);
     221                break;
     222            }
     223            psFree (entries);
     224        }
     225
     226        float scale   = psMetadataLookupF32(NULL, arguments, "-scale"); // Plate scale
     227        if (isnan(scale)) {
     228            scale = psMetadataLookupF32 (&status, recipe, "PIXEL.SCALE");
     229        }
     230
     231        float skymags = psMetadataLookupF32(NULL, arguments, "-skymags"); // Position angle
     232        if (isnan(skymags)) {
     233            skymags = psMetadataLookupF32 (&status, recipe, "SKY.MAGS");
     234        }
     235
     236        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "RA", 0, "Boresight RA (radians)", ra0 * M_PI / 180.0);
     237        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "DEC", 0, "Boresight Declination (radians)", dec0 * M_PI / 180.0);
     238        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "PA", 0, "Boresight position angle (radians)",pa * M_PI / 180.0);
     239        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "SEEING", 0, "Seeing sigma (pix)", seeing / 2.0 / sqrt(2.0 * log(2.0)) / scale);
     240
    191241        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "SCALE", 0, "Plate scale (arcsec/pix)", scale);
    192242        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "ZEROPOINT", 0, "Photometric zeropoint", zp);
    193         psMetadataAddF32(config->arguments, PS_LIST_TAIL, "SEEING", 0, "Seeing simga (pix)",
    194                          seeing / 2.0 / sqrt(2.0 * log(2.0)) / scale);
    195         psMetadataAddF32(config->arguments, PS_LIST_TAIL, "RA", 0, "Boresight RA (radians)",
    196                          ra0 * M_PI / 180.0);
    197         psMetadataAddF32(config->arguments, PS_LIST_TAIL, "DEC", 0, "Boresight Declination (radians)",
    198                          dec0 * M_PI / 180.0);
    199         psMetadataAddF32(config->arguments, PS_LIST_TAIL, "PA", 0, "Boresight position angle (radians)",
    200                          pa * M_PI / 180.0);
    201 
     243        psMetadataAddF32(config->arguments, PS_LIST_TAIL, "SKY.MAGS", 0, "sky surface brightness", skymags);
    202244
    203245        const char *psfClass = psMetadataLookupStr(NULL, arguments, "-psfclass"); // Filter name
Note: See TracChangeset for help on using the changeset viewer.