Index: trunk/ippScripts/scripts/detrend_reject_exp.pl
===================================================================
--- trunk/ippScripts/scripts/detrend_reject_exp.pl	(revision 14083)
+++ trunk/ippScripts/scripts/detrend_reject_exp.pl	(revision 14115)
@@ -63,19 +63,23 @@
    [   
        #          KEYWORD                 STATISTIC          CHIPTOOL FLAG
-       { name => "bg",             type => "mean",  flag => "-bg" },
-       { name => "bg_mean_stdev",  type => "stdev", flag => "-bg_mean_stdev" },
-       { name => "bg_stdev",       type => "rms",   flag => "-bg_stdev" },
+       { name => "bg",             type => "mean",  flag => "-bg",            dtype => "float" },
+       { name => "bg_mean_stdev",  type => "stdev", flag => "-bg_mean_stdev", dtype => "float" },
+       { name => "bg_stdev",       type => "rms",   flag => "-bg_stdev",      dtype => "float" },
    ];
-
+my $stats = PS::IPP::Metadata::Stats->new($STATS); # Stats parser
+
+# these stats are used it the rejections but not passed to the database
+# there is some duplication with the above, but the calculation time is minimal
 my $REJSTATS = 
    [   
        #          KEYWORD                 STATISTIC          CHIPTOOL FLAG
-       { name => "bg",             type => "mean",   flag => "ensMeanMean" },
-       { name => "bg",             type => "stdev",  flag => "ensMeanStdev" },
-       { name => "bg_mean_stdev",  type => "mean",   flag => "ensMeanStdevMean" },
-       { name => "bg_mean_stdev",  type => "stdev",  flag => "ensMeanStdevStdev" },
-       { name => "bg_stdev",       type => "mean",   flag => "ensStdevMean" },
-       { name => "bg_stdev",       type => "stdev",  flag => "ensStdevStdev" },
+       { name => "bg",             type => "mean",  flag => "ensMeanMean",       dtype => "float" },
+       { name => "bg",             type => "stdev", flag => "ensMeanStdev",      dtype => "float" },
+       { name => "bg_mean_stdev",  type => "mean",  flag => "ensMeanStdevMean",  dtype => "float" },
+       { name => "bg_mean_stdev",  type => "stdev", flag => "ensMeanStdevStdev", dtype => "float" },
+       { name => "bg_stdev",       type => "mean",  flag => "ensStdevMean",      dtype => "float" },
+       { name => "bg_stdev",       type => "stdev", flag => "ensStdevStdev",     dtype => "float" },
    ];
+my $rejstats = PS::IPP::Metadata::Stats->new($REJSTATS); # Stats parser
 
 # Look for programs we need
@@ -112,19 +116,17 @@
 
     # Parse the statistics on the residual image
-    my $stats = PS::IPP::Metadata::Stats->new($STATS); # Stats parser
     $stats->parse($metadata) or &my_die("Unable to find all values in statistics output.", $det_id, $iter, $PS_EXIT_PROG_ERROR);
 
     # Parse the statistics for rejections
-    my $rejstats = PS::IPP::Metadata::Stats->new($REJSTATS); # Stats parser
     $rejstats->parse($metadata) or &my_die("Unable to find all values in statistics output.", $det_id, $iter, $PS_EXIT_PROG_ERROR);
 }
 
 # we use the statistics of the ensemble to accept/reject exposurs
-my $ensMeanMean       = &STATS_value_for_flag ($REJSTATS, "ensMeanMean");      
-my $ensMeanStdev      = &STATS_value_for_flag ($REJSTATS, "ensMeanStdev");     
-my $ensMeanStdevMean  = &STATS_value_for_flag ($REJSTATS, "ensMeanStdevMean"); 
-my $ensMeanStdevStdev = &STATS_value_for_flag ($REJSTATS, "ensMeanStdevStdev");
-my $ensStdevMean      = &STATS_value_for_flag ($REJSTATS, "ensStdevMean");     
-my $ensStdevStdev     = &STATS_value_for_flag ($REJSTATS, "ensStdevStdev");    
+my $ensMeanMean       = $rejstats->value_for_flag ("ensMeanMean");      
+my $ensMeanStdev      = $rejstats->value_for_flag ("ensMeanStdev");     
+my $ensMeanStdevMean  = $rejstats->value_for_flag ("ensMeanStdevMean"); 
+my $ensMeanStdevStdev = $rejstats->value_for_flag ("ensMeanStdevStdev");
+my $ensStdevMean      = $rejstats->value_for_flag ("ensStdevMean");     
+my $ensStdevStdev     = $rejstats->value_for_flag ("ensStdevStdev");    
 
 $ipprc->define_camera($camera);
@@ -283,11 +285,5 @@
 $command .= " -dbname $dbname" if defined $dbname;
 $command .= " -again" unless $stop; 
-
-# add in the elements from the selected stats above
-foreach my $entry (@$STATS) {
-    my $value = $entry->{value};
-    my $flag = $entry->{flag};
-    $command .= " $flag $value";
-}
+$command .= $stats->cmdflags();
 
 # Put results into the database
@@ -347,16 +343,3 @@
 }
 
-sub STATS_value_for_flag 
-{
-    my $STATS = shift;
-    my $flag  = shift;
-
-    foreach my $entry (@$STATS) {
-	if ($flag eq $entry->{flag}) {
-	    return $entry->{value};
-	}
-    }
-    return 'NAN';
-}
-
 __END__
