Index: /branches/pap/ippScripts/scripts/magic_destreak.pl
===================================================================
--- /branches/pap/ippScripts/scripts/magic_destreak.pl	(revision 28498)
+++ /branches/pap/ippScripts/scripts/magic_destreak.pl	(revision 28499)
@@ -97,8 +97,8 @@
 my ($skycell_args, $class_id, $skycell_id);
 
-if (($stage eq "raw") or ($stage eq "chip")) {
+if (($stage eq "raw") or ($stage eq "chip") or $stage eq "chip_bg") {
     $class_id = $component;
     $skycell_args = " -class_id $component";
-} elsif ($stage eq "warp") {
+} elsif ($stage eq "warp" or $stage eq "warp_bg") {
     $skycell_id = $component;
     $skycell_args = " -skycell_id $component";
@@ -286,5 +286,9 @@
         # $sources = $ipprc->filename("PSPHOT.OUT.CMF.SPL",  $path_base);
 
-    } elsif ($stage eq "warp") {
+    } elsif ($stage eq "chip_bg") {
+        $image  = $ipprc->filename("PPBACKGROUND.OUTPUT", $path_base, $class_id);
+        $mask = $ipprc->filename("PPBACKGROUND.OUTPUT.MASK", $path_base, $class_id);
+        $astrom = $ipprc->filename("PSASTRO.OUTPUT", $cam_path_base);
+    } elsif ($stage eq "warp" or $stage eq "warp_bg") {
         $image  = $ipprc->filename("PSWARP.OUTPUT", $path_base);
         $mask   = $ipprc->filename("PSWARP.OUTPUT.MASK", $path_base);
Index: /branches/pap/ippTools/share/Makefile.am
===================================================================
--- /branches/pap/ippTools/share/Makefile.am	(revision 28498)
+++ /branches/pap/ippTools/share/Makefile.am	(revision 28499)
@@ -228,6 +228,8 @@
 	magicdstool_definebyquery_raw.sql \
 	magicdstool_definebyquery_chip.sql \
+	magicdstool_definebyquery_chip_bg.sql \
 	magicdstool_definebyquery_camera.sql \
 	magicdstool_definebyquery_warp.sql \
+	magicdstool_definebyquery_warp_bg.sql \
 	magicdstool_definebyquery_diff.sql \
 	magicdstool_definecopy_chip.sql \
Index: /branches/pap/ippTools/share/magicdstool_definebyquery_chip_bg.sql
===================================================================
--- /branches/pap/ippTools/share/magicdstool_definebyquery_chip_bg.sql	(revision 28499)
+++ /branches/pap/ippTools/share/magicdstool_definebyquery_chip_bg.sql	(revision 28499)
@@ -0,0 +1,33 @@
+SELECT DISTINCT       -- DISTINCT because we are going though diffInputSkyfile
+    magicRun.magic_id,
+    exp_id,
+    'chip_bg' AS stage,
+    chip_bg_id AS stage_id,
+    chipBackgroundRun.data_group,
+    camRun.cam_id,
+    magicRun.label,
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
+FROM magicRun
+JOIN magicMask USING(magic_id)
+JOIN diffRun USING(diff_id)
+JOIN diffInputSkyfile USING(diff_id)
+JOIN warpRun
+    ON (!magicRun.inverse AND warp1 = warp_id)
+    OR ( magicRun.inverse AND warp2 = warp_id)
+JOIN fakeRun USING(fake_id)
+JOIN camRun USING(cam_id)
+JOIN chipRun USING(chip_id, exp_id)
+JOIN chipBackgroundRun USING(chip_id)
+JOIN rawExp USING(exp_id)
+LEFT JOIN magicDSRun
+    ON magicRun.magic_id = magicDSRun.magic_id
+    AND magicDSRun.stage = 'chip_bg'
+WHERE magicRun.state = 'full'
+    AND ( -- rerun HOOK magicdstool sends "\n1 " if rerun else "\n0 " %s
+    OR magicDSRun.magic_ds_id IS NULL)
+    AND chipBackgroundRun.magicked = 0
+    AND chipBackgroundRun.state = 'full'
+    AND camRun.state = 'full'
+
Index: /branches/pap/ippTools/share/magicdstool_definebyquery_warp_bg.sql
===================================================================
--- /branches/pap/ippTools/share/magicdstool_definebyquery_warp_bg.sql	(revision 28499)
+++ /branches/pap/ippTools/share/magicdstool_definebyquery_warp_bg.sql	(revision 28499)
@@ -0,0 +1,32 @@
+SELECT DISTINCT       -- DISTINCT because we are going though diffInputSkyfile
+    magicRun.magic_id,
+    exp_id,
+    'warp_bg' AS stage,
+    warp_bg_id AS stage_id,
+    warpBackgroundRun.data_group,
+    0 AS cam_id,
+    magicRun.label,
+    magicRun.workdir,
+    CAST(NULL AS SIGNED) AS inv_magic_id,
+    CAST(NULL AS SIGNED) AS inv_exp_id
+FROM magicRun
+JOIN magicMask USING(magic_id)
+JOIN diffRun USING(diff_id)
+JOIN diffInputSkyfile USING(diff_id)
+JOIN warpRun
+    ON (!magicRun.inverse AND warp1 = warp_id)
+    OR ( magicRun.inverse AND warp2 = warp_id)
+JOIN warpBackgroundRun USING(warp_bg_id)
+JOIN fakeRun USING(fake_id)
+JOIN camRun USING(cam_id)
+JOIN chipRun USING(chip_id, exp_id)
+JOIN rawExp USING(exp_id)
+LEFT JOIN magicDSRun
+    ON magicRun.magic_id = magicDSRun.magic_id
+    AND magicDSRun.stage = 'warp_bg'
+WHERE magicRun.state = 'full'
+    AND ( -- rerun HOOK magicdstool sends "\n1 " if rerun else "\n0 " %s
+    OR magicDSRun.magic_ds_id IS NULL)
+    AND warpBackgroundRun.magicked  = 0
+    AND warpBackgroundRun.state = 'full'
+
Index: /branches/pap/ippTools/src/magicdstool.c
===================================================================
--- /branches/pap/ippTools/src/magicdstool.c	(revision 28498)
+++ /branches/pap/ippTools/src/magicdstool.c	(revision 28499)
@@ -122,6 +122,8 @@
     PXOPT_COPY_S64(config->args, where, "-exp_id",  "exp_id", "==");
     PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-chip_bg_id", "chip_bg_id", "==");
     PXOPT_COPY_S64(config->args, where, "-cam_id",  "cam_id", "==");
     PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
+    PXOPT_COPY_S64(config->args, where, "-warp_bg_id", "warp_bg_id", "==");
     PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "==");
     PXOPT_COPY_S64(config->args, where, "-magic_id","magicRun.magic_id", "==");
@@ -140,4 +142,7 @@
         query = pxDataGet("magicdstool_definebyquery_chip.sql");
         break;
+    case IPP_STAGE_CHIP_BG:
+        query = pxDataGet("magicdstool_definebyquery_chip_bg.sql");
+        break;
     case IPP_STAGE_CAMERA:
         query = pxDataGet("magicdstool_definebyquery_camera.sql");
@@ -145,4 +150,7 @@
     case IPP_STAGE_WARP:
         query = pxDataGet("magicdstool_definebyquery_warp.sql");
+        break;
+    case IPP_STAGE_WARP_BG:
+        query = pxDataGet("magicdstool_definebyquery_warp_bg.sql");
         break;
     case IPP_STAGE_DIFF:
@@ -720,4 +728,7 @@
         query = "UPDATE chipProcessedImfile SET magicked = %" PRId64 " where chip_id = %" PRId64 " AND class_id = '%s'";
         break;
+    case IPP_STAGE_CHIP_BG:
+        query = "UPDATE chipBackgroundImfile SET magicked = %" PRId64 " where chip_bg_id = %" PRId64 " AND class_id = '%s'";
+        break;
     case IPP_STAGE_CAMERA:
         // no there is no magicked column in camProcessedExp so we have nothing to do
@@ -727,4 +738,7 @@
         query = "UPDATE warpSkyfile SET magicked = %" PRId64 " where warp_id = %" PRId64 " AND skycell_id = '%s'";
         break;
+    case IPP_STAGE_WARP_BG:
+        query = "UPDATE warpBackgroundSkyfile SET magicked = %" PRId64 " where warp_bg_id = %" PRId64 " AND skycell_id = '%s'";
+        break;
     case IPP_STAGE_DIFF:
         query = "UPDATE diffSkyfile SET magicked = %" PRId64 " where diff_id = %" PRId64 " AND skycell_id = '%s'";
@@ -794,4 +808,7 @@
         query = "UPDATE chipRun SET magicked = %" PRId64 " where chip_id = %" PRId64;
         break;
+    case IPP_STAGE_CHIP_BG:
+        query = "UPDATE chipBackgroundRun SET magicked = %" PRId64 " where chip_bg_id = %" PRId64;
+        break;
     case IPP_STAGE_CAMERA:
         query = "UPDATE camRun SET magicked = %" PRId64 " where cam_id = %" PRId64;
@@ -799,4 +816,7 @@
     case IPP_STAGE_WARP:
         query = "UPDATE warpRun SET magicked = %" PRId64 " where warp_id = %" PRId64;
+        break;
+    case IPP_STAGE_WARP_BG:
+        query = "UPDATE warpBackgroundRun SET magicked = %" PRId64 " where warp_bg_id = %" PRId64;
         break;
     case IPP_STAGE_DIFF:
Index: /branches/pap/ippTools/src/magicdstoolConfig.c
===================================================================
--- /branches/pap/ippTools/src/magicdstoolConfig.c	(revision 28498)
+++ /branches/pap/ippTools/src/magicdstoolConfig.c	(revision 28499)
@@ -60,6 +60,8 @@
     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-exp_id",   0, "search by exp_id", 0);
     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-chip_id",  0, "search by chip_id", 0);
+    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-chip_bg_id",  0, "search by chip_bg_id", 0);
     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-cam_id",  0, "search by cam_id", 0);
     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-warp_id",  0, "search by warp_id", 0);
+    psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-warp_bg_id",  0, "search by warp_bg_id", 0);
     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-diff_id",  0, "search by diff_id", 0);
     psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic_id", 0);
Index: /branches/pap/psModules/src/extras/ippStages.c
===================================================================
--- /branches/pap/psModules/src/extras/ippStages.c	(revision 28498)
+++ /branches/pap/psModules/src/extras/ippStages.c	(revision 28499)
@@ -15,8 +15,12 @@
     } else if (!strcmp(stageString, "chip")) {
         return IPP_STAGE_CHIP;
+    } else if (!strcmp(stageString, "chip_bg")) {
+        return IPP_STAGE_CHIP_BG;
     } else if (!strcmp(stageString, "camera")) {
         return IPP_STAGE_CAMERA;
     } else if (!strcmp(stageString, "warp")) {
         return IPP_STAGE_WARP;
+    } else if (!strcmp(stageString, "warp_bg")) {
+        return IPP_STAGE_WARP_BG;
     } else if (!strcmp(stageString, "fake")) {
         return IPP_STAGE_FAKE;
Index: /branches/pap/psModules/src/extras/ippStages.h
===================================================================
--- /branches/pap/psModules/src/extras/ippStages.h	(revision 28498)
+++ /branches/pap/psModules/src/extras/ippStages.h	(revision 28499)
@@ -13,7 +13,9 @@
     IPP_STAGE_RAW = 0,
     IPP_STAGE_CHIP,
+    IPP_STAGE_CHIP_BG,
     IPP_STAGE_CAMERA,
     IPP_STAGE_FAKE,
     IPP_STAGE_WARP,
+    IPP_STAGE_WARP_BG,
     IPP_STAGE_DIFF,
     IPP_STAGE_STACK,
