Index: trunk/pstamp/scripts/dquery_job_run.pl
===================================================================
--- trunk/pstamp/scripts/dquery_job_run.pl	(revision 33277)
+++ trunk/pstamp/scripts/dquery_job_run.pl	(revision 33282)
@@ -34,9 +34,7 @@
 my $EXTNAME = 'MOPS_DETECTABILITY_RESPONSE';
 my ($req_id,$job_id,$req_name,$product,$need_magic,$missing_tools,$project);
-my ($params_file,$output,$workdir,$dbname,$dbserver,$verbose,$save_temps,$ignore_wisdom);
+my ($output_base,$dbname,$dbserver,$verbose,$save_temps);
 GetOptions(
-    'input=s'         =>      \$params_file,
-    'output=s'        =>      \$output,
-    'workdir=s'       =>      \$workdir,
+    'output_base=s'   =>      \$output_base,
     'job_id=s'        =>      \$job_id,
     'dbname=s'        =>      \$dbname,
@@ -44,12 +42,11 @@
     'verbose'         =>      \$verbose,
     'save-temps'      =>      \$save_temps,
-    'ignore-wisdom'   =>      \$ignore_wisdom,
     ) or pod2usage(2);
 
 pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2 ) if @ARGV;
-pod2usage( -msg => "Required options: --job_id --input --output --workdir",
+pod2usage( -msg => "Required options: --job_id --output_base",
 	   -exitval => 3,
     ) unless
-    defined $job_id and defined $params_file and defined $output and defined $workdir;
+    defined $job_id and defined $output_base;
 
 my $psphotForced      = can_run('psphotForced') or (warn "Can't find psphotForced" and $missing_tools = 1);
@@ -59,4 +56,7 @@
     exit($PS_EXIT_CONFIG_ERROR);
 }
+
+my $workdir = dirname($output_base);
+my $params_file = "${output_base}params.mdc";
 
 unless (defined $verbose) {
@@ -148,6 +148,7 @@
 
 # Run psphotForced on the target list.
-my $tmpdir  = tempdir("detect.$job_id.XXXX", DIR => "${workdir}/", CLEANUP => !$save_temps);
-my $outroot = "$tmpdir/detectability.${stage}.${fpa_id}.${job_id}";
+my $outroot = "${output_base}detectability.${stage}.${stage_id}";
+$outroot .= ".$component" unless $stage eq 'chip';
+
 $params->{PROC_ERROR} = 0;
 my $psphot_cmd = "$psphotForced -psf $psf ";
@@ -161,38 +162,38 @@
     run(command => $psphot_cmd, verbose => $verbose);
 unless ($success) {
-    $params->{PROC_ERROR} = $PSTAMP_SYSTEM_ERROR;
-}
-
-# Why not parse out results here?
-# Convert psphot output to response
-if ($params->{PROC_ERROR} == 0) {
-    my $class_id = $params->{CLASS_ID};
-    my $cmf = "${outroot}.${class_id}.cmf";
-    my ($tmp_Npix,$tmp_Qfact,$tmp_flux,$tmp_flux_error) = read_cmf_file($cmf,$rows[0]->{EXTENSION_BASE});
-    my $i = 0;
-    foreach my $row (@rows) {
-        $row->{PROC_ERROR} = $params->{PROC_ERROR};
-
-        $row->{NPIX} = ${ $tmp_Npix }[$i];
-        $row->{QFACTOR} = ${ $tmp_Qfact }[$i];
-        $row->{FLUX} = ${ $tmp_flux }[$i];
-        $row->{FLUX_SIG} = ${ $tmp_flux_error }[$i];
-        
-#		print "$fpa_id $image $#{ $processing_request{$fpa_id}{$image} } $result_index $i ${ $tmp_Npix }[$i]\n";
-        $i++;
-    }
-}
-else {
-    foreach my $row (@rows) {
-        $row->{PROC_ERROR} = $params->{PROC_ERROR};
-
-        $row->{NPIX} = 0;
-        $row->{QFACTOR} = 0.0;
-        $row->{FLUX} = 0.0;
-        $row->{FLUX_SIG} = 0.0;
-    }
-}
-
-#write_response_file($output,\%query);
+    # $params->{PROC_ERROR} = $PSTAMP_SYSTEM_ERROR;
+    my $rc = $error_code >> 8;
+    my_die("$command failed: $error_code $rc",
+           $params->{QUERY_ID},$fpa_id,$params->{'MJD-OBS'},
+           $params->{FILTER},$params->{OBSCODE},$params->{STAGE},
+           $rc);
+}
+
+my $results = "$outroot.results";
+open OUT, ">$results" or 
+        my_die("Failed to open results file $results",
+           $params->{QUERY_ID},$fpa_id,$params->{'MJD-OBS'},
+           $params->{FILTER},$params->{OBSCODE},$params->{STAGE},
+           $PS_EXIT_UNKNOWN_ERROR);
+
+# Read the output cmf and produce the data we need for the response file
+my $class_id = $params->{CLASS_ID};
+my $cmf = "${outroot}.${class_id}.cmf";
+my $cmfbase = basename($cmf);
+my ($tmp_Npix,$tmp_Qfact,$tmp_flux,$tmp_flux_error) = read_cmf_file($cmf,$rows[0]->{EXTENSION_BASE});
+$i = 0;
+print OUT "ROWNUM PROC_ERROR NPIX QFACTOR FLUX FLUX_SIG STAGE STAGE_ID COMPONENT CMFFILE\n";
+foreach my $row (@rows) {
+    $row->{PROC_ERROR} = $params->{PROC_ERROR};
+
+    $row->{NPIX} = ${ $tmp_Npix }[$i];
+    $row->{QFACTOR} = ${ $tmp_Qfact }[$i];
+    $row->{FLUX} = ${ $tmp_flux }[$i];
+    $row->{FLUX_SIG} = ${ $tmp_flux_error }[$i];
+    
+    print OUT "$row->{ROWNUM} $row->{PROC_ERROR} $row->{NPIX} $row->{QFACTOR} $row->{FLUX} $row->{FLUX_SIG} $stage $stage_id $component $cmfbase\n";
+    $i++;
+}
+close(OUT);
 
 exit 0;
