Index: /branches/eam_branch_20080719/ippTools/share/camtool_pendingcleanuprun.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/camtool_pendingcleanuprun.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/camtool_pendingcleanuprun.sql	(revision 19078)
@@ -4,4 +4,6 @@
     camRun.state
 FROM camRun
+JOIN chipRun
+USING (chip_id)
 JOIN rawExp 
 USING (exp_id)
Index: /branches/eam_branch_20080719/ippTools/share/dettool_addprocessedexp.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_addprocessedexp.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_addprocessedexp.sql	(revision 19078)
@@ -25,6 +25,6 @@
   AND detProcessedExp.exp_id IS NULL
   AND detInputExp.include = 1
-  AND detRun.det_id = %s
-  AND detProcessedImfile.exp_id = '%s'
+  AND detRun.det_id = %lld
+  AND detProcessedImfile.exp_id = %lld
 GROUP BY
    detProcessedImfile.class_id,
Index: /branches/eam_branch_20080719/ippTools/share/dettool_definebydetrun.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_definebydetrun.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_definebydetrun.sql	(revision 19078)
@@ -3,5 +3,5 @@
 INSERT INTO detInputExp
    SELECT
-       %d,
+       %lld,
        0,
        detResidExp.exp_id,
@@ -10,3 +10,3 @@
    JOIN rawExp
        USING(exp_id)
-   WHERE det_id = %d
+   WHERE det_id = %lld
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedexp.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedexp.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedexp.sql	(revision 19078)
@@ -1,5 +1,5 @@
 SELECT
     detNormalizedExp.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detNormalizedExp
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedimfile.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedimfile.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedimfile.sql	(revision 19078)
@@ -1,5 +1,5 @@
 SELECT
     detNormalizedImfile.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detNormalizedImfile
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedstat.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedstat.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_normalizedstat.sql	(revision 19078)
@@ -1,5 +1,5 @@
 SELECT
     detNormalizedStatImfile.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detNormalizedStatImfile
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_processedexp.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_processedexp.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_processedexp.sql	(revision 19078)
@@ -1,8 +1,9 @@
+-- need to restrict to a single detRunSummary (require all to say 'cleaned'?)
 SELECT
     detProcessedExp.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detProcessedExp
-    USING(det_id,iteration)
+    USING(det_id)
 WHERE
     detRunSummary.data_state = 'goto_cleaned'
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_processedimfile.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_processedimfile.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_processedimfile.sql	(revision 19078)
@@ -1,8 +1,9 @@
+-- need to restrict to a single detRunSummary (require all to say 'cleaned'?)
 SELECT
     detProcessedImfile.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detProcessedImfile
-    USING(det_id,iteration)
+    USING(det_id)
 WHERE
     detRunSummary.data_state = 'goto_cleaned'
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_residexp.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_residexp.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_residexp.sql	(revision 19078)
@@ -1,9 +1,9 @@
 SELECT
-    detProcessedImfile.*,
-    detRunSummary.data_state,
+    detResidExp.*,
+    detRunSummary.data_state
 FROM detRunSummary
-JOIN detProcessedImfile
+JOIN detResidExp
     USING(det_id,iteration)
 WHERE
     detRunSummary.data_state = 'goto_cleaned'
-AND detProcessedImfile.data_state = 'full'
+AND detResidExp.data_state = 'full'
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_residimfile.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_residimfile.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_residimfile.sql	(revision 19078)
@@ -1,5 +1,5 @@
 SELECT
     detResidImfile.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detResidImfile
Index: /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_stacked.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_stacked.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/dettool_pendingcleanup_stacked.sql	(revision 19078)
@@ -1,5 +1,5 @@
 SELECT
     detStackedImfile.*,
-    detRunSummary.data_state,
+    detRunSummary.data_state
 FROM detRunSummary
 JOIN detStackedImfile
