diff --git a/Calorimeter/CaloClusterCorrection/CMakeLists.txt b/Calorimeter/CaloClusterCorrection/CMakeLists.txt
index c25ec3234ed0c210110e573d5d757c5802a77c67..fc63dd9030886203357a48b9d6ecb45b54ed731a 100644
--- a/Calorimeter/CaloClusterCorrection/CMakeLists.txt
+++ b/Calorimeter/CaloClusterCorrection/CMakeLists.txt
@@ -28,7 +28,12 @@ atlas_add_test( interpolate_test
                 INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
                 LINK_LIBRARIES ${Boost_LIBRARIES} CaloClusterCorrectionLib )
 
+atlas_add_test( config_test
+                SCRIPT python ${CMAKE_CURRENT_SOURCE_DIR}/test/config_t.py
+                ENVIRONMENT FRONTIER_SERVER=$ENV{FRONTIER_SERVER}
+                LOG_IGNORE_PATTERN "Current filenames|by peeking" )
+
 # Install files from the package:
-atlas_install_python_modules( python/*.py )
+atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 atlas_install_joboptions( share/*.py )
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloClusterBadChannelListCorr.py b/Calorimeter/CaloClusterCorrection/python/CaloClusterBadChannelListCorr.py
index 3bb425f293bbf4acbe15208ca49cd09100aaaf14..1b7b29a733de954b893f312caf1fdfa8e2e1f877 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloClusterBadChannelListCorr.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloClusterBadChannelListCorr.py
@@ -1,12 +1,11 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+from AthenaConfiguration.ComponentFactory import CompFactory
 
 def CaloClusterBadChannelListCorr() :
 
-      from CaloBadChannelTool.CaloBadChannelToolConf import CaloBadChanTool 
-      theCaloBadChannelTool = CaloBadChanTool()
+      theCaloBadChannelTool = CompFactory.CaloBadChanTool() # CaloBadChannelTool
 
-      from CaloClusterCorrection.CaloClusterCorrectionConf import CaloClusterBadChannelList
-      corr = CaloClusterBadChannelList()
-      #ToolSvc += corr
+      corr = CompFactory.CaloClusterBadChannelList() # CaloClusterCorrection
       corr.badChannelTool = theCaloBadChannelTool
       return corr
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloClusterListBadChannel.py b/Calorimeter/CaloClusterCorrection/python/CaloClusterListBadChannel.py
index 7e729068e730832d2cc5382567404e71517f94d6..51882d0820d39958d14388efe2559334cda849c5 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloClusterListBadChannel.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloClusterListBadChannel.py
@@ -1,9 +1,11 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY
+from CaloClusterCorrection.common import makecorr
 
-from CaloClusterCorrection import CaloClusterCorrectionConf 
-cls = CaloClusterCorrectionConf.CaloClusterBadChannelList
+cls = CompFactory.CaloClusterBadChannelList # CaloClusterCorrection
 
 CaloClusterListBadChannel_versions = [
     ['',              cls,
@@ -11,7 +13,8 @@ CaloClusterListBadChannel_versions = [
       CALOCORR_NOPOOL]],
     ]
 
-def make_CaloClusterListBadChannel (corrclass,
+def make_CaloClusterListBadChannel (flags,
+                                    corrclass,
                                     name = None,
                                     suffix = None,
                                     version = None,
@@ -20,7 +23,8 @@ def make_CaloClusterListBadChannel (corrclass,
                                     confclass = None,
                                     **kw):
 
-    return  makecorr(versions= CaloClusterListBadChannel_versions,
+    return  makecorr(flags,
+                     versions= CaloClusterListBadChannel_versions,
                      name = name,
                      basename = 'listBadChannels',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveBad.py b/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveBad.py
index cbae62648d1de657211cb9a052a9816e5e3de16d..ad56df9f3f05a349c3c7f0df71a0246f859330cd 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveBad.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveBad.py
@@ -1,28 +1,32 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 
 # File: CaloClusterCorrection/python/CaloClusterRemoveBad.py
 # Created: July 2010 Hong Ma
 # Purpose: Steering module for bad cluster removal 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
-cls = CaloClusterCorrectionConf.CaloClusterRemoveBad
+cls = CompFactory.CaloClusterRemoveBad # CaloCusterCorrection
 CaloClusterRemoveBad_versions = [
     ['',              cls,
      ['CaloClusterRemoveBad.CaloClusterRemoveBad_parms',
       CALOCORR_NOPOOL]],
     ]
 
-def make_CaloClusterRemoveBad (name = None,
-                                      suffix = None,
-                                      version = None,
-                                      key = CALOCORR_DEFAULT_KEY,
-                                      source = None,
-                                      confclass = None,
-                                      **kw):
-    return makecorr (versions = CaloClusterRemoveBad_versions,
+def make_CaloClusterRemoveBad (flags,
+                               name = None,
+                               suffix = None,
+                               version = None,
+                               key = CALOCORR_DEFAULT_KEY,
+                               source = None,
+                               confclass = None,
+                               **kw):
+    return makecorr (flags,
+                     versions = CaloClusterRemoveBad_versions,
                      name = name,
                      basename = 'removebad',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveDuplicates.py b/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveDuplicates.py
index 9680f3a9cb61ad0d12588752d7b23347eb497264..585a1fae053d4746ae740b32e3e8decb948c8fc1 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveDuplicates.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloClusterRemoveDuplicates.py
@@ -1,28 +1,32 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 
 # File: CaloClusterCorrection/python/CaloClusterRemoveDuplicates.py
 # Created: May, 2008, M. Cooke
 # Purpose: Steering module for duplicate removal tool
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
-cls = CaloClusterCorrectionConf.CaloClusterRemoveDuplicates
+cls = CompFactory.CaloClusterRemoveDuplicates # CaloClusterCorrection
 CaloClusterRemoveDuplicates_versions = [
     ['',              cls,
      ['CaloClusterRemoveDuplicates.CaloClusterRemoveDuplicates_parms',
       CALOCORR_NOPOOL]],
     ]
 
-def make_CaloClusterRemoveDuplicates (name = None,
+def make_CaloClusterRemoveDuplicates (flags,
+                                      name = None,
                                       suffix = None,
                                       version = None,
                                       key = CALOCORR_DEFAULT_KEY,
                                       source = None,
                                       confclass = None,
                                       **kw):
-    return makecorr (versions = CaloClusterRemoveDuplicates_versions,
+    return makecorr (flags,
+                     versions = CaloClusterRemoveDuplicates_versions,
                      name = name,
                      basename = 'removeduplicates',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloComputeSWcellWeights.py b/Calorimeter/CaloClusterCorrection/python/CaloComputeSWcellWeights.py
index a200ac127e1ee626fb3b6306d5f6247be089640e..5b3b314a3ba0448fe00f8bb2ad746fdc17c4fa21 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloComputeSWcellWeights.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloComputeSWcellWeights.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloComputeSWcellWeights.py,v 1.4 2007-10-17 21:05:52 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloComputeSWcellWeights.py
 # Created: Nov 2006, sss
@@ -17,15 +15,17 @@
 # Following this, the layer variables need to be recalculated.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-cls = CaloClusterCorrectionConf.CaloComputeSWcellWeights
+cls = CompFactory.CaloComputeSWcellWeights # CaloClusterCorrection
 CaloComputeSWcellWeights_versions = [
     ['',              cls,
      ['CaloComputeSWcellWeights.CaloComputeSWcellWeights_parms',
@@ -35,6 +35,7 @@ CaloComputeSWcellWeights_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -52,14 +53,16 @@ CaloComputeSWcellWeights_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloComputeSWcellWeights (name = None,
+def make_CaloComputeSWcellWeights (flags,
+                                   name = None,
                                    suffix = None,
                                    version = None,
                                    key = CALOCORR_DEFAULT_KEY,
                                    source = None,
                                    confclass = None,
                                    **kw):
-    return makecorr (versions = CaloComputeSWcellWeights_versions,
+    return makecorr (flags,
+                     versions = CaloComputeSWcellWeights_versions,
                      name = name,
                      basename = 'weightsEM',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration.py
index 7371a5924a2e2a6549f131a9d1df6a20d8ba6b94..0a9d099d5b401f37a3e5c0adc7f5686f46d4a703 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 # File: CaloClusterCorrection/python/CaloSwCalibHitsCalibration.py
@@ -14,15 +14,17 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloSwCalibHitsCalibration
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls = CompFactory.CaloSwCalibHitsCalibration # CaloClusterCorrection
 CaloSwCalibHitsCalibration_versions = [
 
     # 12.0.3 simulation and reconstruction, with ideal (calib0) geometry.
@@ -120,6 +122,7 @@ CaloSwCalibHitsCalibration_versions = [
         
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -137,7 +140,8 @@ CaloSwCalibHitsCalibration_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwCalibHitsCalibration (name = None,
+def make_CaloSwCalibHitsCalibration (flags,
+                                     name = None,
                                      suffix = None,
                                      version = None,
                                      key = CALOCORR_DEFAULT_KEY,
@@ -145,7 +149,8 @@ def make_CaloSwCalibHitsCalibration (name = None,
                                      confclass = None,
                                      **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwCalibHitsCalibration_versions,
+    return makecorr (flags,
+                     versions  = CaloSwCalibHitsCalibration_versions,
                      name      = name,
                      basename  = 'calhits',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v1.py
index e4b3aadd1d1985e6e88198724afac926355d1df2..f36f521d08e23293a4a08d7a982420dd9798adfb 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #######################################################################
 # File: CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v1.py
@@ -27,7 +27,7 @@
 # 5) CaloSWCalHitsEfront_slope_v1_gam
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -1972,7 +1972,7 @@ samplings_depths = [
 [ 2.4625 , 0.0 , 3.4   , 19.525 , 36.25  ],
 [ 2.4825 , 0.0 , 3.475 , 19.925 , 36.875 ]
 
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v2.py
index f97325d16c511e740565dca0adc530a372674d9a..f15c609e49e0d61a42ea96d9339f01dd626f8429 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v2.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -28,7 +28,7 @@
 # 5) CaloSWCalHitsEfront_slope_v2_gam
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -1935,7 +1935,7 @@ samplings_depths = [
 [ 2.4625 , 0.0 , 3.77207 , 15.3194 , 31.8341 ],
 [ 2.4875 , 0.0 , 3.83388 , 15.5645 , 32.2648 ],
 
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5.py
index 4b6b88ca73dbfc565de212484043189a8c7d2411..6181160594f43a5c7c2e4203e8bf3dadc23fd612 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -29,7 +29,7 @@
 # 5) CaloSWCalHitsEfront_slope_v5_gam
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -1938,7 +1938,7 @@ samplings_depths = [
 [ 2.4625 , 0.0 , 3.4   , 19.525 , 36.25  ],
 [ 2.4825 , 0.0 , 3.475 , 19.925 , 36.875 ]
 
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5_1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5_1.py
index f77b5fd2fb49ce419e12c6b2ec5ffbfa53cac70d..f1382945127344dbf2279e550c89ba178188f05c 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5_1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v5_1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -30,7 +30,7 @@
 # 5) CaloSWCalHitsEfront_slope_v5_1_gam
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -1938,7 +1938,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 3.84839   , 15.3758 , 31.5893  ],
 [ 2.4625 , 0.0  , 3.7751    , 15.3528 , 31.7805  ],
 [ 2.4875 , 0.0  , 3.82319   , 15.5724 , 32.3008  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6.py
index 1265c413b84d45b1419270b6577225b2fa31bdf1..6f286f3f046c0924db73847ed5523d25b212b240 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -33,7 +33,7 @@
 # Where YY is "conv" for converted or "unconv" for unconverted
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -2683,7 +2683,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 3.84839   , 15.3758 , 31.5893  ],
 [ 2.4625 , 0.0  , 3.7751    , 15.3528 , 31.7805  ],
 [ 2.4875 , 0.0  , 3.82319   , 15.5724 , 32.3008  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6leakdata.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6leakdata.py
index 5d14ca11c5b1c2e51433e483c46287bc613032be..b578eaf159f6e8c16617d15cf94fd0336d044f72 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6leakdata.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v6leakdata.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -36,7 +36,7 @@
 # Where YY is "conv" for converted or "unconv" for unconverted
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -2686,7 +2686,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 3.84839   , 15.3758 , 31.5893  ],
 [ 2.4625 , 0.0  , 3.7751    , 15.3528 , 31.7805  ],
 [ 2.4875 , 0.0  , 3.82319   , 15.5724 , 32.3008  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8.py
index 36f9a01aa55077d866785dd33da6cab0ec5da694..21018faf63c81bd5b5e91c8beb287f9233703b23 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -37,7 +37,7 @@
 # R. Turra.
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -2736,7 +2736,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 4.5959   , 15.9977 , 32.1175  ],
 [ 2.4625 , 0.0  , 4.68513   , 16.2385 , 32.5042  ],
 [ 2.4875 , 0.0  , 4.7232   , 16.4144 , 33.028  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8leakdata.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8leakdata.py
index f816bf8a48112b999a25a5bc26fb48b127510906..4f78cdfef5edf68a31d60e7689703e544c5318fb 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8leakdata.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v8leakdata.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -41,7 +41,7 @@
 # R. Turra.
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -2739,7 +2739,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 4.5959   , 15.9977 , 32.1175  ],
 [ 2.4625 , 0.0  , 4.68513   , 16.2385 , 32.5042  ],
 [ 2.4875 , 0.0  , 4.7232   , 16.4144 , 33.028  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9.py
index 0cc3c5c5b1800d72d73754f5e49d60fc0b8448ca..d7340559bed906088e45b8eaaa8ba4fbd826924c 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -41,7 +41,7 @@
 # R. Turra.
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -2740,7 +2740,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 4.5959   , 15.9977 , 32.1175  ],
 [ 2.4625 , 0.0  , 4.68513   , 16.2385 , 32.5042  ],
 [ 2.4875 , 0.0  , 4.7232   , 16.4144 , 33.028  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9leakdata.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9leakdata.py
index 03b6e241c2ed6c0d5ba6d6c3d69aa9008ef11ffb..eaa353bfd4da32051266812449453a52f193dcd6 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9leakdata.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCalibHitsCalibration_v9leakdata.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 #######################################################################
@@ -41,7 +41,7 @@
 # R. Turra.
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -2739,7 +2739,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 4.5959   , 15.9977 , 32.1175  ],
 [ 2.4625 , 0.0  , 4.68513   , 16.2385 , 32.5042  ],
 [ 2.4875 , 0.0  , 4.7232   , 16.4144 , 33.028  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon.py b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon.py
index 143987badc56bc80e2589ccb3c80713c853912fb..f599f1d0abf0332f16b0a8355d962ab4e23cc7a2 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwClcon.py,v 1.8 2009-04-19 02:41:06 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwClcon.py
 # Created: Nov 2006, sss
@@ -20,16 +18,18 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls_g3 = CaloClusterCorrectionConf.CaloSwClcon_g3
-cls_v2 = CaloClusterCorrectionConf.CaloSwClcon_v2
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls_g3 = CompFactory.CaloSwClcon_g3 # CaloClusterCorrection
+cls_v2 = CompFactory.CaloSwClcon_v2 # CaloClusterCorrection
 CaloSwClcon_versions = [
 
     # The original G3-based correction, translated from the
@@ -55,6 +55,7 @@ CaloSwClcon_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -72,7 +73,8 @@ CaloSwClcon_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwClcon (name = None,
+def make_CaloSwClcon (flags,
+                      name = None,
                       suffix = None,
                       version = None,
                       key = CALOCORR_DEFAULT_KEY,
@@ -80,7 +82,8 @@ def make_CaloSwClcon (name = None,
                       confclass = None,
                       **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwClcon_versions,
+    return makecorr (flags,
+                     versions  = CaloSwClcon_versions,
                      name      = name,
                      basename  = 'clcon',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2.py
index e7fb313f8b3be0a05a439aed98493bf1499a1516..a4bd7f2810c59156b11808e2d6bc25dafec9fcbb 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwClcon_dc2.py,v 1.3 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwClcon_dc2.py
 # Created: Nov 2006, sss
@@ -17,7 +15,7 @@
 # 
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2new.py b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2new.py
index 258715b0ea499a1ba14fdbc72c1488670b890adc..90004ba47cd6e5e5399a0d31a33c3857c53ef109 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2new.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_dc2new.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwClcon_dc2new.py,v 1.3 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwClcon_dc2new.py
 # Created: Nov 2006, sss
@@ -17,7 +15,7 @@
 # 
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_g3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_g3.py
index 11dd9e2b360567d9259330810cde37a518b613e0..087b65c2e32eca1156532ae4187b2378aa7c7503 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_g3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwClcon_g3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwClcon_g3.py,v 1.3 2009-04-21 21:16:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwClcon_g3.py
 # Created: Nov 2006, sss
@@ -12,10 +10,7 @@
 #
 
 
-import string
-
-
-    # 3x3 cluster size corrections
+# 3x3 cluster size corrections
 qclcon_g3_correction_33 = \
     [ 1.078375, 1.073588, 1.068029, 1.067124, 1.065353, 1.063478,
       1.063487, 1.064091, 1.064620, 1.065535, 1.065928, 1.064441,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwClusterUpdate.py b/Calorimeter/CaloClusterCorrection/python/CaloSwClusterUpdate.py
index 0893dc3743cf96fc0bec871fc3c72d288774b7be..11ba25a19cb5f73cb711d66128ea1dfde53df25f 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwClusterUpdate.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwClusterUpdate.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwClusterUpdate.py,v 1.3 2009-04-25 17:57:00 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwClusterUpdate.py
 # Created: Nov 2006, sss
@@ -15,30 +13,34 @@
 # leaves the total cluster energy unchanged.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-cls = CaloClusterCorrectionConf.CaloClusterUpdate
+cls = CompFactory.CaloClusterUpdate # CaloClusterCorrection
+from CaloClusterCorrection.constants import sw_valid_keys as keys
 CaloSwClusterUpdate_versions = [
     # This version doesn't recalculate the total cluster energy.
     ['dont_update_e', cls,
      ['CaloSwClusterUpdate.CaloSwClusterUpdate_dont_update_e_parms',
-      'caloswcorr_pool', CALOCORR_COOL]],
+      'caloswcorr_pool', CALOCORR_COOL], keys],
 
     # This version does recalculate the total cluster energy.
     ['',              cls,
      ['CaloSwClusterUpdate.CaloSwClusterUpdate_parms',
-      'caloswcorr_pool', CALOCORR_COOL]],
+      'caloswcorr_pool', CALOCORR_COOL], keys],
     ]
 
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -56,14 +58,16 @@ CaloSwClusterUpdate_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwClusterUpdate (name = None,
+def make_CaloSwClusterUpdate (flags,
+                              name = None,
                               suffix = None,
                               version = None,
                               key = CALOCORR_DEFAULT_KEY,
                               source = None,
                               confclass = None,
                               **kw):
-    return makecorr (versions = CaloSwClusterUpdate_versions,
+    return makecorr (flags,
+                     versions = CaloSwClusterUpdate_versions,
                      name = name,
                      basename = 'larupdate',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwCorrections.py b/Calorimeter/CaloClusterCorrection/python/CaloSwCorrections.py
index 189f170d9518b44543f0628e440e7770f3b83613..d3e798b8c1297ef1929de832a6ce769d5a7ab063 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwCorrections.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwCorrections.py
@@ -1,20 +1,19 @@
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwCorrections.py,v 1.40 2009-04-30 20:29:53 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwCorrections.py
 # Created: Nov 2006, sss
 # Purpose: Top-level configuration file for EM cluster corrections.
 #
-# The main entry point here is make_CaloSwCorrections, which returns
+# The main entry point here is make_CaloSwCorrectionsCfg, which returns
+# ComponentAccumulator with
 # a list of correction tools.  It can be used either `le menu' --- selecting
 # a predefined list of correction tools, or `a la carte' --- explicitly
 # specifying the list of tools you want to run.
 #
 # The simplest way of using it is like this:
 #
-#   make_CaloSwCorrections (key)
+#   ca = make_CaloSwCorrectionsCfg (flags, key)
 #
 # Here, `key' is a string that denotes the type of cluster which you
 # are correcting.  It should be something like `ele55' for 5x5 electrons,
@@ -29,7 +28,7 @@
 # By default, the latest version of the corrections appropriate to the
 # geometry being used will be chosen.  You can override this selection
 # by supplying the `version' argument.  It may also be overridden
-# with caloClusterCorrectionFlags.CaloSwWhichCorrection.
+# with Calo.ClusterCorrection.CaloSwWhichCorrection.
 # For the list of known version
 # names, see the variable `CaloSwCorrection_versions' below.
 # In particular, using version `none' turns off the corrections.
@@ -39,7 +38,7 @@
 # the version to be used for individual correction by adding
 # parameters of the form CORRECTION_version.  For example:
 #
-#   make_CaloSwCorrections (key, version='v4', lwc_version='v3')
+#   make_CaloSwCorrectionsCfg (flags ,key, version='v4', lwc_version='v3')
 #
 # uses the `v4' corrections, except that we use version `v3' of the
 # layer weight corrections.  You can also specify CORRECTION_key
@@ -47,7 +46,7 @@
 # and CORRECTION_XXX to override any individual parameter
 # of a correction.  For example:
 #
-#   make_CaloSwCorrections (key, lwc_degree=2)
+#   make_CaloSwCorrectionsCfg (flags, key, lwc_degree=2)
 #
 # makes the full standard set of corrections, except that the interpolation
 # degree for the layer weights correction is changed to 2.
@@ -55,13 +54,13 @@
 # You can explicitly specify a list of corrections to run with the
 # `corrlist' argument.  For example,
 #
-#   make_CaloSwCorrections (key, corrlist=[[layers], [update], [gap]])
+#   make_CaloSwCorrectionsCfg (flags, key, corrlist=[[layers], [update], [gap]])
 #
 # runs only the `layers', `update', and `gap' corrections.  The names
 # used here, like `layers' should be functions defined with this
 # signature:
 #
-#    def layers (cells_name, suffix, version, key, source, **kw):
+#    def layers (flags, cells_name, suffix, version, key, source, **kw):
 #
 # Definitions for all the standard corrections are contained in this file.
 # Note that the names of these functions are what are used to recognize
@@ -81,9 +80,10 @@
 # settings may be specified as following (name, value) tuples
 # in the list.  For example:
 #
-#   make_CaloSwCorrections (key, corrlist=[[layers],
-#                                          [update],
-#                                          [gap, 'v3', ('degree', 2)]])
+#   make_CaloSwCorrectionsCfg (flags,
+#                              key, corrlist=[[layers],
+#                                             [update],
+#                                             [gap, 'v3', ('degree', 2)]])
 #
 # says to use version `v3' of the gap correction, and in addition,
 # to override the interpolation degree to be 2.
@@ -92,27 +92,27 @@
 # list will be augmented so that cells will be weighted to avoid
 # double-counting the energy of cells that are in more than one cluster.
 # This may also be enabled by adding the string `_wt' to the end
-# of the correction version name, or by setting the DoSlidingWindowCellWeights
-# flag.
+# of the correction version name, or by setting the
+# Calo.ClusterCorrections.doSlidingWindowCellWeights flag.
 #
 # Similarly, if the parameter `remdup' is set to True, then the standard
 # correction list will be augmented so that if there are multiple clusters
 # too close together, all but one will be removed.
 # This may also be enabled by adding the string `_remdup' to the end
 # of the correction version name, or by setting the
-# DoSlidingWindowRemoveDuplicates flag.
+# Calo.ClusterCorrection.doSlidingWindowRemoveDuplicates flag.
 #
 # Also, if the parameter `rembad' is set to True, then the standard
 # correction list will be augmented so that clusters deemed to be
 # bad (below an energy threshold) will be removed.
 # This may also be enabled by adding the string `_rembad' to the end
 # of the correction version name, or by setting the
-# DoSlidingWindowRemoveBad flag.
+# Calo.ClusterCorrection.doSlidingWindowRemoveBad flag.
 #
 # There are three ways in which a correction can get configured: from
 # job options, from pool, or from cool.  You can specify which ones
-# to use by adding the `source' argument to make_CaloSwCorrections.
-# This is one of the following (defined in common.py):
+# to use by adding the `source' argument to make_CaloSwCorrectionsCfg.
+# This is one of the following (defined in constants.py):
 #
 #  - CALOCORR_JO: Configure from job options
 #  - CALOCORR_POOL: Configure from a pool file
@@ -123,7 +123,7 @@
 #
 # This parameter may be specified as a list of any of these values; in that
 # case, all the possibilities will be tried in order.  The default is taken
-# from caloClusterCorrectionFlags.DefaultSource
+# from Calo.ClusterCorrection.defaultSource
 # if it hasn't been explicitly set.  The usual setting is to try first
 # cool, then pool, then job options.  (Note that there are a couple
 # corrections which are not saved to pool/cool and can thus only
@@ -136,112 +136,122 @@
 # with a string of the form `MODULE.NAME'.
 #
 
-import sys
-import re
-from CaloClusterCorrection.CaloClusterCorrectionFlags \
-     import caloClusterCorrectionFlags
-from CaloClusterCorrection.CaloComputeSWcellWeights \
-     import make_CaloComputeSWcellWeights
-from CaloClusterCorrection.CaloSwLayers      import make_CaloSwLayers
-from CaloClusterCorrection.CaloSwRfac        import make_CaloSwRfac
-from CaloClusterCorrection.CaloSwEtaoff      import make_CaloSwEtaoff
-from CaloClusterCorrection.CaloSwPhioff      import make_CaloSwPhioff
-from CaloClusterCorrection.CaloSwEtamod      import make_CaloSwEtamod
-from CaloClusterCorrection.CaloSwPhimod      import make_CaloSwPhimod
-from CaloClusterCorrection.CaloSwClusterUpdate \
-     import make_CaloSwClusterUpdate
-from CaloClusterCorrection.CaloSwGap         import make_CaloSwGap
-from CaloClusterCorrection.CaloSwLongWeights import make_CaloSwLongWeights
-from CaloClusterCorrection.CaloSwCalibHitsCalibration import make_CaloSwCalibHitsCalibration
-from CaloClusterCorrection.CaloSwDeadOTX_ps import make_CaloSwDeadOTX_ps
-from CaloClusterCorrection.CaloSwDeadOTX_back import make_CaloSwDeadOTX_back
-from CaloClusterCorrection.CaloSwTransitionRegionsCorr import make_CaloSwTransitionRegionsCorr
-from CaloClusterCorrection.CaloClusterListBadChannel   import make_CaloClusterListBadChannel
-from CaloClusterCorrection.CaloSwClcon       import make_CaloSwClcon
-from CaloClusterCorrection.CaloSwTime        import make_CaloSwTime
-from CaloClusterCorrection.common            import *
-from CaloClusterCorrection.CaloClusterCorrectionFlags \
-     import caloClusterCorrectionFlags
-
-from CaloClusterCorrection.CaloClusterRemoveDuplicates import make_CaloClusterRemoveDuplicates
-from CaloClusterCorrection.CaloClusterRemoveBad import make_CaloClusterRemoveBad
+# Need to be sure that we always get run3 configurables in the imported
+# steering modules.
+from AthenaCommon.Configurable import Configurable
+
+try:
+    _wasRun3 = Configurable.configurableRun3Behavior
+    Configurable.configurableRun3Behavior = True
+
+    import re
+    from CaloClusterCorrection.CaloComputeSWcellWeights \
+         import make_CaloComputeSWcellWeights
+    from CaloClusterCorrection.CaloSwLayers      import make_CaloSwLayers
+    from CaloClusterCorrection.CaloSwRfac        import make_CaloSwRfac
+    from CaloClusterCorrection.CaloSwEtaoff      import make_CaloSwEtaoff
+    from CaloClusterCorrection.CaloSwPhioff      import make_CaloSwPhioff
+    from CaloClusterCorrection.CaloSwEtamod      import make_CaloSwEtamod
+    from CaloClusterCorrection.CaloSwPhimod      import make_CaloSwPhimod
+    from CaloClusterCorrection.CaloSwClusterUpdate \
+         import make_CaloSwClusterUpdate
+    from CaloClusterCorrection.CaloSwGap         import make_CaloSwGap
+    from CaloClusterCorrection.CaloSwLongWeights import make_CaloSwLongWeights
+    from CaloClusterCorrection.CaloSwCalibHitsCalibration import make_CaloSwCalibHitsCalibration
+    from CaloClusterCorrection.CaloSwDeadOTX_ps import make_CaloSwDeadOTX_ps
+    from CaloClusterCorrection.CaloSwDeadOTX_back import make_CaloSwDeadOTX_back
+    from CaloClusterCorrection.CaloSwTransitionRegionsCorr import make_CaloSwTransitionRegionsCorr
+    from CaloClusterCorrection.CaloClusterListBadChannel   import make_CaloClusterListBadChannel
+    from CaloClusterCorrection.CaloSwClcon       import make_CaloSwClcon
+    from CaloClusterCorrection.CaloSwTime        import make_CaloSwTime
+    from CaloClusterCorrection.constants         import \
+         CALOCORR_SW, EMB1, EME1, EMB2, EME2
+    from CaloClusterCorrection.common            import CaloClusterCorrSetup
+    from CaloClusterCorrection.compat            import makeFlags, unpackCA
+    
+    from CaloClusterCorrection.CaloClusterRemoveDuplicates import make_CaloClusterRemoveDuplicates
+    from CaloClusterCorrection.CaloClusterRemoveBad import make_CaloClusterRemoveBad
+
+finally:
+    Configurable.configurableRun3Behavior = _wasRun3
+
 
 ##############################################################################
 # Here we define wrapper functions to set up all of the standard corrections.
 # In the case where a correction has multiple versions for different
 # samplings, we define multiple wrappers here.
 # These are the names to use in the correction list and in the
-# arguments to make_CaloSwCorrection.
+# arguments to make_CaloSwCorrectionCfg.
 #
 
-def layers (cells_name, *args, **kw):
-    return make_CaloSwLayers (None, cells_name=cells_name, *args, **kw)
+def layers (flags, cells_name, *args, **kw):
+    return make_CaloSwLayers (flags, None, cells_name=cells_name, *args, **kw)
 
-def weight (cells_name, *args, **kw):
-    return make_CaloComputeSWcellWeights (None, *args, **kw)
+def weight (flags, cells_name, *args, **kw):
+    return make_CaloComputeSWcellWeights (flags, None, *args, **kw)
 
-def rfac (cells_name, *args, **kw):
-    return make_CaloSwRfac (None, *args, **kw)
+def rfac (flags, cells_name, *args, **kw):
+    return make_CaloSwRfac (flags, None, *args, **kw)
 
-def etaoff_b1 (cells_name, *args, **kw):
-    return make_CaloSwEtaoff (EMB1, None, *args, **kw)
+def etaoff_b1 (flags, cells_name, *args, **kw):
+    return make_CaloSwEtaoff (flags, EMB1, None, *args, **kw)
 
-def etaoff_b2 (cells_name, *args, **kw):
-    return make_CaloSwEtaoff (EMB2, None, *args, **kw)
+def etaoff_b2 (flags, cells_name, *args, **kw):
+    return make_CaloSwEtaoff (flags, EMB2, None, *args, **kw)
 
-def etaoff_e1 (cells_name, *args, **kw):
-    return make_CaloSwEtaoff (EME1, None, *args, **kw)
+def etaoff_e1 (flags, cells_name, *args, **kw):
+    return make_CaloSwEtaoff (flags, EME1, None, *args, **kw)
 
-def etaoff_e2 (cells_name, *args, **kw):
-    return make_CaloSwEtaoff (EME2, None, *args, **kw)
+def etaoff_e2 (flags, cells_name, *args, **kw):
+    return make_CaloSwEtaoff (flags, EME2, None, *args, **kw)
 
-def phioff_b2 (cells_name, *args, **kw):
-    return make_CaloSwPhioff (EMB2, None, *args, **kw)
+def phioff_b2 (flags, cells_name, *args, **kw):
+    return make_CaloSwPhioff (flags, EMB2, None, *args, **kw)
 
-def phioff_e2 (cells_name, *args, **kw):
-    return make_CaloSwPhioff (EME2, None, *args, **kw)
+def phioff_e2 (flags, cells_name, *args, **kw):
+    return make_CaloSwPhioff (flags, EME2, None, *args, **kw)
 
-def phimod (cells_name, *args, **kw):
-    return make_CaloSwPhimod (None, *args, **kw)
+def phimod (flags, cells_name, *args, **kw):
+    return make_CaloSwPhimod (flags, None, *args, **kw)
 
-def etamod (cells_name, *args, **kw):
-    return make_CaloSwEtamod (None, *args, **kw)
+def etamod (flags, cells_name, *args, **kw):
+    return make_CaloSwEtamod (flags, None, *args, **kw)
 
-def update (cells_name, *args, **kw):
-    return make_CaloSwClusterUpdate (None, *args, **kw)
+def update (flags, cells_name, *args, **kw):
+    return make_CaloSwClusterUpdate (flags, None, *args, **kw)
 
-def gap (cells_name, *args, **kw):
-    return make_CaloSwGap (None, cells_name=cells_name, *args, **kw)
+def gap (flags, cells_name, *args, **kw):
+    return make_CaloSwGap (flags, None, cells_name=cells_name, *args, **kw)
 
-def lwc (cells_name, *args, **kw):
-    return make_CaloSwLongWeights (None, *args, **kw)
+def lwc (flags, cells_name, *args, **kw):
+    return make_CaloSwLongWeights (flags, None, *args, **kw)
 
-def calhits (cells_name, *args, **kw):
-    return make_CaloSwCalibHitsCalibration (None, *args, **kw)
+def calhits (flags, cells_name, *args, **kw):
+    return make_CaloSwCalibHitsCalibration (flags, None, *args, **kw)
 
-def trcorr (cells_name, *args, **kw):
-    return make_CaloSwTransitionRegionsCorr (None, *args, **kw)
+def trcorr (flags, cells_name, *args, **kw):
+    return make_CaloSwTransitionRegionsCorr (flags, None, *args, **kw)
 
-def deadOTXps (cells_name, *args, **kw):
-    return make_CaloSwDeadOTX_ps ( None, *args, **kw )
+def deadOTXps (flags, cells_name, *args, **kw):
+    return make_CaloSwDeadOTX_ps (flags, None, *args, **kw )
 
-def deadOTXback (cells_name, *args, **kw):
-    return make_CaloSwDeadOTX_back ( None, *args, **kw )
+def deadOTXback (flags, cells_name, *args, **kw):
+    return make_CaloSwDeadOTX_back (flags, None, *args, **kw )
 
-def clcon (cells_name, *args, **kw):
-    return make_CaloSwClcon (None, *args, **kw)
+def clcon (flags, cells_name, *args, **kw):
+    return make_CaloSwClcon (flags, None, *args, **kw)
 
-def removeduplicates (cells_name, *args, **kw):
-    return make_CaloClusterRemoveDuplicates (None, *args, **kw)
+def removeduplicates (flags, cells_name, *args, **kw):
+    return make_CaloClusterRemoveDuplicates (flags, None, *args, **kw)
 
-def removebad (cells_name, *args, **kw):
-    return make_CaloClusterRemoveBad (None, *args, **kw)
+def removebad (flags, cells_name, *args, **kw):
+    return make_CaloClusterRemoveBad (flags, None, *args, **kw)
 
-def listBadChannel (cells_name, *args, **kw):
-    return make_CaloClusterListBadChannel (CALOCORR_SW, None, *args, **kw)
+def listBadChannel (flags, cells_name, *args, **kw):
+    return make_CaloClusterListBadChannel (flags, CALOCORR_SW, None, *args, **kw)
 
-def time (cells_name, *args, **kw):
-    return make_CaloSwTime (None, *args, **kw)
+def time (flags, cells_name, *args, **kw):
+    return make_CaloSwTime (flags, None, *args, **kw)
 
 
 ##############################################################################
@@ -261,8 +271,8 @@ def _version_match (version, fragment):
 class CaloSwCorrectionsSetup (CaloClusterCorrSetup):
 
     name = "EM sliding-window"
-    version_override_flag = caloClusterCorrectionFlags.CaloSwWhichCorrection
-    correction_generation_flag = caloClusterCorrectionFlags.CaloSwGeneration
+    version_override_flag_name = 'caloSwWhichCorrection'
+    correction_generation_flag_name = 'caloSwGeneration'
     correction_generation_default = "00-02-13"
 
     ##########################################################################
@@ -506,8 +516,8 @@ class CaloSwCorrectionsSetup (CaloClusterCorrSetup):
                     [etamod,    'v4',          502],
                     [time,                     801],
                     [listBadChannel,           820]],
-		      
-	
+                      
+        
         # Calibration hits and transition region corrections updated
         # for release 14.0.0 geometry (ATLAS-CSC-05-00-00).
         # Other corrections still based on 12.
@@ -1107,10 +1117,8 @@ class CaloSwCorrectionsSetup (CaloClusterCorrSetup):
     ##########################################################################
     # Code to handle cell weighting.
     #
-    def make_corrections (self, **kw_in):
-        kw = {}
-        if caloClusterCorrectionFlags.CaloSwCorrectionArgs.statusOn:
-            kw = caloClusterCorrectionFlags.CaloSwCorrectionArgs().copy()
+    def make_corrections (self, flags, **kw_in):
+        kw = flags.Calo.ClusterCorrection.caloSwCorrectionArgs
         kw.update (kw_in)
 
         for kk in ['weighting', 'remdup', 'rembad']:
@@ -1118,32 +1126,34 @@ class CaloSwCorrectionsSetup (CaloClusterCorrSetup):
                 setattr (self, kk, kw[kk])
                 del kw[kk]
         
-        return CaloClusterCorrSetup.make_corrections (self, **kw)
+        return CaloClusterCorrSetup.make_corrections (self, flags, **kw)
 
 
-    def lookup_version (self, version):
+    def lookup_version (self, flags, version, corrclass):
         # Special cases:
         #  If the version name includes `_wt', turn on weighting.
         (self.weighting, version) = _version_match (version, 'wt')
 
-        #  If the version name includes with `_remdup',
+        #  If the version name includes `_remdup',
         #  turn on duplicate removal.
         (self.remdup, version) = _version_match (version, 'remdup')
 
-        #  If the version name includes with `_rembad',
+        #  If the version name includes `_rembad',
         #  turn on bad cluster removal.
         (self.rembad, version) = _version_match (version, 'rembad')
 
         # Now, find the standard list of corrections to use.
         (vcorrlist, version) = CaloClusterCorrSetup.lookup_version (self,
-                                                                    version)
+                                                                    flags,
+                                                                    version,
+                                                                    corrclass)
 
         # Check global flags.
-        if caloClusterCorrectionFlags.DoSlidingWindowCellWeights():
+        if flags.Calo.ClusterCorrection.doSlidingWindowCellWeights:
             self.weighting = 1
-        if caloClusterCorrectionFlags.DoSlidingWindowRemoveDuplicates():
+        if flags.Calo.ClusterCorrection.doSlidingWindowRemoveDuplicates:
             self.remdup = 1
-        if caloClusterCorrectionFlags.DoSlidingWindowRemoveBad():
+        if flags.Calo.ClusterCorrection.doSlidingWindowRemoveBad:
             self.rembad = 1
 
         # If weighting or rembad is turned on, make the appropriate additions
@@ -1154,7 +1164,7 @@ class CaloSwCorrectionsSetup (CaloClusterCorrSetup):
                 if c[0] == layers:
                     ilayers = i
                     break
-            if ilayers != None:
+            if ilayers is not None:
                 vcorrlist = vcorrlist[:]
                 if self.rembad:
                     vcorrlist.insert (ilayers + 1, [removebad, 121])
@@ -1182,11 +1192,12 @@ CaloSwCorrections = CaloSwCorrectionsSetup()
 
 
 ##############################################################################
-# Main entry point to create a list of correction tools.
+# Main entry point to create a list of correction tools
 #
 
 #
-# Create and return a list of correction tools.
+# Create and return a CA of correction tools.
+# FLAGS are the configuration flags.
 # KEY is a string that specifies the correction type.
 # SUFFIX is a string to add to the end of each tool name.
 # VERSION specifies which version of corrections to use.
@@ -1203,17 +1214,19 @@ CaloSwCorrections = CaloSwCorrectionsSetup()
 #
 # For more detailed information, see the comments at the start of this file.
 #
-def make_CaloSwCorrections (key = None,
-                            suffix = '',
-                            version = None,
-                            corrlist = None,
-                            cells_name = None,
-                            source = None,
-                            weighting = False,
-                            remdup = False,
-                            rembad = False,
-                            **kw):
-    return CaloSwCorrections.make_corrections (corrclass = CALOCORR_SW,
+def make_CaloSwCorrectionsCfg (flags,
+                               key = None,
+                               suffix = '',
+                               version = None,
+                               corrlist = None,
+                               cells_name = None,
+                               source = None,
+                               weighting = False,
+                               remdup = False,
+                               rembad = False,
+                               **kw):
+    return CaloSwCorrections.make_corrections (flags,
+                                               corrclass = CALOCORR_SW,
                                                key = key,
                                                suffix = suffix,
                                                version = version,
@@ -1228,8 +1241,58 @@ def make_CaloSwCorrections (key = None,
 
 
 ##############################################################################
-# Compatibility hacks.
+# Backwards compatibility:
+# Main entry point to create a list of correction tools (old configuration)
+#
+
+#
+# Create and return a list of correction tools.
+# KEY is a string that specifies the correction type.
+# SUFFIX is a string to add to the end of each tool name.
+# VERSION specifies which version of corrections to use.
+# CORRLIST can be used to explicitly specify which corrections to run.
+# CELLS_NAME is the SG key to use to find the calorimeter cells,
+# for those corrections that require it.
+# SOURCE specifies the source(s) from which tools are configured.
+# See above for details.
+# None means to use the default.
+# If WEIGHTING is true, then cells are weighted to avoid
+# double-counting energy for cells that are shared between clusters.
+# If REMDUP is true, then in groups of clusters that are very close
+# together, we drop all but one.
+#
+# For more detailed information, see the comments at the start of this file.
 #
+def make_CaloSwCorrections (key = None,
+                            suffix = '',
+                            version = None,
+                            corrlist = None,
+                            cells_name = None,
+                            source = None,
+                            weighting = False,
+                            remdup = False,
+                            rembad = False,
+                            **kw):
+    try:
+        wasRun3 = Configurable.configurableRun3Behavior
+        Configurable.configurableRun3Behavior = True
+        ca = CaloSwCorrections.make_corrections (makeFlags(),
+                                                 corrclass = CALOCORR_SW,
+                                                 key = key,
+                                                 suffix = suffix,
+                                                 version = version,
+                                                 corrlist = corrlist,
+                                                 cells_name = cells_name,
+                                                 source = source,
+                                                 weighting = weighting,
+                                                 remdup = remdup,
+                                                 rembad = rembad,
+                                                 **kw)
+    finally:
+        Configurable.configurableRun3Behavior = wasRun3
+    return unpackCA (ca)
+
+
 
 #
 # Creating an instance of this class gives you something which
@@ -1243,7 +1306,7 @@ class CaloSwCorrections_compat:
         self.version = version
         return
     def set (self, alg, suffix='', corrlist ='ele55', key = None):
-        if type (corrlist) == type (''):
+        if isinstance (corrlist, str):
             key = corrlist
             corrlist = None
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back.py b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back.py
index 0a35839f1f0fe0b67e1d6dbbfb64efca96ab03a4..7c222d07b55e63122342daa51c2a0fcdcd6a9b32 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back.py
@@ -6,15 +6,16 @@
 # Purpose: Steering module for dead OTX correction in the back
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloSwDeadOTX_back
+cls = CompFactory.CaloSwDeadOTX_back # CaloClusterCorrection
 CaloSwDeadOTX_back_versions = [
 #
     ['v1', cls, ['CaloSwDeadOTX_back_v1.' +
@@ -31,6 +32,7 @@ CaloSwDeadOTX_back_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -47,19 +49,21 @@ CaloSwDeadOTX_back_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwDeadOTX_back(name = None,
-                    suffix = None,
-                    version = None,
-                    key = CALOCORR_DEFAULT_KEY,
-                    source = None,
-                    confclass = None,
-                    **kw):
+def make_CaloSwDeadOTX_back(flags,
+                            name = None,
+                            suffix = None,
+                            version = None,
+                            key = CALOCORR_DEFAULT_KEY,
+                            source = None,
+                            confclass = None,
+                            **kw):
 
-    from CaloTools.CaloToolsConf import CaloAffectedTool
+    CaloAffectedTool = CompFactory.CaloAffectedTool # CaloTools
     theAffectedTool = CaloAffectedTool("CaloAffectedForDeadOTX_back")
 
     # Make the tool.
-    return makecorr (versions  = CaloSwDeadOTX_back_versions,
+    return makecorr (flags,
+                     versions  = CaloSwDeadOTX_back_versions,
                      name      = name,
                      basename  = 'deadOTXback',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back_v1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back_v1.py
index 5a1b5c1297ba401c3396a53218c9a41453cdbc62..acb792f18e8cf1e4f532731c00e0a6f91da36710 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back_v1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_back_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 ##########################################################################
@@ -15,7 +15,7 @@
 #
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 
@@ -443,7 +443,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 4.5959   , 15.9977 , 32.1175  ],
 [ 2.4625 , 0.0  , 4.68513   , 16.2385 , 32.5042  ],
 [ 2.4875 , 0.0  , 4.7232   , 16.4144 , 33.028  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps.py b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps.py
index 57c226f9eab54603d53bb16b65e6e4e4c7689439..b6b42570378e0bcad7a9aef66eb471a18b788d65 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps.py
@@ -6,15 +6,16 @@
 # Purpose: Steering module for dead OTX correction in the PS
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloSwDeadOTX_ps
+cls = CompFactory.CaloSwDeadOTX_ps # CaloClusterCorrection
 CaloSwDeadOTX_ps_versions = [
 #
     ['v1', cls, ['CaloSwDeadOTX_ps_v1.' +
@@ -31,6 +32,7 @@ CaloSwDeadOTX_ps_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -47,19 +49,21 @@ CaloSwDeadOTX_ps_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwDeadOTX_ps(name = None,
-                    suffix = None,
-                    version = None,
-                    key = CALOCORR_DEFAULT_KEY,
-                    source = None,
-                    confclass = None,
-                    **kw):
+def make_CaloSwDeadOTX_ps(flags,
+                          name = None,
+                          suffix = None,
+                          version = None,
+                          key = CALOCORR_DEFAULT_KEY,
+                          source = None,
+                          confclass = None,
+                          **kw):
 
-    from CaloTools.CaloToolsConf import CaloAffectedTool
+    CaloAffectedTool = CompFactory.CaloAffectedTool # CaloTools
     theAffectedTool = CaloAffectedTool("CaloAffectedToolForDeadOTX_ps")
 
     # Make the tool.
-    return makecorr (versions     = CaloSwDeadOTX_ps_versions,
+    return makecorr (flags,
+                     versions     = CaloSwDeadOTX_ps_versions,
                      name         = name,
                      basename     = 'deadOTXps',
                      suffix       = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps_v1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps_v1.py
index a5055ffef9315b56470614d8a537825c64847a4d..a82165e7b6e4204d77cbd1f6be1db37df527515e 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps_v1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwDeadOTX_ps_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 ##########################################################################
@@ -16,7 +16,7 @@
 #
 #######################################################################
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 CaloSWCalHitsEfrontOff_ele_NoPS_v1 = [
@@ -1060,7 +1060,7 @@ samplings_depths = [
 [ 2.4375 , 0.0  , 4.5959   , 15.9977 , 32.1175  ],
 [ 2.4625 , 0.0  , 4.68513   , 16.2385 , 32.5042  ],
 [ 2.4875 , 0.0  , 4.7232   , 16.4144 , 33.028  ]
-];
+]
 
 #######################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod.py
index 8a0802a3d4e9a0b05bb16ddc1bc21e8f1331f096..119fe8ff37b83f4f1893eec0f1190bcbb4b85de2 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtamod.py,v 1.9 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtamod.py
 # Created: Nov 2006, sss
@@ -23,16 +21,18 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls_g3 = CaloClusterCorrectionConf.CaloSwEtamod_g3
-cls_v2 = CaloClusterCorrectionConf.CaloSwEtamod_v2
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls_g3 = CompFactory.CaloSwEtamod_g3 # CaloClusterCorrection
+cls_v2 = CompFactory.CaloSwEtamod_v2 # CaloClusterCorrection
 CaloSwEtamod_versions = [
 
     # The original G3-based correction, translated from the
@@ -64,6 +64,7 @@ CaloSwEtamod_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -81,7 +82,8 @@ CaloSwEtamod_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwEtamod (name = None,
+def make_CaloSwEtamod (flags,
+                       name = None,
                        suffix = None,
                        version = None,
                        key = CALOCORR_DEFAULT_KEY,
@@ -89,7 +91,8 @@ def make_CaloSwEtamod (name = None,
                        confclass = None,
                        **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwEtamod_versions,
+    return makecorr (flags,
+                     versions  = CaloSwEtamod_versions,
                      name      = name,
                      basename  = 'etamod',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v2.py
index 7ad1d86fd73a99e6981fd974bba096f2c4b0dd82..d1186027f6e79c4d3febafa7103fd10a393c8cfe 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v2.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtamod_v2.py,v 1.1 2006-11-14 14:51:28 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtamod_v2.py
 # Created: Nov 2006, sss
@@ -26,9 +24,9 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 from AthenaCommon.SystemOfUnits import GeV
-from CaloClusterCorrection.CaloSwEtaphimod_v2_rfac import *
+from CaloClusterCorrection.CaloSwEtaphimod_v2_rfac import CaloSwEtaphimod_v2_rfac
 
 
 # Energies at which corrections were tabulated.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v4.py
index adf235c13beb4eb07576e179fb4dbe7df481dee7..29895952bcccbf06e0cabda5afe7c95767fb6762 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtamod_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtamod_v4.py,v 1.1 2006-11-17 16:46:56 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtamod_v4.py
 # Created: Nov 2006, sss
@@ -15,7 +13,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff.py
index 650df39bbb22f41d0820e86c6fd5e823eb6fb707..67485251cdddd2e9adb00110534f64893e9ab2e8 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff.py,v 1.10 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff.py
 # Created: Nov 2006, sss
@@ -20,20 +18,23 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW, \
+     EMB1, EME1, EMB2, EME2
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls_g3 = {EMB1 : CaloClusterCorrectionConf.CaloSwEta1b_g3,
-          EMB2 : CaloClusterCorrectionConf.CaloSwEta2b_g3,
-          EME1 : CaloClusterCorrectionConf.CaloSwEta1e_g3,
-          EME2 : CaloClusterCorrectionConf.CaloSwEta2e_g3}
-cls_v2 = CaloClusterCorrectionConf.CaloSwEtaoff_v2
-cls_v3 = CaloClusterCorrectionConf.CaloSwEtaoff_v3
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls_g3 = {EMB1 : CompFactory.CaloSwEta1b_g3,  # CaloClusterCorrection
+          EMB2 : CompFactory.CaloSwEta2b_g3,  # CaloClusterCorrection
+          EME1 : CompFactory.CaloSwEta1e_g3,  # CaloClusterCorrection
+          EME2 : CompFactory.CaloSwEta2e_g3}  # CaloClusterCorrection
+cls_v2 = CompFactory.CaloSwEtaoff_v2  # CaloClusterCorrection
+cls_v3 = CompFactory.CaloSwEtaoff_v3  # CaloClusterCorrection
 CaloSwEtaoff_versions = [
 
     # The original G3-based correction, translated from the
@@ -84,6 +85,7 @@ CaloSwEtaoff_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  SAMPLING is the calorimeter sampling (EMB1, EMB2, EME1, EME2) to which
 #   this correction will be applied.
 #  NAME is the base name for this tool.  If defaulted, a name will
@@ -103,7 +105,8 @@ CaloSwEtaoff_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwEtaoff (sampling,
+def make_CaloSwEtaoff (flags,
+                       sampling,
                        name = None,
                        suffix = None,
                        version = None,
@@ -112,7 +115,8 @@ def make_CaloSwEtaoff (sampling,
                        confclass = None,
                        **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwEtaoff_versions,
+    return makecorr (flags,
+                     versions  = CaloSwEtaoff_versions,
                      name      = name,
                      basename  = 'etaoff',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_g3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_g3.py
index 2c5f9567e6d08e57085aaa6d38bead23156a1d41..b279a77156fffe0dc46891542430ab910002b95e 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_g3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_g3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff_g3.py,v 1.3 2009-04-19 02:41:06 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff_g3.py
 # Created: Nov 2006, sss
@@ -12,7 +10,9 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB1, CALOCORR_EMB2, CALOCORR_EME1, CALOCORR_EME2, \
+     EMB1, EME1, EMB2, EME2
 
 
 #############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v2.py
index c74927e64dac7fa41b80da8466623b5bf8f583ff..e32c4679c69d1bf44e11c39d7bb28d1666396620 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v2.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff_v2.py,v 1.1 2006-11-10 03:47:26 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff_v2.py
 # Created: Nov 2006, sss
@@ -16,7 +14,9 @@
 # See CaloSwEtaoff_v2.h for more details.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB1, CALOCORR_EMB2, CALOCORR_EME1, CALOCORR_EME2, \
+     EMB1, EME1, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v3.py
index 9ecc4cf286d6fe1e3caf84f9c8d3eefc54c22530..31d3887b147f87b6ba4d7ace304caeb7b9da96f1 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff_v3.py,v 1.5 2006-11-10 03:47:26 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff_v3.py
 # Created: Nov 2006, sss
@@ -15,7 +13,9 @@
 # See CaloSwEtaoff_v3.h for more details.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB1, CALOCORR_EMB2, CALOCORR_EME1, CALOCORR_EME2, \
+     EMB1, EME1, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 ###############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4.py
index ea8f17975619389fcc0930a10d5f78f538d3f13c..e831829c977bf2061507a1577fe6b358118c8902 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff_v4.py,v 1.1 2006-11-10 03:47:26 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff_v4.py
 # Created: Nov 2006, sss
@@ -15,7 +13,9 @@
 # See CaloSwEtaoff_v3.h for more details.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB1, CALOCORR_EMB2, CALOCORR_EME1, CALOCORR_EME2, \
+     EMB1, EME1, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 ###############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4_1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4_1.py
index 10fcd874ed98775b0613e311a0e9a7c2c403031f..0da014c6b12b7ded1166a21fd2375458c37471ce 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4_1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v4_1.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff_v4_1.py,v 1.2 2007-02-01 22:20:54 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff_v4_1.py
 # Created: Jan 2007, sss
@@ -20,7 +18,9 @@
 # See CaloSwEtaoff_v3.h for more details.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB1, CALOCORR_EMB2, CALOCORR_EME1, CALOCORR_EME2, \
+     EMB1, EME1, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 ###############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v5.py
index 9dcd7e3e4bb87eefa94687c054053113bf935c5e..e0069fe9b30cb13ba8d856470bc23bcb16f5dccd 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaoff_v5.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaoff_v5.py 579330 2014-01-21 12:59:55Z ehill $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaoff_v5.py
 # Created: November 19 2013, Ewan Hill
@@ -19,7 +17,9 @@
 # See CaloSwEtaoff_v3.h for more details.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB1, CALOCORR_EMB2, CALOCORR_EME1, CALOCORR_EME2, \
+     EMB1, EME1, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 ###############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaphimod_v2_rfac.py b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaphimod_v2_rfac.py
index c832c600aca2b3df86a68e5f59f6efffe03b5c52..132d7f0820ade5d9a4341f0fa3b7b56440926da3 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwEtaphimod_v2_rfac.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwEtaphimod_v2_rfac.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwEtaphimod_v2_rfac.py,v 1.1 2006-11-14 14:51:28 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwEtaphimod_v2_rfac.py
 # Created: Nov 2006, sss
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwGap.py b/Calorimeter/CaloClusterCorrection/python/CaloSwGap.py
index afce2701df0c6556345b68c30481628135317437..2fcf981012f667a30b484df1281e0eb776d9c02a 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwGap.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwGap.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwGap.py,v 1.7 2007-10-17 21:05:52 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwGap.py
 # Created: Nov 2006, sss
@@ -19,17 +17,19 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls_g3 = CaloClusterCorrectionConf.CaloSwGap_g3
-cls_v2 = CaloClusterCorrectionConf.CaloSwGap_v2
-cls_v3 = CaloClusterCorrectionConf.CaloSwGap_v3
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls_g3 = CompFactory.CaloSwGap_g3  # CaloClusterCorrection
+cls_v2 = CompFactory.CaloSwGap_v2  # CaloClusterCorrection
+cls_v3 = CompFactory.CaloSwGap_v3  # CaloClusterCorrection
 CaloSwGap_versions = [
     # The original G3-based gap correction, translated from the
     # original fortran version.
@@ -75,6 +75,7 @@ CaloSwGap_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -95,7 +96,8 @@ CaloSwGap_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwGap (name = None,
+def make_CaloSwGap (flags,
+                    name = None,
                     suffix = None,
                     version = None,
                     key = CALOCORR_DEFAULT_KEY,
@@ -104,11 +106,12 @@ def make_CaloSwGap (name = None,
                     cells_name = None,
                     **kw):
 
-    if cells_name != None:
+    if cells_name is not None:
         kw['cells_name'] = cells_name
 
     # Make the tool.
-    return makecorr (versions  = CaloSwGap_versions,
+    return makecorr (flags,
+                     versions  = CaloSwGap_versions,
                      name      = name,
                      basename  = 'gap',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v2.py
index 1c4f01c05c0d520c2f47df9145fb9d3c44b208ef..7ae26c94b3fbf62b2ee6050fa937de08444bff9d 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v2.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwGap_v2.py,v 1.2 2006-11-16 07:07:45 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwGap_v2.py
 # Created: Nov 2006, sss
@@ -112,7 +110,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 
 
 #############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v3.py
index cd9f809294d1d2c88876ec6d4c298bad239512f0..bf6d8f7058fad1703a9b1aa8aeb12fb6449aefff 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwGap_v3.py,v 1.3 2006-11-10 03:47:27 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwGap_v3.py
 # Created: Nov 2006, sss
@@ -21,7 +19,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 
 #############################################################################
 # Gap energy correction for versions 12.x.x and later
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v4.py
index b28383216dd54db654404b067105e6c9e6571ff6..38dd18bcf0e388d62b6547c830ec5b74c9608947 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwGap_v4.py,v 1.1 2006-11-10 03:47:27 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwGap_v4.py
 # Created: Nov 2006, sss
@@ -13,7 +11,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 
 #############################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v5.py
index ef4c8af6daae3c957f4fa40adf6b999fcb626dc8..f43d9fd8b93291864fef796a092a0c02ca02d31a 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v5.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwGap_v5.py,v 1.1 2012-03-03 laplace Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwGap_v5.py
 # Created: March 2012, SL
@@ -18,7 +16,7 @@
 # - for now, use the electron corrections for the photons as well
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #############################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v6.py b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v6.py
index bafca69d52f7baefb09920ef0b299b58a397de9f..773b7b05d0fb1ae0d747863733388aa6fe780911 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v6.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwGap_v6.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwGap_v6.py,v 1.1 2012-03-03 laplace Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwGap_v6.py
 # Created: March 2012, SL
@@ -20,7 +18,7 @@
 #                         "bad phi" regions with TG3 cells missing
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #############################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLayers.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLayers.py
index 2cd29dfdad21fa2c55d4a48cf24e529748aed98c..744e67b20dc05c1b9eaffbcd78de32764cf40299 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLayers.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLayers.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwLayers.py,v 1.7 2009-03-16 12:28:40 lcarmina Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwLayers.py
 # Created: Nov 2006, sss
@@ -24,15 +22,17 @@
 # are recalculated based on these cells.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 import string
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-cls = CaloClusterCorrectionConf.CaloFillRectangularCluster
+cls = CompFactory.CaloFillRectangularCluster # CaloClusterCorrection
 CaloSwLayers_versions = [
     ['wt', cls, ['CaloSwLayers.CaloSwLayersWt_parms', CALOCORR_NOPOOL]],
     ['',   cls, ['CaloSwLayers.CaloSwLayers_parms',   CALOCORR_NOPOOL]],
@@ -41,6 +41,7 @@ CaloSwLayers_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -61,7 +62,8 @@ CaloSwLayers_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwLayers (name = None,
+def make_CaloSwLayers (flags,
+                       name = None,
                        suffix = None,
                        version = None,
                        key = CALOCORR_DEFAULT_KEY,
@@ -70,10 +72,11 @@ def make_CaloSwLayers (name = None,
                        cells_name = None,
                        **kw):
 
-    if cells_name != None:
+    if cells_name is not None:
         kw['cells_name'] = cells_name
 
-    return makecorr (versions = CaloSwLayers_versions,
+    return makecorr (flags,
+                     versions = CaloSwLayers_versions,
                      name = name,
                      basename = 'layers',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights.py
index 443981133b88c3e27589ce7574212f7e1a8e3dcb..652b51e01b250311d9161d13429a5177dd6817d7 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwLongWeights.py,v 1.10 2009-04-22 17:26:22 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwLongWeights.py
 # Created: Nov 2006, sss
@@ -24,15 +22,17 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloSwLongWeights
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls = CompFactory.CaloSwLongWeights # CaloClusterCorrection
 CaloSwLongWeights_versions = [
 
     # From SP and KL.  The original version.
@@ -93,13 +93,14 @@ CaloSwLongWeights_versions = [
     ['atlfast_v1', cls,
      ['CaloSwLongWeights_atlfast_v1.CaloSwLongWeights_atlfast_v1_parms',
       'caloswcorr_pool', CALOCORR_COOL], keys],
-	  		  
+                          
 
     ]
 
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -117,7 +118,8 @@ CaloSwLongWeights_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwLongWeights (name = None,
+def make_CaloSwLongWeights (flags,
+                            name = None,
                             suffix = None,
                             version = None,
                             key = CALOCORR_DEFAULT_KEY,
@@ -125,7 +127,8 @@ def make_CaloSwLongWeights (name = None,
                             confclass = None,
                             **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwLongWeights_versions,
+    return makecorr (flags,
+                     versions  = CaloSwLongWeights_versions,
                      name      = name,
                      basename  = 'lwc',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_904.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_904.py
index 3b505a08bd46fa148668699d8cdd3f2c3870ee17..37507dd56811d5cac893e0106a92f0a7f8460728 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_904.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_904.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwLongWeights_904.py,v 1.1 2006-11-10 03:47:27 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwLongWeights_904.py
 # Created: Nov 2006, sss
@@ -12,7 +10,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 # Stathes's weights from 9.0.4 MC, 5x5 cluster size.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_atlfast_v1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_atlfast_v1.py
index 6b64413642f55e2beec9b548a8d102b8394c3f14..2a9dcf1ade6b329a03f208751c534b0aa4a7a0b6 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_atlfast_v1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_atlfast_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 # File: CaloClusterCorrection/python/CaloSwLongWeights_atlfast_v1.py
@@ -10,7 +10,7 @@
 # 
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 # 5x5 cluster size electrons.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_old.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_old.py
index 9705fdb4edc2606f9139ff20b06588c02faae599..e899b20f71817cce1b72290f212f7de2e800a1d3 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_old.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_old.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwLongWeights_old.py,v 1.3 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwLongWeights_old.py
 # Created: Nov 2006, sss
@@ -21,7 +19,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 # The old layer weights corrections, that were used in release 9 + 10.0.0.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_pi0_v1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_pi0_v1.py
index 392bc7b3a13fecfd76273d2d7a606bea4a268e64..64ad8ce4d8dbb8e137ee71e8a5bace666c950c6b 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_pi0_v1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_pi0_v1.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # File: CaloClusterCorrection/python/CaloSwLongWeights_pi0v1.py
 # Created:  Feb 2010  GU
@@ -8,7 +8,7 @@
 #  should be applied to low energy 3x5 seeded by EM topo
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 #######################################################################
 #######################################################################
 # 3x5 cluster size photons.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v3.py
index 1d6955eacfe5dbcf68ffe07e0143f52971ccd9fd..dff4e2a208b2115de17092be7d9ca3cf394be978 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwLongWeights_v3.py,v 1.2 2006-11-10 03:47:27 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwLongWeights_v3.py
 # Created: Nov 2006, sss
@@ -21,7 +19,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 # 5x5 cluster size electrons.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v4.py
index f4b9014f933a86cade70ac813ac29e180898f838..5a811433753638e4274d3dbab45838c94c1b94a5 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwLongWeights_v4.py,v 1.3 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwLongWeights_v3.py
 # Created: Nov 2006, sss
@@ -18,7 +16,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 # 5x5 cluster size electrons.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v5.py
index 01827c1d3e5f752657c289051090df928deba03d..b5a6d98317959474a2801b8fd1e6fe3a3dbe5e28 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v5.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # File: CaloClusterCorrection/python/CaloSwLongWeights_v5.py
 # Created: July 2008, NK, SP
@@ -7,7 +7,7 @@
 # These corrections were derived by Nicolas Kerschen and Stathes Paganis
 # The geometry is ATLAS-CSC-05-00-00
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #######################################################################
 # 5x5 cluster size electrons.
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v6.py b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v6.py
index 8c3979d08824818c2575be966840be6941e00512..7e13a7f0a79f1163bd93ae938d74ed4dcbc8e4a1 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v6.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwLongWeights_v6.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # File: CaloClusterCorrection/python/CaloSwLongWeights_v6.py
 # Created: July 2008, NK, SP
@@ -8,7 +8,7 @@
 # The geometry is ATLAS-CSC-05-00-00
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 #######################################################################
 # 5x5 cluster size electrons.
 CaloSwLongWeights_v6_ele55 = [
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod.py
index b2db0c0380677059f1567caf9857f2443503244a..d446d273b895aa4e7e9c28b26ba56c91a0573ad6 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhimod.py,v 1.8 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhimod.py
 # Created: Nov 2006, sss
@@ -42,16 +40,18 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls_g3 = CaloClusterCorrectionConf.CaloSwPhimod_g3
-cls_v2 = CaloClusterCorrectionConf.CaloSwPhimod_v2
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls_g3 = CompFactory.CaloSwPhimod_g3  # CaloClusterCorrection
+cls_v2 = CompFactory.CaloSwPhimod_v2  # CaloClusterCorrection
 CaloSwPhimod_versions = [
 
     # The original G3-based correction, translated from the
@@ -88,6 +88,7 @@ CaloSwPhimod_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -105,7 +106,8 @@ CaloSwPhimod_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwPhimod (name = None,
+def make_CaloSwPhimod (flags,
+                       name = None,
                        suffix = None,
                        version = None,
                        key = CALOCORR_DEFAULT_KEY,
@@ -113,7 +115,8 @@ def make_CaloSwPhimod (name = None,
                        confclass = None,
                        **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwPhimod_versions,
+    return makecorr (flags,
+                     versions  = CaloSwPhimod_versions,
                      name      = name,
                      basename  = 'phimod',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v2.py
index 7dec6e6eec26c87ef7b8e0b26e278ba82099f1fa..16a921d17cb893fdd5aad3d4b4f7fc2936c7fedb 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v2.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhimod_v2.py,v 1.1 2006-11-14 14:51:28 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhimod_v2.py
 # Created: Nov 2006, sss
@@ -26,9 +24,9 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 from AthenaCommon.SystemOfUnits import GeV
-from CaloClusterCorrection.CaloSwEtaphimod_v2_rfac import *
+from CaloClusterCorrection.CaloSwEtaphimod_v2_rfac import CaloSwEtaphimod_v2_rfac
 
 # Energies at which corrections were tabulated.
 CaloSw_sample_energies = [50*GeV, 100*GeV, 200*GeV]
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4.py
index cca1cf1101477f9939ff8ad8d00d3fb28d17c2e0..3733358c6eadc2592d575e03b4d84627e5a23ce9 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhimod_v4.py,v 1.1 2006-11-20 03:18:40 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhimod_v4.py
 # Created: Nov 2006, sss
@@ -15,7 +13,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4data.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4data.py
index 9f878db6b1cce56cd07666b5b28f5a23051a50a0..e3af7d150598454f24ef9d72f544e66c74cd571d 100644
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4data.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhimod_v4data.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id$
 #
 # File: CaloClusterCorrection/python/CaloSwPhimod_v4_data.py
 # Created: Sep 2010, sss
@@ -20,7 +18,6 @@
 # this correction identical under a phi -> -phi transformation.
 #
 
-from CaloClusterCorrection.common import *
 from CaloClusterCorrection.CaloSwPhimod_v4 import CaloSwPhimod_v4_parms
 
 
@@ -39,6 +36,7 @@ def _flip_phi (corr):
     
 def _copy_parms (src, dst):
     for (k, v) in src.__dict__.items():
+        if k[0] == '_': continue
         if k == 'correction':
             v = _flip_phi (v)
         setattr (dst, k, v)
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff.py
index 325394b1d7410d1b2850ed3a45df591ada04fb12..f24a627febbb2271ff7a518f341f2136e7f9c40f 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhioff.py,v 1.7 2007-10-17 21:05:52 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff.py
 # Created: Nov 2006, sss
@@ -17,15 +15,17 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloSwPhioff_v2
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls = CompFactory.CaloSwPhioff_v2  # CaloClusterCorrection
 CaloSwPhioff_versions = [
 
     # The original G3-based correction, translated from the
@@ -72,6 +72,7 @@ CaloSwPhioff_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  SAMPLING is the calorimeter sampling (EMB1, EMB2, EME1, EME2) to which
 #   this correction will be applied.
 #  NAME is the base name for this tool.  If defaulted, a name will
@@ -91,7 +92,8 @@ CaloSwPhioff_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwPhioff (sampling,
+def make_CaloSwPhioff (flags,
+                       sampling,
                        name = None,
                        suffix = None,
                        version = None,
@@ -100,7 +102,8 @@ def make_CaloSwPhioff (sampling,
                        confclass = None,
                        **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwPhioff_versions,
+    return makecorr (flags,
+                     versions  = CaloSwPhioff_versions,
                      name      = name,
                      basename  = 'phioff',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_g3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_g3.py
index 75dbd1e9fdb18e41337599451abb28ee45b46e88..927496acc0f586e9722132e72893e6425f2a0a29 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_g3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_g3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhioff_g3.py,v 1.2 2006-11-16 07:07:45 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff_g3.py
 # Created: Nov 2006, sss
@@ -12,7 +10,8 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB2, CALOCORR_EME2, EMB2, EME2
 
 
 #############################################################################
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v2.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v2.py
index f7e7d1a7e41907cdce7779ecc889a7759a4e08fa..8e6439c3a03ebe89f8cf46cdd01a2ad52d33e535 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v2.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v2.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhioff_v2.py,v 1.2 2006-11-16 07:07:45 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff_v2.py
 # Created: Nov 2006, sss
@@ -14,7 +12,8 @@
 # This was added in LArClusterRec-02-05-12, in 8.6.0.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB2, CALOCORR_EME2, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 import math
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v3.py
index 6808861c5923e45c25869e8288c7d7a35a42f422..ae801d6a27ae7272255f619c6bdd62f73de7d425 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhioff_v3.py,v 1.6 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff_v3.py
 # Created: Nov 2006, sss
@@ -13,8 +11,8 @@
 # This correction was in CaloClusterCorrection-00-02-58, in 12.0.3.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB2, CALOCORR_EME2, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4.py
index 7d8984e038cc983bdb0dff1920713924dc596ea4..41035a94fc3213ae605a91400223d7e2eb764077 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhioff_v4.py,v 1.2 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff_v4.py
 # Created: Nov 2006, sss
@@ -13,8 +11,8 @@
 # This correction was in CaloClusterCorrection-xxx, in 12.0.4.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB2, CALOCORR_EME2, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4data.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4data.py
index 9549b451043bef39ca05b69cffd27e4f5f355f72..7e79a85ead512b5d199277e26ebf94704c31d87f 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4data.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v4data.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id$
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff_v4_data.py
 # Created: Sep 2010, sss
@@ -14,7 +12,7 @@
 # in the barrel.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import EME2, EMB2
 from CaloClusterCorrection.CaloSwPhioff_v4 import \
      CaloSwPhioff_v4_b2_parms, CaloSwPhioff_v4_e2_parms
 
@@ -33,6 +31,7 @@ def _flip_phi (corr):
     
 def _copy_parms (src, dst):
     for (k, v) in src.__dict__.items():
+        if k[0] == '_': continue
         if k == 'correction':
             v = _flip_phi (v)
         setattr (dst, k, v)
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5.py
index 8998397e10ba356186f4909c1315b4d4f2468e9b..52cb5548bf1a4d284a8a7270c30a6a9f482cb05a 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwPhioff_v5.py,v 1.2 2013-11-30 ehill
 #
 # File: CaloClusterCorrection/python/CaloSwPhioff_v5.py
 # Created: Nov 2013, Ewan Hill
@@ -13,8 +11,8 @@
 # This correction was in CaloClusterCorrection-xxx, in ??????.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_EMB2, CALOCORR_EME2, EMB2, EME2
 from AthenaCommon.SystemOfUnits import GeV
 
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5data.py b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5data.py
index 6a11bc7ed176f060299ad65120e58fe5e0f78e45..82a3bd5650730b582a54b128a87a0957369d38ce 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5data.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwPhioff_v5data.py
@@ -12,7 +12,7 @@
 # in the barrel.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import EMB2, EME2
 from CaloClusterCorrection.CaloSwPhioff_v5 import \
      CaloSwPhioff_v5_b2_parms, CaloSwPhioff_v5_e2_parms
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac.py b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac.py
index cfa848526e1a56944905b51d510516dc1cd6a967..eda1ca2c054368461c8910cca6ef49ecde5f5948 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwRfac.py,v 1.8 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwRfac.py
 # Created: Nov 2006, sss
@@ -28,15 +26,17 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloScaleCluster
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls = CompFactory.CaloScaleCluster  # CaloClusterCorrection
 CaloSwRfac_versions = [
     # From 11.0.41 simulation and 12.0.0 reconstruction.
     # In CaloClusterCorrection-00-02-38, 12.0.0.
@@ -64,6 +64,7 @@ CaloSwRfac_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -81,7 +82,8 @@ CaloSwRfac_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwRfac (name = None,
+def make_CaloSwRfac (flags,
+                     name = None,
                      suffix = None,
                      version = None,
                      key = CALOCORR_DEFAULT_KEY,
@@ -89,7 +91,8 @@ def make_CaloSwRfac (name = None,
                      confclass = None,
                      **kw):
     # Make the tool.
-    return makecorr (versions  = CaloSwRfac_versions,
+    return makecorr (flags,
+                     versions  = CaloSwRfac_versions,
                      name      = name,
                      basename  = 'rfac',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v3.py b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v3.py
index 0b7b13309170a8f3a15081e5c69b68e2a1641707..acf607369daccbc6023089bbba5a2add01157da5 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v3.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v3.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwRfac_v3.py,v 1.4 2006-11-10 03:47:27 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwRfac_v3.py
 # Created: Nov 2006, sss
@@ -11,7 +9,7 @@
 # E=100 GeV electrons/photons were used.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #
 # The correction is tabulated as a function of eta separately for
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v4.py b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v4.py
index 16279a5cac739e6b5d097a3184c636463c026ad5..24656e0bb1c14a6b3941d841dc62b21dcb88e452 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v4.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v4.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwRfac_v4.py,v 1.1 2006-11-10 03:47:27 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwRfac_v4.py
 # Created: Nov 2006, sss
@@ -14,7 +12,7 @@
 # It was added in CaloClusterCorrection-00-02-61, in 12.0.4.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #
 # The correction is tabulated as a function of eta separately for
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v5.py
index b0013c0185d8cdf6aa0d77fd7f0d89becb129d8d..796aa943cb3201df9185855f1187076790b0f4b7 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwRfac_v5.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwRfac_v5.py 579330 2014-01-21 12:59:55Z ehill $
 #
 # File: CaloClusterCorrection/python/CaloSwRfac_v5.py
 # Created: Nov 2013, Ewan Hill
@@ -15,7 +13,7 @@
 # It was added in CaloClusterCorrection-00-??-??, in ??.?.?.
 #
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COMBINED2
 
 #
 # The correction is tabulated as a function of eta separately for
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwTime.py b/Calorimeter/CaloClusterCorrection/python/CaloSwTime.py
index 2fb6ea86f63007c09723d84daf977c4f4cfa27ca..5e309587fff22fd8d079687f8ac6e1a624e7dc63 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwTime.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwTime.py
@@ -1,28 +1,32 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 
 # File: CaloClusterCorrection/python/CaloSwTime.py
 # Created: May, 2008, M. Cooke
 # Purpose: Steering module for duplicate removal tool
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
-cls = CaloClusterCorrectionConf.CaloSwTime
+cls = CompFactory.CaloSwTime  # CaloClusterCorrection
 CaloSwTime_versions = [
     ['',              cls,
      ['CaloSwTime.CaloSwTime_parms',
       CALOCORR_NOPOOL]],
     ]
 
-def make_CaloSwTime (name = None,
-                                      suffix = None,
-                                      version = None,
-                                      key = CALOCORR_DEFAULT_KEY,
-                                      source = None,
-                                      confclass = None,
-                                      **kw):
-    return makecorr (versions = CaloSwTime_versions,
+def make_CaloSwTime (flags,
+                     name = None,
+                     suffix = None,
+                     version = None,
+                     key = CALOCORR_DEFAULT_KEY,
+                     source = None,
+                     confclass = None,
+                     **kw):
+    return makecorr (flags,
+                     versions = CaloSwTime_versions,
                      name = name,
                      basename = 'time',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr.py b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr.py
index afffaa75cb12ee635c052037ecdd669fb0969ed4..ee4c86e9272ee79e23b5bb540d84380a60c02487 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwTransitionRegionsCorr.py,v 1.5 2009-04-22 17:26:22 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwTransitionRegionsCorr.py
 # Created: Dec, 2007, L. Carminati
@@ -15,15 +13,17 @@
 #
 
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_SW
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import sw_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloSwTransitionRegionsCorr
+from CaloClusterCorrection.constants import sw_valid_keys as keys
+cls = CompFactory.CaloSwTransitionRegionsCorr  # CaloClusterCorrection
 CaloSwTransitionRegionsCorr_versions = [
 
     # 12.0.3 simulation and reconstruction, with ideal (calib0) geometry.
@@ -45,6 +45,7 @@ CaloSwTransitionRegionsCorr_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -61,16 +62,18 @@ CaloSwTransitionRegionsCorr_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloSwTransitionRegionsCorr (name = None,
-                    suffix = None,
-                    version = None,
-                    key = CALOCORR_DEFAULT_KEY,
-                    source = None,
-                    confclass = None,
-                    **kw):
+def make_CaloSwTransitionRegionsCorr (flags,
+                                      name = None,
+                                      suffix = None,
+                                      version = None,
+                                      key = CALOCORR_DEFAULT_KEY,
+                                      source = None,
+                                      confclass = None,
+                                      **kw):
 
     # Make the tool.
-    return makecorr (versions  = CaloSwTransitionRegionsCorr_versions,
+    return makecorr (flags,
+                     versions  = CaloSwTransitionRegionsCorr_versions,
                      name      = name,
                      basename  = 'trcorr',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v1.py
index 8d68c830cb46b6ccb5e3cb0e726151de6aefbfaa..8affb74ab1e6da787605550b29714b930e51bf47 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v1.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwTransitionRegionsCorr_v1.py,v 1.2 2008-01-25 04:14:21 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwTransitionRegionCorr_v1.py
 # Created: Dec, 2007, L. Carminati
@@ -9,7 +7,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 
 #############################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5.py b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5.py
index b27bcd795dae60c490d0fb25fb4b992d94884762..be28e9a6e2dc23b8e02a1fed93cc0b73c158847b 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwTransitionRegionsCorr_v5.py,v 1.2 2008-07-29 15:45:02 lcarmina Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwTransitionRegionCorr_v5.py
 # Created: Dec, 2007, L. Carminati
@@ -9,7 +7,7 @@
 #
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 
 #############################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5_1.py b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5_1.py
index dc9bdc4741aee34ea4926812fa36817c8aade7c9..b91ef34650c8affc24e6b6e4ec296c09e49cd3fd 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5_1.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloSwTransitionRegionsCorr_v5_1.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloSwTransitionRegionsCorr_v5_1.py,v 1.1 2009-03-05 08:44:06 lcarmina Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwTransitionRegionCorr_v5_1.py
 # Created: Dec, 2007, L. Carminati
@@ -10,7 +8,7 @@
 #          This version implement some fixes for eta=0 and eta=0.8 
 
 
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_CLUSTER
 
 #############################################################################
 
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMClusterUpdate.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMClusterUpdate.py
index 59eacb6e343964f4039435db136731c06b2a6571..8dc31d24597258ce757a8a133c8552d063762db2 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMClusterUpdate.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMClusterUpdate.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMClusterUpdate.py,v 1.3 2009-04-25 17:57:00 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMClusterUpdate.py
 # Created: Nov 2006, sss
@@ -15,15 +13,17 @@
 # leaves the total cluster energy unchanged.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO
+from CaloClusterCorrection.common import makecorr
 
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-cls = CaloClusterCorrectionConf.CaloClusterUpdate
+cls = CompFactory.CaloClusterUpdate  # CaloClusterCorrection
 CaloTopoEMClusterUpdate_versions = [
     # This version doesn't recalculate the total cluster energy.
     ['dont_update_e', cls,
@@ -39,6 +39,7 @@ CaloTopoEMClusterUpdate_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -56,14 +57,16 @@ CaloTopoEMClusterUpdate_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMClusterUpdate (name = None,
+def make_CaloTopoEMClusterUpdate (flags,
+                                  name = None,
                                   suffix = None,
                                   version = None,
                                   key = CALOCORR_DEFAULT_KEY,
                                   source = None,
                                   confclass = None,
                                   **kw):
-    return makecorr (versions = CaloTopoEMClusterUpdate_versions,
+    return makecorr (flags,
+                     versions = CaloTopoEMClusterUpdate_versions,
                      name = name,
                      basename = 'larupdate',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMCorrections.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMCorrections.py
index 0daad8ca803c3a5bf9f8ae5343f4439a239c4875..3670202000d4b8e3fe0b77c1daeff710ae331aea 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMCorrections.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMCorrections.py
@@ -1,20 +1,18 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMCorrections.py,v 1.16 2009-04-30 20:29:53 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloSwCorrections.py
 # Created: Mar 2007, sss
 # Purpose: Top-level configuration file for EM topo cluster corrections.
 #
-# The main entry point here is make_CaloTopoEMCorrections, which returns
+# The main entry point here is make_CaloTopoEMCorrectionsCfg, which returns
 # a list of correction tools.  It can be used either `le menu' --- selecting
 # a predefined list of correction tools, or `a la carte' --- explicitly
 # specifying the list of tools you want to run.
 #
 # The simplest way of using it is like this:
 #
-#   make_CaloTopoEMCorrections (key)
+#   make_CaloTopoEMCorrectionsCfg (flags, key)
 #
 # Here, `key' is a string that denotes the type of cluster which you
 # are correcting.  It should be something like `ele420' for 4-2-0 electrons,
@@ -28,7 +26,7 @@
 # By default, the latest version of the corrections appropriate to the
 # geometry being used will be chosen.  You can override this selection
 # by supplying the `version' argument.  It may also be overridden
-# with caloClusterCorrectionFlags.CaloTopoEMWhichCorrection.
+# with Calo.ClusterCorrection.CaloTopoEMWhichCorrection.
 # For the list of known version
 # names, see the variable `CaloTopoEMCorrection_versions' below.
 # In particular, using version `none' turns off the corrections.
@@ -38,7 +36,7 @@
 # the version to be used for individual correction by adding
 # parameters of the form CORRECTION_version.  For example:
 #
-#   make_CaloTopoEMCorrections (key, version='v4', lwc_version='v3')
+#   make_CaloTopoEMCorrectionsCfg (flags, key, version='v4', lwc_version='v3')
 #
 # uses the `v4' corrections, except that we use version `v3' of the
 # layer weight corrections.  You can also specify CORRECTION_key
@@ -46,7 +44,7 @@
 # and CORRECTION_XXX to override any individual parameter
 # of a correction.  For example:
 #
-#   make_CaloTopoEMCorrections (key, lwc_degree=2)
+#   make_CaloTopoEMCorrectionsCfg (flags, key, lwc_degree=2)
 #
 # makes the full standard set of corrections, except that the interpolation
 # degree for the layer weights correction is changed to 2.
@@ -54,13 +52,13 @@
 # You can explicitly specify a list of corrections to run with the
 # `corrlist' argument.  For example,
 #
-#   make_CaloTopoEMCorrections (key, corrlist=[[layers], [update], [gap]])
+#   make_CaloTopoEMCorrectionsCfg (flags, key, corrlist=[[layers], [update], [gap]])
 #
 # runs only the `layers', `update', and `gap' corrections.  The names
 # used here, like `layers' should be functions defined with this
 # signature:
 #
-#    def layers (cells_name, suffix, version, key, source, **kw):
+#    def layers (flags, cells_name, suffix, version, key, source, **kw):
 #
 # Definitions for all the standard corrections are contained in this file.
 # Note that the names of these functions are what are used to recognize
@@ -80,17 +78,18 @@
 # settings may be specified as following (name, value) tuples
 # in the list.  For example:
 #
-#   make_CaloTopoEMCorrections (key, corrlist=[[layers],
-#                                              [update],
-#                                              [gap, 'v3', ('degree', 2)]])
+#   make_CaloTopoEMCorrectionsCfg (flags,
+#                                  key, corrlist=[[layers],
+#                                                 [update],
+#                                                 [gap, 'v3', ('degree', 2)]])
 #
 # says to use version `v3' of the gap correction, and in addition,
 # to override the interpolation degree to be 2.
 #
 # There are three ways in which a correction can get configured: from
 # job options, from pool, or from cool.  You can specify which ones
-# to use by adding the `source' argument to make_CaloTopoEMCorrections.
-# This is one of the following (defined in common.py):
+# to use by adding the `source' argument to make_CaloTopoEMCorrectionsCfg.
+# This is one of the following (defined in constants.py):
 #
 #  - CALOCORR_JO: Configure from job options
 #  - CALOCORR_POOL: Configure from a pool file
@@ -101,7 +100,7 @@
 #
 # This parameter may be specified as a list of any of these values; in that
 # case, all the possibilities will be tried in order.  The default is taken
-# from caloClusterCorrectionFlags.DefaultSource
+# from Calo.ClusterCorrection.defaultSource
 # if it hasn't been explicitly set.  The usual setting is to try first
 # cool, then pool, then job options.  (Note that there are a couple
 # corrections which are not saved to pool/cool and can thus only
@@ -114,22 +113,33 @@
 # with a string of the form `MODULE.NAME'.
 #
 
-import sys
-from CaloClusterCorrection.CaloTopoEMmoments  import make_CaloTopoEMmoments
-from CaloClusterCorrection.CaloTopoEMlayers   import make_CaloTopoEMlayers
-from CaloClusterCorrection.CaloTopoEMetaoff   import make_CaloTopoEMetaoff
-from CaloClusterCorrection.CaloTopoEMetaoffSW import make_CaloTopoEMetaoffSW
-from CaloClusterCorrection.CaloTopoEMphioff   import make_CaloTopoEMphioff
-from CaloClusterCorrection.CaloTopoEMphimod   import make_CaloTopoEMphimod
-from CaloClusterCorrection.CaloTopoEMClusterUpdate \
-     import make_CaloTopoEMClusterUpdate
-from CaloClusterCorrection.CaloTopoEMgap      import make_CaloTopoEMgap
-from CaloClusterCorrection.CaloClusterListBadChannel   import make_CaloClusterListBadChannel
-from CaloClusterCorrection.CaloTopoEMlongWeights \
-     import make_CaloTopoEMlongWeights
-from CaloClusterCorrection.common import *
-from CaloClusterCorrection.CaloClusterCorrectionFlags \
-     import caloClusterCorrectionFlags
+# Need to be sure that we always get run3 configurables in the imported
+# steering modules.
+from AthenaCommon.Configurable import Configurable
+
+try:
+    _wasRun3 = Configurable.configurableRun3Behavior
+    Configurable.configurableRun3Behavior = True
+
+    from CaloClusterCorrection.CaloTopoEMmoments  import make_CaloTopoEMmoments
+    from CaloClusterCorrection.CaloTopoEMlayers   import make_CaloTopoEMlayers
+    from CaloClusterCorrection.CaloTopoEMetaoff   import make_CaloTopoEMetaoff
+    from CaloClusterCorrection.CaloTopoEMetaoffSW import make_CaloTopoEMetaoffSW
+    from CaloClusterCorrection.CaloTopoEMphioff   import make_CaloTopoEMphioff
+    from CaloClusterCorrection.CaloTopoEMphimod   import make_CaloTopoEMphimod
+    from CaloClusterCorrection.CaloTopoEMClusterUpdate \
+         import make_CaloTopoEMClusterUpdate
+    from CaloClusterCorrection.CaloTopoEMgap      import make_CaloTopoEMgap
+    from CaloClusterCorrection.CaloClusterListBadChannel   import make_CaloClusterListBadChannel
+    from CaloClusterCorrection.CaloTopoEMlongWeights \
+         import make_CaloTopoEMlongWeights
+    from CaloClusterCorrection.constants         import CALOCORR_EMTOPO, EMB1, EME1
+    from CaloClusterCorrection.common            import CaloClusterCorrSetup
+    from CaloClusterCorrection.compat            import makeFlags, unpackCA
+
+finally:
+    Configurable.configurableRun3Behavior = _wasRun3
+    
      
 
 
@@ -138,43 +148,43 @@ from CaloClusterCorrection.CaloClusterCorrectionFlags \
 # In the case where a correction has multiple versions for different
 # samplings, we define multiple wrappers here.
 # These are the names to use in the correction list and in the
-# arguments to make_CaloTopoEMCorrection.
+# arguments to make_CaloTopoEMCorrectionCfg.
 #
 
-def moments (cells_name, *args, **kw):
-    return make_CaloTopoEMmoments (None, *args, **kw)
+def moments (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMmoments (flags, None, *args, **kw)
 
-def layers (cells_name, *args, **kw):
-    return make_CaloTopoEMlayers (None, cells_name=cells_name, *args, **kw)
+def layers (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMlayers (flags, None, cells_name=cells_name, *args, **kw)
 
-def etaoff_sw_b1 (cells_name, *args, **kw):
-    return make_CaloTopoEMetaoffSW (EMB1, None, *args, **kw)
+def etaoff_sw_b1 (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMetaoffSW (flags, EMB1, None, *args, **kw)
 
-def etaoff_sw_e1 (cells_name, *args, **kw):
-    return make_CaloTopoEMetaoffSW (EME1, None, *args, **kw)
+def etaoff_sw_e1 (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMetaoffSW (flags, EME1, None, *args, **kw)
 
 # Eta offset in sampling 2.
-def etaoff_2 (cells_name, *args, **kw):
-    return make_CaloTopoEMetaoff (None, *args, **kw)
+def etaoff_2 (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMetaoff (flags, None, *args, **kw)
 
 # Phi offset in sampling 2.
-def phioff (cells_name, *args, **kw):
-    return make_CaloTopoEMphioff (None, *args, **kw)
+def phioff (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMphioff (flags, None, *args, **kw)
 
-def phimod (cells_name, *args, **kw):
-    return make_CaloTopoEMphimod (None, *args, **kw)
+def phimod (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMphimod (flags, None, *args, **kw)
 
-def update (cells_name, *args, **kw):
-    return make_CaloTopoEMClusterUpdate (None, *args, **kw)
+def update (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMClusterUpdate (flags, None, *args, **kw)
 
-def lwc (cells_name, *args, **kw):
-    return make_CaloTopoEMlongWeights (None, *args, **kw)
+def lwc (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMlongWeights (flags, None, *args, **kw)
 
-def gap (cells_name, *args, **kw):
-    return make_CaloTopoEMgap (None, *args, **kw)
+def gap (flags, cells_name, *args, **kw):
+    return make_CaloTopoEMgap (flags, None, *args, **kw)
 
-def listBadChannel (cells_name, *args, **kw):
-    return make_CaloClusterListBadChannel (CALOCORR_EMTOPO, None, *args, **kw)
+def listBadChannel (flags, cells_name, *args, **kw):
+    return make_CaloClusterListBadChannel (flags, CALOCORR_EMTOPO, None, *args, **kw)
 
 
 ##############################################################################
@@ -185,8 +195,8 @@ def listBadChannel (cells_name, *args, **kw):
 class CaloTopoEMCorrectionsSetup (CaloClusterCorrSetup):
 
     name = "EM topo"
-    version_override_flag= caloClusterCorrectionFlags.CaloTopoEMWhichCorrection
-    correction_generation_flag= caloClusterCorrectionFlags.CaloTopoEMGeneration
+    version_override_flag_name = 'caloTopoEMWhichCorrection'
+    correction_generation_flag_name = 'caloTopoEMGeneration'
     correction_generation_default = "00-02-00"
 
     ##########################################################################
@@ -289,13 +299,12 @@ class CaloTopoEMCorrectionsSetup (CaloClusterCorrSetup):
 
 
     # Handle CaloTopoEMCorrectionArgs.
-    def make_corrections (self, **kw_in):
+    def make_corrections (self, flags, **kw_in):
         kw = {}
-        if caloClusterCorrectionFlags.CaloTopoEMCorrectionArgs.statusOn:
-            kw = caloClusterCorrectionFlags.CaloTopoEMCorrectionArgs().copy()
+        kw = flags.Calo.ClusterCorrection.caloTopoEMCorrectionArgs
         kw.update (kw_in)
 
-        return CaloClusterCorrSetup.make_corrections (self, **kw)
+        return CaloClusterCorrSetup.make_corrections (self, flags, **kw)
 
 
 CaloTopoEMCorrections = CaloTopoEMCorrectionsSetup()
@@ -305,6 +314,45 @@ CaloTopoEMCorrections = CaloTopoEMCorrectionsSetup()
 # Main entry point to create a list of correction tools.
 #
 
+#
+# Create and return a CA of correction tools.
+# FLAGS are the configuration flags.
+# KEY is a string that specifies the correction type.
+# SUFFIX is a string to add to the end of each tool name.
+# VERSION specifies which version of corrections to use.
+# CORRLIST can be used to explicitly specify which corrections to run.
+# CELLS_NAME is the SG key to use to find the calorimeter cells,
+# for those corrections that require it.
+# SOURCE specifies the source(s) from which tools are configured.
+# See above for details.
+# None means to use the default.
+#
+# For more detailed information, see the comments at the start of this file.
+#
+def make_CaloTopoEMCorrectionsCfg (flags,
+                                   key = None,
+                                   suffix = '',
+                                   version = None,
+                                   corrlist = None,
+                                   cells_name = None,
+                                   source = None,
+                                   **kw):
+    return CaloTopoEMCorrections.make_corrections (flags,
+                                                   corrclass = CALOCORR_EMTOPO,
+                                                   key = key,
+                                                   suffix = suffix,
+                                                   version = version,
+                                                   corrlist = corrlist,
+                                                   cells_name = cells_name,
+                                                   source = source,
+                                                   **kw)
+
+
+##############################################################################
+# Backwards compatibility:
+# Main entry point to create a list of correction tools (old configuration)
+#
+
 #
 # Create and return a list of correction tools.
 # KEY is a string that specifies the correction type.
@@ -326,11 +374,18 @@ def make_CaloTopoEMCorrections (key = None,
                                 cells_name = None,
                                 source = None,
                                 **kw):
-    return CaloTopoEMCorrections.make_corrections (corrclass = CALOCORR_EMTOPO,
-                                                   key = key,
-                                                   suffix = suffix,
-                                                   version = version,
-                                                   corrlist = corrlist,
-                                                   cells_name = cells_name,
-                                                   source = source,
-                                                   **kw)
+    try:
+        wasRun3 = Configurable.configurableRun3Behavior
+        Configurable.configurableRun3Behavior = True
+        ca = CaloTopoEMCorrections.make_corrections (makeFlags(),
+                                                     corrclass = CALOCORR_EMTOPO,
+                                                     key = key,
+                                                     suffix = suffix,
+                                                     version = version,
+                                                     corrlist = corrlist,
+                                                     cells_name = cells_name,
+                                                     source = source,
+                                                     **kw)
+    finally:
+        Configurable.configurableRun3Behavior = wasRun3
+    return unpackCA (ca)
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoff.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoff.py
index 393cc904694c6d001981366cd4c1eac8799dc43f..f271f8fc17fe7b0b2531e9fd3d63d7d8e3a216b4 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoff.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoff.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMetaoff.py,v 1.4 2007-10-17 21:05:53 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMetaoff.py
 # Created: Mar 2007, sss, from earlier job options.
@@ -9,15 +7,17 @@
 # for TopoEM clusters.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO, CALOCORR_COMBINED2
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import topoem_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloTopoEMsshape
+from CaloClusterCorrection.constants import topoem_valid_keys as keys
+cls = CompFactory.CaloTopoEMsshape  # CaloClusterCorrection
 CaloTopoEMetaoff_versions = [
 
     # v1 --- from the original job options file.
@@ -29,6 +29,7 @@ CaloTopoEMetaoff_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -46,7 +47,8 @@ CaloTopoEMetaoff_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMetaoff (name = None,
+def make_CaloTopoEMetaoff (flags,
+                           name = None,
                            suffix = None,
                            version = None,
                            key = CALOCORR_DEFAULT_KEY,
@@ -54,7 +56,8 @@ def make_CaloTopoEMetaoff (name = None,
                            confclass = None,
                            **kw):
     # Make the tool.
-    return makecorr (versions  = CaloTopoEMetaoff_versions,
+    return makecorr (flags,
+                     versions  = CaloTopoEMetaoff_versions,
                      name      = name,
                      basename  = 'topoetaoff',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoffSW.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoffSW.py
index a7f9d9c309defb499b20b6dc5e8a9123dba37115..1385ca4ae4af8d9ac9fa1081659a7369285d610b 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoffSW.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMetaoffSW.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMetaoffSW.py,v 1.1 2009-04-23 05:24:30 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMetaoffSW.py
 # Created: Apr, 2009, sss
@@ -12,15 +10,17 @@
 # We need to get a copy of it under the topoem hierarchy.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import topoem_valid_keys as keys
-cls_v2 = CaloClusterCorrectionConf.CaloSwEtaoff_v2
+from CaloClusterCorrection.constants import topoem_valid_keys as keys
+cls_v2 = CompFactory.CaloSwEtaoff_v2   # CaloClusterCorrection
 CaloTopoEMetaoffSW_versions = [
 
     # Copied from SW.
@@ -35,6 +35,7 @@ CaloTopoEMetaoffSW_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  SAMPLING is the calorimeter sampling (EMB1, EMB2, EME1, EME2) to which
 #   this correction will be applied, or None.
 #  NAME is the base name for this tool.  If defaulted, a name will
@@ -54,7 +55,8 @@ CaloTopoEMetaoffSW_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMetaoffSW (sampling,
+def make_CaloTopoEMetaoffSW (flags,
+                             sampling,
                              name = None,
                              suffix = None,
                              version = None,
@@ -63,7 +65,8 @@ def make_CaloTopoEMetaoffSW (sampling,
                              confclass = None,
                              **kw):
     # Make the tool.
-    return makecorr (versions  = CaloTopoEMetaoffSW_versions,
+    return makecorr (flags,
+                     versions  = CaloTopoEMetaoffSW_versions,
                      name      = name,
                      basename  = 'topoetaoffsw',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMgap.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMgap.py
index 0376ab066155bfb67b3a582ec77ecf9b6a988d90..3d96931e5dba1dc5d251e1f35c828f98005b8962 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMgap.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMgap.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMgap.py,v 1.5 2009-04-20 16:59:16 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMgap.py
 # Created: Mar 2007, sss, from earlier job options.
@@ -9,15 +7,17 @@
 # for TopoEM clusters.
 #
 
-from CaloClusterCorrection        import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO, CALOCORR_CLUSTER
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import topoem_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloTopoEMGap
+from CaloClusterCorrection.constants import topoem_valid_keys as keys
+cls = CompFactory.CaloTopoEMGap   # CaloClusterCorrection
 CaloTopoEMgap_versions = [
 
     # v1 --- from the original DC3 job options file.
@@ -29,6 +29,7 @@ CaloTopoEMgap_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -46,7 +47,8 @@ CaloTopoEMgap_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMgap (name = None,
+def make_CaloTopoEMgap (flags,
+                        name = None,
                         suffix = None,
                         version = None,
                         key = CALOCORR_DEFAULT_KEY,
@@ -54,7 +56,8 @@ def make_CaloTopoEMgap (name = None,
                         confclass = None,
                         **kw):
     # Make the tool.
-    return makecorr (versions  = CaloTopoEMgap_versions,
+    return makecorr (flags,
+                     versions  = CaloTopoEMgap_versions,
                      name      = name,
                      basename  = 'topogap',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlayers.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlayers.py
index d6d0e3def1568ad820962e4c5afb4f552a3d2d14..1b3fa90bd8af75fad2e5ae8a1743dbb87aebf57c 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlayers.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlayers.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMlayers.py,v 1.3 2007-10-19 15:13:05 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMlayers.py
 # Created: Mar 2007, sss, from old job options.
@@ -13,14 +11,16 @@
 #
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-cls = CaloClusterCorrectionConf.CaloTopoEMlayers
+cls = CompFactory.CaloTopoEMlayers  # CaloClusterCorrection
 CaloTopoEMlayers_versions = [
     ['',   cls, ['CaloTopoEMlayers.CaloTopoEMlayers_parms',  CALOCORR_NOPOOL]],
     ]
@@ -28,6 +28,7 @@ CaloTopoEMlayers_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -36,6 +37,7 @@ CaloTopoEMlayers_versions = [
 #  KEY is a string to specify the type of cluster to which the correction
 #   applies.  The convention is to use `ele55' for 5x5 electron clusters,
 #   `gam35' for 3x5 photon clusters, and so on.
+
 #  SOURCE tells from where we should read the calibration constants.
 #   See common.py for a description of the possibilities.
 #   None means to use the default.
@@ -48,7 +50,8 @@ CaloTopoEMlayers_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMlayers (name = None,
+def make_CaloTopoEMlayers (flags,
+                           name = None,
                            suffix = None,
                            version = None,
                            key = CALOCORR_DEFAULT_KEY,
@@ -57,10 +60,11 @@ def make_CaloTopoEMlayers (name = None,
                            cells_name = None,
                            **kw):
 
-    if cells_name != None:
+    if cells_name is not None:
         kw['cells_name'] = cells_name
 
-    return makecorr (versions = CaloTopoEMlayers_versions,
+    return makecorr (flags,
+                     versions = CaloTopoEMlayers_versions,
                      name = name,
                      basename = 'layers',
                      suffix = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlongWeights.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlongWeights.py
index 839a7ed855afea54c77cf9b4a9b212eee6dda439..11c339cdc49d107f496936702f027a27a8082f7d 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlongWeights.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMlongWeights.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMlongWeights.py,v 1.5 2009-04-20 16:59:16 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMlongWeights.py
 # Created: Mar 2007, sss, from earlier job options.
@@ -9,15 +7,17 @@
 # for TopoEM clusters.
 #
 
-from CaloClusterCorrection        import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import  \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO, CALOCORR_COMBINED2
+from CaloClusterCorrection.common import makecorr
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import topoem_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloTopoEMLongWeights
+from CaloClusterCorrection.constants import topoem_valid_keys as keys
+cls = CompFactory.CaloTopoEMLongWeights   # CaloClusterCorrection
 CaloTopoEMlongWeights_versions = [
 
     # v1 --- from the original DC3 job options file.
@@ -29,6 +29,7 @@ CaloTopoEMlongWeights_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -46,7 +47,8 @@ CaloTopoEMlongWeights_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMlongWeights (name = None,
+def make_CaloTopoEMlongWeights (flags,
+                                name = None,
                                 suffix = None,
                                 version = None,
                                 key = CALOCORR_DEFAULT_KEY,
@@ -54,7 +56,8 @@ def make_CaloTopoEMlongWeights (name = None,
                                 confclass = None,
                                 **kw):
     # Make the tool.
-    return makecorr (versions  = CaloTopoEMlongWeights_versions,
+    return makecorr (flags,
+                     versions  = CaloTopoEMlongWeights_versions,
                      name      = name,
                      basename  = 'topolw',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMmoments.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMmoments.py
index 6d6c00be6f4dc0c0adb57aa39ef03fa230e50005..a42b6ed47547b1d811f46155ae8d4f63ce6c053b 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMmoments.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMmoments.py
@@ -1,7 +1,5 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMmoments.py,v 1.4 2008-12-04 08:05:51 menke Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMmoments.py
 # Created: Mar 2007, sss, from old job options.
@@ -12,8 +10,10 @@
 #
 #
 
-from CaloRec                      import CaloRecConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_NOPOOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO
+from CaloClusterCorrection.common import makecorr
 from AthenaCommon.SystemOfUnits   import deg
 
 from CaloTools.CaloNoiseCondAlg import CaloNoiseCondAlg
@@ -23,7 +23,7 @@ CaloNoiseCondAlg()
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-cls = CaloRecConf.CaloClusterMomentsMaker
+cls = CompFactory.CaloClusterMomentsMaker  # CaloRec
 CaloTopoEMmoments_versions = [
     ['',  cls, ['CaloTopoEMmoments.CaloTopoEMmoments_parms', CALOCORR_NOPOOL]],
     ]
@@ -31,6 +31,7 @@ CaloTopoEMmoments_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -48,7 +49,8 @@ CaloTopoEMmoments_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMmoments (name = None,
+def make_CaloTopoEMmoments (flags,
+                            name = None,
                             suffix = None,
                             version = None,
                             key = CALOCORR_DEFAULT_KEY,
@@ -57,7 +59,8 @@ def make_CaloTopoEMmoments (name = None,
                             cells_name = None,
                             **kw):
 
-    return makecorr (versions = CaloTopoEMmoments_versions,
+    return makecorr (flags,
+                     versions = CaloTopoEMmoments_versions,
                      name = name,
                      basename = 'EMTopoMoments',
                      suffix = suffix,
@@ -99,23 +102,3 @@ class CaloTopoEMmoments_parms:
         ,"ENG_POS"
         ,"SIGNIFICANCE"
         ]
-
-    AODMomentsNames = [
-        "FIRST_PHI" 
-        ,"FIRST_ETA"
-        ,"SECOND_R" 
-        ,"SECOND_LAMBDA"
-        ,"CENTER_MAG"
-        ,"CENTER_LAMBDA"
-        ,"FIRST_ENG_DENS"
-        ,"SECOND_ENG_DENS"
-        ,"LATERAL"
-        ,"LONGITUDINAL"
-        ,"ENG_FRAC_MAX"
-        ,"ISOLATION"
-        ,"ENG_BAD_CELLS"
-        ,"N_BAD_CELLS"
-        ,"BADLARQ_FRAC"
-        ,"ENG_POS"
-        ,"SIGNIFICANCE"
-        ]
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphimod.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphimod.py
index 5410ef247727a2964bff62bfadb0cf9d29162d80..0ea03817bd07aa925c55dc92a2ae6d47d4f614ad 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphimod.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphimod.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMphimod.py,v 1.4 2007-10-17 21:05:53 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMphimod.py
 # Created: Mar 2007, sss, from earlier job options.
@@ -9,15 +7,18 @@
 # for TopoEM clusters.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO, CALOCORR_COMBINED2
+from CaloClusterCorrection.common import makecorr
+     
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import topoem_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloTopoEMphimod
+from CaloClusterCorrection.constants import topoem_valid_keys as keys
+cls = CompFactory.CaloTopoEMphimod   # CaloClusterCorrection
 CaloTopoEMphimod_versions = [
 
     # v1 --- from the original job options file.
@@ -29,6 +30,7 @@ CaloTopoEMphimod_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -46,7 +48,8 @@ CaloTopoEMphimod_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMphimod (name = None,
+def make_CaloTopoEMphimod (flags,
+                           name = None,
                            suffix = None,
                            version = None,
                            key = CALOCORR_DEFAULT_KEY,
@@ -54,7 +57,8 @@ def make_CaloTopoEMphimod (name = None,
                            confclass = None,
                            **kw):
     # Make the tool.
-    return makecorr (versions  = CaloTopoEMphimod_versions,
+    return makecorr (flags,
+                     versions  = CaloTopoEMphimod_versions,
                      name      = name,
                      basename  = 'topophimod',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphioff.py b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphioff.py
index 96411505240e6961a965dff204734a24ec62c3a5..c4a1d497d0a4b725660acf8c93293f072fd85ae8 100755
--- a/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphioff.py
+++ b/Calorimeter/CaloClusterCorrection/python/CaloTopoEMphioff.py
@@ -1,7 +1,5 @@
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: CaloTopoEMphioff.py,v 1.5 2008-01-25 04:14:22 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/CaloTopoEMphioff.py
 # Created: Mar 2007, sss, from earlier job options.
@@ -9,16 +7,18 @@
 # for TopoEM clusters.
 #
 
-from CaloClusterCorrection import CaloClusterCorrectionConf
-from CaloClusterCorrection.common import *
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection.constants import \
+     CALOCORR_COOL, CALOCORR_DEFAULT_KEY, CALOCORR_EMTOPO, CALOCORR_COMBINED2
+from CaloClusterCorrection.common import makecorr
 import math
 
 #
 # This table lists all available versions of this correction.
 # See common.py for a description of the contents.
 #
-from CaloClusterCorrection.common import topoem_valid_keys as keys
-cls = CaloClusterCorrectionConf.CaloTopoEMphioff
+from CaloClusterCorrection.constants import topoem_valid_keys as keys
+cls = CompFactory.CaloTopoEMphioff  # CaloClusterCorrection
 CaloTopoEMphioff_versions = [
 
     # v1 --- from the original job options file.
@@ -35,6 +35,7 @@ CaloTopoEMphioff_versions = [
 
 #
 # Create a new tool instance.
+#  FLAGS is the configuration flags instance.
 #  NAME is the base name for this tool.  If defaulted, a name will
 #   be constructed from the name of the correction, the version, and the key.
 #  If SUFFIX is not None, it will be added onto the end of the tool name.
@@ -52,7 +53,8 @@ CaloTopoEMphioff_versions = [
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def make_CaloTopoEMphioff (name = None,
+def make_CaloTopoEMphioff (flags,
+                           name = None,
                            suffix = None,
                            version = None,
                            key = CALOCORR_DEFAULT_KEY,
@@ -60,7 +62,8 @@ def make_CaloTopoEMphioff (name = None,
                            confclass = None,
                            **kw):
     # Make the tool.
-    return makecorr (versions  = CaloTopoEMphioff_versions,
+    return makecorr (flags,
+                     versions  = CaloTopoEMphioff_versions,
                      name      = name,
                      basename  = 'topophioff',
                      suffix    = suffix,
diff --git a/Calorimeter/CaloClusterCorrection/python/MakeHierTags.py b/Calorimeter/CaloClusterCorrection/python/MakeHierTags.py
index 0d7c733bd9e02968b5c7949d25f747ae94d981eb..ff511d1f89de7e1e56fca2697f8292106a9c0195 100644
--- a/Calorimeter/CaloClusterCorrection/python/MakeHierTags.py
+++ b/Calorimeter/CaloClusterCorrection/python/MakeHierTags.py
@@ -1,7 +1,5 @@
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: MakeHierTags.py,v 1.5 2009-04-30 20:29:53 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/MakeHierTags.py
 # Created: Apr 2009, sss
@@ -21,7 +19,8 @@ from __future__ import print_function
 
 from PyCool import cool
 import CoolConvUtilities.AtlCoolLib as AtlCoolLib
-from CaloClusterCorrection.common import *
+from CaloClusterCorrection.constants import CALOCORR_COOL, CALOCORR_JO
+from CaloClusterCorrection.common import split_version_spec
 import sys
 
 
@@ -30,7 +29,7 @@ class MakeHierTags:
         self.corrtop = corrtop
         self.dryrun = dryrun
         self.domagic = domagic
-        dbsvc = cool.DatabaseSvcFactory.databaseService()
+        cool.DatabaseSvcFactory.databaseService()
 
         if dbfile.endswith ('.db'):
             connstring = "sqlite://;schema=%s;dbname=OFLP200" % dbfile
@@ -71,7 +70,7 @@ class MakeHierTags:
 
 
     def run (self, generation=None):
-        if generation == None:
+        if generation is None:
             generation = self.corrtop.correction_generation_default
         if generation != '':
             generation = generation + '-'
@@ -89,12 +88,12 @@ class MakeHierTags:
         htag = None
         for toolspec in toollist:
             toolfunc = toolspec[0]
-            if len(toolspec) >= 2 and type(toolspec[1]) == type(''):
+            if len(toolspec) >= 2 and isinstance(toolspec[1], str):
                 toolversion = toolspec[1]
             else:
                 toolversion = ''
 
-            if not toolfunc in self.funcmap:
+            if toolfunc not in self.funcmap:
                 print ("WARNING: skipping tagging for tool", toolfunc.__name__)
                 continue
             folder = self.funcmap[toolfunc]
@@ -102,7 +101,7 @@ class MakeHierTags:
             (dum1, dum2, corrclass, basename) = folder.split ('/')
 
             htmp = corrclass + '-' + generation + version
-            if htag == None:
+            if htag is None:
                 htag = htmp
                 print (htag)
             else:
@@ -114,7 +113,7 @@ class MakeHierTags:
 
             self.set_tag (folder, tag, htag)
 
-        if htag == None:
+        if htag is None:
             return
 
         for folder in self.folders:
@@ -131,7 +130,7 @@ class MakeHierTags:
             for g in geom_strings:
                 (globver, tryhier) = self.corrtop.geom_match('MakeHierTags', g)
                 if globver[0] == '@': continue
-                (vlist, version) = self.corrtop.lookup_version (globver)
+                (vlist, version) = self.corrtop.lookup_version (globver, None)
                 for f in self.folders:
                     self.make_magic_target (f, g, vlist, generation)
                 print ("Made magic targets for", g)
@@ -201,21 +200,21 @@ class MakeHierTags:
             return
 
         oldtag = self.tags.get ((folder, htag))
-        if oldtag == None:
+        if oldtag is None:
             self.tags[(folder,htag)] = tag
             if not self.db.existsFolder(folder):
                 print ("ERROR: Folder %s doesn't exist" % folder)
                 sys.exit(1)
             dbf = self.db.getFolder(folder)
             if check:
-                if not tag in dbf.listTags():
+                if tag not in dbf.listTags():
                     print ("ERROR: Tag %s doesn't exist in folder %s"
                            % (tag,folder))
                     sys.exit(1)
             try:
-                zz=dbf.findTagRelation(htag) # will throw if htag doesn't exist
+                dbf.findTagRelation(htag) # will throw if htag doesn't exist
                 dbf.deleteTagRelation(htag)
-            except:
+            except Exception:
                 pass
             dbf.createTagRelation (htag, tag)
             #print ('set_tag', folder, tag, htag)
diff --git a/Calorimeter/CaloClusterCorrection/python/StandardCellWeightCalib.py b/Calorimeter/CaloClusterCorrection/python/StandardCellWeightCalib.py
index 1c372020eb3f82ec032f5a5279e7e11ba9e05859..fc65f22a61e63569b79303d8944c822e5bb69395 100644
--- a/Calorimeter/CaloClusterCorrection/python/StandardCellWeightCalib.py
+++ b/Calorimeter/CaloClusterCorrection/python/StandardCellWeightCalib.py
@@ -5,6 +5,7 @@
 #--
 #-- Note the input for this calibration is jet driven. The fitted default
 
+from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaCommon.Logging import logging
 from AthenaCommon.GlobalFlags import globalflags
 
@@ -165,20 +166,20 @@ class H1Calibration(object):
                 if 'Topo' in input: return  H1Calibration.getCalibDBParams('Cone',0.4,'H1Topo',onlyCellWeight,isMC)
                 else:               return  H1Calibration.getCalibDBParams('Cone',0.4,'H1Tower',onlyCellWeight,isMC)
             # else try to find a good fall back
-            _logger.warning("getCalibDBParams: no dedicated calibration for %s %s %s"%(finder,mainparam,input))
+            _logger.warning("getCalibDBParams: no dedicated calibration for %s %s %s", finder,mainparam,input)
             if finder not in [ 'Kt', 'Cone' ]    : finder = 'Cone'     # fall back to ATLAS Cone
             if input  not in [ 'Topo', 'Tower' ] : input  = 'Tower'    # fall back to Tower
             if finder == 'Kt' : l = [ 0.4, 0.6 ]
             else:               l = [ 0.4, 0.7 ]
             (m,mainparam) = min( [ (abs(p-mainparam),p) for p in l ] ) # main parameter optimization (??)
-            _logger.warning("getCalibDBParams: defaulted calibration to %s %s %s"%(finder,mainparam,input))
+            _logger.warning("getCalibDBParams: defaulted calibration to %s %s %s", finder,mainparam,input)
             return H1Calibration.getCalibDBParams(finder,mainparam,input,onlyCellWeight,isMC)
     #-- load DB folder
     @staticmethod
     def loadCaloFolder(folder,tag,isMC=False):
         from IOVDbSvc.CondDB       import conddb
         from AthenaCommon.AppMgr   import ServiceMgr
-        from IOVDbSvc.IOVDbSvcConf import IOVDbSvc
+        IOVDbSvc = CompFactory.IOVDbSvc  # IOVDbSvc
         ServiceMgr += IOVDbSvc()
         IOVDbSvc = ServiceMgr.IOVDbSvc
         if isMC:
@@ -203,7 +204,7 @@ def getCellWeightTool(finder="Cone",mainparam=0.4,input="Topo", onlyCellWeight=F
     input/str      : input objects triggers calibration weights
     mainparam/float: size parameter for jet
     """
-    from CaloClusterCorrection.CaloClusterCorrectionConf import H1WeightToolCSC12Generic
+    H1WeightToolCSC12Generic = CompFactory.H1WeightToolCSC12Generic  # CaloClusterCorrection
     
     if globalflags.DataSource()=='data':
       isMC=False
diff --git a/Calorimeter/CaloClusterCorrection/python/common.py b/Calorimeter/CaloClusterCorrection/python/common.py
index f71b6117e59e99c9fef26ad7c888c1d719576114..03557911a23316e5d62fe7ebb63362f2f0c69315 100755
--- a/Calorimeter/CaloClusterCorrection/python/common.py
+++ b/Calorimeter/CaloClusterCorrection/python/common.py
@@ -1,7 +1,5 @@
 # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id: common.py,v 1.39 2009-05-20 20:48:52 ssnyder Exp $
 #
 # File: CaloClusterCorrection/python/common.py
 # Created: Nov 2006, sss
@@ -10,21 +8,17 @@
 
 from __future__ import print_function
 
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaCommon.Logging import logging
-from AthenaCommon.AppMgr import ServiceMgr
-from AthenaCommon.JobProperties import jobproperties
-from AthenaCommon.GlobalFlags   import globalflags
-from AthenaCommon.Configurable  import Configurable
-from IOVDbSvc.CondDB import conddb
 from fnmatch import fnmatchcase
-import sys
-import string
 
 from CaloClusterCorrection.poolfiles import poolfiles
-from CaloClusterCorrection.CaloClusterCorrectionConf import \
-     CaloRunClusterCorrections, CaloDummyCorrection
 
-from CaloClusterCorrection.constants import *
+from CaloClusterCorrection.constants import \
+     CALOCORR_JO, CALOCORR_POOL, CALOCORR_COOL, \
+     CALOCORR_NOPOOL, CALOCORR_TOPOOL, CALOCORR_DEFAULT_KEY, \
+     sampnames
 
 # Used for reporting configuration errors.
 class CaloCorrectionConfigError (Exception):
@@ -42,63 +36,6 @@ _alltools = {}
 
 
 
-class MetatoolPropDummy:
-    def __init__ (self, obj):
-        self.obj = obj
-    def __getitem__ (self, i):
-        return self.obj.__dict__.get (i, '')
-        return ''
-    def has_key (self, k):
-        if k == 'isDummy':
-            return False
-        return True
-    def __contains__ (self, k):
-        return self.has_key (k)
-    
-class MetatoolHelper:
-    def __init__ (self, confclass, name):
-        self.__dict__["clsname"] = confclass.__name__
-        self.__dict__["name"] = name
-        self.__dict__["prefix"] = ""
-        self.__dict__["DBHandleKey"] = None
-        self.__dict__["props"] = {}
-        self.__dict__["_propdum"] = MetatoolPropDummy (self)
-        return
-
-
-    def getName (self):
-        return self.name
-
-    def __setattr__ (self, k, v):
-        if k in self.__dict__:
-            self.__dict__[k] = v
-        else:
-            if isinstance (v, Configurable):
-                v = v.getFullName()
-            self.props[k] = str(v)
-        return
-
-
-    def properties (self):
-        return self._propdum
-
-
-    def corrspec (self):
-        if self.DBHandleKey == None:
-            location = '+' + self.clsname
-        elif self.DBHandleKey.find ('/') >= 0:
-            location = '@' + self.DBHandleKey
-        else:
-            location = self.DBHandleKey
-        spec = [self.name,
-                location,
-                self.prefix]
-        for (k, v) in self.props.items():
-            spec += [k, v]
-        spec.append ("")
-        return spec
-
-
 ###########################################################################
 # Code to handle creating the list of correction tools.
 #
@@ -109,12 +46,13 @@ class MetatoolHelper:
 #  name:                  A short descriptive name of the type of cluster
 #                         (to be written to the log file)
 #
-#  version_override_flag: A job property.
+#  version_override_flag_name:
+#                         Name of flag.
 #                         If set, it overrides the selected correction
 #                         version.
 #
-#  correction_generation_flag:
-#                         A job property.
+#  correction_generation_flag_name:
+#                         Name of flag.
 #                         If set, this gives the correction generation
 #                         string that's embedded in tags written to the
 #                         database.  This string should be changed for
@@ -148,11 +86,11 @@ class MetatoolHelper:
 #                         It may also be `@', in which case the global
 #                         version string is used instead.
 #
-#                         ORDER is an integer.  When the metatool is used,
-#                         tools will be executed in increasing order
-#                         of the ORDER parameter.  Note that a given
-#                         tool/version must have the same ORDER each
-#                         time it's used.
+#                         ORDER is an integer, giving the order in which
+#                         the tools are intended to run.
+#                         Not currently used (they were used by the metatool),
+#                         but retained in case we want to use this
+#                         for checking.
 #
 #                         The remainder of the list should be a set
 #                         of (NAME,VALUE) tuples giving correction parameters
@@ -189,29 +127,52 @@ def split_version_spec (cspec):
     version = ''
     order = 0
     ii = 1
-    if ii < len(cspec) and type(cspec[ii]) == type(''):
+    if ii < len(cspec) and isinstance (cspec[ii], str):
         version = cspec[ii]
         ii += 1
-    if ii < len(cspec) and type(cspec[ii]) == type(1):
+    if ii < len(cspec) and isinstance (cspec[ii], int):
         order = cspec[ii]
         ii += 1
     extra_args = cspec[ii:]
     return (func, version, order, extra_args)
 
 
+# Given a cool tag (or GLOBAL for the currently-configured global tag),
+# return the version of the correction set to use.
+def _find_version_from_cool_tag (flags, coolTag, corrclass):
+    if coolTag == 'GLOBAL':
+        coolTag = flags.IOVDb.GlobalTag
+
+    if flags.Input.isMC:    
+        folderset = "/CALO/Ofl/" + corrclass
+        connstring = 'COOLOFL_CALO/OFLP200'
+    else:   
+        folderset = "/CALO/" + corrclass
+        connstring = 'COOLONL_CALO/' + flags.IOVDb.DatabaseInstance
+
+    from CoolConvUtilities import AtlCoolLib
+    db = AtlCoolLib.indirectOpen (connstring, readOnly=True, oracle=True)
+    ff = db.getFolderSet (folderset)
+    t = ff.resolveTag (coolTag)
+    #  CaloOflSwClusterCorrections.00-02-12-calhits-v9
+    l = t.split ('-')
+    return '-'.join (l[4:])
+
+
 class CaloClusterCorrSetup:
     # Must be overridden in derived classes.  See above for their meaning.
     # name = XXX
-    # version_override_flag = XXX
-    # correction_generation_flag = XXX
+    # version_override_flag_name = XXX
+    # correction_generation_flag_name = XXX
     # correction_generation_default = XXX
     # versions = XXX
     # geom_versions = XXX
     # newest_version = XXX
 
     #
-    # Create and return a list of correction tools.
-    # CORRCLASS is the correction class string, as defined above.
+    # Create and return a CA of correction tools.
+    # FLAGS is the configuration flags.
+    # CORRCLASS is the correction class string, as defined in constants.py.
     # KEY is a string that specifies the correction type.
     # SUFFIX is a string to add to the end of each tool name.
     # VERSION specifies which version of corrections to use.
@@ -221,16 +182,14 @@ class CaloClusterCorrSetup:
     # in the version table, we look for one with a version of `@'.
     # If no match for that is found, the last entry in the table
     # will be used.
-    # If VERSION starts with `@', USE_METATOOL must be enabled.
     # CORRLIST can be used to explicitly specify which corrections to run.
     # CELLS_NAME is the SG key to use to find the calorimeter cells,
     # for those corrections that require it.
     # SOURCE specifies the source(s) from which tools are configured.
     # None means to use the default.
-    # If USE_METATOOL is true, then instead of making the list of tools here,
-    # return a single CaloRunClusterCorrections tool.
     #
     def make_corrections (self,
+                          flags,
                           corrclass,
                           key = None,
                           suffix = '',
@@ -238,7 +197,6 @@ class CaloClusterCorrSetup:
                           corrlist = None,
                           cells_name = None,
                           source = None,
-                          use_metatool = False,
                           **kw):
 
         # Make a logger.
@@ -248,39 +206,38 @@ class CaloClusterCorrSetup:
 
         # First, find the appropriate overall version string to use,
         # if it wasn't specified explicitly.
-        if version == None:
+        if version is None:
             # First see if the flag was set to override the version.
             # at the top-level.
-            if self.version_override_flag.statusOn:
-                version = self.version_override_flag()
+            v = getattr (flags.Calo.ClusterCorrection, self.version_override_flag_name)
+            if v:
+                version = v
 
-        if version == None:
+        if version is None:
             # No explicitly specified version.
             # Try to guess it from the data source + geometry string.
             # Otherwise, use the latest version.
-            geom = jobproperties.Global.DetDescrVersion()
-            datasource = globalflags.DataSource()
+            geom = flags.GeoModel.AtlasVersion
+            datasource = 'geant4' if flags.Input.isMC else 'data'
             (version, tryhier) = self.geom_match (datasource, geom)
 
-        #if version[0] == '@' and not use_metatool:
-        #    raise CaloCorrectionConfigError ('COOL tag requested but not metatool.')
-            
         # Get the correction generation.
-        generation = self.get_generation()
+        generation = self.get_generation(flags)
 
         # Use the default source if one wasn't specified.
-        if source == None:
-            from CaloClusterCorrection.CaloClusterCorrectionFlags \
-                 import caloClusterCorrectionFlags
-            source = caloClusterCorrectionFlags.DefaultSource()
+        if source is None:
+            source = flags.Calo.ClusterCorrection.defaultSource
 
-        if type(source) != type([]):
+        if not isinstance (source, list):
             source = [source]
         if CALOCORR_COOL not in source:
             tryhier = False
 
         if tryhier and version[0] != '@':
-            version = "@%s-%s%s" % (corrclass, generation, version)
+            cl = corrclass
+            if flags.Input.isMC:
+                cl = cl[0:4] + 'Ofl' + cl[4:]
+            version = "@%s-%s%s" % (cl, generation, version)
 
         # Only use COOL if we're actually trying to resolve a COOL tag.
         # Otherwise we can run into problems: it looks like `ununsed'
@@ -289,21 +246,18 @@ class CaloClusterCorrSetup:
             if CALOCORR_COOL in source:
                 source.remove (CALOCORR_COOL)
 
-        (vcorrlist, version) = self.lookup_version (version)
+        (vcorrlist, version) = self.lookup_version (flags, version, corrclass)
 
         # Default to the standard list if no explicit correction list.
-        if corrlist == None:
+        if corrlist is None:
             corrlist = vcorrlist
-            preserve_order = False
-        else:
-            # If list was given explicitly, don't reorder it.
-            preserve_order = True
 
         log.info ("%s corrections for %s (%s) using version %s" %
                   (self.name, key, suffix, version))
 
         # Now, walk through the list of corrections.
-        out = []
+        out = ComponentAccumulator()
+        tools = []
         for cspec in corrlist:
             (func, this_version, this_order, extra_args) = \
                    split_version_spec (cspec)
@@ -353,31 +307,32 @@ class CaloClusterCorrSetup:
                     this_args[k[len(corrname)+1:]] = v
 
             # Make the tool.
-            tool = func (this_cells_name,
-                         this_suffix,
-                         this_version,
-                         this_key,
-                         this_source,
-                         generation = generation,
-                         use_metatool = use_metatool,
-                         order = this_order,
-                         **this_args)
-            out.append (tool)
-
-        if use_metatool:
-            out = [self.make_metatool (suffix + key, out, preserve_order)]
-
+            ca = func (flags,
+                       this_cells_name,
+                       this_suffix,
+                       this_version,
+                       this_key,
+                       this_source,
+                       generation = generation,
+                       order = this_order,
+                       **this_args)
+            tools.append (out.popToolsAndMerge (ca))
+
+        out.setPrivateTools (tools)
         return out
 
 
     # Look up a specific correction version; return the correction
     # list and the version.  Broken out to allow overriding, for
     # any special version-name handling needed.
-    def lookup_version (self, version):
+    def lookup_version (self, flags, version, corrclass):
         vcorrlist = self.versions.get (version)
-        if vcorrlist == None and version.startswith ('@'):
-            vcorrlist = self.versions.get ('@')
-        if vcorrlist == None:
+        if vcorrlist is None and version.startswith ('@'):
+            findvers = _find_version_from_cool_tag (flags, version[1:], corrclass)
+            vcorrlist = self.versions.get (findvers)
+            if vcorrlist is None:
+                vcorrlist = self.versions.get ('@')
+        if vcorrlist is None:
             raise CaloCorrectionConfigError\
                   ("Can't find global correction version %s." % version)
         return (vcorrlist, version)
@@ -405,10 +360,11 @@ class CaloClusterCorrSetup:
 
     # Get the correction generation, with a `-' appended if appropriate.
     @classmethod
-    def get_generation (cls):
+    def get_generation (cls, flags):
         generation = cls.correction_generation_default
-        if cls.correction_generation_flag.statusOn:
-            generation = cls.correction_generation_flag()
+        gen2 = getattr (flags.Calo.ClusterCorrection, cls.correction_generation_flag_name)
+        if gen2:
+            generation = gen2
         if generation != '':
             generation = generation + '-'
         return generation
@@ -417,17 +373,21 @@ class CaloClusterCorrSetup:
     #####################################################################
     # Code for writing to pool.
     # Make a set of corrections for writing to pool.
-    def make_ForPool (self, keys, corrclass):
+
+    def make_ForPool (self, flags, keys, corrclass):
         # Map from SG key to a list of tool instances.
         sgkeys = {}
 
-        # Map from tool names to instances.
-        tools = {}
+        # Names of all tools made so far
+        tool_names = set()
 
         # Map from (func, version) to (order, globversion).
         # For consistency checking.
         ordermap = {}
 
+        result = ComponentAccumulator()
+        tools = []
+
         # Go through each version, and make corrections.
         for (v,l) in self.versions.items():
             if v.startswith ('@'): continue
@@ -454,37 +414,53 @@ class CaloClusterCorrSetup:
                           ("Tool %s has order %d in %s but order %d in %s!" %
                            (func.__name__, order, v,
                             ordermap[okey][0], ordermap[okey][1]))
-                
+
                 # Find the list of valid keys for this tool.
-                valid_keys = func (None,
+                valid_keys = func (flags,
+                                   None,
                                    version = version,
                                    key = '@VALID_KEYS')
-                if valid_keys == None:
+                if valid_keys is None:
                     valid_keys = keys
                 for key in valid_keys:
-                    self.maybe_make_correction_for_pool (sgkeys, tools, key, c,
-                                                         corrclass)
+                    ca = self.maybe_make_correction_for_pool (flags,
+                                                              sgkeys,
+                                                              tool_names,
+                                                              key, c,
+                                                              corrclass)
+                    if ca:
+                        tools.append (ca.popPrivateTools())
+                        result.merge (ca)
+
+        result.setPrivateTools (tools)
 
-        return sgkeys
+        return (sgkeys, result)
 
 
-    def maybe_make_correction_for_pool (self, sgkeys, tools, key, cspec,
+    def maybe_make_correction_for_pool (self, flags,
+                                        sgkeys, tool_names, key, cspec,
                                         corrclass):
         (func, version, order, extra_args) = split_version_spec (cspec)
         name = func.__name__ + '_' + version + '_' + key
-        if name in tools:
-            return
-        tool = func (None, '', version, key, CALOCORR_TOPOOL,
-                     generation = self.get_generation(),
-                     order = order)
-        if tool != None and folder(tool).find ('/' + corrclass + '/') >= 0:
-            tools[name] = tool
+        if name in tool_names:
+            return None
+        ca = func (flags,
+                   None, '', version, key, CALOCORR_TOPOOL,
+                   generation = self.get_generation (flags),
+                   order = order)
+        if ca is None:
+            return None
+        tool = ca.popPrivateTools()
+        if tool is not None and folder(tool).find ('/' + corrclass + '/') >= 0:
+            tool_names.add (name)
             sgkeys.setdefault (sgkey(tool), []).append (tool)
-        return
+        ca.setPrivateTools (tool)
+        return ca
 
 
     # Add a dummy correction object to each folder.
     def add_dummies (self, sgkeys, valid_keys, generation):
+        CaloDummyCorrection = CompFactory.CaloDummyCorrection # CaloClusterCorrection
         toolnames = {}
         for sgkey in sgkeys.keys():
             ll = sgkey.split ('-')
@@ -509,17 +485,17 @@ class CaloClusterCorrSetup:
 
 
     # Configure algorithms for writing to pool.
-    def config_for_pool (self, keys, corrclass):
-        from CaloRec.CaloRecMakers import make_CaloClusterCorrDBWriter
-        from AthenaCommon.AlgSequence import AlgSequence
-        topalg = AlgSequence ("TopAlg")
+    def config_for_pool (self, flags, keys, corrclass):
+        result = ComponentAccumulator()
 
         corr_output_list = []
         tag_list = []
 
-        generation = self.get_generation()
+        generation = self.get_generation (flags)
 
-        sgkeys = self.make_ForPool (keys, corrclass)
+        (sgkeys, ca) = self.make_ForPool (flags, keys, corrclass)
+        ca.popPrivateTools()
+        result.merge (ca)
         self.add_dummies (sgkeys, keys, generation)
 
         for (sgkey, tools) in sgkeys.items():
@@ -527,8 +503,12 @@ class CaloClusterCorrSetup:
             name = 'write_' + sgkey
             name = name.replace ('.', '_')
 
-            alg = make_CaloClusterCorrDBWriter (name, sgkey, tools)
-            topalg += alg
+            # In CaloRec
+            alg = CompFactory.CaloClusterCorrDBWriter (name,
+                                                       key = sgkey,
+                                                       ClusterCorrectionTools = tools)
+            result.addEventAlgo (alg)
+                                                       
 
             corr_output_list.append ('CaloRec::ToolConstants#' +
                                      sgkey + '#' +
@@ -539,53 +519,14 @@ class CaloClusterCorrSetup:
         print (corr_output_list)
         print (tag_list)
 
-        return (corr_output_list, tag_list)
-
-
-    # Given a list of MetatoolHelper objects, construct an appropriate
-    # Configurable for a CaloRunClusterCorrections tool to run
-    # the desired corrections.
-    def make_metatool (self, suffix, tools, preserve_order):
-        name = 'CaloRunClusterCorrections' + suffix
-        if name in _alltools:
-            nsuff = 2
-            while (name + str (nsuff)) in _alltools:
-                nsuff += 1
-            name = name + str (nsuff)
-        _alltools[name] = (None, None, None)
-        metatool = CaloRunClusterCorrections (name)
-        specs = sum ([t.corrspec() for t in tools], [])
-        metatool.CorrSpecs = specs
-        metatool.PreserveOrder = preserve_order
-        log = logging.getLogger ('CaloClusterCorrection')
-        log.debug (" making metatool %s" % metatool.getName())
-        log.debug ("  specs: %s", specs)
-
-        # # If we're running this to make the trigger DB, turn on
-        # # NoClearProps.  But try to avoid importing trigger packages
-        # # if they haven't already been read.
-        # import sys
-        # if sys.modules.has_key ('TriggerJobOpts.TriggerFlags'):
-        #     TriggerFlags = sys.modules['TriggerJobOpts.TriggerFlags']
-        #     if hasattr (TriggerFlags, 'TriggerFlags'):
-        #         TriggerFlags = TriggerFlags.TriggerFlags
-        #         if hasattr (TriggerFlags, 'Online'):
-        #             Online = TriggerFlags.Online
-        #             if Online.doDBConfig():
-        #                 metatool.NoClearProps = True
-
-        # Ok, clearing the properties was an interesting idea, but in the
-        # usual configuration it won't save very much, and it causes problems
-        # with trying to clone algorithms for Hive.  Just disable it for now.
-        metatool.NoClearProps = True
-            
-        return metatool
+        return (corr_output_list, tag_list, result)
 
 
 ###########################################################################
 
 #
 # Create a correction tool.
+# FLAGS is the corrections flag object.
 # VERSIONS is a table listing all the available versions of the corrections.
 # It is a list of 4-element lists.  The last row should correspond to the
 # most recent version of the correction.
@@ -658,7 +599,6 @@ class CaloClusterCorrSetup:
 # in the version table, we look for one with a version of `@'.
 # If no match for that is found, the last entry in the table
 # will be used.
-# If VERSION starts with `@', USE_METATOOL must be enabled.
 #
 # KEY is a string to specify the type of cluster to which the correction
 # applies.  The convention is to use `ele55' for 5x5 electron clusters,
@@ -694,15 +634,13 @@ class CaloClusterCorrSetup:
 #
 # GENERATION is the generation string to embed in COOL tags.
 #
-# If USE_METATOOL is true, then instead of making a Configurable,
-# return a MetatoolHelper object.
-#
 # ORDER specifies the relative order in which this tool should be executed.
 #
 # Additional keyword arguments may be passed to override any tool
 # parameters/constants.
 #
-def makecorr (versions,
+def makecorr (flags,
+              versions,
               name,
               basename,
               suffix,
@@ -713,12 +651,11 @@ def makecorr (versions,
               confclass,
               corrclass,
               generation = '',
-              use_metatool = False,
               order = 0,
               **kw):
 
     # If no version specified, use the last one in the table.
-    if version == None:
+    if version is None:
         version = versions[-1][0]
 
     # Try to find the requested version.
@@ -749,10 +686,8 @@ def makecorr (versions,
         return valid_keys
 
     # Use the default source if one wasn't specified.
-    if source == None:
-        from CaloClusterCorrection.CaloClusterCorrectionFlags \
-             import caloClusterCorrectionFlags
-        source = caloClusterCorrectionFlags.DefaultSource()
+    if source is None:
+        source = flags.Calo.ClusterCorrection.defaultSource
 
     # Test to see if this correction specifies nopool.
     nopool = CALOCORR_NOPOOL in v[2]
@@ -762,11 +697,7 @@ def makecorr (versions,
         return None
 
     # Find the SG key and cool tag.
-    # If the tag is specified in the version, then we must be using
-    # the metatool, and the SG key doesn't get specified.
-    # Otherwise, the tag name is the same as the SG key.
     if version.startswith ('@'):
-        #assert use_metatool
         sgkey = None
         if version == '@GLOBAL':
             fulltag = version
@@ -785,7 +716,7 @@ def makecorr (versions,
         fulltag = "%s.%s%s" % (corrclass, generation, tmp)
 
     # The cool folder name.
-    if globalflags.DataSource() == 'data':    
+    if not flags.Input.isMC:
        folder = "/CALO/%s/%s" % (corrclass, basename)
     else:   
        folder = "/CALO/Ofl/%s/%s" % (corrclass, basename)
@@ -794,7 +725,7 @@ def makecorr (versions,
     prefix = key + sampnames[sampling] + "."
   
     # Construct a default tool name if one isn't specified.
-    if name == None:
+    if name is None:
         name = basename
         name = name + sampnames[sampling]
         if version != '':
@@ -807,7 +738,7 @@ def makecorr (versions,
             name = name + "_" + key
 
     # Add a suffix if given.
-    if suffix != None:
+    if suffix is not None:
         name = name + suffix
 
     # If we're not writing to pool, we need to make sure the name's unique.
@@ -819,26 +750,24 @@ def makecorr (versions,
     _alltools[name] = (folder, fulltag, sgkey)
 
     # If no class was explicitly specified, take it from the table.
-    if confclass == None:
+    if confclass is None:
         confclass = v[1]
 
     # It may be sampling-dependent.
-    if type (confclass) == type ({}) and sampling != None:
+    if isinstance (confclass, dict) and sampling is not None:
         confclass = confclass[sampling]
 
+    result = ComponentAccumulator()
+
     # Create the tool!
-    if use_metatool:
-        corr = MetatoolHelper (confclass, name)
-    else:
-        _maybe_patchclass (confclass)
-        corr = confclass (name)
+    corr = confclass (name)
 
     # Set the prefix for all pool-capable tools.
     if not nopool:
         corr.prefix = prefix
 
     # Try to find a source from which to configure it.
-    if type(source) != type([]):
+    if not isinstance (source, list):
         source = [source]
     avail = v[2]
     wherefrom = None
@@ -851,21 +780,25 @@ def makecorr (versions,
                 wherefrom = sel[0]
                 break
 
-        # elif s == CALOCORR_POOL:
-        #     sel = [x for x in avail if _is_pool_source (x)]
-        #     if len (sel) > 0 and _config_from_pool (corr, sel[0], sgkey):
-        #         if not use_metatool:
-        #             _mung_prefix (corr, key, valid_keys)
-        #         wherefrom = sel[0]
-        #         break
+        elif s == CALOCORR_POOL:
+            sel = [x for x in avail if _is_pool_source (x)]
+            if len (sel) > 0:
+                ca2 = _config_from_pool (flags, corr, sel[0], sgkey)
+                if ca2:
+                    result.merge (ca2)
+                    _mung_prefix (corr, key, valid_keys)
+                    wherefrom = sel[0]
+                    break
 
         elif s == CALOCORR_COOL:
             sel = [x for x in avail if _is_cool_source (x)]
-            if len (sel) > 0 and config_from_cool (corr, folder, fulltag):
-                if not use_metatool:
+            if len (sel) > 0:
+                ca2 = _config_from_cool (flags, corr, folder, fulltag)
+                if ca2:
+                    result.merge (ca2)
                     _mung_prefix (corr, key, valid_keys)
-                wherefrom = 'cool'
-                break
+                    wherefrom = 'cool'
+                    break
 
         elif _is_jo_source (s):
             if _config_from_jo (corr, s, key, sampling, valid_keys, order):
@@ -873,13 +806,14 @@ def makecorr (versions,
                 break
 
         elif _is_pool_source (s):
-            if _config_from_pool (corr, s, sgkey):
-                if not use_metatool:
-                    _mung_prefix (corr, key, valid_keys)
+            ca2 = _config_from_pool (flags, corr, s, sgkey)
+            if ca2:
+                result.merge (ca2)
+                _mung_prefix (corr, key, valid_keys)
                 wherefrom = s
                 break
 
-    if wherefrom == None:
+    if wherefrom is None:
         raise CaloCorrectionConfigError \
               ("Can't find any source to configure tool `%s'.  Sources: %s" %
                (name, source))
@@ -891,19 +825,12 @@ def makecorr (versions,
     # If any other keyword arguments were passed, make those assignments.
     # This will override anything otherwise read from JO/pool.
     for (k, val) in kw.items():
-        if val != None:
-            _setprop (corr, k, val)
+        if val is not None:
+            setattr (corr, k, val)
 
     # Done!
-    return corr
-
-
-# Helper for setting a correction tool property/constant.
-def _setprop (obj, k, val):
-    if type(val) == type([]) and type(obj.properties()[k]) != type([]):
-        val = str(val)
-    setattr (obj, k, val)
-    return
+    result.setPrivateTools (corr)
+    return result
 
 
 # Test to see if S looks like a job options source.
@@ -942,13 +869,13 @@ def _config_from_jo (corr, jo, key, sampling, valid_keys, order):
     parms = getattr (mod, paramclass)
 
     # It may be sampling-dependent.
-    if type (parms) == type ({}) and sampling != None:
+    if isinstance (parms, dict) and sampling is not None:
         parms = parms[sampling]
 
-    if order != 0 and 'order' in corr.properties():
-        _setprop (corr, 'order', order)
-    if 'isDummy' in corr.properties():
-        _setprop (corr, 'isDummy', 0)
+    if order != 0 and hasattr (corr, 'order'):
+        setattr (corr, 'order', order)
+    if hasattr (corr, 'isDummy'):
+        setattr (corr, 'isDummy', 0)
 
     log = logging.getLogger ('CaloClusterCorrection')
 
@@ -981,50 +908,48 @@ def _config_from_jo (corr, jo, key, sampling, valid_keys, order):
                 # Can't look up a key in val --- just use val as-is.
                 pass
 
-            _setprop (corr, k, val)
+            setattr (corr, k, val)
     return True
 
 
 # Configure a correction tool from POOL.
-def _config_from_pool (corr, poolfile, sgkey):
+def _config_from_pool (flags, corr, poolfile, sgkey):
     if not poolfile or not poolfiles[poolfile]:
         return False
     
-    # Tell the tool to look in pool for this key.
-    corr.DBHandleKey = sgkey
+    ca = ComponentAccumulator()
 
     # If this is the first time we've seen this file,
     # add it to CondProxyProvider.
-    # Pick up the provider by looking in the top-level global scope.
-    global ServiceMgr
     if poolfile not in  _poolfiles_seen:
-        _poolfiles_seen[poolfile] = 1
-        try:
-            ServiceMgr.CondProxyProvider.InputCollections += \
-                                                          [poolfiles[poolfile]]
-        except AttributeError:
-            # CondProxyProvider hasn't been made yet?
-            from EventSelectorAthenaPool.EventSelectorAthenaPoolConf \
-                 import CondProxyProvider
-            ServiceMgr += CondProxyProvider()
-            ServiceMgr.ProxyProviderSvc.ProviderNames += ["CondProxyProvider"]
-            ServiceMgr.CondProxyProvider.InputCollections += \
-                                                          [poolfiles[poolfile]]
-    return True
+        from EventSelectorAthenaPool.CondProxyProviderConfig import CondProxyProviderCfg
+        ca.merge (CondProxyProviderCfg (flags, [poolfiles[poolfile]]))
+
+    # Tell the tool to look in pool for this key.
+    corr.DBHandleKey = sgkey
+
+    # Set up a conditions algorithm to convert from the data in DetectorStore
+    # to a conditions object.
+    ToolConstantsCondAlg = CompFactory.ToolConstantsCondAlg # CaloRec
+
+    name = 'ToolConstantsCondAlg_' + sgkey.replace ('.', '_')
+    alg = ToolConstantsCondAlg (name,
+                                DetStoreKey = sgkey,
+                                ToolConstantsKey = sgkey)
+    ca.addCondAlgo (alg)
+    return ca
 
 
 # Configure a correction tool from COOL.
-def config_from_cool (corr, folder, tag):
+def _config_from_cool (flags, corr, folder, tag):
     # Folder name has form /CALO/CORRCLASS/NAME
     # Find the subdetector name string to use.
     fsplit = folder.split ('/')
-    if fsplit[1] == 'Ofl':
-       corrclass = folder.split ('/')[3]
+    if fsplit[2] == 'Ofl':
+       corrclass = folder.split ('/')[4]
     else:   
-       corrclass = folder.split ('/')[2]
-    from CaloClusterCorrection.CaloClusterCorrectionFlags \
-         import caloClusterCorrectionFlags
-    sndict = caloClusterCorrectionFlags.DBSubdetName()
+       corrclass = folder.split ('/')[3]
+    sndict = flags.Calo.ClusterCorrection.dbSubdetName
     subdetname = sndict.get (corrclass)
     if not subdetname:
         subdetname = sndict.get (None)
@@ -1033,21 +958,26 @@ def config_from_cool (corr, folder, tag):
 
     # We can't use more than one tag from a folder.
     oldtag = _folders_used.get (folder)
-    if oldtag != None and oldtag != tag:
+    if oldtag is not None and oldtag != tag:
         return False
 
+    ca = ComponentAccumulator()
+
     _folders_used[folder] = tag
-    if oldtag == None:
-        if tag != '@GLOBAL':
-            folder = folder + ' <tag>%s</tag>' % tag
+    if oldtag is None:
+        from IOVDbSvc.IOVDbSvcConfig import addFolders
+        tagstr = '' if tag =='@GLOBAL' else tag
         sdsuffix = '_OFL' if 'Ofl' in folder else ''
-        conddb.addFolder (subdetname + sdsuffix,
-                          folder,
-                          className = 'CaloRec::ToolConstants')
+        ca.merge (addFolders (flags,
+                              folder,
+                              detDb = subdetname + sdsuffix,
+                              className = 'CaloRec::ToolConstants',
+                              tag = tagstr))
+                               
         log = logging.getLogger ('CaloClusterCorrection')
         log.debug ("Adding cool folder `%s' for subdetector name %s" %
                    (folder, subdetname))
-    return True
+    return ca
 
 
 # When we're reading from pool/cool, the prefix _must_ be one that
@@ -1059,9 +989,9 @@ def _matchlen (a, b):
         i = i+1
     return i
 def _longest_match (key, valid_keys):
-    if type(valid_keys) != type([]):
+    if not isinstance (valid_keys, list):
         valid_keys = [valid_keys]
-    if valid_keys == None or key in valid_keys:
+    if valid_keys is None or key in valid_keys:
         return key
     new_key = valid_keys[0]
     for k in valid_keys[1:]:
@@ -1069,7 +999,7 @@ def _longest_match (key, valid_keys):
             new_key = k
     return new_key
 def _mung_prefix (corr, key, valid_keys):
-    if valid_keys == None or key in valid_keys: return
+    if valid_keys is None or key in valid_keys: return
 
     # Find the best match.
     new_key = _longest_match (key, valid_keys)
@@ -1094,47 +1024,3 @@ def sgkey (tool):
 
 
 
-##############################################################################
-# Hack around a problem with the interaction between Configurable
-# and reading tool constants from pool.
-#
-# When ToolWithConstantsMixin reads constants from pool, we still want
-# to allow overriding the constants from job options.  So, if TWCM sees
-# a setProperty call for a given property, it assumes that this is being
-# overridden from JO, and will use what's set in the setProperty call
-# instead of what's read from pool.
-#
-# This worked fine for non-Configurable setup.  However, when one uses
-# Configurable to set up ones class, it ends up setting _all_ the properties,
-# even those that are still defaulted.  So, what we end up seeing
-# is that TWCM::setProperty gets called for _all_ properties with
-# the default --- i.e., null --- values, so the values read from pool
-# never get used.
-#
-# The code here patches the Configurable classes for the corrections
-# so that setup() does not transport to C++ those properties that
-# were defaulted.
-#
-
-from AthenaCommon.Configurable import Configurable
-def _calocorr_setup (self):
-    save_properties = {}
-    try:
-        for (k, v) in list(self._properties.items()):
-            if self in v.history and len (v.history[self]) >= 1:
-                pass
-            else:
-                save_properties[k] = v
-                del self._properties[k]
-        Configurable.setup (self)
-    finally:
-        for (k, v) in save_properties.items():
-            self._properties[k] = v
-    return
-
-def _maybe_patchclass (cls):
-    if '_calocorr_patched' in cls.__dict__:
-        return
-    cls.setup = _calocorr_setup
-    cls._calocorr_patched = 1
-    return
diff --git a/Calorimeter/CaloClusterCorrection/python/compat.py b/Calorimeter/CaloClusterCorrection/python/compat.py
new file mode 100644
index 0000000000000000000000000000000000000000..b39ea3799756db0538ab4f3666d002f5d84f7534
--- /dev/null
+++ b/Calorimeter/CaloClusterCorrection/python/compat.py
@@ -0,0 +1,58 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+#
+# File: CaloClusterCorrection/python/compat.py
+# Created: Aug 2020, sss
+# Purpose: Backwards-compatbility helpers.
+#
+# Helpers for configuring cluster corrections using old configuration.
+#
+
+
+from AthenaConfiguration.ComponentAccumulator import \
+     conf2toConfigurable, appendCAtoAthena
+import string
+
+
+#
+# Return a new-style configuration flags object containing information
+# from old flags.
+#
+def makeFlags():
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.loadAllDynamicFlags()
+    flags = ConfigFlags.clone()
+
+    from CaloClusterCorrection.CaloClusterCorrectionFlags \
+         import caloClusterCorrectionFlags
+
+    for name in dir(caloClusterCorrectionFlags):
+        if name[0] not in string.ascii_uppercase:
+            continue
+        flag = getattr (caloClusterCorrectionFlags, name)
+        if not flag.isDefault():
+            if name == 'DBSubdetName':
+                name2 = 'dbSubdetName'
+            else:
+                name2 = name[0].lower() + name[1:]
+            val = flag.get_Value()
+            setattr (flags.Calo.ClusterCorrection, name2, val)
+
+    from AthenaCommon.JobProperties import jobproperties
+    from AthenaCommon.GlobalFlags   import globalflags
+
+    flags.GeoModel.AtlasVersion = jobproperties.Global.DetDescrVersion()
+    flags.Input.isMC = globalflags.DataSource() != 'data'
+    flags.IOVDb.GlobalTag = globalflags.ConditionsTag()
+
+    return flags
+
+
+#
+# Apply the results of a ComponentAccumulator to Athena.
+# Returns the list of configured correction tools.
+#
+def unpackCA (ca):
+    tools = [conf2toConfigurable(c) for c in  ca.popPrivateTools()]
+    appendCAtoAthena (ca)
+    return tools
diff --git a/Calorimeter/CaloClusterCorrection/python/constants.py b/Calorimeter/CaloClusterCorrection/python/constants.py
index 99236261486ba28dfca141215cbd88914a241aa7..8db368c1e8cb298e28a7f5cb5ef631d7e327fbbb 100644
--- a/Calorimeter/CaloClusterCorrection/python/constants.py
+++ b/Calorimeter/CaloClusterCorrection/python/constants.py
@@ -1,7 +1,5 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
-#
-# $Id$
 #
 # File: CaloClusterCorrection/python/constants.py
 # Created: Nov 2009, sss
diff --git a/Calorimeter/CaloClusterCorrection/python/linkDummyTags.py b/Calorimeter/CaloClusterCorrection/python/linkDummyTags.py
index dece0a043470af6ee1467ad752ef5cb14bbcef59..5204f4775bd24f4340be39162e8b1249d81b95cf 100644
--- a/Calorimeter/CaloClusterCorrection/python/linkDummyTags.py
+++ b/Calorimeter/CaloClusterCorrection/python/linkDummyTags.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 #
 # File: CaloClusterCorrection/python/linkDummyTags.py
@@ -23,8 +23,8 @@ def get_htags (folder):
     htags = []
     for t in tags:
         try:
-            rtag = subf.resolveTag(t)
-        except:
+            subf.resolveTag(t)
+        except Exception:
             htags.append (t)
 
     tags = subf.listTags()
@@ -40,7 +40,7 @@ def link_tag (f, htag, dtag):
     try:
         f.findTagRelation(htag)
         f.deleteTagRelation(htag)
-    except:
+    except Exception:
         pass
     f.createTagRelation (htag, dtag)
     print ('Linked', htag)
diff --git a/Calorimeter/CaloClusterCorrection/share/CaloSwCorrectionsToPool.py b/Calorimeter/CaloClusterCorrection/share/CaloSwCorrectionsToPool.py
index 08ba9b22672108ba670218301962aaaf71d49334..042050500d0ad05f61a7210a1f6c4af9e657fe14 100755
--- a/Calorimeter/CaloClusterCorrection/share/CaloSwCorrectionsToPool.py
+++ b/Calorimeter/CaloClusterCorrection/share/CaloSwCorrectionsToPool.py
@@ -20,9 +20,13 @@ CaloSwCorrKeys = ['ele55', 'ele35', 'ele37',
 from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
 from CaloClusterCorrection.common import CALOCORR_SW
 
-(corr_output_list, tag_list) =\
-                   CaloSwCorrections.config_for_pool (CaloSwCorrKeys,
+from CaloClusterCorrection.compat import makeFlags
+from AthenaConfiguration.ComponentAccumulator import appendCAtoAthena
+(corr_output_list, tag_list, ca) =\
+                   CaloSwCorrections.config_for_pool (makeFlags(),
+                                                      CaloSwCorrKeys,
                                                       CALOCORR_SW)
+appendCAtoAthena (ca)
 
 # include the basic setup for the conditions output stream
 pool_file = CALOCORR_POOLFILE
diff --git a/Calorimeter/CaloClusterCorrection/share/CaloTopoEMCorrectionsToPool.py b/Calorimeter/CaloClusterCorrection/share/CaloTopoEMCorrectionsToPool.py
index 9b81f152a1642b35e8f33d52171a598e193c90bf..cf915f2e378efb4d5b52918398dcde0bd4000d80 100755
--- a/Calorimeter/CaloClusterCorrection/share/CaloTopoEMCorrectionsToPool.py
+++ b/Calorimeter/CaloClusterCorrection/share/CaloTopoEMCorrectionsToPool.py
@@ -19,9 +19,13 @@ CaloTopoEMCorrKeys = ['ele633', 'ele420', 'gam633']
 from CaloClusterCorrection.CaloTopoEMCorrections import CaloTopoEMCorrections
 from CaloClusterCorrection.common import CALOCORR_EMTOPO
 
-(corr_output_list, tag_list) =\
-                   CaloTopoEMCorrections.config_for_pool (CaloTopoEMCorrKeys,
+from CaloClusterCorrection.compat import makeFlags
+from AthenaConfiguration.ComponentAccumulator import appendCAtoAthena
+(corr_output_list, tag_list, ca) =\
+                   CaloTopoEMCorrections.config_for_pool (makeFlags(),
+                                                          CaloTopoEMCorrKeys,
                                                           CALOCORR_EMTOPO)
+appendCAtoAthena (ca)
 
 # include the basic setup for the conditions output stream
 pool_file = CALOCORR_POOLFILE
diff --git a/Calorimeter/CaloClusterCorrection/share/config_test.ref b/Calorimeter/CaloClusterCorrection/share/config_test.ref
new file mode 100644
index 0000000000000000000000000000000000000000..a1c732ce440b8f2ecb429cb4c986f57e1906c17b
--- /dev/null
+++ b/Calorimeter/CaloClusterCorrection/share/config_test.ref
@@ -0,0 +1,26 @@
+Py:Athena            INFO using release [?-22.0.0] [?] [?/?] -- built on [?]
+Py:CaloClusterCorrection    INFO EM sliding-window corrections for ele35 () using version v12_calh
+Py:AutoConfigFlags    INFO Obtaining metadata of auto-configuration by peeking into /home/sss/nobackup/referencefiles/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1
+Py:MetaReader        INFO Current mode used: peeker
+Py:MetaReader        INFO Current filenames: ['/home/sss/nobackup/referencefiles/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1']
+Py:CaloClusterCorrection    INFO EM sliding-window corrections for gam35_conv () using version @GLOBAL
+Py:CaloClusterCorrection    INFO EM sliding-window corrections for gam35 () using version @GLOBAL
+Py:CaloClusterCorrection    INFO EM sliding-window corrections for gam35 () using version v6_lwc
+Py:CaloClusterCorrection    INFO EM sliding-window corrections for gam35 () using version v6_lwc
+Py:CaloClusterCorrection    INFO EM sliding-window corrections for gam35 () using version @CaloOflSwClusterCorrections-00-02-01-v6_calh
+PrivateToolHandleArray    WARNING CaloDummyCorrection('larupdatee-dummy', prefix='e.') with instance name 'larupdatee-dummy' already in list. Not adding CaloDummyCorrection('larupdatee-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('etaoffe-dummy', prefix='e.') with instance name 'etaoffe-dummy' already in list. Not adding CaloDummyCorrection('etaoffe-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('phioffe-dummy', prefix='e.') with instance name 'phioffe-dummy' already in list. Not adding CaloDummyCorrection('phioffe-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('phimode-dummy', prefix='e.') with instance name 'phimode-dummy' already in list. Not adding CaloDummyCorrection('phimode-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('etamode-dummy', prefix='e.') with instance name 'etamode-dummy' already in list. Not adding CaloDummyCorrection('etamode-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('clcone-dummy', prefix='e.') with instance name 'clcone-dummy' already in list. Not adding CaloDummyCorrection('clcone-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('gape-dummy', prefix='e.') with instance name 'gape-dummy' already in list. Not adding CaloDummyCorrection('gape-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('lwce-dummy', prefix='e.') with instance name 'lwce-dummy' already in list. Not adding CaloDummyCorrection('lwce-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('rface-dummy', prefix='e.') with instance name 'rface-dummy' already in list. Not adding CaloDummyCorrection('rface-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('calhitse-dummy', prefix='e.') with instance name 'calhitse-dummy' already in list. Not adding CaloDummyCorrection('calhitse-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('trcorre-dummy', prefix='e.') with instance name 'trcorre-dummy' already in list. Not adding CaloDummyCorrection('trcorre-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('deadOTXpse-dummy', prefix='e.') with instance name 'deadOTXpse-dummy' already in list. Not adding CaloDummyCorrection('deadOTXpse-dummy', prefix='e.')
+PrivateToolHandleArray    WARNING CaloDummyCorrection('deadOTXbacke-dummy', prefix='e.') with instance name 'deadOTXbacke-dummy' already in list. Not adding CaloDummyCorrection('deadOTXbacke-dummy', prefix='e.')
+Final OutputList:
+['CaloRec::ToolConstants#CaloSwClusterCorrections.larupdate#/CALO/CaloSwClusterCorrections/larupdate', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-g3#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-g3#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phimod-g3#/CALO/CaloSwClusterCorrections/phimod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etamod-g3#/CALO/CaloSwClusterCorrections/etamod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.larupdate-dont_update_e#/CALO/CaloSwClusterCorrections/larupdate', 'CaloRec::ToolConstants#CaloSwClusterCorrections.clcon-g3#/CALO/CaloSwClusterCorrections/clcon', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-g3#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-v2#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-v2#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phimod-v2#/CALO/CaloSwClusterCorrections/phimod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etamod-v2#/CALO/CaloSwClusterCorrections/etamod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-v2#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.clcon-dc2#/CALO/CaloSwClusterCorrections/clcon', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-old#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-904#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.clcon-dc2new#/CALO/CaloSwClusterCorrections/clcon', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-904gap#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-v3#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-v3#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.rfac-v3#/CALO/CaloSwClusterCorrections/rfac', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-v3#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-v3#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-v3_1#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-v3_1#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phimod-v3#/CALO/CaloSwClusterCorrections/phimod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etamod-v3#/CALO/CaloSwClusterCorrections/etamod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.rfac-v4#/CALO/CaloSwClusterCorrections/rfac', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-v4#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-v4#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-v4#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-v4#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phimod-v4#/CALO/CaloSwClusterCorrections/phimod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etamod-v4#/CALO/CaloSwClusterCorrections/etamod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-v4_1#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v1#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v2#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.trcorr-v1#/CALO/CaloSwClusterCorrections/trcorr', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-v5#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-v6#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v5#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.trcorr-v5#/CALO/CaloSwClusterCorrections/trcorr', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v5_1#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.trcorr-v5_1#/CALO/CaloSwClusterCorrections/trcorr', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v6#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-v4data#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phimod-v4data#/CALO/CaloSwClusterCorrections/phimod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v6leakdata#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.deadOTXps-v1#/CALO/CaloSwClusterCorrections/deadOTXps', 'CaloRec::ToolConstants#CaloSwClusterCorrections.deadOTXback-v1#/CALO/CaloSwClusterCorrections/deadOTXback', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v8#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v8leakdata#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v9#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-v9leakdata#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-v5#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-v6#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.rfac-v5#/CALO/CaloSwClusterCorrections/rfac', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-v5#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-v5#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-v5data#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-atlfast_v1#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-pi0_v1#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.larupdate-dummy#/CALO/CaloSwClusterCorrections/larupdate', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etaoff-dummy#/CALO/CaloSwClusterCorrections/etaoff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phioff-dummy#/CALO/CaloSwClusterCorrections/phioff', 'CaloRec::ToolConstants#CaloSwClusterCorrections.phimod-dummy#/CALO/CaloSwClusterCorrections/phimod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.etamod-dummy#/CALO/CaloSwClusterCorrections/etamod', 'CaloRec::ToolConstants#CaloSwClusterCorrections.clcon-dummy#/CALO/CaloSwClusterCorrections/clcon', 'CaloRec::ToolConstants#CaloSwClusterCorrections.gap-dummy#/CALO/CaloSwClusterCorrections/gap', 'CaloRec::ToolConstants#CaloSwClusterCorrections.lwc-dummy#/CALO/CaloSwClusterCorrections/lwc', 'CaloRec::ToolConstants#CaloSwClusterCorrections.rfac-dummy#/CALO/CaloSwClusterCorrections/rfac', 'CaloRec::ToolConstants#CaloSwClusterCorrections.calhits-dummy#/CALO/CaloSwClusterCorrections/calhits', 'CaloRec::ToolConstants#CaloSwClusterCorrections.trcorr-dummy#/CALO/CaloSwClusterCorrections/trcorr', 'CaloRec::ToolConstants#CaloSwClusterCorrections.deadOTXps-dummy#/CALO/CaloSwClusterCorrections/deadOTXps', 'CaloRec::ToolConstants#CaloSwClusterCorrections.deadOTXback-dummy#/CALO/CaloSwClusterCorrections/deadOTXback']
+['CaloSwClusterCorrections.00-02-13-larupdate', 'CaloSwClusterCorrections.00-02-13-etaoff-g3', 'CaloSwClusterCorrections.00-02-13-phioff-g3', 'CaloSwClusterCorrections.00-02-13-phimod-g3', 'CaloSwClusterCorrections.00-02-13-etamod-g3', 'CaloSwClusterCorrections.00-02-13-larupdate-dont_update_e', 'CaloSwClusterCorrections.00-02-13-clcon-g3', 'CaloSwClusterCorrections.00-02-13-gap-g3', 'CaloSwClusterCorrections.00-02-13-etaoff-v2', 'CaloSwClusterCorrections.00-02-13-phioff-v2', 'CaloSwClusterCorrections.00-02-13-phimod-v2', 'CaloSwClusterCorrections.00-02-13-etamod-v2', 'CaloSwClusterCorrections.00-02-13-gap-v2', 'CaloSwClusterCorrections.00-02-13-clcon-dc2', 'CaloSwClusterCorrections.00-02-13-lwc-old', 'CaloSwClusterCorrections.00-02-13-lwc-904', 'CaloSwClusterCorrections.00-02-13-clcon-dc2new', 'CaloSwClusterCorrections.00-02-13-lwc-904gap', 'CaloSwClusterCorrections.00-02-13-gap-v3', 'CaloSwClusterCorrections.00-02-13-lwc-v3', 'CaloSwClusterCorrections.00-02-13-rfac-v3', 'CaloSwClusterCorrections.00-02-13-etaoff-v3', 'CaloSwClusterCorrections.00-02-13-phioff-v3', 'CaloSwClusterCorrections.00-02-13-gap-v3_1', 'CaloSwClusterCorrections.00-02-13-lwc-v3_1', 'CaloSwClusterCorrections.00-02-13-phimod-v3', 'CaloSwClusterCorrections.00-02-13-etamod-v3', 'CaloSwClusterCorrections.00-02-13-rfac-v4', 'CaloSwClusterCorrections.00-02-13-etaoff-v4', 'CaloSwClusterCorrections.00-02-13-phioff-v4', 'CaloSwClusterCorrections.00-02-13-gap-v4', 'CaloSwClusterCorrections.00-02-13-lwc-v4', 'CaloSwClusterCorrections.00-02-13-phimod-v4', 'CaloSwClusterCorrections.00-02-13-etamod-v4', 'CaloSwClusterCorrections.00-02-13-etaoff-v4_1', 'CaloSwClusterCorrections.00-02-13-calhits-v1', 'CaloSwClusterCorrections.00-02-13-calhits-v2', 'CaloSwClusterCorrections.00-02-13-trcorr-v1', 'CaloSwClusterCorrections.00-02-13-lwc-v5', 'CaloSwClusterCorrections.00-02-13-lwc-v6', 'CaloSwClusterCorrections.00-02-13-calhits-v5', 'CaloSwClusterCorrections.00-02-13-trcorr-v5', 'CaloSwClusterCorrections.00-02-13-calhits-v5_1', 'CaloSwClusterCorrections.00-02-13-trcorr-v5_1', 'CaloSwClusterCorrections.00-02-13-calhits-v6', 'CaloSwClusterCorrections.00-02-13-phioff-v4data', 'CaloSwClusterCorrections.00-02-13-phimod-v4data', 'CaloSwClusterCorrections.00-02-13-calhits-v6leakdata', 'CaloSwClusterCorrections.00-02-13-deadOTXps-v1', 'CaloSwClusterCorrections.00-02-13-deadOTXback-v1', 'CaloSwClusterCorrections.00-02-13-calhits-v8', 'CaloSwClusterCorrections.00-02-13-calhits-v8leakdata', 'CaloSwClusterCorrections.00-02-13-calhits-v9', 'CaloSwClusterCorrections.00-02-13-calhits-v9leakdata', 'CaloSwClusterCorrections.00-02-13-gap-v5', 'CaloSwClusterCorrections.00-02-13-gap-v6', 'CaloSwClusterCorrections.00-02-13-rfac-v5', 'CaloSwClusterCorrections.00-02-13-etaoff-v5', 'CaloSwClusterCorrections.00-02-13-phioff-v5', 'CaloSwClusterCorrections.00-02-13-phioff-v5data', 'CaloSwClusterCorrections.00-02-13-lwc-atlfast_v1', 'CaloSwClusterCorrections.00-02-13-lwc-pi0_v1', 'CaloSwClusterCorrections.00-02-13-larupdate-dummy', 'CaloSwClusterCorrections.00-02-13-etaoff-dummy', 'CaloSwClusterCorrections.00-02-13-phioff-dummy', 'CaloSwClusterCorrections.00-02-13-phimod-dummy', 'CaloSwClusterCorrections.00-02-13-etamod-dummy', 'CaloSwClusterCorrections.00-02-13-clcon-dummy', 'CaloSwClusterCorrections.00-02-13-gap-dummy', 'CaloSwClusterCorrections.00-02-13-lwc-dummy', 'CaloSwClusterCorrections.00-02-13-rfac-dummy', 'CaloSwClusterCorrections.00-02-13-calhits-dummy', 'CaloSwClusterCorrections.00-02-13-trcorr-dummy', 'CaloSwClusterCorrections.00-02-13-deadOTXps-dummy', 'CaloSwClusterCorrections.00-02-13-deadOTXback-dummy']
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.cxx b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.cxx
index 9e99d4f3d3c4d83b5a40c67b975bfba6617cb6d9..7d82941633cfeae15d2c1a5e7cd20b49febf927b 100755
--- a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.cxx
+++ b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.cxx
@@ -35,9 +35,6 @@ CaloClusterRemoveBad::CaloClusterRemoveBad(const std::string& type,
   // Energy threshold for cluster removal.
   declareProperty ("EMin", m_eThreshold = 0.0,
                    "Energy threshold for cluster removal.");
-
-  // Not used, but required to use this with CaloRunClusterCorrections.
-  declareProperty ("order",    m_order = 0);
 }
 
 
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.h b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.h
index 9870d1ecf44c9993fd233eddc3ecabd764c3b23e..f3c5c7a4962d1ab36821a2bb4ef5431c8627ea06 100755
--- a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.h
+++ b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveBad.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CALOCLUSTERCORRECTION_CALOCLUSTERREMOVEBAD_H
@@ -67,9 +67,6 @@ public:
   
   // property, energy threshold below which a cluster will be rejected.
   float  m_eThreshold ; 
-
-  // Not used, but required to use this with CaloRunClusterCorrections.
-  int m_order;
 };
 
 #endif
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.cxx b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.cxx
index cae9b28be7cfac1d3c3dc5092351349e58a60467..68d66f1f72c630f17f1acb16d3c550dec7d69883 100755
--- a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.cxx
+++ b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.cxx
@@ -35,9 +35,6 @@ CaloClusterRemoveDuplicates::CaloClusterRemoveDuplicates(const std::string& type
 { 
   declareProperty ("deta_cut", m_deta_cut = 0.05 );
   declareProperty ("dphi_cut", m_dphi_cut = 0.05 );
-
-  // Not used, but required to use this with CaloRunClusterCorrections.
-  declareProperty ("order",    m_order = 0);
 }
 
 StatusCode
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.h b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.h
index fc7b7ff65198d04013423b7fcce5675887eb1156..ce2605ec90892a5c3baeb03d83486d014b947579 100755
--- a/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.h
+++ b/Calorimeter/CaloClusterCorrection/src/CaloClusterRemoveDuplicates.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef CALOCLUSTERCORRECTION_CALOCLUSTERREMOVEDUPLICATES_H
@@ -47,9 +47,6 @@ class CaloClusterRemoveDuplicates :  public AthAlgTool, virtual public CaloClust
   // If two cluster are within deta_cut and dphi_cut, lower ET one will be removed
   float m_deta_cut;
   float m_dphi_cut;
-
-  // Not used, but required to use this with CaloRunClusterCorrections.
-  int m_order;
 };
 
 #endif
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.cxx b/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.cxx
index 8bef5210d9b947fc54c403194e41a830a8d2c6f9..9ce12cd1e73fbcc023027091eaf375a2e86396dd 100755
--- a/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.cxx
+++ b/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 /********************************************************************
@@ -39,8 +39,6 @@ CaloComputeSWcellWeights::CaloComputeSWcellWeights(const std::string& type,
                                                    const IInterface* parent)
   : AthAlgTool(type, name, parent)
 { 
-  // Not used, but required to use this with CaloRunClusterCorrections.
-  declareProperty ("order", m_order = 0);
 }
 
 // Make Corrections for SW cell weights 
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.h b/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.h
index 5051f2c863de28407174dc6d2cd6f781c6a7dc0b..37047d20001fd1f8ef65ed8b9e1713d89711a18c 100755
--- a/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.h
+++ b/Calorimeter/CaloClusterCorrection/src/CaloComputeSWcellWeights.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //Dear emacs, this is -*-c++-*-
@@ -45,9 +45,6 @@ class CaloComputeSWcellWeights : public AthAlgTool, virtual public CaloClusterCo
  private:
 
   CaloComputeSWcellWeights();
-
-  // Not used, but required to use this with CaloRunClusterCorrections.
-  int m_order;
 };
 
 #endif
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloRunClusterCorrections.cxx b/Calorimeter/CaloClusterCorrection/src/CaloRunClusterCorrections.cxx
deleted file mode 100644
index f7e66be66c4fecfebdabbd60bf42fb6a58625258..0000000000000000000000000000000000000000
--- a/Calorimeter/CaloClusterCorrection/src/CaloRunClusterCorrections.cxx
+++ /dev/null
@@ -1,872 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
- * @file  CaloRunClusterCorrections.cxx
- * @author scott snyder <snyder@bnl.gov>
- * @date Apr, 2009
- * @brief Meta-tool to construct and run a list of correction tools.
- *
- * See the header file for a complete description.
- */
-
-
-#include "CaloRunClusterCorrections.h"
-#include "CaloClusterCorrection/CaloClusterCorrectionCommon.h"
-#include "CaloRec/ToolWithConstantsMixin.h"
-#include "CaloUtils/CaloClusterStoreHelper.h"
-#include "xAODCaloEvent/CaloClusterContainer.h"
-#include "xAODCaloEvent/CaloCluster.h"
-#include "AthenaKernel/errorcheck.h"
-#include "CxxUtils/Array.h"
-#include "AthenaKernel/getMessageSvc.h"
-#include "Gaudi/Property.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IToolSvc.h"
-#include <set>
-
-
-using xAOD::CaloCluster;
-
-namespace {
-
-
-/// Return the number of characters A and B have in common at the start.
-size_t match_len (const std::string& a, const std::string& b)
-{
-  size_t len = 0;
-  while (len < a.size() && len < b.size() && a[len] == b[len])
-    ++len;
-  return len;
-}
-
-
-} // anonymous namespace
-
-
-/**
- * @brief Constructor.
- * @param type The type of the tool.
- * @param name The name of the tool.
- * @param parent The parent algorithm of the tool.
- */
-CaloRunClusterCorrections::CaloRunClusterCorrections (const std::string& type,
-                                                      const std::string& name,
-                                                      const IInterface* parent)
-  : CaloClusterProcessor (type, name, parent),
-    m_jos       ("JobOptionsSvc", name),
-    m_toolsvc   ("ToolSvc",       name),
-    m_coolInlineTool("Blob2ToolConstants",this)
-{
-  declareProperty ("CorrSpecs",     m_corrspecs);
-  declareProperty ("KeepList",      m_keeplist);
-  declareProperty ("PreserveOrder", m_preserveOrder = false);
-  declareProperty ("NoClearProps",  m_noClearProps = false);
-
-  declareProperty ("JobOptionsSvc", m_jos);
-  declareProperty ("ToolSvc",       m_toolsvc);
-  declareProperty ("COOLFolder",    m_folderName);
-}
-
-
-/**
- * @brief Standard initialize method.
- */
-StatusCode CaloRunClusterCorrections::initialize ATLAS_NOT_THREAD_SAFE /*Can Register callbacks but no need to be thread safe*/ ()
-{
-  // Fetch services used.
-  CHECK( m_jos.retrieve() );
-  CHECK( m_toolsvc.retrieve() );
-
-  // Parse input properties.
-  CHECK( parseCorrspecs() );
-  CHECK( parseKeeplist() );
-
-  // Create tools that don't depend on DB.
-  CHECK( createTools() );
-
-  // Set up callbacks for tools do depend on the DB.
-  // Note: we _must_ return @c SUCCESS after doing this, or we may
-  // cause a crash.
-  registerCallbacks();
-
-  ATH_CHECK( m_affKey.initialize() );
-  ATH_CHECK( m_LArBCKey.initialize() );
-  ATH_CHECK( m_TileBCKey.initialize() );
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Standard finalize method.
- */
-StatusCode CaloRunClusterCorrections::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Execute on a single cluster.
- * @param The cluster to process.
- * @param ctx The event context.
- *
- * This will iterate over all correction tools and call them on the
- * cluster.
- *
- * Warning: Any defined tools that cannot process single clusters
- * (only cluster collections) will be skipped!
- */
-StatusCode CaloRunClusterCorrections::execute (const EventContext& ctx,
-                                               CaloCluster* cluster) const
-{
-  // Loop over tools and run each one on the cluster.
-  for (unsigned int itool = 0;
-       itool < m_toolorder.size();
-       ++itool)
-  {
-    const Tool& tool = m_tools[m_toolorder[itool]];
-    if (tool.clusproc)
-      CHECK( tool.clusproc->execute (ctx, cluster) );
-    else {
-      REPORT_MESSAGE (MSG::WARNING)
-        << "Tool " << tool.name
-        << " is not defined for individual clusters; skipped!";
-    }
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Execute on an entire collection of clusters.
- * @param The container of clusters.
- * @param ctx The event context.
- *
- * This will iterate over all correction tools and call them on the
- * cluster collection.
- */
-StatusCode
-CaloRunClusterCorrections::execute (const EventContext& ctx,
-                                    xAOD::CaloClusterContainer* collection) const
-{
-  // Loop over correction tools.
-  for (unsigned int itool = 0;
-       itool < m_toolorder.size();
-       ++itool)
-  {
-    const Tool& tool = m_tools[m_toolorder[itool]];
-
-    // See if we should store an intermediate cluster container before
-    // the next correction.
-    if (!tool.save_container.empty()) {
-      xAOD::CaloClusterContainer* interimCont=CaloClusterStoreHelper::makeContainer(&(*evtStore()),tool.save_container,msg());
-      CaloClusterStoreHelper::copyContainer(collection,interimCont);
-      CHECK(CaloClusterStoreHelper::finalizeClusters(&(*evtStore()),interimCont, tool.save_container, msg()));
-    }
-    
-    CHECK( tool.collproc->execute (ctx, collection) );
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Change the name of the CaloCellContainer used by this tool.
- * @param name The new container name.
- */
-StatusCode
-CaloRunClusterCorrections::setCaloCellContainerName
-  (const std::string& name)
-{
-  for (size_t itool = 0; itool < m_tools.size(); ++itool) {
-    ISetCaloCellContainerName* setter = m_tools[itool].setcellcontname;
-    if (setter)
-      CHECK (setter->setCaloCellContainerName (name) );
-  }
-  return StatusCode::SUCCESS;
-}
-
-
-//****************************************************************************
-
-
-/**
- * @brief Parse the supplied correction specification and create
- *        the Tools vector.  Do not actually create the tools yet.
- */
-StatusCode CaloRunClusterCorrections::parseCorrspecs ATLAS_NOT_THREAD_SAFE ()
-{
-  size_t ispec = 0;
-  while (ispec < m_corrspecs.size()) {
-    // Starting a new tool.
-    Tool tool;
-    tool.collproc = nullptr;
-    tool.clusproc = nullptr;
-    tool.setcellcontname = nullptr;
-
-    // -- Name.
-    tool.name = m_corrspecs[ispec++];
-    std::string fullname = this->name() + "." + tool.name;
-
-    // -- Key or class.
-    if (ispec >= m_corrspecs.size()) {
-      REPORT_ERROR(StatusCode::FAILURE)
-        << "Malformed corrections spec: missing location.";
-      return StatusCode::FAILURE;
-    }
-
-    tool.use_callback = false;
-    if (m_corrspecs[ispec][0] == '+') {
-      // Initializing from JO.
-      tool.clsname = m_corrspecs[ispec].substr (1);
-    }
-    else if (m_corrspecs[ispec][0] == '@') {
-      // Initializing directly from detector store (POOL).
-      tool.sgkey = m_corrspecs[ispec].substr (1);
-    }
-    else {
-      // Initializing from COOL.
-      // The SG key here is the same as the folder name.
-      tool.sgkey = m_corrspecs[ispec];
-      tool.use_callback = true;
-    }
-
-    if (tool.clsname.empty() && tool.sgkey.empty()) {
-      REPORT_ERROR(StatusCode::FAILURE)
-        << "Malformed corrections spec: missing key-or-classname.";
-      return StatusCode::FAILURE;
-    }
-
-    // Set tool properties needed to access the detector store.
-    // We don't want the tool itself to register a callback; we'll
-    // do that ourselves and forward callbacks as appropriate.
-    if (!tool.sgkey.empty()) {
-      m_jos->set (fullname + ".detStoreKey", tool.sgkey);
-      m_jos->set (fullname + ".useCallback", Gaudi::Utils::toString(false));
-      m_jos->set (fullname + ".COOLFolder",  m_folderName);
-    }
-
-    ++ispec;
-
-    // -- Prefix.
-    if (ispec >= m_corrspecs.size()) {
-      REPORT_ERROR(StatusCode::FAILURE)
-        << "Malformed corrections spec: missing prefix.";
-      return StatusCode::FAILURE;
-    }
-    tool.prefix = m_corrspecs[ispec++];
-    tool.resolved_prefix = tool.prefix;
-    if (!tool.prefix.empty())
-      m_jos->set (fullname + ".prefix", tool.prefix);
-
-    // -- Put properties in the JO service.
-    while (ispec < m_corrspecs.size()) {
-      std::string key = m_corrspecs[ispec++];
-      if (key.empty()) break;
-
-      if (ispec >= m_corrspecs.size()) {
-        REPORT_ERROR(StatusCode::FAILURE)
-          << "Malformed corrections spec for tool " << tool.name
-          << ": No value for key " << key;
-        return StatusCode::FAILURE;
-      }
-
-      m_jos->set (fullname + "." + key, m_corrspecs[ispec++]);
-    }
-
-    // Done with this tool.
-    m_tools.push_back (tool);
-    REPORT_MESSAGE(MSG::DEBUG) << "Done parsing for tool" << tool.name;
-  }
-
-  // We don't need the property value any more, and it can be pretty long.
-  // Clear it out to reclaim memory.
-  if (!m_noClearProps) {
-    m_jos->set (this->name() + ".CorrSpecs", "");
-  }
-  m_corrspecs.clear();
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Parse the supplied @c KeepList property.
- */
-StatusCode CaloRunClusterCorrections::parseKeeplist()
-{
-  for (size_t ikeep = 0; ikeep < m_keeplist.size(); ikeep++) {
-    // Get the next tool name from the property.
-    std::string toolname = m_keeplist[ikeep++];
-
-    // Check that a following element exists.
-    if (ikeep >= m_keeplist.size()) {
-      REPORT_ERROR(StatusCode::FAILURE)
-        << "Malformed KeepList property.";
-      return StatusCode::FAILURE;
-    }
-
-    // Find the tool in our vector.
-    Tool* tool = nullptr;
-    for (size_t itool = 0; itool < m_tools.size(); itool++) {
-      if (m_tools[itool].name == toolname) {
-        tool = &m_tools[itool];
-        break;
-      }
-
-      // Tool names are generally like `trcorr_GLOBAL_gam35'.
-      // Also try matching on the base part of the name, before
-      // the first underscore.
-      std::string::size_type pos = m_tools[itool].name.find ('_');
-      if (pos != std::string::npos &&
-          m_tools[itool].name.substr (0, pos) == toolname)
-      {
-        tool = &m_tools[itool];
-        break;
-      }
-    }
-
-    if (tool) {
-      // Save the requested container name.
-      tool->save_container = m_keeplist[ikeep];
-    }
-    else {
-      REPORT_MESSAGE(MSG::WARNING)
-        << "Didn't find correction tool " << toolname
-        << " while reading KeepList.";
-    }
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Create all tools that we can during initialization.
- *        Set up to create remaining tools during a callback.
- */
-StatusCode CaloRunClusterCorrections::createTools ATLAS_NOT_THREAD_SAFE /*Binds to callback*/()
-{
-  // Set to true if creation of any tools is deferred to a callback.
-  bool any_cb = false;
-
-  // Loop over tools.
-  for (size_t itool = 0; itool < m_tools.size(); itool++) {
-    Tool& tool = m_tools[itool];
-    const Tool& ctool = tool;
-    REPORT_MESSAGE(MSG::DEBUG) << "Start creating tool " << tool.name;
-    if (tool.sgkey.empty()) {
-      // No pool constants --- we should have been given the class name.
-      // Create the tool immediately.
-      REPORT_MESSAGE(MSG::DEBUG) << "No Pool constants"; 
-      CHECK( makeTool (tool) );
-    }
-    else if (tool.use_callback) {
-      REPORT_MESSAGE(MSG::DEBUG) << "With callback";
-      // Reading this tool from COOL.
-      any_cb = true;
-
-      // Set up a callback function.
-      // The tool will be actually created there.
-
-      // But only register once for each db object!
-      if (std::find (m_registeredDBObjects.begin(),
-                     m_registeredDBObjects.end(),
-                     tool.sgkey) ==
-          m_registeredDBObjects.end())
-      {
-        m_registeredDBObjects.push_back (tool.sgkey);
-        // Note: Don't actually register the callback here.
-        // The reason is that if initialize() fails later on,
-        // then this CaloRunClusterCorrections tool will end up
-        // being deleted, leaving a dangling callback reference.
-        // (Also note that there's no way to delete a callback
-        // once it's been registered.)
-        // So defer the callback registration until after all other
-        // initialization steps have succeeded.
-      }
-      else {
-        // Already set up the callback.  Just bind the handle.
-        tool.use_callback = false;
-	REPORT_MESSAGE(MSG::DEBUG) << "Callback already registered";
-        CHECK( detStore()->bind (ctool.dbconstants, tool.sgkey) );
-      }
-    }
-    else {
-      // Otherwise, configuring directly from the detector store.
-      // Read the payload now to find the class name and create the tool.
-      REPORT_MESSAGE(MSG::DEBUG) << "Constants from DetStore"; 
-      CHECK( detStore()->bind (ctool.dbconstants, tool.sgkey) );
-      CHECK( fixPrefix (tool) );
-      CHECK( clsnameFromDBConstants (tool) );
-      CHECK( makeTool (tool) );
-    }
-  }
-
-  // Put the corrections in the proper order.
-  CHECK( orderCorrections (any_cb) );
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Register correction callbacks.
- *
- * Note that we cannot return @c FAILURE after the first callback
- * has been registered (see comment in @c createTools).
- */
-void
-CaloRunClusterCorrections::registerCallbacks ATLAS_NOT_THREAD_SAFE /*Registers callback*/ ()
-{
-  if (!m_folderName.empty()) { //COOL inline storage
-
-    StatusCode sc=m_coolInlineTool.retrieve(); 
-    if (sc.isFailure()) {
-      REPORT_ERROR(sc) << "Can't retrieve Blob2ToolConstants Tool";
-    }
-      
-
-    //std::vector<std::string> sgkeys;
-    std::vector<Tool>::const_iterator it=m_tools.begin();
-    std::vector<Tool>::const_iterator it_e=m_tools.end();
-    for (;it!=it_e;++it) {
-      sc=m_coolInlineTool->addFolder(m_folderName,it->sgkey);
-      if (sc.isFailure()) {
-	REPORT_ERROR(sc) << "Can't add folder to Blob2ToolConstants Tool";
-      }
-    }
-    sc=detStore()->regFcn(&Blob2ToolConstants::fillObjects,
-			  &(*m_coolInlineTool),
-			  &CaloRunClusterCorrections::updateTools,
-			  this,
-                          true);
-    
-    if (sc.isFailure()) {
-      REPORT_ERROR(sc)
-	<< "Can't register callback for COOL inline storage ";
-      //return sc;
-    }
-  }
-  else { //payload stored in POOL file
-    for (unsigned int itool = 0; itool < m_tools.size(); itool++) {
-      const Tool& ctool = m_tools[itool];
-      if (ctool.use_callback) {
-	StatusCode sc =
-	  detStore()->regFcn(&CaloRunClusterCorrections::updateTools,
-			     this,
-			     ctool.dbconstants,
-			     ctool.sgkey,
-                             true);
-	if (sc.isFailure()) {
-	  // Note that once we've started registering callbacks,
-	  // we cannot return FAILURE from initialize() --- otherwise,
-	  // we'll be left with a dangling callback.
-	  REPORT_ERROR(sc)
-	    << "Can't register callback for tool " << ctool.name;
-	}
-      }
-    }
-  }
-}
-
-
-/**
- * @brief Actually create a tool.
- * @param tool The tool to create.
- */
-StatusCode CaloRunClusterCorrections::makeTool (Tool& tool)
-{
-  // Release any old tool.
-  if (tool.collproc)
-    tool.collproc->release();
-
-  // Get the tool.
-  CHECK( m_toolsvc->retrieveTool (tool.clsname,
-                                  tool.name,
-                                  tool.collproc,
-                                  this) );
-
-  // Downcast as a other interfaces.
-  tool.clusproc = dynamic_cast<CaloClusterProcessor*> (tool.collproc);
-  tool.setcellcontname = 
-    dynamic_cast<ISetCaloCellContainerName*> (tool.collproc);
-
-  
-  REPORT_MESSAGE(MSG::DEBUG) << "Done making tool " << tool.name;
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief DB callback function.
- * @param i (Unused)
- * @param keys List of DB folders with changes.
- *
- * This is called when tool constants read from the DB have changed
- * (or after the DB is accessed for the first time).
- */
-StatusCode
-CaloRunClusterCorrections::updateTools ATLAS_NOT_THREAD_SAFE /*callbacks*/ (IOVSVC_CALLBACK_ARGS_P( i, keys))
-{
-  REPORT_MESSAGE(MSG::DEBUG) << "In IOV Callback method updateTools";
-
-  if (!m_folderName.empty()) {
-    //COOL-inline case
-    if (std::find(keys.begin(),keys.end(),m_folderName)==keys.end()) {
-       REPORT_MESSAGE(MSG::DEBUG)
-	 << "The cool folder we care about (" << m_folderName<< ") is not in the list of keys. Do nothing." << endmsg;
-       return StatusCode::SUCCESS;
-    }
-    else
-       REPORT_MESSAGE(MSG::DEBUG)
-	 << "Found cool folder " << m_folderName << " in the list of keys." << endmsg;
-  }
-
-    for (size_t itool = 0; itool < m_tools.size(); ++itool) {
-      Tool& tool = m_tools[itool];
-      const Tool& ctool = m_tools[itool];
-      if (!tool.sgkey.empty()) { // && tool.use_callback) {
-        // Found a tool that needs updating.
-
-        // Verify that we have the constants.
-	//        if (!ctool.dbconstants.isValid()) {
-	if (detStore()->retrieve(ctool.dbconstants,ctool.sgkey).isFailure()) {
-          REPORT_ERROR(StatusCode::FAILURE)
-            << "Constants for tool " << tool.name << " are not valid.";
-          return StatusCode::FAILURE;
-        }
-
-        // If the class name has changed, recreate the tool.
-        // This will also create the tool the first time,
-        // since tool.clsname should be blank then.
-        if (ctool.dbconstants->clsname() != tool.clsname) {
-          CHECK( fixPrefix (tool) );
-          CHECK( clsnameFromDBConstants (tool) );
-          CHECK( makeTool (tool) );
-        }
-        else {
-          // Otherwise, just update the constants.
-          CaloRec::ToolWithConstantsMixin* mixin =
-            dynamic_cast<CaloRec::ToolWithConstantsMixin*> (tool.collproc);
-          if (mixin)
-            CHECK( mixin->processConstantsFromDB (i, keys) );
-          else {
-            REPORT_ERROR(StatusCode::FAILURE)
-              << "Attempted to read constants from database for tool "
-              << tool.name << " that does not derive from "
-              << "CaloRec::ToolWithConstantsMixin.";
-            return StatusCode::FAILURE;
-          }
-        }// end else create tool
-      }//end if found tool to update
-    }//end loop over tools
-
-  // Put the corrections in the proper order.
-  CHECK( orderCorrections (false) );
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Initialize the clsname member of the tool structure.
- * @param tool The tool on which to operate.
- *
- * Fetch the class name from the @c ToolConstants structure.
- * If needed, this will expand ${} constructions; these are available
- * to allow tools which use difference C++ classes for different
- * layers/regions to share the same @c ToolConstants structure.
- *
- * ${LAYER} in the class name will be expanded to either `1' or `2',
- * and ${BE} will be expanded to either `b' or `e', depending on the
- * setting of the @c region property.
- */
-StatusCode 
-CaloRunClusterCorrections::clsnameFromDBConstants ATLAS_NOT_THREAD_SAFE (Tool& tool)
-{
-  const Tool& ctool = tool;
-  const CaloRec::ToolConstants& tc = *ctool.dbconstants;
-  tool.clsname = tc.clsname();
-
-  std::string::size_type ipos = 0;
-  while ((ipos = tool.clsname.find ('$', ipos)) != std::string::npos) {
-    if (tool.clsname.substr (ipos, 8) == "${LAYER}") {
-      int region;
-      CHECK( getConstant (tool, "region", region) );
-      const char* out = "X";
-      switch (region) {
-      case CaloClusterCorrectionCommon::EMB1:
-      case CaloClusterCorrectionCommon::EME1:
-        out = "1";
-        break;
-      case CaloClusterCorrectionCommon::EMB2:
-      case CaloClusterCorrectionCommon::EME2:
-        out = "2";
-        break;
-      default:
-        REPORT_ERROR(StatusCode::FAILURE)
-          << "Bad region code expanding ${LAYER} for tool " << tool.name;
-        return StatusCode::FAILURE;
-      }
-      tool.clsname.replace (ipos, 8, out);
-    }
-    else if (tool.clsname.substr (ipos, 5) == "${BE}") {
-      int region;
-      CHECK( getConstant (tool, "region", region) );
-      const char* out = "X";
-      switch (region) {
-      case CaloClusterCorrectionCommon::EMB2:
-      case CaloClusterCorrectionCommon::EMB1:
-        out = "b";
-        break;
-      case CaloClusterCorrectionCommon::EME1:
-      case CaloClusterCorrectionCommon::EME2:
-        out = "e";
-        break;
-      default:
-        REPORT_ERROR(StatusCode::FAILURE)
-          << "Bad region code expanding ${BE} for tool " << tool.name;
-        return StatusCode::FAILURE;
-      }
-      tool.clsname.replace (ipos, 5, out);
-    }
-    else
-      ++ipos;
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Initialize @c resolved_prefix for a tool.
- * @param tool The tool on which to operate.
- *
- * If the prefix that was specified at configuration time does not
- * exist in the @c ToolConstants structure, use instead the longest
- * matching prefix.
- */
-StatusCode CaloRunClusterCorrections::fixPrefix ATLAS_NOT_THREAD_SAFE (Tool& tool)
-{
-  const Tool& ctool = tool;
-  using Maptype = CaloRec::ToolConstants::Maptype;
-  const Maptype& map = ctool.dbconstants->map();
-  if (map.empty()) {
-    // If there are no constants, then the prefix setting can't matter...
-    return StatusCode::SUCCESS;
-  }
-
-  std::string prefix = tool.prefix;
-
-  Maptype::const_iterator it = map.lower_bound (prefix);
-
-  if (it == map.end() || it->first.substr (0, prefix.size()) != prefix) {
-    // Prefix not found.  Try to find a match among the existing prefixes.
-
-    // Strip a trailing dot and region code off the prefix.
-    std::string tail;
-    std::string::size_type len = prefix.size();
-    if (len > 0 && prefix[len-1] == '.') {
-      tail = ".";
-      prefix.erase (len-1);
-      --len;
-    }
-
-    if (len >= 2) {
-      std::string tmp = prefix.substr (len-2, 2);
-      if (tmp == "b1" || tmp == "b2" || tmp == "e1" || tmp == "e2") {
-        tail = tmp + tail;
-        prefix.erase (len-2);
-        len -= 2;
-      }
-    }
-
-    // Extract matching prefixes; find the longest match.
-    int longest_len = -1;
-    std::string best_match;
-    for (it = map.begin(); it != map.end(); it++) {
-      std::string::size_type ipos = it->first.find (tail);
-      if (ipos != std::string::npos) {
-        int this_len = match_len (it->first, prefix);
-        if (this_len > longest_len) {
-          longest_len = this_len;
-          best_match = it->first.substr(0, ipos);
-        }
-      }
-    }
-
-    if (longest_len < 0) {
-      REPORT_ERROR(StatusCode::FAILURE)
-        << "No matches for prefix " << tool.prefix
-        << " for tool " << tool.name;
-      return StatusCode::FAILURE;
-    }
-
-    prefix = best_match + tail;
-
-    // Warn if the match isn't long enough.
-    if (longest_len < 3) {
-      REPORT_MESSAGE(MSG::WARNING)
-        << "No good match for prefix " << tool.prefix
-        << " for tool " << tool.name
-        << "; using " << prefix;
-    }
-
-    REPORT_MESSAGE(MSG::DEBUG)
-      << "For tool " << tool.name << " using prefix " << prefix
-      << " instead of requested prefix " << tool.prefix;
-  }
-
-  // Set the prefix.
-  std::string fullname = this->name() + "." + tool.name;
-  m_jos->set (fullname + ".prefix", prefix);
-  tool.resolved_prefix = prefix;
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Fill in @c m_toolorder to run corrections in the proper order.
- */
-StatusCode
-CaloRunClusterCorrections::orderCorrections ATLAS_NOT_THREAD_SAFE (bool allowMissing)
-{
-  // Clear out any previous setting.
-  m_toolorder.clear();
-  m_toolorder.reserve (m_tools.size());
-
-  // Loop over tools.
-  for (size_t itool = 0; itool < m_tools.size(); itool++) {
-    Tool& tool = m_tools[itool];
-    const Tool& ctool = tool;
-    if (m_preserveOrder) {
-      // If PreserveOrder was requested, execute tools in the exact order
-      // in which they were listed.  Don't check for dummies either.
-      tool.order = itool;
-      m_toolorder.push_back (itool);
-    }
-    else if (tool.sgkey.empty()) {
-      // Tool is being initialized from JO.  Find the order property from JOS.
-      const std::string fullname = this->name() + "." + tool.name;
-      tool.order = std::stoi(m_jos->get(fullname + ".order", "-1"));
-
-      // It's an error if it wasn't set.
-      if (tool.order == -1) {
-        REPORT_ERROR(StatusCode::FAILURE)
-          << "Tool " << tool.name
-          << " initialized from JO has no `order' property set.";
-        return StatusCode::FAILURE;
-      }
-
-      // We want to sort this tool.
-      m_toolorder.push_back (itool);
-    }
-    else if (tool.collproc) {
-      // Initializing from detector store or cool.
-      // First check to see if this is a dummy.
-      int isDummy;
-      CHECK( getConstant (ctool, "isDummy", isDummy) );
-      if (isDummy != 0) {
-        // It's a dummy.  Skip this tool.
-        tool.order = -1;
-      }
-      else {
-        // Get the order parameter and sort this tool.
-        int order;
-        CHECK( getConstant (ctool, "order", order) );
-        tool.order = order;
-        m_toolorder.push_back (itool);
-      }
-    }
-    else if (!allowMissing) {
-      // We don't have any valid constants for this tool.
-      REPORT_ERROR(StatusCode::FAILURE)
-        << "Tool " << tool.name << " has no valid constants.";
-      return StatusCode::FAILURE;
-    }
-  }
-
-  // Put the list of tool indices in the proper order.
-  std::sort (m_toolorder.begin(),
-             m_toolorder.end(),
-             ToolorderSort (m_tools));
-
-  // Make a debugging dump of the results of the sort.
-  std::string names;
-  for (size_t ii = 0; ii < m_toolorder.size(); ii++)
-    names += m_tools[m_toolorder[ii]].name + " ";
-  REPORT_MESSAGE(MSG::DEBUG)
-    << "Sorted tools: " << names;
-
-  return StatusCode::SUCCESS;
-}
-
-
-/**
- * @brief Sorting helper: constructor.
- * @param the_tools The vector of Tool structs.
- */
-CaloRunClusterCorrections::ToolorderSort::ToolorderSort
-  (const std::vector<Tool>& the_tools)
-  : tools (the_tools)
-{
-}
-
-
-/**
- * @brief Sorting helper: comparison.
- * @param a Index of first tool to compare.
- * @param b Index of second tool to compare.
- */
-bool CaloRunClusterCorrections::ToolorderSort::operator() (int a, int b) const
-{
-  return tools[a].order < tools[b].order;
-}
-
-
-/**
- * @brief Helper to get integer constant from a @c ToolConstants structure.
- * @param tool The tool for which to retrieve the constant.
- * @param pname The constant name (without prefix).
- * @param out[out] The retrieved parameter.
- */
-StatusCode
-CaloRunClusterCorrections::getConstant ATLAS_NOT_THREAD_SAFE (const Tool& tool,
-                                                              const std::string& pname,
-                                                              int& out)
-{
-  if (!tool.dbconstants.isValid()) {
-    REPORT_ERROR(StatusCode::FAILURE)
-      << "DB Constants for tool " << tool.name << " are not valid.";
-    return StatusCode::FAILURE;
-  }
-
-  try {
-    const CxxUtils::Arrayrep& rep =
-      tool.dbconstants->getrep (name(), tool.resolved_prefix + pname);
-    const CxxUtils::Array<0> arr (rep);
-    out = static_cast<int> (arr);
-  }
-  catch (const std::exception& e) {
-    REPORT_ERROR(StatusCode::FAILURE)
-      << "Caught exception retrieving property "
-      << tool.resolved_prefix + pname
-      << " for tool " << tool.name << ": " << e.what();
-    std::ostringstream oss;
-    tool.dbconstants->writeConstants (oss, tool.name);
-    REPORT_ERROR(StatusCode::FAILURE)
-      << " " << oss.str();
-    return StatusCode::FAILURE;
-  }
-
-  return StatusCode::SUCCESS;
-}
-
-
diff --git a/Calorimeter/CaloClusterCorrection/src/CaloRunClusterCorrections.h b/Calorimeter/CaloClusterCorrection/src/CaloRunClusterCorrections.h
deleted file mode 100644
index d6c32bd81538d0365b283b1fe41e7156e6604042..0000000000000000000000000000000000000000
--- a/Calorimeter/CaloClusterCorrection/src/CaloRunClusterCorrections.h
+++ /dev/null
@@ -1,395 +0,0 @@
-// This file's extension implies that it's C, but it is really -*- C++ -*-.
-
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-/* @file  CaloRunClusterCorrections.h
- * @author scott snyder <snyder@bnl.gov>
- * @date Apr, 2009
- * @brief Meta-tool to construct and run a list of correction tools.
- */
-
-
-#ifndef CALORUNCLUSTERCORRECTIONS_H
-#define CALORUNCLUSTERCORRECTIONS_H
-
-
-#include "CaloRec/CaloClusterProcessor.h"
-#include "CaloConditions/ToolConstants.h"
-#include "CaloInterface/ISetCaloCellContainerName.h"
-#include "StoreGate/DataHandle.h" 
-#include "AthenaKernel/IOVSvcDefs.h"
-#include <vector>
-#include <string>
-#include <set>
-
-#include "Gaudi/Interfaces/IOptionsSvc.h"
-#include "GaudiKernel/ToolHandle.h"
-#include "CaloRec/Blob2ToolConstants.h"
-
-#include "CaloConditions/CaloAffectedRegionInfoVec.h"
-#include "TileConditions/TileBadChannels.h"
-#include "LArRecConditions/LArBadChannelCont.h"
-#include "StoreGate/ReadCondHandleKey.h"
-
-#include "CxxUtils/checker_macros.h"
-
-class MsgStream;
-class IToolSvc;
-
-
-/*
- * @brief Meta-tool to construct and run a list of correction tools.
- *
- * The cluster corrections consist of a set of individual correction
- * tools, each with a specific version, and run in a specific order.
- * We want to be able to configure this set of corrections entirely
- * from the database, given only only a global database tag.  Since the
- * set of tools run, their versions (including the proper C++ class to use),
- * and the order in which they run all can depend on the global correction
- * version, we cannot create the individual correction tools from
- * job options.  Instead, we must be able to defer that until the
- * database is accessed.
- *
- * This is handled by this `metatool'.  Rather than create individual
- * correction tools, the job configuration creates an instance of this
- * tool (which is itself a correction tool).  The job configuration
- * supplies this tool with a description of how to determine which
- * tools to create; in general, this will involve looking in the database.
- * During initialization, this tool will then figure out which tools
- * need to be run and will create them.
- *
- * Consider first the case of reading from the database.  We get a list
- * of all possible correction tools that may be used; for each of these
- * we get the corresponding database folder and the prefix to use to find
- * this tool's properties in the @c ToolConstants objects (as well as any
- * property overrides).
- *
- * For each tool, we look up the its data in the corresponding database
- * folder; this will be a @c ToolConstants object.  Now, the first issue
- * is that in order to know in which folders we need to look, all possible
- * correction tools need to be specified during job configuration; but
- * in general, only some of those tools will be used for any given tag.
- * For the folders that aren't used for a tag, that tag will be bound
- * to a dummy @c ToolConstants object; i.e., it will have the @c isDummy
- * property set to @c True.  In this way, the unused tools can be skipped.
- *
- * We also need to know the order in which to execute tools.  Each tool
- * has an `order' property, which is an integer.  Tools should be executed
- * in increasing order of this parameter.
- *
- * In addition to being read from the database, tools may be initialized
- * directly from the detector store (i.e., from a pool file) or entirely
- * from job options.
- *
- * The needed configuration is communicated to this tool via the @c CorrSpecs
- * property.  This is a vector of strings with this layout:
- *   Each tool is defined by:
- *     TOOLNAME LOCATION PREFIX PARM-NAME PARM-VAL ... ""
- *
- *   First element is the name of the tool to create.
- *
- *   For the second element:
- *     - If it starts with `+', it should be followed by the C++
- *       name of the class to create.
- *     - If it starts with `@', it should be followed by the SG
- *       detector store key, to be read directly from pool
- *       (i.e., don't use callbacks).
- *     - Otherwise, it should be a COOL folder name.
- *
- *   Third element is the prefix for this tool's constants in the
- *   ToolConstants structure.  (Can be blank if no ToolConstants
- *   structure is being used.)
- *
- *   This is then followed by a set of property name/value pairs.
- *   These override anything read from the detector store.
- *   The list is terminated with an empty string.
- *
- *   Such lists for all corrections are concatenated.
- *
- * Additional properties of interest include:
- *
- *   @c KeepList This allows one to preserve in SG intermediate results
- *               from running the corrections.  This is a vector of strings.
- *               These come in pairs; the first of a pair gives a correction
- *               tool name and the second a SG container name.  Before the
- *               named tool executes, the cluster list will be saved to SG
- *               with the specified name.
- *
- *               In addition to full tool names, which are usually of the
- *               form `larupdate_GLOBAL_gam37', one can also specify just
- *               the base part of the tool name; that is, before the
- *               first underscore.
- *
- *               Note that this only operates when the correction is called
- *               for a list of clusters; it won't work if the correction
- *               is called for individual clusters.
- *
- *   @c PreserveOrder If true, corrections will be executed strictly in the
- *                    order in which they're listed in @c CorrSpecs
- *                    (ignoring the @c order properties of the tools).
- *
- * Service/tool names used may also be overridden through properties.
- */
-class CaloRunClusterCorrections
-  : public CaloClusterProcessor,
-    public ISetCaloCellContainerName
-{
-public:
-  /**
-   * @brief Constructor.
-   * @param type The type of the tool.
-   * @param name The name of the tool.
-   * @param parent The parent algorithm of the tool.
-   */
-  CaloRunClusterCorrections (const std::string& type,
-                             const std::string& name,
-                             const IInterface* parent);
-
-
-  /// Standard initialize method.
-  virtual StatusCode initialize ATLAS_NOT_THREAD_SAFE /*Can Register callbacks but no need to be thread safe*/ () override;
-
-
-  /// Standard finalize method.
-  virtual StatusCode finalize() override;
-
-  using CaloClusterProcessor::execute;
-
-  /**
-   * @brief Execute on a single cluster.
-   * @param The cluster to process.
-   * @param ctx The event context.
-   *
-   * Warning: Any defined tools that cannot process single clusters
-   * (only cluster collections) will be skipped!
-   */
-  virtual StatusCode execute (const EventContext& ctx,
-                              xAOD::CaloCluster* cluster) const override;
-
-
-  /**
-   * @brief Execute on an entire collection of clusters.
-   * @param The container of clusters.
-   * @param ctx The event context.
-   *
-   * This will iterate over all the clusters in @c collection
-   * and call @c execute on each one individually.
-   */
-  virtual StatusCode execute (const EventContext& ctx,
-                              xAOD::CaloClusterContainer* collection) const override;
-
-
-  /**
-   * @brief Change the name of the CaloCellContainer used by this tool.
-   * @param name The new container name.
-   */
-  virtual StatusCode setCaloCellContainerName (const std::string& name) override;
-
-
-private:
-  /// Internal structure to hold information about a correction tool.
-  struct Tool {
-    // Not thread-safe due to the use of DataHandle.
-    Tool() ATLAS_CTORDTOR_NOT_THREAD_SAFE = default;
-    Tool(const Tool&) ATLAS_CTORDTOR_NOT_THREAD_SAFE = default;
-    ~Tool() ATLAS_CTORDTOR_NOT_THREAD_SAFE = default;
-
-    /// The name of the tool.
-    std::string name;
-
-    /// Key of this tool in the detector store.
-    /// Empty if being initialized from JO.
-    std::string sgkey;
-
-    /// Name of the C++ class for this tool.
-    std::string clsname;
-
-    /// Prefix to use in the @c ToolConstants structure,
-    /// as specified in @c CorrSpecs.
-    std::string prefix;
-
-    /// Actual @c ToolConstants prefix to use (after resolving the request
-    /// among those prefixes actually existing).
-    std::string resolved_prefix;
-
-    /// Order in which this tool should be executed.
-    /// Set to -1 for a dummy tool.
-    int order;
-
-    /// True if we should set up a callback for this tool.
-    bool use_callback;
-
-    /// If non-empty, copy cluster list and save to SG with this name
-    /// before running this tool.
-    std::string save_container;
-
-    /// Handle to the constants structure.
-    // Note1: Don't access this until the vector<Tool> is complete.
-    // Note2: This must always be accessed via a const reference.
-    DataHandle<CaloRec::ToolConstants> dbconstants;
-
-    /// Pointer to the correction tool.
-    CaloClusterCollectionProcessor* collproc;
-
-    /// Pointer to the correction tool as a @c CaloClusterProcessor,
-    /// or 0 if that interface isn't supported by this tool.
-    CaloClusterProcessor* clusproc;
-
-    /// Pointer to the correction tool as an @c ISetCaloCellContainerName,
-    /// or 0 if that interface isn't supported by this tool.
-    ISetCaloCellContainerName* setcellcontname;
-  };
-
-
-  /// Helper for ordering tools.
-  struct ToolorderSort {
-    ToolorderSort (const std::vector<Tool>& the_tools);
-    bool operator() (int a, int b) const;
-    const std::vector<Tool>& tools;
-  };
-
-
-  /**
-   * @brief Parse the supplied correction specification and create
-   *        the Tools vector.  Do not actually create the tools yet.
-   */
-  StatusCode parseCorrspecs ATLAS_NOT_THREAD_SAFE ();
-
-
-  /**
-   * @brief Parse the supplied @c KeepList property.
-   */
-  StatusCode parseKeeplist();
-
-
-  /**
-   * @brief Create all tools that we can during initialization.
-   *        Set up to create remaining tools during a callback.
-   */
-  StatusCode createTools ATLAS_NOT_THREAD_SAFE /*Binds to CallBack*/ ();
-
-
-  /**
-   * @brief Register correction callbacks.
-   *
-   * Note that we cannot return @c FAILURE after the first callback
-   * has been registered (see comment in @c createTools).
-   */
-  void registerCallbacks ATLAS_NOT_THREAD_SAFE /*Registers callback*/ ();
-
-
-  /**
-   * @brief Actually create a tool.
-   * @param tool The tool to create.
-   */
-  StatusCode makeTool (Tool& tool);
-
-
-  /**
-   * @brief DB callback function.
-   * @param i (Unused)
-   * @param keys List of DB folders with changes.
-   *
-   * This is called when tool constants read from the DB have changed
-   * (or after the DB is accessed for the first time).
-   */
-  StatusCode updateTools ATLAS_NOT_THREAD_SAFE /*callbacks*/ (IOVSVC_CALLBACK_ARGS);   
-
-
-
-  /**
-   * @brief Initialize the clsname member of the tool structure.
-   * @param tool The tool on which to operate.
-   *
-   * Fetch the class name from the @c ToolConstants structure.
-   * If needed, this will expand ${} constructions; these are available
-   * to allow tools which use difference C++ classes for different
-   * layers/regions to share the same @c ToolConstants structure.
-   *
-   * ${LAYER} in the classname will be expanded to either `1' or `2',
-   * and ${BE} will be expanded to either `b' or `e', depending on the
-   * setting of the @c region property.
-   */
-  StatusCode clsnameFromDBConstants ATLAS_NOT_THREAD_SAFE (Tool& tool);
-
-
-  /**
-   * @brief Initialize @c resolved_prefix for a tool.
-   * @param tool The tool on which to operate.
-   *
-   * If the prefix that was specified at configuration time does not
-   * exist in the @c ToolConstants structure, use instead the longest
-   * matching prefix.
-   */
-  StatusCode fixPrefix ATLAS_NOT_THREAD_SAFE (Tool& tool);
-
-
-  /**
-   * @brief Fill in @c m_toolorder to run corrections in the proper order.
-   */
-  StatusCode orderCorrections ATLAS_NOT_THREAD_SAFE (bool allowMissing);
-
-
-  /**
-   * @brief Helper to get integer constant from a @c ToolConstants structure.
-   * @param tool The tool for which to retrieve the constant.
-   * @param pname The constant name (without prefix).
-   * @param out[out] The retrieved parameter.
-   */
-  StatusCode getConstant ATLAS_NOT_THREAD_SAFE (const Tool& tool,
-                                                const std::string& pname,
-                                                int& out);
-
-  //-----------
-  // Properties
-
-  /// Correction specifications.  See above for format.
-  std::vector<std::string> m_corrspecs;
-
-  /// List of intermediate results to preserve.  See above for format.
-  std::vector<std::string> m_keeplist;
-
-  /// If true, execute tools exactly in the specified order
-  /// (ignore order information from DB).
-  bool m_preserveOrder;
-
-  /// If true, don't clear out the values of long properties.
-  bool m_noClearProps;
-
-  /// The job options service.
-  ServiceHandle<Gaudi::Interfaces::IOptionsSvc> m_jos;
-
-  /// The tool service.
-  ServiceHandle<IToolSvc> m_toolsvc;
-
-  /// Information about tools we're managing.
-  std::vector<Tool> m_tools;
-
-  /// Vector of indices into the @c m_tools list.
-  /// The tools will be executed in the order of appearance in this list.
-  std::vector<int> m_toolorder;
-
-  /// List of folders for which we've already registered callbacks.
-  std::vector<std::string> m_registeredDBObjects;
-
-  /// COOL folder name in case of COOL inline storage
-  std::string  m_folderName;
-
-  /// AlgTool to convert COOL inline data into ToolConstants objects
-  ToolHandle<Blob2ToolConstants> m_coolInlineTool;
-
-  // FIXME: Dependencies don't get propagated from dynamically-created
-  // correction tools.  Hardcode this dependency as a workaround.
-  SG::ReadCondHandleKey<CaloAffectedRegionInfoVec> m_affKey{this,
-     "LArAffectedRegionKey", "LArAffectedRegionInfo", "SG key for affected regions cond object"};
-  SG::ReadCondHandleKey<LArBadChannelCont> m_LArBCKey { this, 
-      "LArBadChanKey","LArBadChannel","SG Key of LArBadChannelCont object"};
-  SG::ReadCondHandleKey<TileBadChannels> m_TileBCKey{this,
-      "TileBadChanKey", "TileBadChannels", "Input Tile bad channel status"};
-
-};
-
-
-#endif // not CALORUNCLUSTERCORRECTIONS_H
diff --git a/Calorimeter/CaloClusterCorrection/src/components/CaloClusterCorrection_entries.cxx b/Calorimeter/CaloClusterCorrection/src/components/CaloClusterCorrection_entries.cxx
index a20f094759b0de7e59bc802e87877cf5e625defa..7daea0b61ea7f2980f9ea314d0fc18916f171480 100644
--- a/Calorimeter/CaloClusterCorrection/src/components/CaloClusterCorrection_entries.cxx
+++ b/Calorimeter/CaloClusterCorrection/src/components/CaloClusterCorrection_entries.cxx
@@ -49,7 +49,6 @@
 #include "../CaloClusterRemoveDuplicates.h"
 #include "../CaloClusterRemoveBad.h"
 
-#include "../CaloRunClusterCorrections.h"
 #include "../CaloDummyCorrection.h"
 
 
@@ -104,6 +103,5 @@ DECLARE_COMPONENT( CaloClusterBadChannelList )
 DECLARE_COMPONENT( CaloClusterRemoveDuplicates )
 DECLARE_COMPONENT( CaloClusterRemoveBad )
 
-DECLARE_COMPONENT( CaloRunClusterCorrections )
 DECLARE_COMPONENT( CaloDummyCorrection )
 
diff --git a/Calorimeter/CaloClusterCorrection/test/config_t.py b/Calorimeter/CaloClusterCorrection/test/config_t.py
new file mode 100644
index 0000000000000000000000000000000000000000..6492bbff88dba2f8cb75a96c37167609d8a92c7d
--- /dev/null
+++ b/Calorimeter/CaloClusterCorrection/test/config_t.py
@@ -0,0 +1,1128 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+#
+# File: CaloClusterCorrection/test/config_t.py
+# Created: Aug, 2020
+# Purpose: Regression tests CaloCluterCorrection configuration
+#
+
+from __future__ import print_function
+
+
+from PyUtils import coverage
+c = coverage.Coverage ('CaloClusterCorrection.common')
+
+
+from AthenaConfiguration.ComponentFactory import CompFactory
+from CaloClusterCorrection import common
+from CaloClusterCorrection.CaloSwCorrections import make_CaloSwCorrectionsCfg
+
+class TestTool:
+    def __init__ (self, name, **kw):
+        self.name = name
+        self.args = kw
+        return
+
+    def check (self, config):
+        assert self.__class__.__name__ == config.__class__.__name__
+        if self.name != config.getName():
+            print ('name mismatch: ', self.__class__.__name__, self.name, config.getName())
+        assert self.name == config.getName()
+        props = config._properties.copy()
+        for k, v in self.args.items():
+            assert k in props
+            if isinstance (v, TestTool):
+                v.check (props[k])
+            else:
+                p = props[k]
+                if isinstance (v, list):
+                    p = list(p)
+                    if v and isinstance (v[0], list):
+                        p = [list(x) for x in p]
+                if p != v:
+                    print ('match fail: ', self.__class__.__name__, self.name, k, p, v)
+                assert p == v
+            del props[k]
+        assert not props
+        return
+
+
+def checkTools (tools, expected):
+    for i in range(min (len(tools), len(expected))):
+        expected[i].check (tools[i])
+    assert len(tools) == len(expected)
+    return
+        
+
+class CaloFillRectangularCluster (TestTool): pass
+class CaloClusterRemoveBad (TestTool): pass
+class CaloScaleCluster (TestTool): pass
+class CaloSwEtaoff_v3 (TestTool): pass
+class CaloSwPhioff_v2 (TestTool): pass
+class CaloClusterUpdate (TestTool): pass
+class CaloSwGap_v2 (TestTool): pass
+class CaloSwGap_v3 (TestTool): pass
+class CaloSwCalibHitsCalibration (TestTool): pass
+class CaloSwTransitionRegionsCorr (TestTool): pass
+class CaloSwDeadOTX_ps (TestTool): pass
+class CaloSwDeadOTX_back (TestTool): pass
+class CaloSwPhimod_v2 (TestTool): pass
+class CaloSwEtamod_v2 (TestTool): pass
+class CaloSwTime (TestTool): pass
+class CaloClusterBadChannelList (TestTool): pass
+class CaloAffectedTool (TestTool): pass
+class CaloTopoEMGap (TestTool): pass
+class ToolConstantsCondAlg (TestTool): pass
+class ProxyProviderSvc (TestTool): pass
+class CondProxyProvider (TestTool): pass
+class CondInputLoader (TestTool): pass
+class IOVDbSvc (TestTool): pass
+class PoolSvc (TestTool): pass
+class CondSvc (TestTool): pass
+
+
+# Default corrections, with fixed version.
+def test1 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+
+    flags = flags_in.clone()
+    flags.lock()
+
+    ca = make_CaloSwCorrectionsCfg (flags, version = 'v12_calh', key = 'ele35')
+    tools = ca.popPrivateTools()
+
+    checkTools \
+      (tools,
+       [CaloFillRectangularCluster ('layers_ele35',
+                                    order=100,
+                                    isDummy=False,
+                                    fill_cluster=True,
+                                    eta_size=3,
+                                    phi_size=5),
+        CaloClusterRemoveBad ('removebad_ele35', EMin=0.0),
+        CaloScaleCluster ('rfac_v5_ele35',
+                          prefix='ele35.',
+                          DBHandleKey='CaloSwClusterCorrections.rfac-v5'),
+        CaloSwEtaoff_v3 ('etaoffb1_v5_ele35',
+                         prefix='ele35b1.',
+                         DBHandleKey='CaloSwClusterCorrections.etaoff-v5'),
+        CaloSwEtaoff_v3 ('etaoffe1_v5_ele35',
+                         prefix='ele35e1.',
+                         DBHandleKey='CaloSwClusterCorrections.etaoff-v5'),
+        CaloSwEtaoff_v3 ('etaoffb2_v5_ele35',
+                         prefix='ele35b2.',
+                         DBHandleKey='CaloSwClusterCorrections.etaoff-v5'),
+        CaloSwEtaoff_v3 ('etaoffe2_v5_ele35',
+                         prefix='ele35e2.',
+                         DBHandleKey='CaloSwClusterCorrections.etaoff-v5'),
+        CaloSwPhioff_v2 ('phioffb2_v5_ele35',
+                         prefix='ele35b2.',
+                         DBHandleKey='CaloSwClusterCorrections.phioff-v5'),
+        CaloSwPhioff_v2 ('phioffe2_v5_ele35',
+                         prefix='ele35e2.',
+                         DBHandleKey='CaloSwClusterCorrections.phioff-v5'),
+        CaloClusterUpdate ('larupdate_ele35',
+                           prefix='ele35.',
+                           DBHandleKey='CaloSwClusterCorrections.larupdate'),
+        CaloSwGap_v3 ('gap_v6_ele35',
+                      prefix='ele35.',
+                      DBHandleKey='CaloSwClusterCorrections.gap-v6'),
+        CaloSwCalibHitsCalibration ('calhits_v9_ele35',
+                                    prefix='ele35.',
+                                    DBHandleKey='CaloSwClusterCorrections.calhits-v9'),
+        CaloSwTransitionRegionsCorr ('trcorr_v5_1_ele35',
+                                     prefix='ele35.',
+                                     DBHandleKey='CaloSwClusterCorrections.trcorr-v5_1'),
+        CaloSwDeadOTX_ps ('deadOTXps_v1_ele35',
+                          prefix='ele35.',
+                          DBHandleKey='CaloSwClusterCorrections.deadOTXps-v1',
+                          AffectedTool=CaloAffectedTool('CaloAffectedToolForDeadOTX_ps')),
+        CaloSwDeadOTX_back ('deadOTXback_v1_ele35',
+                            prefix='ele35.',
+                            DBHandleKey='CaloSwClusterCorrections.deadOTXback-v1',
+                            AffectedTool=CaloAffectedTool('CaloAffectedForDeadOTX_back')),
+        CaloSwPhimod_v2 ('phimod_v4_ele35',
+                         prefix='ele35.',
+                         DBHandleKey='CaloSwClusterCorrections.phimod-v4'),
+        CaloSwEtamod_v2 ('etamod_v4_ele35',
+                         prefix='ele35.',
+                         DBHandleKey='CaloSwClusterCorrections.etamod-v4'),
+        CaloSwTime ('time_ele35',
+                    order=801,
+                    isDummy=False),
+        CaloClusterBadChannelList ('listBadChannels_ele35',
+                                   order=820,
+                                   isDummy=False),
+        ])
+
+
+    checkTools \
+      (ca._conditionsAlgs,
+       [ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_rfac-v5',
+                              DetStoreKey='CaloSwClusterCorrections.rfac-v5',
+                              ToolConstantsKey='CaloSwClusterCorrections.rfac-v5'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_etaoff-v5',
+                              DetStoreKey='CaloSwClusterCorrections.etaoff-v5',
+                              ToolConstantsKey='CaloSwClusterCorrections.etaoff-v5'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_phioff-v5',
+                              DetStoreKey='CaloSwClusterCorrections.phioff-v5',
+                              ToolConstantsKey='CaloSwClusterCorrections.phioff-v5'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_larupdate',
+                              DetStoreKey='CaloSwClusterCorrections.larupdate',
+                              ToolConstantsKey='CaloSwClusterCorrections.larupdate'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_gap-v6',
+                              DetStoreKey='CaloSwClusterCorrections.gap-v6',
+                              ToolConstantsKey='CaloSwClusterCorrections.gap-v6'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_calhits-v9',
+                              DetStoreKey='CaloSwClusterCorrections.calhits-v9',
+                              ToolConstantsKey='CaloSwClusterCorrections.calhits-v9'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_trcorr-v5_1',
+                              DetStoreKey='CaloSwClusterCorrections.trcorr-v5_1',
+                              ToolConstantsKey='CaloSwClusterCorrections.trcorr-v5_1'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_deadOTXps-v1',
+                              DetStoreKey='CaloSwClusterCorrections.deadOTXps-v1',
+                              ToolConstantsKey='CaloSwClusterCorrections.deadOTXps-v1'),
+        ToolConstantsCondAlg('ToolConstantsCondAlg_CaloSwClusterCorrections_deadOTXback-v1',
+                             DetStoreKey='CaloSwClusterCorrections.deadOTXback-v1',
+                             ToolConstantsKey='CaloSwClusterCorrections.deadOTXback-v1'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_phimod-v4',
+                              DetStoreKey='CaloSwClusterCorrections.phimod-v4',
+                              ToolConstantsKey='CaloSwClusterCorrections.phimod-v4'),
+        ToolConstantsCondAlg ('ToolConstantsCondAlg_CaloSwClusterCorrections_etamod-v4',
+                              DetStoreKey='CaloSwClusterCorrections.etamod-v4',
+                              ToolConstantsKey='CaloSwClusterCorrections.etamod-v4'),
+        ])
+
+
+    checkTools \
+      (ca.getServices(),
+       [ProxyProviderSvc ('ProxyProviderSvc',
+                          ProviderNames=['CondProxyProvider']),
+        CondProxyProvider ('CondProxyProvider',
+                           InputCollections=['FID:BC292F26-AE73-9041-BF5C-BCE6C5C651EC']),
+        ])
+
+
+    ca.wasMerged()
+    return
+
+
+# Default corrections, global COOL tag, MC.
+def test2 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+
+    flags = flags_in.clone()
+    flags.Input.isMC = True
+    flags.IOVDb.GlobalTag = 'OFLCOND-RUN12-SDR-31'
+    flags.Input.Files = defaultTestFiles.RDO
+    flags.lock()
+
+    ca = make_CaloSwCorrectionsCfg (flags, version = '@GLOBAL',
+                                    key = 'gam35_conv')
+    tools = ca.popPrivateTools()
+
+    checkTools \
+      (tools,
+       [CaloFillRectangularCluster ('layers_gam35_conv',
+                                    order=100,
+                                    isDummy=False,
+                                    fill_cluster=True,
+                                    eta_size=3,
+                                    phi_size=5),
+        CaloClusterRemoveBad ('removebad_gam35_conv', EMin=0.0),
+        CaloScaleCluster ('rfac_v5_gam35_conv',
+                          prefix='gam35.',
+                          DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/rfac'),
+        CaloSwEtaoff_v3 ('etaoffb1_v5_gam35_conv',
+                         prefix='gam35b1.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/etaoff'),
+        CaloSwEtaoff_v3 ('etaoffe1_v5_gam35_conv',
+                         prefix='gam35e1.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/etaoff'),
+        CaloSwEtaoff_v3 ('etaoffb2_v5_gam35_conv', prefix='gam35b2.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/etaoff'),
+        CaloSwEtaoff_v3 ('etaoffe2_v5_gam35_conv', prefix='gam35e2.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/etaoff'),
+        CaloSwPhioff_v2 ('phioffb2_v5data_gam35_conv', prefix='gam35b2.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/phioff'),
+        CaloSwPhioff_v2 ('phioffe2_v5data_gam35_conv',
+                         prefix='gam35e2.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/phioff'),
+        CaloClusterUpdate ('larupdate_gam35_conv',
+                           prefix='gam35.',
+                           DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/larupdate'),
+        CaloSwGap_v3 ('gap_v6_gam35_conv',
+                      prefix='gam35.',
+                      DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/gap'),
+        CaloSwCalibHitsCalibration ('calhits_v9_gam35_conv',
+                                    prefix='gam35_conv.',
+                                    DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/calhits'),
+        CaloSwTransitionRegionsCorr ('trcorr_v5_1_gam35_conv',
+                                     prefix='gam35.',
+                                     DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/trcorr'),
+        CaloSwDeadOTX_ps ('deadOTXps_v1_gam35_conv',
+                          prefix='gam35_conv.',
+                          DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/deadOTXps',
+                          AffectedTool=CaloAffectedTool('CaloAffectedToolForDeadOTX_ps')),
+        CaloSwDeadOTX_back ('deadOTXback_v1_gam35_conv',
+                            prefix='gam35_conv.',
+                            DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/deadOTXback',
+                            AffectedTool=CaloAffectedTool('CaloAffectedForDeadOTX_back')),
+        CaloSwPhimod_v2 ('phimod_v4_gam35_conv',
+                         prefix='gam35.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/phimod'),
+        CaloSwEtamod_v2 ('etamod_v4_gam35_conv',
+                         prefix='gam35.',
+                         DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/etamod'),
+        CaloSwTime ('time_gam35_conv',
+                    order=801,
+                    isDummy=False),
+        CaloClusterBadChannelList ('listBadChannels_gam35_conv',
+                                   order=820,
+                                   isDummy=False),
+        ])
+
+    checkTools \
+      (ca._conditionsAlgs,
+       [CondInputLoader ('CondInputLoader',
+                         Load=[['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/rfac'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/etaoff'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/phioff'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/larupdate'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/gap'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/calhits'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/trcorr'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/deadOTXps'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/deadOTXback'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/phimod'],
+                               ['CaloRec::ToolConstants',
+                                '/CALO/Ofl/CaloSwClusterCorrections/etamod']]),
+        ])
+            
+
+    exp = IOVDbSvc ('IOVDbSvc',
+                    dbConnection='sqlite://;schema=mycool.db;dbname=OFLP200',
+                    DBInstance='OFLP200',
+                    CacheAlign=3,
+                    GlobalTag='OFLCOND-RUN12-SDR-31',
+                    Folders = ['/CALO/Ofl/CaloSwClusterCorrections/rfac<tag>CaloSwClusterCorrections.00-02-13-rfac-v5</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/etaoff<tag>CaloSwClusterCorrections.00-02-13-etaoff-v5</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/phioff<tag>CaloSwClusterCorrections.00-02-13-phioff-v5data</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/larupdate<tag>CaloSwClusterCorrections.00-02-13-larupdate</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/gap<tag>CaloSwClusterCorrections.00-02-13-gap-v6</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/calhits<tag>CaloSwClusterCorrections.00-02-13-calhits-v9</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/trcorr<tag>CaloSwClusterCorrections.00-02-13-trcorr-v5_1</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/deadOTXps<tag>CaloSwClusterCorrections.00-02-13-deadOTXps-v1</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/deadOTXback<tag>CaloSwClusterCorrections.00-02-13-deadOTXback-v1</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/phimod<tag>CaloSwClusterCorrections.00-02-13-phimod-v4</tag><db>COOLOFL_CALO/OFLP200</db>',
+                               '/CALO/Ofl/CaloSwClusterCorrections/etamod<tag>CaloSwClusterCorrections.00-02-13-etamod-v4</tag><db>COOLOFL_CALO/OFLP200</db>'])
+    exp.check (ca.getService ('IOVDbSvc'))
+
+    ca.wasMerged()
+    return
+
+
+# Correction subset, version defaulted, with overrides.
+def test3 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.Input.ProjectName = 'data18'
+    flags.lock()
+
+    from CaloClusterCorrection.CaloSwCorrections import layers, update, gap, calhits
+    from CaloClusterCorrection.constants import CALOCORR_JO, CALOCORR_POOL
+    from CaloClusterCorrection.poolfiles import poolfiles
+    ca = make_CaloSwCorrectionsCfg (flags, key = 'gam35',
+                                    corrlist = [[layers],
+                                                [update],
+                                                [gap, 'v3', ('degree', 2)],
+                                                [calhits],
+                                                ],
+                                    layers_suffix = 'lsuff',
+                                    layers_key = 'gam35_conv',
+                                    layers_cells_name = 'xcells',
+                                    layers_source = 'CaloSwLayers.CaloSwLayers_parms',
+                                    gap_source = 'caloswcorr_pool',
+                                    layers_order = 101,
+                                    calhits_version = 'v8',
+                                    calhits_update_sampling_energies = True)
+    tools = ca.popPrivateTools()
+    checkTools \
+      (tools[:4],
+       [CaloFillRectangularCluster ('layers_gam35_convlsuff',
+                                    order=101,
+                                    isDummy=False,
+                                    fill_cluster=True,
+                                    eta_size=3,
+                                    phi_size=5,
+                                    cells_name = 'xcells'),
+        CaloClusterUpdate ('larupdate_GLOBAL_gam35',
+                           prefix='gam35.',
+                           DBHandleKey='/CALO/CaloSwClusterCorrections/larupdate'),
+        CaloSwGap_v2 ('gap_v3_gam35',
+                      prefix='gam35.',
+                      DBHandleKey='CaloSwClusterCorrections.gap-v3',
+                      degree=2),
+        CaloSwCalibHitsCalibration ('calhits_v8_gam35',
+                                    prefix='gam35_conv.',
+                                    DBHandleKey='/CALO/CaloSwClusterCorrections/calhits',
+                                    update_sampling_energies=True),
+        ])
+
+    exp = IOVDbSvc ('IOVDbSvc',
+                    dbConnection='sqlite://;schema=mycool.db;dbname=CONDBR2',
+                    DBInstance='CONDBR2',
+                    CacheAlign=3,
+                    GlobalTag='CONDBR2-BLKPA-2017-05',
+                    Folders=['/CALO/CaloSwClusterCorrections/larupdate<tag></tag><db>COOLONL_CALO/CONDBR2</db>',
+                             '/CALO/CaloSwClusterCorrections/calhits<tag>CaloSwClusterCorrections.00-02-13-calhits-v8</tag><db>COOLONL_CALO/CONDBR2</db>'])
+
+    exp.check (ca.getService ('IOVDbSvc'))
+
+    ca.wasMerged()
+
+    return
+
+
+# makecorr details 1
+def test4 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    ca = makecorr (flags,
+                   CaloSwGap_versions,
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@xvers', # version
+                   'ele35',  # key
+                   None, # sampling
+                   None, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    exp = CaloSwGap_v3 ('gap_xvers_ele35',
+                        prefix='ele35.',
+                        DBHandleKey='/CALO/CaloSwClusterCorrections/gap')
+    exp.check (tools)
+    ca.wasMerged()
+
+    exp = IOVDbSvc('IOVDbSvc',
+                   dbConnection='sqlite://;schema=mycool.db;dbname=CONDBR2',
+                   DBInstance='CONDBR2',
+                   CacheAlign=3,
+                   GlobalTag='CONDBR2-BLKPA-2017-05',
+                   Folders=['/CALO/CaloSwClusterCorrections/gap<tag>xvers</tag><db>COOLONL_CALO/CONDBR2</db>'])
+    exp.check (ca.getService ('IOVDbSvc'))
+
+
+    return
+                                     
+
+
+# makecorr details 2
+def test5 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW
+    from CaloClusterCorrection.common import makecorr, CaloCorrectionConfigError
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    try:
+        makecorr (flags,
+                  CaloSwGap_versions,
+                  None,  # name
+                  'gap',
+                  None,  # suffix
+                  'lsdkfjsdklfj', # version
+                  'ele35',  # key
+                  None, # sampling
+                  None, # source
+                  None, # confclass
+                  CALOCORR_SW)
+        assert 0
+    except CaloCorrectionConfigError as e:
+        assert e.args[0] == "Can't find version `lsdkfjsdklfj' for correction named `gap'."
+
+    return
+                                     
+
+# makecorr details 3
+def test6 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW
+    from CaloClusterCorrection.common import makecorr, CaloCorrectionConfigError
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    try:
+        makecorr (flags,
+                  CaloSwGap_versions,
+                  None,  # name
+                  'gap',
+                  None,  # suffix
+                  None, #version
+                  'ele35',  # key
+                  None, # sampling
+                  'asdasd', # source
+                  None, # confclass
+                  CALOCORR_SW)
+        assert 0
+    except CaloCorrectionConfigError as e:
+        assert e.args[0] == "Can't find any source to configure tool `gap_v6_ele35'.  Sources: ['asdasd']"
+
+    return
+                                     
+
+# makecorr details 4
+def test7 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    ca = makecorr (flags,
+                   CaloSwGap_versions,
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@GLOBAL', # version
+                   'ele35',  # key
+                   None, # sampling
+                   None, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    exp = CaloSwGap_v3('gap_GLOBAL_ele35',
+                       prefix='ele35.',
+                       DBHandleKey='/CALO/CaloSwClusterCorrections/gap')
+    exp.check (tools)
+
+    ca.wasMerged()
+    exp = IOVDbSvc ('IOVDbSvc',
+                    dbConnection='sqlite://;schema=mycool.db;dbname=CONDBR2',
+                    DBInstance='CONDBR2',
+                    CacheAlign=3,
+                    GlobalTag='CONDBR2-BLKPA-2017-05',
+                    Folders=['/CALO/CaloSwClusterCorrections/gap<tag></tag><db>COOLONL_CALO/CONDBR2</db>'])
+    exp.check (ca.getService ('IOVDbSvc'))
+
+    return
+                                     
+
+
+# makecorr details 5
+def test8 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW, CALOCORR_COOL
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    cls_v2 = CompFactory.CaloSwGap_v2  # CaloClusterCorrection
+    ca = makecorr (flags,
+                   [['@', cls_v2, [CALOCORR_COOL], ['ele35']]],
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@xvers', # version
+                   'ele35',  # key
+                   None, # sampling
+                   None, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    exp = CaloSwGap_v2 ('gap_xvers_ele35',
+                        prefix='ele35.',
+                        DBHandleKey='/CALO/CaloSwClusterCorrections/gap')
+    exp.check (tools)
+
+    ca.wasMerged()
+    exp = IOVDbSvc ('IOVDbSvc',
+                    dbConnection='sqlite://;schema=mycool.db;dbname=CONDBR2',
+                    DBInstance='CONDBR2',
+                    CacheAlign=3,
+                    GlobalTag='CONDBR2-BLKPA-2017-05',
+                    Folders=['/CALO/CaloSwClusterCorrections/gap<tag>xvers</tag><db>COOLONL_CALO/CONDBR2</db>'])
+    exp.check (ca.getService ('IOVDbSvc'))
+
+    return
+                                     
+
+
+# makecorr details 6
+def test9 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW, CALOCORR_COOL
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    ca = makecorr (flags,
+                   CaloSwGap_versions,
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@xvers', # version
+                   '@VALID_KEYS',  # key
+                   None, # sampling
+                   None, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    assert (ca == ['ele55', 'ele35', 'ele37', 'gam55', 'gam35', 'gam37'])
+    return
+                                     
+
+
+# makecorr details 7
+def test10 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW, CALOCORR_NOPOOL, CALOCORR_TOPOOL
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    cls_v2 = CompFactory.CaloSwGap_v2  # CaloClusterCorrection
+    ca = makecorr (flags,
+                   [['@', cls_v2, [CALOCORR_NOPOOL], ['ele35']]],
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@xvers', # version
+                   'ele35',  # key
+                   None, # sampling
+                   CALOCORR_TOPOOL, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    assert (ca is None)
+
+    return
+
+
+# makecorr details 8
+def test11 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {'gapb2_GLOBAL_ele35' : 1}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW, EMB1, EMB2, CALOCORR_COOL
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    cls_v2 = CompFactory.CaloSwGap_v2  # CaloClusterCorrection
+    cls_v3 = CompFactory.CaloSwGap_v3  # CaloClusterCorrection
+    ca = makecorr (flags,
+                   [['@', {EMB1 : cls_v2, EMB2: cls_v3}, [CALOCORR_COOL], ['ele35']]],
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@GLOBAL', # version
+                   'ele35',  # key
+                   EMB2, # sampling
+                   None, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    exp = CaloSwGap_v3 ('gapb2_GLOBAL_ele352',
+                        prefix='ele35b2.',
+                        DBHandleKey='/CALO/CaloSwClusterCorrections/gap')
+    exp.check (tools)
+    ca.wasMerged()
+
+    ca = makecorr (flags,
+                   CaloSwGap_versions,
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   '@GLOBAL', # version
+                   'ele35',  # key
+                   EMB2, # sampling
+                   None, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    exp = CaloSwGap_v3 ('gapb2_GLOBAL_ele353',
+                        prefix='ele35b2.',
+                        DBHandleKey='/CALO/CaloSwClusterCorrections/gap')
+    exp.check (tools)
+    ca.wasMerged()
+
+    return
+                                     
+                                     
+# makecorr details 9
+def test12 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {'gapb2_GLOBAL_ele35' : 1}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW, EMB1, EMB2, CALOCORR_JO
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwPhioff import CaloSwPhioff_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    ca = makecorr (flags,
+                   CaloSwPhioff_versions,
+                   None,  # name
+                   'phioff',
+                   None,  # suffix
+                   None, # version
+                   'ele35',  # key
+                   EMB2, # sampling
+                   CALOCORR_JO, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    tools.correction = [[[]]]
+    tools.energies = []
+    exp = CaloSwPhioff_v2 ('phioffb2_v5data_ele35',
+                           prefix='ele35b2.',
+                           isDummy=False,
+                           region=1,
+                           correction_coef=0.001,
+                           interp_barriers=[0.8],
+                           degree=3,
+                           flip_phi=True,
+                           energy_degree=2,
+                           energies=[], correction=[[[]]])
+    exp.check (tools)
+    ca.wasMerged()
+
+    return
+
+
+# makecorr details 10  (config_from_jo)
+def test13 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {'gapb2_GLOBAL_ele35' : 1}
+    
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.constants import CALOCORR_SW, CALOCORR_EMTOPO, EMB1, EMB2, CALOCORR_JO
+    from CaloClusterCorrection.common import makecorr
+    from CaloClusterCorrection.CaloSwGap import CaloSwGap_versions
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    ca = makecorr (flags,
+                   CaloSwGap_versions,
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   None, # version
+                   'ele35_conv',  # key
+                   EMB2, # sampling
+                   CALOCORR_JO, # source
+                   None, # confclass
+                   CALOCORR_SW)
+    tools = ca.popPrivateTools()
+    tools.correctionGoodPhi = []
+    tools.correctionBadPhi = []
+    exp = CaloSwGap_v3 ('gapb2_v6_ele35_conv',
+                        prefix='ele35_convb2.',
+                        isDummy=False,
+                        correctionGoodPhi=[],
+                        correctionBadPhi=[],
+                        etamin_crack=1.425,
+                        etamax_crack=1.55,
+                        degree=3,
+                        use_raw_eta=False,
+                        use_raw_eta_boundaries=True,
+                        region=4)
+    exp.check (tools)
+    ca.wasMerged()
+
+
+    from CaloClusterCorrection.CaloTopoEMgap import CaloTopoEMgap_versions
+    ca = makecorr (flags,
+                   CaloTopoEMgap_versions,
+                   None,  # name
+                   'gap',
+                   None,  # suffix
+                   None, # version
+                   'ele633_conv',  # key
+                   EMB2, # sampling
+                   CALOCORR_JO, # source
+                   None, # confclass
+                   CALOCORR_EMTOPO)
+    tools = ca.popPrivateTools()
+    tools.correction = [[]]
+    exp = CaloTopoEMGap ('gapb2_v1_ele633_conv',
+                         prefix='ele633_convb2.',
+                         isDummy=False,
+                         region=5,
+                         etamin_crack=1.425,
+                         etamax_crack=1.55,
+                         degree=3,
+                         use_raw_eta=False,
+                         correction=[[]])
+    exp.check (tools)
+    ca.wasMerged()
+
+    from CaloClusterCorrection.common import _config_from_jo
+    corr = CompFactory.CaloSwPhioff_v2 ('foo')
+    _config_from_jo (corr, 'CaloSwPhioff_v5data.CaloSwPhioff_v5data_parms',
+                     'gam33_conv', EMB2, [], 101)
+    corr.correction = [[[]]]
+    corr.energies = []
+    exp = CaloSwPhioff_v2 ('foo',
+                           order=101,
+                           isDummy=False,
+                           region=1,
+                           correction_coef=0.001,
+                           interp_barriers=[0.8],
+                           degree=3,
+                           flip_phi=True,
+                           energy_degree=2,
+                           energies=[], correction=[[[]]])
+    exp.check (corr)
+    return
+                                     
+
+# config_from_pool
+def test14 (flags_in):
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.common import _config_from_pool
+    corr = CompFactory.CaloSwPhioff_v2 ('foo')
+
+    ca = _config_from_pool (flags, corr, None, None)
+    assert ca is False
+    return
+                                     
+
+# config_from_cool
+def test15 (flags_in):
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.common import _config_from_cool
+    corr = CompFactory.CaloSwPhioff_v2 ('foo')
+
+    ca = _config_from_cool (flags, corr, '/CALO/Ofl/CaloSwClusterCorrections/phioff', 'tag1')
+    exp = CaloSwPhioff_v2 ('foo',
+                           DBHandleKey='/CALO/Ofl/CaloSwClusterCorrections/phioff')
+    exp.check (corr)
+
+    exp = IOVDbSvc ('IOVDbSvc',
+                    dbConnection='sqlite://;schema=mycool.db;dbname=CONDBR2',
+                    DBInstance='CONDBR2',
+                    CacheAlign=3,
+                    GlobalTag='CONDBR2-BLKPA-2017-05',
+                    Folders=['/CALO/Ofl/CaloSwClusterCorrections/phioff<tag>tag1</tag><db>COOLOFL_CALO/CONDBR2</db>'])
+    exp.check (ca.getService ('IOVDbSvc'))
+
+    ca.wasMerged()
+
+    ca = _config_from_cool (flags, corr, '/CALO/Ofl/CaloSwClusterCorrections/phioff', 'tag2')
+    assert ca is False
+
+    return
+
+
+# longest_match
+def test16 (flags_in):
+    from CaloClusterCorrection.common import _longest_match
+
+    assert _longest_match ('a', 'abc') == 'abc'
+    assert _longest_match ('a', ['b', 'a', 'd']) == 'a'
+    assert _longest_match ('abc', ['a', 'ab', 'ad']) == 'ab'
+
+    return
+
+
+# make_corrections details
+def test17 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.Input.ProjectName = 'data18'
+    flags.Calo.ClusterCorrection.caloSwWhichCorrection = 'v6_lwc'
+    flags.lock()
+
+    from CaloClusterCorrection.CaloSwCorrections import layers, update, gap, calhits
+    from CaloClusterCorrection.constants import CALOCORR_JO, CALOCORR_POOL
+    from CaloClusterCorrection.poolfiles import poolfiles
+    ca = make_CaloSwCorrectionsCfg (flags, key = 'gam35',
+                                    corrlist = [[gap]])
+    tools = ca.popPrivateTools()
+
+    checkTools \
+      (tools,
+       [CaloSwGap_v2 ('gap_v4_gam35',
+                      prefix='gam35.',
+                      DBHandleKey='CaloSwClusterCorrections.gap-v4')
+        ])
+
+    ca.wasMerged()
+
+    return
+
+
+# make_corrections details
+def test18 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.Input.ProjectName = 'data18'
+    flags.lock()
+
+    from CaloClusterCorrection.CaloSwCorrections import layers, update, gap, calhits
+    from CaloClusterCorrection.constants import CALOCORR_JO, CALOCORR_POOL, CALOCORR_COOL
+    from CaloClusterCorrection.poolfiles import poolfiles
+    ca = make_CaloSwCorrectionsCfg (flags, key = 'gam35',
+                                    corrlist = [[gap]],
+                                    version = 'v6_lwc',
+                                    source = CALOCORR_POOL)
+    tools = ca.popPrivateTools()
+
+    checkTools \
+      (tools,
+       [CaloSwGap_v2 ('gap_v4_gam35',
+                      prefix='gam35.',
+                      DBHandleKey='CaloSwClusterCorrections.gap-v4')
+        ])
+
+    ca.wasMerged()
+
+    return
+
+
+# make_corrections details
+def test19 (flags_in):
+    common._poolfiles_seen = {}
+    common._folders_used = {}
+    common._alltools = {}
+    
+    flags = flags_in.clone()
+    flags.Input.isMC = True
+    flags.GeoModel.AtlasVersion = 'ATLAS-CSC-05-xx'
+    flags.IOVDb.GlobalTag = 'OFLCOND-RUN12-SDR-31'
+    flags.Calo.ClusterCorrection.caloSwGeneration = '00-02-01'
+    flags.lock()
+
+    from CaloClusterCorrection.CaloSwCorrections import layers, update, gap, calhits
+    from CaloClusterCorrection.constants import CALOCORR_JO, CALOCORR_POOL, CALOCORR_COOL
+    from CaloClusterCorrection.poolfiles import poolfiles
+    ca = make_CaloSwCorrectionsCfg (flags, key = 'gam35',
+                                    corrlist = [[gap]],
+                                    source = [CALOCORR_POOL, CALOCORR_COOL])
+    tools = ca.popPrivateTools()
+    checkTools \
+      (tools,
+       [CaloSwGap_v2 ('gap_v4_gam35',
+                      prefix='gam35.',
+                      DBHandleKey='CaloSwClusterCorrections.gap-v4')
+        ])
+    ca.wasMerged()
+
+    return
+
+
+# lookup_version
+def test20 (flags_in):
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections, layers, update, removebad
+    from CaloClusterCorrection.constants import CALOCORR_SW
+
+    vlist = CaloSwCorrections.lookup_version (flags, 'none', CALOCORR_SW)
+
+    from CaloClusterCorrection.common import CaloCorrectionConfigError
+    try:
+        vlist = CaloSwCorrections.lookup_version (flags, 'alsdjk', CALOCORR_SW)
+        assert 0
+    except CaloCorrectionConfigError as e:
+        assert e.args[0] == "Can't find global correction version alsdjk."
+    return
+
+
+# geom_match
+def test21 (flags_in):
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+
+    ret = CaloSwCorrections.geom_match ('geant4', 'CSC-01')
+    assert ret == ('v4_1_calh', True)
+
+    ret = CaloSwCorrections.geom_match ('geant4', 'asdasd')
+    assert ret == ('@GLOBAL', True)
+
+    from CaloClusterCorrection.common import CaloClusterCorrSetup
+    class TestCorr (CaloClusterCorrSetup):
+        geom_versions = [ ['foo', 'NOHIER#bar'] ]
+    testCorr = TestCorr()
+    ret = testCorr.geom_match ('geant4', 'foo')
+    assert ret == ('bar', False)
+
+    return
+
+
+# writing to pool
+def test22 (flags_in):
+    flags = flags_in.clone()
+    flags.lock()
+
+    from CaloClusterCorrection.CaloSwCorrections import CaloSwCorrections
+    from CaloClusterCorrection.constants import CALOCORR_SW
+
+    (corr_output_list, tag_list, ca) = \
+                       CaloSwCorrections.config_for_pool (flags,
+                                                          'ele35',
+                                                          CALOCORR_SW)
+    ca.wasMerged()
+    # FIXME: validate return?
+    return
+    
+    
+# make_ForPool details
+def test23 (flags_in):
+    flags = flags_in.clone()
+    flags.lock()
+
+    def f1(*args, **kw): pass
+    def f2(*args, **kw): pass
+
+    from CaloClusterCorrection.common import CaloClusterCorrSetup
+    class TestCorr1 (CaloClusterCorrSetup):
+        correction_generation_default = '00-00-00'
+        correction_generation_flag_name = 'caloSwGeneration'
+        versions = {
+            'a' : [[f1, 200],
+                   [f2, 100]]}
+    testCorr1 = TestCorr1()
+    from CaloClusterCorrection.common import CaloCorrectionConfigError
+    try:
+        testCorr1.make_ForPool (flags, ['asd'], 'asd')
+        assert 0
+    except CaloCorrectionConfigError as e:
+        assert e.args[0] == "Tools for global version a are not in order! 100(f2) < 200(f1)"
+
+    class TestCorr2 (CaloClusterCorrSetup):
+        correction_generation_default = '00-00-00'
+        correction_generation_flag_name = 'caloSwGeneration'
+        versions = {
+            'a' : [[f1, 100],
+                   [f2, 200]],
+            'b' : [[f1, 100],
+                   [f2, 201]],
+            }
+    testCorr2 = TestCorr2()
+    try:
+        testCorr2.make_ForPool (flags, ['asd'], 'asd')
+        assert 0
+    except CaloCorrectionConfigError as e:
+        assert e.args[0] == "Tool f2 has order 201 in b but order 200 in a!"
+    return
+
+
+from AthenaConfiguration.TestDefaults import defaultTestFiles
+from AthenaCommon.Configurable import Configurable
+Configurable.configurableRun3Behavior = 1
+
+from AthenaConfiguration.AllConfigFlags import ConfigFlags
+ConfigFlags.loadAllDynamicFlags()
+ConfigFlags.Input.Files = defaultTestFiles.RAW
+
+test1 (ConfigFlags)
+test2 (ConfigFlags)
+test3 (ConfigFlags)
+test4 (ConfigFlags)
+test5 (ConfigFlags)
+test6 (ConfigFlags)
+test7 (ConfigFlags)
+test8 (ConfigFlags)
+test9 (ConfigFlags)
+test10 (ConfigFlags)
+test11 (ConfigFlags)
+test12 (ConfigFlags)
+test13 (ConfigFlags)
+test14 (ConfigFlags)
+test15 (ConfigFlags)
+test16 (ConfigFlags)
+test17 (ConfigFlags)
+test18 (ConfigFlags)
+test19 (ConfigFlags)
+test20 (ConfigFlags)
+test21 (ConfigFlags)
+test22 (ConfigFlags)
+test23 (ConfigFlags)
+
+
+c.analyze()