Index: trunk/psphot/src/psphotArguments.c
===================================================================
--- trunk/psphot/src/psphotArguments.c	(revision 6117)
+++ trunk/psphot/src/psphotArguments.c	(revision 6311)
@@ -1,9 +1,11 @@
 # include "psphot.h"
 
-static void usage (psMetadata *arguments) ;
+static void usage (void);
 
 ppConfig *psphotArguments (int *argc, char **argv) {
 
     int N;
+
+    if (*argc == 1) usage ();
 
     // basic pslib options
@@ -22,10 +24,32 @@
 
     // arguments (must be supplied for each run, or not used)
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-psf", 0, "input psf file", "");
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-mask", 0,   "Name of the mask image", "");
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-resid", 0,  "Name of the output residual image", "");
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-weight", 0, "Name of the weight image", "");
-    psMetadataAddS32(config->arguments, PS_LIST_TAIL, "-chip", 0, "Chip number to process (if positive)", -1);
-    
+    // mask image (input) is used by psphotImageLoop
+    if ((N = psArgumentGet (*argc, argv, "-mask"))) {
+	psArgumentRemove (N, argc, argv);
+	psMetadataAddStr (config->arguments, PS_LIST_TAIL, "MASK_IMAGE", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psArgumentRemove (N, argc, argv);
+    }
+
+    // weight image (input) is used by psphotImageLoop
+    if ((N = psArgumentGet (*argc, argv, "-weight"))) {
+	psArgumentRemove (N, argc, argv);
+	psMetadataAddStr (config->arguments, PS_LIST_TAIL, "WEIGHT_IMAGE", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psArgumentRemove (N, argc, argv);
+    }
+
+    // residual image (output) is used by psphotOutput
+    if ((N = psArgumentGet (*argc, argv, "-resid"))) {
+	psArgumentRemove (N, argc, argv);
+	psMetadataAddStr (config->arguments, PS_LIST_TAIL, "RESID_IMAGE", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psArgumentRemove (N, argc, argv);
+    }
+
+    // chip selection is used to limit chips to be processed
+    if ((N = psArgumentGet (*argc, argv, "-chip"))) {
+	psArgumentRemove (N, argc, argv);
+	psMetadataAddStr (config->arguments, PS_LIST_TAIL, "CHIP_SELECTION", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psArgumentRemove (N, argc, argv);
+    }
+
     // run the test model (requires X,Y coordinate)
     if ((N = psArgumentGet (*argc, argv, "-modeltest"))) {
@@ -58,36 +82,39 @@
     }
 
-    // Parse command-line overrides of recipe values
-    psMetadata *recipe = psMetadataAlloc ();
+    // these other options override the recipe options
+    config->options = psMetadataAlloc ();
 
-    psMetadataAddStr(config->arguments, PS_LIST_TAIL, "-photcode", 0, "photometry code", "NONE");
-    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-break", 0, "", "NONE");
-    psMetadataAddS32 (config->arguments, PS_LIST_TAIL, "-fitmode", 0, "", 2);
-
-    // analysis region : XXX override recipe 
-    if ((N = psArgumentGet (*argc, argv, "-photcode"))) {
+    // PSF : optional psf file to be loaded
+    if ((N = psArgumentGet (*argc, argv, "-psf"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddStr (recipe, PS_LIST_TAIL, "PHOTCODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psMetadataAddStr (config->options, PS_LIST_TAIL, "PSF_INPUT_FILE", PS_META_REPLACE, "", psStringCopy(argv[N]));
 	psArgumentRemove (N, argc, argv);
     }
 
-    // analysis region : XXX override recipe 
-    if ((N = psArgumentGet (*argc, argv, "-break"))) {
+    // photcode : used in output to supplement header data (argument or recipe?)
+    if ((N = psArgumentGet (*argc, argv, "-photcode"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddStr (recipe, PS_LIST_TAIL, "BREAK_POINT", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psMetadataAddStr (config->options, PS_LIST_TAIL, "PHOTCODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
 	psArgumentRemove (N, argc, argv);
     }
 
-    // analysis region : XXX override recipe 
-    if ((N = psArgumentGet (*argc, argv, "-fitmode"))) {
+    // break : used from recipe throughout psphotReadout 
+    if ((N = psArgumentGet (*argc, argv, "-break"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddStr (recipe, PS_LIST_TAIL, "FITMODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psMetadataAddStr (config->options, PS_LIST_TAIL, "BREAK_POINT", PS_META_REPLACE, "", psStringCopy(argv[N]));
 	psArgumentRemove (N, argc, argv);
     }
 
-    // analysis region : XXX override recipe 
+    // fitmode : used from recipe throughout psphotReadout 
+    if ((N = psArgumentGet (*argc, argv, "-fitmode"))) {
+	psArgumentRemove (N, argc, argv);
+	psMetadataAddStr (config->options, PS_LIST_TAIL, "FITMODE", PS_META_REPLACE, "", psStringCopy(argv[N]));
+	psArgumentRemove (N, argc, argv);
+    }
+
+    // analysis region : overrides recipe value, used in psphotReadout/psphotEnsemblePSF
     if ((N = psArgumentGet (*argc, argv, "-region"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddStr (recipe, PS_LIST_TAIL, "ANALYSIS_REGION", 0, "", psStringCopy(argv[N]));
+	psMetadataAddStr (config->options, PS_LIST_TAIL, "ANALYSIS_REGION", 0, "", psStringCopy(argv[N]));
 	psArgumentRemove (N, argc, argv);
     }
@@ -96,5 +123,5 @@
     while ((N = psArgumentGet (*argc, argv, "-D"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddStr (recipe, PS_LIST_TAIL, argv[N], 0, "", argv[N+1]);
+	psMetadataAddStr (config->options, PS_LIST_TAIL, argv[N], 0, "", argv[N+1]);
 	psArgumentRemove (N, argc, argv);
 	psArgumentRemove (N, argc, argv);
@@ -104,5 +131,5 @@
     while ((N = psArgumentGet (*argc, argv, "-Df"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddF32 (recipe, PS_LIST_TAIL, argv[N], 0, "", atof(argv[N+1]));
+	psMetadataAddF32 (config->options, PS_LIST_TAIL, argv[N], 0, "", atof(argv[N+1]));
 	psArgumentRemove (N, argc, argv);
 	psArgumentRemove (N, argc, argv);
@@ -112,26 +139,22 @@
     while ((N = psArgumentGet (*argc, argv, "-Di"))) {
 	psArgumentRemove (N, argc, argv);
-	psMetadataAddS32 (recipe, PS_LIST_TAIL, argv[N], 0, "", atoi(argv[N+1]));
+	psMetadataAddS32 (config->options, PS_LIST_TAIL, argv[N], 0, "", atoi(argv[N+1]));
 	psArgumentRemove (N, argc, argv);
 	psArgumentRemove (N, argc, argv);
     }
 
-    // place the recipe options on the arguments stack
-    psMetadataAddPtr (config->arguments, PS_LIST_TAIL, "RECIPE.OPTIONS", PS_DATA_UNKNOWN, "", recipe);
-
-    if (!psArgumentParse(config->arguments, argc, argv)) usage (config->arguments);
-    if (*argc != 3) usage (config->arguments);
+    if (*argc != 3) usage ();
 
     // input and output positions are fixed
-    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-input",  PS_META_REPLACE, "", argv[1]);
-    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "-output", PS_META_REPLACE, "", argv[2]);
+    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "INPUT_FILE",  PS_META_REPLACE, "", argv[1]);
+    psMetadataAddStr (config->arguments, PS_LIST_TAIL, "OUTPUT_ROOT", PS_META_REPLACE, "", argv[2]);
 
+    psTrace(__func__, 1, "Done with psphotArguments...\n");
     return (config);
 }
 
-static void usage (psMetadata *arguments) {
+static void usage (void) {
 
     fprintf (stderr, "USAGE: psphot (image) (output)\n");
-    psArgumentHelp (arguments);
     exit (2);
 }
