Index: /tags/ipp-20110505/ippScripts/scripts/camera_exp.pl
===================================================================
--- /tags/ipp-20110505/ippScripts/scripts/camera_exp.pl	(revision 31532)
+++ /tags/ipp-20110505/ippScripts/scripts/camera_exp.pl	(revision 31533)
@@ -153,4 +153,28 @@
     }
     chomp $cmdflags;
+
+    { # Determine if FWHM is too large to bother continuing.
+	my $command = "$ppConfigDump -camera $camera -dump-camera -";
+	my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
+	    run(command => $command, verbose => $verbose);
+	unless ($success) {
+	    $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);
+	    &my_die("Unable to perform ppConfigDump: $error_code", $cam_id, $PS_EXIT_CONFIG_ERROR);
+	}
+	my $cameraConfig = $mdcParser->parse(join "", @$stdout_buf) or
+	    &my_die("Unable to parse metadata config doc", $cam_id, $PS_EXIT_CONFIG_ERROR);
+
+	my $maxFWHM = metadataLookupStr($cameraConfig, 'MAX_ALLOWED_FWHM');
+	if ($maxFWHM) {
+	    my $expFWHM;
+	    ($expFWHM) = $cmdflags =~ /-fwhm_major (\d+)/;	
+	    
+	    if ($expFWHM > $maxFWHM) {
+		print "Setting quality to 4007 due to large FWHM: exposure: $expFWHM  maximum: $maxFWHM\n";
+		$cmdflags .= " -quality 4007 "; # This corresponds to PSASTRO_ERR_DATA
+		$no_op = 1;
+	    }
+	}
+    }
 }
 
Index: /tags/ipp-20110505/ippScripts/scripts/lap_science.pl
===================================================================
--- /tags/ipp-20110505/ippScripts/scripts/lap_science.pl	(revision 31532)
+++ /tags/ipp-20110505/ippScripts/scripts/lap_science.pl	(revision 31533)
@@ -621,4 +621,12 @@
     }
 
+    my $warps = '';
+    foreach $exposure (@$exposures) {
+	if (($exposure->{data_state} != 'drop')&&
+	    (S64_IS_NOT_NULL($exposure->{warp_id}))) {
+	    $warps .= " -warp_id $exposure->{warp_id} ";
+	}
+    }
+
     my @utctime = gmtime();
     $utctime[5] += 1900;
@@ -636,4 +644,5 @@
     $command .= "  -set_workdir $workdir  -set_dist_group NODIST ";
     $command .= " -min_num 2 -set_reduction QUICKSTACK ";
+    $command .= " $warps ";
 
     my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
@@ -689,4 +698,13 @@
     unless (defined($label) && defined($filter) && defined($proj_cell)) {
 	&my_die("Unable to perform stacktool. Insufficient information.", $lap_id);
+    }
+
+    my $warps = '';
+    foreach $exposure (@$exposures) {
+	if (($exposure->{data_state} != 'drop')&&
+	    (S64_IS_NOT_NULL($exposure->{magicked}))&&
+	    (S64_IS_NOT_NULL($exposure->{warp_id}))) {
+	    $warps .= " -warp_id $exposure->{warp_id} ";
+	}
     }
 
@@ -704,5 +722,6 @@
     $command .= " -definebyquery -select_label $label -select_skycell_id ${proj_cell}.% -select_filter $filter ";
     $command .= " -set_label ${label} -set_workdir $workdir -set_data_group $data_group ";
-    $command .= " -min_num 2 -set_reduction THREEPI_STACK -set_dist_group ${label}";
+    $command .= " -min_num 2 -set_reduction THREEPI_STACK -set_dist_group ${label} ";
+    $command .= " $warps ";
 
     my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
Index: /tags/ipp-20110505/ippTools/src/laptoolConfig.c
===================================================================
--- /tags/ipp-20110505/ippTools/src/laptoolConfig.c	(revision 31532)
+++ /tags/ipp-20110505/ippTools/src/laptoolConfig.c	(revision 31533)
@@ -75,4 +75,16 @@
   ADD_OPT(Bool,pendingrunArgs, "-simple",                     "use the simple output format", false);
 