Index: /branches/eam_branch_20080719/ippTools/share/difftool_pendingcleanuprun.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/difftool_pendingcleanuprun.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/difftool_pendingcleanuprun.sql	(revision 19078)
@@ -1,2 +1,4 @@
+-- does this result in too many entries (one for each diffInputSkyfile?)
+-- all of this is just to get the camera used for the diff run
 SELECT
     diffRun.diff_id,
@@ -4,6 +6,20 @@
     diffRun.state
 FROM diffRun
-JOIN rawExp 
-USING (exp_id)
+JOIN diffInputSkyfile
+    USING(diff_id)
+JOIN warpSkyfile
+    ON  diffInputSkyfile.warp_id    = warpSkyfile.warp_id
+    AND diffInputSkyfile.skycell_id = warpSkyfile.skycell_id
+    AND diffInputSkyfile.tess_id    = warpSkyfile.tess_id
+JOIN warpRun
+    ON warpRun.warp_id = warpSkyfile.warp_id
+JOIN fakeRun
+    USING(fake_id)
+JOIN camRun
+    USING(cam_id)
+JOIN chipRun
+    USING(chip_id)
+JOIN rawExp
+    USING(exp_id)
 WHERE
     diffRun.state = 'goto_cleaned'
Index: /branches/eam_branch_20080719/ippTools/share/difftool_pendingcleanupskyfile.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/difftool_pendingcleanupskyfile.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/difftool_pendingcleanupskyfile.sql	(revision 19078)
@@ -4,5 +4,5 @@
     diffRun.workdir,
     diffRun.dvodb,
-    diffRun.tess_id,
+    diffRun.tess_id
 FROM diffRun
 JOIN diffSkyfile
Index: /branches/eam_branch_20080719/ippTools/share/faketool_pendingcleanuprun.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/faketool_pendingcleanuprun.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/faketool_pendingcleanuprun.sql	(revision 19078)
@@ -4,4 +4,8 @@
     fakeRun.state
 FROM fakeRun
+JOIN camRun
+USING (cam_id)
+JOIN chipRun
+USING (chip_id)
 JOIN rawExp 
 USING (exp_id)
Index: /branches/eam_branch_20080719/ippTools/share/pxadmin_create_tables.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/pxadmin_create_tables.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/pxadmin_create_tables.sql	(revision 19078)
@@ -714,4 +714,5 @@
        user_5 DOUBLE, 
        path_base VARCHAR(255),
+       data_state VARCHAR(64),
        fault SMALLINT NOT NULL, 
        PRIMARY KEY(det_id, iteration, class_id), 
Index: /branches/eam_branch_20080719/ippTools/share/stacktool_pendingcleanuprun.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/stacktool_pendingcleanuprun.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/stacktool_pendingcleanuprun.sql	(revision 19078)
@@ -1,2 +1,5 @@
+-- results in too many output files
+-- is the camera needed for this?
+-- is the camera unique for this?
 SELECT
     stackRun.stack_id,
@@ -4,6 +7,20 @@
     stackRun.state
 FROM stackRun
+JOIN stackInputSkyfile
+    USING(stack_id)
+JOIN warpSkyfile
+    ON  stackInputSkyfile.warp_id = warpSkyfile.warp_id
+    AND stackRun.skycell_id       = warpSkyfile.skycell_id
+    AND stackRun.tess_id          = warpSkyfile.tess_id
+JOIN warpRun
+    ON warpRun.warp_id = warpSkyfile.warp_id
+JOIN fakeRun
+    USING(fake_id)
+JOIN camRun
+    USING(cam_id)
+JOIN chipRun
+    USING(chip_id)
 JOIN rawExp 
-USING (exp_id)
+     USING (exp_id)
 WHERE
     stackRun.state = 'goto_cleaned'
Index: /branches/eam_branch_20080719/ippTools/share/stacktool_pendingcleanupskyfile.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/stacktool_pendingcleanupskyfile.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/stacktool_pendingcleanupskyfile.sql	(revision 19078)
@@ -4,5 +4,5 @@
     stackRun.workdir,
     stackRun.dvodb,
-    stackRun.tess_id,
+    stackRun.tess_id
 FROM stackRun
 JOIN stackSumSkyfile
