Index: trunk/psphot/src/psphotStackArguments.c
===================================================================
--- trunk/psphot/src/psphotStackArguments.c	(revision 27657)
+++ trunk/psphot/src/psphotStackArguments.c	(revision 28013)
@@ -1,4 +1,5 @@
 # include "psphotStandAlone.h"
 
+static void dumpTemplate(void);
 static void usage(pmConfig *config, int exitCode);
 static void writeHelpInfo(FILE* ofile);
@@ -11,4 +12,6 @@
     if (psArgumentGet(argc, argv, "-help")) writeHelpInfo(stdout);
     if (psArgumentGet(argc, argv, "-h")) writeHelpInfo(stdout);
+
+    if (psArgumentGet(argc, argv, "-template")) dumpTemplate();
 
     // load config data from default locations
@@ -84,7 +87,8 @@
 	  "\n"
 	  "where INPUTS.mdc contains various METADATAs, each with:\n"
-	  "\tIMAGE(STR):     Image filename\n"
-	  "\tMASK(STR):      Mask filename\n"
-	  "\tVARIANCE(STR):  Variance map filename\n"
+	  "\tIMAGE    : Image filename\n"
+	  "\tMASK     : Mask filename\n"
+	  "\tVARIANCE : Variance map filename\n"
+	  "(use -template to generate a sample input.mdc file)\n"
 	  "OUTROOT is the 'root name' for output files\n"
 	  "\n"
@@ -144,2 +148,30 @@
 }
 
+static void dumpTemplate(void) {
+
+    fprintf (stdout, "# this line is required for multiple INPUT blocks to be accepted\n");
+    fprintf (stdout, "INPUT MULTI\n\n");
+
+    fprintf (stdout, "# copy and repeat the following block as needed (one per input image set)\n");
+    fprintf (stdout, "# either RAW (unconvolved) or CNV (convolved) input images are required\n");
+    fprintf (stdout, "# if both are supplied, by default RAW is used for detection, CNV is convolved (further) to match target PSF\n");
+    fprintf (stdout, "# if MASK or VARIANCE images are not supplied, they will be generated\n");
+    fprintf (stdout, "# if MASK or VARIANCE images are not supplied, they will be generated\n");
+    fprintf (stdout, "# PSF may be supplied for the convolution target\n");
+    fprintf (stdout, "INPUT METADATA\n");
+    fprintf (stdout, "  RAW:IMAGE     STR   file.im.fits   # signal image filename\n");
+    fprintf (stdout, "  RAW:MASK      STR   file.mk.fits   # mask image filename\n");
+    fprintf (stdout, "  RAW:VARIANCE  STR   file.wt.fits   # variance image filename\n");
+    fprintf (stdout, "  RAW:PSF       STR   file.psf.fits  # psf from input unconvolved image\n");
+
+    fprintf (stdout, "  CNV:IMAGE     STR   file.im.fits   # signal image filename\n");
+    fprintf (stdout, "  CNV:MASK      STR   file.mk.fits   # mask image filename\n");
+    fprintf (stdout, "  CNV:VARIANCE  STR   file.wt.fits   # variance image filename\n");
+    fprintf (stdout, "  CNV:PSF       STR   file.psf.fits  # psf from input convolved image\n");
+
+    fprintf (stdout, "  SOURCES       STR   file.cmf       # measured source positions\n");
+    fprintf (stdout, "END\n");
+
+    psLibFinalize();
+    exit(PS_EXIT_SUCCESS);
+}