+  // -listrun
+  psMetadata *listrunArgs = psMetadataAlloc();
+  ADD_OPT(S64, listrunArgs, "-seq_id",                     "search by LAP sequence ID", 0);
+  ADD_OPT(S64, listrunArgs, "-lap_id",                     "search by LAP run ID", 0);
+  ADD_OPT(Str, listrunArgs, "-projection_cell",            "search by projection cell", NULL);
+  ADD_OPT(Str, listrunArgs, "-filter",                     "search by filter", NULL);
+  //  ADD_OPT(Str, listrunArgs, "-label",                      "search by LAP run label", NULL);
+  psMetadataAddStr(listrunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by LAP run label", NULL);
+  ADD_OPT(Str, listrunArgs, "-state",                      "search by LAP run state", NULL);
+  ADD_OPT(Str, listrunArgs, "-fault",                      "search by LAP run fault", NULL);
+  ADD_OPT(Bool,listrunArgs, "-simple",                     "use the simple output format", false);
+
   // -updaterun
   psMetadata *updaterunArgs = psMetadataAlloc();
@@ -129,9 +141,10 @@
   psMetadata *argSets = psMetadataAlloc();
   psMetadata *modes = psMetadataAlloc();
-
+  
   PXOPT_ADD_MODE("-definesequence",          "", LAPTOOL_MODE_DEFINESEQUENCE,   definesequenceArgs);
   PXOPT_ADD_MODE("-listsequence",            "", LAPTOOL_MODE_LISTSEQUENCE,     listsequenceArgs);
   PXOPT_ADD_MODE("-definerun",               "", LAPTOOL_MODE_DEFINERUN,        definerunArgs);
   PXOPT_ADD_MODE("-pendingrun",              "", LAPTOOL_MODE_PENDINGRUN,       pendingrunArgs);
+  PXOPT_ADD_MODE("-listrun",                 "", LAPTOOL_MODE_PENDINGRUN,       listrunArgs);
   PXOPT_ADD_MODE("-updaterun",               "", LAPTOOL_MODE_UPDATERUN,        updaterunArgs);
   PXOPT_ADD_MODE("-pendingexp",              "", LAPTOOL_MODE_PENDINGEXP,       pendingexpArgs);
Index: /tags/ipp-20110505/ippTools/src/stacktool.c
===================================================================
--- /tags/ipp-20110505/ippTools/src/stacktool.c	(revision 31532)
+++ /tags/ipp-20110505/ippTools/src/stacktool.c	(revision 31533)
@@ -246,5 +246,6 @@
     PXOPT_COPY_STR(config->args,  where, "-select_data_group",         "warpRun.data_group", "==");
     pxAddLabelSearchArgs (config, where, "-select_label",              "warpRun.label", "LIKE"); // define using warp label
-
+    pxAddLabelSearchArgs (config, where, "-warp_id",                   "warpRun.warp_id", "==");
+    
     // these are used to build the HAVING restriction
     PXOPT_COPY_S32(config->args, having, "-min_num", "num_warp", ">=");
Index: /tags/ipp-20110505/ippTools/src/stacktoolConfig.c
===================================================================
--- /tags/ipp-20110505/ippTools/src/stacktoolConfig.c	(revision 31532)
+++ /tags/ipp-20110505/ippTools/src/stacktoolConfig.c	(revision 31533)
@@ -91,4 +91,5 @@
     psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_zpt_obs_max", 0, "define max zero point", NAN);
     psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_astrom", 0, "define max astrometry rms", NAN);
+    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-warp_id", PS_META_DUPLICATE_OK, "include this warp ID (multiple OK)", 0);
     psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random", 0, "use this number of random elements", 0);
     psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-min_num", 0, "minimum number of inputs", 0);
Index: /tags/ipp-20110505/ippconfig/gpc1/camera.config
===================================================================
--- /tags/ipp-20110505/ippconfig/gpc1/camera.config	(revision 31532)
+++ /tags/ipp-20110505/ippconfig/gpc1/camera.config	(revision 31533)
@@ -165,4 +165,7 @@
 NPIX_INTERCHIP          S32     103794483
 
+# This sets the maximum size for the fwhm_major.  This is roughly 3", and 98.67% of all exposures in the database are less than this.
+MAX_ALLOWED_FWHM          F32         12
+
 # The set of maskbits that should not be set to NAN in "released" images
 # This value is equal to CONV.POOR | STARCORE | SPIKE | SUSPECT  = 0x5280