Index: /branches/eam_branch_20080719/ippTools/share/warptool_pendingcleanuprun.sql
===================================================================
--- /branches/eam_branch_20080719/ippTools/share/warptool_pendingcleanuprun.sql	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/share/warptool_pendingcleanuprun.sql	(revision 19078)
@@ -4,4 +4,10 @@
     warpRun.state
 FROM warpRun
+JOIN fakeRun
+USING (fake_id)
+JOIN camRun
+USING (cam_id)
+JOIN chipRun
+USING (chip_id)
 JOIN rawExp 
 USING (exp_id)
Index: /branches/eam_branch_20080719/ippTools/src/dettool.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool.c	(revision 19078)
@@ -911,5 +911,5 @@
     psFree(time_filter);
 
-    if (!p_psDBRunQuery(config->dbh, query, (psS64)newDet_id, det_id)) {
+    if (!p_psDBRunQuery(config->dbh, query, (long long) newDet_id, (long long) det_id)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
@@ -1807,7 +1807,8 @@
 
 
-bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *data_state)
-{
-    PS_ASSERT_PTR_NON_NULL(config, false);
+bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+    PS_ASSERT_PTR_NON_NULL(class_id, false);
     PS_ASSERT_PTR_NON_NULL(data_state, false);
 
@@ -1816,9 +1817,10 @@
     char *query = "UPDATE detStackedImfile SET data_state = '%s'"
 	" WHERE det_id = %" PRId64
-	" AND iteration = %" PRId32;
-    if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration)) {
+	" AND iteration = %" PRId32
+	" AND class_id = %s";
+    if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration, class_id)) {
         psError(PS_ERR_UNKNOWN, false,
-                "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 
-		det_id, iteration);
+                "failed to change state for det_id %" PRId64 ", iteration %" PRId32 "class_id %s", 
+		det_id, iteration, class_id);
         return false;
     }
Index: /branches/eam_branch_20080719/ippTools/src/dettool.h
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool.h	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool.h	(revision 19078)
@@ -216,5 +216,5 @@
 bool setProcessedImfileDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *class_id, const char *data_state);
 bool setProcessedExpDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *data_state);
-bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *data_state);
+bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state);
 bool setNormStatImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state);
 bool setNormImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state);
Index: /branches/eam_branch_20080719/ippTools/src/dettoolConfig.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettoolConfig.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettoolConfig.c	(revision 19078)
@@ -265,4 +265,11 @@
     psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
 
+    // -revertprocessedimfile
+    psMetadata *revertprocessedimfileArgs = psMetadataAlloc();
+    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-det_id",  0,            "search for detrend ID (required)", 0);
+    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
+    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
+    psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code",  0,            "search by fault code", 0);
+
     // -updateprocessedimfile
     psMetadata *updateprocessedimfileArgs = psMetadataAlloc();
