Changeset 12873 for trunk/ppSim/src/ppSimArguments.c
- Timestamp:
- Apr 17, 2007, 6:29:18 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ppSim/src/ppSimArguments.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppSim/src/ppSimArguments.c
r12834 r12873 16 16 { 17 17 fprintf(stderr, "\nPan-STARRS data simulator\n\n"); 18 fprintf(stderr, "Usage: %s -camera CAMERA_NAME -format FORMAT_NAME\n", config->argv[0]);18 fprintf(stderr, "Usage: %s -camera CAMERA_NAME\n", config->argv[0]); 19 19 fprintf(stderr, "\n"); 20 20 psArgumentHelp(arguments); … … 35 35 float value = psMetadataLookupF32(NULL, arguments, argName); // Bias level 36 36 if (isnan(value)) { 37 value = psMetadataLookupF32(NULL, recipe, recipeName); 38 if (isnan(value)) { 37 bool mdok; // Status of MD lookup 38 value = psMetadataLookupF32(&mdok, recipe, recipeName); 39 if (!mdok) { 39 40 psErrorStackPrint(stderr, "Unable to find %s in recipe %s", recipeName, PPSIM_RECIPE); 40 41 psFree((psPtr)arguments); … … 43 44 } 44 45 } 45 46 46 return psMetadataAddF32(target, PS_LIST_TAIL, recipeName, 0, NULL, value); 47 47 } 48 49 48 50 49 void ppSimArguments(pmConfig *config) … … 64 63 psMetadataAddF32(arguments, PS_LIST_TAIL, "-shuttertime", 0, "Shutter time (s)", NAN); 65 64 psMetadataAddF32(arguments, PS_LIST_TAIL, "-skyrate", 0, "Sky rate (e/s)", NAN); 65 psMetadataAddStr(arguments, PS_LIST_TAIL, "-stars", 0, "File with star RA, Dec, Mag", NULL); 66 psMetadataAddF32(arguments, PS_LIST_TAIL, "-ra", 0, "RA (degrees)", NAN); 67 psMetadataAddF32(arguments, PS_LIST_TAIL, "-dec", 0, "Dec (degrees)", NAN); 68 psMetadataAddF32(arguments, PS_LIST_TAIL, "-pa", 0, "Position angle (degrees)", NAN); 69 psMetadataAddF32(arguments, PS_LIST_TAIL, "-scale", 0, "Plate scale (arcsec/pixel)", NAN); 70 psMetadataAddF32(arguments, PS_LIST_TAIL, "-zp", 0, "Photometric zero point", NAN); 71 psMetadataAddF32(arguments, PS_LIST_TAIL, "-seeing", 0, "Seeing FWHM (arcsec)", NAN); 72 psMetadataAddF32(arguments, PS_LIST_TAIL, "-starslum", 0, "Fake star luminosity function slope", NAN); 73 psMetadataAddF32(arguments, PS_LIST_TAIL, "-starsmag", 0, "Brightest magnitude for fake stars", NAN); 74 psMetadataAddF32(arguments, PS_LIST_TAIL, "-starsdensity", 0, "Density of fake stars at magnitude", NAN); 66 75 67 76 if (!config->camera) { … … 74 83 } 75 84 76 const char *formatName = psMetadataLookupStr(NULL, arguments, "-format"); // Name of format 77 if (!formatName) { 78 psErrorStackPrint(stderr, "A camera format must be specified using -format"); 79 usage(arguments, config); 80 } 81 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "FORMAT", 0, "Camera format name", formatName); 85 psString formatName = psMetadataLookupStr(NULL, arguments, "-format"); // Name of format 86 if (formatName) { 87 config->formatName = psMemIncrRefCounter(formatName); 88 89 psMetadata *formats = psMetadataLookupMetadata(NULL, config->camera, "FORMATS"); // The camera formats 90 if (!formats) { 91 psErrorStackPrint(stderr, "Unable to find FORMATS in camera configuration."); 92 psFree(arguments); 93 psFree(config); 94 exit(PS_EXIT_CONFIG_ERROR); 95 } 96 psMetadata *format = psMetadataLookupMetadata(NULL, formats, formatName); // Format of interest 97 if (!format) { 98 psErrorStackPrint(stderr, "Unable to find format %s in camera FORMATS.", formatName); 99 psFree(arguments); 100 psFree(config); 101 exit(PS_EXIT_CONFIG_ERROR); 102 } 103 config->format = psMemIncrRefCounter(format); 104 } 82 105 83 106 const char *typeStr = psMetadataLookupStr(NULL, arguments, "-type"); // Exposure type … … 124 147 } 125 148 126 valueArgRecipe(config, arguments, "-biaslevel", recipe, "BIAS.LEVEL", config->arguments); 127 valueArgRecipe(config, arguments, "-biasrange", recipe, "BIAS.RANGE", config->arguments); 128 valueArgRecipe(config, arguments, "-darkrate", recipe, "DARK.RATE", config->arguments); 129 valueArgRecipe(config, arguments, "-flatsigma", recipe, "FLAT.SIGMA", config->arguments); 130 valueArgRecipe(config, arguments, "-flatrate", recipe, "FLAT.RATE", config->arguments); 131 valueArgRecipe(config, arguments, "-shuttertime", recipe, "SHUTTER.TIME", config->arguments); 132 valueArgRecipe(config, arguments, "-skyrate", recipe, "SKY.RATE", config->arguments); 149 valueArgRecipe(config, arguments, "-biaslevel", recipe, "BIAS.LEVEL", config->arguments); 150 valueArgRecipe(config, arguments, "-biasrange", recipe, "BIAS.RANGE", config->arguments); 151 valueArgRecipe(config, arguments, "-darkrate", recipe, "DARK.RATE", config->arguments); 152 valueArgRecipe(config, arguments, "-flatsigma", recipe, "FLAT.SIGMA", config->arguments); 153 valueArgRecipe(config, arguments, "-flatrate", recipe, "FLAT.RATE", config->arguments); 154 valueArgRecipe(config, arguments, "-shuttertime", recipe, "SHUTTER.TIME", config->arguments); 155 valueArgRecipe(config, arguments, "-skyrate", recipe, "SKY.RATE", config->arguments); 156 valueArgRecipe(config, arguments, "-starslum", recipe, "STARS.LUM", config->arguments); 157 valueArgRecipe(config, arguments, "-starsmag", recipe, "STARS.MAG", config->arguments); 158 valueArgRecipe(config, arguments, "-starsdensity", recipe, "STARS.DENSITY", config->arguments); 159 160 bool mdok; // Status of MD lookup 161 int biasOrder = psMetadataLookupS32(&mdok, recipe, "BIAS.ORDER"); // Overscan polynomial order 162 if (!mdok) { 163 psWarning("BIAS.ORDER(S32) is not set in the recipe %s --- assuming %d", PPSIM_RECIPE, biasOrder); 164 } 165 psMetadataAddS32(config->arguments, PS_LIST_TAIL, "BIAS.ORDER", 0, 166 "Overscan polynomial order", biasOrder); 167 133 168 134 169 psMetadataAddStr(config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Name of the output image", 135 170 config->argv[1]); 136 171 172 173 // Values common for stars 174 float scale = psMetadataLookupF32(NULL, arguments, "-scale"); // Plate scale 175 float zp = psMetadataLookupF32(NULL, arguments, "-zp"); // Zero point 176 float seeing = psMetadataLookupF32(NULL, arguments, "-seeing"); // Zero point 177 psMetadataAddF32(config->arguments, PS_LIST_TAIL, "SCALE", 0, "Plate scale (arcsec/pix)", scale); 178 psMetadataAddF32(config->arguments, PS_LIST_TAIL, "ZEROPOINT", 0, "Photometric zeropoint", zp); 179 psMetadataAddF32(config->arguments, PS_LIST_TAIL, "SEEING", 0, "Seeing simga (pix)", 180 seeing / 2.0 / sqrt(2.0 * log(2.0)) / scale); 181 182 const char *starName = psMetadataLookupStr(NULL, arguments, "-stars"); // Name of file with stars 183 if (starName) { 184 float ra0 = psMetadataLookupF32(NULL, arguments, "-ra"); // Right Ascension of boresight 185 float dec0 = psMetadataLookupF32(NULL, arguments, "-dec"); // Declination of boresight 186 float pa = psMetadataLookupF32(NULL, arguments, "-pa"); // Position angle 187 188 if (isnan(ra0) || isnan(dec0) || isnan(pa) || isnan(scale) || isnan(zp) || isnan(seeing)) { 189 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 190 "-ra, -dec, -pa -scale, -zp, -seeing must be specified with -stars"); 191 usage(arguments, config); 192 } 193 psMetadataAddF32(config->arguments, PS_LIST_TAIL, "RA", 0, "Boresight RA (radians)", 194 ra0 * M_PI / 180.0); 195 psMetadataAddF32(config->arguments, PS_LIST_TAIL, "DEC", 0, "Boresight Declination (radians)", 196 dec0 * M_PI / 180.0); 197 psMetadataAddF32(config->arguments, PS_LIST_TAIL, "PA", 0, "Boresight position angle (radians)", 198 pa * M_PI / 180.0); 199 200 psArray *raDecMag = psVectorsReadFromFile(starName, "%f %f %f"); // Vectors for RA Dec Mag 201 if (!raDecMag || raDecMag->n != 3) { 202 psError(PS_ERR_IO, false, "Unable to read RA Dec Mag from %s", starName); 203 psFree(raDecMag); 204 psFree(arguments); 205 psFree(config); 206 exit(PS_EXIT_CONFIG_ERROR); 207 } 208 209 psVector *ra = raDecMag->data[0]; // Star RAs 210 psVector *dec = raDecMag->data[1]; // Star Declinations 211 psVector *mag = raDecMag->data[2]; // Star magnitudes 212 for (long i = 0; i < ra->n; i++) { 213 ra->data.F32[i] *= M_PI / 180.0; 214 dec->data.F32[i] *= M_PI / 180.0; 215 } 216 217 psMetadataAddVector(config->arguments, PS_LIST_TAIL, "CATALOG.RA", 0, "Star RAs (radians)", ra); 218 psMetadataAddVector(config->arguments, PS_LIST_TAIL, "CATALOG.DEC", 0, "Star Decs (radians)", dec); 219 psMetadataAddVector(config->arguments, PS_LIST_TAIL, "CATALOG.MAG", 0, "Star magnitudes", mag); 220 psFree(raDecMag); 221 } 222 223 if (psMetadataLookupF32(NULL, config->arguments, "STARS.DENSITY") > 0 && 224 (isnan(scale) || isnan(zp) || isnan(seeing))) { 225 psWarning("-scale, -zp, -seeing must be specified if fake stars are to be generated --- turned off."); 226 psMetadataAddS32(config->arguments, PS_LIST_TAIL, "STASR.NUM", PS_META_REPLACE, 227 "Fake stars turned off", 0); 228 } 229 230 137 231 psFree(arguments); 232 return; 138 233 }
Note:
See TracChangeset
for help on using the changeset viewer.