@@ -276,4 +283,7 @@
     psMetadataAddBool(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
+    psMetadataAddStr(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
 
     // -donecleanup_processedimfile
@@ -281,11 +291,7 @@
     psMetadataAddBool(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
-
-    // -revertprocessedimfile
-    psMetadata *revertprocessedimfileArgs = psMetadataAlloc();
-    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-det_id",  0,            "search for detrend ID (required)", 0);
-    psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
-    psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
-    psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code",  0,            "search by fault code", 0);
+    psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by exposure ID", 0);
+    psMetadataAddStr(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
 
     // -toprocessedexp
@@ -331,5 +337,4 @@
     psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
     psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
-    psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
     psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-data_state",           0,            "search for telescope", NULL);
 
@@ -338,4 +343,6 @@
     psMetadataAddBool(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
 
     // -donecleanup_processedexp
@@ -343,4 +350,6 @@
     psMetadataAddBool(donecleanup_processedexpArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
 
     // -tostacked
@@ -386,6 +395,6 @@
     psMetadata *updatestackedArgs = psMetadataAlloc();
     psMetadataAddS64(updatestackedArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
-    psMetadataAddS64(updatestackedArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
-    psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
+    psMetadataAddS32(updatestackedArgs, PS_LIST_TAIL, "-iteration",  0,            "search by iteration number", 0);
+    psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
     psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-data_state",           0,            "search for telescope", NULL);
 
@@ -394,4 +403,7 @@
     psMetadataAddBool(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-iteration",  0,            "search by iteration number", 0);
+    psMetadataAddStr(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
 
     // -donecleanup_stacked
@@ -399,4 +411,7 @@
     psMetadataAddBool(donecleanup_stackedArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_stackedArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_stackedArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(donecleanup_stackedArgs, PS_LIST_TAIL, "-iteration",  0,            "search by iteration number", 0);
+    psMetadataAddStr(donecleanup_stackedArgs, PS_LIST_TAIL, "-class_id",  0,            "search by class ID", NULL);
 
     // -tonormalizedstat
@@ -432,5 +447,5 @@
     psMetadata *updatenormalizedstatArgs = psMetadataAlloc();
     psMetadataAddS64(updatenormalizedstatArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
-    psMetadataAddS64(updatenormalizedstatArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
+    psMetadataAddS32(updatenormalizedstatArgs, PS_LIST_TAIL, "-iteration",  0,            "search by iteration number", 0);
     psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
     psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-data_state",           0,            "search for telescope", NULL);
@@ -440,4 +455,7 @@
     psMetadataAddBool(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-iteration",  0,            "search by iteration number", 0);
+    psMetadataAddStr(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
 
     // -donecleanup_normalizedstat
@@ -445,4 +463,7 @@
     psMetadataAddBool(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-iteration",  0,            "search by iteration number", 0);
+    psMetadataAddStr(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
 
     // -tonormalize
@@ -488,5 +509,5 @@
     psMetadata *updatenormalizedimfileArgs = psMetadataAlloc();
     psMetadataAddS64(updatenormalizedimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
-    psMetadataAddS64(updatenormalizedimfileArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
+    psMetadataAddS32(updatenormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
     psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
     psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-data_state",           0,            "search for telescope", NULL);
@@ -496,4 +517,7 @@
     psMetadataAddBool(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
+    psMetadataAddStr(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
 
     // -donecleanup_normalizedimfile
@@ -501,4 +525,7 @@
     psMetadataAddBool(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
+    psMetadataAddStr(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
 
     // -tonormalizedexp
@@ -541,6 +568,5 @@
     psMetadata *updatenormalizedexpArgs = psMetadataAlloc();
     psMetadataAddS64(updatenormalizedexpArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
-    psMetadataAddS64(updatenormalizedexpArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
-    psMetadataAddStr(updatenormalizedexpArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
+    psMetadataAddS32(updatenormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
     psMetadataAddStr(updatenormalizedexpArgs, PS_LIST_TAIL, "-data_state",           0,            "search for telescope", NULL);
 
@@ -549,4 +575,6 @@
     psMetadataAddBool(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
 
     // -donecleanup_normalizedexp
@@ -554,4 +582,6 @@
     psMetadataAddBool(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
 
     // -toresidimfile
@@ -611,4 +641,5 @@
     psMetadata *updateresidimfileArgs = psMetadataAlloc();
     psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(updateresidimfileArgs, PS_LIST_TAIL, "-iteration", 0,       "search by iteration number", 0);
     psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
     psMetadataAddStr(updateresidimfileArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
@@ -619,4 +650,8 @@
     psMetadataAddBool(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-iteration", 0,       "search by iteration number", 0);
+    psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
+    psMetadataAddStr(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
 
     // -donecleanup_residimfile
@@ -624,4 +659,8 @@
     psMetadataAddBool(donecleanup_residimfileArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-det_id",               0,            "search by chip ID", 0);
+    psMetadataAddS32(donecleanup_residimfileArgs, PS_LIST_TAIL, "-iteration", 0,       "search by iteration number", 0);
+    psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-exp_id",               0,            "search by exp_id", 0);
+    psMetadataAddStr(donecleanup_residimfileArgs, PS_LIST_TAIL, "-class_id",             0,            "search by exp_name", NULL);
 
     // -toresidexp
@@ -686,4 +725,5 @@
     psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-path_base",  0,            "define base output location", NULL);
     psMetadataAddBool(updateresidexpArgs, PS_LIST_TAIL, "-reject",  0,            "exposure is not to be stacked in the next iteration", false);
+    psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-data_state",           0,            "search for telescope", NULL);
 
     // -pendingcleanup_residexp
@@ -691,4 +731,7 @@
     psMetadataAddBool(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-det_id", 0,            "search by detrend ID (required)", 0);
+    psMetadataAddS32(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
+    psMetadataAddS64(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by detrend ID", 0);
 
     // -donecleanup_residexp
@@ -696,4 +739,7 @@
     psMetadataAddBool(donecleanup_residexpArgs, PS_LIST_TAIL, "-simple",  0,            "use the simple output format", false);
     psMetadataAddU64(donecleanup_residexpArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
+    psMetadataAddS64(donecleanup_residexpArgs, PS_LIST_TAIL, "-det_id", 0,            "search by detrend ID (required)", 0);
+    psMetadataAddS32(donecleanup_residexpArgs, PS_LIST_TAIL, "-iteration", 0,            "search by iteration number", 0);
+    psMetadataAddS64(donecleanup_residexpArgs, PS_LIST_TAIL, "-exp_id",  0,            "search by detrend ID", 0);
 
     // -todetrunsummary
@@ -834,5 +880,5 @@
     PXOPT_ADD_MODE("-normalizedstat",        "", DETTOOL_MODE_NORMALIZEDSTAT,   normalizedstatArgs);
     PXOPT_ADD_MODE("-revertnormalizedstat",  "", DETTOOL_MODE_REVERTNORMALIZEDSTAT,   revertnormalizedstatArgs);
-    PXOPT_ADD_MODE("-updatenormalizedstat",  "", DETTOOL_MODE_REVERTNORMALIZEDSTAT,   revertnormalizedstatArgs);
+    PXOPT_ADD_MODE("-updatenormalizedstat",  "", DETTOOL_MODE_UPDATENORMALIZEDSTAT,   updatenormalizedstatArgs);
     PXOPT_ADD_MODE("-pendingcleanup_normalizedstat", "", DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDSTAT, pendingcleanup_normalizedstatArgs);
     PXOPT_ADD_MODE("-donecleanup_normalizedstat", "",    DETTOOL_MODE_DONECLEANUP_NORMALIZEDSTAT, donecleanup_normalizedstatArgs);
@@ -871,5 +917,4 @@
 
     PXOPT_ADD_MODE("-todetrunsummary",  "", DETTOOL_MODE_TODETRUNSUMMARY,  todetrunsummaryArgs);
-    PXOPT_ADD_MODE("-updateresidexp", "", DETTOOL_MODE_UPDATERESIDEXP,updateresidexpArgs);
     PXOPT_ADD_MODE("-adddetrunsummary", "", DETTOOL_MODE_ADDDETRUNSUMMARY,adddetrunsummaryArgs);
     PXOPT_ADD_MODE("-detrunsummary", "", DETTOOL_MODE_DETRUNSUMMARY,detrunsummaryArgs);
Index: /branches/eam_branch_20080719/ippTools/src/dettool_detrunsummary.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_detrunsummary.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_detrunsummary.c	(revision 19078)
@@ -94,9 +94,4 @@
         return false;
     }
-    psString data_state = psMetadataLookupStr(&status, row, "data_state");
-    if (!status) {
-        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for iteration");
-        return false;
-    }
 
     // optional
@@ -112,5 +107,5 @@
             det_id,
             iteration,
-	    data_state,
+	    "full",
             bg,
             bg_stdev,
Index: /branches/eam_branch_20080719/ippTools/src/dettool_normalizedexp.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_normalizedexp.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_normalizedexp.c	(revision 19078)
@@ -335,5 +335,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "detNormalizedExp.det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "detNormalizedExp.iteration", "==");
 
     psString query = pxDataGet("dettool_donecleanup_normalizedexp.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_normalizedimfile.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_normalizedimfile.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_normalizedimfile.c	(revision 19078)
@@ -317,5 +317,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "detNormalizedImfile.det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "detNormalizedImfile.iteration", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "detNormalizedImfile.det_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_normalizedimfile.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_normalizedstat.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_normalizedstat.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_normalizedstat.c	(revision 19078)
@@ -297,5 +297,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "detNormalizedStatImfile.det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "detNormalizedStatImfile.iteration", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "detNormalizedStatImfile.det_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_normalizedstat.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_processedexp.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_processedexp.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_processedexp.c	(revision 19078)
@@ -105,5 +105,5 @@
     }
 
-    if (!p_psDBRunQuery(config->dbh, query, det_id, exp_id)) {
+    if (!p_psDBRunQuery(config->dbh, query, (long long) det_id, (long long) exp_id)) {
         psError(PS_ERR_UNKNOWN, false, "database error");
         psFree(query);
@@ -282,6 +282,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-det_id", "detProcessedExp.det_id", "==");
-    PXOPT_COPY_STR(config->args, where, "-label", "detProcessedExp.label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
 
     psString query = pxDataGet("dettool_pendingcleanup_processedexp.sql");
@@ -344,5 +344,6 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_processedexp.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_processedimfile.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_processedimfile.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_processedimfile.c	(revision 19078)
@@ -318,5 +318,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-det_id", "detProcessedImfile.det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
 
     psString query = pxDataGet("dettool_pendingcleanup_processedimfile.sql");
@@ -379,5 +381,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_processedimfile.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_residexp.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_residexp.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_residexp.c	(revision 19078)
@@ -361,5 +361,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-det_id", "detProcessedImfile.det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id",    "exp_id", "==");
 
     psString query = pxDataGet("dettool_pendingcleanup_residexp.sql");
@@ -422,5 +424,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id",    "exp_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_residexp.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_residimfile.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_residimfile.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_residimfile.c	(revision 19078)
@@ -284,5 +284,8 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_S64(config->args, where, "-det_id", "detProcessedImfile.det_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id",    "det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id",  "exp_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id",  "class_id", "==");
 
     psString query = pxDataGet("dettool_pendingcleanup_residimfile.sql");
@@ -345,5 +348,8 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id",    "det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "==");
+    PXOPT_COPY_S64(config->args, where, "-exp_id",  "exp_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id",  "class_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_residimfile.sql");
Index: /branches/eam_branch_20080719/ippTools/src/dettool_stack.c
===================================================================
--- /branches/eam_branch_20080719/ippTools/src/dettool_stack.c	(revision 19077)
+++ /branches/eam_branch_20080719/ippTools/src/dettool_stack.c	(revision 19078)
@@ -322,7 +322,8 @@
     PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false);
     PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", true, false);
+    PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);
     PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", true, false);
 
-    if (!setStackedImfileDataState(config, det_id, iteration, data_state)) {
+    if (!setStackedImfileDataState(config, det_id, iteration, class_id, data_state)) {
 	return false;
     }
@@ -340,4 +341,5 @@
     PXOPT_COPY_S64(config->args, where, "-det_id", "detStackedImfile.det_id", "==");
     PXOPT_COPY_S32(config->args, where, "-iteration", "detStackedImfile.iteration", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "detStackedImfile.class_id", "==");
 
     psString query = pxDataGet("dettool_pendingcleanup_stacked.sql");
@@ -400,5 +402,7 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
+    PXOPT_COPY_S64(config->args, where, "-det_id", "detStackedImfile.det_id", "==");
+    PXOPT_COPY_S32(config->args, where, "-iteration", "detStackedImfile.iteration", "==");
+    PXOPT_COPY_STR(config->args, where, "-class_id", "detStackedImfile.class_id", "==");
 
     psString query = pxDataGet("dettool_donecleanup_stacked.sql");
