diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py
index 4ecfba70b14fb0891b35759aa4e9a2d95557be35..8c2f043fb7e7369766e16f44da29f0adbad32c63 100644
--- a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0087851_BPTX.py
@@ -40,7 +40,7 @@ runArgs.trigStream = 'IDCosmic'
 runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','from LArROD.LArRODFlags import larRODFlags','larRODFlags.readDigits.set_Value_and_Lock(False)','doTopoClusterCBNT=True']
 
 # Configuration fragment for DPD.
-runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCond/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
 
 runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
 
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py
index 64601c72a9cc5d7d34516c4c20b643e8f12a0b6a..ebbd3749985e400747ede1aaf6dfac843c4e626c 100644
--- a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_0091900_cosmics.py
@@ -35,7 +35,7 @@ runArgs.trigStream = 'IDCosmic'
 runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','doTopoClusterCBNT=True','rec.doFloatingPointException=False']
 
 # Configuration fragment for DPD.
-runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCond/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
 
 runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
 
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py
index 9909ad379f4211823f7fc668eca026fd022dac22..1155d1440061117d175383dc8d7f031c57c62317 100755
--- a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_MinBias.py
@@ -36,7 +36,7 @@ runArgs.trigStream = 'MinBias'
 runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=False','rec.doInDet=False','rec.doMuon=False','rec.doMuonCombined=False','rec.doEgamma=False','rec.doTau=False','rec.doTrigger=False','from LArROD.LArRODFlags import larRODFlags','larRODFlags.readDigits.set_Value_and_Lock(False)','doTopoClusterCBNT=True']
 
 # Configuration fragment for DPD.
-runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCond/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
 
 # Configuration fragment for DPD.
 #runArgs.postInclude = ['RecJobTransforms/reducedRegionSelectorPostConfig.py']
diff --git a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py
index b24860976b101a02b0b3f68a18f2551aed336c78..09489ca70b20cf6b271bbf5ac18d8a9f239772b0 100755
--- a/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py
+++ b/Calorimeter/CaloExample/CaloRecEx/share/CaloRecEx_RTT_physics_cosmics.py
@@ -34,7 +34,7 @@ runArgs.preExec = ['from RecExConfig.RecFlags  import rec','rec.doMonitoring=Fal
 #runArgs.preExec = ['from RecExConfig.InputFilePeeker import inputFileSummary','inputFileSummary.stream_names=StreamESD']
 
 # Configuration fragment for DPD.
-runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/RecExCommissionRepro.py', 'RecExCond/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py']
 
 runArgs.postExec = ['from CaloRec.CaloRecConf import CBNTAA_CaloCluster','theCBNT_CaloClusterTopo=CBNTAA_CaloCluster("CBNT_CaloClusterTopo")','theCBNT_CaloClusterTopo.MaxCaloCluster = 2000']
 
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h
index 5644fd1f7d6473944e62fae6100f2bf25487c77c..92b813957090881faeba75d38e82620164b59212 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h
@@ -81,7 +81,7 @@ namespace Monitored {
       m_monitoredGroup(std::move(monitoredGroup))
 	{ }
     
-    virtual ~Group() {
+    ~Group() {
       if (m_autoFill) {
         fill();
       }
@@ -97,7 +97,7 @@ namespace Monitored {
      *
      * @snippet Control/AthenaMonitoringKernel/test/GenericMonFilling_test.cxx fillExplicitly_fill
      **/
-    virtual void fill() {
+    void fill() {
       if ( m_tool.empty() ) return;
       setAutoFill(false);
       m_tool->invokeFillers(m_monitoredGroup);
diff --git a/Control/AthenaMonitoringKernel/CMakeLists.txt b/Control/AthenaMonitoringKernel/CMakeLists.txt
index b11c276a798707f8641ad43abfd1a248a5a137c4..eafe3a9d62f41fe2173502c3a95a87ec7c643e61 100644
--- a/Control/AthenaMonitoringKernel/CMakeLists.txt
+++ b/Control/AthenaMonitoringKernel/CMakeLists.txt
@@ -25,7 +25,7 @@ atlas_add_library(
 atlas_add_component(
     AthenaMonitoringKernel
     src/components/*.cxx
-    PRIVATE_LINK_LIBRARIES AthenaMonitoringKernelLib
+    LINK_LIBRARIES AthenaMonitoringKernelLib
 )
 
 # Install files from the package:
diff --git a/Control/CxxUtils/CxxUtils/get_unaligned.h b/Control/CxxUtils/CxxUtils/get_unaligned.h
index 02aa49fa19d3a553ec72889faecaa46f617f98cb..fcb9c01f4c23b69b83b4da10dab94381fa0190ba 100644
--- a/Control/CxxUtils/CxxUtils/get_unaligned.h
+++ b/Control/CxxUtils/CxxUtils/get_unaligned.h
@@ -13,7 +13,7 @@
  *   char* p = ...;
  *   int* ip = reinterpret_cast<int*>(p);
  *   int i = *ip++;
- @endif
+ *@endcode
  *
  * is undefined if @c p isn't aligned to an int boundary.  It further
  * will read the value using the host endianness, which is an issue
diff --git a/Database/IOVDbSvc/share/IOVRecExCommission.py b/Database/IOVDbSvc/share/IOVRecExCommission.py
deleted file mode 100644
index f1e69355b0977b321c417c42907f76dd86a8ca7d..0000000000000000000000000000000000000000
--- a/Database/IOVDbSvc/share/IOVRecExCommission.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# IOVRecExCommission.py - setup IOVDbSvc for RecExCommission
-# commissioning with real data
-
-log.warning("IOVDbSvc/IOVRecExCommission.py - This file is obselete; conditions DB access should automatically be configured from detector geometry")
-
-from AthenaCommon.GlobalFlags import globalflags
-if (globalflags.DetGeo()=='commis' and globalflags.DataSource()=='data'):
-    from IOVDbSvc.CondDB import conddb
-else:
-    raise RuntimeError,'IOVRecExCommission.py included but geometry is not commis / real data'
diff --git a/Database/IOVDbSvc/share/IOVRecExCommissionMC.py b/Database/IOVDbSvc/share/IOVRecExCommissionMC.py
deleted file mode 100644
index 107bab00a4bac343899bc9472d47f0c4b5e9f29f..0000000000000000000000000000000000000000
--- a/Database/IOVDbSvc/share/IOVRecExCommissionMC.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# IOVRecExCommission.py - setup IOVDbSvc for RecExCommissionMC
-# commissioning with Monte Carlo
-
-log.warning("IOVDbSvc/IOVRecExCommissionMC.py - This file is obselete; conditions DB access should automatically be configured from detector geometry")
-
-from AthenaCommon.GlobalFlags import globalflags
-if (globalflags.DetGeo()=='commis' and globalflags.DataSource()!='data'):
-    from IOVDbSvc.CondDB import conddb
-else:
-    raise RuntimeError,'IOVRecExCommissionMC.py included but geometry is not commis / Monte Carlo'
diff --git a/Database/IOVDbSvc/share/IOVRecExCommissionSR1.py b/Database/IOVDbSvc/share/IOVRecExCommissionSR1.py
deleted file mode 100644
index 2c536f0fb08314bba560061f720afaa74a4d559b..0000000000000000000000000000000000000000
--- a/Database/IOVDbSvc/share/IOVRecExCommissionSR1.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# IOVRecExCommissionSR1.py - setup IOVDbSvc for ID commissioning in SR1
-# commissioning with real data, but temporarily using COOL1.2.x CMCPROD db
-# setup for sqlite replica expected to be found in sqlite130/CMCPROD.db
-#
-
-include.block ( "IOVDbSvc/IOVRecExCommissionSR1.py" )
-
-IOVCoolDBTech="sqlite"
-IOVCoolDBProd="CMCPROD"
-IOVCoolDBUser="ATLAS_COOL_READER"
-IOVCoolDBPwd="COOLRED4PRO"
-#
-include("IOVDbSvc/IOVCondDB.py")
-
-# include comcond catalog via DATAPATH
-PoolSvc = Service( "PoolSvc" )
-PoolSvc.ReadCatalog+= [ "prfile:poolcond/PoolCat_comcond.xml" ]
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h
index c9f7350b9b5519397d333905470b3756e0048422..c728cf248a0fabd79fb86199e40daa525df6373a 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/AddbranchProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_ADD_BRANCH_PROCESSOR_H
 #define GEO_MODEL_XML_ADD_BRANCH_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //   Processor for addbranch tags.
 //
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h
index e35d330a15b8df534a20fd1a4bd762d7066c777b..523204ece15ed2195eab0a9167d2b7e6a33a7247 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_ASSEMBLY_PROCESSOR_H
 #define GEO_MODEL_XML_ASSEMBLY_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //   Processor for assembly tags.
 //
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h
index 9c3bf3c7fb7d7d76ab7cdd1b76c1ff135fbfe87b..54e1a691202758fd4b45d4994f92c8e99435ffdf 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/AssemblyrefProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_ASSEMBLYREF_PROCESSOR_H
 #define GEO_MODEL_XML_ASSEMBLYREF_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 
 //
 //   Processor for assemblyref tags.
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h b/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h
index 1e2faebbe9154ba77baaadc3a25ae755d816339e..aa892ce437937ed9ff5d7808f9e4f99a4fd0fdf4 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/Element2GeoItem.h
@@ -9,17 +9,19 @@
 //
 #ifndef GEO_MODEL_XML_ELEMENT2GEO_ITEM_H
 #define GEO_MODEL_XML_ELEMENT2GEO_ITEM_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include <map>
 #include <string>
 
-#include <xercesc/dom/DOM.hpp>
-
 class RCBase;
 class GmxUtil;
 
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMElement;
+XERCES_CPP_NAMESPACE_END
 class ProcessorRegistry;
-namespace HepTool {class Evaluator;}
+class Evaluator;
 
 class Element2GeoItem {
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h
index 4a1f61e2dde4b6c7cb0a74dd0b105acc3318c269..08c92612ac39c52b926a019c51782981d34e7bb1 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/ElementProcessor.h
@@ -9,10 +9,13 @@
 //
 #ifndef GEO_MODEL_XML_ELEMENT_PROCESSOR_H
 #define GEO_MODEL_XML_ELEMENT_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/GeoNodeList.h"
-#include <xercesc/dom/DOM.hpp>
 
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMElement;
+XERCES_CPP_NAMESPACE_END
 class GmxUtil;
 
 class ElementProcessor {
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h b/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h
index 9df842d8ce20cbc00397475b97bc68f93b912456..2690f137c6fdaac058cc8299dbe2854e751c6402 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/Gmx2Geo.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_GMX2GEO_H
 #define GEO_MODEL_XML_GMX2GEO_H
+#include <xercesc/util/XercesDefs.hpp>
 
 /**
  *  @brief Create a branch of a GeoModel Tree.
@@ -43,9 +44,12 @@
 #include "GeoModelXml/GmxInterface.h"
 
 class GeoPhysVol;
-
-#include <xercesc/dom/DOM.hpp>
-#include <xercesc/dom/DOMLSParser.hpp>
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMDocument;
+XERCES_CPP_NAMESPACE_END
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMNode;
+XERCES_CPP_NAMESPACE_END
 
 class Evaluator;
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h b/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h
index a99e9a9a2f2eb5f644dec49efa773e5e119d2b95..1ca6a1029aa8088e87720475ac4963d6aea8298f 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/GmxUtil.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 GEO_MODEL_XML_GMXUTIL_H
@@ -28,7 +28,11 @@
 #include "GeoModelXml/MakeTransformationref.h"
 #include "GeoModelXml/MakeTranslation.h"
 #include "GeoModelXml/MakeRotation.h"
+#ifndef GEOMODEL_STANDALONE_GMX
+// #include "GeoModelXml/MakeScaling.h"
+#endif
 
+#include "GeoModelXml/shape/MakeSimplePolygonBrep.h"
 #include "GeoModelXml/shape/MakeBox.h"
 #include "GeoModelXml/shape/MakeCons.h"
 #include "GeoModelXml/shape/MakeGenericTrap.h"
@@ -78,6 +82,7 @@ public:
 //
         MakeElement element;
         MakeMaterial material;
+        MakeSimplePolygonBrep simplepolygonbrep;
         MakeBox box;
         MakeCons cons;
         MakeGenericTrap generictrap;
@@ -99,6 +104,9 @@ public:
 //
         MakeTranslation translation;
         MakeRotation rotation;
+#ifndef GEOMODEL_STANDALONE_GMX
+//        MakeScaling scaling;
+#endif
 //
 //    Other things
 //
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h
index 036415efa90fc9674e6817ed6eb988c1e08a73ff..2e66b9576e339848c18e7a72c1faeac9817909fb 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/IndexProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_INDEX_PROCESSOR_H
 #define GEO_MODEL_XML_INDEX_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //   Processor for index tags which change the formula for generating a position-index.
 //
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h
index 61003e0e0a57307e9fbe11a376b852d7d8ead0bb..a3b44e18f599c3ca959869433f2c75190ca92ddf 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_LOGVOL_PROCESSOR_H
 #define GEO_MODEL_XML_LOGVOL_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //   Processor for logvol tags.
 //
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h
index 82ad815c0de56231808191f1b7a26f2ed633757b..a3efbb9bd4157992bdadda0e6b9229f7a4783c2e 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/LogvolrefProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_LOGVOLREF_PROCESSOR_H
 #define GEO_MODEL_XML_LOGVOLREF_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 
 //
 //   Processor for logvolref tags.
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h
index f89e03a70a16af3fa3d9a04adec4ecafd0c963b4..f1494499f1af72106d71ab71a3a6892c6f7034e1 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeElement.h
@@ -7,6 +7,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_ELEMENT_H
 #define GEO_MODEL_XML_MAKE_ELEMENT_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h
index a91509ce2f3283193ce850a6b1777b6ecd3c31dc..8d95e862226a72f8206a06620d6d430f7c0aaa8e 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeMaterial.h
@@ -7,6 +7,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_MATERIAL_H
 #define GEO_MODEL_XML_MAKE_MATERIAL_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h
index 00d30450184986f87588832fcc7b10a5cf051d91..3a41d1ebbc8179c5d2537ee890a405e96a787194 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeRotation.h
@@ -4,17 +4,17 @@
 
 #ifndef GEO_MODEL_XML_MAKE_ROTATION_H
 #define GEO_MODEL_XML_MAKE_ROTATION_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //    Create and return a HepRotation3d. Caller must delete it.
 //
 
-#include <xercesc/dom/DOM.hpp>
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMElement;
+XERCES_CPP_NAMESPACE_END
 #include "GeoModelKernel/GeoDefinitions.h"
-
-//namespace HepGeom {class Rotate3D;}
 class GmxUtil;
 
-
 class MakeRotation {
 public:
     MakeRotation();
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h
index 9977b8c26b99cd5fcf02eb718d007ac182381b45..c80e05c88c8f15581f75f6bd27f5358236eadf71 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformation.h
@@ -7,6 +7,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_TRANSFORMATION_H
 #define GEO_MODEL_XML_MAKE_TRANSFORMATION_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h
index ac1b56787f197c54439766150d422aea631d9fb8..5c345f73663ddb943762f1ece8b883b0ee482730 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTransformationref.h
@@ -7,6 +7,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_TRANSFORMATIONREF_H
 #define GEO_MODEL_XML_MAKE_TRANSFORMATIONREF_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h
index 8bd4f793dffd6658dee9ece052f8cb1d15654b2d..3464308f791059a16548cd7fa36d0f89e52d299f 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MakeTranslation.h
@@ -4,15 +4,15 @@
 
 #ifndef GEO_MODEL_XML_MAKE_TRANSLATION_H
 #define GEO_MODEL_XML_MAKE_TRANSLATION_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //    Create and return a HepRotation3d. Caller must delete it.
 //
 
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMElement;
+XERCES_CPP_NAMESPACE_END
 #include "GeoModelKernel/GeoDefinitions.h"
-
-#include <xercesc/dom/DOM.hpp>
-
-//namespace HepGeom {class Translate3D;}
 class GmxUtil;
 
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h
index 4c0bd59784dd834fb8128f6c89e64f4551e3ae98..d52033f4ea5ae1ca046ca83547b2d6696dab7808 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/MulticopyProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_MULTICOPY_PROCESSOR_H
 #define GEO_MODEL_XML_MULTICOPY_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 //
 //   Processor for multicopy tags.
 //
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/OutputDirector.h b/DetectorDescription/GeoModelXml/GeoModelXml/OutputDirector.h
new file mode 100644
index 0000000000000000000000000000000000000000..e6fc568a707de6e4e8216dbca738dd9ada5befba
--- /dev/null
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/OutputDirector.h
@@ -0,0 +1,42 @@
+/*
+    Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+//
+//    Use gaudi messaging service when in Athena; use cout when "stand-alone".
+//
+
+#ifndef OUTPUTDIRECTOR_H
+#define OUTPUTDIRECTOR_H
+
+#ifdef GEOMODEL_STANDALONE_GMX
+  #include <iostream>
+  #include <string>
+
+  namespace MSG {
+    // enum((VERBOSE=1, DEBUG, INFO, WARNING, ERROR, FATAL, ALWAYS))}
+    const std::string PKG_NAME("GeoModelXML-");
+    const std::string VERBOSE(PKG_NAME + "VERBOSE: ");
+    const std::string DEBUG(PKG_NAME + "DEBUG: ");
+    const std::string INFO(PKG_NAME + "INFO: ");
+    const std::string WARNING(PKG_NAME + "WARNING: ");
+    const std::string ERROR(PKG_NAME + "ERROR: ");
+    const std::string FATAL(PKG_NAME + "FATAL: ");
+    const std::string ALWAYS(PKG_NAME + "ALWAYS: ");
+  }
+  // Consider changing this to a longer, less clashing sort of name, in the code
+  #define msglog std::cout
+  #define endmsg std::endl
+  // Nothing to do for stand-alone output; cout is already available.
+  #define OUTPUT_STREAM 
+#else
+  #include "GaudiKernel/ServiceHandle.h"
+  #include "GaudiKernel/MsgStream.h"
+  #include "GaudiKernel/IMessageSvc.h"
+  // Macro OUTPUT_STREAM opens a MsgStream called log; can then write to it.
+  // Cannot get ServiceHandle directly into the macro; hide it with a typedef...
+  typedef ServiceHandle<IMessageSvc> SvcHndl;
+  #define OUTPUT_STREAM SvcHndl msgh("MessageSvc", "GeoModelXml"); MsgStream msglog(&(*msgh), "GeoModelXml")
+#endif
+
+#endif // OUTPUTDIRECTOR_H
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h b/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h
index 84e00de59fe56ae1efe294d7f25c06f4cc6f7508..09dc48d18c59b7578261776e5866f84924e8ff39 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/StrictErrorHandler.h
@@ -7,6 +7,7 @@
 //
 #ifndef GEO_MODEL_XML_STRICT_ERROR_HANDLER_H
 #define GEO_MODEL_XML_STRICT_ERROR_HANDLER_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include <xercesc/dom/DOMErrorHandler.hpp>
 #include <xercesc/util/XMLString.hpp>
@@ -36,4 +37,4 @@ inline bool StrictErrorHandler::getSawErrors() const {
     return m_SawErrors;
 }
 
-#endif //STRICT_ERROR_HANDLER_H
\ No newline at end of file
+#endif //STRICT_ERROR_HANDLER_H
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h
index 1d90afd707dc93139d10b76349c175878b63b0e7..7167379dd05e3b2f2cd38044090161d57a1574a3 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/TransformProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_TRANSFORM_PROCESSOR_H
 #define GEO_MODEL_XML_TRANSFORM_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 
 //
 //   Processor for transform tags.
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h b/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h
index 0c04a62b7321b2ad4648502cef0722b7ff98736d..3314c90ea9fff64e97be50daa1272a5a729ee735 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/TransformrefProcessor.h
@@ -4,6 +4,7 @@
 
 #ifndef GEO_MODEL_XML_TRANSFORMREF_PROCESSOR_H
 #define GEO_MODEL_XML_TRANSFORMREF_PROCESSOR_H
+#include <xercesc/util/XercesDefs.hpp>
 
 //
 //   Processor for logvolref tags.
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h b/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h
index 2fafc9d772891104171cded4dd4ad1a1c464414c..bc7772436d8bc2b82967cd4b747fe7fdba93c7fb 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/createdomdocument.h
@@ -1,7 +1,9 @@
 /*
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
-
+#ifndef CREATEDOMDOCUMENT_H
+#define CREATEDOMDOCUMENT_H
+#include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/dom/DOMLSParser.hpp>
 #include <iostream>
@@ -10,3 +12,5 @@ using namespace std;
 using namespace xercesc;
 
 DOMDocument *createDOMDocument(string xmlFile, DOMLSParser *parser, unsigned int flags = 0);
+
+#endif // CREATEDOMDOCUMENT_H
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h
index 411d73ccaf9b315827a91b8b6d9e01607bb2a0eb..7bac7dfa87f5f188905b3dc88479a14ffe3b2968 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/AddPlane.h
@@ -4,8 +4,11 @@
 
 #ifndef ADDPLANE_H
 #define ADDPLANE_H
+#include <xercesc/util/XercesDefs.hpp>
 
-#include <xercesc/dom/DOM.hpp>
+XERCES_CPP_NAMESPACE_BEGIN
+class DOMElement;
+XERCES_CPP_NAMESPACE_END
 
 class AddPlane {
 public:
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h
index 8c039062ce332383d6f2503f3675d44ac6daff5e..599abebcec3b07fd648e3a84ad280b2cfacc7c01 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeBox.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_BOX_H
 #define GEO_MODEL_XML_MAKE_BOX_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h
index 8c4e3a77c80996bf47b5349ce98c3a971bf4a3fe..9283cfc20a0b8ac1d7b1f28e54b71f8cb0fb3329 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeCons.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_CONS_H
 #define GEO_MODEL_XML_MAKE_CONS_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h
index f0f2a77d92e03d5852e17a93de284d7e853c362b..0eed6fe1193ef4c476cef6c33172c37190cb3ecc 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeGenericTrap.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_GENERICTRAP_H
 #define GEO_MODEL_XML_MAKE_GENERICTRAP_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h
index a99c42740a1c9357895d95ce2ee12cd8228508b6..483a11e51fecc2285f66a949de54b0e743282abd 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeIntersection.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_INTERSECTION_H
 #define GEO_MODEL_XML_MAKE_INTERSECTION_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h
index 1fd1ca29ec7db19f5e41ba339cd8ec5b252c3bb2..b354c986541eff1b35c55c6967c7c313224cd98d 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePara.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_PARA_H
 #define GEO_MODEL_XML_MAKE_PARA_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h
index 81343184fbffc154e2727f858810adffc4b70dec..aab86ab53367d9c6921110411baf9def6a9f9067 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePcon.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_PCON_H
 #define GEO_MODEL_XML_MAKE_PCON_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h
index 15111add35a02213d496c07c854852d96cb2a5f6..df9fded68e5f2382b1c0f8018adb8eefcd87996d 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakePgon.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_PGON_H
 #define GEO_MODEL_XML_MAKE_PGON_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h
index f90f750b2f52802631993e4f2ff687e308c9cc77..905e5fe2c131f60890aece05f8f056631d8714be 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeShaperef.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_SHAPEREF_H
 #define GEO_MODEL_XML_MAKE_SHAPEREF_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSimplePolygonBrep.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSimplePolygonBrep.h
new file mode 100644
index 0000000000000000000000000000000000000000..5ec995fb3fbc496de16e1970f01e2b6a14977ae4
--- /dev/null
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSimplePolygonBrep.h
@@ -0,0 +1,20 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+#include <xercesc/util/XercesDefs.hpp>
+//
+//    Handle simplePolygonBrep shape elements.
+//
+#ifndef GEO_MODEL_XML_MAKE_SIMPLEPOLYGONBREP_H
+#define GEO_MODEL_XML_MAKE_SIMPLEPOLYGONBREP_H
+#include <xercesc/util/XercesDefs.hpp>
+
+#include "GeoModelXml/Element2GeoItem.h"
+
+class MakeSimplePolygonBrep: public Element2GeoItem {
+public:
+    MakeSimplePolygonBrep();
+    const RCBase * make(const xercesc::DOMElement *element, GmxUtil &gmxUtil) const;
+};
+
+#endif // GEO_MODEL_XML_MAKE_SIMPLEPOLYGONBREP_H
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h
index 3550f662bb43c42ba23952d18075f935e1e8736c..5dcd328651f4438b568e0e67d090ebb9645a92d3 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeSubtraction.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_SUBTRACTION_H
 #define GEO_MODEL_XML_MAKE_SUBTRACTION_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h
index fd0e871db4c2c5f9bde0cf5e87d5011a2a669efb..3e8794c8c2e9a4ea43b5189b6dd931a4d209fb2a 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrap.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_TRAP_H
 #define GEO_MODEL_XML_MAKE_TRAP_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h
index c12e0d23ad90db42a637b436e63832c1837a4256..85ec542afa17852cf85ff6c18ccc06127950c612 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTrd.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_TRD_H
 #define GEO_MODEL_XML_MAKE_TRD_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h
index 47eeafee4884bc16b4056bc1727d3388378aa967..8c6f45debeb43709523b3f688e52a84c549687b1 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTube.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_TUBE_H
 #define GEO_MODEL_XML_MAKE_TUBE_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h
index 6efbf27e1364a70eb9ac4f7771786d8cec2821e6..c414908e5ba65f6e63f3e65dc7fb0c693a59d621 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeTubs.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_TUBS_H
 #define GEO_MODEL_XML_MAKE_TUBS_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h
index ecb2eee446078fb3df64b64a0b35291aca5f9359..e1a762fda56697a5488eb60225e8494565761213 100644
--- a/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h
+++ b/DetectorDescription/GeoModelXml/GeoModelXml/shape/MakeUnion.h
@@ -8,6 +8,7 @@
 //
 #ifndef GEO_MODEL_XML_MAKE_UNION_H
 #define GEO_MODEL_XML_MAKE_UNION_H
+#include <xercesc/util/XercesDefs.hpp>
 
 #include "GeoModelXml/Element2GeoItem.h"
 
diff --git a/DetectorDescription/GeoModelXml/GeoModelXml/translate.h b/DetectorDescription/GeoModelXml/GeoModelXml/translate.h
deleted file mode 100644
index d234adc7edb0f892f0909280171ad825a96ea205..0000000000000000000000000000000000000000
--- a/DetectorDescription/GeoModelXml/GeoModelXml/translate.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef GEO_MODEL_XML_TRANSLATE_H
-#define GEO_MODEL_XML_TRANSLATE_H
-//
-//    Just an abbreviation for transcode functions. 
-//        translate("a string") returns the u16 type needed internally by Xerces-C
-//        translate(Xerces-C string) returns a char * string version
-//
-//    remember to release a char * with XMLString::release(char *theStringYouGaveMe) when finished with it
-//
-#include <xercesc/util/XMLString.hpp>
-
-#define Translate xercesc::XMLString::transcode 
-
-#endif // TRANSLATE_H
diff --git a/DetectorDescription/GeoModelXml/data/geomodel.dtd b/DetectorDescription/GeoModelXml/data/geomodel.dtd
index 54cf5c59d9012e4dc64979e0f957d879f805f17a..e0b0d314610b42f658d0c2bb244623168af97ea5 100644
--- a/DetectorDescription/GeoModelXml/data/geomodel.dtd
+++ b/DetectorDescription/GeoModelXml/data/geomodel.dtd
@@ -65,9 +65,15 @@
     <!ELEMENT addindex EMPTY>
         <!ATTLIST addindex name ID #REQUIRED>
 
-  <!ELEMENT shapes ((box|cons|generictrap|para|pcon|pgon|trap|tube|tubs|trd|intersection|subtraction|union)+)>
+  <!ELEMENT shapes ((box|cons|generictrap|para|pcon|pgon|trap|tube|tubs|trd|intersection|subtraction|union|simplepolygonbrep)+)>
     <!-- All shapes allowed in GeoModel manual. Same name, parameters, parameter order, but always lower case -->
 
+    <!ELEMENT simplepolygonbrep EMPTY>
+      <!ATTLIST simplepolygonbrep name        ID    #REQUIRED
+                                  xpoints     CDATA #REQUIRED
+                                  ypoints     CDATA #REQUIRED
+                                  zhalflength CDATA #REQUIRED>
+
     <!ELEMENT box EMPTY>
       <!ATTLIST box name        ID    #REQUIRED
                     xhalflength CDATA #REQUIRED
diff --git a/DetectorDescription/GeoModelXml/src/AddPlane.cxx b/DetectorDescription/GeoModelXml/src/AddPlane.cxx
index 5befaade807fe73d61b4bea43c5afd1313708d41..dd2f71cdf47e0717b459364ce9eba7ac489a8a06 100644
--- a/DetectorDescription/GeoModelXml/src/AddPlane.cxx
+++ b/DetectorDescription/GeoModelXml/src/AddPlane.cxx
@@ -7,15 +7,15 @@
 #include <sstream>
 
 #include <xercesc/dom/DOM.hpp>
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 
 using namespace xercesc;
 
-void AddPlane::process(const DOMElement *element, double &zPlane, double &rMinPlane, double &rMaxPlane) {
+void AddPlane::process(const xercesc::DOMElement *element, double &zPlane, double &rMinPlane, double &rMaxPlane) {
 
-    std::istringstream(Translate(element->getAttribute(Translate("zplane")))) >> zPlane;
-    std::istringstream(Translate(element->getAttribute(Translate("rminplane")))) >> rMinPlane;
-    std::istringstream(Translate(element->getAttribute(Translate("rmaxplane")))) >> rMaxPlane;
+    std::istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("zplane")))) >> zPlane;
+    std::istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("rminplane")))) >> rMinPlane;
+    std::istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("rmaxplane")))) >> rMaxPlane;
 
     return;
 }
diff --git a/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx b/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx
index f0d3119519fdfbb96c77020a80197a64fa0dc631..8a74efb97e724fbc4aa1bbd153487fb506bfb526 100644
--- a/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/AddbranchProcessor.cxx
@@ -13,17 +13,17 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelXml/ProcessorRegistry.h"
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace std;
 using namespace xercesc;
 
-void AddbranchProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
+void AddbranchProcessor::process(const xercesc::DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
 
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) {
-            char *name2release = Translate(child->getNodeName());
+            char *name2release = XMLString::transcode(child->getNodeName());
             string name(name2release);
             XMLString::release(&name2release);
             gmxUtil.processorRegistry.find(name)->process(dynamic_cast<const DOMElement *>(child), gmxUtil, toAdd);
diff --git a/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx b/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx
index 27cff3b600c16602c58df421a4cb774b1434198e..29397e85f4c86e3270f0f3261758871fa5285768 100644
--- a/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/AssemblyProcessor.cxx
@@ -23,7 +23,7 @@
 #include "GeoModelKernel/GeoFullPhysVol.h"
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelXml/GeoNodeList.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 
 // using namespace CLHEP;
 
@@ -36,7 +36,7 @@ GeoNameTag *physVolName;
 
     gmxUtil.positionIndex.incrementLevel();
 
-    char *name2release = Translate(element->getAttribute(Translate("name")));
+    char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
     string name(name2release);
     XMLString::release(&name2release);
 //
@@ -67,7 +67,7 @@ GeoNameTag *physVolName;
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) {
             DOMElement *el = dynamic_cast<DOMElement *> (child);
-            name2release = Translate(el->getNodeName());
+            name2release = XMLString::transcode(el->getNodeName());
             string name(name2release);
             XMLString::release(&name2release);
             gmxUtil.processorRegistry.find(name)->process(el, gmxUtil, childrenAdd);
@@ -76,7 +76,7 @@ GeoNameTag *physVolName;
 //
 //    Make a new PhysVol and add everything to it, then add it to the list of things for my caller to add
 //
-    char *toRelease = Translate(element->getAttribute(Translate("alignable")));
+    char *toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")));
     string alignable(toRelease);
     XMLString::release(&toRelease);
     if (alignable.compare(string("true")) == 0) {
@@ -101,7 +101,7 @@ GeoNameTag *physVolName;
 
 void AssemblyProcessor::zeroId(const xercesc::DOMElement *element) {
 
-    char *name2release = Translate(element->getAttribute(Translate("name")));
+    char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
     string name(name2release);
     XMLString::release(&name2release);
 //
diff --git a/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx b/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx
index 8a362ab115b97913d883e8055c847915dbd6be4a..a95d759851b7c6d0fb30950957915528986dc439 100644
--- a/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/AssemblyrefProcessor.cxx
@@ -5,28 +5,22 @@
 //
 //    Process assemblyref items: basically, just find the referenced assembly and call its processor.
 //
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else 
-#include <iostream>
-#endif
-
-
+#include "GeoModelXml/OutputDirector.h"
 #include "GeoModelXml/AssemblyrefProcessor.h"
 #include <string>
+
+#include "xercesc/util/XercesDefs.hpp"
 #include <xercesc/dom/DOM.hpp>
+#include "xercesc/util/XMLString.hpp"
+
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelXml/GeoNodeList.h"
-#include "GeoModelXml/translate.h"
 
 using namespace std;
 using namespace xercesc;
 
 void AssemblyrefProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
-const XMLCh *ref = Translate("ref");
+const XMLCh *ref = XMLString::transcode("ref");
 const XMLCh *idref;
 DOMDocument *doc = element->getOwnerDocument();
 char *toRelease;
@@ -38,26 +32,20 @@ char *toRelease;
 //
 //    Check it is the right sort
 //
-    toRelease = Translate(elem->getNodeName());
+    toRelease = XMLString::transcode(elem->getNodeName());
     string nodeName(toRelease);
     XMLString::release(&toRelease);
     if (nodeName != string("assembly")) {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL << "Error in xml/gmx file: assemblyref " << Translate(idref) << " referenced a " << 
-                              nodeName << " instead of an assembly.\n";
-#else
-	std::cerr<< "Error in xml/gmx file: assemblyref " << Translate(idref) << " referenced a " << 
+        OUTPUT_STREAM;
+        msglog << MSG::FATAL << "Error in xml/gmx file: assemblyref " << XMLString::transcode(idref) << " referenced a " << 
                               nodeName << " instead of an assembly.\n";
-#endif
         exit(999); // Should do better...
     }
 //
 //    Process it
 //
-    const XMLCh *zeroid = element->getAttribute(Translate("zeroid"));
-    if (XMLString::equals(zeroid, Translate("true"))) {
+    const XMLCh *zeroid = element->getAttribute(XMLString::transcode("zeroid"));
+    if (XMLString::equals(zeroid, XMLString::transcode("true"))) {
         gmxUtil.tagHandler.assembly.zeroId(elem);
     }
     gmxUtil.tagHandler.assembly.process(elem, gmxUtil, toAdd);
diff --git a/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx b/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx
index a3503b31e1e88b9c1540e0aec437b94c7ebbdc95..01fabd4505f5ab74be1c57daea087ef7218bd143 100644
--- a/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx
+++ b/DetectorDescription/GeoModelXml/src/Element2GeoItem.cxx
@@ -1,21 +1,17 @@
 /*
   Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
+#include <string>
 
 #include "GeoModelXml/Element2GeoItem.h"
-#include <string>
+#include "GeoModelXml/OutputDirector.h"
+
+#include "xercesc/util/XercesDefs.hpp"
 #include <xercesc/dom/DOM.hpp>
+#include "xercesc/util/XMLString.hpp"
+
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelKernel/RCBase.h"
-#include "GeoModelXml/translate.h"
 
 using namespace std;
 using namespace xercesc;
@@ -28,7 +24,7 @@ const RCBase * Element2GeoItem::process(const xercesc::DOMElement *element, GmxU
 
     char *name2release;
 
-    name2release = Translate(element->getAttribute(Translate("name")));
+    name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
     string name(name2release);
     XMLString::release(&name2release);
 
@@ -49,15 +45,9 @@ const RCBase * Element2GeoItem::process(const xercesc::DOMElement *element, GmxU
 }
 
 const RCBase * Element2GeoItem::make(const xercesc::DOMElement *element, GmxUtil & /* gmxUtil */) const {
-    char *name2release = Translate(element->getNodeName());
-
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-    log << MSG::FATAL << "Oh oh: called base class make() method of Element2GeoType object; tag " << name2release << endmsg;
-#else
-    std::cerr<< "Oh oh: called base class make() method of Element2GeoType object; tag " << name2release << std::endl;
-#endif
+    char *name2release = XMLString::transcode(element->getNodeName());
+    OUTPUT_STREAM;
+    msglog << MSG::FATAL << "Oh oh: called base class make() method of Element2GeoType object; tag " << name2release << endmsg;
     XMLString::release(&name2release);
 
     exit(999); // Should improve on this 
diff --git a/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx b/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx
index 13847821e90911b64d2ef80c037d33f996da8fe1..881d970b72abb843752a59b6d97b91cc6350be01 100644
--- a/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/ElementProcessor.cxx
@@ -16,18 +16,11 @@
 //
 #include "GeoModelXml/ElementProcessor.h"
 
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
-
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
+#include "xercesc/util/XercesDefs.hpp"
 #include <xercesc/dom/DOM.hpp>
-#include "GeoModelXml/translate.h"
+
 
 #include "GeoModelXml/GeoNodeList.h"
 #include "GeoModelXml/ProcessorRegistry.h"
@@ -39,15 +32,10 @@ ElementProcessor::ElementProcessor() {}
 
 void ElementProcessor::process(const DOMElement *element, GmxUtil & /* gmxUtil*/, GeoNodeList & /* toAdd */) {
 
-    char *name2release = Translate(element->getNodeName());
+    char *name2release = XMLString::transcode(element->getNodeName());
     std::string name(name2release);
     XMLString::release(&name2release);
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-    log << MSG::FATAL << "Error!!! Default element processor called for tag-name " << name << endmsg;
-#else
-    std::cerr << "Error!!! Default element processor called for tag-name " << name << std::endl;
-#endif
+    OUTPUT_STREAM;
+    msglog << MSG::FATAL << "Error!!! Default element processor called for tag-name " << name << endmsg;
 }
diff --git a/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx b/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx
index 53eb447cd15ad4d9e295cacf49652b1df0d50a8c..b9475f43c6931bff311eb759ccba7d70854be89c 100644
--- a/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx
+++ b/DetectorDescription/GeoModelXml/src/Gmx2Geo.cxx
@@ -3,20 +3,14 @@
 */
 
 #include "GeoModelXml/Gmx2Geo.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/IMessageSvc.h"
-#include "GaudiKernel/MsgStream.h"
-#else
-#include <iostream>
-#endif
+#include "GeoModelXml/OutputDirector.h"
 
 #include <string>
 #include <iomanip>
 #include <sstream>
 #include <stdlib.h>
 
+#include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/dom/DOM.hpp>
 #include <xercesc/dom/DOMLSParser.hpp>
 #include <xercesc/util/PlatformUtils.hpp>
@@ -25,7 +19,7 @@
 
 #include "ExpressionEvaluator/Evaluator.h"
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GeoNodeList.h"
 #include "GeoModelXml/ElementProcessor.h"
 #include "GeoModelXml/GmxUtil.h"
@@ -33,7 +27,6 @@
 #include "GeoModelXml/createdomdocument.h"
 
 using namespace std;
-using namespace xercesc;
 
 Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInterface, unsigned int flags) {
 //
@@ -42,20 +35,13 @@ Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInt
 
 // Logging: ref https://wiki.bnl.gov/dayabay/index.php?title=Logging
 // Turn on logging in job-options with: MessageSvc.setDebug += {"GeoModelXml"}
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-#endif
+    OUTPUT_STREAM;
 
     DOMLSParser *parser = 0;
     DOMDocument *doc = createDOMDocument(xmlFile, parser, flags);
     if (!doc) {// Parsed badly
         XMLPlatformUtils::Terminate();
-#ifndef STANDALONE_GMX
-        log << MSG::FATAL << "Error in xml file " << xmlFile << ". Exiting athena." << endmsg;
-#else
-	std::cout<<"Error in xml file " << xmlFile << ". Exiting athena." <<std::endl;
-#endif
+        msglog << MSG::FATAL << "Error in xml file " << xmlFile << ". Exiting athena." << endmsg;
         exit(0);
     }
 //
@@ -70,26 +56,14 @@ Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInt
 //    info message: name of detector
 //
     if (flags & 0x1) {
-#ifndef STANDALONE_GMX
-        log << MSG::INFO << "Set up detector geometry from db-string \nwhich adds sub-detector ";
-#else
-	std::cout<<"Set up detector geometry from db-string \nwhich adds sub-detector ";
-#endif
+        msglog << MSG::INFO << "Set up detector geometry from db-string \nwhich adds sub-detector ";
     }
     else {
-#ifndef STANDALONE_GMX
-        log << MSG::INFO << "Set up detector geometry from file " << xmlFile << " which adds sub-detector ";
-#else
-	std::cout<<"Set up detector geometry from db-string \nwhich adds sub-detector ";
-#endif
+        msglog << MSG::INFO << "Set up detector geometry from file " << xmlFile << " which adds sub-detector ";
     }
     const DOMElement *element = dynamic_cast<const DOMElement*>(root);
-    const XMLCh *attribute = element->getAttribute(Translate("name"));
-#ifndef STANDALONE_GMX
-    log << Translate(attribute) << endmsg;
-#else
-    std::cout<<Translate(attribute) << std::endl;
-#endif
+    const XMLCh *attribute = element->getAttribute(XMLString::transcode("name"));
+    msglog << XMLString::transcode(attribute) << endmsg;
 //
 //    Add all constant definitions to the evaluator, so they are ready if needed.
 //
@@ -107,7 +81,7 @@ Gmx2Geo::Gmx2Geo(const string xmlFile, GeoPhysVol *addHere, GmxInterface &gmxInt
 //   and it fills in the list of things to be added to the GeoModel graph. 
 //   There is one and only one addbranch element according to the DTD.
 //
-    xercesc::DOMNodeList *addbranchs = doc->getElementsByTagName(Translate("addbranch"));
+    xercesc::DOMNodeList *addbranchs = doc->getElementsByTagName(XMLString::transcode("addbranch"));
     const DOMElement *addbranch = dynamic_cast<const DOMElement *> (addbranchs->item(0)); 
     GeoNodeList toAdd;
     gmxUtil.processorRegistry.find("addbranch")->process(addbranch, gmxUtil, toAdd);
@@ -136,19 +110,12 @@ const DOMElement *element;
 //
 //-------------------------------------------------------------------------------------------
 //
-// Turn var printout on and off with 
-    
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc","GmxUtil");
-    MsgStream log(&(*msgh), "GmxUtil");
-    log << MSG::DEBUG << "\n\nGmx2Geo GmxUtil matrix, vector and var values:\n";
-    log << MSG::DEBUG <<     "==============================================\n\n";
-#else
-    std::cout << "\n\nGmx2Geo GmxUtil matrix, vector and var values:\n";
-    std::cout <<     "==============================================\n\n";
-#endif
+// Turn var printout on and off with message level
+    OUTPUT_STREAM;
+    msglog << MSG::DEBUG << "\n\nGmx2Geo GmxUtil matrix, vector and var values:\n";
+    msglog << MSG::DEBUG <<     "==============================================\n\n";
 
-    DOMNodeList *defines = doc->getElementsByTagName(Translate("defines"));
+    DOMNodeList *defines = doc->getElementsByTagName(XMLString::transcode("defines"));
     int nDefines = defines->getLength();
     for (int i = 0; i < nDefines; ++i) {
         element = dynamic_cast<DOMElement *>(defines->item(i));
@@ -158,19 +125,14 @@ const DOMElement *element;
 //
 //   Vectors: a list of variables. Names subscripted by _k; values white-space separated numbers.
 //
+        msglog << "\n\n    Vectors\n    =======\n\n";
 
-#ifndef STANDALONE_GMX
-        log << "\n\n    Vectors\n    =======\n\n";
-#else
-	std::cout<<"\n\n    Vectors\n    =======\n\n";
-#endif
-
-        vars = element->getElementsByTagName(Translate("vector"));
+        vars = element->getElementsByTagName(XMLString::transcode("vector"));
         nVars = vars->getLength();
         for (int j = 0; j < nVars; ++j) {
             var = dynamic_cast<DOMElement*>(vars->item(j));
-            char *name = Translate(var->getAttribute(Translate("name")));
-            char *val = Translate(var->getAttribute(Translate("value")));
+            char *name = XMLString::transcode(var->getAttribute(XMLString::transcode("name")));
+            char *val = XMLString::transcode(var->getAttribute(XMLString::transcode("value")));
             string fullname(name);
             fullname += '_';
             istringstream list(val);
@@ -178,11 +140,7 @@ const DOMElement *element;
             int k = 0;
             do  {
                 list >> dble;
-#ifndef STANDALONE_GMX
-                log << fullname + to_string(k) << " = " << dble << endl; 
-#else
-		std::cout<<fullname + to_string(k) << " = " << dble << std::endl;
-#endif
+                msglog << fullname + to_string(k) << " = " << dble << endl; 
                 eval.setVariable((fullname + to_string(k++)).c_str(), dble);
             } while(list.good());
             XMLString::release(&name);
@@ -191,20 +149,16 @@ const DOMElement *element;
 //
 //   Matrices: a matrix of variables. Names subscripted by _j_k; values: white-space separated numbers.
 //
-#ifndef STANDALONE_GMX
-        log << "\n\n    Matrices\n    ========\n\n";
-#else
-	std::cout<<"\n\n    Matrices\n    ========\n\n";
-#endif
+        msglog << "\n\n    Matrices\n    ========\n\n";
 
-        vars = element->getElementsByTagName(Translate("matrix"));
+        vars = element->getElementsByTagName(XMLString::transcode("matrix"));
         nVars = vars->getLength();
         for (int j = 0; j < nVars; ++j) {
             var = dynamic_cast<DOMElement*>(vars->item(j));
-            char *name = Translate(var->getAttribute(Translate("name")));
-            char *val = Translate(var->getAttribute(Translate("value")));
+            char *name = XMLString::transcode(var->getAttribute(XMLString::transcode("name")));
+            char *val = XMLString::transcode(var->getAttribute(XMLString::transcode("value")));
             int coldim;
-            istringstream(Translate(var->getAttribute(Translate("coldim")))) >> coldim;
+            istringstream(XMLString::transcode(var->getAttribute(XMLString::transcode("coldim")))) >> coldim;
             string fullname(name);
             fullname += '_';
             istringstream list(val);
@@ -213,11 +167,7 @@ const DOMElement *element;
             do  {
                 for (int col = 0; col < coldim; ++col) {
                         list >> dble;
-#ifndef STANDALONE_GMX
-                        log << fullname + to_string(k) + '_' + to_string(col) << " = " << dble << endl; 
-#else
-			std::cout<<fullname + to_string(k) + '_' + to_string(col) << " = " << dble << std::endl; 
-#endif
+                        msglog << fullname + to_string(k) + '_' + to_string(col) << " = " << dble << endl; 
                         eval.setVariable((fullname + to_string(k) + '_' + to_string(col)).c_str(), dble);
                         if (!list.good()) break;
                 }
@@ -229,65 +179,44 @@ const DOMElement *element;
 //
 //    Vars: single variable
 //
-#ifndef STANDALONE_GMX
-        log << "\n\n    Single variables\n    ================\n\n";
-#else
-	std::cout<<"\n\n    Single variables\n    ================\n\n";
-#endif
+        msglog << "\n\n    Single variables\n    ================\n\n";
 
-        vars = element->getElementsByTagName(Translate("var"));
+        vars = element->getElementsByTagName(XMLString::transcode("var"));
         nVars = vars->getLength();
         for (int j = 0; j < nVars; ++j) {
             var = dynamic_cast<DOMElement*>(vars->item(j));
-            char *name = Translate(var->getAttribute(Translate("name")));
-            char *val = Translate(var->getAttribute(Translate("value")));
+            char *name = XMLString::transcode(var->getAttribute(XMLString::transcode("name")));
+            char *val = XMLString::transcode(var->getAttribute(XMLString::transcode("value")));
             double evaluated = eval.evaluate(val);
             if (eval.status() != Evaluator::OK) {
-#ifndef STANDALONE_GMX
-                log << MSG::FATAL << "GeoModelXml Error processing CLHEP Evaluator expression. Error name " <<
+                msglog << MSG::FATAL << "GeoModelXml Error processing CLHEP Evaluator expression. Error name " <<
                 eval.error_name() << endl << "Message: ";
                 eval.print_error();
-                log << val << endl;
-                log << string(eval.error_position(), '-') << '^' << '\n';
-                log << "Exiting program." << endmsg;
-#else
-		std::cout<< "GeoModelXml Error processing CLHEP Evaluator expression. Error name " <<
-                eval.error_name() << std::endl << "Message: ";
-                eval.print_error();
-		std::cout << val << std::endl;
-                std::cout << string(eval.error_position(), '-') << '^' << '\n';
-                std::cout << "Exiting program." << std::endl;
-#endif
+                msglog << val << endl;
+                msglog << string(eval.error_position(), '-') << '^' << '\n';
+                msglog << "Exiting program." << endmsg;
                 exit(999); // Should do better...
             }
             eval.setVariable(name, evaluated);
-#ifndef STANDALONE_GMX
-            log << name << "\t\t" << val << " = " << setprecision(10) << evaluated << endl;
-#else
-	    std::cout<<"\t\t" << val << " = " << setprecision(10) << evaluated << std::endl;
-#endif
+            msglog << name << "\t\t" << val << " = " << setprecision(10) << evaluated << endl;
             XMLString::release(&name);
             XMLString::release(&val);
         }
     }
-#ifndef STANDALONE_GMX
-    log << endmsg;
-#else
-    std::cout<<std::endl;
-#endif
+    msglog << endmsg;
     return 1;
 }
 
 int Gmx2Geo::doPositionIndex(xercesc::DOMDocument *doc, GmxUtil &gmxUtil) {
-    DOMNodeList *posIndex = doc->getElementsByTagName(Translate("positionindex"));
+    DOMNodeList *posIndex = doc->getElementsByTagName(XMLString::transcode("positionindex"));
     int nPosIndex = posIndex->getLength(); // Probably limited to 0 or 1 by DTD
     for (int i = 0; i < nPosIndex; ++i) {
         const DOMElement *element = dynamic_cast<DOMElement *>(posIndex->item(i));
-        DOMNodeList *addindexs = element->getElementsByTagName(Translate("addindex"));
+        DOMNodeList *addindexs = element->getElementsByTagName(XMLString::transcode("addindex"));
         int nIndexs = addindexs->getLength();
         for (int j = 0; j < nIndexs; ++j) {
             DOMElement *addindex = dynamic_cast<DOMElement*>(addindexs->item(j));
-            string name = string(Translate(addindex->getAttribute(Translate("name"))));
+            string name = string(XMLString::transcode(addindex->getAttribute(XMLString::transcode("name"))));
             gmxUtil.positionIndex.addIndex(name);
         }
     }
@@ -305,7 +234,7 @@ string tagName;
 //
 //    Loop over all readoutgeometry elements
 //
-    DOMNodeList *rgs = doc->getElementsByTagName(Translate("readoutgeometry"));
+    DOMNodeList *rgs = doc->getElementsByTagName(XMLString::transcode("readoutgeometry"));
     int nRG = rgs->getLength(); 
     for (int i = 0; i < nRG; ++i) {
         map<string, string> rgParams; // New empty list
@@ -315,7 +244,7 @@ string tagName;
 //
         for (DOMNode *rgChild = rg->getFirstChild(); rgChild != 0; rgChild = rgChild->getNextSibling()) {
             if (rgChild->getNodeType() != DOMNode::ELEMENT_NODE) continue; // Skip char data
-            name2release = Translate(rgChild->getNodeName());
+            name2release = XMLString::transcode(rgChild->getNodeName());
             tagName = name2release;
             XMLString::release(&name2release);
             if (tagName == "param") {
@@ -324,7 +253,7 @@ string tagName;
             else if (tagName == "sensorclass") {
                 map<string, string> scParams(rgParams); // Initialised with all previous params
                 const DOMElement *sensorClass = dynamic_cast<DOMElement *>(rgChild);
-                name2release = Translate(sensorClass->getAttribute(Translate("name")));
+                name2release = XMLString::transcode(sensorClass->getAttribute(XMLString::transcode("name")));
                 string clas(name2release); // class is reserved word
                 XMLString::release(&name2release);
 //
@@ -332,7 +261,7 @@ string tagName;
 //
                 for (DOMNode *scChild = sensorClass->getFirstChild(); scChild != 0; scChild = scChild->getNextSibling()) {
                     if (scChild->getNodeType() != DOMNode::ELEMENT_NODE) continue; // Skip char data
-                    name2release = Translate(scChild->getNodeName());
+                    name2release = XMLString::transcode(scChild->getNodeName());
                     tagName = name2release;
                     XMLString::release(&name2release);
                     if (tagName == "param") {
@@ -341,7 +270,7 @@ string tagName;
                     else if (tagName == "sensortype") {
                         map<string, string> stParams(scParams); // Initialised with all previous params
                         const DOMElement *sensorType = dynamic_cast<DOMElement *>(scChild);
-                        name2release = Translate(sensorType->getAttribute(Translate("name")));
+                        name2release = XMLString::transcode(sensorType->getAttribute(XMLString::transcode("name")));
                         string name(name2release);
                         XMLString::release(&name2release);
 //
@@ -365,10 +294,10 @@ string tagName;
 
 void Gmx2Geo::addParam(DOMNode *node, map<string, string> &params) {
     const DOMElement *param = dynamic_cast<DOMElement *>(node);
-    char *name2release = Translate(param->getAttribute(Translate("name")));
+    char *name2release = XMLString::transcode(param->getAttribute(XMLString::transcode("name")));
     string name(name2release);
     XMLString::release(&name2release);
-    name2release = Translate(param->getAttribute(Translate("value")));
+    name2release = XMLString::transcode(param->getAttribute(XMLString::transcode("value")));
     string value(name2release);
     XMLString::release(&name2release);
     params[name] = value;
diff --git a/DetectorDescription/GeoModelXml/src/GmxInterface.cxx b/DetectorDescription/GeoModelXml/src/GmxInterface.cxx
index ae8a18a12e543c071404e5d1866da908d845ef0c..ce7296a7f719b50a42fe03a3699d6cbb4de0647d 100644
--- a/DetectorDescription/GeoModelXml/src/GmxInterface.cxx
+++ b/DetectorDescription/GeoModelXml/src/GmxInterface.cxx
@@ -8,15 +8,7 @@
 //    Use: create an instance of this, and pass a reference to it in the Gmx2Geo constructor.
 //
 #include "GeoModelXml/GmxInterface.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include "GeoModelKernel/GeoPVConstLink.h"
 #include "GeoModelKernel/Query.h"
 #include "GeoModelKernel/GeoPhysVol.h"
@@ -29,51 +21,24 @@ int GmxInterface::sensorId(map<string, int> &/*index*/) {
 }
 
 void GmxInterface::addSensorType(string clas, string type, map<string, string> params) {
+    OUTPUT_STREAM;
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-
-    log << MSG::DEBUG << "GmxInterface::addSensorType called for class " << clas << "; type " << type << 
+    msglog << MSG::DEBUG << "GmxInterface::addSensorType called for class " << clas << "; type " << type << 
                          "\n    Parameter names and values:\n";
     for (map<string, string>::iterator p = params.begin(); p != params.end(); ++p) {
-        log << "        " << p->first << " = " << p->second << endmsg;
-    }
-#else
-    std::cout << "GmxInterface::addSensorType called for class " << clas << "; type " << type << 
-                         "\n    Parameter names and values:\n";
-
-    for (map<string, string>::iterator p = params.begin(); p != params.end(); ++p) {
-        std::cout << "        " << p->first << " = " << p->second << std::endl;
+        msglog << "        " << p->first << " = " << p->second << endmsg;
     }
-#endif
-
 }
 
 void GmxInterface::addSensor(string name, map<string, int> &index, int sequentialId, GeoVFullPhysVol *fpv) {
+    OUTPUT_STREAM;
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-
-    log << MSG::DEBUG << "GmxInterface::addSensor called for " << fpv->getLogVol()->getName() << ", type " << name << 
-                         ". Indices:   ";
-#else
-    std::cout<< "GmxInterface::addSensor called for " << fpv->getLogVol()->getName() << ", type " << name << 
-                         ". Indices:   ";
-#endif	 
-		
+    msglog << MSG::DEBUG << "GmxInterface::addSensor called for " << fpv->getLogVol()->getName() << ", type " << name << 
+                         ". Indices:   ";		
     for (map<string, int>::iterator i = index.begin(); i != index.end(); ++i) {
-#ifndef STANDALONE_GMX
-        log << i->second << "   ";
+        msglog << i->second << "   ";
     }
-    log << "\nSequential ID = " << sequentialId << endmsg;
-#else
-    	std::cout << i->second << "   ";
-    }
-    std::cout << "\nSequential ID = " << sequentialId << std::endl;
-#endif
-
+    msglog << "\nSequential ID = " << sequentialId << endmsg;
 }
 
 void GmxInterface::addAlignable(int level, map<std::string, int> &index, GeoVFullPhysVol *fpv, 
@@ -81,9 +46,7 @@ void GmxInterface::addAlignable(int level, map<std::string, int> &index, GeoVFul
 //
 //    Logvol name is not very useful (usually == AssemblyLV). Get PhysVol name (seems surprisingly awkward way needed)
 //
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
+    OUTPUT_STREAM;
 /* Cannot get this to work.
     string name("New name");
     GeoPVConstLink parent = fpv->getParent();
@@ -94,21 +57,13 @@ void GmxInterface::addAlignable(int level, map<std::string, int> &index, GeoVFul
     else {
         name = string("Something Wrong, fullPV not found in parent in GmxInterface::addAlignable");
     }
-    log << MSG::DEBUG << "GmxInterface::addAlignable called for physvol name " << name << ".  Level = " << level << ". Indices:   ";
+    msglog << MSG::DEBUG << "GmxInterface::addAlignable called for physvol name " << name << ".  Level = " << level << ". Indices:   ";
 */
 
-    log << MSG::DEBUG << "GmxInterface::addAlignable called for a physvol. Logvol name " << fpv->getLogVol()->getName() << 
-            ". Level = " << level << ". Indices:   ";
-    for (map<string, int>::iterator i = index.begin(); i != index.end(); ++i) {
-        log << i->second << "   ";
-    }
-    log << endmsg;
-#else
-    std::cout << "GmxInterface::addAlignable called for a physvol. Logvol name " << fpv->getLogVol()->getName() << 
+    msglog << MSG::DEBUG << "GmxInterface::addAlignable called for a physvol. Logvol name " << fpv->getLogVol()->getName() << 
             ". Level = " << level << ". Indices:   ";
     for (map<string, int>::iterator i = index.begin(); i != index.end(); ++i) {
-        std::cout << i->second << "   ";
+        msglog << i->second << "   ";
     }
-    std::cout << std::endl;
-#endif
+    msglog << endmsg;
 }
diff --git a/DetectorDescription/GeoModelXml/src/GmxUtil.cxx b/DetectorDescription/GeoModelXml/src/GmxUtil.cxx
index df9e0524d295fcbad3ecdfbe98948bccf56156f8..b1722a4b60a64ab7175039dad21fec970c0d02dc 100644
--- a/DetectorDescription/GeoModelXml/src/GmxUtil.cxx
+++ b/DetectorDescription/GeoModelXml/src/GmxUtil.cxx
@@ -1,17 +1,16 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "GeoModelXml/GmxUtil.h"
-#ifndef STANDALONE_GMX
+
+#include "GeoModelXml/OutputDirector.h"
+
+#ifndef GEOMODEL_STANDALONE_GMX
 #include "StoreGate/StoreGateSvc.h"
-#include "GaudiKernel/ISvcLocator.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
 #include "GeoModelInterfaces/StoredMaterialManager.h"
-#else
-#include <iostream>
 #endif
+
 #include "GeoModelKernel/GeoElement.h"
 #include "GeoModelKernel/GeoMaterial.h"
 #include "GeoModelKernel/GeoBox.h"
@@ -28,7 +27,7 @@ using namespace std;
 GmxUtil::GmxUtil(GmxInterface &gmxInterface) {
     m_gmxInterface = &gmxInterface;
 //
-//    Initialise the Evaluator
+//    Initialise the CLHEP::Evaluator
 //
     eval.setStdMath();
 //
@@ -36,9 +35,6 @@ GmxUtil::GmxUtil(GmxInterface &gmxInterface) {
 //    When Geo2G4 finds any physvol using a logvol with material special::HyperUranium, it creates a G4Assembly
 //    instead of a G4Volume.
 //
-//    NB elsewhere special::ether is used to indicate a G4Assembly; HyperUranium is used here as a way to distinguish GeoModelXml assemblies from other assemblies and trigger distinct behaviour with regard to the copyNumbers which are assigned (ITkScheme, wherein the SiHitIdentifier is used as the copyNumber)
-// See ExtParameterisedVolumeBuilder::Build and Geo2G4AssemblyVolume::MakeImprint for how this propagates to G4
-
     m_assemblyLV = makeAssemblyLV();
 //
 //   Register tag handlers that produce a vector of items to add to the tree.
@@ -55,6 +51,7 @@ GmxUtil::GmxUtil(GmxInterface &gmxInterface) {
 //   Register tag handlers that produce GeoNodes. Only useful for those tags which
 //   can appear in a long list in any order. So certainly all shapes; maybe others.
 //
+    geoItemRegistry.enregister("simplepolygonbrep", (Element2GeoItem *) &tagHandler.simplepolygonbrep);
     geoItemRegistry.enregister("box", (Element2GeoItem *) &tagHandler.box);
     geoItemRegistry.enregister("cons", (Element2GeoItem *) &tagHandler.cons);
     geoItemRegistry.enregister("generictrap", (Element2GeoItem *) &tagHandler.generictrap);
@@ -92,15 +89,11 @@ double GmxUtil::evaluate(char const *expression) {
         }
     }
     if (isWhiteSpace) { // Catch a common error early and give best message possible
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL << "GeoModelXml Error processing Evaluator expression: empty expression. Exiting program.\n" << 
+	OUTPUT_STREAM;
+        msglog << MSG::FATAL << "GeoModelXml Error processing Evaluator expression: empty expression. Exiting program.\n" << 
                endmsg;
-#else
-	std::cout <<"GeoModelXml Error processing CLHEP Evaluator expression: empty expression. Exiting program.\n";
         throw runtime_error(string("evaluate: empty or white space expression. Last good expression was " + lastGoodExpression));
-#endif
+
     }
 //
 //    Process any []s. Contents are evaluated to in integer, then the [...] are replaced by 
@@ -113,25 +106,14 @@ double GmxUtil::evaluate(char const *expression) {
 //
     double result = eval.evaluate(noBrackets.c_str());
     if (eval.status() != Evaluator::OK) {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL << "GeoModelXml Error processing Evaluator expression. Error name <" <<
+	OUTPUT_STREAM;
+        msglog << MSG::FATAL << "GeoModelXml Error processing Evaluator expression. Error name <" <<
          eval.error_name() << ">" << endl << "Message: <";
         eval.print_error();
-        log << ">. Original expression <" << expression << ">; Expression after de-bracketing:\n";
-        log << noBrackets << endl;
-        log << string(eval.error_position(), '-') << '^' << '\n';
-        log << "Exiting program.\n" << endmsg;
-#else
-	std::cout << "GeoModelXml Error processing Evaluator expression. Error name <" <<
-         eval.error_name() << ">" << std::endl << "Message: <";
-        eval.print_error();
-        std::cout << ">. Original expression <" << expression << ">; Expression after de-bracketing:\n";
-        std::cout << noBrackets << std::endl;
-        std::cout << string(eval.error_position(), '-') << '^' << '\n';
-        std::cout << "Exiting program.\n" << std::endl;
-#endif
+        msglog << ">. Original expression <" << expression << ">; Expression after de-bracketing:\n";
+        msglog << noBrackets << endl;
+        msglog << string(eval.error_position(), '-') << '^' << '\n';
+        msglog << "Exiting program.\n" << endmsg;
         throw runtime_error(string("evaluate: invalid expression. Last good expression was <" + lastGoodExpression + ">"));
     }
     lastGoodExpression = strExpression;
@@ -148,15 +130,8 @@ std::string GmxUtil::debracket(std::string expression) {
     }
     size_t nextClose = expression.find_first_of(']', lastOpen);
     if (nextClose == string::npos) {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::ERROR << "debracket: unpaired opening [; expression was:\n    " << expression << endmsg; 
-#else
-	std::cout<<"debracket: unpaired opening [; expression was:\n    " <<
-	expression << std::endl;
-#endif
-
+	OUTPUT_STREAM;
+        msglog << MSG::ERROR << "debracket: unpaired opening [; expression was:\n    " << expression << endmsg; 
         return expression;
     }
     string toEvaluate = expression.substr(lastOpen + 1, nextClose - lastOpen - 1);
@@ -175,22 +150,21 @@ std::string GmxUtil::debracket(std::string expression) {
 }
 
 GeoLogVol * GmxUtil::makeAssemblyLV() {
-#ifndef STANDALONE_GMX
+#ifndef GEOMODEL_STANDALONE_GMX
     StoreGateSvc *pDetStore = 0;
     ISvcLocator *svcLocator = Gaudi::svcLocator();
 
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
+    OUTPUT_STREAM;
 
     StatusCode sc = svcLocator->service("DetectorStore", pDetStore);
     if (sc.isFailure()) {
-            log << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Detector Store" << endmsg;
+            msglog << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Detector Store" << endmsg;
     }
     else {
         DataHandle<StoredMaterialManager> theMaterialManager;
         sc = pDetStore->retrieve(theMaterialManager, "MATERIALS");
         if(sc.isFailure()) {
-                log << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Material Manager" << endmsg;
+                msglog << MSG::ERROR << "GmxUtil::makeAssemblyLV: Unable to access Material Manager" << endmsg;
         }
         else {
             const GeoMaterial *assembly_material = theMaterialManager->getMaterial("special::HyperUranium");
diff --git a/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx b/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx
index ac82dd2da5b9e186bf7e2683c2f7c9443fd9aafb..f048236c49cd4c3224572bc795c63c936b07845f 100644
--- a/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/IndexProcessor.cxx
@@ -10,7 +10,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelXml/IndexProcessor.h"
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace std;
@@ -20,11 +20,11 @@ void IndexProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNod
 
     char *name2release;
 
-    name2release = Translate(element->getAttribute(Translate("ref")));
+    name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("ref")));
     string name(name2release);
     XMLString::release(&name2release);
 
-    name2release = Translate(element->getAttribute(Translate("value")));
+    name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("value")));
     string value(name2release);
     XMLString::release(&name2release);
 
diff --git a/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx b/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx
index e60b2be593cde6598cadb6c83475d62a36bf697e..e16a339d07046be3fb12739d82434ceccd1a08d9 100644
--- a/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/LogvolProcessor.cxx
@@ -11,14 +11,7 @@
 //   Add them to the physvol.
 //
 #include "GeoModelXml/LogvolProcessor.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
+#include "GeoModelXml/OutputDirector.h"
 
 #include <map>
 
@@ -31,7 +24,7 @@
 #include "GeoModelKernel/GeoVFullPhysVol.h"
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelXml/GeoNodeList.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 
 // using namespace CLHEP;
 
@@ -42,14 +35,11 @@ void LogvolProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNo
 GeoLogVol *lv;
 GeoNameTag *physVolName;
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-#endif
+    OUTPUT_STREAM;
 
     gmxUtil.positionIndex.incrementLevel();
 
-    char *name2release = Translate(element->getAttribute(Translate("name")));
+    char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
     string name(name2release);
     XMLString::release(&name2release);
 //
@@ -69,27 +59,21 @@ GeoNameTag *physVolName;
 //    Get the shape.
 //
         DOMDocument *doc = element->getOwnerDocument();
-        const XMLCh *shape = element->getAttribute(Translate("shape"));
+        const XMLCh *shape = element->getAttribute(XMLString::transcode("shape"));
         DOMElement *refShape = doc->getElementById(shape);
         // Check it is a shape... its parent should be a <shapes>. DTD cannot do this for us.
         DOMNode *parent = refShape->getParentNode();
-        if (XMLString::compareIString(parent->getNodeName(), Translate("shapes")) != 0) {
+        if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("shapes")) != 0) {
 
-#ifndef STANDALONE_GMX
-            log << MSG::FATAL << "Processing logvol " << name << 
+            msglog << MSG::FATAL << "Processing logvol " << name << 
                     ". Error in gmx file. An IDREF for a logvol shape did not refer to a shape.\n" <<
                     "Shape ref was " << shape << "; exiting" << endmsg;
-#else
-	    std::cout<<"Processing logvol " << name << 
-                    ". Error in gmx file. An IDREF for a logvol shape did not refer to a shape.\n" <<
-                    "Shape ref was " << shape << "; exiting" <<std::endl;
-#endif
             exit (1); // Need to improve...
         }
 //
 //    What sort of shape?
 //
-        name2release = Translate(refShape->getNodeName());
+        name2release = XMLString::transcode(refShape->getNodeName());
         string shapeType(name2release);
         XMLString::release(&name2release);
 
@@ -97,20 +81,14 @@ GeoNameTag *physVolName;
 //
 //    Get the material
 //
-        const XMLCh *material = element->getAttribute(Translate("material"));
+        const XMLCh *material = element->getAttribute(XMLString::transcode("material"));
         DOMElement *refMaterial = doc->getElementById(material);
         // Check it is a material... its parent should be a <materials>. DTD cannot do this for us.
         parent = refMaterial->getParentNode();
-        if (XMLString::compareIString(parent->getNodeName(), Translate("materials")) != 0) {
-#ifndef STANDALONE_GMX
-            log << MSG::FATAL << "Processing logvol " << name << 
+        if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("materials")) != 0) {
+            msglog << MSG::FATAL << "Processing logvol " << name << 
                     ". Error in gmx file. An IDREF for a logvol material did not refer to a material.\n" <<
                     "Material ref was " << material << "; exiting" << endmsg;
-#else
-	    std::cout<<"Processing logvol " << name << 
-                    ". Error in gmx file. An IDREF for a logvol material did not refer to a material.\n" <<
-                    "Material ref was " << material << "; exiting" <<std::endl;
-#endif
             exit (1); // Need to improve...
         }
 
@@ -132,7 +110,7 @@ GeoNameTag *physVolName;
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) {
             DOMElement *el = dynamic_cast<DOMElement *> (child);
-            name2release = Translate(el->getNodeName());
+            name2release = XMLString::transcode(el->getNodeName());
             string name(name2release);
             XMLString::release(&name2release);
             gmxUtil.processorRegistry.find(name)->process(el, gmxUtil, childrenAdd);
@@ -142,7 +120,7 @@ GeoNameTag *physVolName;
 //   Make a list of things to be added
 //
     toAdd.push_back(physVolName);
-    bool sensitive = element->hasAttribute(Translate("sensitive"));
+    bool sensitive = element->hasAttribute(XMLString::transcode("sensitive"));
     int sensId = 0;
     map<string, int> index;
     if (sensitive) {
@@ -159,7 +137,7 @@ GeoNameTag *physVolName;
 //
 //    Make a new PhysVol and add everything to it, then add it to the list of things for my caller to add
 //
-    char *toRelease = Translate(element->getAttribute(Translate("alignable")));
+    char *toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")));
     string alignable(toRelease);
     XMLString::release(&toRelease);
     if (sensitive || (alignable.compare(string("true")) == 0)) {
@@ -172,7 +150,7 @@ GeoNameTag *physVolName;
 //    Add sensitive volumes to detector manager via GmxInterface
 //
         if (sensitive) {
-            name2release = Translate(element->getAttribute(Translate("sensitive")));
+            name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("sensitive")));
             string sensitiveName(name2release);
             XMLString::release(&name2release);
             gmxUtil.gmxInterface()->addSensor(sensitiveName, index, sensId, dynamic_cast<GeoVFullPhysVol *> (pv));
@@ -193,7 +171,7 @@ GeoNameTag *physVolName;
 
 void LogvolProcessor::zeroId(const xercesc::DOMElement *element) {
 
-    char *name2release = Translate(element->getAttribute(Translate("name")));
+    char *name2release = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
     string name(name2release);
     XMLString::release(&name2release);
 //
diff --git a/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx b/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx
index 3f5520c8d224711a420a8ec95ddcef1499992be1..fef75926f35cc40e012301e039ce16143e899a89 100644
--- a/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/LogvolrefProcessor.cxx
@@ -6,25 +6,18 @@
 //    Process logvolref items: basically, just find the referenced logvol and call its processor.
 //
 #include "GeoModelXml/LogvolrefProcessor.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelXml/GeoNodeList.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace std;
 using namespace xercesc;
 
 void LogvolrefProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
-const XMLCh *ref = Translate("ref");
+const XMLCh *ref = XMLString::transcode("ref");
 const XMLCh *idref;
 DOMDocument *doc = element->getOwnerDocument();
 char *toRelease;
@@ -36,26 +29,20 @@ char *toRelease;
 //
 //    Check it is the right sort
 //
-    toRelease = Translate(elem->getNodeName());
+    toRelease = XMLString::transcode(elem->getNodeName());
     string nodeName(toRelease);
     XMLString::release(&toRelease);
     if (nodeName != string("logvol")) {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL << "Error in xml/gmx file: logvolref " << Translate(idref) << " referenced a " << nodeName << 
+	OUTPUT_STREAM;
+        msglog << MSG::FATAL << "Error in xml/gmx file: logvolref " << XMLString::transcode(idref) << " referenced a " << nodeName << 
                 " instead of a logvol." << endmsg;
-#else
-	std::cout << "Error in xml/gmx file: logvolref " << Translate(idref) << " referenced a " << nodeName << 
-                " instead of a logvol." << std::endl;
-#endif
         exit(999); // Should do better...
     }
 //
 //    Process it
 //
-    const XMLCh *zeroid = element->getAttribute(Translate("zeroid"));
-    if (XMLString::equals(zeroid, Translate("true"))) {
+    const XMLCh *zeroid = element->getAttribute(XMLString::transcode("zeroid"));
+    if (XMLString::equals(zeroid, XMLString::transcode("true"))) {
         gmxUtil.tagHandler.logvol.zeroId(elem);
     }
 
diff --git a/DetectorDescription/GeoModelXml/src/MakeBox.cxx b/DetectorDescription/GeoModelXml/src/MakeBox.cxx
index ae4c9a285bbe0693c1ac1013355fca15d27002fa..75a1e43c1c2d1aedf4e8e095bb12ac90dc2fcd5d 100644
--- a/DetectorDescription/GeoModelXml/src/MakeBox.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeBox.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoBox.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakeCons.cxx b/DetectorDescription/GeoModelXml/src/MakeCons.cxx
index e650c5cf3c16324034db5a9640ab95175f43833d..7acac8dc1281530262a83902f003c92a50fe6b21 100644
--- a/DetectorDescription/GeoModelXml/src/MakeCons.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeCons.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoCons.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakeElement.cxx b/DetectorDescription/GeoModelXml/src/MakeElement.cxx
index e37ceffd21495532bdda03e7b925a1ecc73e99c6..866ed1ce79335fc1dfc81f859d64819c1d3372f4 100644
--- a/DetectorDescription/GeoModelXml/src/MakeElement.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeElement.cxx
@@ -7,7 +7,7 @@
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/Units.h"
 #include "GeoModelKernel/GeoElement.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -23,21 +23,21 @@ double zVal, aVal;
 //
 //   Get my Z
 //
-    z = Translate(element->getAttribute(Translate("Z")));
+    z = XMLString::transcode(element->getAttribute(XMLString::transcode("Z")));
     zVal = gmxUtil.evaluate(z);
     XMLString::release(&z);
 //
 //   Get my A
 //
-    a = Translate(element->getAttribute(Translate("A")));
+    a = XMLString::transcode(element->getAttribute(XMLString::transcode("A")));
     aVal = gmxUtil.evaluate(a);
 	
     XMLString::release(&a);
 //
 //    Get my names
 //
-    name = Translate(element->getAttribute(Translate("name")));
-    shortname = Translate(element->getAttribute(Translate("shortname")));
+    name = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
+    shortname = XMLString::transcode(element->getAttribute(XMLString::transcode("shortname")));
 //
 //    Create it
 //
diff --git a/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx b/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx
index c9e60458be8bff9d9bd615ef1a826f61caebea3a..df1a86fc8aa2e39b0cf75ca6ca88fa710cc36e2e 100644
--- a/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeGenericTrap.cxx
@@ -10,7 +10,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoGenericTrap.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 
@@ -29,10 +29,10 @@ double x;
 double y;
 
     for (int i = 0; i < (nParams - 1) / 2; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[2 * i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[2 * i])));
         x = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
-        toRelease = Translate(element->getAttribute(Translate(parName[2 * i + 1])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[2 * i + 1])));
         y = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
         vertices.push_back(GeoTwoVector(x, y));
@@ -40,7 +40,7 @@ double y;
 //
 //    z-half-length
 //
-    toRelease = Translate(element->getAttribute(Translate(parName[16])));
+    toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[16])));
     p = gmxUtil.evaluate(toRelease);
     XMLString::release(&toRelease);
 
diff --git a/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx b/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx
index 4ff2728b6b3efafa75799d5cff357ff81c376614..49ab5599f6debe99b2d8b46e698ab6bea9cb2a3c 100644
--- a/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeIntersection.cxx
@@ -6,23 +6,14 @@
 // Then heavily modified
 #include "GeoModelXml/shape/MakeIntersection.h"
 #include <string>
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <xercesc/dom/DOM.hpp>
-//   #include <CLHEP/Geometry/Transform3D.h>
-#include <Eigen/Dense>
+#include "GeoModelKernel/GeoDefinitions.h"
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoShape.h"
 #include "GeoModelKernel/GeoTransform.h"
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -34,14 +25,9 @@ const RCBase * MakeIntersection::make(const xercesc::DOMElement *element, GmxUti
 // 
 //    Process child elements; first is first shaperef; then transform; then second shaperef.
 //
-    typedef Eigen::Affine3d Transform3D;
-
     GeoShape *first = 0;
     GeoShape *second = 0;
-    // HepGeom::Transform3D hepXf;
-    
-    Transform3D hepXf=Transform3D::Identity();
-    
+    GeoTrf::Transform3D hepXf=GeoTrf::Transform3D::Identity(); 
     int elementIndex = 0;
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) { // Skips text nodes
@@ -51,7 +37,7 @@ const RCBase * MakeIntersection::make(const xercesc::DOMElement *element, GmxUti
                     break;
                 }
                 case 1: { // Second element is transformation or transformationref
-                    char *toRelease = Translate(child->getNodeName());
+                    char *toRelease = XMLString::transcode(child->getNodeName());
                     string nodeName(toRelease);
                     XMLString::release(&toRelease);
                     GeoTransform *geoXf = nodeName == "transformation"? 
@@ -65,13 +51,8 @@ const RCBase * MakeIntersection::make(const xercesc::DOMElement *element, GmxUti
                     break;
                 }
                 default: // More than 3 elements?
-#ifndef STANDALONE_GMX
-                    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-                    MsgStream log(&(*msgh), "GeoModelXml");
-                    log << MSG::FATAL << "MakeIntersection: Incompatible DTD? got more than 3 child elements\n";
-#else
-		    std::cout<<"MakeIntersection: Incompatible DTD? got more than 3 child elements\n";
-#endif
+                    OUTPUT_STREAM;
+                    msglog << MSG::FATAL << "MakeIntersection: Incompatible DTD? got more than 3 child elements\n";
             }
             elementIndex++;
         }
diff --git a/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx b/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx
index d123a293952382454b88c98818898d56af9f17e5..67dec42699e262fbf3d3907bbbc02524255f28fe 100644
--- a/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeMaterial.cxx
@@ -3,20 +3,12 @@
 */
 
 #include "GeoModelXml/MakeMaterial.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoMaterial.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelKernel/Units.h"
 
@@ -34,43 +26,35 @@ double rho;
 char *fracString;
 double fraction;
 char *qString;
-const XMLCh *ref = Translate("ref");
+const XMLCh *ref = XMLString::transcode("ref");
 const XMLCh *idref;
 DOMDocument *doc = element->getOwnerDocument();
 char *toRelease;
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-#endif
+    OUTPUT_STREAM;
 //
 //    Get material density scale-factor for the block of materials this one is in 
 //
     DOMNode *parent = element->getParentNode();
-    if (XMLString::compareIString(parent->getNodeName(), Translate("materials")) != 0) {
-#ifndef STANDALONE_GMX
-        log << MSG::FATAL << "Asked to make a material for non-material element. Parent element was " << 
-                             Translate(parent->getNodeName()) << "; error in gmx file; exiting" << endmsg;
-#else 
-	std::cout<<"Asked to make a material for non-material element. Parent element was " << 
-                             Translate(parent->getNodeName()) << "; error in gmx file; exiting" << std::endl;
-#endif
+    if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("materials")) != 0) {
+        msglog << MSG::FATAL << "Asked to make a material for non-material element. Parent element was " << 
+                             XMLString::transcode(parent->getNodeName()) << "; error in gmx file; exiting" << endmsg;
         exit(1);
     }
     double scaleFactor(1.0);
     DOMElement *el = dynamic_cast<DOMElement *> (parent);
-//    if (el->hasAttribute(Translate("densitysf"))) { // Guaranteed by DTD; don't recheck.
-        densitySF = Translate(el->getAttribute(Translate("densitysf")));
+//    if (el->hasAttribute(XMLString::transcode("densitysf"))) { // Guaranteed by DTD; don't recheck.
+        densitySF = XMLString::transcode(el->getAttribute(XMLString::transcode("densitysf")));
         scaleFactor = gmxUtil.evaluate(densitySF);
 //    }
 //
 //    Get my name
 //
-    name = Translate(element->getAttribute(Translate("name")));
+    name = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
 //
 //   Get my density
 //
-    density = Translate(element->getAttribute(Translate("density")));
+    density = XMLString::transcode(element->getAttribute(XMLString::transcode("density")));
     rho = gmxUtil.evaluate(density) * scaleFactor;
     XMLString::release(&density);
 //
@@ -81,30 +65,25 @@ char *toRelease;
 //
 //   Add my element contents
 //
-    DOMNodeList *elRefs = element->getElementsByTagName(Translate("elementref"));
+    DOMNodeList *elRefs = element->getElementsByTagName(XMLString::transcode("elementref"));
     int nElRefs = elRefs->getLength();
     for (int i = 0; i < nElRefs; ++i) {
         DOMElement *elRef = dynamic_cast<DOMElement *>(elRefs->item(i));
         idref = elRef->getAttribute(ref);
         DOMElement *elem = doc->getElementById(idref);
 
-        toRelease = Translate(elem->getNodeName());
+        toRelease = XMLString::transcode(elem->getNodeName());
         string nodeName(toRelease);
         XMLString::release(&toRelease);
         if (nodeName != string("element")) {
-#ifndef STANDALONE_GMX
-            log << MSG::FATAL << "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." 
+            msglog << MSG::FATAL << "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." 
                               << endmsg;
-#else
-	    std::cout<< "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." 
-                              << std::endl;
-#endif
             exit(999); // Should do better...
         }
 
         GeoElement *geoElem = (GeoElement *) gmxUtil.tagHandler.element.process(elem, gmxUtil);
 
-        fracString = Translate(elRef->getAttribute(Translate("fraction")));
+        fracString = XMLString::transcode(elRef->getAttribute(XMLString::transcode("fraction")));
         fraction = gmxUtil.evaluate(fracString);
         XMLString::release(&fracString);
         material->add(geoElem, fraction);
@@ -112,33 +91,28 @@ char *toRelease;
 //
 //   Add my chemical contents
 //
-    DOMNodeList *chemRefs = element->getElementsByTagName(Translate("chemicalref"));
+    DOMNodeList *chemRefs = element->getElementsByTagName(XMLString::transcode("chemicalref"));
     int nChemRefs = chemRefs->getLength();
     for (int i = 0; i < nChemRefs; ++i) {
         DOMElement *chemRef = dynamic_cast<DOMElement *>(chemRefs->item(i));
         idref = chemRef->getAttribute(ref);
         DOMElement *chem = doc->getElementById(idref);
 
-        toRelease = Translate(chem->getNodeName());
+        toRelease = XMLString::transcode(chem->getNodeName());
         string nodeName(toRelease);
         XMLString::release(&toRelease);
         if (nodeName != string("chemical")) {
-#ifndef STANDALONE_GMX
-            log << MSG::FATAL << "Error in xml/gmx file: A chemref referenced a " << nodeName << " instead of a chemical." << 
+            msglog << MSG::FATAL << "Error in xml/gmx file: A chemref referenced a " << nodeName << " instead of a chemical." << 
                                   endmsg;
-#else
-	    std::cout<< "Error in xml/gmx file: A chemref referenced a " << nodeName << " instead of a chemical." << 
-                                  std::endl;
-#endif
             exit(999); // Should do better...
         }
 
-        fracString = Translate(chemRef->getAttribute(Translate("fraction")));
+        fracString = XMLString::transcode(chemRef->getAttribute(XMLString::transcode("fraction")));
         fraction = gmxUtil.evaluate(fracString);
         XMLString::release(&fracString);
 
         // Loop over chemical contents, adding each element to this material
-        DOMNodeList *chemEls = chem->getElementsByTagName(Translate("elemcontent"));
+        DOMNodeList *chemEls = chem->getElementsByTagName(XMLString::transcode("elemcontent"));
         int nChemEls = chemEls->getLength();
         vector<GeoElement *> geoElem;
         vector<double> atomicWeight;
@@ -149,24 +123,19 @@ char *toRelease;
             idref = chemEl->getAttribute(ref);
             DOMElement *elem = doc->getElementById(idref);
 
-            toRelease = Translate(elem->getNodeName());
+            toRelease = XMLString::transcode(elem->getNodeName());
             string nodeName(toRelease);
             XMLString::release(&toRelease);
             if (nodeName != string("element")) {
-#ifndef STANDALONE_GMX
-                log << MSG::FATAL << 
+                msglog << MSG::FATAL << 
                        "Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." << endmsg;
-#else
-		std::cout<<"Error in xml/gmx file: An elementref referenced a " << nodeName << " instead of an element." <<
-			std::endl;
-#endif
                 exit(999); // Should do better...
             }
 
             geoElem.push_back((GeoElement *) gmxUtil.tagHandler.element.process(elem, gmxUtil));
             atomicWeight.push_back(geoElem.back()->getA());
 
-            qString = Translate(chemEl->getAttribute(Translate("quantity")));
+            qString = XMLString::transcode(chemEl->getAttribute(XMLString::transcode("quantity")));
             formula.push_back(gmxUtil.evaluate(qString));
             XMLString::release(&qString);
 
@@ -180,30 +149,25 @@ char *toRelease;
 //
 //   Add my material contents
 //
-    elRefs = element->getElementsByTagName(Translate("materialref"));
+    elRefs = element->getElementsByTagName(XMLString::transcode("materialref"));
     nElRefs = elRefs->getLength();
     for (int i = 0; i < nElRefs; ++i) {
         DOMElement *elRef = dynamic_cast<DOMElement *>(elRefs->item(i));
         idref = elRef->getAttribute(ref);
         DOMElement *elem = doc->getElementById(idref);
 
-        toRelease = Translate(elem->getNodeName());
+        toRelease = XMLString::transcode(elem->getNodeName());
         string nodeName(toRelease);
         XMLString::release(&toRelease);
         if (nodeName != string("material")) {
-#ifndef STANDALONE_GMX
-            log << MSG::FATAL << 
+            msglog << MSG::FATAL << 
                    "Error in xml/gmx file: A materialref referenced a " << nodeName << " instead of a material." << endmsg;
-#else
-	    std::cout<<"Error in xml/gmx file: A materialref referenced a " << nodeName << " instead of a material." << 
-	    	std::endl;
-#endif
             exit(999); // Should do better...
         }
 
         GeoMaterial *geoMaterial = (GeoMaterial *) gmxUtil.tagHandler.material.process(elem, gmxUtil);
 
-        fracString = Translate(elRef->getAttribute(Translate("fraction")));
+        fracString = XMLString::transcode(elRef->getAttribute(XMLString::transcode("fraction")));
         fraction = gmxUtil.evaluate(fracString);
         XMLString::release(&fracString);
         material->add(geoMaterial, fraction);
diff --git a/DetectorDescription/GeoModelXml/src/MakePara.cxx b/DetectorDescription/GeoModelXml/src/MakePara.cxx
index bcb7e788d7b34d3196b65b4ee4a57557f74dac5b..e1aaef2b76e48c82cc6b633b9e9b9dab77eb57c4 100644
--- a/DetectorDescription/GeoModelXml/src/MakePara.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakePara.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoPara.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakePcon.cxx b/DetectorDescription/GeoModelXml/src/MakePcon.cxx
index a1a924c25675fef42f953d4464085efd3e148622..f333f5fddbdad46207339c20b50526d14501e5c0 100644
--- a/DetectorDescription/GeoModelXml/src/MakePcon.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakePcon.cxx
@@ -8,7 +8,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoPcon.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -22,7 +22,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
@@ -36,7 +36,7 @@ char *toRelease;
     double rMaxPlane = 0.;
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) {
-            toRelease = Translate(child->getNodeName());
+            toRelease = XMLString::transcode(child->getNodeName());
             std::string name(toRelease);
             XMLString::release(&toRelease);
             if (name == "addplane") {
diff --git a/DetectorDescription/GeoModelXml/src/MakePgon.cxx b/DetectorDescription/GeoModelXml/src/MakePgon.cxx
index 426c373434e92a49771027703fa384122f7bb028..a57daf51291dc8d8c75c90ec78eb015d5997b4ff 100644
--- a/DetectorDescription/GeoModelXml/src/MakePgon.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakePgon.cxx
@@ -8,7 +8,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoPgon.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -22,7 +22,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
@@ -36,7 +36,7 @@ char *toRelease;
     double rMaxPlane = 0.;
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) {
-            toRelease = Translate(child->getNodeName());
+            toRelease = XMLString::transcode(child->getNodeName());
             std::string name(toRelease);
             XMLString::release(&toRelease);
             if (name == "addplane") {
diff --git a/DetectorDescription/GeoModelXml/src/MakeRotation.cxx b/DetectorDescription/GeoModelXml/src/MakeRotation.cxx
index 6c88dfa3311b98f10a28392e9905a9dd583ca84b..db97f3f0159be6d74f89d148e3e23be5ec59c265 100644
--- a/DetectorDescription/GeoModelXml/src/MakeRotation.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeRotation.cxx
@@ -6,10 +6,10 @@
 #include <xercesc/dom/DOM.hpp>
 //  #include <CLHEP/Geometry/Transform3D.h>
 //  #include <CLHEP/Geometry/Vector3D.h>
-#include "GeoModelXml/translate.h"
+#include "GeoModelKernel/GeoDefinitions.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
-
 MakeRotation::MakeRotation() {}
 
 using namespace xercesc;
@@ -23,7 +23,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(rotation->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(rotation->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
@@ -31,4 +31,5 @@ char *toRelease;
     temp = GeoTrf::AngleAxis3D(p[0], GeoTrf::Vector3D(p[1], p[2], p[3]));
 
     return temp;
+
 }
diff --git a/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx b/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx
index 55ed872cfa8268dc187fbedb964ef2fe15db4493..32f4f9f94f2c1379a103b460e5eb305642dc9d49 100644
--- a/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeShaperef.cxx
@@ -6,19 +6,11 @@
 //    Process transformationref items: basically, just find the referenced transform and call its processor.
 //
 #include "GeoModelXml/shape/MakeShaperef.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelXml/GmxUtil.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 
 using namespace std;
 using namespace xercesc;
@@ -27,30 +19,23 @@ const RCBase *MakeShaperef::process(const DOMElement *element, GmxUtil &gmxUtil)
 //
 //    Get the referenced shape
 //
-    const XMLCh *idref = element->getAttribute(Translate("ref"));
+    const XMLCh *idref = element->getAttribute(XMLString::transcode("ref"));
     DOMDocument *doc = element->getOwnerDocument();
     DOMElement *shape = doc->getElementById(idref);
 //
 //    Check it is the right sort: it's parent should be a shapes
 //
     DOMNode *parent = shape->getParentNode();
-    if (XMLString::compareIString(parent->getNodeName(), Translate("shapes")) != 0) {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL << "Error processing <shaperef> tag: An IDREF for a shape did not refer to a shape.\nShape ref was " << 
+    if (XMLString::compareIString(parent->getNodeName(), XMLString::transcode("shapes")) != 0) {
+        OUTPUT_STREAM;
+        msglog << MSG::FATAL << "Error processing <shaperef> tag: An IDREF for a shape did not refer to a shape.\nShape ref was " << 
                idref << "; exiting" << endmsg;
-#else
-	std::cout<< "Error processing <shaperef> tag: An IDREF for a shape did not refer to a shape.\nShape ref was " << 
-               idref << "; exiting" << std::endl;
-#endif
-
         exit (1); // Need to improve...
     }
 //
 //    Get what sort of shape
 //
-    char *toRelease = Translate(shape->getNodeName());
+    char *toRelease = XMLString::transcode(shape->getNodeName());
     string tag(toRelease);
     XMLString::release(&toRelease);
 //
diff --git a/DetectorDescription/GeoModelXml/src/MakeSimplePolygonBrep.cxx b/DetectorDescription/GeoModelXml/src/MakeSimplePolygonBrep.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..3150a3dd0b99e210c755ec3cfad7d1ce6dc25158
--- /dev/null
+++ b/DetectorDescription/GeoModelXml/src/MakeSimplePolygonBrep.cxx
@@ -0,0 +1,74 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+#include <string>
+#include <vector>
+#include <sstream>
+#include <stdexcept>
+
+#include "GeoModelXml/OutputDirector.h"
+
+#include "GeoModelXml/shape/MakeSimplePolygonBrep.h"
+#include <xercesc/dom/DOM.hpp>
+#include "GeoModelKernel/RCBase.h"
+#include "GeoModelKernel/GeoSimplePolygonBrep.h"
+#include "xercesc/util/XMLString.hpp"
+#include "GeoModelXml/GmxUtil.h"
+using namespace xercesc;
+
+MakeSimplePolygonBrep::MakeSimplePolygonBrep() {}
+
+const RCBase * MakeSimplePolygonBrep::make(const xercesc::DOMElement *element, GmxUtil &gmxUtil) const {
+const int nParams = 3; 
+char const *parName[nParams] = {"xpoints", "ypoints", "zhalflength"};
+double z;
+std::vector <double> x;
+std::vector <double> y;
+
+char *toRelease;
+
+    toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[0])));
+    std::string xPoints(toRelease);
+    XMLString::release(&toRelease);
+
+    toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[1])));
+    std::string yPoints(toRelease);
+    XMLString::release(&toRelease);
+
+    toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[2])));
+    z = gmxUtil.evaluate(toRelease);
+    XMLString::release(&toRelease);
+
+    GeoSimplePolygonBrep * poly = new GeoSimplePolygonBrep(z);
+
+    std::istringstream xSS(xPoints);
+    while (!xSS.eof()) {
+        std::string upToNextComma;
+        getline( xSS, upToNextComma, ';' );
+        x.push_back(gmxUtil.evaluate(upToNextComma.c_str()));
+    }
+
+    std::istringstream ySS(yPoints);
+    while (!ySS.eof()) {
+        std::string upToNextComma;
+        getline( ySS, upToNextComma, ';' );
+        y.push_back(gmxUtil.evaluate(upToNextComma.c_str()));
+    }
+
+    int nx = x.size();
+    int ny = y.size();
+  
+    if (nx < 3 || ny < 3 || nx != ny) {
+        OUTPUT_STREAM;
+        msglog << MSG::ERROR << "MakeSimplePolygonBrep: Bad xpoints and/or ypoints\n";
+        throw std::runtime_error(std::string("MakeSimplePolygonBrep: Unequal number of x and y points, or less than 3\n\n") +
+         "xpoints was:\n" + xPoints + "\nypoints was:\n" + yPoints + "\n\n");
+    }
+
+    for (int i = 0; i < nx; ++i) {
+        poly->addVertex(x[i], y[i]);
+    }
+
+    return poly;
+
+}
diff --git a/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx b/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx
index a2982ccff830ab2ceca4933d86d60f416f2d938d..699af4a9c7cbfb393be3dd61b14d86d934308c83 100644
--- a/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeSubtraction.cxx
@@ -5,23 +5,16 @@
 // Automatically generated code from /home/hessey/prog/gmx2geo/makeshape
 // Then heavily modified
 #include "GeoModelXml/shape/MakeSubtraction.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
 #include <xercesc/dom/DOM.hpp>
 //   #include <CLHEP/Geometry/Transform3D.h>
+#include "GeoModelKernel/GeoDefinitions.h"
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoShape.h"
 #include "GeoModelKernel/GeoTransform.h"
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -33,11 +26,9 @@ const RCBase * MakeSubtraction::make(const xercesc::DOMElement *element, GmxUtil
 // 
 //    Process child elements; first is first shaperef; then transformation; then second shaperef.
 //
-    typedef Eigen::Affine3d Transform3D;
-
     GeoShape *first = 0;
     GeoShape *second = 0;
-    Transform3D hepXf=Transform3D::Identity();
+    GeoTrf::Transform3D hepXf=GeoTrf::Transform3D::Identity();
     int elementIndex = 0;
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) { // Skips text nodes
@@ -47,7 +38,7 @@ const RCBase * MakeSubtraction::make(const xercesc::DOMElement *element, GmxUtil
                     break;
                 }
                 case 1: { // Second element is transformation or transformationref
-                    char *toRelease = Translate(child->getNodeName());
+                    char *toRelease = XMLString::transcode(child->getNodeName());
                     string nodeName(toRelease);
                     XMLString::release(&toRelease);
                     GeoTransform *geoXf = nodeName == "transformation"? 
@@ -61,13 +52,8 @@ const RCBase * MakeSubtraction::make(const xercesc::DOMElement *element, GmxUtil
                     break;
                 }
                 default: // More than 3 elements?
-#ifndef STANDALONE_GMX
-                    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-                    MsgStream log(&(*msgh), "GeoModelXml");
-                    log << MSG::FATAL  << "MakeSubtraction: Incompatible DTD? got more than 3 child elements" << endmsg;
-#else
-		    std::cout<<"MakeSubtraction: Incompatible DTD? got more than 3 child elements" << std::endl;
-#endif
+                    OUTPUT_STREAM;
+                    msglog << MSG::FATAL  << "MakeSubtraction: Incompatible DTD? got more than 3 child elements" << endmsg;
             }
             elementIndex++;
         }
diff --git a/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx b/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx
index 1a154a724309b300110d22b3faf729d4f041ba78..fcba4039d8ece7b50ae650a2d69a0b59cea71e53 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTransformation.cxx
@@ -8,10 +8,10 @@
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoTransform.h"
 #include "GeoModelKernel/GeoAlignableTransform.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
-#include <Eigen/Dense>
+#include "GeoModelKernel/GeoDefinitions.h"
 
 using namespace xercesc;
 using namespace std;
@@ -20,14 +20,13 @@ MakeTransformation::MakeTransformation() {}
 
 const RCBase * MakeTransformation::make(const xercesc::DOMElement *element, GmxUtil &gmxUtil) const {
 char *name2release;
-typedef Eigen::Affine3d Transform3D;
- Transform3D hepTransform=Transform3D::Identity(); // Starts as Identity transform
+ GeoTrf::Transform3D hepTransform=GeoTrf::Transform3D::Identity(); // Starts as Identity transform
 //
 //   Add my element contents
 //
     for (DOMNode *child = element->getFirstChild(); child != 0; child = child->getNextSibling()) {
         if (child->getNodeType() == DOMNode::ELEMENT_NODE) {
-            name2release = Translate(child->getNodeName());
+            name2release = XMLString::transcode(child->getNodeName());
             string name(name2release);
             DOMElement *el = dynamic_cast<DOMElement *>(child);
             if (name == string("translation")) {
@@ -47,7 +46,7 @@ typedef Eigen::Affine3d Transform3D;
 //
 //    Create and return GeoModel transform
 //
-    char *toRelease = Translate(element->getAttribute(Translate("alignable")));
+    char *toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")));
     string alignable(toRelease);
     XMLString::release(&toRelease);
     if (alignable.compare(string("true")) == 0) {
diff --git a/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx b/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx
index e4d9e7278a034e1571b53d5e970e2e7b0efe6e52..a424e36a893cd445043bb7dd8501d04f5d5af5a2 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTransformationref.cxx
@@ -6,26 +6,18 @@
 //    Process transformationref items: basically, just find the referenced transform and call its processor.
 //
 #include "GeoModelXml/MakeTransformationref.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelXml/GeoNodeList.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 
 using namespace std;
 using namespace xercesc;
 
 const RCBase *MakeTransformationref::make(const DOMElement *element, GmxUtil &gmxUtil) const {
-const XMLCh *ref = Translate("ref");
+const XMLCh *ref = XMLString::transcode("ref");
 const XMLCh *idref;
 DOMDocument *doc = element->getOwnerDocument();
 char *toRelease;
@@ -37,19 +29,13 @@ char *toRelease;
 //
 //    Check it is the right sort
 //
-    toRelease = Translate(elem->getNodeName());
+    toRelease = XMLString::transcode(elem->getNodeName());
     string nodeName(toRelease);
     XMLString::release(&toRelease);
     if (nodeName != string("transformation")) {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL << "Error in xml/gmx file: transformationref " << Translate(idref) << " referenced a " << nodeName << 
+        OUTPUT_STREAM;
+        msglog << MSG::FATAL << "Error in xml/gmx file: transformationref " << XMLString::transcode(idref) << " referenced a " << nodeName << 
                 " instead of a transformation." << endmsg;
-#else
-	std::cout<<"Error in xml/gmx file: transformationref " << Translate(idref) << " referenced a " << nodeName << 
-                " instead of a transformation." <<std::endl;
-#endif
         exit(999); // Should do better...
     }
 //
diff --git a/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx b/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx
index d0de25a58c5b9e495b80f0778b06968be13a3820..7068dd222ffb8f1cfa57fe1c185eb8b26ba16235 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTranslation.cxx
@@ -6,7 +6,7 @@
 #include <xercesc/dom/DOM.hpp>
 //#include <CLHEP/Geometry/Transform3D.h>
 //#include <CLHEP/Geometry/Vector3D.h>
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 #include "GeoModelKernel/GeoDefinitions.h"
@@ -24,10 +24,9 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(translation->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(translation->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
-    GeoTrf::Translate3D temp(p[0], p[1], p[2]);
-    return temp;
+    return GeoTrf::Translate3D(p[0], p[1], p[2]);
 }
diff --git a/DetectorDescription/GeoModelXml/src/MakeTrap.cxx b/DetectorDescription/GeoModelXml/src/MakeTrap.cxx
index 78f77aa0fec39c4a5efa4711b35fa433b0d43cee..c7c64b3eb5833b195c5eaf3dc4fd6ff9a9fc2f89 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTrap.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTrap.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoTrap.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakeTrd.cxx b/DetectorDescription/GeoModelXml/src/MakeTrd.cxx
index 668154a06566bd85b1cfb9fc4d0c02abea2bab5b..afe9dd86a33b0f1c5eb78ba8f6cba940bc2d0347 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTrd.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTrd.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoTrd.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakeTube.cxx b/DetectorDescription/GeoModelXml/src/MakeTube.cxx
index 27e318707862ac70c8a8b9374fcf4084ef04166a..b8690d063d92d65a539b3b2d769cf289510f81b8 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTube.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTube.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoTube.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakeTubs.cxx b/DetectorDescription/GeoModelXml/src/MakeTubs.cxx
index b71bdaa78611ad39a46d50f75992e3f039efd95c..b0d4d79bfca7188f9ad57e7b06f1e2ee161a434c 100644
--- a/DetectorDescription/GeoModelXml/src/MakeTubs.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeTubs.cxx
@@ -7,7 +7,7 @@
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelKernel/RCBase.h"
 #include "GeoModelKernel/GeoTubs.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -21,7 +21,7 @@ double p[nParams];
 char *toRelease;
 
     for (int i = 0; i < nParams; ++i) {
-        toRelease = Translate(element->getAttribute(Translate(parName[i])));
+        toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode(parName[i])));
         p[i] = gmxUtil.evaluate(toRelease);
         XMLString::release(&toRelease);
     }
diff --git a/DetectorDescription/GeoModelXml/src/MakeUnion.cxx b/DetectorDescription/GeoModelXml/src/MakeUnion.cxx
index f28be31d17598fa76fce4579c0878c34aac0c5f9..d23afc4ffe60ca12ce28bdfec01d5527e397e4a4 100644
--- a/DetectorDescription/GeoModelXml/src/MakeUnion.cxx
+++ b/DetectorDescription/GeoModelXml/src/MakeUnion.cxx
@@ -4,15 +4,7 @@
 
 #include "GeoModelXml/shape/MakeUnion.h"
 #include <string>
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <xercesc/dom/DOM.hpp>
 //   #include <CLHEP/Geometry/Transform3D.h>
 #include "GeoModelKernel/RCBase.h"
@@ -20,7 +12,7 @@
 #include "GeoModelKernel/GeoTransform.h"
 #include "GeoModelKernel/GeoDefinitions.h"
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GmxUtil.h"
 
 using namespace xercesc;
@@ -44,7 +36,7 @@ const RCBase * MakeUnion::make(const xercesc::DOMElement *element, GmxUtil &gmxU
                     break;
                 }
                 case 1: { // Second element is transformation or transformationref
-                    char *toRelease = Translate(child->getNodeName());
+                    char *toRelease = XMLString::transcode(child->getNodeName());
                     string nodeName(toRelease);
                     XMLString::release(&toRelease);
                     GeoTransform *geoXf = nodeName == "transformation"? 
@@ -58,13 +50,8 @@ const RCBase * MakeUnion::make(const xercesc::DOMElement *element, GmxUtil &gmxU
                     break;
                 }
                 default: // More than 3 elements?
-#ifndef STANDALONE_GMX
-                    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-                    MsgStream log(&(*msgh), "GeoModelXml");
-                    log << MSG::FATAL << "MakeUnion: Incompatible DTD? got more than 3 child elements" << endmsg;
-#else
-		    std::cout<<"MakeUnion: Incompatible DTD? got more than 3 child elements" << std::endl;
-#endif
+                    OUTPUT_STREAM;
+                    msglog << MSG::FATAL << "MakeUnion: Incompatible DTD? got more than 3 child elements" << endmsg;
             }
             elementIndex++;
         }
diff --git a/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx b/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx
index 6abdd3073910fa0145c00bd09b1c9694cf30db8f..b579b5199c24631ecfd90fbfe0b0df07bbfc96af 100644
--- a/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/MulticopyProcessor.cxx
@@ -21,14 +21,7 @@
 //
 #include "GeoModelXml/MulticopyProcessor.h"
 
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <sstream>
 #include <string>
 #include <cstdlib>
@@ -38,9 +31,8 @@
 #include "GeoModelKernel/GeoVFullPhysVol.h"
 #include "GeoModelKernel/GeoNameTag.h"
 #include "GeoModelKernel/GeoDefinitions.h"
-//  #include <CLHEP/Geometry/Transform3D.h>
 
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include "GeoModelXml/GeoNodeList.h"
 #include "GeoModelXml/ProcessorRegistry.h"
 #include "GeoModelXml/GmxUtil.h"
@@ -51,27 +43,24 @@ using namespace std;
 
 void MulticopyProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
 char *toRelease;
-const XMLCh *ref = Translate("ref");
+const XMLCh *ref = XMLString::transcode("ref");
 const XMLCh *idref;
 DOMDocument *doc = element->getOwnerDocument();
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-#endif
+    OUTPUT_STREAM;
 
-    bool alignable = element->hasAttribute(Translate("alignable"));
+    bool alignable = element->hasAttribute(XMLString::transcode("alignable"));
 //
 //    How many copies?
 //
     int nCopies;
-    toRelease = Translate(element->getAttribute(Translate("n")));
+    toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("n")));
     nCopies = gmxUtil.evaluate(toRelease);
     XMLString::release(&toRelease);
 //
 //    See if it is in the map; if so, xfList is already done. If not, fill xfList.
 //
-    toRelease = Translate(element->getAttribute(Translate("name")));
+    toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("name")));
     string name(toRelease);
     XMLString::release(&toRelease);
     map<string, GeoNodeList>::iterator entry;
@@ -86,22 +75,16 @@ DOMDocument *doc = element->getOwnerDocument();
 //    Loopvar Variable name
 //
         string varname, firstElement;
-        bool hasVarname = (element->getAttributeNode(Translate("loopvar")) != 0);
+        bool hasVarname = (element->getAttributeNode(XMLString::transcode("loopvar")) != 0);
         if (hasVarname) {
-            toRelease = Translate(element->getAttribute(Translate("loopvar")));
+            toRelease = XMLString::transcode(element->getAttribute(XMLString::transcode("loopvar")));
             varname = toRelease;
             XMLString::release(&toRelease);
             // Check it is a vector
             firstElement = varname + "_0";
             if (!gmxUtil.eval.findVariable(firstElement.c_str())) {
-#ifndef STANDALONE_GMX
-                log << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name << 
+                msglog << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name << 
                 ". Found loopvar set to " << varname << ", but no vector with that name has been defined." << endmsg;
-#else
-		std::cout<< "Error in .gmx file. Processing multicopy element with name " << name << 
-                ". Found loopvar set to " << varname << ", but no vector with that name has been defined." << std::endl;
-#endif
-
                 exit(999); // Should do better
             }
         }
@@ -109,7 +92,7 @@ DOMDocument *doc = element->getOwnerDocument();
 //    Get the transformation-element
 //
         DOMElement *elXf = element->getFirstElementChild();
-        toRelease = Translate(elXf->getNodeName());
+        toRelease = XMLString::transcode(elXf->getNodeName());
         string nodeName(toRelease);
         XMLString::release(&toRelease);
         Element2GeoItem *xFormProcessor;
@@ -118,13 +101,8 @@ DOMDocument *doc = element->getOwnerDocument();
                 xFormProcessor = (Element2GeoItem *) &(gmxUtil.tagHandler.transformation);
             }
             else { // Not OK
-#ifndef STANDALONE_GMX
-                log << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name <<
-                ". \nIt gives loopvar therefore should have a <transformation> and not a <transformationref> (despite the DTD)\n";
-#else
-		std::cout<<"Error in .gmx file. Processing multicopy element with name " << name <<
+                msglog << MSG::FATAL << "Error in .gmx file. Processing multicopy element with name " << name <<
                 ". \nIt gives loopvar therefore should have a <transformation> and not a <transformationref> (despite the DTD)\n";
-#endif
                 exit(999); // Should do better
             }
         }
@@ -180,7 +158,7 @@ DOMDocument *doc = element->getOwnerDocument();
 //    Get object to be copied
 //
     DOMElement *object = element->getLastElementChild();
-    toRelease = Translate(object->getNodeName());
+    toRelease = XMLString::transcode(object->getNodeName());
     string nodeName(toRelease);
     XMLString::release(&toRelease);
     ElementProcessor *objectProcessor = gmxUtil.processorRegistry.find(nodeName);
@@ -199,29 +177,24 @@ DOMDocument *doc = element->getOwnerDocument();
         gmxUtil.tagHandler.assembly.zeroId(elem);
     }
     else if (nodeName == "transform") { // Object is either an assemlyref or logvolref, and there is only one of these
-        DOMNodeList *lvList = element->getElementsByTagName(Translate("logvolref"));
+        DOMNodeList *lvList = element->getElementsByTagName(XMLString::transcode("logvolref"));
         if (lvList->getLength() > 0) {
-            const XMLCh *idref =  dynamic_cast<DOMElement *> (lvList->item(0))->getAttribute(Translate("ref"));
+            const XMLCh *idref =  dynamic_cast<DOMElement *> (lvList->item(0))->getAttribute(XMLString::transcode("ref"));
             DOMElement *lv = doc->getElementById(idref);
             gmxUtil.tagHandler.logvol.zeroId(lv);
         }
         else {
-            DOMNodeList *asList = element->getElementsByTagName(Translate("assemblyref"));
+            DOMNodeList *asList = element->getElementsByTagName(XMLString::transcode("assemblyref"));
             if (asList->getLength() > 0) {
-                const XMLCh *idref =  dynamic_cast<DOMElement *> (asList->item(0))->getAttribute(Translate("ref"));
+                const XMLCh *idref =  dynamic_cast<DOMElement *> (asList->item(0))->getAttribute(XMLString::transcode("ref"));
                 DOMDocument *doc = element->getOwnerDocument();
                 DOMElement *as = doc->getElementById(idref);
                 gmxUtil.tagHandler.assembly.zeroId(as);
             }
             else {
-#ifndef STANDALONE_GMX
-                log << MSG::FATAL << 
+                msglog << MSG::FATAL << 
                     "multicopyprocessor: error in " << name << ". <transform> object was neither assemblyref nor logvolref\n"
                     << "Exiting Athena" << endmsg;
-#else
-		std::cout<<"multicopyprocessor: error in " << name << ". <transform> object was neither assemblyref nor logvolref\n"
-                    << "Exiting Athena" << std::endl;
-#endif
                 exit(999); // Should do better
             }
         }
@@ -240,7 +213,7 @@ DOMDocument *doc = element->getOwnerDocument();
 //
     int level;
     if (alignable) {
-        istringstream(Translate(element->getAttribute(Translate("alignable")))) >> level;
+        istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")))) >> level;
     }
 //
 //    Add transforms and physvols etc. to list to be added
diff --git a/DetectorDescription/GeoModelXml/src/PositionIndex.cxx b/DetectorDescription/GeoModelXml/src/PositionIndex.cxx
index 0150212f4c1d88ab9477249863f6c42469cc7fa9..162528e4d2c97ce5afb3731600c5274e6e6f0086 100644
--- a/DetectorDescription/GeoModelXml/src/PositionIndex.cxx
+++ b/DetectorDescription/GeoModelXml/src/PositionIndex.cxx
@@ -3,15 +3,7 @@
 */
 
 #include <cstdlib>
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <vector>
 #include <string>
 #include "ExpressionEvaluator/Evaluator.h"
@@ -106,22 +98,13 @@ void PositionIndex::indices(map<string, int> &index, Evaluator &eval) {
         string name = *n;
         index[name] = (int) eval.evaluate(m_formula[name].c_str());
         if (eval.status() != Evaluator::OK) {
-#ifndef STANDALONE_GMX
-            ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-            MsgStream log(&(*msgh), "GeoModelXml");
-            log << MSG::FATAL <<
+            OUTPUT_STREAM;
+            msglog << MSG::FATAL <<
                    "GeoModelXml Error processing Evaluator expression for PositionIndex. Error name " <<
                     eval.error_name() << endl << "Message: ";
             eval.print_error();
-            log << m_formula[name] << endl << string(eval.error_position(), '-') << '^' << '\n' << "Exiting program." << 
+            msglog << m_formula[name] << endl << string(eval.error_position(), '-') << '^' << '\n' << "Exiting program." << 
                    endmsg;
-#else
-	    std::cout<<"GeoModelXml Error processing Evaluator expression for PositionIndex. Error name " <<
-                    eval.error_name() << endl << "Message: ";
-            eval.print_error();
-            std::cout << m_formula[name] << endl << string(eval.error_position(), '-') << '^' << '\n' << "Exiting program." << 
-		  std::endl;
-#endif
             exit(999); // Should do better...
         }
 //
diff --git a/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx b/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx
index e8ee0ed8ee0180e00ab348616f1b578469e23daf..49be4a154ea2b2b7c6b29a391004401ce33410e4 100644
--- a/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx
+++ b/DetectorDescription/GeoModelXml/src/StrictErrorHandler.cxx
@@ -3,64 +3,37 @@
 */
 
 #include "GeoModelXml/StrictErrorHandler.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include <xercesc/dom/DOMError.hpp>
 #include <xercesc/dom/DOMLocator.hpp>
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
+#include "GeoModelXml/OutputDirector.h"
 
 StrictErrorHandler::StrictErrorHandler(): m_SawErrors(false) {}
 StrictErrorHandler::~StrictErrorHandler() {}
 
+using namespace xercesc;
+
 bool StrictErrorHandler::handleError(const xercesc::DOMError &domError) {
 
-#ifndef STANDALONE_GMX
-    ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-    MsgStream log(&(*msgh), "GeoModelXml");
-    log << MSG::ERROR << "StrictErrorHandler: Handle an error\n";
-#else
-    std::cout << "StrictErrorHandler: Handle an error\n";
-#endif
+    OUTPUT_STREAM;
+    msglog << MSG::ERROR << "StrictErrorHandler: Handle an error\n";
 
     m_SawErrors = true;
 
     switch (domError.getSeverity()) {
     case (xercesc::DOMError::DOM_SEVERITY_WARNING):
-#ifndef STANDALONE_GMX
-        log << "\nWarning at file \n";
-#else
-	std::cout<< "\nWarning at file \n";
-#endif
+        msglog << "\nWarning at file \n";
         break;
     case (xercesc::DOMError::DOM_SEVERITY_ERROR):
-#ifndef STANDALONE_GMX
-        log << "\nError at file \n";
-#else
-	std::cout<< "\nError at file \n";
-#endif
+        msglog << "\nError at file \n";
         break;
     default:
-#ifndef STANDALONE_GMX
-        log << "\nFatal Error at file \n";
-    }
-    log << Translate(domError.getLocation()->getURI())
-         << ", line " << domError.getLocation()->getLineNumber()
-         << ", char " << domError.getLocation()->getColumnNumber()
-         << "\n  Message: " << Translate(domError.getMessage()) << endmsg;
-#else
-    std::cout << "\nFatal Error at file \n";
+        msglog << "\nFatal Error at file \n";
     }
-    std::cout << Translate(domError.getLocation()->getURI())
+    msglog << XMLString::transcode(domError.getLocation()->getURI())
          << ", line " << domError.getLocation()->getLineNumber()
          << ", char " << domError.getLocation()->getColumnNumber()
-         << "\n  Message: " << Translate(domError.getMessage()) << std::endl;
-#endif
+         << "\n  Message: " << XMLString::transcode(domError.getMessage()) << endmsg;
 
     return true;
 }
diff --git a/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx b/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx
index 5c3e567f6a57e33b938730e05a743e6081cc5556..9f67170d1878dcd9f9ff5d10685f76d4360a9f12 100644
--- a/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/TransformProcessor.cxx
@@ -22,7 +22,8 @@
 #include "GeoModelKernel/GeoVFullPhysVol.h"
 #include "GeoModelKernel/GeoAlignableTransform.h"
 #include "GeoModelXml/GmxUtil.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
+
 
 //  using namespace CLHEP;
 using namespace std;
@@ -30,13 +31,13 @@ using namespace xercesc;
 
 void TransformProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
 char *tagName;
-    bool alignable = element->hasAttribute(Translate("alignable"));
+    bool alignable = element->hasAttribute(XMLString::transcode("alignable"));
 //
 //    Do second element first, to find what sort of transform is needed (shape or logvol etc.?)
 //
     GeoNodeList objectsToAdd;
     DOMElement *object = element->getLastElementChild();
-    tagName = Translate(object->getTagName());
+    tagName = XMLString::transcode(object->getTagName());
     string objectName(tagName);
     gmxUtil.processorRegistry.find(objectName)->process(object, gmxUtil, objectsToAdd);
     XMLString::release(&tagName);
@@ -44,7 +45,7 @@ char *tagName;
 //    Get the transformation
 //
     DOMElement *transformation = element->getFirstElementChild();
-    tagName = Translate(transformation->getTagName()); // transformation or transformationref
+    tagName = XMLString::transcode(transformation->getTagName()); // transformation or transformationref
 //  ******* Should check here that an alignable transform is given an alignable transformation and object; to be done
     toAdd.push_back((GeoGraphNode *)gmxUtil.geoItemRegistry.find(string(tagName))->process(transformation, gmxUtil));
     XMLString::release(&tagName);
@@ -53,7 +54,7 @@ char *tagName;
 //
     if (alignable) { 
         int level;
-        istringstream(Translate(element->getAttribute(Translate("alignable")))) >> level;
+        istringstream(XMLString::transcode(element->getAttribute(XMLString::transcode("alignable")))) >> level;
 	//cout << "\nTransformProcessor: Add Alignable named " << ((GeoNameTag *) objectsToAdd[0])->getName() << " with GeoModel id " << 
         //((GeoIdentifierTag *) objectsToAdd[1])->getIdentifier() << endl; // commenting out this cout, as it is spamming all ITk jobs with tens of thousands of lines of output
         map<string, int> index;
diff --git a/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx b/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx
index b6c7c4235df1f724dfa9f65aaa7e437ee19171fc..82d351d46af36776c13bbbe4fe41055b501a0ae3 100644
--- a/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx
+++ b/DetectorDescription/GeoModelXml/src/TransformrefProcessor.cxx
@@ -6,26 +6,18 @@
 //    Process transformref items: basically, just find the referenced transform and call its processor.
 //
 #include "GeoModelXml/TransformrefProcessor.h"
-
-#ifndef STANDALONE_GMX
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
-#else
-#include <iostream>
-#endif
-
+#include "GeoModelXml/OutputDirector.h"
 #include <string>
 #include <xercesc/dom/DOM.hpp>
 #include "GeoModelXml/GmxUtil.h"
 #include "GeoModelXml/GeoNodeList.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 
 using namespace std;
 using namespace xercesc;
 
 void TransformrefProcessor::process(const DOMElement *element, GmxUtil &gmxUtil, GeoNodeList &toAdd) {
-const XMLCh *ref = Translate("ref");
+const XMLCh *ref = XMLString::transcode("ref");
 const XMLCh *idref;
 DOMDocument *doc = element->getOwnerDocument();
 char *toRelease;
@@ -37,19 +29,13 @@ char *toRelease;
 //
 //    Check it is the right sort
 //
-    toRelease = Translate(elem->getNodeName());
+    toRelease = XMLString::transcode(elem->getNodeName());
     string nodeName(toRelease);
     XMLString::release(&toRelease);
     if (nodeName != "transform") {
-#ifndef STANDALONE_GMX
-        ServiceHandle<IMessageSvc> msgh("MessageSvc", "GeoModelXml");
-        MsgStream log(&(*msgh), "GeoModelXml");
-        log << MSG::FATAL<< "Error in xml/gmx file: transformref " << Translate(idref) << " referenced a " << nodeName << 
+        OUTPUT_STREAM;
+        msglog << MSG::FATAL<< "Error in xml/gmx file: transformref " << XMLString::transcode(idref) << " referenced a " << nodeName << 
                 " instead of a logvol." << endmsg;
-#else
-	std::cout <<"Error in xml/gmx file: transformref " << Translate(idref) << " referenced a " << nodeName << 
-                " instead of a logvol." << std::endl;
-#endif
         exit(999); // Should do better...
     }
 //
diff --git a/DetectorDescription/GeoModelXml/src/createdomdocument.cxx b/DetectorDescription/GeoModelXml/src/createdomdocument.cxx
index 39366f72caca71c0d1196a65eb0dd775854e5afb..2222a0186da1850f4e637f6fcd5df38a2da84f87 100644
--- a/DetectorDescription/GeoModelXml/src/createdomdocument.cxx
+++ b/DetectorDescription/GeoModelXml/src/createdomdocument.cxx
@@ -17,7 +17,7 @@
 #include <xercesc/dom/DOMImplementationLS.hpp>
 #include <xercesc/dom/DOMImplementationRegistry.hpp>
 #include "GeoModelXml/StrictErrorHandler.h"
-#include "GeoModelXml/translate.h"
+#include "xercesc/util/XMLString.hpp"
 #include <iostream>
 #include <stdexcept>
 
@@ -34,7 +34,7 @@ DOMDocument *createDOMDocument(string xmlFile, DOMLSParser *parser, unsigned int
         XMLPlatformUtils::Initialize();
     }
     catch (const xercesc::XMLException &toCatch) {
-        char *message = Translate(toCatch.getMessage());
+        char *message = XMLString::transcode(toCatch.getMessage());
         cout << "XercesC error during initialization: " << message << "\n";
         XMLString::release(&message);
         return 0;
@@ -79,7 +79,7 @@ cout << "Decompressed it\n";
             else {
                 decompressed = xmlFile;
             }
-            xmlCh = Translate(decompressed.c_str());
+            xmlCh = XMLString::transcode(decompressed.c_str());
 cout << "Transcoded it\n";
             DOMLSInput *input = impl->createLSInput();
             input->setStringData(xmlCh);            
@@ -88,7 +88,7 @@ cout << "Parsed it\n";
         }
         if (errorHandler.getSawErrors()) {
             cout << "Oh oh, saw errors. \n";
-if (flags & 0x1) cout << "\n\n\n" << Translate(xmlCh) << "\n\n\n";
+if (flags & 0x1) cout << "\n\n\n" << XMLString::transcode(xmlCh) << "\n\n\n";
             return 0;
         }
         else {
@@ -101,13 +101,13 @@ if (flags & 0x1) cout << "\n\n\n" << Translate(xmlCh) << "\n\n\n";
         }
     }
     catch (const XMLException &toCatch) {
-        char *message = Translate(toCatch.getMessage());
+        char *message = XMLString::transcode(toCatch.getMessage());
         cout << "Parse-file xml exception: \n" << message << "\n";
         XMLString::release(&message);
         return 0;
     }
     catch (const DOMException &toCatch) {
-        char *message = Translate(toCatch.msg);
+        char *message = XMLString::transcode(toCatch.msg);
         cout << "DOM exception: \n" << message << "\n";
         XMLString::release(&message);
         return 0;
diff --git a/ForwardDetectors/LUCID/LUCID_Monitoring/share/args.ESDtoAOD.lucid.py b/ForwardDetectors/LUCID/LUCID_Monitoring/share/args.ESDtoAOD.lucid.py
index a92cb9ab1db321dc3f7453c6adebb301ec81c5aa..be7ea706f4997515105765b9291d0422953c3bd0 100755
--- a/ForwardDetectors/LUCID/LUCID_Monitoring/share/args.ESDtoAOD.lucid.py
+++ b/ForwardDetectors/LUCID/LUCID_Monitoring/share/args.ESDtoAOD.lucid.py
@@ -21,7 +21,7 @@ runArgs.maxEvents = -1
 
 runArgs.inputESDFile = ['myESD.pool.root']
 
-runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCommission/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py', 'RecJobTransforms/debugConfig.py']
+runArgs.preInclude = ['RecExCommon/RecoUsefulFlags.py', 'RecExCond/MinimalCommissioningSetup.py', 'RecJobTransforms/UseOracle.py', 'RecJobTransforms/debugConfig.py']
 
 runArgs.outputAODFile = 'myAOD.pool.root'
 
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.h b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.h
index ad60f03a11682725b40ff418a0987ca489a87fbd..8338c8bbd418df665d4438eef3b2e41af8990a99 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.h
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.h
@@ -41,7 +41,7 @@ namespace InDetDD {
       - modified & maintained: Nick Styles, Andreas Salzburger
       */
    
-  class TRT_BarrelElement : public TRT_BaseElement  {
+  class TRT_BarrelElement final: public TRT_BaseElement  {
     
   public:
     
@@ -63,7 +63,7 @@ namespace InDetDD {
     virtual ~TRT_BarrelElement() = default;
 
     /** Type information */
-    virtual TRT_BaseElement::Type type() const {return TRT_BaseElement::BARREL;} 
+    virtual TRT_BaseElement::Type type() const override final;
 
     /**	Returns a pointer to conditions data.  This includes
     	information on dead and noisy wires, as well as wire
@@ -87,13 +87,13 @@ namespace InDetDD {
     inline double strawZPos (unsigned int i) const;
     
     /** Default Local -> global transform of the straw (ie before alignment corrections) */
-    virtual HepGeom::Transform3D defStrawTransform(int straw) const;
+    virtual HepGeom::Transform3D defStrawTransform(int straw) const override final;
     
     /** Get the length of the straws (active length): */
-    virtual const double & strawLength() const;
+    virtual const double & strawLength() const override final;
 
     /**  StrawDirection. +1 if axis is in same direction as local coordinate, -1 otherwise. */
-    virtual int strawDirection() const;
+    virtual int strawDirection() const override final;
 
     /**	Returns the next-in-phi detector element, or zero if none (forseeing gaps, in other words). */
     const TRT_BarrelElement * nextInPhi() const;
@@ -123,37 +123,30 @@ namespace InDetDD {
     const TRT_BarrelCode & getCode() const;
     
     /** Surface bounds */
-    virtual const Trk::SurfaceBounds & strawBounds() const;
+    virtual const Trk::SurfaceBounds & strawBounds() const override final;
 
   private:
-    
     /** Illegal Operations: */
-    TRT_BarrelElement(const TRT_BarrelElement &right);
-    const TRT_BarrelElement & operator=(const TRT_BarrelElement &right);
-
-  protected:
+    TRT_BarrelElement(const TRT_BarrelElement& right) = delete;
+    const TRT_BarrelElement& operator=(const TRT_BarrelElement& right) = delete;
     /** These transforms are effectively to the local coord
       system of a straw derived from GeoModel -> hence CLHEP */
     HepGeom::Transform3D calculateStrawTransform(int straw) const;
     HepGeom::Transform3D calculateLocalStrawTransform(int straw) const;
-
     /** return the surface of the element */ 
     const Trk::Surface & elementSurface() const;
-    
     /** create the cache for the element */
     void createSurfaceCache() const;
-
-  protected:
-    // Protected Member data:
-    TRT_BarrelCode              m_code;
-    const TRT_BarrelDescriptor *m_descriptor;
-    const TRT_BarrelElement    *m_nextInPhi;
-    const TRT_BarrelElement    *m_previousInPhi;
-    const TRT_BarrelElement    *m_nextInR;
-    const TRT_BarrelElement    *m_previousInR;
-  };
-  
-
+    std::unique_ptr<SurfaceCache> createSurfaceCacheHelper() const;
+
+    // Private Member data:
+    TRT_BarrelCode m_code;
+    const TRT_BarrelDescriptor* m_descriptor;
+    const TRT_BarrelElement* m_nextInPhi;
+    const TRT_BarrelElement* m_previousInPhi;
+    const TRT_BarrelElement* m_nextInR;
+    const TRT_BarrelElement* m_previousInR;
+    };
 }
 
 #include "TRT_BarrelElement.icc"
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.icc b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.icc
index 181f1c73aee7baec404ddedee5627178f4e612cf..bc868aa50973e0dc9ff5b82b0a19b178a2f65801 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.icc
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_BarrelElement.icc
@@ -6,49 +6,68 @@
 
 namespace InDetDD {
 
-inline const TRT_BarrelElement * TRT_BarrelElement::nextInPhi() const
+/** Type information */
+inline TRT_BaseElement::Type
+TRT_BarrelElement::type() const
+{
+  return TRT_BaseElement::BARREL;
+}
+
+inline const TRT_BarrelElement*
+TRT_BarrelElement::nextInPhi() const
 {
   return m_nextInPhi;
 }
 
-inline const TRT_BarrelElement * TRT_BarrelElement::previousInPhi() const
+inline const TRT_BarrelElement*
+TRT_BarrelElement::previousInPhi() const
 {
   return m_previousInPhi;
 }
 
-inline const TRT_BarrelElement * TRT_BarrelElement::nextInR() const
+inline const TRT_BarrelElement*
+TRT_BarrelElement::nextInR() const
 {
   return m_nextInR;
 }
 
-inline const TRT_BarrelElement * TRT_BarrelElement::previousInR() const
+inline const TRT_BarrelElement*
+TRT_BarrelElement::previousInR() const
 {
   return m_previousInR;
 }
 
-inline const TRT_BarrelCode & TRT_BarrelElement::getCode() const
+inline const TRT_BarrelCode&
+TRT_BarrelElement::getCode() const
 {
   return m_code;
 }
 
-
 // Get X Position - should not be used anymore
-inline double TRT_BarrelElement::strawXPos (unsigned int straw) const {
+inline double
+TRT_BarrelElement::strawXPos(unsigned int straw) const
+{
   return strawCenter(straw).x();
 }
 
 // Get Y Position - should not be used anymore
-inline double TRT_BarrelElement::strawYPos (unsigned int straw) const {
-    return strawCenter(straw).y();
+inline double
+TRT_BarrelElement::strawYPos(unsigned int straw) const
+{
+  return strawCenter(straw).y();
 }
 
 // Get Z Position - should not be used anymore
-inline double TRT_BarrelElement::strawZPos (unsigned int straw) const {
-    return strawCenter(straw).z();
+inline double
+TRT_BarrelElement::strawZPos(unsigned int straw) const
+{
+  return strawCenter(straw).z();
 }
 
 // Get the length of the straws:
-inline const double & TRT_BarrelElement::strawLength() const {
+inline const double&
+TRT_BarrelElement::strawLength() const
+{
   return m_descriptor->strawLength();
 }
 }
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.h b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.h
index 644e5b47e171f11329cd023780e2c4779b4a711a..27fffa85bed58402e28ffc86ac24637c85650a82 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.h
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.h
@@ -41,7 +41,7 @@ namespace InDetDD {
       */
   
   
-  class TRT_EndcapElement : public TRT_BaseElement   {
+  class TRT_EndcapElement final : public TRT_BaseElement   {
     
     public:
       /** Constructor */
@@ -61,16 +61,16 @@ namespace InDetDD {
       virtual ~TRT_EndcapElement();
       
       /** Type information: */
-      virtual TRT_BaseElement::Type type() const {return TRT_BaseElement::ENDCAP;} 
+      virtual TRT_BaseElement::Type type() const override final;
     
       /** Default Local -> global transform of the straw (ie before alignment corrections) */
-      virtual HepGeom::Transform3D defStrawTransform(int straw) const;
+      virtual HepGeom::Transform3D defStrawTransform(int straw) const override final;
     
       /** Active straw length */
       virtual const double & strawLength() const;
     
       /** StrawDirection. +1 if axis is in same direction as local coordinate, -1 otherwise. */
-      virtual int strawDirection() const;
+      virtual int strawDirection() const override final;
     
       /** Returns a pointer to conditions data.  This includes
          information on dead and noisy wires, as well as wire
@@ -97,10 +97,10 @@ namespace InDetDD {
       const TRT_EndcapCode & getCode() const;
       
       // Surface bounds
-      virtual const Trk::SurfaceBounds & strawBounds() const;
+      virtual const Trk::SurfaceBounds & strawBounds() const override final;
     
     
-    protected:
+    private:
       /** These transforms are effectively to the local coord
         system of a straw derived from GeoModel -> hence CLHEP */
       HepGeom::Transform3D calculateStrawTransform(int straw) const;
@@ -108,19 +108,18 @@ namespace InDetDD {
     
       /** return the surface of the element */ 
       const Trk::Surface & elementSurface() const;
-      
+
       /** create the cache for the element */
       void createSurfaceCache() const;
-      
+      std::unique_ptr<SurfaceCache> createSurfaceCacheHelper() const;
       /** create the cache for the straw of identifier id */
       void createSurfaceCache(Identifier id) const;
-    
-    private:
-      
+
       // Illegal Operations:
-      TRT_EndcapElement(const TRT_EndcapElement &right);
-      const TRT_EndcapElement & operator=(const TRT_EndcapElement &right);
-      
+      TRT_EndcapElement(const TRT_EndcapElement& right) = delete;
+      const TRT_EndcapElement& operator=(const TRT_EndcapElement& right) =
+        delete;
+
       // Private Member Data:
       TRT_EndcapCode              m_code;
       const TRT_EndcapDescriptor *m_descriptor;
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.icc b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.icc
index 697703701ff4a8b94e86f8a3875265f0244b6649..d6eb7f46d57b7bac076903ca045fbd6291f4db29 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.icc
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/TRT_ReadoutGeometry/TRT_EndcapElement.icc
@@ -3,18 +3,29 @@
 */
 
 namespace InDetDD {
-  inline const TRT_EndcapElement * TRT_EndcapElement::nextInZ() const
-    {
-      return m_nextInZ;
-    }
-  
-  inline const TRT_EndcapElement * TRT_EndcapElement::previousInZ() const
-    {
-      return m_previousInZ;
-    }
-  
-  inline const TRT_EndcapCode & TRT_EndcapElement::getCode() const
-    {
-      return m_code;
-    }
+
+/** Type information: */
+inline TRT_BaseElement::Type
+TRT_EndcapElement::type() const
+{
+  return TRT_BaseElement::ENDCAP;
+}
+
+inline const TRT_EndcapElement*
+TRT_EndcapElement::nextInZ() const
+{
+  return m_nextInZ;
+}
+
+inline const TRT_EndcapElement*
+TRT_EndcapElement::previousInZ() const
+{
+  return m_previousInZ;
+}
+
+inline const TRT_EndcapCode&
+TRT_EndcapElement::getCode() const
+{
+  return m_code;
+}
 }
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelDescriptor.cxx b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelDescriptor.cxx
index ccf9521d37bbbd0e9a61c484c4591a5f8ede6198..5e73c5356cca47092dcd6396ff2916f3fb68ca21 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelDescriptor.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelDescriptor.cxx
@@ -15,7 +15,7 @@ TRT_BarrelDescriptor::TRT_BarrelDescriptor()
     m_zDead(0),
     m_zPos(0),
     m_innerTubeRadius(2*CLHEP::mm), // FIXME: Hardwired for now!!
-    m_f(NULL),
+    m_f(nullptr),
     m_o(0),
     m_bounds()
 {
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelElement.cxx b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelElement.cxx
index 6cd61074c81321ee05ef3042f39072fc7e6ed2ba..80e442aedac65df71aa655b4189846a51a9d958e 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelElement.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_BarrelElement.cxx
@@ -187,37 +187,57 @@ const Trk::SurfaceBounds& TRT_BarrelElement::strawBounds() const
 
 const Trk::Surface& TRT_BarrelElement::elementSurface() const
 {
-  if (not m_surface) m_surface.set(std::make_unique<Trk::PlaneSurface>(*this));
+  if (not m_surface) {
+    m_surface.set(std::make_unique<Trk::PlaneSurface>(*this));
+  }
   return *m_surface;
 }
 
 void TRT_BarrelElement::createSurfaceCache() const
 {
+ // create the surface cache
+ if (!m_surfaceCache) {
+   m_surfaceCache.set(std::move(createSurfaceCacheHelper()));
+ }
+ // creaete the surface (only if needed, links are still ok even if cache
+ // update)
+ if (!m_surface) {
+   elementSurface();
+ }
+}
+std::unique_ptr<SurfaceCache>
+TRT_BarrelElement::createSurfaceCacheHelper() const{
+
   // Calculate the surface from the two end straws.
   int firstStraw = 0;
   int lastStraw = nStraws() - 1;
 
-  const Amg::Vector3D& centerFirstStraw = center(m_idHelper->straw_id(identify(), firstStraw));
-  const Amg::Vector3D& centerLastStraw  = center(m_idHelper->straw_id(identify(), lastStraw));
+  const Amg::Vector3D& centerFirstStraw =
+    center(m_idHelper->straw_id(identify(), firstStraw));
+  const Amg::Vector3D& centerLastStraw =
+    center(m_idHelper->straw_id(identify(), lastStraw));
 
   // Calculate center as the average position of the end straws.
-  Amg::Vector3D* center = new Amg::Vector3D(0.5*(centerFirstStraw+centerLastStraw));
+  auto center =
+    std::make_unique<Amg::Vector3D>(0.5 * (centerFirstStraw + centerLastStraw));
 
-  Amg::Vector3D  phiAxis = centerLastStraw - centerFirstStraw;
+  Amg::Vector3D phiAxis = centerLastStraw - centerFirstStraw;
   double width = phiAxis.mag();
   phiAxis = phiAxis.normalized();
-  double elementWidth = width + 2 * m_descriptor->innerTubeRadius(); // Add the straw tube radius
+  double elementWidth =
+    width + 2 * m_descriptor->innerTubeRadius(); // Add the straw tube radius
 
-  // Get local z-axis. This is roughly in +ve global z direction  (exactly if no misalignment)
-  // We could probably use any straw for this but we average the first and last straw and renormalize
-  // to a unit vector.
-  Amg::Vector3D etaAxis = 0.5*(strawAxis(firstStraw) + strawAxis(lastStraw));
+  // Get local z-axis. This is roughly in +ve global z direction  (exactly if no
+  // misalignment) We could probably use any straw for this but we average the
+  // first and last straw and renormalize to a unit vector.
+  Amg::Vector3D etaAxis = 0.5 * (strawAxis(firstStraw) + strawAxis(lastStraw));
   etaAxis = etaAxis.normalized();
 
   // Calculate normal. This will point away from the beam line based
   // on the assumption that the straw numbering goes in the direction
   // of increasing phi and the straw axis is in +ve z direction.
-  Amg::Vector3D* normal = new Amg::Vector3D(phiAxis.cross( etaAxis ));  // phi cross z
+  auto normal =
+    std::make_unique<Amg::Vector3D>(phiAxis.cross(etaAxis)); // phi cross z
 
   // Transform from local to global.
   // local x axis -> phiAxis
@@ -226,27 +246,25 @@ void TRT_BarrelElement::createSurfaceCache() const
   // translation -> center
 
   // This constructor takes three points in the two coordinate systems.
-  Amg::Transform3D* transform = new Amg::Transform3D();
+  auto transform = std::make_unique<Amg::Transform3D>();
 
   Amg::RotationMatrix3D rotation;
   rotation.col(0) = phiAxis;
   rotation.col(1) = etaAxis;
   rotation.col(2) = (*normal);
 
-  (*transform)  = Amg::Translation3D(*center) * rotation;
+  (*transform) = Amg::Translation3D(*center) * rotation;
 
   // create the element bounds
-  Trk::RectangleBounds * elementBounds = new Trk::RectangleBounds(0.5*elementWidth, 0.5*strawLength());
-  // create the surface cache
-  m_surfaceCache.set(std::make_unique<SurfaceCache>(transform, center, normal, elementBounds));
+  auto elementBounds = std::make_unique<Trk::RectangleBounds>(
+    0.5 * elementWidth, 0.5 * strawLength());
 
-  // creaete the surface (only if needed, links are still ok even if cache update)
-  if (not m_surface) {
-    elementSurface();
-  }
+  return std::make_unique<SurfaceCache>(transform.release(),
+                                        center.release(),
+                                        normal.release(),
+                                        elementBounds.release());
 }
 
-
 int TRT_BarrelElement::strawDirection() const
 {
   // Return +1 if the straw local axis is in the same direction as the z axis, -1 otherwise.
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_Conditions.cxx b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_Conditions.cxx
index 6408044b148e88081bb169320cca9eefd3d49aac..3dd188abb47207a34703bb7f41f033592f81863b 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_Conditions.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_Conditions.cxx
@@ -7,7 +7,7 @@
 namespace InDetDD {
 
 TRT_Conditions::TRT_Conditions()
-  : m_dxContainer(0),
+  : m_dxContainer(nullptr),
     m_mutex{}
 {}
 
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_DetectorManager.cxx b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_DetectorManager.cxx
index 8bca9e732b5f58138ef988ba95b254aa0da39a59..2a4a75309de23db69d965df4e718384e5b14e248 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_DetectorManager.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_DetectorManager.cxx
@@ -34,7 +34,7 @@ namespace InDetDD {
     TRT_DetectorManager::TRT_DetectorManager(StoreGateSvc * detStore)
         :InDetDetectorManager(detStore, "TRT"),
         m_numerology(new TRT_Numerology()),
-        m_idHelper(NULL),
+        m_idHelper(nullptr),
         m_ownsIdHelper(false),
         m_gasType(unknown),
         m_digvers(9999),
@@ -42,7 +42,7 @@ namespace InDetDD {
     {
 
     // If detstore no passed then get it from bootstrap.
-        if (m_detStore == 0) {
+        if (m_detStore == nullptr) {
             StatusCode sc = Gaudi::svcLocator()->service("DetectorStore", m_detStore);
             if (sc.isFailure()) msg(MSG::ERROR) << "Could not locate DetectorStore" << endmsg;
         }
@@ -54,7 +54,7 @@ namespace InDetDD {
             for (unsigned int mod=0;mod<NMODMAX;mod++) {
                 for (unsigned int phi=0; phi<NPHIMAX;phi++) {
                     for (unsigned int sLay=0;sLay<NSTRAWLAYMAXBR;sLay++) {
-                        m_barrelArray[ec][mod][phi][sLay]=NULL;
+                        m_barrelArray[ec][mod][phi][sLay]=nullptr;
                     }
                 }
             }
@@ -63,13 +63,13 @@ namespace InDetDD {
             for (unsigned int whe=0;whe<NWHEELMAX;whe++) {
                 for (unsigned int sLay=0;sLay<NSTRAWLAYMAXEC;sLay++) {
                     for(unsigned int phi=0;phi<NPHIMAX;phi++) {
-                        m_endcapArray[ec][whe][sLay][phi]=NULL;
+                        m_endcapArray[ec][whe][sLay][phi]=nullptr;
                     }
                 }
             }
         }
-        m_barrelXF[0]=m_barrelXF[1]=m_barrelXF[2]=NULL;
-        m_endcapXF[0]=m_endcapXF[1]=m_endcapXF[2]=NULL;
+        m_barrelXF[0]=m_barrelXF[1]=m_barrelXF[2]=nullptr;
+        m_endcapXF[0]=m_endcapXF[1]=m_endcapXF[2]=nullptr;
 
         m_conditions = std::make_unique<InDetDD::TRT_Conditions>();
     }
@@ -238,7 +238,7 @@ namespace InDetDD {
                                                                    unsigned int phiIndex,
                                                                    unsigned int strawLayerIndex) const {
         if ( positive >= 2 || moduleIndex >= NMODMAX
-            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXBR) return 0;
+            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXBR) return nullptr;
 
         return m_barrelArray[positive][moduleIndex][phiIndex][strawLayerIndex];
     }
@@ -250,7 +250,7 @@ namespace InDetDD {
         unsigned int phiIndex,
         unsigned int strawLayerIndex){
         if ( positive >= 2 || moduleIndex >= NMODMAX
-            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXBR) return 0;
+            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXBR) return nullptr;
 
         return m_barrelArray[positive][moduleIndex][phiIndex][strawLayerIndex];
     }
@@ -265,7 +265,7 @@ namespace InDetDD {
         unsigned int phiIndex) const {
 
         if ( positive >= 2 || wheelIndex >= NWHEELMAX
-            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXEC) return 0;
+            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXEC) return nullptr;
 
         return m_endcapArray[positive][wheelIndex][strawLayerIndex][phiIndex];
     }
@@ -277,7 +277,7 @@ namespace InDetDD {
         unsigned int phiIndex) {
 
         if ( positive >= 2 || wheelIndex >= NWHEELMAX
-            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXEC) return 0;
+            || phiIndex>=NPHIMAX || strawLayerIndex >= NSTRAWLAYMAXEC) return nullptr;
 
         return m_endcapArray[positive][wheelIndex][strawLayerIndex][phiIndex];
     }
@@ -298,12 +298,12 @@ namespace InDetDD {
         // Make sure it is a straw_layer id
         Identifier strawLayerId = m_idHelper->layer_id(id);
         IdentifierHash hashId = m_idHelper->straw_layer_hash(strawLayerId);
-        if (hashId>=m_elements.size()) return 0;
+        if (hashId>=m_elements.size()) return nullptr;
         return m_elements[hashId];
     }
 
     const TRT_BaseElement *TRT_DetectorManager::getElement(IdentifierHash id) const {
-        if (id>=m_elements.size()) return 0;
+        if (id>=m_elements.size()) return nullptr;
         return m_elements[id];
     }
 
@@ -395,11 +395,11 @@ namespace InDetDD {
         if (m_idHelper) {
             // Check if child and frame are actually full physical volumes.
             // if they are non zero.
-            const GeoVFullPhysVol * childFPV = 0;
+            const GeoVFullPhysVol * childFPV = nullptr;
             if (child) {
                 childFPV = dynamic_cast<const GeoVFullPhysVol *>(child);
             }
-            const GeoVFullPhysVol * frameFPV = 0;
+            const GeoVFullPhysVol * frameFPV = nullptr;
             if (frameVol) {
                 frameFPV = dynamic_cast<const GeoVFullPhysVol *>(frameVol);
             }
@@ -607,7 +607,7 @@ namespace InDetDD {
         if(msgLvl(MSG::DEBUG))
             msg(MSG::DEBUG) << "Processing TRT fine alignment." << endmsg;
 
-        const TRTCond::StrawDxContainer* container = 0;
+        const TRTCond::StrawDxContainer* container = nullptr;
         StatusCode sc = StatusCode::FAILURE;
         if (m_detStore->contains<TRTCond::StrawDxContainer>(key)) {
             sc = m_detStore->retrieve(container, key);
@@ -660,7 +660,7 @@ namespace InDetDD {
       msg(MSG::INFO) << "Processing new global alignment containers with key " << key << " in the " << frame << " frame at level " << level << endmsg;
 
     Identifier ident=Identifier();
-    const CondAttrListCollection* atrlistcol=0;
+    const CondAttrListCollection* atrlistcol=nullptr;
     if (StatusCode::SUCCESS==m_detStore->retrieve(atrlistcol,key)) {
       // loop over objects in collection
       for (CondAttrListCollection::const_iterator citr=atrlistcol->begin(); citr!=atrlistcol->end();++citr) {
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapDescriptor.cxx b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapDescriptor.cxx
index 313d680ffb82eea2ae0c2f5ad25772494fd4c740..414829b2bf7bc144507bf4025814c7b2c630d269 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapDescriptor.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapDescriptor.cxx
@@ -19,7 +19,7 @@ TRT_EndcapDescriptor::TRT_EndcapDescriptor():
   m_strawLength(0),
   m_innerRadius(0),
   m_innerTubeRadius(2*CLHEP::mm),  // FIXME: Hardwired for now!!
-  m_f(NULL),
+  m_f(nullptr),
   m_o(0),
   m_bounds()
 {
diff --git a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapElement.cxx b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapElement.cxx
index d583e97d4ede562a9734e50bb31d2c17903b3f55..7f13cc04c67238e674d0bfa3b9ed2db28265b229 100755
--- a/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapElement.cxx
+++ b/InnerDetector/InDetDetDescr/TRT_ReadoutGeometry/src/TRT_EndcapElement.cxx
@@ -242,6 +242,17 @@ TRT_EndcapElement::elementSurface() const
 
 void
 TRT_EndcapElement::createSurfaceCache() const
+{
+ if (!m_surfaceCache) {
+    m_surfaceCache.set(std::move(createSurfaceCacheHelper()));
+  }
+  // create the surface if needed
+  if (!m_surface) {
+    elementSurface();
+  }
+}
+std::unique_ptr<SurfaceCache>
+TRT_EndcapElement::createSurfaceCacheHelper() const
 {
   // Calculate the surface
   double phiCenter = m_descriptor->startPhi() +
@@ -266,27 +277,22 @@ TRT_EndcapElement::createSurfaceCache() const
   // location is inverted (due to 180 rotation around y axis). This is
   // taken care of by the extra 180 CLHEP::deg rotation around Y that we do
   // to get the z axis pointing in the correct direction.
-
-  Amg::Transform3D* transform = 0;
-  if (m_code.isPosZ())
-    transform =
-      new Amg::Transform3D((getMaterialGeom()->getAbsoluteTransform() *
-                            GeoTrf::RotateZ3D(phiCenter)));
-  else
-    transform = new Amg::Transform3D(
-      (getMaterialGeom()->getAbsoluteTransform() *
-       GeoTrf::RotateY3D(180 * CLHEP::deg) * GeoTrf::RotateZ3D(phiCenter)));
+  auto transform =
+    m_code.isPosZ()
+      ? std::make_unique<Amg::Transform3D>(
+          (getMaterialGeom()->getAbsoluteTransform() *
+           GeoTrf::RotateZ3D(phiCenter)))
+      : std::make_unique<Amg::Transform3D>(
+          (getMaterialGeom()->getAbsoluteTransform() *
+           GeoTrf::RotateY3D(180 * CLHEP::deg) * GeoTrf::RotateZ3D(phiCenter)));
 
   // create the igredients and the cache
-  Trk::DiscBounds* bounds = new Trk::DiscBounds(rMin, rMax, phiHalfWidth);
-  Amg::Vector3D* center = new Amg::Vector3D(transform->translation());
-  Amg::Vector3D* normal = new Amg::Vector3D(transform->rotation().col(2));
-  m_surfaceCache.set(
-    std::make_unique<SurfaceCache>(transform, center, normal, bounds));
-  // create the surface if needed
-  if (not m_surface){
-    elementSurface();
-  }
+  auto bounds = std::make_unique<Trk::DiscBounds>(rMin, rMax, phiHalfWidth);
+  auto center = std::make_unique<Amg::Vector3D>(transform->translation());
+  auto normal = std::make_unique<Amg::Vector3D>(transform->rotation().col(2));
+
+  return std::make_unique<SurfaceCache>(
+    transform.release(), center.release(), normal.release(), bounds.release());
 }
 
 int
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/CMakeLists.txt b/InnerDetector/InDetExample/InDetTrigRecExample/CMakeLists.txt
index b0e6f63e30b9741dddf4ca2c5ed83cde05e25d9a..23611ae2aa85f42346b0da38d63cfacc3eea431e 100644
--- a/InnerDetector/InDetExample/InDetTrigRecExample/CMakeLists.txt
+++ b/InnerDetector/InDetExample/InDetTrigRecExample/CMakeLists.txt
@@ -6,5 +6,3 @@ atlas_subdir( InDetTrigRecExample )
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
 atlas_install_joboptions( share/*.py )
-atlas_install_scripts( share/RTT_NoBField_transform.sh )
-
diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/share/RTT_NoBField_transform.sh b/InnerDetector/InDetExample/InDetTrigRecExample/share/RTT_NoBField_transform.sh
deleted file mode 100755
index bf9ea6862393b11657ca59057f5f96b627d7c71f..0000000000000000000000000000000000000000
--- a/InnerDetector/InDetExample/InDetTrigRecExample/share/RTT_NoBField_transform.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-export STAGE_SVCCLASS=atlasgroupdisk
-Reco_trf.py \
-    inputBSFile_r2r=rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0001.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0002.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0003.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0004.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0005.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0006.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0007.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0008.data,rfio:/castor/cern.ch/grid/atlas/DAQ/2009/00121513/physics_IDCosmic/data09_cos.00121513.physics_IDCosmic.daq.RAW._lb0000._SFO-1._0009.data \
-    outputBSFile='raw.data._0001.data'     \
-    outputHIST_TRIGEXPERTFile=trig-expert.root     \
-    maxEvents=-1     \
-    trigStream=IDCosmic \
-    autoConfiguration=FieldAndGeo,BeamType,ConditionsTag   \
-    preInclude=RecExCommission/RecExCommissionRepro.py,RecExCommission/MinimalCommissioningSetup.py,RecJobTransforms/TrigConfigForCosmic08RerunHLTRepro.py\
-    preExec='HLTMonDoOfflineTauTTP=False; doMonitoring=False'   \
-    outputESDFile=data09_cosmag.00121513.ESD.pool.root          \
-    outputCBNT=myCBNT.ntuple.root     \
-    --ignoreunknown
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonDQAMonitoring_CommRunsTier0.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonDQAMonitoring_CommRunsTier0.py
deleted file mode 100644
index da8d4924900f3923a78754eb9b834fb5c984f8ac..0000000000000000000000000000000000000000
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/share/MuonDQAMonitoring_CommRunsTier0.py
+++ /dev/null
@@ -1,525 +0,0 @@
-#======================================================================
-__doc__ = """This is an example steering jobOption file for RecExCommission run on MuonSystem in Release 14.X.Y.
-It sets default values for muonRecFlags, recFlags, globalflags, DetFlags."""
-#======================================================================
-# Example JobOPt to monitor Muon Technical(Px) and Commissioning(Mx) Runs
-# Last modified Nectarios.Chr. Benekos (UIUC) <Nectarios.Benekos@cern.ch>
-#======================================================================
-# this version is for the setup we will use for M6 Feb run reprocessing!
-#======================================================================
-#####
-### athena.py -c "CollData=True" -b ../share/MuonDQAMonitoring_CommRunsTier0.py > log_collisions | tee
-#####
-include( "RecExCommission/RecExCommissionFlags_jobOptions.py" )
-#======================================================================
-import os
-from AthenaCommon.JobProperties import jobproperties
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-from RecExConfig.RecFlags import jobproperties, rec
-from AthenaCommon.BFieldFlags import jobproperties
-from AthenaCommon.BeamFlags import jobproperties
-from AthenaCommon.AlgSequence import AlgSequence
-topSequence = AlgSequence()
-#======================================================================
-from AthenaCommon.DetFlags import DetFlags
-DetFlags.ID_setOff()
-DetFlags.detdescr.ID_setOn()
-DetFlags.Calo_setOff()
-DetFlags.detdescr.Calo_setOn()
-DetFlags.Muon_setOn()
-# --- printout
-DetFlags.Print()
-#======================================================================
-from RecExConfig.RecFlags import rec as recFlags 
-recFlags.Commissioning=True
-recFlags.oldRecExCommissionConfig = False
-recFlags.oldFlagTopSteering = False
-recFlags.ScopingLevel = 4 
-#======================================================================
-# choose what detector to turn on:
-recFlags.doInDet = False
-recFlags.doLArg  = False
-recFlags.doTile  = False
-#======================================================================
-# Only Muons
-recFlags.doMuon                 = True 
-recFlags.doMuonCombined         = False
-recFlags.doHist                 = True
-#======================================================================
-recFlags.doInDet                = False
-recFlags.doCalo                 = False
-recFlags.doLArg                 = False
-recFlags.doTile                 = False
-recFlags.readESD                = False
-recFlags.doESD                  = True
-recFlags.doWriteESD             = True
-recFlags.doCBNT                 = False
-recFlags.doWriteAOD             = False
-recFlags.doWriteTAG             = False
-recFlags.doJiveXML              = False
-recFlags.doAOD                  = False
-recFlags.doAODall               = False
-recFlags.doTrigger              = False
-recFlags.doPerfMon              = False
-recFlags.doHeavyIon             = False
-recFlags.doEgamma               = False
-recFlags.doTau                  = False
-recFlags.doHeavyIon             = False
-recFlags.doJetMissingETTag      = False
-recFlags.doPersint              = False
-recFlags.doMonitoring           = True
-#======================================================================
-#If True monitor software performance, see https://twiki.cern.ch/twiki/bin/view/Atlas/PerfMonComps
-recFlags.doPerfMon=True 
-recFlags.doDetailedPerfMon=True
-rec.lock_JobProperties()
-#======================================================================
-# Set default recAlgsFlags
-#======================================================================
-from RecExConfig.RecAlgsFlags import recAlgs as recAlgsFlags
-recAlgsFlags.doMuonIDStandAlone = False # extrapolate Moore tracks to the IP
-recAlgsFlags.doMuonIDCombined   = False # combined reconstruction with MuIDCombined
-recAlgsFlags.doStaco            = False # combined reconstruction with Staco
-recAlgsFlags.doMuTag            = False # muon identification with MuTag (requires Muonboy and Staco)
-recAlgsFlags.doMuGirl           = False # muon identification with MuGirl
-recAlgsFlags.doTrigger          = False
-recAlgsFlags.doTrackRecordFilter = True # filter truth muons getting into the spectrometer
-recAlgsFlags.doTileMuID         = False
-recAlgsFlags.doCaloTrkMuId      = False
-recAlgsFlags.doMissingET        = False
-recAlgsFlags.doObjMissingET     = False
-recAlgsFlags.doMissingETSig     = False
-recAlgsFlags.doEFlow            = False
-recAlgsFlags.doEFlowJet         = False
-recAlgsFlags.doAtlfast          = False
-#======================================================================
-# Set default globalflags
-#======================================================================
-from AthenaCommon.GlobalFlags import globalflags
-globalflags.DetGeo      = 'commis'
-globalflags.DataSource.set_Value_and_Lock('data')
-globalflags.InputFormat = 'bytestream' 
-globalflags.Luminosity  = 'zero'
-#==========  Switch to the desired algorithms =========================
-ATLASCosmicFlags.doLVL1Calo=False
-ATLASCosmicFlags.doCTPMon = False
-ATLASCosmicFlags.doHLT  = False
-ATLASCosmicFlags.doCombinedFit = False
-ATLASCosmicFlags.doDQMonitoring = False
-## hack to turn off hlt met monitoring
-HLTMonDoMET = False
-ATLASCosmicFlags.UseDCS = False
-ATLASCosmicFlags.doFilteredESD = False  
-ATLASCosmicFlags.OnlineJiveXML = False
-ATLASCosmicFlags.AtlantisGeometry = False
-ATLASCosmicFlags.CaloDetailedJiveXML = False 
-ATLASCosmicFlags.doPersint = False
-#======================================================================
-# Setup Internal flags for the Muon DQA Monitoring (defaults values)
-from MuonDQAMonFlags.MuonDQAFlags import MuonDQAFlags as MuonDQAFlags
-from AthenaCommon import CfgMgr
-from AthenaMonitoring.DQMonFlags import DQMonFlags
-DQMonFlags.doGlobalMon = False
-DQMonFlags.doLVL1CaloMon = False
-DQMonFlags.doCTPMon = False
-DQMonFlags.doHLTMon = False
-DQMonFlags.doPixelMon = False
-DQMonFlags.doSCTMon = False
-DQMonFlags.doTRTMon = False
-DQMonFlags.doInDetGlobalMon = False
-DQMonFlags.doInDetAlignMon = False
-DQMonFlags.doInDetPerfMon = False
-DQMonFlags.doTileMon = False
-DQMonFlags.doLArMon = False
-DQMonFlags.doEgammaMon = False
-DQMonFlags.doMissingEtMon = False
-DQMonFlags.doTauMon = False
-DQMonFlags.doJetMon = False
-DQMonFlags.doJetTagMon = False
-DQMonFlags.doMuonCombinedMon = False
-#-----------------------------------------------------------------
-DQMonFlags.doMuonRawMon = True
-DQMonFlags.doMuonTrackMon = True
-DQMonFlags.doMuonSegmentMon = True
-DQMonFlags.doMuonAlignMon = True
-DQMonFlags.doMuonPhysicsMon = False
-
-# --- Callgrind Tool
-MuonDQAFlags.doCallgrind = False #False 
-
-# --- CPU and txt files
-MuonDQAFlags.doCpuMuonMon = True
-MuonDQAFlags.doMuonDQAPerfMonitoring = True
-#----------------------------------------------------------------- 
-##if you want to run Hephaestus Tool
-### https://twiki.cern.ch/twiki/bin/view/Atlas/UsingHephaestus
-MuonDQAFlags.doMuonDQAHephTool = False
-#----------------------------------------------------------------- 
-MuonDQAFlags.doAuditor = True
-MuonDQAFlags.doFinalCPU = False  
-MuonDQAFlags.doDumpFile = False
-MuonDQAFlags.doSimpleFile = True
-
-# --- Muon Monitoring options
-MuonDQAFlags.doMuonMonitoring = True
-ATLASCosmicFlags.doMuonMon = True
-
-# --- Muon EventInfo Monitoring option
-MuonDQAFlags.doMuonEvtMon = True
-ATLASCosmicFlags.doMuonEvtMon = True
-
-# --- Muon Hit Monitoring options
-ATLASCosmicFlags.doMuonHitMon = True
-# --- for each subdetector
-ATLASCosmicFlags.doMDTMon = True
-ATLASCosmicFlags.doRPCMon = True
-ATLASCosmicFlags.doRPCL1Mon = True
-ATLASCosmicFlags.doMDTRPCMon = True
-ATLASCosmicFlags.doTGCMon = True
-ATLASCosmicFlags.doTGCL1Mon = True
-ATLASCosmicFlags.doMDTTGCL1Mon = True   
-# --- Temporary for M8---------------
-ATLASCosmicFlags.doCSCMon = False
-MuonDQAFlags.doCSCMon = False
-# --- Temporary for M8---------------
-
-## --- Muon Segment Monitoring options
-ATLASCosmicFlags.doMuonSegmMon = True
-#
-## --- MuonTrk Monitoring options
-ATLASCosmicFlags.doMuonTrackMon = True
-## --- MuonTrk Trigger Aware Monitoring options
-MuonDQAFlags.MuonTrkMonDoTrigger = False
-#
-## --- Muon Trk Alignement Monitoring
-MuonDQAFlags.doMuonTrkAlignMon = True
-ATLASCosmicFlags.doMuonTrkAlignMon = True
-#
-## --- MuonTrk Monitoring options
-ATLASCosmicFlags.doMuonPhysMon = False
-#======================================================================
-
-if not 'Field' in dir():
-    Field = False
-if not 'noField' in dir():
-    noField = False
-if not 'BeamGas' in dir():
-    BeamGas = False
-if not 'BeamHalo' in dir():
-    BeamHalo = False
-if not 'SimBeamGas' in dir():
-    SimBeamGas = False
-if not 'SimBeamHalo' in dir():
-    SimBeamHalo = False
-if not 'CollData' in dir():
-    CollData = False   
-#======================================================================
-# Muon Monitoring Hist output
-if not 'MuonSystem' in dir():
-    MuonSystem = "ALL"        
-#======================================================================    
-#if BeamHalo or BeamGas or SimBeamHalo or SimBeamGas:
-#    jobproperties.Beam.beamType.set_Value_and_Lock("singlebeam")
-#else:
-#    jobproperties.Beam.beamType.set_Value_and_Lock("cosmics")
-#
-#if SimBeamHalo or SimBeamGas:
-#    globalflags.DataSource = 'geant4'
-#    globalflags.InputFormat = 'pool'
-#======================================================================
-#-----------------------------------------------------------------
-# Setup Internal flags for the Muon Spectrometer (defaults values)
-#-----------------------------------------------------------------
-from MuonRecExample.MuonRecFlags import muonRecFlags
-muonRecFlags.doMoore = True
-muonRecFlags.doMuonboy = True
-muonRecFlags.doCSCs=False
-#======================================================================
-# Set properly beam type, DataSource, InputFormat, Detector Description, Conditions Tag
-if globalflags.DataSource() == 'data':
-    recFlags.doTruth = False
-    jobproperties.Beam.beamType.set_Value_and_Lock("singlebeam")
-    globalflags.InputFormat.set_Value_and_Lock('bytestream')
-    globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-04-00-00')
-    globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-ES1C-000-00')
-else :
-    globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-02-01-00')
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIM-00-00-00')
-
-if globalflags.DataSource() == 'data' and globalflags.InputFormat == 'bytestream':
-    if muonRecFlags.doCSCs():
-        athenaCommonFlags.BSRDOInput.set_Value_and_Lock(['/castor/cern.ch/grid/atlas/DAQ/2008/91897/physics_TGCwBeam/daq.ATLAS.0091897.physics.TGCwBeam.LB0001.SFO-1._0001.data'])
-    else:
-        athenaCommonFlags.BSRDOInput.set_Value_and_Lock(['/castor/cern.ch/grid/atlas/DAQ/2008/87863/physics_BPTX/daq.NoTag.0087863.physics.BPTX.LB0000.SFO-1._0001.data'])
-
-if SimBeamHalo:
-    globalflags.DetDescrVersion ='ATLAS-CSC-02-02-00'
-    athenaCommonFlags.PoolRDOInput = ["rfio:/castor/cern.ch/user/d/dellacqu/beamHalo_digits.pool.root"]
-    ATLASCosmicFlags.IOVDbSvcGlobalTagSim = 'OFLCOND-CSC-00-01-07'
-    ATLASCosmicFlags.IOVDbSvcGlobalTagSimOverride = True
-if SimBeamGas:
-    globalflags.DetDescrVersion ='ATLAS-CSC-01-02-00'
-    athenaCommonFlags.PoolRDOInput = ["/afs/cern.ch/user/g/gencomm/w0/RTT_INPUT_DATA/BeamGas/hijing.O.digit._00430.pool.root"]
-    jobproperties.BField.solenoidOn=True
-    jobproperties.BField.barrelToroidOn=True
-    jobproperties.BField.endcapToroidOn=True        
-if BeamGas:
-    ATLASCosmicFlags.CosmicSetup = "M8"
-    globalflags.DetDescrVersion = 'ATLAS-Comm-09-00-00'
-    ATLASCosmicFlags.IOVDbSvcGlobalTagData = 'COMCOND-006-01'
-    athenaCommonFlags.BSRDOInput = [
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-1.0001.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-1.0005.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-1.0007.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-1.0017.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-1.0022.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-1.0023.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-2.0017.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-2.0018.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-2.0019.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-3.0004.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-3.0007.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-3.0008.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-4.0008.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-4.0009.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-5.0005.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-5.0006.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-5.0007.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-5.0010.data",
-        "/castor/cern.ch/user/m/muoncomm/SingleBeam/run87764/run87764.MBTS_BCM_LUCID.LB0000.SFO-5.0021.data"
-        ]    
-    jobproperties.BField.solenoidOn=False
-    jobproperties.BField.barrelToroidOn=True
-    jobproperties.BField.endcapToroidOn=True
-
-MuonDQAFlags.doM8=True
-if MuonDQAFlags.doM8:
-    ATLASCosmicFlags.CosmicSetup = "ATLAS"
-    ATLASCosmicFlags.doMasking=False
-    include ("RecExCommission/GetInputFiles.py")
-    if CollData:
-        if not 'RunNumberList' in dir():
-            RunNumberList = [ 87863 ] 
-        if not 'FilePrefix' in dir():
-            FilePrefix = "daq.NoTag" 
-        if not 'Partition' in dir():
-            Partition      = "BPTX"
-        if not 'Trigger' in dir():
-            Trigger = "*.physics."+Partition
-        if not 'InputDir' in dir():
-            InputDir = "/castor/cern.ch/grid/atlas/DAQ/2008/"+str(RunNumberList[0])+"/physics_"+Partition	
-        BSRDOInput = []
-        for RunNumber in RunNumberList:
-            InputFiles = GetInputFilesFromTokens(InputDir,RunNumber,FilePrefix,Trigger)
-        print "Input files:"
-        athenaCommonFlags.BSRDOInput.set_Value_and_Lock(InputFiles)
-        print athenaCommonFlags.BSRDOInput
-        ATLASCosmicFlags.NumFile = []
-        # Detector description #jamie, use version with field (even though solenoid is off)
-        globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-04-00-00')
-        globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-ES1C-000-00')
-        # for running over data with field on need this to be setto true
-        from AthenaCommon.BFieldFlags import jobproperties
-        jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-        jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-        jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-    if Field:
-        globalflags.DetDescrVersion ='ATLAS-Comm-09-00-00'
-        ATLASCosmicFlags.IOVDbSvcGlobalTagData = 'COMCOND-006-00'  #Database
-        ATLASCosmicFlags.Magnet = False
-        ATLASCosmicFlags.MagnetToroid = True
-        jobproperties.BField.solenoidOn = False
-        jobproperties.BField.barrelToroidOn = True
-        jobproperties.BField.endcapToroidOn = True
-        if not 'RunNumberList' in dir():
-            RunNumberList = [ 82075 ] # for M8 ###====LIST of GOOD M7 runs====> /afs/cern.ch/atlas/project/tzero/prod1/goodruns and https://twiki.cern.ch/twiki/bin/view/Atlas/M7MuonRunList
-        if not 'FilePrefix' in dir():
-            FilePrefix = "daq.ATLAS" # for M8
-        if not 'Partition' in dir():
-            Partition      = "HLT_Cosmics_MU3"   # for M7,M8 | physics.HLT_Cosmics_MU3 | physics.HLT_Cosmics
-        if not 'Trigger' in dir():
-            Trigger = "*.physics."+Partition
-        if not 'InputDir' in dir():
-            InputDir = "/castor/cern.ch/grid/atlas/DAQ/2008/"+str(RunNumberList[0])+"/physics_"+Partition # for M8	
-        BSRDOInput = []
-        for RunNumber in RunNumberList:
-            InputFiles = GetInputFilesFromTokens(InputDir,RunNumber,FilePrefix,Trigger)
-        print "Input files:"
-        athenaCommonFlags.BSRDOInput=InputFiles
-        print athenaCommonFlags.BSRDOInput
-        ATLASCosmicFlags.NumFile = []
-    if noField:
-        globalflags.DetDescrVersion = 'ATLAS-CommNF-09-00-00'      # Detector description
-        ATLASCosmicFlags.IOVDbSvcGlobalTagData = 'COMCOND-006-00'  #Database
-        jobproperties.BField.solenoidOn = False
-        jobproperties.BField.barrelToroidOn = False
-        jobproperties.BField.endcapToroidOn = False
-        if not 'RunNumberList' in dir():
-            RunNumberList = [ 77168 ] # for M8 ###====LIST of GOOD M7 runs====> /afs/cern.ch/atlas/project/tzero/prod1/goodruns and https://twiki.cern.ch/twiki/bin/view/Atlas/M7MuonRunList
-        if not 'FilePrefix' in dir():
-            FilePrefix = "daq.ATLAS" # for M8
-        if not 'Partition' in dir():
-            Partition      = "HLT_Cosmics_MU3"   # for M7,M8 | physics.HLT_Cosmics_MU3 | physics.HLT_Cosmics
-        if not 'Trigger' in dir():
-            Trigger = "*.physics."+Partition
-        if not 'InputDir' in dir():
-            InputDir = "/castor/cern.ch/grid/atlas/DAQ/2008/"+str(RunNumberList[0])+"/physics_"+Partition # for M8	
-        BSRDOInput = []
-        for RunNumber in RunNumberList:
-            InputFiles = GetInputFilesFromTokens(InputDir,RunNumber,FilePrefix,Trigger)
-        print "Input files:"
-        athenaCommonFlags.BSRDOInput=InputFiles
-        print athenaCommonFlags.BSRDOInput
-        ATLASCosmicFlags.NumFile = []
-
-###############################################################
-#
-#  Configuration jobOptions file
-#
-###############################################################  
-#=======================Output Files===================================
-if Field or noField or CollData:
-    DQMonFlags.histogramFile = MuonSystem+"MuonMonitoring_"+str(ATLASCosmicFlags.CosmicSetup)+"Setup_"+str(RunNumber)+".root"
-    athenaCommonFlags.PoolESDOutput = MuonSystem+"MuonMonitoringESD_"+str(ATLASCosmicFlags.CosmicSetup)+"_"+str(RunNumber)+".pool.root"
-    ATLASCosmicFlags.FilteredESDOutputFile = MuonSystem+"MuonMonitoringESD_Filtered"+str(ATLASCosmicFlags.CosmicSetup)+"_"+str(RunNumber)+".pool.root"
-    
-if BeamHalo or BeamGas:
-    recFlags.RootHistoOutput = MuonSystem+"MuonMonitoring_BeamHalo.root"
-    athenaCommonFlags.PoolESDOutput = MuonSystem+"MuonMonitoringESD_BeamHalo.pool.root"
-    ATLASCosmicFlags.FilteredESDOutputFile = MuonSystem+"MuonMonitoringESD_Filtered_BeamHalo.pool.root"
-
-if SimBeamHalo or SimBeamGas:
-    recFlags.RootHistoOutput = MuonSystem+"MuonMonitoring_SimBeamHalo.root"
-    athenaCommonFlags.PoolESDOutput = MuonSystem+"MuonMonitoringESD_SimBeamHalo.pool.root"
-    ATLASCosmicFlags.FilteredESDOutputFile = MuonSystem+"MuonMonitoringESD_Filtered_SimBeamHalo.pool.root"
- 
-#======================================================================
-#Steering flags
-#======================================================================
-athenaCommonFlags.EvtMax.set_Value_and_Lock(10)
-athenaCommonFlags.SkipEvents.set_Value_and_Lock(0)
-#======================================================================
-if 'doAuditors' in dir():
-    from RecExConfig.RecFlags  import jobproperties
-    jobproperties.Rec.doNameAuditor.set_Value(True)
-#====================================================================== 
-#=BEGINNN=====================================================================
-# the main jobOpt
-if BeamGas:
-    include( "RecExCommission/RecExCommission_SingleBeamtopOptions.py" )
-else:
-    include( "RecExCommission/RecExCommission.py" )
-    include ("RecExCommon/RecExCommon_topOptions.py")
-#==ENDDDDD====================================================================
- 
-####Change Collections####################
-#if MuonDQAFlags.doMuonTrackMon:
-#    ToolSvc += CfgMgr.MuonMonTrkSummary(MuonTrackCollections=["MooreTrackParticles" ,"MuonboyTrackParticles"])
-#    ToolSvc += CfgMgr.MuonTrackValidation(MuonTrackCollections=["MooreTrackParticles" ,"MuonboyTrackParticles"])
-#    ToolSvc += CfgMgr.MuonAlignMonGenericTracks(MuonTrackCollections=["MooreTrackParticles" ,"MuonboyTrackParticles"])     
-
-###############################################################
-#
-#  Configuration jobOptions file
-#
-###############################################################
-#--------------------------------------------------------------
-# Performace monitoring (CPU and Memory)
-#--------------------------------------------------------------
-if MuonDQAFlags.doCpuMuonMon:
-    include("MuonDQAMonitoring/MuonDQAMonitoring_CpuPerfMon.py")
-    jobproperties.PerfMonFlags.OutputFile = MuonSystem+"muondqa.perfmon.pmon.gz"
-    
-#if recFlags.doPerfMon:
-#    from PerfMonComps.PerfMonFlags import jobproperties
-#    jobproperties.PerfMonFlags.doPerEvtLeakCheck = True
-
-if MuonDQAFlags.doMuonDQAPerfMonitoring and MuonDQAFlags.doMuonDQAHephTool:
-    from PerfMonComps.PerfMonFlags import jobproperties
-    jobproperties.PerfMonFlags.doPerEvtLeakCheck = True
-#--------------------------------------------------------------
-# Valgrind- Callgrind
-#--------------------------------------------------------------
-if MuonDQAFlags.doCallgrind:
-     from Valkyrie.ValkyrieConf import ValgrindSvc
-     valgrindSvc = ValgrindSvc( OutputLevel = VERBOSE )
-     if ATLASCosmicFlags.doMuonHitMon:
-         valgrindSvc.ProfiledAlgs += MuonDQAFlags.CallgrindHitAlgs
-         valgrindSvc.IgnoreFirstNEvents = MuonDQAFlags.CallgrindSkip      # to start instrumentation after the second event only
-     if ATLASCosmicFlags.doMuonTrackMon:
-         valgrindSvc.ProfiledAlgs += MuonDQAFlags.CallgrindTrkAlgs
-         valgrindSvc.IgnoreFirstNEvents = MuonDQAFlags.CallgrindSkip      # to start instrumentation after the second event only
-     if ATLASCosmicFlags.doMuonSegmMon:
-         valgrindSvc.ProfiledAlgs += MuonDQAFlags.CallgrindSegmAlgs
-         valgrindSvc.IgnoreFirstNEvents = MuonDQAFlags.CallgrindSkip      # to start instrumentation after the second event only          
-     # Add service and turn on auditing
-     svcMgr += valgrindSvc
-     theApp.CreateSvc += [svcMgr.ValgrindSvc.getFullJobOptName()]
-     theApp.AuditAlgorithms = True
-     theApp.AuditTools      = True
-     theApp.AuditServices   = True
-# -------------------------------------------------------------
-#Output level
-# -------------------------------------------------------------
-# --------------For RawData Monitoring----------------------------
-if MuonDQAFlags.doMuonHitMon:
-    #ToolSvc += CfgMgr.MDTRawDataBSValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MDTRawDataESDValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.RPCRawDataValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MDTvsRPCRawDataValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.RPCLV1RawDataValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.TGCRawDataESDValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.TGCLV1RawDataESDValAlg(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MDTvsTGCRawDataESDValAlg(OutputLevel = INFO)
-    if MuonDQAFlags.doCSCMon:
-        #ToolSvc += CfgMgr.CSCPrdValAlg(OutputLevel = INFO)
-        #ToolSvc += CfgMgr.CSCRdoValAlg(OutputLevel = INFO)
-        #ToolSvc += CfgMgr.CSCClusterTree(OutputLevel = INFO)
-        #ToolSvc += CfgMgr.CSCClusterValAlg(OutputLevel = INFO)
-# --------------For MuonSegment Monitoring------------------------    
-if MuonDQAFlags.doMuonSegmMon:
-    #ToolSvc += CfgMgr.MuonSegmValidation(OutputLevel = INFO)
-# --------------For MuonTrk Alignment Monitoring------------------------    
-if MuonDQAFlags.doMuonTrkAlignMon:
-    #ToolSvc += CfgMgr.MuonAlignValidation(OutputLevel = INFO)
-# --------------For MuonTrk Monitoring----------------------------
-# --------------For No Trigger MuonTrk Monitoring-----------------
-if MuonDQAFlags.doMuonTrackMon and not MuonDQAFlags.MuonTrkMonDoTrigger:
-    #ToolSvc += CfgMgr.MuonSelectedTracksMon(OutputLevel = INFO) 
-    #ToolSvc += CfgMgr.MuonGenericTracksMon(OutputLevel = INFO) 
-# --------------For TriggerAware MuonTrk Monitoring---------------
-if MuonDQAFlags.doMuonTrackMon and MuonDQAFlags.MuonTrkMonDoTrigger:
-    ### UseTriggerVector =True
-    #ToolSvc += CfgMgr.MuonSelectedTracksMon_Trig(OutputLevel = INFO) 
-    #ToolSvc += CfgMgr.MuonGenericTracksMon_Trig(OutputLevel = INFO)     
-    ### UseTriggerVector = False
-    #ToolSvc += CfgMgr.MuonSelectedTracksMon_trigmu10(OutputLevel = INFO) 
-    #ToolSvc += CfgMgr.MuonSelectedTracksMon_trigmu20(OutputLevel = INFO)         
-    #ToolSvc += CfgMgr.MuonSelectedTracksMon_trigmu40(OutputLevel = INFO) 
-    #ToolSvc += CfgMgr.MuonSelectedTracksMon_trig2mu10(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MuonGenericTracksMon_trigmu10(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MuonGenericTracksMon_trigmu20(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MuonGenericTracksMon_trigmu40(OutputLevel = INFO)
-    #ToolSvc += CfgMgr.MuonGenericTracksMon_trig2mu10(OutputLevel = INFO)     
-# --------------For MuonEventInfo Monitoring----------------------------
-if MuonDQAFlags.doMuonEvtMon:
-    #ToolSvc += CfgMgr.MuonDQA__MuonEventInfoMonTool(OutputLevel = INFO)  
-#--------------------------------------------------------------------------- 
-Service( "THistSvc" ).OutputLevel = WARNING
-#--------------------------------------------------------------------------- 
-# THIS IS TEMPORY HACK TO GET RID OF MUON ERRORS BEING PRINTED FOR EVERY EVENT
-# NEED A REAL FIX 
-#--------------------------------------------------------------------------- 
-Algorithm("TgcRdoToTgcPrepData").OutputLevel = ERROR
-#--------------------------------------------------------------------------- 
-print "List all DLL"
-print theApp.Dlls
-print "List all ExtSvc"
-print theApp.ExtSvc
-print "List of all top algorithms"
-print theApp.TopAlg
-#--------------------------------------------------------------------------- 
-print topSequence
-print ServiceMgr
-print #ToolSvc
-#======================================================================
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py
index 0d512dd82aeb147ec97c22b7364f8d195ddaef28..8ea40c07a46dff46f25abc836fa06ea06c9cf70e 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/python/MCTruthCommon.py
@@ -250,9 +250,9 @@ def schedulePostJetMCTruthAugmentations(kernel=None, decorationDressing=None):
         from DerivationFrameworkMCTruth.GenFilterToolSetup import DFCommonTruthGenFilter
 
         # schedule the special truth building tools and add them to a common augmentation; note taus are handled separately below
-        #from DerivationFrameworkMCTruth.TruthDerivationTools import DFCommonTruthDressedWZQGLabelTool
-        augmentationToolsList += [ DFCommonTruthGenFilter ]
-                                   #DFCommonTruthDressedWZQGLabelTool] - missing decoration from FTAG
+        from DerivationFrameworkMCTruth.TruthDerivationTools import DFCommonTruthDressedWZQGLabelTool
+        augmentationToolsList += [ DFCommonTruthGenFilter ,
+                                   DFCommonTruthDressedWZQGLabelTool]
     else:
         augmentationToolsList = []
     # SUSY signal decorations
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYSLITE.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYSLITE.py
index 61f35465482fd6dd5beafdd24df3ff8112121d60..9f6be657cf9b6ee76ea5266493c7aa5d1344df94 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYSLITE.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/share/PHYSLITE.py
@@ -9,13 +9,13 @@ nanolog = Logging.logging.getLogger('PHYSLITE')
 
 from DerivationFrameworkCore.DerivationFrameworkMaster import *
 from DerivationFrameworkInDet.InDetCommon import *
-from DerivationFrameworkJetEtMiss.JetCommon import *
-from DerivationFrameworkJetEtMiss.ExtendedJetCommon import *
-from DerivationFrameworkJetEtMiss.METCommon import *
 from DerivationFrameworkEGamma.EGammaCommon import *
 from DerivationFrameworkEGamma.ElectronsCPDetailedContent import *
 from DerivationFrameworkMuons.MuonsCommon import *
 from DerivationFrameworkCore.WeightMetadata import *
+from DerivationFrameworkJetEtMiss.JetCommon import *
+from DerivationFrameworkJetEtMiss.ExtendedJetCommon import *
+from DerivationFrameworkJetEtMiss.METCommon import *
 from DerivationFrameworkFlavourTag.FlavourTagCommon import FlavorTagInit
 from DerivationFrameworkFlavourTag.HbbCommon import *
 from TriggerMenu.api.TriggerAPI import TriggerAPI
diff --git a/Reconstruction/RecExample/RecPerfTests/CMakeLists.txt b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/CMakeLists.txt
similarity index 61%
rename from Reconstruction/RecExample/RecPerfTests/CMakeLists.txt
rename to PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/CMakeLists.txt
index 98edc112e2526f762d9932d75f50bab51ca2b520..851d59dfefc9caa8cf4d6861ad7bc67bed277aa1 100644
--- a/Reconstruction/RecExample/RecPerfTests/CMakeLists.txt
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/CMakeLists.txt
@@ -1,9 +1,9 @@
 ################################################################################
-# Package: RecPerfTests
+# Package: DerivationFrameworkPhysicsValidation
 ################################################################################
 
 # Declare the package name:
-atlas_subdir( RecPerfTests )
+atlas_subdir( DerivationFrameworkPhysicsValidation  )
 
 # Install files from the package:
-atlas_install_runtime( test/RecPerfTests_TestConfiguration.xml )
+atlas_install_joboptions( share/*.py )
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/share/PHYSVAL.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/share/PHYSVAL.py
new file mode 100644
index 0000000000000000000000000000000000000000..2803bc65501543896bd533abd4d76c0e5c8c1b50
--- /dev/null
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhysicsValidation/share/PHYSVAL.py
@@ -0,0 +1,300 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+#====================================================================
+# DAOD_PHYSVAL.py
+# This defines DAOD_PHYSVAL, for running physics validation of
+# DAOD-level containers
+# It uses the same high-level content as DAOD_PHYS but also includes
+# It requires the reductionConf flag PHYS in Reco_tf.py   
+#====================================================================
+
+from DerivationFrameworkCore.DerivationFrameworkMaster import buildFileName, DerivationFrameworkIsMonteCarlo, DerivationFrameworkJob
+from DerivationFrameworkInDet import InDetCommon
+from DerivationFrameworkEGamma import EGammaCommon
+from DerivationFrameworkEGamma import ElectronsCPDetailedContent
+from DerivationFrameworkMuons import MuonsCommon
+from DerivationFrameworkJetEtMiss.JetCommon import OutputJets
+from DerivationFrameworkJetEtMiss.ExtendedJetCommon import replaceAODReducedJets, addDefaultTrimmedJets, addJetTruthLabel, addQGTaggerTool
+from DerivationFrameworkJetEtMiss import METCommon
+from TriggerMenu.api.TriggerAPI import TriggerAPI
+from TriggerMenu.api.TriggerEnums import TriggerPeriod, TriggerType
+from DerivationFrameworkTrigger.TriggerMatchingHelper import TriggerMatchingHelper
+
+#====================================================================
+# SET UP STREAM   
+#====================================================================
+streamName = derivationFlags.WriteDAOD_PHYSVALStream.StreamName
+fileName   = buildFileName( derivationFlags.WriteDAOD_PHYSVALStream )
+PHYSVALStream = MSMgr.NewPoolRootStream( streamName, fileName )
+PHYSVALStream.AcceptAlgs(["PHYSVALKernel"])
+
+### Augmentation tools lists
+AugmentationTools   = []
+
+# Special sequence 
+SeqPHYSVAL = CfgMgr.AthSequencer("SeqPHYSVAL")
+
+#====================================================================
+# MONTE CARLO TRUTH
+#====================================================================
+if (DerivationFrameworkIsMonteCarlo):
+   from DerivationFrameworkMCTruth.MCTruthCommon import addStandardTruthContents,addMiniTruthCollectionLinks,addHFAndDownstreamParticles,addPVCollection
+   #import DerivationFrameworkHiggs.TruthCategories
+   # Add charm quark collection
+   from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__TruthCollectionMaker
+   PHYSVALTruthCharmTool = DerivationFramework__TruthCollectionMaker(name                    = "PHYSVALTruthCharmTool",
+                                                                  NewCollectionName       = "TruthCharm",
+                                                                  KeepNavigationInfo      = False,
+                                                                  ParticleSelectionString = "(abs(TruthParticles.pdgId) == 4)",
+                                                                  Do_Compress             = True)
+   ToolSvc += PHYSVALTruthCharmTool
+   #from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__CommonAugmentation
+   SeqPHYSVAL += CfgMgr.DerivationFramework__CommonAugmentation("PHYSVALTruthCharmKernel",AugmentationTools=[PHYSVALTruthCharmTool])
+   # Add HF particles
+   addHFAndDownstreamParticles(SeqPHYSVAL)
+   # Add standard truth
+   addStandardTruthContents(SeqPHYSVAL,prefix='PHYSVAL_')
+   # Update to include charm quarks and HF particles - require a separate instance to be train safe
+   from DerivationFrameworkMCTruth.DerivationFrameworkMCTruthConf import DerivationFramework__TruthNavigationDecorator
+   PHYSVALTruthNavigationDecorator = DerivationFramework__TruthNavigationDecorator( name="PHYSVALTruthNavigationDecorator",
+          InputCollections=["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos", "TruthBSM", "TruthBottom", "TruthTop", "TruthBoson","TruthCharm","TruthHFWithDecayParticles"])
+   ToolSvc += PHYSVALTruthNavigationDecorator
+   SeqPHYSVAL.PHYSVAL_MCTruthNavigationDecoratorKernel.AugmentationTools = [PHYSVALTruthNavigationDecorator]
+   # Re-point links on reco objects
+   addMiniTruthCollectionLinks(SeqPHYSVAL)
+   addPVCollection(SeqPHYSVAL)
+   # Set appropriate truth jet collection for tau truth matching
+   ToolSvc.DFCommonTauTruthMatchingTool.TruthJetContainerName = "AntiKt4TruthDressedWZJets"
+   # Add sumOfWeights metadata for LHE3 multiweights =======
+   #from DerivationFrameworkCore.LHE3WeightMetadata import *
+
+
+
+#====================================================================
+# TRIGGER CONTENT   
+#====================================================================
+## See https://twiki.cern.ch/twiki/bin/view/Atlas/TriggerAPI
+## Get single and multi mu, e, photon triggers
+## Jet, tau, multi-object triggers not available in the matching code
+allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
+trig_el  = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el,  livefraction=0.8)
+trig_mu  = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu,  livefraction=0.8)
+trig_g   = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.g,   livefraction=0.8)
+trig_tau = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.tau, livefraction=0.8)
+## Add cross-triggers for some sets
+trig_em = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, additionalTriggerType=TriggerType.mu,  livefraction=0.8)
+trig_et = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.el, additionalTriggerType=TriggerType.tau, livefraction=0.8)
+trig_mt = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, additionalTriggerType=TriggerType.tau, livefraction=0.8)
+## Note that this seems to pick up both isolated and non-isolated triggers already, so no need for extra grabs
+trig_txe = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.tau, additionalTriggerType=TriggerType.xe, livefraction=0.8)
+#
+## Merge and remove duplicates
+trigger_names_full_notau = list(set(trig_el+trig_mu+trig_g+trig_em+trig_et+trig_mt))
+trigger_names_full_tau = list(set(trig_tau+trig_txe))
+#
+## Now reduce the list...
+trigger_names_notau = []
+trigger_names_tau = []
+from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
+from AthenaConfiguration.AutoConfigFlags import GetFileMD
+for chain_name in GetFileMD(athenaCommonFlags.FilesInput.get_Value())['TriggerMenu']['HLTChains']:
+   if chain_name in trigger_names_full_notau: trigger_names_notau.append(chain_name)
+   if chain_name in trigger_names_full_tau:   trigger_names_tau.append(chain_name) 
+# Create trigger matching decorations
+trigmatching_helper_notau = TriggerMatchingHelper(name='PHYSVALTriggerMatchingToolNoTau',
+        trigger_list = trigger_names_notau, add_to_df_job=True)
+trigmatching_helper_tau = TriggerMatchingHelper(name='PHYSVALTriggerMatchingToolTau',
+        trigger_list = trigger_names_tau, add_to_df_job=True, DRThreshold=0.2)
+
+
+
+#====================================================================
+# JET/MET   
+#====================================================================
+
+OutputJets["PHYSVAL"] = ["AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets"]
+reducedJetList = ["AntiKt2PV0TrackJets","AntiKt4PV0TrackJets","AntiKt10PV0TrackJets","AntiKt10LCTopoJets"]
+
+if (DerivationFrameworkIsMonteCarlo):
+   OutputJets["PHYSVAL"].append("AntiKt10TruthTrimmedPtFrac5SmallR20Jets")
+
+replaceAODReducedJets(reducedJetList,SeqPHYSVAL,"PHYSVAL")
+add_largeR_truth_jets = DerivationFrameworkIsMonteCarlo and not hasattr(SeqPHYSVAL,'jetalgAntiKt10TruthTrimmedPtFrac5SmallR20')
+addDefaultTrimmedJets(SeqPHYSVAL,"PHYSVAL",dotruth=add_largeR_truth_jets)
+
+# Add large-R jet truth labeling
+if (DerivationFrameworkIsMonteCarlo):
+   addJetTruthLabel(jetalg="AntiKt10LCTopoTrimmedPtFrac5SmallR20",sequence=SeqPHYSVAL,algname="JetTruthLabelingAlg",labelname="R10TruthLabel_R21Consolidated")
+
+addQGTaggerTool(jetalg="AntiKt4EMTopo",sequence=SeqPHYSVAL,algname="QGTaggerToolAlg")
+addQGTaggerTool(jetalg="AntiKt4EMPFlow",sequence=SeqPHYSVAL,algname="QGTaggerToolPFAlg")
+
+# fJVT
+# getPFlowfJVT(jetalg='AntiKt4EMPFlow',sequence=SeqPHYSVAL, algname='PHYSVALJetForwardPFlowJvtToolAlg')
+
+#====================================================================
+# EGAMMA
+#====================================================================
+
+if DerivationFrameworkIsMonteCarlo:
+   # Schedule the two energy density tools for running after the pseudojets are created.
+   for alg in ['EDTruthCentralAlg', 'EDTruthForwardAlg']:
+      if hasattr(topSequence, alg):
+         edtalg = getattr(topSequence, alg)
+         delattr(topSequence, alg)
+         SeqPHYSVAL += edtalg
+
+#====================================================================
+# Add our sequence to the top sequence
+#====================================================================
+DerivationFrameworkJob += SeqPHYSVAL
+
+
+#====================================================================
+# CREATE THE DERIVATION KERNEL ALGORITHM   
+#====================================================================
+# Add the kernel for thinning (requires the objects be defined)
+SeqPHYSVAL += CfgMgr.DerivationFramework__DerivationKernel("PHYSVALKernel")
+
+
+#====================================================================
+# FLAVOUR TAGGING   
+#====================================================================
+
+from DerivationFrameworkFlavourTag.FtagRun3DerivationConfig import FtagJetCollection
+FtagJetCollection('AntiKt4EMPFlowJets',SeqPHYSVAL)
+
+
+#====================================================================
+# TC-LVT Vertices 
+#====================================================================
+
+# from SoftBVrtClusterTool.SoftBVrtConfig import addSoftBVrt
+# addSoftBVrt(SeqPHYSVAL,'Loose')
+# addSoftBVrt(SeqPHYSVAL,'Medium')
+# addSoftBVrt(SeqPHYSVAL,'Tight')
+
+#====================================================================
+# CONTENTS   
+#====================================================================
+from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
+PHYSVALSlimmingHelper = SlimmingHelper("PHYSVALSlimmingHelper")
+
+PHYSVALSlimmingHelper.SmartCollections = ["Electrons",
+                                       "Photons",
+                                       "Muons",
+                                       "PrimaryVertices",
+                                       "InDetTrackParticles",
+                                       "AntiKt4EMTopoJets",
+                                       "AntiKt4EMPFlowJets",
+                                       "BTagging_AntiKt4EMPFlow",
+                                       "MET_Reference_AntiKt4EMTopo",
+                                       "MET_Reference_AntiKt4EMPFlow",
+                                       "TauJets",
+                                       "DiTauJets",
+                                       "DiTauJetsLowPt",
+                                       "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
+                                      ]
+
+PHYSVALSlimmingHelper.AllVariables =  ["Electrons", "ForwardElectrons",
+                                       "Photons",
+                                       "Muons", "CombinedMuonTrackParticles","ExtrapolatedMuonTrackParticles",
+                                       "MuonSpectrometerTrackParticles","MSOnlyExtrapolatedMuonTrackParticles","MuonSegments",
+                                       "PrimaryVertices",
+                                       "InDetTrackParticles","InDetForwardTrackParticles",
+                                       "AntiKt4EMTopoJets",
+                                       "AntiKt4EMPFlowJets",
+                                       "BTagging_AntiKt4EMPFlow",
+                                       "MET_Reference_AntiKt4EMTopo",
+                                       "MET_Reference_AntiKt4EMPFlow",
+                                       "MET_Reference_AntiKt4LCTopo",
+                                       "TauJets",
+                                       "DiTauJets",
+                                       "DiTauJetsLowPt",
+                                       "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets","AntiKt10PV0TrackJets","AntiKt10LCTopoJets","AntiKt4LCTopoJets",
+                                       "TruthParticles", "TruthEvents", "TruthVertices", "MuonTruthParticles", "egammaTruthParticles",
+                                       "MuonTruthSegments",
+                                       "MET_Truth","MET_TruthRegions",
+                                       "TruthElectrons","TruthMuons","TruthPhotons","TruthTaus","TruthNeutrinos","TruthBSM","TruthTop","TruthBoson",
+                                       "CaloCalTopoClusters"
+                                     ]
+
+excludedVertexAuxData = "-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"
+StaticContent = []
+StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Tight_Vertices"]
+StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Tight_VerticesAux." + excludedVertexAuxData]
+StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Medium_Vertices"]
+StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Medium_VerticesAux." + excludedVertexAuxData]
+StaticContent += ["xAOD::VertexContainer#SoftBVrtClusterTool_Loose_Vertices"]
+StaticContent += ["xAOD::VertexAuxContainer#SoftBVrtClusterTool_Loose_VerticesAux." + excludedVertexAuxData]
+
+PHYSVALSlimmingHelper.StaticContent = StaticContent
+
+# Trigger content
+PHYSVALSlimmingHelper.IncludeTriggerNavigation = True
+PHYSVALSlimmingHelper.IncludeJetTriggerContent = True
+PHYSVALSlimmingHelper.IncludeMuonTriggerContent = True
+PHYSVALSlimmingHelper.IncludeEGammaTriggerContent = True
+PHYSVALSlimmingHelper.IncludeJetTauEtMissTriggerContent = True
+PHYSVALSlimmingHelper.IncludeTauTriggerContent = True
+PHYSVALSlimmingHelper.IncludeEtMissTriggerContent = True
+PHYSVALSlimmingHelper.IncludeBJetTriggerContent = True
+PHYSVALSlimmingHelper.IncludeBPHYSVALTriggerContent = True
+PHYSVALSlimmingHelper.IncludeMinBiasTriggerContent = True
+
+# Add the jet containers to the stream (defined in JetCommon if import needed)
+#addJetOutputs(PHYSVALSlimmingHelper,["PHYSVAL"])
+
+# Truth containers
+if DerivationFrameworkIsMonteCarlo:
+   PHYSVALSlimmingHelper.AppendToDictionary = {'TruthEvents':'xAOD::TruthEventContainer','TruthEventsAux':'xAOD::TruthEventAuxContainer',
+                                            'MET_Truth':'xAOD::MissingETContainer','MET_TruthAux':'xAOD::MissingETAuxContainer',
+                                            'TruthElectrons':'xAOD::TruthParticleContainer','TruthElectronsAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthMuons':'xAOD::TruthParticleContainer','TruthMuonsAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthPhotons':'xAOD::TruthParticleContainer','TruthPhotonsAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthTaus':'xAOD::TruthParticleContainer','TruthTausAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthNeutrinos':'xAOD::TruthParticleContainer','TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthBSM':'xAOD::TruthParticleContainer','TruthBSMAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthBoson':'xAOD::TruthParticleContainer','TruthBosonAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthTop':'xAOD::TruthParticleContainer','TruthTopAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthForwardProtons':'xAOD::TruthParticleContainer','TruthForwardProtonsAux':'xAOD::TruthParticleAuxContainer',
+                                            'BornLeptons':'xAOD::TruthParticleContainer','BornLeptonsAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthBosonsWithDecayParticles':'xAOD::TruthParticleContainer','TruthBosonsWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthBosonsWithDecayVertices':'xAOD::TruthVertexContainer','TruthBosonsWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
+                                            'TruthBSMWithDecayParticles':'xAOD::TruthParticleContainer','TruthBSMWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthBSMWithDecayVertices':'xAOD::TruthVertexContainer','TruthBSMWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
+                                            'HardScatterParticles':'xAOD::TruthParticleContainer','HardScatterParticlesAux':'xAOD::TruthParticleAuxContainer',
+                                            'HardScatterVertices':'xAOD::TruthVertexContainer','HardScatterVerticesAux':'xAOD::TruthVertexAuxContainer',
+                                            'TruthHFWithDecayParticles':'xAOD::TruthParticleContainer','TruthHFWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthHFWithDecayVertices':'xAOD::TruthVertexContainer','TruthHFWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
+                                            'TruthCharm':'xAOD::TruthParticleContainer','TruthCharmAux':'xAOD::TruthParticleAuxContainer',
+                                            'TruthPrimaryVertices':'xAOD::TruthVertexContainer','TruthPrimaryVerticesAux':'xAOD::TruthVertexAuxContainer',
+                                            'AntiKt10TruthTrimmedPtFrac5SmallR20Jets':'xAOD::JetContainer', 'AntiKt10TruthTrimmedPtFrac5SmallR20JetsAux':'xAOD::JetAuxContainer',
+                                            'AntiKt10LCTopoJets':'xAOD::JetContainer', 'AntiKt10LCTopoJetsAux':'xAOD::JetAuxContainer',
+                                            'AntiKt10PV0TrackJets':'xAOD::JetContainer','AntiKt10PV0TrackJetsAux':'xAOD::JetAuxContainer'
+                                           }
+
+   from DerivationFrameworkMCTruth.MCTruthCommon import addTruth3ContentToSlimmerTool
+   addTruth3ContentToSlimmerTool(PHYSVALSlimmingHelper)
+   PHYSVALSlimmingHelper.AllVariables += ['TruthHFWithDecayParticles','TruthHFWithDecayVertices','TruthCharm']
+
+PHYSVALSlimmingHelper.ExtraVariables += ["AntiKt10TruthTrimmedPtFrac5SmallR20Jets.Tau1_wta.Tau2_wta.Tau3_wta.D2.GhostBHadronsFinalCount",
+                                      "Electrons.TruthLink",
+                                      "Muons.TruthLink",
+                                      "Photons.TruthLink",
+                                      "AntiKt2PV0TrackJets.pt.eta.phi.m",
+                                      "AntiKt4EMTopoJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PartonTruthLabelID",
+                                      "AntiKt4EMPFlowJets.DFCommonJets_QGTagger_truthjet_nCharged.DFCommonJets_QGTagger_truthjet_pt.DFCommonJets_QGTagger_truthjet_eta.DFCommonJets_QGTagger_NTracks.DFCommonJets_QGTagger_TracksWidth.DFCommonJets_QGTagger_TracksC1.PartonTruthLabelID.DFCommonJets_fJvt",
+                                      "TruthPrimaryVertices.t.x.y.z",
+                                      "TauNeutralParticleFlowObjects.pt.eta.phi.m.bdtPi0Score.nPi0Proto",
+                                      "TauChargedParticleFlowObjects.pt.eta.phi.m.bdtPi0Score",
+                                      "MET_Track.sumet"
+]
+
+# Add trigger matching
+trigmatching_helper_notau.add_to_slimming(PHYSVALSlimmingHelper)
+trigmatching_helper_tau.add_to_slimming(PHYSVALSlimmingHelper)
+
+# Final construction of output stream
+PHYSVALSlimmingHelper.AppendContentToStream(PHYSVALStream)
+
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h
index 621a333e8c3e77256c5382308d1c68074741a150..5f30609989419f72c664a002f95291d504ba35de 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2HighLevelTools.h
@@ -35,8 +35,8 @@ namespace FlavorTagDiscriminants {
   // also allow some user-configured remapping. Items in replaced_vars
   // are removed as they are used.
   void remap_inputs(std::vector<lwt::Input>& nn,
-                    std::vector<DL2InputConfig>& dl2,
-                    std::map<std::string, std::string>& replaced_vars);
+                    std::map<std::string, std::string>& replaced_vars,
+                    std::map<std::string, double>& defaults);
 
   // Function to map the regex + list of inputs to variable config,
   // this time for sequence inputs.
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h
index cbf746fefa3b41bf692c2c1658956317a7a43f80..e27dca737f1abe89113451d0d32d30fdfff15432 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DL2Tool.h
@@ -16,6 +16,7 @@ namespace FlavorTagDiscriminants {
   struct DL2Properties {
     std::string nnFile;
     std::string flipTagConfig;
+    std::map<std::string,std::string> variableRemapping;
   };
 
   class DL2Tool : public asg::AsgTool, virtual public ISingleJetDecorator
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx
index cc9ce31eb716f0e20b2b7bfbb1cfc5a0206b538d..8855dfc72878e1fe0d9e26a69eec3bbe04b7a832 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/BTagJetAugmenter.cxx
@@ -105,9 +105,9 @@ BTagJetAugmenter::BTagJetAugmenter(std::string associator, FlavorTagDiscriminant
   m_secondaryVtx_min_trk_flightDirRelEta(jfSvNew(f) + "_minimumTrackRelativeEta"),
   m_secondaryVtx_max_trk_flightDirRelEta(jfSvNew(f) + "_maximumTrackRelativeEta"),
   m_secondaryVtx_avg_trk_flightDirRelEta(jfSvNew(f) + "_averageTrackRelativeEta"),
-  m_min_trk_flightDirRelEta("minimumTrackRelativeEta" + flipString(f)),
-  m_max_trk_flightDirRelEta("maximumTrackRelativeEta" + flipString(f)),
-  m_avg_trk_flightDirRelEta("averageTrackRelativeEta" + flipString(f)),
+  m_min_trk_flightDirRelEta(jfSvNew(f) + "_minimumAllJetTrackRelativeEta"),
+  m_max_trk_flightDirRelEta(jfSvNew(f) + "_maximumAllJetTrackRelativeEta"),
+  m_avg_trk_flightDirRelEta(jfSvNew(f) + "_averageAllJetTrackRelativeEta"),
   m_rnnip_pbIsValid(rnn(f) + "_pbIsValid"),
   m_rnnip_isDefaults(rnn(f) + "_isDefaults")
 {
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx
index 127db489ca7696ff32650dd311722ba374926e9c..7f092536d0175dd0e729325ebf94d015d95cd8a3 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevel.cxx
@@ -52,7 +52,6 @@ namespace FlavorTagDiscriminants {
       {"rnnip"_r, "rnnipflip"},
       {"^(DL1|DL1r|DL1rmu)$"_r, "$1Flip"},
       {"pt|abs_eta"_r, "$&"},
-      {"(minimum|maximum|average)TrackRelativeEta"_r, "$&Flip"},
       {"softMuon.*|smt.*"_r, "$&"}
     };
 
@@ -81,7 +80,6 @@ namespace FlavorTagDiscriminants {
       {"IP[23]D(Neg)?_[pbc](b|c|u|tau)"_r, floattype},
       {"SV1(Flip)?_[pbc](b|c|u|tau)"_r, floattype},
       {"(rnnip|iprnn)(flip)?_p(b|c|u|tau)"_r, floattype},
-      {"(minimum|maximum|average)TrackRelativeEta(Flip)?"_r, EDMType::FLOAT},
       {"(JetFitter|SV1|JetFitterSecondaryVertex)(Flip)?_[Nn].*"_r, EDMType::INT},
       {"(JetFitter|SV1|JetFitterSecondaryVertex).*"_r, EDMType::FLOAT},
       {"pt|abs_eta|eta"_r, EDMType::CUSTOM_GETTER},
@@ -100,8 +98,6 @@ namespace FlavorTagDiscriminants {
       {"JetFitterFlip_.*"_r, "JetFitterFlip_isDefaults"},
       {"JetFitterSecondaryVertex_.*"_r, "JetFitterSecondaryVertex_isDefaults"},
       {"JetFitterSecondaryVertexFlip_.*"_r, "JetFitterSecondaryVertexFlip_isDefaults"},
-      {".*TrackRelativeEta"_r, "JetFitterSecondaryVertex_isDefaults"},
-      {".*TrackRelativeEtaFlip"_r, "JetFitterSecondaryVertexFlip_isDefaults"},
       {"rnnip_.*"_r, "rnnip_isDefaults"},
       {"rnnipflip_.*"_r, "rnnipflip_isDefaults"},
       {"iprnn_.*"_r, ""},
@@ -111,6 +107,11 @@ namespace FlavorTagDiscriminants {
 
     std::vector<DL2InputConfig> input_config;
     if (config.inputs.size() == 1) {
+
+      // allow the user to remape some of the inputs
+      remap_inputs(config.inputs.at(0).variables, var_map,
+                   config.inputs.at(0).defaults);
+
       std::vector<std::string> input_names;
       for (const auto& var: config.inputs.at(0).variables) {
         input_names.push_back(var.name);
@@ -118,8 +119,6 @@ namespace FlavorTagDiscriminants {
 
       input_config = get_input_config(
         input_names, type_regexes, default_flag_regexes);
-      // allow the user to remape some of the inputs
-      remap_inputs(config.inputs.at(0).variables, input_config, var_map);
     } else if (config.inputs.size() > 1) {
       throw std::logic_error("DL2 doesn't support multiple inputs");
     }
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx
index 1a876791abf4a312826812f0efd17163f0fb526d..f4289c944129802b925b4c8f43aa76f589043cf5 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2HighLevelTools.cxx
@@ -44,25 +44,35 @@ namespace FlavorTagDiscriminants {
   }
   // do some input variable magic in case someone asked
   void remap_inputs(std::vector<lwt::Input>& nn,
-                    std::vector<DL2InputConfig>& dl2,
-                    std::map<std::string, std::string>& replaced_vars) {
-    if (nn.size() != dl2.size()) {
-      throw std::logic_error("DL2 input size != lwtnn input size");
-    }
-    for (size_t iii = 0; iii < nn.size(); iii++) {
-      std::string nn_name = nn.at(iii).name;
-      std::string dl_name = dl2.at(iii).name;
-      if (nn_name != dl_name) {
-        throw std::logic_error(
-          "DL2 input mismatch (" + nn_name + " != " + dl_name + ")");
-      }
+                    std::map<std::string, std::string>& replaced_vars,
+                    std::map<std::string, double>& defaults) {
+    // keep track of the new default values, and which values they
+    // were moved from
+    std::map<std::string, double> new_defaults;
+    std::set<std::string> moved_defaults;
+    for (lwt::Input& input: nn) {
+      std::string nn_name = input.name;
       auto replacement_itr = replaced_vars.find(nn_name);
       if (replacement_itr != replaced_vars.end()) {
-        nn.at(iii).name = replacement_itr->second;
-        dl2.at(iii).name = replacement_itr->second;
+        std::string new_name = replacement_itr->second;
+        input.name = new_name;
+        if (defaults.count(nn_name)) {
+          new_defaults[new_name] = defaults.at(nn_name);
+          moved_defaults.insert(nn_name);
+        }
         replaced_vars.erase(replacement_itr);
       }
     }
+    for (const auto& new_default: new_defaults) {
+      defaults[new_default.first] = new_default.second;
+      // if something was a new default we don't want to delete it
+      // below.
+      moved_defaults.erase(new_default.first);
+    }
+    // delete anything that was moved but wasn't assigned to
+    for (const auto& moved: moved_defaults) {
+      defaults.erase(moved);
+    }
   }
   std::vector<DL2TrackSequenceConfig> get_track_input_config(
     const std::vector<std::pair<std::string, std::vector<std::string>>>& names,
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx
index 32f219f8a82d8329f4d9af1da34d1f97abb0fb20..98745ee84cd20350d04ab52e91d3a15bbe1cc6e2 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2Tool.cxx
@@ -14,6 +14,7 @@ namespace FlavorTagDiscriminants {
   {
     declareProperty("nnFile", m_props.nnFile);
     declareProperty("flipTagConfig", m_props.flipTagConfig);
+    declareProperty("variableRemapping", m_props.variableRemapping);
   }
   DL2Tool::~DL2Tool() {}
 
@@ -23,7 +24,12 @@ namespace FlavorTagDiscriminants {
     if (m_props.flipTagConfig.size() > 0) {
       flipConfig = flipTagConfigFromString(m_props.flipTagConfig);
     }
-    m_dl2.reset(new DL2HighLevel(m_props.nnFile, flipConfig));
+    m_dl2.reset(
+      new DL2HighLevel(
+        m_props.nnFile,
+        flipConfig,
+        m_props.variableRemapping)
+      );
     return StatusCode::SUCCESS;
   }
 
diff --git a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py
index 41b11993aaec0b515ea40c5aafa9092fc37265f3..89270c4566f57c43349ad636969a6a1c8b989505 100644
--- a/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py
+++ b/PhysicsAnalysis/JetTagging/JetTagAlgs/BTagging/python/HighLevelBTagAlgConfig.py
@@ -11,6 +11,17 @@ def DL2ToolCfg(ConfigFlags, NNFile = '', **options):
 
     options['nnFile'] = NNFile
     options['name'] = "decorator"
+
+    # This is a hack to accomodate the older b-tagging training with
+    # old names for variables. We should be able to remove it when we
+    # move over to the 2020 / 2021 retraining.
+    if '201903' in NNFile and 'dl1' in NNFile:
+        remap = {}
+        for aggragate in ['minimum','maximum','average']:
+            remap[f'{aggragate}TrackRelativeEta'] = (
+                f'JetFitterSecondaryVertex_{aggragate}AllJetTrackRelativeEta')
+        options['variableRemapping'] = remap
+
     dl2 = FlavorTagDiscriminants__DL2Tool(**options)
 
     acc.setPrivateTools(dl2)
diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h
index 51ccf3d631c46760e0ca2afbe76eacb8d3ba62c1..0535b4e8ee743915d1d59a7f5999edb69b794de8 100644
--- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h
+++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/MuonMomentumCorrections/MuonCalibrationAndSmearingTool.h
@@ -239,18 +239,19 @@ class MuonCalibrationAndSmearingTool : public virtual IMuonCalibrationAndSmearin
     double m_fixedRho;
     bool m_useFixedRho;
 
-    std::vector <TProfile2D*> *m_sagittasCB;
-    std::vector <TProfile2D*> *m_sagittasID;
-    std::vector <TProfile2D*> *m_sagittasME;
+    std::vector < std::unique_ptr<TProfile2D> > m_sagittasCB;
+    std::vector < std::unique_ptr<TProfile2D> > m_sagittasID;
+    std::vector < std::unique_ptr<TProfile2D> > m_sagittasME;
 
     bool m_SagittaCorrPhaseSpace;
     bool m_doSagittaCorrection;
     bool m_doSagittaMCDistortion;
     bool m_doNotUseAMGMATRIXDECOR;
-
-    TProfile2D *m_sagittaPhaseSpaceCB;
-    TProfile2D *m_sagittaPhaseSpaceID;
-    TProfile2D *m_sagittaPhaseSpaceME;
+    float m_IterWeight;
+    
+    std::unique_ptr<TProfile2D> m_sagittaPhaseSpaceCB;
+    std::unique_ptr<TProfile2D> m_sagittaPhaseSpaceID;
+    std::unique_ptr<TProfile2D> m_sagittaPhaseSpaceME;
 
     std::string m_SagittaRelease;
     std::vector <unsigned int > m_SagittaIterations;
diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx
index 16d0cd69212407e2509a4e2400aeac3eb8c638ff..b1ca62995f4f4d289744bfd5b13e8e04842d3d2f 100644
--- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx
+++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationAndSmearingTool.cxx
@@ -67,9 +67,6 @@ namespace CP {
     m_SagittaIterations.push_back(0);
     m_SagittaIterations.push_back(0);
     m_SagittaIterations.push_back(0);
-    m_sagittasCB=new std::vector <TProfile2D*>();
-    m_sagittasID=new std::vector <TProfile2D*>();
-    m_sagittasME=new std::vector <TProfile2D*>();
     m_sagittaPhaseSpaceCB=nullptr;
     m_sagittaPhaseSpaceID=nullptr;
     m_sagittaPhaseSpaceME=nullptr;
@@ -182,12 +179,6 @@ namespace CP {
 
 
   MuonCalibrationAndSmearingTool::~MuonCalibrationAndSmearingTool(){
-    if(m_sagittasCB!=nullptr) delete m_sagittasCB;
-    if(m_sagittasID!=nullptr) delete m_sagittasID;
-    if(m_sagittasME!=nullptr) delete m_sagittasME;
-    if(m_sagittaPhaseSpaceCB!=nullptr) delete m_sagittaPhaseSpaceCB;
-    if(m_sagittaPhaseSpaceID!=nullptr) delete m_sagittaPhaseSpaceID;
-    if(m_sagittaPhaseSpaceME!=nullptr) delete m_sagittaPhaseSpaceME;
   }
 
 
@@ -359,9 +350,9 @@ namespace CP {
 
       if(m_SagittaCorrPhaseSpace){
         // Load the mc sagitta bias maps 
-        m_sagittaPhaseSpaceCB=GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/%s/outqDeltamPlots_iter%d/",m_SagittaRelease.c_str(),0) + trackNames.at(0) + "_mc_NoCorr.root"),"inclusive",m_GlobalZScales.at(0));
-        m_sagittaPhaseSpaceID=GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/%s/outqDeltamPlots_iter%d/",m_SagittaRelease.c_str(),0) + trackNames.at(1) + "_mc_NoCorr.root"),"inclusive",m_GlobalZScales.at(1));
-        m_sagittaPhaseSpaceME=GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/%s/outqDeltamPlots_iter%d/",m_SagittaRelease.c_str(),0) + trackNames.at(2) + "_mc_NoCorr.root"),"inclusive",m_GlobalZScales.at(2));
+        m_sagittaPhaseSpaceCB = std::make_unique<TProfile2D>(*GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/%s/outqDeltamPlots_iter%d/",m_SagittaRelease.c_str(),0) + trackNames.at(0) + "_mc_NoCorr.root"),"inclusive",m_GlobalZScales.at(0)));
+        m_sagittaPhaseSpaceID = std::make_unique<TProfile2D>(*GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/%s/outqDeltamPlots_iter%d/",m_SagittaRelease.c_str(),0) + trackNames.at(1) + "_mc_NoCorr.root"),"inclusive",m_GlobalZScales.at(1)));
+        m_sagittaPhaseSpaceME = std::make_unique<TProfile2D>(*GetHist( PathResolverFindCalibFile(Form("MuonMomentumCorrections/%s/outqDeltamPlots_iter%d/",m_SagittaRelease.c_str(),0) + trackNames.at(2) + "_mc_NoCorr.root"),"inclusive",m_GlobalZScales.at(2)));
       }
       else{
         m_sagittaPhaseSpaceCB=nullptr;
@@ -429,19 +420,19 @@ namespace CP {
   // This may cause a leak
   unsigned int MuonCalibrationAndSmearingTool::setSagittaHistogramsSingle(TProfile2D *pCB,unsigned int track){
     if( track == 0 ) {
-      pCB->SetName((Form("pCB_%d",(int)m_sagittasCB->size())));
-      m_sagittasCB->push_back(pCB);
-      return m_sagittasCB->size();
+      pCB->SetName((Form("pCB_%d",(int)m_sagittasCB.size())));
+      m_sagittasCB.emplace_back(std::make_unique<TProfile2D>(*pCB));
+      return m_sagittasCB.size();
     }
     else if( track == 1 ) {
-      pCB->SetName(Form("pID_%d",(int)m_sagittasID->size()));
-      m_sagittasID->push_back(pCB);
-      return m_sagittasID->size();
+      pCB->SetName(Form("pID_%d",(int)m_sagittasID.size()));
+      m_sagittasID.emplace_back(std::make_unique<TProfile2D>(*pCB));
+      return m_sagittasID.size();
     }
     else if( track == 2 ) {
-      pCB->SetName(Form("pME_%d",(int)m_sagittasME->size()));
-      m_sagittasME->push_back(pCB);
-      return  m_sagittasME->size();
+      pCB->SetName(Form("pME_%d",(int)m_sagittasME.size()));
+      m_sagittasME.emplace_back(std::make_unique<TProfile2D>(*pCB));
+      return  m_sagittasME.size();
     }
     else
       return 0;
@@ -544,11 +535,11 @@ namespace CP {
     double p2PhaseSpaceME=0.0;
     
     if(m_SagittaCorrPhaseSpace && m_sagittaPhaseSpaceCB!=nullptr)
-      p2PhaseSpaceCB=m_SagittaCorrPhaseSpace ? sagitta(m_sagittaPhaseSpaceCB,lvCB):0.0;
+      p2PhaseSpaceCB=m_SagittaCorrPhaseSpace ? sagitta(m_sagittaPhaseSpaceCB.get(), lvCB):0.0;
     if(m_SagittaCorrPhaseSpace && m_sagittaPhaseSpaceID!=nullptr)
-      p2PhaseSpaceID=m_SagittaCorrPhaseSpace ? sagitta(m_sagittaPhaseSpaceID,lvID):0.0;
+      p2PhaseSpaceID=m_SagittaCorrPhaseSpace ? sagitta(m_sagittaPhaseSpaceID.get(), lvID):0.0;
     if(m_SagittaCorrPhaseSpace && m_sagittaPhaseSpaceME!=nullptr)
-      p2PhaseSpaceME=m_SagittaCorrPhaseSpace ? sagitta(m_sagittaPhaseSpaceME,lvME):0.0;
+      p2PhaseSpaceME=m_SagittaCorrPhaseSpace ? sagitta(m_sagittaPhaseSpaceME.get(), lvME):0.0;
 
 
 
@@ -559,8 +550,8 @@ namespace CP {
 
     if(SgCorrType==MCAST::SagittaCorType::CB) {
       if(muonInfo.ptcb == 0 ) return CorrectionCode::Ok;
-      if( iter >=  m_sagittasCB->size())  return CorrectionCode::Ok;
-      CorrectionCode corr = CorrectForCharge( sagitta(m_sagittasCB->at(iter),lvCB)*0.5, muonInfo.ptcb, q, isMC,p2PhaseSpaceCB);
+      if( iter >=  m_sagittasCB.size())  return CorrectionCode::Ok;
+      CorrectionCode corr = CorrectForCharge( sagitta(m_sagittasCB.at(iter).get(), lvCB)*m_IterWeight, muonInfo.ptcb, q, isMC,p2PhaseSpaceCB);
       iter++;
       if(corr != CorrectionCode::Ok) return corr;
       if(!stop)  return applySagittaBiasCorrection(MCAST::SagittaCorType::CB, mu, iter, stop, isMC, muonInfo);
@@ -568,8 +559,8 @@ namespace CP {
 
     else if(SgCorrType == MCAST::SagittaCorType::ID){
       if(muonInfo.ptid == 0 ) return CorrectionCode::Ok;
-      if( iter >= m_sagittasID->size())  return CorrectionCode::Ok;
-      CorrectionCode corr = CorrectForCharge(  sagitta(m_sagittasID->at(iter),lvID)*0.5 , muonInfo.ptid, q, isMC,p2PhaseSpaceID);
+      if( iter >= m_sagittasID.size())  return CorrectionCode::Ok;
+      CorrectionCode corr = CorrectForCharge(  sagitta(m_sagittasID.at(iter).get(), lvID)*m_IterWeight, muonInfo.ptid, q, isMC,p2PhaseSpaceID);
       iter++;
       if(corr != CorrectionCode::Ok) return corr;
       if(!stop)return applySagittaBiasCorrection(MCAST::SagittaCorType::ID, mu, iter, stop, isMC, muonInfo);
@@ -577,8 +568,8 @@ namespace CP {
 
     else if(SgCorrType == MCAST::SagittaCorType::ME){
       if(muonInfo.ptms == 0 ) return CorrectionCode::Ok;
-      if( iter >=  m_sagittasME->size() )  return CorrectionCode::Ok;
-      CorrectionCode corr = CorrectForCharge(sagitta(m_sagittasME->at(iter),lvME) *0.5 , muonInfo.ptms, q, isMC,p2PhaseSpaceME);
+      if( iter >=  m_sagittasME.size() )  return CorrectionCode::Ok;
+      CorrectionCode corr = CorrectForCharge(sagitta(m_sagittasME.at(iter).get(), lvME)*m_IterWeight, muonInfo.ptms, q, isMC,p2PhaseSpaceME);
       iter++;
       if(corr != CorrectionCode::Ok) return corr;
       if(!stop) return applySagittaBiasCorrection(MCAST::SagittaCorType::ME, mu, iter, stop, isMC, muonInfo);
@@ -626,7 +617,7 @@ namespace CP {
       }
 
 
-      if( iter ==  m_sagittasCB->size() ) {
+      if( iter ==  m_sagittasCB.size() ) {
         if(dump)
           ATH_MSG_DEBUG("--> " << muonInfo.ptcb);
         return CorrectionCode::Ok;
diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationPeriodTool.cxx b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationPeriodTool.cxx
index 3c67109578ef9529241531d981ee02996849baee..a6825faae86bf443900baa1ea42e738c83df9fac 100644
--- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationPeriodTool.cxx
+++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/Root/MuonCalibrationPeriodTool.cxx
@@ -186,6 +186,7 @@ namespace CP {
         ATH_CHECK(m_calibTool_1516.retrieve());
         ATH_CHECK(m_calibTool_17.retrieve());
         ATH_CHECK(m_calibTool_18.retrieve());
+        ATH_CHECK(m_eventInfo.initialize());
         return StatusCode::SUCCESS;
     }
     
diff --git a/PhysicsAnalysis/PrimaryDPDMaker/share/bstodpd_data.py b/PhysicsAnalysis/PrimaryDPDMaker/share/bstodpd_data.py
deleted file mode 100644
index af3a04e7fb8ec7aeb7e991987631cef750978fab..0000000000000000000000000000000000000000
--- a/PhysicsAnalysis/PrimaryDPDMaker/share/bstodpd_data.py
+++ /dev/null
@@ -1,53 +0,0 @@
-##=============================================================================
-## Name:        bstodpd_data.py
-##
-## Author:      David Cote (DESY)
-## Created:     November 2008
-##
-## Description: This is the starting script to produce a DPD from RAW.
-##=============================================================================
-
-from RecExConfig.RecFlags  import rec
-from AthenaCommon.BeamFlags import jobproperties
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-from AthenaCommon.GlobalFlags import globalflags
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-
-#Input
-globalflags.InputFormat.set_Value_and_Lock('bytestream')
-athenaCommonFlags.BSRDOInput.set_Value_and_Lock(['/castor/cern.ch/grid/atlas/DAQ/2008/87863/physics_BPTX/daq.NoTag.0087863.physics.BPTX.LB0000.SFO-1._0001.data'])
-athenaCommonFlags.EvtMax=5
-
-#Default configuration
-rec.doAOD=False
-rec.doWriteAOD=False
-rec.doWriteTAG=False	
-rec.doWriteTAGCOM=False
-rec.doMonitoring=False
-rec.doCBNT=False
-rec.doESD=True
-
-#auto-configuration
-rec.triggerStream="BPTX"
-rec.AutoConfiguration.append('FieldAndGeo')
-rec.AutoConfiguration.append('BeamType')
-rec.AutoConfiguration.append('ConditionsTag')
-
-#data configuration
-include( "RecExCommission/RecExCommissionFlags_jobOptions.py" )
-#ATLASCosmicFlags.doFilteredESD=False 
-include("RecExCommission/MinimalCommissioningSetup.py")
-
-#DPD (skimmed bytestream)
-rec.doDPD.set_Value_and_Lock( True )
-rec.DPDMakerScripts.append("PrimaryDPDMaker/PrimaryDPDMaker.py")
-from PrimaryDPDMaker.PrimaryDPDFlags import primDPD
-#skimmed bytestream
-primDPD.WriteRAW_IDPROJCOMM=True
-primDPD.RAW_IDPROJCOMMName="mySkimmedBS"
-
-#ESD (optional)
-rec.doWriteESD=True
-athenaCommonFlags.PoolESDOutput="myESD.pool.root"
-
-include("RecExCommon/RecExCommon_topOptions.py")
diff --git a/PhysicsAnalysis/RingerSelectorTools/CMakeLists.txt b/PhysicsAnalysis/RingerSelectorTools/CMakeLists.txt
index 7800944552b150b75cd24c420a99cd6e04e7cbf4..1601d5765465a06d64b858cd972bbf4553303f1e 100644
--- a/PhysicsAnalysis/RingerSelectorTools/CMakeLists.txt
+++ b/PhysicsAnalysis/RingerSelectorTools/CMakeLists.txt
@@ -1,25 +1,13 @@
-################################################################################
-# Package: RingerSelectorTools
-################################################################################
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # Declare package version:
 set( RingerSelectorTools_version "\"RingerSelectorTools-00-00-18\"" )
 
 # Declare the package name:
 atlas_subdir( RingerSelectorTools )
-# Extra dependencies based on the environment:
-set( extra_pub_dep )
-set( extra_dep )
-if( XAOD_STANDALONE )
-   set( extra_dep Control/xAODRootAccess )
-else()
-  set( extra_pub_dep Control/AthenaKernel )
-  set( extra_dep Control/AthContainers Tracking/TrkEvent/TrkTrackSummary GaudiKernel )
-endif()
 
 # External dependencies:
-find_package( Boost COMPONENTS filesystem thread system )
-find_package( ROOT COMPONENTS Core Gpad Tree MathCore Hist RIO pthread )
+find_package( ROOT COMPONENTS Core RIO )
 
 atlas_add_library( RingerSelectorToolsEnumsLib
                    Root/enums/*.cxx
@@ -32,22 +20,22 @@ atlas_add_library( RingerSelectorToolsLib
                    Root/procedures/*.cxx
                    Root/tools/*.cxx
                    PUBLIC_HEADERS RingerSelectorTools
-                   INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} AsgTools CxxUtils xAODCaloRings xAODEgamma xAODTracking PATCoreLib EgammaAnalysisInterfacesLib RingerSelectorToolsEnumsLib 
-                   PRIVATE_LINK_LIBRARIES xAODBase PathResolver TrkTrackSummary )
+                   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                   LINK_LIBRARIES ${ROOT_LIBRARIES} AsgMessagingLib AsgTools AthenaKernel GaudiKernel xAODCaloRings xAODEgamma xAODTracking EgammaAnalysisInterfacesLib RingerSelectorToolsEnumsLib
+                   PRIVATE_LINK_LIBRARIES xAODBase AthContainers PathResolver TrkTrackSummary )
+
 if( NOT XAOD_STANDALONE )
   atlas_add_component( RingerSelectorTools
                        src/components/*.cxx
-                       INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
-                       LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} AthenaKernel AthContainers GaudiKernel TrkTrackSummary RingerSelectorToolsLib )
+                       LINK_LIBRARIES RingerSelectorToolsLib )
 endif()
 
 
 atlas_add_dictionary( RingerSelectorToolsDict
                       RingerSelectorTools/RingerSelectorToolsDict.h
                       RingerSelectorTools/selection.xml
-                      INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
-                      LINK_LIBRARIES ${Boost_LIBRARIES} ${ROOT_LIBRARIES} RingerSelectorToolsLib )
+                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+                      LINK_LIBRARIES ${ROOT_LIBRARIES} RingerSelectorToolsLib )
 
 atlas_add_dictionary( RingerSelectorToolsEnumsDict
                       RingerSelectorTools/RingerSelectorToolsEnumsDict.h
@@ -63,10 +51,10 @@ atlas_add_executable( dumpRings
 
 atlas_add_executable( ringsHist
    util/ringsHist.cxx
-   LINK_LIBRARIES RingerSelectorToolsLib  ${ROOT_LIBRARIES} )
+   LINK_LIBRARIES RingerSelectorToolsLib ${ROOT_LIBRARIES} )
 endif()
 
-atlas_install_python_modules( python/*.py )
+atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 
 if( XAOD_STANDALONE )
 message( STATUS "Using tag ${RingerSelectorTools_version} for all written RingerSelectorTools data." )
diff --git a/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorDefs.py b/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorDefs.py
index f30d1d827df7ed62fb2338bf7bb910a01a0cc088..600c890fb9f21ead2ba57229119f89286ff70c64 100644
--- a/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorDefs.py
+++ b/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorDefs.py
@@ -3,12 +3,10 @@
 from AthenaCommon.Logging import logging
 mlog = logging.getLogger( 'ElectronRingerSelectorDefs.py' )
 
-from AthenaCommon.Configurable import Configurable
-
 # Import from Ringer utilities:
 import ROOT
 ROOT.gSystem.Load('libRingerSelectorToolsEnumsDict.so')
-from ROOT.Ringer import ElectronTAccept_v1
+from ROOT import Ringer
 
 from RingerSelectorTools.RingerSelectorToolsConf import Ringer__AsgElectronRingerSelector
 from CaloRingerAlgs.CaloRingerKeys import outputElectronRingSetsConfKey
@@ -28,7 +26,7 @@ def removeClusterCutsFromIsEMMask(CutIDIsEMMask):
 class BaseElectronSelectorConf ( Ringer__AsgElectronRingerSelector ):
   def _setDefault(self,attrName, default, **kwargs):
     "Overwrites AsgElectronRingerSelector default to new default value."
-    if not kwargs.has_key(attrName):
+    if attrName not in kwargs:
       setattr(self, attrName, default)
 
   def _setCutIDSelector(self,defaultName,quality,menu,**kwargs):
@@ -37,12 +35,12 @@ class BaseElectronSelectorConf ( Ringer__AsgElectronRingerSelector ):
     available in the kwargs
     """
     removeMask = False
-    if not kwargs.has_key("cutIDConfDict") and not kwargs.has_key("CutIDSelector"):
+    if "cutIDConfDict" not in kwargs and "CutIDSelector" not in kwargs:
       removeMask = True
-    if not kwargs.has_key("CutIDSelector"):
-      CutIDSelectorTool = ConfiguredAsgElectronIsEMSelector(defaultName, \
-        quality, \
-        menu, \
+    if "CutIDSelector" not in kwargs:
+      CutIDSelectorTool = ConfiguredAsgElectronIsEMSelector(defaultName,
+        quality,
+        menu,
         **kwargs.pop("cutIDConfDict",{}))
       from AthenaCommon.AppMgr import ToolSvc
       ToolSvc += CutIDSelectorTool
@@ -71,8 +69,8 @@ class ElectronRingerSelectorTestLoose( BaseElectronSelectorConf ):
                      "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresLoose.root",
                      **kwargs)
     self._setDefault("CutsMask",
-                     ElectronTAccept_v1.getAppliedCutMsk(Ringer.Loose,
-                                                         kwargs.get("useCutIDTrack",False)),
+                     Ringer.ElectronTAccept_v1.getAppliedCutMsk(Ringer.Loose,
+                                                                kwargs.get("useCutIDTrack",False)),
                      **kwargs)
     self._setCutIDSelector("LooseRingerIsEMSelector",\
         egammaPID.ElectronIDLoosePP, \
@@ -88,8 +86,8 @@ class ElectronRingerSelectorTestMedium( BaseElectronSelectorConf ):
                      "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresMedium.root",
                      **kwargs)
     self._setDefault("CutsMask",
-                     ElectronTAccept_v1.getAppliedCutMsk(Ringer.Medium,
-                                                         kwargs.get("useCutIDTrack",False)),
+                     Ringer.ElectronTAccept_v1.getAppliedCutMsk(Ringer.Medium,
+                                                                kwargs.get("useCutIDTrack",False)),
                      **kwargs)
     self._setCutIDSelector("MediumRingerIsEMSelector", \
         egammaPID.ElectronIDMediumPP, \
@@ -106,8 +104,8 @@ class ElectronRingerSelectorTestTight( BaseElectronSelectorConf ):
                      "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresTight.root",
                      **kwargs)
     self._setDefault("CutsMask",
-                     ElectronTAccept_v1.getAppliedCutMsk(Ringer.Tight,
-                                                         kwargs.get("useCutIDTrack",False)),
+                     Ringer.ElectronTAccept_v1.getAppliedCutMsk(Ringer.Tight,
+                                                                kwargs.get("useCutIDTrack",False)),
                      **kwargs)
     self._setCutIDSelector("TightRingerIsEMSelector", \
         egammaPID.ElectronIDTightPP, \
@@ -124,8 +122,8 @@ class ElectronRingerSelectorTestNoCut( BaseElectronSelectorConf ):
                      "RingerSelectorTools/TestMenu_20150605_v1/ElectronRingerOfflineThresMedium.root",
                      **kwargs)
     self._setDefault("CutsMask",
-                     ElectronTAccept_v1.getAppliedCutMsk(Ringer.NoCut,
-                                                         kwargs.get("useCutIDTrack",False)),
+                     Ringer.ElectronTAccept_v1.getAppliedCutMsk(Ringer.NoCut,
+                                                                kwargs.get("useCutIDTrack",False)),
                      **kwargs)
     self._setCutIDSelector("NoCutRingerIsEMSelector", \
         egammaPID.ElectronIDNoCut, \
diff --git a/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorMapping.py b/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorMapping.py
index f0b5a14595b5357aab664e868cb41963cd17d32c..86e07eca125f962efc075a28dea52ded7eeec40c 100644
--- a/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorMapping.py
+++ b/PhysicsAnalysis/RingerSelectorTools/python/ElectronRingerSelectorMapping.py
@@ -17,7 +17,7 @@ import ROOT
 ROOT.gSystem.Load('libRingerSelectorToolsEnumsDict.so')
 from ROOT import Ringer
 
-from RingerSelectorTools.ElectronRingerSelectorDefs import *
+import RingerSelectorTools.ElectronRingerSelectorDefs as Defs
 
 class electronRingerPIDmenu (electronPIDmenu):
   testMenu = 999
@@ -47,8 +47,8 @@ class electronRingerPIDmenu (electronPIDmenu):
 #####################################################################################################
 
 ElectronRingerMap = {
-  (Ringer.Requirement.Loose, electronRingerPIDmenu.testMenu): ElectronRingerSelectorTestLoose,
-  (Ringer.Requirement.Medium, electronRingerPIDmenu.testMenu): ElectronRingerSelectorTestMedium,
-  (Ringer.Requirement.Tight, electronRingerPIDmenu.testMenu):  ElectronRingerSelectorTestTight,
-  (Ringer.Requirement.NoCut, electronRingerPIDmenu.testMenu):  ElectronRingerSelectorTestNoCut,
+  (Ringer.Requirement.Loose, electronRingerPIDmenu.testMenu): Defs.ElectronRingerSelectorTestLoose,
+  (Ringer.Requirement.Medium, electronRingerPIDmenu.testMenu): Defs.ElectronRingerSelectorTestMedium,
+  (Ringer.Requirement.Tight, electronRingerPIDmenu.testMenu):  Defs.ElectronRingerSelectorTestTight,
+  (Ringer.Requirement.NoCut, electronRingerPIDmenu.testMenu):  Defs.ElectronRingerSelectorTestNoCut,
   }
diff --git a/Projects/AnalysisBase/package_filters.txt b/Projects/AnalysisBase/package_filters.txt
index 2fa649c9fdb39cd85ae1c3bc5fa867ab399ae98f..2f954cc6d377dea3cbee7a798c9cd2ec2e2bc497 100644
--- a/Projects/AnalysisBase/package_filters.txt
+++ b/Projects/AnalysisBase/package_filters.txt
@@ -12,7 +12,6 @@
 #+ PhysicsAnalysis/BPhys/BPhysTools
 #+ PhysicsAnalysis/DerivationFramework/DerivationFrameworkAnalysisTests
 #+ Reconstruction/Jet/BoostedJetTaggers
-#+ Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection
 #+ Trigger/TriggerSimulation/TrigBtagEmulationTool
 
 
@@ -111,6 +110,7 @@
 + Trigger/TrigAnalysis/TrigAnalysisInterfaces
 + Trigger/TrigAnalysis/TrigBunchCrossingTool
 + Trigger/TrigAnalysis/TrigDecisionTool
++ Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection
 + Trigger/TrigAnalysis/TrigTauAnalysis/TrigTauMatching
 + Trigger/TrigAnalysis/TriggerMatchingTool
 + Trigger/TrigConfiguration/TrigConfBase
diff --git a/Reconstruction/RecExample/RecExCommission/CMakeLists.txt b/Reconstruction/RecExample/RecExCommission/CMakeLists.txt
deleted file mode 100644
index a2b2d4f2ba5666f617cdc40861e4679bcdc72784..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-################################################################################
-# Package: RecExCommission
-################################################################################
-
-# Declare the package name:
-atlas_subdir( RecExCommission )
-
-# Install files from the package:
-atlas_install_python_modules( python/*.py )
-atlas_install_joboptions( share/*.py )
-atlas_install_scripts( share/RecExCommissionData_links.sh share/RecExCommission_links.sh share/RecExCommissionData_links.csh )
-
diff --git a/Reconstruction/RecExample/RecExCommission/python/__init__.py b/Reconstruction/RecExample/RecExCommission/python/__init__.py
deleted file mode 100644
index a299a56aac03200c5c2005034e19a941eff828b3..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/python/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# File RecExCommission/python/__init__.py
-# Author: jamie.boyd@cern.ch
-
-__author__="Jamie Boyd"
-__all__= ["RecExCommission_MagneticFieldConfig"]
diff --git a/Reconstruction/RecExample/RecExCommission/scripts/ec_mon.sh b/Reconstruction/RecExample/RecExCommission/scripts/ec_mon.sh
deleted file mode 100755
index ecc42623225af78681587710b242b43d5f993193..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/scripts/ec_mon.sh
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/bin/bash
-#
-# script to run monitoring on phase 1 commissioning files.
-#
-# 30. Jan. 06   R. Seuster adopt it for online farm
-# 10. Jan. 06   R. Seuster make it run on kit and at CERN
-# 06. Jan. 06   R. Seuster, K. Voss
-#
-# After setting variables depending on the installation of
-# the atlas software, the enviroment and variables steering
-# the job are set in the first part.
-#
-# Next, a short python file with all variables for this job is
-# created.
-#
-# The job is run in its own run directory in the third part.
-#
-
-if [ $# -gt 4 ] ; then
-   echo "Script does not accept more than three parameters!"
-   echo ""
-   echo "usage: ec_mon.sh [runnumber [evtno [ gain [jobOptions.py]]]]"
-   echo "       runnumber     of the file to process (default 18720)"
-   echo "       gain          of the file to process (default HIGH)"
-   echo "       jobOptions.py of the algorithms to run (default RecExCommission_LAr_EC_INSTALLATION_jobOptions.py)"
-   return
-   exit
-fi
-
-##############################################################
-#          first part, general installation setup            #
-#                variables like runnumber                    #
-##############################################################
-
-# this is where your athena release is installed
-#export BASEPATH="/atlas/slc3"
-# at CERN this would be
-export BASEPATH="/afs/cern.ch/atlas/software"
-# P1:
-# export BASEPATH="/space/sw/offline_test"
-
-# which release to run
-ATLAS_RELEASE="11.2.0"
-
-# this is the run directory of the job, please give the absolute path !
-# RUNPATH=${HOME}/Athena/11.2.0-MON
-RUNPATH=${PWD}
-
-# the runnumber to process
-RUNNUMBER="1020"
-
-# the location of the datafiles disc or castor
-DATPATH="/castor/cern.ch/atlas/LargFec/EC_Installation"
-
-#
-EVTNO="10000000"
-
-# the gain of the noisefile
-GAIN=HIGH
-
-# the main joboptions file
-JOBOPTIONFILE=RecExCommission_LAr_EC_INSTALLATION_jobOptions.py
-
-# overwrite, if given on command line
-if [ $# -ge 1 ]; then
- RUNNUMBER="$1"
- shift
-fi
-
-# overwrite, if given on command line
-if [ $# -ge 1 ]; then
- EVTNO="$1"
- shift
-fi
-
-# overwrite, if given on command line
-if [ $# -ge 1 ]; then
- GAIN="$1"
- shift
-fi
-
-# overwrite, if given on command line
-if [ $# -eq 1 ]; then
- JOBOPTIONFILE=$1
- shift
-fi
-
-# construct string containing runnumber including leading 0's
-RUNSTR="`expr substr 0000000 1 \( 7 - length $RUNNUMBER \)`$RUNNUMBER"
-
-# name of logfile
-LOGFILE=logfile.$RUNSTR
-
-# do some basic cross checks, existance of directories and files
-if [ ! -d $RUNPATH ]; then
- echo Your run directory does not exist !!
- echo Please create one with
- echo \"mkdir $RUNPATH \"
- return
- exit
-fi
-
-
-# FILEPATH="${DATPATH}daq_EB-C_${GAIN}_InstPed_${RUNSTR}_file01.data"
-
-# if [ ! -e $FILEPATH ]; then
-#  echo Your datafile does not exist !!
-#  echo Looking for $FILEPATH
-# # return
-# # exit
-# fi
-
-# print out the setup:
-echo "Setting up for"
-echo "Atlas Release : $ATLAS_RELEASE"
-echo " installed in : $BASEPATH"
-echo ""
-echo "The run directory is    : $RUNPATH"
-echo "The data directory is   : $DATPATH"
-echo "The run number is       : $RUNSTR"
-echo "The number of events    : $EVTNO"
-echo "The gain of this run is : $GAIN"
-echo "The main jobOptions are : $JOBOPTIONFILE"
-echo ""
-echo "The output will be in   : $LOGFILE"
-
-# setup the athena enviroment
-
-#if [ ! -e $BASEPATH/$ATLAS_RELEASE/setup.sh ]; then
-#    echo "This AtlasRelease does not exist in this configuration !"
-#    echo $BASEPATH/$ATLAS_RELEASE
-##    return
-##    exit
-#fi
-
-# running at CERN ?
-if [ $BASEPATH = "/afs/cern.ch/atlas/software" ]; then
- source ~/Athena/cmthome/setup.sh -tag=$ATLAS_RELEASE,groupArea
- source ${BASEPATH}/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
-else
- # basic setup and distribution dependent variables
- # source ${BASEPATH}/${ATLAS_RELEASE}/setup.sh
- source ${BASEPATH}/${ATLAS_RELEASE}-MON/setup.sh
- export CMTPATH=${RUNPATH}:${CMTPATH}
- # multiple releases in installation directory ?
- # source ${BASEPATH}/${ATLAS_RELEASE}/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
- source ${BASEPATH}/${ATLAS_RELEASE}-MON/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
- # source ${BASEPATH}/kits/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
-fi
-
-# variables to access the CVS repository at CERN (via ssh)
-# P1:
-# export CVSROOT=:ext:atlas-sw.cern.ch:/atlascvs
-# export CVS_RSH=ssh
-
-
-
-if [ `basename $0` = "ec_mon.sh" ]; then
-
- if [ ! -e $JOBOPTIONFILE ]; then
-  echo No $JOBOPTIONFILE yet !
-  echo Getting it for you
-  get_files $JOBOPTIONFILE
- else
-  echo Using $JOBOPTIONFILE in your run directory !
- fi
- 
- MONDIR=~/scratch0/monitor.run.$RUNSTR
- TOPOPT=myTopOptions.py
- HEREDIR=`pwd` 
-
-
- mkdir -p $MONDIR
- cd $MONDIR
-
-cat <<EOF > $TOPOPT
-
-RunNumber = $RUNNUMBER
-LArDigitKey = "$GAIN"
-EvtNo=$EVTNO
-InputDir = "$DATPATH"
-
-EOF
-
- # now run athena
- echo starting athena
- athena.py -bs $TOPOPT $HEREDIR/$JOBOPTIONFILE >& $LOGFILE
-else
- echo just setting up the enviroment
-fi
-
diff --git a/Reconstruction/RecExample/RecExCommission/scripts/runmon.sh b/Reconstruction/RecExample/RecExCommission/scripts/runmon.sh
deleted file mode 100755
index 36896fafc39a32c55f5ee8291da0ce2cda9ae0d7..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/scripts/runmon.sh
+++ /dev/null
@@ -1,196 +0,0 @@
-#!/bin/bash
-#
-# script to run monitoring on phase 1 commissioning files.
-#
-# 30. Jan. 06   R. Seuster adopt it for online farm
-# 10. Jan. 06   R. Seuster make it run on kit and at CERN
-# 06. Jan. 06   R. Seuster, K. Voss
-#
-# After setting variables depending on the installation of
-# the atlas software, the enviroment and variables steering
-# the job are set in the first part.
-#
-# Next, a short python file with all variables for this job is
-# created.
-#
-# The job is run in its own run directory in the third part.
-#
-
-if [ $# -gt 4 ] ; then
-   echo "Script does not accept more than three parameters!"
-   echo ""
-   echo "usage: runmon.sh [runnumber [evtno [ gain [jobOptions.py]]]]"
-   echo "       runnumber     of the file to process (default 18720)"
-   echo "       gain          of the file to process (default HIGH)"
-   echo "       jobOptions.py of the algorithms to run (default RecExCommission_LAr_EXPERT-WEEK_jobOptions.py)"
-   return
-   exit
-fi
-
-##############################################################
-#          first part, general installation setup            #
-#                variables like runnumber                    #
-##############################################################
-
-# this is where your athena release is installed
-#export BASEPATH="/atlas/slc3"
-# at CERN this would be
-export BASEPATH="/afs/cern.ch/atlas/software"
-# P1:
-# export BASEPATH="/space/sw/offline_test"
-
-# which release to run
-ATLAS_RELEASE="11.2.0"
-
-# this is the run directory of the job, please give the absolute path !
-RUNPATH=${HOME}/scratch0/LArMonRun
-
-# the runnumber to process
-RUNNUMBER="1020"
-
-# the location of the datafiles disc or castor
-# DATPATH="/atlas/LargFec/Installation/"
-DATPATH="/castor/cern.ch/atlas/LargFec/ExpertWeek01"
-# P1:
-# DATPATH="/atlas-home/larmon/hma/data/"
-
-#
-EVTNO="10000000"
-
-# the gain of the noisefile
-GAIN=HIGH
-
-# the main joboptions file
-# JOBOPTIONFILE=RecExCommission_LArPhase1_jobOptions.py
-JOBOPTIONFILE=RecExCommission_LAr_EXPERT-WEEK_jobOptions.py
-
-# overwrite, if given on command line
-if [ $# -ge 1 ]; then
- RUNNUMBER="$1"
- shift
-fi
-
-# overwrite, if given on command line
-if [ $# -ge 1 ]; then
- EVTNO="$1"
- shift
-fi
-
-# overwrite, if given on command line
-if [ $# -ge 1 ]; then
- GAIN="$1"
- shift
-fi
-
-# overwrite, if given on command line
-if [ $# -eq 1 ]; then
- JOBOPTIONFILE=$1
- shift
-fi
-
-# construct string containing runnumber including leading 0's
-RUNSTR="`expr substr 0000000 1 \( 7 - length $RUNNUMBER \)`$RUNNUMBER"
-
-# name of logfile
-LOGFILE=logfile.$RUNSTR
-
-# do some basic cross checks, existance of directories and files
-if [ ! -d $RUNPATH ]; then
- echo Your run directory does not exist !!
- echo Please create one with
- echo \"mkdir $RUNPATH \"
- return
- exit
-fi
-
-if [ ! -d $DATPATH ]; then
- echo Your data directory does not exist !!
- echo $DATPATH
-# return
-# exit
-fi
-
-# FILEPATH="${DATPATH}daq_ROS-1_${GAIN}_InstPed_${RUNSTR}_file01.data"
-
-# if [ ! -e $FILEPATH ]; then
-#  echo Your datafile does not exist !!
-#  echo Looking for $FILEPATH
-# # return
-# # exit
-# fi
-
-# print out the setup:
-echo "Setting up for"
-echo "Atlas Release : $ATLAS_RELEASE"
-echo " installed in : $BASEPATH"
-echo ""
-echo "The run directory is    : $RUNPATH"
-echo "The data directory is   : $DATPATH"
-echo "The run number is       : $RUNSTR"
-echo "The number of events    : $EVTNO"
-echo "The gain of this run is : $GAIN"
-echo "The main jobOptions are : $JOBOPTIONFILE"
-echo ""
-echo "The output will be in   : $LOGFILE"
-
-# setup the athena enviroment
-
-#if [ ! -e $BASEPATH/$ATLAS_RELEASE/setup.sh ]; then
-#    echo "This AtlasRelease does not exist in this configuration !"
-#    echo $BASEPATH/$ATLAS_RELEASE
-##    return
-##    exit
-#fi
-
-# running at CERN ?
-if [ $BASEPATH = "/afs/cern.ch/atlas/software" ]; then
- source ~/cmthome/setup.sh -tag=$ATLAS_RELEASE,groupArea
- source ${BASEPATH}/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
-else
- # basic setup and distribution dependent variables
- # source ${BASEPATH}/${ATLAS_RELEASE}/setup.sh
- source ${BASEPATH}/${ATLAS_RELEASE}-MON/setup.sh
- export CMTPATH=${RUNPATH}:${CMTPATH}
- # multiple releases in installation directory ?
- # source ${BASEPATH}/${ATLAS_RELEASE}/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
- source ${BASEPATH}/${ATLAS_RELEASE}-MON/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
- # source ${BASEPATH}/kits/dist/${ATLAS_RELEASE}/Control/AthenaRunTime/*/cmt/setup.sh
-fi
-
-# variables to access the CVS repository at CERN (via ssh)
-# P1:
-# export CVSROOT=:ext:atlas-sw.cern.ch:/atlascvs
-# export CVS_RSH=ssh
-
-if [ `basename $0` = "runmon.sh" ]; then
-
- if [ ! -e $JOBOPTIONFILE ]; then
-  echo No $JOBOPTIONFILE yet !
-  echo Getting it for you
-  get_files $JOBOPTIONFILE
- else
-  echo Using $JOBOPTIONFILE in your run directory !
- fi
- 
- MONDIR=monitor.run.$RUNSTR
- TOPOPT=myTopOptions.py
- 
- mkdir -p $MONDIR
- cd $MONDIR
-
-cat <<EOF > $TOPOPT
-
-RunNumber = $RUNNUMBER
-LArDigitKey = "$GAIN"
-EvtNo=$EVTNO
-InputDir = "$DATPATH"
-
-EOF
-
- # now run athena
- echo starting athena
- athena.py -bs $TOPOPT ../$JOBOPTIONFILE >& $LOGFILE
-else
- echo just setting up the enviroment
-fi
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/Collisions_ATN.py b/Reconstruction/RecExample/RecExCommission/share/Collisions_ATN.py
deleted file mode 100644
index 8423966e91b09f75ee425f8ee39be7aa8a8a52d8..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/Collisions_ATN.py
+++ /dev/null
@@ -1,312 +0,0 @@
-from RecExConfig.RecFlags  import rec
-from AthenaCommon.BeamFlags import jobproperties
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-from AthenaCommon.GlobalFlags import globalflags
-
-if not 'RTTdata' in dir():
-    RTTdata=False
-
-if not 'RTTsim' in dir():
-    RTTsim=False
-
-if not 'ATNsim' in dir():
-        ATNsim=False
-
-if ATNsim:
-    RTTsim=True
-        
-rec.readRDO=False
-
-
-
-#uncomment if read BS
-rec.readRDO=True
-#uncomment if read AOD
-#rec.readAOD=True
-#uncomment if read ESD (note that cosmics DPD are best treated as ESD)
-#rec.readESD=True
-
-# uncomment if reading from TAG (for commissioning one of rec.readESD or rec.readRDO should be true)
-#rec.readTAG=True
-# note that a PoolFileCatalog with the files to navigate to should be available in the run directory
-# note that there is problem 
-
-
-#uncomment if want JiveXML file
-#rec.doJiveXML=True
-
-
-if RTTdata:
-    Input = 'data'
-    
-if RTTsim:    
-    Input = 'simrdo'
-
-if RTTdata or RTTsim:
-    Debug = False
-
-
-
-
-if not 'Input' in dir():
-    # uncomment if input is real data
-    Input='data'
-    # uncomment if input is simulation BS
-    # Input='simbs'
-    # uncomment if input is simulation RDO
-    # Input='simrdo'
-
-if not 'Debug' in dir():
-    Debug=True  # change to True to have printout information
-
-
-#specify beam type (default is "collisions", other values "cosmics" "singlebeam"
-# pick the correct one
-jobproperties.Beam.beamType = 'cosmics'
-# singlebeam not tested recently
-#jobproperties.Beam.beamType = 'singlebeam'
-
-
-
-
-
-
-# input configuration (lock to prevent override)
-# note that if reading from TAG, the input file spec is ignored,
-#   however the flag settings should still be consistent 
-if Input=='data':
-    if rec.readTAG():
-        # read TAG, navigate to ESD
-        athenaCommonFlags.PoolTAGInput=['../cosm/myTAGCOMM.root']
-        athenaCommonFlags.PoolInputQuery.set_Value_and_Lock("TRTTracks>0")
-    if rec.readRDO(): 
-       if jobproperties.Beam.beamType() == 'cosmics':
-           if RTTdata:
-               # this is ignored if TAG are read
-               athenaCommonFlags.BSRDOInput.set_Value_and_Lock(['/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-1._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-1._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-1._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-2._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-2._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-2._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-3._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-3._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-3._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-4._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-4._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-4._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-5._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-5._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-5._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-1._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-1._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-1._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-2._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-2._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-2._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-3._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-3._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-3._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-4._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-4._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-4._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-5._0001.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-5._0002.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0002.SFO-5._0003.data',
-                                                                '/castor/cern.ch/grid/atlas/DAQ/2008/91900/physics_IDCosmic/daq.ATLAS.0091900.physics.IDCosmic.LB0003.SFO-1._0001.data'])
-           else:
-               athenaCommonFlags.BSRDOInput.set_Value_and_Lock(['/afs/cern.ch/user/g/gencomm/w0/RTT_INPUT_DATA/CosmicATN/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-1._0001.10EVTS.data'])
-
-           globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-03-00-00')
-           globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-REPC-001-00')
-           # for running over data with field on need this to be setto true
-           from AthenaCommon.BFieldFlags import jobproperties
-           jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-           jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-           jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-
-        
-       else:
-           # this is ignored if tag are read
-           athenaCommonFlags.BSRDOInput.set_Value_and_Lock([
-            '/castor/cern.ch/grid/atlas/DAQ/2008/87863/physics_BPTX/daq.NoTag.0087863.physics.BPTX.LB0000.SFO-1._0001.data'])
-           # Detector description #jamie, use version with field (even though solenoid is off)
-
-           globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-04-00-00')
-           globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-REPC-001-00')
-           # for running over data with field on need this to be setto true
-           from AthenaCommon.BFieldFlags import jobproperties
-           jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-           jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-           jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-        
-       globalflags.InputFormat.set_Value_and_Lock('bytestream')
-
-
-
-    if rec.readAOD():    
-       if rec.readTAG():
-           raise "Cannot have both readAOD and readTAG true"
-       athenaCommonFlags.PoolAODInput.set_Value_and_Lock(["../cosm/myAOD.pool.root"])
-       rec.doWriteAOD=False
-       rec.doWriteESD=False 
-
-    if rec.readESD():    #lxplus225
-        ####L1CaloEM
-        # this is ignored if tags are read
-        athenaCommonFlags.PoolESDInput.set_Value_and_Lock(["../cosm/myESD.pool.root"])
-        rec.doWriteESD=False
-
-    if rec.readESD() or rec.readAOD():
-        globalflags.InputFormat.set_Value_and_Lock('pool')
-        globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-03-00-00')
-        globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-REPC-001-00')
-        from AthenaCommon.BFieldFlags import jobproperties
-        jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-        jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-        jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-
-
-
-elif Input=='overlay':
-    # not tested recently
-    from LArConditionsCommon.LArCondFlags import larCondFlags
-    larCondFlags.useShape=True
-
-    athenaCommonFlags.PoolRDOInput.set_Value_and_Lock([
-            'singleMuon100plusCosmics.RDO.020162._00002.pool.root'])
-
-    globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-03-00-00')
-    globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-REPC-001-00')
-
-    from AthenaCommon.BFieldFlags import jobproperties
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-
-    globalflags.InputFormat.set_Value_and_Lock('pool')
-    
-else:
-    if Input=='simbs':
-        #beware there might be sthg wrong in these BS files wrt ID cabling
-        athenaCommonFlags.BSRDOInput.set_Value_and_Lock(
-            ["/afs/cern.ch/user/g/gencomm/w0/jboyd/900Gev/BS/daq.0951001._0001.data",
-             "/afs/cern.ch/user/g/gencomm/w0/jboyd/900Gev/BS/daq.0951001._0002.data"])
-        globalflags.InputFormat.set_Value_and_Lock('bytestream')
-        globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-02-01-00')
-        globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIM-00-00-00')
-        doTileCosmicsTrigger=False
-    elif Input=='simrdo':
-
-        if jobproperties.Beam.beamType() == 'cosmics':
-            globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-Comm-02-00-00')
-            athenaCommonFlags.PoolRDOInput.set_Value_and_Lock( ["/afs/cern.ch/atlas/maxidisk/d17/dig.trtbarrel_ma_B100.root"])
-            from AthenaCommon.BFieldFlags import jobproperties
-            jobproperties.BField.solenoidOn=True
-            jobproperties.BField.barrelToroidOn=True
-            jobproperties.BField.endcapToroidOn=True
-            SpecialTileConfigHack=True
-            globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-CSC-01-00-00')
-
-        if jobproperties.Beam.beamType() == 'singlebeam':
-            athenaCommonFlags.PoolRDOInput.set_Value_and_Lock( ["/afs/cern.ch/user/g/gencomm/w0/RTT_INPUT_DATA/BeamGas/hijing.O.digit._00430.pool.root"])
-            globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-CSC-01-02-00')
-            from AthenaCommon.BFieldFlags import jobproperties
-            jobproperties.BField.solenoidOn=True
-            jobproperties.BField.barrelToroidOn=True
-            jobproperties.BField.endcapToroidOn=True
-            
-        else:
-            athenaCommonFlags.PoolRDOInput.set_Value_and_Lock(
-                ["castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00001.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00002.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00003.pool.root.1",    
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00004.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00005.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00006.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00007.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00008.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._00009.pool.root.1",
-                 "castor:/castor/cern.ch/user/i/ivivarel/900GeVminbias/RDO.024944._000010.pool.root.1"])         
-
-            globalflags.InputFormat.set_Value_and_Lock('pool')
-#            globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-02-01-00')
-#            globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIM-00-00-00')
-        # crashing :  No valid proxy for object TileTTL1CosmicsCnt  of type TileTTL1Container(CLID 2933)
-            doTileCosmicsTrigger=False
-
-    else:
-      raise RuntimeError,"Wrong Input value"
-
-    globalflags.DataSource.set_Value_and_Lock('geant4')    
-    #doTileCosmicsTrigger=False
-
-#hardcoded output specification (corresponds to optional flags from runArgs in transform skeleton)
-rec.RootNtupleOutput.set_Value_and_Lock("commission.ntuple.root")
-athenaCommonFlags.PoolESDOutput.set_Value_and_Lock("commissionESD.pool.root")
-rec.RootHistoOutput.set_Value_and_Lock("monitoring.root")
-if RTTdata or RTTsim:
-    if not ATNsim:
-        athenaCommonFlags.EvtMax.set_Value_and_Lock(500)
-    else:
-        athenaCommonFlags.EvtMax.set_Value_and_Lock(10)
-        
-else:
-    athenaCommonFlags.EvtMax.set_Value_and_Lock(10)
-#athenaCommonFlags.SkipEvents = 0
-
-
-if RTTsim:
-    rec.doHist=False
-else:
-    rec.doHist = True
-
-rec.doWriteTAG.set_Value_and_Lock(False)	
-rec.doWriteAOD=False
-rec.doAOD=False
-if RTTsim or Input=='overlay' or rec.readAOD():
-    rec.doMonitoring.set_Value_and_Lock(False)
-else:
-    rec.doMonitoring.set_Value_and_Lock(True)    
-
-if Input=='overlay':
-   topSequence.LArRawChannelBuilder.DataLocation = "LArDigitContainer_MC_Thinned"
-   topSequence.CBNT_AthenaAware.CBNTAA_LArDigits.ContainerKey = "LArDigitContainer_MC_Thinned"
-   ServiceMgr.MboySvc.UseAllSegments=0 # standard way to run Muonboy on collisions
-   topSequence.LArDigitThinner.Enable = False
-   topSequence.TileDigitsFilter.Enable = False
-
-if Debug:
-    # DEBUG/VERBOSE options
-    rec.doNameAuditor=True
-    rec.doPerfMon=True
-    rec.doDetailedPerfMon=True
-    rec.doDumpProperties=True
-    rec.doDumpTES=True
-    # rec.OutputLevel = INFO
-
-
-include("RecExCommission/RecExCommissionRepro.py")                
-
-# filtered ESD calib and tracking ntuple if from RDO
-if rec.readRDO():
-    from AthenaMonitoring.DQMonFlags import DQMonFlags
-    DQMonFlags.histogramFile.set_Value_and_Lock( "myMonitoring.root" )
-
-    #crashing in 14.5.X VAL 2 3 Feb
-    include("TrigT1CTMonitoring/CTPFlags.py")
-    CTPFlags.doCTRDO=False
-
-if RTTsim:
-    rec.doTrigger=False
-
-#FIXME very temporary, crashing
-#if rec.doJiveXML():
-#    include.block("TrigJiveXML/TrigJiveXML_DataTypes.py")
-
-
-include("RecExCommon/RecExCommon_topOptions.py")                
-
-if Debug:
-    from IOVDbSvc.CondDB import conddb
-    conddb.dumpFolderTags('iovfolderlist.txt',True)
diff --git a/Reconstruction/RecExample/RecExCommission/share/CombinedMuonFit_jobOptions.py b/Reconstruction/RecExample/RecExCommission/share/CombinedMuonFit_jobOptions.py
deleted file mode 100644
index 0fbf5498db6d3776037ccbc8e93faef780e542c9..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/CombinedMuonFit_jobOptions.py
+++ /dev/null
@@ -1,49 +0,0 @@
-from TrkGlobalChi2Fitter.TrkGlobalChi2FitterConf import Trk__GlobalChi2Fitter
-GlobalChi2FitterComb=Trk__GlobalChi2Fitter(name='GlobalChi2FitterComb',
-                                       StraightLine=not jobproperties.BField.solenoidOn(),
-                                       ExtrapolationTool=InDetExtrapolator,
-                                       NavigatorTool = InDetNavigator,
-                                       PropagatorTool = InDetPropagator,
-                                       RotCreatorTool = InDetRotCreator,
-                                       OutlierCut = 5.,
-                                       ExternalMat = True,
-                                       sortingReferencePoint = [0,25000,0])
-
-ToolSvc += GlobalChi2FitterComb
-
-print(GlobalChi2FitterComb)
-
-from CombinedMuonRefit.CombinedMuonRefitConf import ReFitMuon
-MuonReFitTrack2 = ReFitMuon (name = "CombMuonRefit",
-                             FitterTool     = GlobalChi2FitterComb,
-                             Cosmics=True,
-                             IDTrackName="Tracks",
-                             MSTrackName="MooreTracks",
-                             matEffects=0,
-                             runOutlier=False,
-                             NewTrackName="Combined_Tracks",
-                             OutputLevel=3)
-
-topSequence += MuonReFitTrack2
-print(MuonReFitTrack2)
-
-#GlobalChi2FitterBarrel.OutputLevel=1
-#GlobalChi2FitterBarrel.NumericalDerivs=True
-#MdtDriftCircleOnTrackCreator = Service( "ToolSvc.Muon::MdtDriftCircleOnTrackCreator" )
-#MdtDriftCircleOnTrackCreator.CreateTubeHit = True
-#MdtDriftCircleOnTrackCreator.OutputLevel=1
-#MdtTubeHitOnTrackCreator = Service( "ToolSvc.Muon::MdtTubeHitOnTrackCreator" )
-#MdtTubeHitOnTrackCreator.CreateTubeHit = True
-#MdtTubeHitOnTrackCreator.OutputLevel=1
-
-
-#mooretotracktool=Service("ToolSvc.Muon::MooreToTrackTool")
-#mooretotracktool.OutputLevel=1
-
-#ToolSvc.TrackFitter.OutputLevel=1
-#ToolSvc.GlobalChi2FitterBarrel.LayerCreatorTool="Trk::MuidDynamicLayerCreator/MuidDynamicLayerCreator"
-#ToolSvc.GlobalChi2FitterBarrel.ExternalMat=True
-#ToolSvc.GlobalChi2FitterBarrel.Momentum=5000
-#ToolSvc.MuidDynamicLayerCreator.Cosmics=True
-#MuonReFitTrack2.OutputLevel=1
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/CosmicSimulationRecoSetup-HLT.py b/Reconstruction/RecExample/RecExCommission/share/CosmicSimulationRecoSetup-HLT.py
deleted file mode 100644
index 6a6c1e12d9b4f75f992979ea2246fb15a17c6243..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/CosmicSimulationRecoSetup-HLT.py
+++ /dev/null
@@ -1,56 +0,0 @@
-LArDigitKey='FREE'
-
-from AthenaCommon.GlobalFlags import globalflags
-globalflags.DetGeo = 'commis'
-globalflags.DataSource.set_Value_and_Lock('geant4')
-
-from RecExConfig.RecFlags import rec
-rec.Commissioning.set_Value_and_Lock(True)
-rec.oldFlagTopSteering.set_Value_and_Lock(False)
-#rec.doTruth.set_Value_and_Lock(False)
-#rec.doJiveXML.set_Value_and_Lock(True)
-
-if rec.readRDO :
-    rec.doTrigger.set_Value_and_Lock(True)
-    from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
-    #####for l1 simulation configuration
-    tf.doCosmicSim.set_Value_and_Lock(True)
-    #############
-    tf.readLVL1configFromXML.set_Value_and_Lock(True)
-    tf.readHLTconfigFromXML.set_Value_and_Lock(True)
-
-    tf.triggerMenuSetup.set_Value_and_Lock('cosmic_default')
-
-
-# for running over data with field on need this to be setto true
-from AthenaCommon.BFieldFlags import jobproperties
-
-# set the field properties based on DetDescrVersion
-if globalflags.DetDescrVersion.get_Value().find('ATLAS-GEONSF-') >= 0 :
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMCT-00-00-00')
-    print('configuring reco with solenoid off, toroid on from DetDescrVersion:',globalflags.DetDescrVersion.get_Value())
-    
-if globalflags.DetDescrVersion.get_Value().find('ATLAS-GEO-') >= 0 :
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMCST-00-00-00')
-    print('configuring reco with solenoid on, toroid on from DetDescrVersion:',globalflags.DetDescrVersion.get_Value())
-    
-if globalflags.DetDescrVersion.get_Value().find('ATLAS-GEONF-') >= 0 :
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(False)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(False)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMC-00-00-00')
-    print('configuring reco with solenoid off, toroid off from DetDescrVersion:',globalflags.DetDescrVersion.get_Value())
-        
-if globalflags.DetDescrVersion.get_Value().find('ATLAS-GEONTF-') >= 0 :
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(False)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(False)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMCS-00-00-00')
-    print('configuring reco with solenoid on, toroid off from DetDescrVersion:',globalflags.DetDescrVersion.get_Value())
- 
diff --git a/Reconstruction/RecExample/RecExCommission/share/CosmicSimulationRecoSetup.py b/Reconstruction/RecExample/RecExCommission/share/CosmicSimulationRecoSetup.py
deleted file mode 100644
index 0065ac4c43541643a9ecac53527ffbccb9512af1..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/CosmicSimulationRecoSetup.py
+++ /dev/null
@@ -1,63 +0,0 @@
-LArDigitKey='FREE'
-
-from AthenaCommon.GlobalFlags import globalflags
-globalflags.DetGeo = 'commis'
-globalflags.DataSource.set_Value_and_Lock('geant4')
-
-from RecExConfig.RecFlags import rec
-rec.Commissioning.set_Value_and_Lock(True)
-rec.oldFlagTopSteering.set_Value_and_Lock(False)
-#rec.doTruth.set_Value_and_Lock(False)
-#rec.doJiveXML.set_Value_and_Lock(True)
-
-if rec.readRDO :
-    rec.doTrigger.set_Value_and_Lock(True)
-    from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
-    #####for l1 simulation configuration
-    tf.doCosmicSim.set_Value_and_Lock(True)
-    #############
-    tf.readLVL1configFromXML.set_Value_and_Lock(True)
-    tf.readHLTconfigFromXML.set_Value_and_Lock(True)
-
-    tf.triggerMenuSetup.set_Value_and_Lock('Cosmic2009_v1')
-
-    # This will need to be changed when things work better
-    tf.inputLVL1configFile.set_Value_and_Lock('TriggerMenuXML/LVL1config_Cosmic2009_v1_7-bit_trigger_types.xml')
-
-globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-07-00-00')
-#globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-CSC-01-00-00')
-
-# for running over data with field on need this to be setto true
-from AthenaCommon.BFieldFlags import jobproperties
-
-# set the field properties based on DetDescrVersion
-if globalflags.DetDescrVersion=='ATLAS-GEONSF-07-00-00':
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMCT-00-00-00')
-    print('configuring reco with solenoid off, toroid on from DetDescrVersion: ATLAS-GEONSF-07-00-00')
-    
-if globalflags.DetDescrVersion=='ATLAS-GEO-07-00-00':
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMCST-00-00-00')
-    print('configuring reco with solenoid on, toroid on from DetDescrVersion: ATLAS-GEO-07-00-00')
-    
-if globalflags.DetDescrVersion=='ATLAS-GEONF-07-00-00':
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(False)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(False)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMC-00-00-00')
-    print('configuring reco with solenoid off, toroid off from DetDescrVersion: ATLAS-GEONF-07-00-00')
-        
-if globalflags.DetDescrVersion=='ATLAS-GEONTF-07-00-00':
-    jobproperties.BField.solenoidOn.set_Value_and_Lock(True)
-    jobproperties.BField.barrelToroidOn.set_Value_and_Lock(False)
-    jobproperties.BField.endcapToroidOn.set_Value_and_Lock(False)
-    globalflags.ConditionsTag.set_Value_and_Lock('OFLCOND-SIMCS-00-00-00')
-    print('configuring reco with solenoid on, toroid off from DetDescrVersion: ATLAS-GEONTF-07-00-00')
-                            
-
-                                                
diff --git a/Reconstruction/RecExample/RecExCommission/share/Cosmics_ATN.py b/Reconstruction/RecExample/RecExCommission/share/Cosmics_ATN.py
deleted file mode 100644
index ef982d6c550caf4caa97c0e7a7cf01fac3e1f039..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/Cosmics_ATN.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from AthenaCommon.BeamFlags import jobproperties
-jobproperties.Beam.beamType.set_Value_and_Lock("cosmics")
-# the main jobOpt
-include("RecExCommission/Collisions_ATN.py")                
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/GetInputFiles.py b/Reconstruction/RecExample/RecExCommission/share/GetInputFiles.py
deleted file mode 100644
index a1528d067bc3949e2daaa25fa69679cce279128f..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/GetInputFiles.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from os import popen
-
-def GetInputFiles(inputPath,filePattern):
-    print("Searching for files with pattern '",filePattern,"' in ",inputPath)
-    fileList=[]
-    if (inputPath[0:8]=='/castor/'):
-        cmd='nsls'
-    else:
-        cmd='ls -1'
-
-    for f in popen("%(cmd)s %(path)s | grep '%(pattern)s'" \
-                   % {'cmd':cmd,'path':inputPath,'pattern':filePattern}):
-        if f[len(f)-1:]=='\n':
-            f=f[0:len(f)-1]
-        fileList+=[inputPath+'/'+f]
-    print("Found ",len(fileList), " files")
-    return fileList
-    
-
-def GetInputFilesFromTokens(inputPath,runnumber,prefix=".*",trigger=".*"):
-    #pattern=prefix+"\.00"+str(runnumber)+"\..*"
-    pattern="%(prefix)s.*%(rn)07d.%(trig)s.*" % {'prefix' : prefix ,'rn' : runnumber,'trig' : trigger}
-    
-    return GetInputFiles(inputPath,pattern)
diff --git a/Reconstruction/RecExample/RecExCommission/share/NoRandomTrig.py b/Reconstruction/RecExample/RecExCommission/share/NoRandomTrig.py
deleted file mode 100644
index 39ef526a7ce5ad14ac95a060c2a104b5693a14cc..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/NoRandomTrig.py
+++ /dev/null
@@ -1,5 +0,0 @@
-#Random trigger off for reproducibility
-from TrigSteering.TrigSteeringConfig import ScalerSvc
-ScalerSvc = ScalerSvc()
-ScalerSvc.DefaultType = "HLT::PeriodicScaler"
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommission.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommission.py
deleted file mode 100644
index 9bdbdae43cdd53235ff7a6cd5a48aa33322aa30f..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommission.py
+++ /dev/null
@@ -1,21 +0,0 @@
-include("RecExCommission/MinimalCommissioningSetup.py")
-
-# not needed anymore (RS, Dec. 6th 2010)
-# needed to get TRT track extension working
-# from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags
-# TrkDetFlags.TRT_BuildStrawLayers.set_Value(True)
-
-# setup trigger reading from COOL (obo Clemencia)
-if rec.doTrigger():
-    from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
-    tf.configForStartup="HLTonline"
-    tf.configForStartup.lock()
-
-from RecExConfig.RecFlags  import rec
-rec.ScopingLevel.set_Value_and_Lock(1)
-# done in the trf
-# rec.Production=True
-
-#from LArConditionsCommon.LArCondFlags import larCondFlags
-#larCondFlags.LArCoolChannelSelection.set_Value_and_Lock("3:238,306,313,319,325,331,338,344,350,1001:1012,1021,1022")
-#larCondFlags.OFCShapeFolder.set_Value_and_Lock('5samples3bins17phases') 
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionCommonFlags_jobOptions.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommissionCommonFlags_jobOptions.py
deleted file mode 100644
index d08ce74f2f95f2befd5268406faa51e63801e316..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionCommonFlags_jobOptions.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# ---------------------------------------------------------------------------
-# RecExCommon flags
-# ---------------------------------------------------------------------------
-
-include.block("RecExCommission/RecExCommissionCommonFlags_jobOptions.py")
-
-
-# ---------------------------------------------------------------------------
-# AthenaCommonFlags
-# ---------------------------------------------------------------------------
-
-# start using the new job properties
-from AthenaCommon.JobProperties import jobproperties
-
-# AthenaCommon flags
-from AthenaCommon.AthenaCommonFlags  import athenaCommonFlags
-
-# -----------------------------------------------------------------------
-# being general reconstruction flags
-# -----------------------------------------------------------------------
-from RecExConfig.RecFlags  import jobproperties, rec
-
-#Number of events to process or generate
-athenaCommonFlags.EvtMax=10
-# Number of events to skip when reading an input POOL file.
-athenaCommonFlags.SkipEvents = 0
-# The list of input POOL files containing collections of Raw data objects
-# ['myfile.pool.root'] : file in run directory
-# ['LFN:mylogicalfile.root']: logical file name as specified in PoolFileCatalog.cml
-# ['rfio:/castor/cern.ch/somepath/somefile.pool.root']:file on castor (at CERN)
-athenaCommonFlags.PoolRDOInput = ["/afs/cern.ch/atlas/maxidisk/d17/data/TileTest/dig.05AprProd-10000000.root"]
-# The list of input ByteStream files containing collections of Raw data objects
-#athenaCommonFlags.BSRDOInput = ["/castor/cern.ch/grid/atlas/t0/perm/DAQ/daq.m4_combined.0019783.Default.L1TT-b00000001.LB0001.SFO-1._0001.data"]
-athenaCommonFlags.BSRDOInput = ["/castor/cern.ch/grid/atlas/t0/perm/DAQ/daq.m4_combined.0020720.debug.L1TT-b00000001.LB0000.SFO-1._0001.data"]
-#athenaCommonFlags.BSRDOInput = ["/castor/cern.ch/grid/atlas/DAQ/M6/daq.NoTag.0043719.physics.HLT_Cosmic_AllTeIDSelected.LB0000.SFO-1._0001.data"]
-# The list of input POOL files containing collections of ESD objects
-athenaCommonFlags.PoolESDInput = ["castor:/castor/cern.ch/grid/atlas/t0/perm/M4reproc/0020720/FESD/M4.0020720.physics.L1TT-b00000010.FESD.v130026.part0001._lumi0002._0001.1"]
-# The name of the output POOL file containing collections of ESD objects
-athenaCommonFlags.PoolESDOutput = "ESD.root"
-# The list of input POOL files containing collections of TAGs
-#athenaCommonFlags.PoolTAGInput = "TAG.root"
-# The name of the output POOL file containing collections of TAGs
-athenaCommonFlags.PoolTAGOutput = "TAG.root" 
-rec.PoolTAGCOMOutput="TAGCOM.root"
-athenaCommonFlags.PoolInputQuery = "TRT_Cosmic_Tracks"
-#AllowIgnoreExistingDataObject
-#AllowIgnoreConfigError
-#athenaCommonFlags.AthenaCommonFlags
-
-# -----------------------------------------------------------------------
-# GlobalFlags
-# -----------------------------------------------------------------------
-
-# GlobalFlags 
-from AthenaCommon.GlobalFlags import globalflags
-
-# Which detector configuration : atlas, combined test beam or commisisoning
-# Commissioning: 'commis'
-globalflags.DetGeo = 'commis'
-# Detector geometry DB tag
-globalflags.DetDescrVersion="ATLAS-CommNF-04-00-00"
-# data source: Where does the data comes from : real data, geant3 or geant4
-# real data: data
-# simulation: 'geant4'
-globalflags.DataSource = 'data'
-# Input format:
-# to read from BS: 'bytestream'
-# to read from ESD, RDO Pool files = 'pool'
-globalflags.InputFormat = 'bytestream'
-
-# ---------------------------------------------------------------------------
-# Beam flags to define the 
-# ---------------------------------------------------------------------------
-# Type of data to reconstruct: 'singlebeam','cosmics'
-from AthenaCommon.BeamFlags import jobproperties
-#jobproperties.Beam.beamType.set_Value_and_Lock("cosmics")
-
-
-# ---------------------------------------------------------------------------
-# BField flags to define the
-# ---------------------------------------------------------------------------
-# Field configuration: solenoidOn()   barrelToroidOn() endcapToroidOn()
-from AthenaCommon.BFieldFlags import jobproperties
-jobproperties.BField.solenoidOn=False
-jobproperties.BField.barrelToroidOn=False
-jobproperties.BField.endcapToroidOn=False
-
-# -----------------------------------------------------------------------
-# flags to drive the general behaviour of Reconstruction configuration
-# -----------------------------------------------------------------------
-#from RecExConfig.RecConfFlags import recConfFlags
-
-
-#RecConfFlags.AllowDisable
-#RecConfFlags.AllowIgnoreConfigError	
-#RecConfFlags.AllowIgnoreExistingDataObject	
-#RecConfFlags.RecConfFlags
-
-rec.CBNTAthenaAware = True	
-rec.doAOD = False
-#rec.doAODall	
-#rec.doAODCaloCells	
-rec.doCBNT = True	
-#rec.doCheckDictionary	
-#rec.doCheckJOT	
-#rec.doDetailedAuditor	
-#rec.doDumpMC	
-#rec.doDumpPoolInputContent	
-#rec.doDumpProperties	
-#rec.doDumpTDS	
-#rec.doDumpTES	
-#rec.doEdmMonitor	
-#rec.doESD = True
-# rec.doFileMetaData TODO might replace doDetStatus???
-rec.doDetStatus = True
-#rec.doFloatingPointException	
-#rec.doHeavyIon	
-rec.doHist = True
-rec.doJiveXML = False	
-#rec.doLowPt	
-#rec.doMinimalRec	
-#rec.doNameAuditor	
-#rec.doPerfMon = False
-rec.doPersint = False	
-#rec.doRestrictedESD	
-#rec.doSGAuditor	
-#rec.doShowSizeStatistics	
-#rec.doTimeLimit	
-#rec.doTruth	
-rec.doWriteAOD = False
-#rec.doWriteBS
-# If True writes out ESD file
-rec.doWriteESD = True
-#rec.doWriteRDO
-# If True writes out TAG file
-rec.doWriteTAG = True	
-#rec.noESDTrigger	
-#rec.oldFlagCompatibility	
-#rec.oldFlagLandMine	
-#rec.oldFlagTopSteering
-# General msg output level ALL,VERBOSE,DEBUG,INFO,WARNING,ERROR,FATAL
-rec.OutputLevel	= INFO
-#rec.readAOD
-#If True runs on ESD file  
-rec.readESD = False	
-#rec.readRDO	
-#rec.readTAG	
-#rec.Rec	
-#rec.RecAlgs	
-rec.RootHistoOutput = "monitoring.root"	
-rec.RootNtupleOutput = "ntuple.root"	
-#rec.TAGFromRDO	
-#rec.UserAlgs
-
-rec.doTile = True
-rec.doLArg = True
-rec.doInDet = True
-rec.doMuon = True
-
-## Switch on/off Calibration Ntuple
-#from MuonRecExample.MuonRecFlags import muonRecFlags
-#from MuonCalibAlgs.MuonCalibFlags import muonCalibFlags
-#muonRecFlags.doCalib = True
-#muonCalibFlags.Mode = 'trackNtuple'
-#muonCalibFlags.EventTag = 'Moore'
-
-### Switch on/off Combined Algorithms
-from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags,muidFlags
-muonCombinedRecFlags.doMuGirl = False
-muonCombinedRecFlags.doCaloTrkMuId = True
-muonCombinedRecFlags.doStaco = False
-muonCombinedRecFlags.doMuTag = False
-muonCombinedRecFlags.doAODMuons = True  # switch off AOD making
-muonCombinedRecFlags.doMergeMuons = True # switch off merging for ESD
-muidFlags.SegmentTagger = 'MuTagIMO' # switch off  by ''
-#muidFlags.Extrapolated = 'MuidStandalone' # switch off  by ''
-muidFlags.Extrapolated = '' # switch off  by ''
-#muidFlags.Combined = 'MuidCombined' # NOW not run # switch off  by ''
-muidFlags.Combined = 'CombinedMuonFit' # switch off  by ''
-
-
-# ----------------------------------------------------------------------
-# being flags to switch algorithm on/off
-# ----------------------------------------------------------------------
-from RecExConfig.RecAlgsFlags  import recAlgs
-
-#recAlgs.doTrigger 
-
-#
-# hack...
-#
-from RecExConfig.RecFlags import rec
-if not 'InDetKeys' in dir():
-    #
-    # --- setup StoreGate keys (JobProperties!)
-    #
-    print("InDetRec_jobOptions: InDetKeys not set before - I import them now")
-    from InDetRecExample.InDetKeys import InDetKeys
-#    InDetKeys.lock_JobProperties()
-                                                                         
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionConDB_jobOptions.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommissionConDB_jobOptions.py
deleted file mode 100644
index fcb88ffede38203045efd9d7fce9cbd76e4a631a..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionConDB_jobOptions.py
+++ /dev/null
@@ -1,24 +0,0 @@
-if rec.doLArg() or rec.doTile():
-    if globalflags.DataSource()=='geant4':
-        include("LArConditionsCommon/LArIdMap_MC_jobOptions.py")
-        include("LArConditionsCommon/LArConditionsCommon_MC_jobOptions.py")
-    else :
-        include("LArConditionsCommon/LArIdMap_comm_jobOptions.py")
-        include("LArConditionsCommon/LArConditionsCommon_comm_jobOptions.py")
-
-    include( "LArIdCnv/LArIdCnv_joboptions.py" )
-    include ("CaloDetMgrDetDescrCnv/CaloDetMgrDetDescrCnv_joboptions.py")
- 
-if rec.doTile():
-    include( "TileIdCnv/TileIdCnv_jobOptions.py" )
-    include( "TileConditions/TileConditions_jobOptions.py" )        
-
-if rec.doMuon():
-    #MW/RN
-   
-    import MuonRecExample.MuonReadCalib
-    #    GeoModelSvc.MuonVersionOverride = "MuonSpectrometer-R.01.01.Initial.Light"
-    #if not globalflags.DataSource()=='geant4':
-    #    MuDetCosmicFlags.doCalibCOOLprod=True        
-    #    include("MuonCommRecExample/MuDetCosmicConDB_jobOptions.py")
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionData_links.csh b/Reconstruction/RecExample/RecExCommission/share/RecExCommissionData_links.csh
deleted file mode 100644
index 92e3e82a3b2b9e58706355868a79dc3eb663be8e..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionData_links.csh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/tcsh
-if ( -e sqlite200 )then
-    rm -r sqlite200
-endif
-
-ln -s /afs/cern.ch/atlas/project/database/DBREL/packaging/DBRelease/current/geomDB .
-ln -s /afs/cern.ch/atlas/conditions/poolcond/catalogue/poolcond .
-
-setenv STAGE_HOST castoratlas 
-setenv RFIO_USE_CASTOR_V2 YES 
-setenv STAGE_SVCCLASS atlcal
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionData_links.sh b/Reconstruction/RecExample/RecExCommission/share/RecExCommissionData_links.sh
deleted file mode 100644
index abab5dc3ec8b708fa9ab7f79338269dc30ce0459..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionData_links.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-if [ -e sqlite200 ]
-then
-    rm -r sqlite200
-fi
-
-ln -s /afs/cern.ch/atlas/project/database/DBREL/packaging/DBRelease/current/geomDB .
-ln -s /afs/cern.ch/atlas/conditions/poolcond/catalogue/poolcond .
-
-export STAGE_HOST=castoratlas 
-export RFIO_USE_CASTOR_V2=YES 
-export STAGE_SVCCLASS=atlcal
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionRepro.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommissionRepro.py
deleted file mode 100644
index 82a65d7c95922e2c2b59e835d7bfa1181fe23e8a..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommissionRepro.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# general configuration for commissioning
-from RecExConfig.RecFlags  import rec
-from RecExConfig.RecAlgsFlags  import recAlgs
-from AthenaCommon.BeamFlags import jobproperties
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-from AthenaCommon.GlobalFlags import globalflags
-
-#Minimally required flags for commissioning
-rec.ScopingLevel.set_Value_and_Lock(2)
-include("RecExCommission/MinimalCommissioningSetup.py")
-
-#default
-
-#Commissioning Flags
-# include( "RecExCommission/RecExCommissionCommonFlags_jobOptions.py" )
-#include( "RecExCommission/RecExCommissionFlags_jobOptions.py" )
-#should not be there
-#from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags,muidFlags
-#muonCombinedRecFlags.doMuGirl = False
-#muonCombinedRecFlags.doCaloTrkMuId = True
-#muonCombinedRecFlags.doStaco = False
-#muonCombinedRecFlags.doMuTag = False
-#muonCombinedRecFlags.doAODMuons = True  # switch off AOD making
-#muonCombinedRecFlags.doMergeMuons = True # switch off merging for ESD
-#muidFlags.SegmentTagger = 'MuTagIMO' # switch off  by ''
-#muidFlags.Extrapolated = 'MuidStandalone' # switch off  by ''
-#muidFlags.Extrapolated = '' # switch off  by ''
-#muidFlags.Combined = 'MuidCombined' # NOW not run # switch off  by ''
-#muidFlags.Combined = 'CombinedMuonFit' # switch off  by ''
-
-
-   
-#if read from TAG, cannot write TAG at the same time
-#these lines should be in RecExCommon_flags.py
-if rec.readTAG():
-    rec.doWriteTAGCOM=False
-
-#rec.doTrigger=True
-#jet problem right now
-#from JetRec.JetRecFlags import jetFlags
-#jetFlags.Enabled.set_Value_and_Lock(False)
-recAlgs.doObjMissingET.set_Value_and_Lock(False)
-recAlgs.doMissingETSig.set_Value_and_Lock(False)
-
-
-#rec.doJetMissingETTag.set_Value_and_Lock(False)
-#from RecExConfig.RecAlgsFlags  import recAlgs
-#recAlgs.doMissingET.set_Value_and_Lock(True)
-#rec.doEgamma.set_Value_and_Lock(False)
-#rec.doTau.set_Value_and_Lock(False)
-#recAlgs.doMuonSpShower.set_Value_and_Lock(False)
-
-
-# For Trigger configuration during the reprocessing 08.
-# Will allow to read LVL1 thresholds from COOL instead of from hard-coded XML file.
-# For info: Sylvie Brunet, Joerg Stelzer
-from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
-tf.configForStartup= "HLTonline"
-tf.configForStartup.lock()
-
-
-from LArConditionsCommon.LArCondFlags import larCondFlags
-larCondFlags.LArCoolChannelSelection.set_Value_and_Lock("3:238,306,313,319,325,331,338,344,350,1001:1012,1021,1022")
-#Option: Remove Conditions for HECC Quadrant with broken LV Power supply
-#larCondFlags.LArCoolChannelSelection.set_Value_and_Lock("3:238,306,313,325,331,338,344,350,1001:1012,1021,1022")
-larCondFlags.OFCShapeFolder.set_Value_and_Lock('5samples3bins17phases')
-larCondFlags.SingleVersion.set_Value_and_Lock(False)
-larCondFlags.useShape.set_Value_and_Lock(True)
-
-
-#Switch off EM-Topo cluster corrections for 2nd round of 2008 reprocessing
-from CaloClusterCorrection.CaloClusterCorrectionFlags import caloClusterCorrectionFlags
-caloClusterCorrectionFlags.CaloTopoEMWhichCorrection.set_Value ("none")
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_RemoveHLT_TrigTauRecMerged.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommission_RemoveHLT_TrigTauRecMerged.py
deleted file mode 100644
index b51d8e2580d10c65f5fa95937e93dc6c99a51d58..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_RemoveHLT_TrigTauRecMerged.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# RecExCommission_RemoveHLT_TrigTauRecMerged
-# Emergency hack to remove HLT_TrigTauRecMerged containers from ESD
-# because of failure : ERROR CreateRep failed, key = HLT_TrigTauRecMerged
-# C. Mora, May 4th, 2009  based on W. Lampl
-
-from AthenaCommon.Logging import logging
-log_HLTTau = logging.getLogger( 'RemoveHLT_TrigTauRecMerged' )
-
-try:
-    from AthenaCommon.AppMgr import theApp
-    StreamESD = theApp.getOutputStream( "StreamESD" )
-    StreamESD.ItemList.remove("Analysis::TauJetContainer#HLT_TrigTauRecMerged")
-    log_HLTTau.info("Removing Analysis::TauJetContainer#HLT_TrigTauRecMerged from ESD ItemList")
-except:
-    pass
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_RemoveTRTBSErr.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommission_RemoveTRTBSErr.py
deleted file mode 100644
index 5a0d1d1b85dcd6893ef00602449ff8d90b04dbfe..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_RemoveTRTBSErr.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#RecExCommission_RemoveTRTBSERR
-# Emergency hack to remove TRT BS Error containers from ESD
-# because of unresonably large disk-space consumption
-# Walter Lampl, Dec 16th, 2008
-
-from AthenaCommon.Logging import logging
-log_TRT_BS_ERR = logging.getLogger( 'RemoveTRTBSErrFromESD' )
-
-# Setup the output sequence
-from AthenaCommon.AppMgr import theApp
-StreamESD = theApp.getOutputStream( "StreamESD" )
-
-try:
-    StreamESD.ItemList.remove("TRT_BSErrContainer#TRT_ByteStreamErrs")
-    log_TRT_BS_ERR.info("Removing TRT_BSErrContainer#TRT_ByteStreamErrs from ESD ItemList")
-except:
-    pass
-try:
-    StreamESD.ItemList.remove("TRT_BSIdErrContainer#TRT_ByteStreamIdErrs")
-    log_TRT_BS_ERR.info("Removing TRT_BSIdErrContainer#TRT_ByteStreamIdErrs from ESD ItemList")
-except:
-    pass
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_SingleBeamtopOptions.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommission_SingleBeamtopOptions.py
deleted file mode 100755
index abb3de82dba86a0c370cb0ef5085e0b02652ff06..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_SingleBeamtopOptions.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from AthenaCommon.BeamFlags import jobproperties
-jobproperties.Beam.beamType.set_Value_and_Lock("singlebeam")
-
-include("RecExCommon/RecExCommon_topOptions.py")
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_fastRepro.py b/Reconstruction/RecExample/RecExCommission/share/RecExCommission_fastRepro.py
deleted file mode 100644
index d079e1485366427961590f117db4886f76a21d29..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_fastRepro.py
+++ /dev/null
@@ -1,28 +0,0 @@
-include("RecExCommission/MinimalCommissioningSetup.py")
-
-
-## tempory fix to get TCT to run whil bug 51007 is being fixed
-#DQMonFlags.doMuonTrackMon.set_Value_and_Lock(False)
-#DQMonFlags.doMuonSegmentMon.set_Value_and_Lock(False)
-#DQMonFlags.doMuonAlignMon.set_Value_and_Lock(False)
-#DQMonFlags.doMuonPhysicsMon.set_Value_and_Lock(False)
-
-#Temprary workaround for bug 51068
-#DQMonFlags.doTauMon.set_Value_and_Lock(False) 
-
-# needed to get TRT track extension working
-from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags
-TrkDetFlags.TRT_BuildStrawLayers.set_Value(True)
-
-# setup trigger reading from COOL (obo Clemencia)
-from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
-tf.configForStartup="HLTonline"
-tf.configForStartup.lock()
-
-from RecExConfig.RecFlags  import rec
-rec.ScopingLevel.set_Value_and_Lock(2)
-
-from LArConditionsCommon.LArCondFlags import larCondFlags
-larCondFlags.SingleVersion=False
-larCondFlags.LArCoolChannelSelection.set_Value_and_Lock("3:238,306,313,319,325,331,338,344,350,1001:1012,1021,1022")
-larCondFlags.OFCShapeFolder.set_Value_and_Lock('5samples3bins17phases') 
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_links.sh b/Reconstruction/RecExample/RecExCommission/share/RecExCommission_links.sh
deleted file mode 100755
index 5fca3dee361d88eff7e8535cd0d4ee2ce34c1471..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecExCommission_links.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-ln -s /afs/cern.ch/user/c/chriss/public/EndcapSoftware/InDetLayerMaterial-ATLAS-DC3-07.pool.root
-rm -rf sqlite200
-ln -s /afs/cern.ch/user/a/atlcond/coolrep/sqlite200
-ln -s /afs/cern.ch/atlas/project/database/DBREL/packaging/DBRelease/current/geomDB .
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecoPixelStreamSetup.py b/Reconstruction/RecExample/RecExCommission/share/RecoPixelStreamSetup.py
deleted file mode 100644
index 3d3368596de2e232dd63d0a9e8fd24ad00f1a494..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecoPixelStreamSetup.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from InDetRecExample.InDetJobProperties import InDetFlags
-InDetFlags.useBeamConstraint.set_Value_and_Lock(False)
-InDetFlags.selectSCTIntimeHits=False
-InDetFlags.doVtxLumi.set_Value_and_Lock(True)
-
-AODFlags.TrackParticleSlimmer=True
-
-from AthenaCommon.DetFlags import DetFlags
-DetFlags.Calo_setOff()
-DetFlags.Muon_setOff()
-DetFlags.ID_setOn()
-DetFlags.TRT_setOff()
-DetFlags.detdescr.TRT_setOn()
-DetFlags.makeRIO.TRT_setOff()
-
-rec.doTrigger.set_Value_and_Lock(True)
-rec.doCalo.set_Value_and_Lock(False)
-rec.doMuon.set_Value_and_Lock(False)
-rec.doJetMissingETTag.set_Value_and_Lock(False)
-rec.doMuonCombined.set_Value_and_Lock(False)
-rec.doEgamma.set_Value_and_Lock(False)
-rec.doTau.set_Value_and_Lock(False)
-
-from TrackD3PDMaker.VertexD3PDAnalysisFlags import VertexD3PDAnalysisFlags
-VertexD3PDAnalysisFlags.useBeamspot.set_Value_and_Lock(True)
-VertexD3PDAnalysisFlags.useTrigger.set_Value_and_Lock(False)
-VertexD3PDAnalysisFlags.useTriggerRaw.set_Value_and_Lock(True)
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/RecoVtxSatellitesSetup.py b/Reconstruction/RecExample/RecExCommission/share/RecoVtxSatellitesSetup.py
deleted file mode 100644
index 9a1895dfef74f7466f0afad8ec4e21b6f0c0565f..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/RecoVtxSatellitesSetup.py
+++ /dev/null
@@ -1,70 +0,0 @@
-## preInlcude for Reco_trf.py for satellite bunches reconstruction
-## Runs extended |z| tracking with low-pT threshold
-## This is the porting to 17.2 of what was used in ATLAS-CONF-2011-049
-## Example usage (see also VtxSatellitesD3PD_trf_v1.txt):
-## Reco_trf.py maxEvents=-1 autoConfiguration=everything preInclude=PUStudies/VtxSatellitesD3PD_preInclude_v1.py inputBSFile=/eliza18/atlas/spagan/GBStudies/RAW/data12_8TeV.00201351.calibration_VdM.daq.RAW/data12_8TeV.00201351.calibration_VdM.daq.RAW._lb0000._SFO-3._2333.data outputESDFile=myESD.pool.root outputAODFile=myAOD.pool.root outputNTUP_IDVTXLUMIFile=myVTXD3PD.root
-
-#Set general reco settings
-from InDetRecExample.InDetJobProperties import InDetFlags
-InDetFlags.useBeamConstraint.set_Value_and_Lock(False)
-InDetFlags.doLowMuRunSetup.set_Value_and_Lock(True)
-InDetFlags.doTrackSegmentsPixel.set_Value_and_Lock(False)
-InDetFlags.doTrackSegmentsSCT.set_Value_and_Lock(False)
-InDetFlags.doTrackSegmentsTRT.set_Value_and_Lock(False)
-InDetFlags.selectSCTIntimeHits=False
-
-
-#Set algorithms to be run
-AODFlags.TrackParticleSlimmer=True
-
-from AthenaCommon.DetFlags import DetFlags
-DetFlags.Calo_setOff()
-DetFlags.Muon_setOff()
-DetFlags.ID_setOn()
-DetFlags.TRT_setOff()
-DetFlags.detdescr.TRT_setOn()
-DetFlags.makeRIO.TRT_setOff()
-
-rec.doTrigger.set_Value_and_Lock(False)
-rec.doCalo.set_Value_and_Lock(False)
-rec.doMuon.set_Value_and_Lock(False)
-rec.doJetMissingETTag.set_Value_and_Lock(False)
-rec.doMuonCombined.set_Value_and_Lock(False)
-rec.doEgamma.set_Value_and_Lock(False)
-rec.doTau.set_Value_and_Lock(False)
-
-from RecExConfig.RecAlgsFlags import recAlgs
-recAlgs.doEgammaBremReco.set_Value_and_Lock  (False)
-
-from TrackD3PDMaker.VertexD3PDAnalysisFlags import VertexD3PDAnalysisFlags
-VertexD3PDAnalysisFlags.useBeamspot.set_Value_and_Lock(True)
-
-#Change tracking reconstruction cuts (Increase maximum z of tracking accpetance)
-from InDetRecExample.ConfiguredNewTrackingCuts import ConfiguredNewTrackingCuts
-InDetNewTrackingCuts      = ConfiguredNewTrackingCuts("Offline")
-InDetNewTrackingCuts._ConfiguredNewTrackingCuts__maxZImpact = 1700.
-InDetNewTrackingCuts.printInfo()
-
-InDetNewTrackingCutsLowPt = ConfiguredNewTrackingCuts("LowPt")
-InDetNewTrackingCutsLowPt._ConfiguredNewTrackingCuts__maxZImpact = 1700.
-InDetNewTrackingCutsLowPt.printInfo()
-
-#Change vertex reconstruction cuts (Increase maximum z of tracking accpetance)
-from InDetRecExample.ConfiguredVertexingCuts import ConfiguredVertexingCuts
-InDetPrimaryVertexingCuts = ConfiguredVertexingCuts("LowPt")
-InDetPrimaryVertexingCuts._ConfiguredVertexingCuts__z0Max = 1700.
-InDetPrimaryVertexingCuts._ConfiguredVertexingCuts__IPz0Max = 1700.
-InDetPrimaryVertexingCuts._ConfiguredVertexingCuts__sigIPd0Max = 5.0
-InDetPrimaryVertexingCuts.printInfo()
-
-#Setup D3PD making options
-InDetFlags.doVertexFindingForMonitoring.set_Value_and_Lock(False)
-InDetFlags.doSplitVertexFindingForMonitoring.set_Value_and_Lock(False)
-
-from TrackD3PDMaker.VertexD3PDAnalysisFlags import VertexD3PDAnalysisFlags
-VertexD3PDAnalysisFlags.useAllVertexCollections.set_Value_and_Lock(False)
-VertexD3PDAnalysisFlags.useBeamspot.set_Value_and_Lock(True)
-# Disable tracking info to have small D3PDs
-#VertexD3PDAnalysisFlags.useTracks.set_Value_and_Lock(True)
-# The following is only available after TrackD3PDMaker-01-03-05
-#VertexD3PDAnalysisFlags.filterTightTruth.set_Value_and_Lock(True)
diff --git a/Reconstruction/RecExample/RecExCommission/share/SingleBeam_ATN.py b/Reconstruction/RecExample/RecExCommission/share/SingleBeam_ATN.py
deleted file mode 100644
index 1ba6f9157fa7a6c17c052c0ff3fee59dc880b18c..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/SingleBeam_ATN.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from AthenaCommon.BeamFlags import jobproperties
-jobproperties.Beam.beamType.set_Value_and_Lock("singlebeam")
-# the main jobOpt
-include("RecExCommission/Collisions_ATN.py")                
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/minimalRecoSplashSetup.py b/Reconstruction/RecExample/RecExCommission/share/minimalRecoSplashSetup.py
deleted file mode 100644
index ee370f546e93419f9fc8bc2df2139f3455ba2dc6..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/minimalRecoSplashSetup.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from AthenaCommon.BeamFlags import jobproperties
-jobproperties.Beam.beamType.set_Value_and_Lock("singlebeam")
-
-## calo settings from Guillaume
-from CaloRec.CaloRecFlags import jobproperties
-jobproperties.CaloRecFlags.doEmCluster.set_Value_and_Lock(False)
-jobproperties.CaloRecFlags.doCaloTopoCluster.set_Value_and_Lock(False)
-jobproperties.CaloRecFlags.doCaloEMTopoCluster.set_Value_and_Lock(False)
-rec.doJetMissingETTag.set_Value_and_Lock(False)
-rec.doEgamma.set_Value_and_Lock(False)
-rec.doTau.set_Value_and_Lock(False)
-BTaggingFlags.Active=False
-
-## muon settings from Rosy
-#muonRecFlags.doMoore=False
-#muonCombinedRecFlags.doMuidMuonCollection=False 
-#muonRecFlags.doMuonboy=False
-#muonCombinedRecFlags.doStacoMuonCollection=False
-mooreFlags.doSegmentsOnly=True
-muonboyFlags.doSegmentsOnly=True
-muonRecFlags.doSegmentT0Fit = False
-muonCombinedRecFlags.Enabled = False
-
-## from Markus, Tony...
-from InDetRecExample.InDetJobProperties import InDetFlags
-InDetFlags.doMinimalReco      = True
diff --git a/Reconstruction/RecExample/RecExCommission/share/postInclude_ESDtoESD_MuonBoy.py b/Reconstruction/RecExample/RecExCommission/share/postInclude_ESDtoESD_MuonBoy.py
deleted file mode 100644
index 68c5da845ce60530138b978b5471e7b70c877882..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/postInclude_ESDtoESD_MuonBoy.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from MuonboyAth.MuonboyAthConf import MboyRec
-theMboyRec = MboyRec()
-theMboyRec.AthPosOff = 1
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/readbsusingtag.py b/Reconstruction/RecExample/RecExCommission/share/readbsusingtag.py
deleted file mode 100644
index e4dc99043ebe7fca7c59f9c8314b5230cc62acfe..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/readbsusingtag.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# for reading BS events using TAG_COMM 
-# need to have the BS file in your file catalogue
-# either by using: catalogBytestreamFiles.sh
-# or by using dq2-ls -P
-
-from AthenaCommon.AthenaCommonFlags  import athenaCommonFlags
-athenaCommonFlags.FilesInput=['tagcomm.root']
-athenaCommonFlags.PoolInputQuery.set_Value_and_Lock("EventNumber==2317247")
-
-from RecExConfig.RecFlags import rec
-rec.readRDO.set_Value_and_Lock(True)
-rec.doAOD.set_Value_and_Lock(False)
-rec.doWriteAOD.set_Value_and_Lock(False)
-rec.doWriteTAG.set_Value_and_Lock(False)
-include ("RecExCommon/RecExCommon_topOptions.py")
diff --git a/Reconstruction/RecExample/RecExCommission/share/readesd.py b/Reconstruction/RecExample/RecExCommission/share/readesd.py
deleted file mode 100644
index d99a52482bb6a7d7b9e6b0edc52844df4efe57f2..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/readesd.py
+++ /dev/null
@@ -1,95 +0,0 @@
-from RecExConfig.RecFlags  import rec
-from AthenaCommon.BeamFlags import jobproperties
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-from AthenaCommon.GlobalFlags import globalflags
-
-
-# various configuration special to commissioning, needed for all jobs
-athenaCommonFlags.PoolESDInput.set_Value_and_Lock(['castor:/castor/cern.ch/grid/atlas/tzero/prod1/perm/data08_cosmag/physics_IDCosmic/0091900/data08_cosmag.00091900.physics_IDCosmic.recon.ESD.o4_f73/data08_cosmag.00091900.physics_IDCosmic.recon.ESD.o4_f73._lb0001._sfo01._0001.1'])
-
-rec.AutoConfiguration=['everything']
-
-
-# all of these should now be autoconfigured - but i leave here incase 
-#jobproperties.Beam.beamType.set_Value_and_Lock("cosmics")
-#globalflags.DetDescrVersion.set_Value_and_Lock('ATLAS-GEO-04-00-00')
-#globalflags.ConditionsTag.set_Value_and_Lock('COMCOND-ES1C-000-00')
-# for running over data with field on need this to be setto true
-#from AthenaCommon.BFieldFlags import jobproperties
-#jobproperties.BField.solenoidOn.set_Value_and_Lock(False)
-#jobproperties.BField.barrelToroidOn.set_Value_and_Lock(True)
-#jobproperties.BField.endcapToroidOn.set_Value_and_Lock(True)
-
-
-#hardcoded output specification (corresponds to optional flags from runArgs in transform skeleton)
-rec.RootNtupleOutput.set_Value_and_Lock("newcommission.ntuple.root")
-#rec.RootHistoOutput.set_Value_and_Lock("monitoring.root")
-athenaCommonFlags.EvtMax.set_Value_and_Lock(10)
-#athenaCommonFlags.SkipEvents = 0
-
-# run ID reconstruction
-#from InDetRecExample.InDetJobProperties import InDetFlags
-#jobproperties.InDetJobProperties.Enabled.set_Value_and_Lock(True)
-#For version < 14.4.0: it requires to set in RecExCond/RecExCommon_DetFlags.py
-# the following: DetFlags.makeRIO.ID_setOn()
-
-
-# run Muons reconstruction
-#from MuonRecExample.MuonRecFlags import muonRecFlags
-#jobproperties.MuonRec.Enabled.set_Value_and_Lock(True)
-
-# run combined muon reconstruction
-#from MuonCombinedRecExample.MuonCombinedRecFlags import muonCombinedRecFlags 
-#jobproperties.MuonCombinedRec.Enabled.set_Value_and_Lock(True)
-
-#uncomment to do egamma
-#rec.doEgamma.set_Value_and_Lock(True)
-#from egammaRec.egammaRecFlags import jobproperties
-#jobproperties.egammaRecFlags.Enabled.set_Value_and_Lock(True)
-
-#but not others
-rec.doJetMissingETTag.set_Value_and_Lock(False)
-from JetRec.JetRecFlags import jetFlags
-jetFlags.Enabled.set_Value_and_Lock(False)
-from RecExConfig.RecAlgsFlags  import recAlgs
-recAlgs.doMissingET.set_Value_and_Lock(False)
-rec.doTau.set_Value_and_Lock(False)
-recAlgs.doMuonSpShower.set_Value_and_Lock(False)
-
-
-
-rec.doHist.set_Value_and_Lock(True)
-rec.doCBNT.set_Value_and_Lock(True)
-rec.doWriteTAGCOM.set_Value_and_Lock(False)
-rec.doWriteTAG.set_Value_and_Lock(False)	
-rec.doWriteAOD.set_Value_and_Lock(False)
-rec.doAOD.set_Value_and_Lock(False)
-rec.doMonitoring.set_Value_and_Lock(True)
-
-rec.readESD.set_Value_and_Lock(True)
-rec.doESD.set_Value_and_Lock(False)
-rec.doWriteESD.set_Value_and_Lock(False)
-globalflags.InputFormat.set_Value_and_Lock('pool')
-
-if not 'Debug' in dir():
-    Debug=True  # change to True to have printout information
-
-if Debug:
-    # DEBUG/VERBOSE options
-    rec.doNameAuditor=True
-    rec.doPerfMon=True
-    rec.doDetailedPerfMon=True
-    rec.doDumpProperties=True
-    rec.doDumpTES=True
-    # rec.OutputLevel = INFO
-
-# the main jobOpt
-include("RecExCommission/RecExCommission.py")                
-
-
-from AthenaMonitoring.DQMonFlags import DQMonFlags
-DQMonFlags.monType='BS_ESD'
-DQMonFlags.histogramFile.set_Value_and_Lock( "myMonitoringESD.root" )
-include ("RecExCommon/RecExCommon_topOptions.py")
-
-
diff --git a/Reconstruction/RecExample/RecExCommission/share/readesdusingtag.py b/Reconstruction/RecExample/RecExCommission/share/readesdusingtag.py
deleted file mode 100644
index ce1479528eb2d8b7b702f938601b8db68a849119..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/readesdusingtag.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from RecExConfig.RecFlags  import rec
-from AthenaCommon.BeamFlags import jobproperties
-from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
-from AthenaCommon.GlobalFlags import globalflags
-
-#Minimally required flags for commissioning
-include("RecExCommission/MinimalCommissioningSetup.py")
-
-athenaCommonFlags.FilesInput=["TAG.root"]
-rec.Commissioning.set_Value_and_Lock(True)
-# choose what detector to turn on:
-rec.doInDet.set_Value_and_Lock(True)
-rec.doLArg.set_Value_and_Lock(True)
-rec.doTile.set_Value_and_Lock(True)
-rec.doMuon.set_Value_and_Lock(True)
-rec.doMuonCombined.set_Value_and_Lock(True)
-
-rec.doTrigger.set_Value_and_Lock(False)
-
-#hardcoded output specification (corresponds to optional flags from runArgs in transform skeleton)
-rec.RootNtupleOutput.set_Value_and_Lock("newcommission.ntuple.root")
-#rec.RootHistoOutput.set_Value_and_Lock("monitoring.root")
-athenaCommonFlags.EvtMax.set_Value_and_Lock(10)
-#athenaCommonFlags.SkipEvents = 0
-
-rec.doJiveXML.set_Value_and_Lock(True)
-athenaCommonFlags.PoolInputQuery.set_Value_and_Lock("PixelTracks==1&&SCTTracks==1&&TRTTracks==1&&TileMuonFitter>0&&MooreTracks>0&&ConvertedMBoyTracks>0&&NpixSPs>2")
-
-rec.doCBNT.set_Value_and_Lock(False)
-
-if not 'Debug' in dir():
-    Debug=False  # change to True to have printout information
-
-if Debug:
-    # DEBUG/VERBOSE options
-#    rec.doNameAuditor=True
-    rec.doPerfMon=True
-    rec.doDetailedPerfMon=True
-    rec.doDumpProperties=True
-#    rec.doDumpTES=True
-    rec.OutputLevel = DEBUG
-
-# the main jobOpt
-include("RecExCommission/RecExCommission.py")                
-
-
-from AthenaMonitoring.DQMonFlags import DQMonFlags
-DQMonFlags.monType='BS_ESD'
-DQMonFlags.histogramFile.set_Value_and_Lock( "myMonitoringESD.root" )
-include ("RecExCommon/RecExCommon_topOptions.py")
-
-
-svcMgr.EventSelector.CollectionType="ExplicitROOT"
-svcMgr.EventSelector.Query=athenaCommonFlags.PoolInputQuery()
diff --git a/Reconstruction/RecExample/RecExCommission/share/setuptrf_offline.sh b/Reconstruction/RecExample/RecExCommission/share/setuptrf_offline.sh
deleted file mode 100644
index 24c416a004224d591fb4264f15c0bb1cef07408b..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/setuptrf_offline.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env zsh
-
-#########################################################################
-##
-##  Script for setting up ATLAS/Athena run-time environment via CMT
-##
-##  - input parameters:
-##     1) CMT version; e.g. 'v1r20p20080222'
-##     2) patch directory (CMT test area)
-##     3) transuses string, i.e. hyphen-separated 'project-release' string; 
-##        e.g. 'AtlasTier0-14.2.10.2'
-##     4) special setup to be sourced
-##
-## (C) Luc Goossens, Armin Nairz (July 2008)
-##
-#########################################################################
-
-if test $# -ne 4 ; then
-     echo "ERROR incorrect nr of args"
-     echo "USAGE:  setuptrf.sh CMTVERSION PATCHDIR TRANSUSES SPECIALSETUP"
-     echo
-     exit 1
-fi
-
-export CMTVERSION=$1
-export PATCHDIR=$2
-export TRANSUSES=$3
-export SPECIALSETUP=$4
-
-export PROJECT=`echo ${TRANSUSES} | awk -F '-' '{print $1}'`
-export RELEASE=`echo ${TRANSUSES} | awk -F '-' '{print $2}'`
-
-export WORKDIR=`pwd`
-
-# set AthenaPOOL output level
-#-------------------------------------------------------------------------------
-export POOL_OUTMSG_LEVEL=5
-
-
-# assemble CMT requirements file
-#-------------------------------------------------------------------------------
-cat > requirements << EOF
-set   CMTSITE  CERN
-set   SITEROOT /afs/cern.ch
-macro ATLAS_DIST_AREA \${SITEROOT}/atlas/software/dist                           
-macro ATLAS_TEST_AREA ${PATCHDIR}
-use AtlasLogin AtlasLogin-* \$(ATLAS_DIST_AREA)
-EOF
-
-# set up CMT version
-#-------------------------------------------------------------------------------
-source /afs/cern.ch/sw/contrib/CMT/${CMTVERSION}/mgr/setup.sh ""
-cmt config
-
-# set up run environment
-#-------------------------------------------------------------------------------
-source ${WORKDIR}/setup.sh -tag=${PROJECT},${RELEASE},32,oneTest,runtime
-
-# source special/custom setup
-#-------------------------------------------------------------------------------
-if test $SPECIALSETUP != 'none' ;
-then
-  source $SPECIALSETUP
-fi
diff --git a/Reconstruction/RecExample/RecExCommission/share/skipBadEvents.py b/Reconstruction/RecExample/RecExCommission/share/skipBadEvents.py
deleted file mode 100644
index 8a0760044019e2efd725b21dde8cfeb877cf4dad..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecExCommission/share/skipBadEvents.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from AthenaCommon.AppMgr import ServiceMgr
-if (rec.doWriteESD):
-    ServiceMgr.EventSelector.MaxBadEvents=1000
diff --git a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
index ac97aa0382bcea27f38fa9dcf62b43dc75441de7..032ada00886b84a84aa1ec9656ab4b81d48a8186 100644
--- a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
+++ b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
@@ -1496,6 +1496,8 @@ if rec.doWriteBS():
     #    StreamBSFileOutput.ItemList += topSequence.StreamBS.ItemList
 
     # LVL1
+    from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import L1ByteStreamEncodersRecExSetup
+    L1ByteStreamEncodersRecExSetup()  # Configure BS encoder for RoIBResult
     StreamBSFileOutput.ItemList += [ "ROIB::RoIBResult#*" ]
 
     StreamBSFileOutput.ItemList += [ "DataVector<LVL1::TriggerTower>#TriggerTowers" ]
@@ -1565,7 +1567,6 @@ if not rec.oldFlagCompatibility:
 # -------------------------------------------------------------
 pdr.flag_domain('tag')
 if rec.doWriteTAGCOM():
-    # include( "RecExCommission/RecExCommissionTAG_jobOptions.py" )
     logRecExCommon_topOptions.warning( "TAGCOM has been retired !! Please use doWriteTAG instead !!" )
 
 try:
diff --git a/Reconstruction/RecExample/RecExCommission/share/MinimalCommissioningSetup.py b/Reconstruction/RecExample/RecExCond/share/MinimalCommissioningSetup.py
similarity index 100%
rename from Reconstruction/RecExample/RecExCommission/share/MinimalCommissioningSetup.py
rename to Reconstruction/RecExample/RecExCond/share/MinimalCommissioningSetup.py
diff --git a/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py b/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py
index f92301fd72ad413dc6e411c7808bb20a2033a93c..6b1b99e7cc0552b622dbad59d045a6c78ec32de9 100755
--- a/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py
+++ b/Reconstruction/RecExample/RecExCond/share/RecExCommon_flags.py
@@ -233,10 +233,16 @@ if len(rec.AutoConfiguration())>0:
     from AthenaCommon.AppMgr import ServiceMgr as svcMgr
     svcMgr += AutoConfigConsistencyCheckSvc("AutoConfigConsistencyCheckSvc")
 
-
 #special commisioning job options
 if rec.Commissioning():
-   include("RecExCommission/RecExCommission.py")
+   include("RecExCond/MinimalCommissioningSetup.py")
+   # setup trigger reading from COOL
+   if rec.doTrigger():
+      from TriggerJobOpts.TriggerFlags import TriggerFlags as tf
+      tf.configForStartup="HLTonline"
+      tf.configForStartup.lock()
+
+   rec.ScopingLevel.set_Value_and_Lock(1)
 
 if rec.triggerStream().startswith('express'):
    logRecExCommon_flags.info('Disabling track slimming for express stream.')
@@ -594,12 +600,6 @@ except Exception:
 
 #load commissioning flags here (major cleanup needed)
 if rec.Commissioning():
-   #--------------------------------------------------------------
-   # Common flags with RecExCommon
-   #--------------------------------------------------------------
-   #if rec.readRDO:
-   #   include( "RecExCommission/RecExCommissionCommonFlags_jobOptions.py" )
-
 
    # ---------------------------------------------------------------------------
    # AthenaCommonFlags
diff --git a/Reconstruction/RecExample/RecExRecoTest/test/test_recexreco_art_q431_compareFiveThreads.sh b/Reconstruction/RecExample/RecExRecoTest/test/test_recexreco_art_q431_compareFiveThreads.sh
index 85d22bcea128218af7d91b43ec1945d0effa8393..5e1167874eee24c3b8ef4579f7df1a490724f0b8 100755
--- a/Reconstruction/RecExample/RecExRecoTest/test/test_recexreco_art_q431_compareFiveThreads.sh
+++ b/Reconstruction/RecExample/RecExRecoTest/test/test_recexreco_art_q431_compareFiveThreads.sh
@@ -13,12 +13,14 @@ preExecStringTwo="ESDtoAOD:from RecExConfig.RecFlags import rec;rec.doTrigger.se
 mkdir runOne; cd runOne
 Reco_tf.py --athenaopts="--threads=5" --steering "no" --AMI=q431 --preExec "${preExecStringOne}" "${preExecStringTwo}" --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root | tee athenarunOne.log
 rc1=${PIPESTATUS[0]}
+xAODDigest.py myAOD.pool.root | tee digestOne.log
 echo "art-result: $rc1 runOne"
 
 cd ../
 mkdir runTwo; cd runTwo
 Reco_tf.py --athenaopts="--threads=5" --steering "no" --AMI=q431 --preExec "${preExecStringOne}" "${preExecStringTwo}" --outputAODFile=myAOD.pool.root --outputESDFile=myESD.pool.root | tee athenarunTwo.log
 rc2=${PIPESTATUS[0]}
+xAODDigest.py myAOD.pool.root | tee digestTwo.log
 echo "art-result: $rc2 runTwo"
 
 if [[ $rc1 -eq 0 ]] && [[ $rc2 -eq  0 ]] 
@@ -26,6 +28,7 @@ then
  echo "Compare two directories"
  art.py compare ref --entries 10 --mode=semi-detailed --order-trees --diff-root . ../runOne/ | tee diffFiveThreads.log
  rcDiff=${PIPESTATUS[0]}
+ diff digestTwo.log ../runOne/digestOne.log | tee digestDiffOneTwo.log
  echo "art-result: $rcDiff Diff-Serial-OneThread"
 fi
 
diff --git a/Reconstruction/RecExample/RecPerfTests/test/RecPerfTests_TestConfiguration.xml b/Reconstruction/RecExample/RecPerfTests/test/RecPerfTests_TestConfiguration.xml
deleted file mode 100644
index 7b913fb194bf52f9659520c7cdcb9cce6405e26a..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecPerfTests/test/RecPerfTests_TestConfiguration.xml
+++ /dev/null
@@ -1,670 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE unifiedTestConfiguration SYSTEM "http://www.hep.ucl.ac.uk/atlas/AtlasTesting/DTD/unifiedTestConfiguration.dtd">
-
-<unifiedTestConfiguration>
-  <atn>
-  </atn>
-  <kv>
-  </kv>
-
-  <rtt xmlns="http://www.hep.ucl.ac.uk/atlas/AtlasTesting/rtt">
-
-    <rttContactPerson>Antonio Limosani (antonio.limosani@sydney.edu.au)</rttContactPerson>
-    <refRelease>15.5.0</refRelease>
-
-    <jobList>
-      
-      <classification>
-        <displayClass>OfflineValidation</displayClass>
-        <displayProcess>Reco</displayProcess>
-        <displayComponent>Det-Combined</displayComponent>
-      </classification>
-
-
-      <jobTransform userJobId="system_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Reco_tf runs on 13TeV collision mc ttbar 25 ns</doc>
-	<jobTransformJobName>system_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6220_tid05191878_00/RDO.05191878._000121.pool.root.1 RDO.05191878._000121.pool.root.1; Reco_tf.py --inputRDOFile RDO.05191878._000121.pool.root.1 --maxEvents 100 --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --preExec='from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;rec.doTrigger=False;rec.doForwardDet=False;rec.doInDet=True;rec.doMuon=True;rec.doCalo=True;rec.doEgamma=False;rec.doMuonCombined=False;rec.doJetMissingETTag=False;rec.doTau=False;from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMuonSpShower=False;rec.doBTagging=False;recAlgs.doEFlow=False;recAlgs.doEFlowJet=False;recAlgs.doMissingET=False;recAlgs.doMissingETSig=False; from JetRec.JetRecFlags import jetFlags;jetFlags.Enabled=False;'  --ignoreErrors 'True' --conditionsTag=OFLCOND-RUN12-SDR-25 | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="system_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="calo_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Reco_tf runs on 13TeV collision mc ttbar 25 ns</doc>
-	<jobTransformJobName>calo_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6220_tid05191878_00/RDO.05191878._000121.pool.root.1 RDO.05191878._000121.pool.root.1; Reco_tf.py --inputRDOFile RDO.05191878._000121.pool.root.1 --maxEvents 100 --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --preExec='from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;rec.doTrigger=False;rec.doForwardDet=False;rec.doInDet=False;rec.doMuon.set_Value_and_Lock(False);rec.doCalo=True;rec.doEgamma=False;rec.doMuonCombined=False;rec.doJetMissingETTag=False;rec.doTau=False;from RecExConfig.RecAlgsFlags import recAlgs;recAlgs.doMuonSpShower=False;rec.doBTagging=False;recAlgs.doEFlow=False;recAlgs.doEFlowJet=False;recAlgs.doMissingET=False;recAlgs.doMissingETSig=False; from JetRec.JetRecFlags import jetFlags;jetFlags.Enabled=False;recAlgs.doTrackParticleCellAssociation=False;rec.doExpressProcessing.set_Value_and_Lock(True);jobproperties.Beam.bunchSpacing.set_Value_and_Lock(25);' --conditionsTag=OFLCOND-RUN12-SDR-25 --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="calo_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="combined_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Reco_tf runs on 13TeV collision mc ttbar 25 ns</doc>
-	<jobTransformJobName>combined_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6220_tid05191878_00/RDO.05191878._000121.pool.root.1 RDO.05191878._000121.pool.root.1 ; Reco_tf.py --inputRDOFile RDO.05191878._000121.pool.root.1 --maxEvents 100 --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --preExec='from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;rec.doTrigger=False;' --conditionsTag=OFLCOND-RUN12-SDR-25 --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="combined_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-      <jobTransform userJobId="monitoring_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Reco_tf runs on 13TeV collision mc ttbar 25 ns</doc>
-	<jobTransformJobName>monitoring_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6220_tid05191878_00/RDO.05191878._000121.pool.root.1 RDO.05191878._000121.pool.root.1 ; Reco_tf.py --inputRDOFile RDO.05191878._000121.pool.root.1 --maxEvents 100 --outputESDFile myESD.pool.root  --outputAODFile myAOD.pool.root --preExec='rec.doTrigger=False;rec.doMonitoring=True;from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;' --ignoreErrors 'True' --conditionsTag=OFLCOND-RUN12-SDR-25 | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="monitoring_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-      <jobTransform userJobId="timingtest_rdotordotrigger" >
-	<doc>TimingTest_RDOtoRDOTrigger menu on top events see: ATLASRECTS-2408 / ATR-13589</doc>
-	<jobTransformJobName>TimingTest_RDOtoRDOTrigger</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; Reco_tf.py --jobNumber 1 --conditionsTag 'OFLCOND-MC15c-SDR-04' --runNumber 110401 --preInclude 'RecExPers/RecoOutputMetadataList_jobOptions.py' --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"];from AthenaCommon.AlgSequence import AlgSequence;AlgSequence().LVL1TGCTrigger.TILEMU=True;from AthenaCommon.AppMgr import ServiceMgr;import MuonRPC_Cabling.MuonRPC_CablingConfig;ServiceMgr.MuonRPC_CablingSvc.RPCTriggerRoadsfromCool=False' --pileupFinalBunch  6 --geometryVersion  'ATLAS-R2-2015-03-01-00' --digiSeedOffset2  1 --postInclude 'RecJobTransforms/UseFrontier.py' --digiSeedOffset1  1 --numberOfHighPtMinBias  0.12268057 --autoConfiguration 'everything'  --preExec  'from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.readHLTconfigFromXML=False;TriggerFlags.triggerMenuSetup.set_Value_and_Lock("MC_pp_v6_tight_mc_prescale")' --numberOfCavernBkg  0 --numberOfLowPtMinBias  39.8773194 --maxEvents  100 --inputRDOFile /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/references/RDOtoRDOTrigger_template/RDO.07222087._000001.pool.root.1 --outputRDO_TRIGFile  my.RDO_TRIG.pool.root --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py my.RDO_TRIG.pool.root &gt; my.RDO_TRIG.pool.root.checkfile.txt ; 
-	  export userJobId="timingtest_rdotordotrigger"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-      <jobTransform userJobId="monitoring_reco_data15_main">
-	<doc>Reco_tf runs on 13TeV collision data from the mainxf stream</doc>
-	<jobTransformJobName>monitoring_reco_data15_main</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data15_13TeV/data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data ;  Reco_tf.py --inputBSFile data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data  --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --AMI q431 --maxEvent 150 --athenaopts='--pmon=sdmonfp' --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="monitoring_reco_data15_main"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination}   ; 
-	  rsync -avz  *mem*              ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="rawtoall_tier0_reco_data16_main">
-	<doc>Reco_tf runs on 13TeV collision data from the main stream</doc>
-	<jobTransformJobName>rawtoall_tier0_reco_data16_main</jobTransformJobName>
-	<jobTransformCmd>
-	    export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data16_13TeV/data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data ;  Reco_tf.py --autoConfiguration 'everything' --conditionsTag  'CONDBR2-BLKPA-2016-16' --maxEvents -1 --geometryVersion  'ATLAS-R2-2015-04-00-00' --inputBSFile  'data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data' --outputHISTFile  'myHIST.pool.root' --outputDESDM_SLTTMUFile  'myDESDM_SLTTMU.pool.root' --outputDRAW_RPVLLFile  'myDRAW_RPVLL.pool.root' --outputDESDM_MCPFile  'myDESDM_MCP.pool.root' --outputDRAW_ZMUMUFile  'myDRAW_ZMUMU.pool.root' --outputDESDM_EGAMMAFile  'myDESDM_EGAMMA.pool.root' --outputDESDM_CALJETFile  'myDESDM_CALJET.pool.root' --outputDRAW_TAUMUHFile  'myDRAW_TAUMUH.pool.root' --outputAODFile  'myAOD.pool.root' --outputDESDM_PHOJETFile  'myDESDM_PHOJET.pool.root' --outputDESDM_TILEMUFile  'myDESDM_TILEMU.pool.root' --outputDRAW_EGZFile  'myDRAW_EGZ.pool.root' --outputDESDM_EXOTHIPFile  'myDESDM_EXOTHIP.pool.root' --outputDESDM_SGLELFile  'myDESDM_SGLEL.pool.root' --athenaopts=' --pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL  | tee  __log.txt; 
-	      echo $? &gt;  __exitcode ; 
-	      touch __done ;
-	      grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	      for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	      checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	      checkTriggerxAOD.py myAOD.pool.root &gt; myAOD.trig.pool.root.checkfile.txt ;  
-	      export userJobId="rawtoall_tier0_reco_data16_main"; 
-	      export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	      export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	      gzip *txt; 
-	      mkdir -p                       ${OutputDestination} ; 
-	      rsync -avz  *mem*             ${OutputDestination}/. ; 
-	      rsync -avz ntuple*             ${OutputDestination}/. ; 
-	      rsync -avz __*                 ${OutputDestination}/. ; 
-	      rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	    </jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-	<keepFilePattern>myAOD.pool.root</keepFilePattern>             
-      </jobTransform>
-
-      <jobTransform userJobId="rawtoall_tier0_reco_data16_idtide">
-	<doc>Reco_tf runs on 13TeV collision data from the main stream</doc>
-	<jobTransformJobName>rawtoall_tier0_reco_data16_idtide</jobTransformJobName>
-	<jobTransformCmd>
-	    export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data16_13TeV/data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data ;  Reco_tf.py --autoConfiguration 'everything' --conditionsTag  'CONDBR2-BLKPA-2016-16' --maxEvents -1 --geometryVersion  'ATLAS-R2-2015-04-00-00' --inputBSFile  'data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data' --outputHISTFile  'myHIST.pool.root' --outputDESDM_SLTTMUFile  'myDESDM_SLTTMU.pool.root' --outputDRAW_RPVLLFile  'myDRAW_RPVLL.pool.root' --outputDESDM_MCPFile  'myDESDM_MCP.pool.root' --outputDRAW_ZMUMUFile  'myDRAW_ZMUMU.pool.root' --outputDESDM_EGAMMAFile  'myDESDM_EGAMMA.pool.root' --outputDESDM_CALJETFile  'myDESDM_CALJET.pool.root' --outputDRAW_TAUMUHFile  'myDRAW_TAUMUH.pool.root' --outputAODFile  'myAOD.pool.root' --outputDAOD_IDTIDEFile 'myDAOD_IDTIDE.pool.root' --outputDESDM_PHOJETFile  'myDESDM_PHOJET.pool.root' --outputDESDM_TILEMUFile  'myDESDM_TILEMU.pool.root' --outputDRAW_EGZFile  'myDRAW_EGZ.pool.root' --outputDESDM_EXOTHIPFile  'myDESDM_EXOTHIP.pool.root' --outputDESDM_SGLELFile  'myDESDM_SGLEL.pool.root' --athenaopts=' --pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL  | tee  __log.txt; 
-	      echo $? &gt;  __exitcode ; 
-	      touch __done ;
-	      grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	      for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	      checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	      checkTriggerxAOD.py myAOD.pool.root &gt; myAOD.trig.pool.root.checkfile.txt ;  
-	      export userJobId="rawtoall_tier0_reco_data16_idtide"; 
-	      export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	      export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	      gzip *txt; 
-	      mkdir -p                       ${OutputDestination} ; 
-	      rsync -avz  *mem*             ${OutputDestination}/. ; 
-	      rsync -avz ntuple*             ${OutputDestination}/. ; 
-	      rsync -avz __*                 ${OutputDestination}/. ; 
-	      rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	      rsync -avz *mem*               ${OutputDestination}/. ; 
-	    </jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-	<keepFilePattern>myAOD.pool.root</keepFilePattern>             
-      </jobTransform>
-
-
-      <jobTransform userJobId="rawtoall_tier0_reco_data16_alloutputs">
-	<doc>Reco_tf runs on 13TeV collision data from the all outputs stream</doc>
-	<jobTransformJobName>rawtoall_tier0_reco_data16_alloutputs</jobTransformJobName>
-	<jobTransformCmd>
-	    export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data16_13TeV/data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data ;  Reco_tf.py --autoConfiguration 'everything' --conditionsTag  'CONDBR2-BLKPA-2016-16' --maxEvents 100 --geometryVersion  'ATLAS-R2-2015-04-00-00' --inputBSFile  'data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data' --outputHISTFile  'myHIST.pool.root' --outputDESDM_SLTTMUFile  'myDESDM_SLTTMU.pool.root' --outputDRAW_RPVLLFile  'myDRAW_RPVLL.pool.root' --outputDESDM_MCPFile  'myDESDM_MCP.pool.root' --outputDRAW_ZMUMUFile  'myDRAW_ZMUMU.pool.root' --outputDESDM_EGAMMAFile 'myDESDM_EGAMMA.pool.root' --outputDESDM_CALJETFile  'myDESDM_CALJET.pool.root' --outputDRAW_TAUMUHFile  'myDRAW_TAUMUH.pool.root' --outputAODFile  'myAOD.pool.root' --outputDAOD_IDTIDEFile 'myDAOD_IDTIDE.pool.root' --outputDESDM_PHOJETFile 'myDESDM_PHOJET.pool.root' --outputDESDM_TILEMUFile  'myDESDM_TILEMU.pool.root' --outputDRAW_EGZFile  'myDRAW_EGZ.pool.root' --outputDESDM_EXOTHIPFile  'myDESDM_EXOTHIP.pool.root' --outputDESDM_SGLELFile  'myDESDM_SGLEL.pool.root' --athenaopts=' --pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL  --preExec 'all:from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.cutLevel.set_Value_and_Lock(14); ToolSvc += CfgMgr.xAODMaker__TrackParticleCompressorTool( "xAODTrackParticleCompressorTool", OffDiagCovMatrixBits = 7 ); from JetRec import JetRecUtils;f=lambda s:["xAOD::JetContainer#AntiKt4%sJets"%(s,),"xAOD::JetAuxContainer#AntiKt4%sJetsAux."%(s,),"xAOD::EventShape#Kt4%sEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sEventShapeAux."%(s,),"xAOD::EventShape#Kt4%sOriginEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sOriginEventShapeAux."%(s,)]; JetRecUtils.retrieveAODList = lambda : f("EMPFlow")+f("LCTopo")+f("EMTopo")+["xAOD::EventShape#NeutralParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#NeutralParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoForwardEventShapeAux.", "xAOD::EventShape#ParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#ParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoForwardEventShapeAux.", "xAOD::EventShape#TopoClusterIsoCentralEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoCentralEventShapeAux.", "xAOD::EventShape#TopoClusterIsoForwardEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoForwardEventShapeAux.","xAOD::CaloClusterContainer#EMOriginTopoClusters","xAOD::ShallowAuxContainer#EMOriginTopoClustersAux.","xAOD::CaloClusterContainer#LCOriginTopoClusters","xAOD::ShallowAuxContainer#LCOriginTopoClustersAux."]; from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.btaggingAODList=["xAOD::BTaggingContainer#BTagging_AntiKt4EMTopo","xAOD::BTaggingAuxContainer#BTagging_AntiKt4EMTopoAux.","xAOD::BTagVertexContainer#BTagging_AntiKt4EMTopoJFVtx","xAOD::BTagVertexAuxContainer#BTagging_AntiKt4EMTopoJFVtxAux.","xAOD::VertexContainer#BTagging_AntiKt4EMTopoSecVtx","xAOD::VertexAuxContainer#BTagging_AntiKt4EMTopoSecVtxAux.-vxTrackAtVertex"]; from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(True);  AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(True); AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(True); from eflowRec.eflowRecFlags import jobproperties; jobproperties.eflowRecFlags.useAODReductionClusterMomentList.set_Value_and_Lock(True); from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.AODEDMSet.set_Value_and_Lock("AODFULL");' --postExec 'ESDtoAOD:CILMergeAOD.removeItem("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.LATERAL.LONGITUDINAL.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_BAD_HV_CELLS.N_BAD_HV_CELLS.ENG_POS.SIGNIFICANCE.CELL_SIGNIFICANCE.CELL_SIG_SAMPLING.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.PTD.BadChannelList");CILMergeAOD.add("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.N_BAD_CELLS.ENG_BAD_CELLS.BADLARQ_FRAC.AVG_TILE_Q.AVG_LAR_Q.CENTER_MAG.ENG_POS.CENTER_LAMBDA.SECOND_LAMBDA.SECOND_R.ISOLATION.EM_PROBABILITY");StreamAOD.ItemList=CILMergeAOD()' | tee  __log.txt; 
-	      echo $? &gt;  __exitcode ; 
-	      touch __done ;
-	      grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	      for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	      checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	      checkTriggerxAOD.py myAOD.pool.root &gt; myAOD.trig.pool.root.checkfile.txt ;  
-	      export userJobId="rawtoall_tier0_reco_data16_alloutputs"; 
-	      export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	      export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	      gzip *txt; 
-	      mkdir -p                       ${OutputDestination} ; 
-	      rsync -avz ntuple*             ${OutputDestination}/. ; 
-	      rsync -avz __*                 ${OutputDestination}/. ; 
-	      rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	      rsync -avz *mem*               ${OutputDestination}/. ; 
-	    </jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-	<keepFilePattern>myAOD.pool.root</keepFilePattern>             
-      </jobTransform>
-
-
-      <jobTransform userJobId="rawtoall_tier0_reco_data16_noidtide">
-	<doc>Reco_tf runs on 13TeV collision data from the all outputs bar idtide stream</doc>
-	<jobTransformJobName>rawtoall_tier0_reco_data16_noidtide</jobTransformJobName>
-	<jobTransformCmd>
-	    export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data16_13TeV/data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data ;  Reco_tf.py --autoConfiguration 'everything' --conditionsTag  'CONDBR2-BLKPA-2016-16' --maxEvents 100 --geometryVersion  'ATLAS-R2-2015-04-00-00' --inputBSFile  'data16_13TeV.00305777.physics_Main.daq.RAW._lb0290._SFO-6._0002.data' --outputHISTFile  'myHIST.pool.root' --outputDESDM_SLTTMUFile  'myDESDM_SLTTMU.pool.root' --outputDRAW_RPVLLFile  'myDRAW_RPVLL.pool.root' --outputDESDM_MCPFile  'myDESDM_MCP.pool.root' --outputDRAW_ZMUMUFile  'myDRAW_ZMUMU.pool.root' --outputDESDM_EGAMMAFile  'myDESDM_EGAMMA.pool.root' --outputDESDM_CALJETFile  'myDESDM_CALJET.pool.root' --outputDRAW_TAUMUHFile  'myDRAW_TAUMUH.pool.root' --outputAODFile  'myAOD.pool.root' --outputDESDM_PHOJETFile  'myDESDM_PHOJET.pool.root' --outputDESDM_TILEMUFile  'myDESDM_TILEMU.pool.root' --outputDRAW_EGZFile  'myDRAW_EGZ.pool.root' --outputDESDM_EXOTHIPFile  'myDESDM_EXOTHIP.pool.root' --outputDESDM_SGLELFile  'myDESDM_SGLEL.pool.root' --athenaopts=' --pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL  --preExec 'all:from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.cutLevel.set_Value_and_Lock(14); ToolSvc += CfgMgr.xAODMaker__TrackParticleCompressorTool( "xAODTrackParticleCompressorTool", OffDiagCovMatrixBits = 7 ); from JetRec import JetRecUtils;f=lambda s:["xAOD::JetContainer#AntiKt4%sJets"%(s,),"xAOD::JetAuxContainer#AntiKt4%sJetsAux."%(s,),"xAOD::EventShape#Kt4%sEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sEventShapeAux."%(s,),"xAOD::EventShape#Kt4%sOriginEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sOriginEventShapeAux."%(s,)]; JetRecUtils.retrieveAODList = lambda : f("EMPFlow")+f("LCTopo")+f("EMTopo")+["xAOD::EventShape#NeutralParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#NeutralParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoForwardEventShapeAux.", "xAOD::EventShape#ParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#ParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoForwardEventShapeAux.", "xAOD::EventShape#TopoClusterIsoCentralEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoCentralEventShapeAux.", "xAOD::EventShape#TopoClusterIsoForwardEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoForwardEventShapeAux.","xAOD::CaloClusterContainer#EMOriginTopoClusters","xAOD::ShallowAuxContainer#EMOriginTopoClustersAux.","xAOD::CaloClusterContainer#LCOriginTopoClusters","xAOD::ShallowAuxContainer#LCOriginTopoClustersAux."]; from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.btaggingAODList=["xAOD::BTaggingContainer#BTagging_AntiKt4EMTopo","xAOD::BTaggingAuxContainer#BTagging_AntiKt4EMTopoAux.","xAOD::BTagVertexContainer#BTagging_AntiKt4EMTopoJFVtx","xAOD::BTagVertexAuxContainer#BTagging_AntiKt4EMTopoJFVtxAux.","xAOD::VertexContainer#BTagging_AntiKt4EMTopoSecVtx","xAOD::VertexAuxContainer#BTagging_AntiKt4EMTopoSecVtxAux.-vxTrackAtVertex"]; from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(True);  AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(True); AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(True); from eflowRec.eflowRecFlags import jobproperties; jobproperties.eflowRecFlags.useAODReductionClusterMomentList.set_Value_and_Lock(True); from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.AODEDMSet.set_Value_and_Lock("AODFULL");' --postExec 'ESDtoAOD:CILMergeAOD.removeItem("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.LATERAL.LONGITUDINAL.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_BAD_HV_CELLS.N_BAD_HV_CELLS.ENG_POS.SIGNIFICANCE.CELL_SIGNIFICANCE.CELL_SIG_SAMPLING.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.PTD.BadChannelList");CILMergeAOD.add("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.N_BAD_CELLS.ENG_BAD_CELLS.BADLARQ_FRAC.AVG_TILE_Q.AVG_LAR_Q.CENTER_MAG.ENG_POS.CENTER_LAMBDA.SECOND_LAMBDA.SECOND_R.ISOLATION.EM_PROBABILITY");StreamAOD.ItemList=CILMergeAOD()' | tee  __log.txt; 
-	      echo $? &gt;  __exitcode ; 
-	      touch __done ;
-	      grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	      for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	      checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	      checkTriggerxAOD.py myAOD.pool.root &gt; myAOD.trig.pool.root.checkfile.txt ;  
-	      export userJobId="rawtoall_tier0_reco_data16_noidtide"; 
-	      export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	      export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	      gzip *txt; 
-	      mkdir -p                       ${OutputDestination} ; 
-	      rsync -avz ntuple*             ${OutputDestination}/. ; 
-	      rsync -avz __*                 ${OutputDestination}/. ; 
-	      rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	      rsync -avz *mem*               ${OutputDestination}/. ; 
-	    </jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-	<keepFilePattern>myAOD.pool.root</keepFilePattern>             
-      </jobTransform>
-
-
-
-
-      <jobTransform userJobId="mp_monitoring_reco_data15_main">
-	<doc>Reco_tf runs on 13TeV collision data from the mainxf stream</doc>
-	<jobTransformJobName>mp_monitoring_reco_data15_main</jobTransformJobName>
-	<jobTransformCmd>
-	  export ATHENA_CORE_NUMBER=4
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data15_13TeV/data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data ;  Reco_tf.py --multiprocess --inputBSFile data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data  --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --AMI q431 --maxEvent 150 --athenaopts='--pmon=sdmonfp' --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="mp_monitoring_reco_data15_main"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="mp8_monitoring_reco_data15_main">
-	<doc>Reco_tf runs on 13TeV collision data from the mainxf stream</doc>
-	<jobTransformJobName>mp8_monitoring_reco_data15_main</jobTransformJobName>
-	<jobTransformCmd>
-	  export ATHENA_CORE_NUMBER=8
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data15_13TeV/data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data ;  Reco_tf.py --multiprocess --inputBSFile data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data  --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --AMI q431 --maxEvent 150 --athenaopts='--pmon=sdmonfp' --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="mp8_monitoring_reco_data15_main"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="rawtoall_monitoring_reco_data15_main">
-	<doc>Reco_tf runs on 13TeV collision data from the mainxf stream</doc>
-	<jobTransformJobName>rawtoall_monitoring_reco_data15_main</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data15_13TeV/data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data ;  Reco_tf.py --inputBSFile data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data --outputAODFile myAOD.pool.root --outputHISTFile myHIST.pool.root --AMI q431 --maxEvent 150 --athenaopts='--pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="rawtoall_monitoring_reco_data15_main"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-
-      <jobTransform userJobId="mp_rawtoall_monitoring_reco_data15_main">
-	<doc>Reco_tf runs on 13TeV collision data from the mainxf stream</doc>
-	<jobTransformJobName>mp_rawtoall_monitoring_reco_data15_main</jobTransformJobName>
-	<jobTransformCmd>
-	  export ATHENA_CORE_NUMBER=4
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data15_13TeV/data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data ;  Reco_tf.py --multiprocess --inputBSFile data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data --outputAODFile myAOD.pool.root --outputHISTFile myHIST.pool.root --AMI q431 --maxEvent 150 --athenaopts='--pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="mp_rawtoall_monitoring_reco_data15_main"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="mp8_rawtoall_monitoring_reco_data15_main">
-	<doc>Reco_tf runs on 13TeV collision data from the mainxf stream</doc>
-	<jobTransformJobName>mp8_rawtoall_monitoring_reco_data15_main</jobTransformJobName>
-	<jobTransformCmd>
-	  export ATHENA_CORE_NUMBER=8
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/data15_13TeV/data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data ;  Reco_tf.py --multiproces --inputBSFile data15_13TeV.00284484.physics_Main.daq.RAW._lb0037._SFO-1._0001.data --outputAODFile myAOD.pool.root --outputHISTFile myHIST.pool.root --AMI q431 --maxEvent 150 --athenaopts='--pmon=sdmonfp' --ignoreErrors 'True' --steering doRAWtoALL | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="mp8_rawtoall_monitoring_reco_data15_main"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-
-      <jobTransform userJobId="trigger_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Reco_tf runs on 13TeV collision mc ttbar 25 ns</doc>
-	<jobTransformJobName>trigger_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6220_tid05191878_00/RDO.05191878._000121.pool.root.1 RDO.05191878._000121.pool.root.1 ; Reco_tf.py --inputRDOFile RDO.05191878._000121.pool.root.1 --maxEvents 100 --outputESDFile myESD.pool.root  --outputAODFile myAOD.pool.root --preExec='rec.doTrigger=True;rec.doMonitoring=True;from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;'  --ignoreErrors 'True' --conditionsTag=OFLCOND-RUN12-SDR-25 | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ;
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="trigger_reco_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-
-      <jobTransform userJobId="fullsim_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Full Geant4 simulation (MC15 production setup, based on AMI tag s2745 )</doc>
-	<jobTransformJobName>fullsim_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; 
-	  Sim_tf.py --conditionsTag 'default:OFLCOND-RUN12-SDR-19' --physicsList 'FTFP_BERT' --truthStrategy 'MC15aPlus' --simulator 'FullG4' --postInclude 'default:RecJobTransforms/UseFrontier.py' --preInclude 'EVNTtoHITS:SimulationJobOptions/preInclude.BeamPipeKill.py,SimulationJobOptions/preInclude.FrozenShowersFCalOnly.py' --DataRunNumber '222525' --geometryVersion 'default:ATLAS-R2-2015-03-01-00_VALIDATION' --inputEVNTFile "/afs/cern.ch/atlas/groups/Simulation/EVNT_files/mc12_valid.110401.PowhegPythia_P2012_ttbar_nonallhad.evgen.EVNT.e3099.01517252._000001.pool.root.1" --outputHITSFile "Hits.pool.root" --maxEvents 20 --preExec='from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;' --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Sim_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  export userJobId="fullsim_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-      <jobTransform userJobId="fastsim_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>ATLFASTII simulation (MC15 production setup)</doc>
-	<jobTransformJobName>fastsim_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; 
-	  Sim_tf.py --conditionsTag 'default:OFLCOND-RUN12-SDR-19' --physicsList 'FTFP_BERT' --truthStrategy 'MC12' --simulator 'ATLFASTII' --postInclude 'default:RecJobTransforms/UseFrontier.py' --preInclude 'EVNTtoHITS:SimulationJobOptions/preInclude.BeamPipeKill.py' --DataRunNumber '222525' --geometryVersion 'default:ATLAS-R2-2015-03-01-00_VALIDATION' --inputEVNTFile "/afs/cern.ch/atlas/groups/Simulation/EVNT_files/mc12_valid.110401.PowhegPythia_P2012_ttbar_nonallhad.evgen.EVNT.e3099.01517252._000001.pool.root.1" --outputHITSFile "Hits.pool.root" --maxEvents 20 --maxEvents 20 --preExec='from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;' --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Sim_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  export userJobId="fastsim_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-      <jobTransform userJobId="digi_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40">
-	<doc>Digitization (MC15 production setup)</doc>
-	<jobTransformJobName>digi_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; Reco_tf.py --inputHITSFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.simul.HITS.e3099_s2578_tid04919495_00/HITS.04919495._001041.pool.root.1 --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --digiSeedOffset1 170 --digiSeedOffset2 170  --geometryVersion 'default:ATLAS-R2-2015-03-01-00' --inputHighPtMinbiasHitsFile  root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_valid.361035.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_high.merge.HITS.e3581_s2578_s2169_tid05098387_00/HITS.05098387.*.pool.root.? --inputLowPtMinbiasHitsFile  root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_valid.361034.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_low.merge.HITS.e3581_s2578_s2169_tid05098374_00/HITS.05098374.*.pool.root.?  --jobNumber 1 --maxEvents 100 --numberOfCavernBkg="0" --numberOfHighPtMinBias '0.122680569785' --numberOfLowPtMinBias '39.8773194302' --outputRDOFile myRDO.pool.root --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"]' 'HITtoRDO:from AthenaCommon.CfgGetter import getPublicTool;getPublicTool("MergeMcEventCollTool").OnlySaveSignalTruth=True;ToolSvc.LArAutoCorrTotalToolDefault.deltaBunch=1' --postInclude 'default:PyJobTransforms/UseFrontier.py' --pileupFinalBunch 6 --preExec 'all:from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(20.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(20);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True);from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;' --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_run222525_v1.py' --skipEvents 0 --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Digi_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  export userJobId="digi_mc15_ttbar_valid_13tev_25ns_mu00_to_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-      <jobTransform userJobId="fullchain_mc15_ttbar_valid_13tev_25ns_mu40">
-	<doc>Full chain (MC15 production setup)</doc>
-	<jobTransformJobName>fullchain_mc15_ttbar_valid_13tev_25ns_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; Reco_tf.py --inputHITSFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_valid.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e3698_s2726/HITS.06950958._003212.pool.root.1 --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --digiSeedOffset1 170 --digiSeedOffset2 170 --geometryVersion 'default:ATLAS-R2-2015-03-01-00' --inputHighPtMinbiasHitsFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_13TeV.361035.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_high.merge.HITS.e3581_s2578_s2195/HITS.05608152.*.pool.root.? --inputLowPtMinbiasHitsFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_13TeV.361034.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_low.merge.HITS.e3581_s2578_s2195/HITS.05608147.*.pool.root.?  --jobNumber 1 --maxEvents 100 --numberOfCavernBkg="0" --numberOfHighPtMinBias '0.122680569785' --numberOfLowPtMinBias '39.8773194302'  --outputAODFile="myAOD.pool.root" --outputESDFile="myESD.pool.root" --outputRDOFile="myRDO.pool.root"  --pileupFinalBunch '6' --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"];' 'HITtoRDO:job.StandardPileUpToolsAlg.PileUpTools["MergeMcEventCollTool"].OnlySaveSignalTruth=True;job.StandardPileUpToolsAlg.PileUpTools["MdtDigitizationTool"].LastXing=150' 'RDOtoRDOTrigger:from AthenaCommon.AlgSequence import AlgSequence;AlgSequence().LVL1TGCTrigger.TILEMU=True;from AthenaCommon.AppMgr import ServiceMgr;import MuonRPC_Cabling.MuonRPC_CablingConfig;ServiceMgr.MuonRPC_CablingSvc.RPCTriggerRoadsfromCool=False' 'ESDtoAOD:CILMergeAOD.removeItem("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.LATERAL.LONGITUDINAL.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_BAD_HV_CELLS.N_BAD_HV_CELLS.ENG_POS.SIGNIFICANCE.CELL_SIGNIFICANCE.CELL_SIG_SAMPLING.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.PTD.BadChannelList");CILMergeAOD.add("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.N_BAD_CELLS.ENG_BAD_CELLS.BADLARQ_FRAC.AVG_TILE_Q.AVG_LAR_Q.CENTER_MAG.ENG_POS.CENTER_LAMBDA.SECOND_LAMBDA.SECOND_R.ISOLATION.EM_PROBABILITY");StreamAOD.ItemList=CILMergeAOD()' --postInclude 'default:RecJobTransforms/UseFrontier.py' --preExec 'all:rec.Commissioning.set_Value_and_Lock(True);from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(40.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(40);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True);' 'HITtoRDO:userRunLumiOverride={"run":222525, "startmu":40.0, "endmu":41.0, "stepmu":1.0, "startlb":1, "timestamp": 1376703331}' 'RAWtoESD:from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.cutLevel.set_Value_and_Lock(14);' 'ESDtoAOD:ToolSvc += CfgMgr.xAODMaker__TrackParticleCompressorTool( "xAODTrackParticleCompressorTool", OffDiagCovMatrixBits = 7 ); from JetRec import JetRecUtils;f=lambda s:["xAOD::JetContainer#AntiKt4%sJets"%(s,),"xAOD::JetAuxContainer#AntiKt4%sJetsAux."%(s,),"xAOD::EventShape#Kt4%sEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sEventShapeAux."%(s,),"xAOD::EventShape#Kt4%sOriginEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sOriginEventShapeAux."%(s,)]; JetRecUtils.retrieveAODList = lambda : f("EMPFlow")+f("LCTopo")+f("EMTopo")+["xAOD::EventShape#NeutralParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#NeutralParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoForwardEventShapeAux.","xAOD::EventShape#ParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#ParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoForwardEventShapeAux.", "xAOD::EventShape#TopoClusterIsoCentralEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoCentralEventShapeAux.", "xAOD::EventShape#TopoClusterIsoForwardEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoForwardEventShapeAux.","xAOD::CaloClusterContainer#EMOriginTopoClusters","xAOD::ShallowAuxContainer#EMOriginTopoClustersAux.","xAOD::CaloClusterContainer#LCOriginTopoClusters","xAOD::ShallowAuxContainer#LCOriginTopoClustersAux."]; from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.btaggingAODList=["xAOD::BTaggingContainer#BTagging_AntiKt4EMTopo","xAOD::BTaggingAuxContainer#BTagging_AntiKt4EMTopoAux.","xAOD::BTagVertexContainer#BTagging_AntiKt4EMTopoJFVtx","xAOD::BTagVertexAuxContainer#BTagging_AntiKt4EMTopoJFVtxAux.","xAOD::VertexContainer#BTagging_AntiKt4EMTopoSecVtx","xAOD::VertexAuxContainer#BTagging_AntiKt4EMTopoSecVtxAux.-vxTrackAtVertex"]; from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(True);  AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(True); AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(True); from eflowRec.eflowRecFlags import jobproperties; jobproperties.eflowRecFlags.useAODReductionClusterMomentList.set_Value_and_Lock(True); from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.AODEDMSet.set_Value_and_Lock("AODSLIM");'  --numberOfCavernBkg '0' --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_muRange.py'  --mts ESD:0 --steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" --ignoreErrors 'True' | tee  __log.txt
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Digi_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  export userJobId="fullchain_mc15_ttbar_valid_13tev_25ns_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  checkxAOD.py myRDO.pool.root &gt; myRDO.pool.root.checkfile.txt ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  checkTriggerxAOD.py myAOD.pool.root &gt; myAOD.trig.pool.root.checkfile.txt ;  
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-	<keepFilePattern>myAOD.pool.root</keepFilePattern>
-      </jobTransform>
-
-
-      <jobTransform userJobId="fullchain_mc15_ttbar_valid_13tev_25ns_mu60">
-	<doc>Full chain (MC15 production setup)</doc>
-	<jobTransformJobName>fullchain_mc15_ttbar_valid_13tev_25ns_mu60</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; Reco_tf.py --inputHITSFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_valid.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.simul.HITS.e3698_s2726/HITS.06950958._003212.pool.root.1 --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --digiSeedOffset1 170 --digiSeedOffset2 170 --geometryVersion 'default:ATLAS-R2-2015-03-01-00' --inputHighPtMinbiasHitsFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_13TeV.361035.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_high.merge.HITS.e3581_s2578_s2195/HITS.05608152.*.pool.root.? --inputLowPtMinbiasHitsFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_13TeV.361034.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_low.merge.HITS.e3581_s2578_s2195/HITS.05608147.*.pool.root.?  --jobNumber 1 --maxEvents 100 --numberOfCavernBkg="0" --numberOfHighPtMinBias '0.122680569785' --numberOfLowPtMinBias '39.8773194302'  --outputAODFile="myAOD.pool.root" --outputESDFile="myESD.pool.root" --outputRDOFile="myRDO.pool.root"  --pileupFinalBunch '6' --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"];' 'HITtoRDO:job.StandardPileUpToolsAlg.PileUpTools["MergeMcEventCollTool"].OnlySaveSignalTruth=True;job.StandardPileUpToolsAlg.PileUpTools["MdtDigitizationTool"].LastXing=150' 'RDOtoRDOTrigger:from AthenaCommon.AlgSequence import AlgSequence;AlgSequence().LVL1TGCTrigger.TILEMU=True;from AthenaCommon.AppMgr import ServiceMgr;import MuonRPC_Cabling.MuonRPC_CablingConfig;ServiceMgr.MuonRPC_CablingSvc.RPCTriggerRoadsfromCool=False' 'ESDtoAOD:CILMergeAOD.removeItem("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.LATERAL.LONGITUDINAL.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_BAD_HV_CELLS.N_BAD_HV_CELLS.ENG_POS.SIGNIFICANCE.CELL_SIGNIFICANCE.CELL_SIG_SAMPLING.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.PTD.BadChannelList");CILMergeAOD.add("xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.N_BAD_CELLS.ENG_BAD_CELLS.BADLARQ_FRAC.AVG_TILE_Q.AVG_LAR_Q.CENTER_MAG.ENG_POS.CENTER_LAMBDA.SECOND_LAMBDA.SECOND_R.ISOLATION.EM_PROBABILITY");StreamAOD.ItemList=CILMergeAOD()' --postInclude 'default:RecJobTransforms/UseFrontier.py' --preExec 'all:rec.Commissioning.set_Value_and_Lock(True);from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(40.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(40);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True);' 'HITtoRDO:userRunLumiOverride={"run":222525, "startmu":60.0, "endmu":61.0, "stepmu":1.0, "startlb":1, "timestamp": 1376703331}' 'RAWtoESD:from InDetRecExample.InDetJobProperties import InDetFlags; InDetFlags.cutLevel.set_Value_and_Lock(14);' 'ESDtoAOD:ToolSvc += CfgMgr.xAODMaker__TrackParticleCompressorTool( "xAODTrackParticleCompressorTool", OffDiagCovMatrixBits = 7 ); from JetRec import JetRecUtils;f=lambda s:["xAOD::JetContainer#AntiKt4%sJets"%(s,),"xAOD::JetAuxContainer#AntiKt4%sJetsAux."%(s,),"xAOD::EventShape#Kt4%sEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sEventShapeAux."%(s,),"xAOD::EventShape#Kt4%sOriginEventShape"%(s,),"xAOD::EventShapeAuxInfo#Kt4%sOriginEventShapeAux."%(s,)]; JetRecUtils.retrieveAODList = lambda : f("EMPFlow")+f("LCTopo")+f("EMTopo")+["xAOD::EventShape#NeutralParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#NeutralParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#NeutralParticleFlowIsoForwardEventShapeAux.","xAOD::EventShape#ParticleFlowIsoCentralEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoCentralEventShapeAux.", "xAOD::EventShape#ParticleFlowIsoForwardEventShape","xAOD::EventShapeAuxInfo#ParticleFlowIsoForwardEventShapeAux.", "xAOD::EventShape#TopoClusterIsoCentralEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoCentralEventShapeAux.", "xAOD::EventShape#TopoClusterIsoForwardEventShape","xAOD::EventShapeAuxInfo#TopoClusterIsoForwardEventShapeAux.","xAOD::CaloClusterContainer#EMOriginTopoClusters","xAOD::ShallowAuxContainer#EMOriginTopoClustersAux.","xAOD::CaloClusterContainer#LCOriginTopoClusters","xAOD::ShallowAuxContainer#LCOriginTopoClustersAux."]; from BTagging.BTaggingFlags import BTaggingFlags;BTaggingFlags.btaggingAODList=["xAOD::BTaggingContainer#BTagging_AntiKt4EMTopo","xAOD::BTaggingAuxContainer#BTagging_AntiKt4EMTopoAux.","xAOD::BTagVertexContainer#BTagging_AntiKt4EMTopoJFVtx","xAOD::BTagVertexAuxContainer#BTagging_AntiKt4EMTopoJFVtxAux.","xAOD::VertexContainer#BTagging_AntiKt4EMTopoSecVtx","xAOD::VertexAuxContainer#BTagging_AntiKt4EMTopoSecVtxAux.-vxTrackAtVertex"]; from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(True);  AODFlags.ThinNegativeEnergyCaloClusters.set_Value_and_Lock(True); AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(True); from eflowRec.eflowRecFlags import jobproperties; jobproperties.eflowRecFlags.useAODReductionClusterMomentList.set_Value_and_Lock(True); from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.AODEDMSet.set_Value_and_Lock("AODSLIM");'  --numberOfCavernBkg '0' --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_muRange.py'  --mts ESD:0 --steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" --ignoreErrors 'True' | tee  __log.txt
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Digi_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  export userJobId="fullchain_mc15_ttbar_valid_13tev_25ns_mu60"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  checkxAOD.py myRDO.pool.root &gt; myRDO.pool.root.checkfile.txt ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  checkTriggerxAOD.py myAOD.pool.root &gt; myAOD.trig.pool.root.checkfile.txt ;  
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-	<keepFilePattern>myAOD.pool.root</keepFilePattern>
-      </jobTransform>
-
-
-
-
-      <jobTransform userJobId="mp_fullchain_mc15_ttbar_valid_13tev_25ns_mu40">
-	<doc>Full chain (MC15 production setup)</doc>
-	<jobTransformJobName>mp_fullchain_mc15_ttbar_valid_13tev_25ns_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export ATHENA_CORE_NUMBER=4
-	  export TRF_ECHO=1; Reco_tf.py --multiprocess --inputHITSFile root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.simul.HITS.e3099_s2578_tid04919495_00/HITS.04919495._001041.pool.root.1 --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --conditionsTag 'default:OFLCOND-RUN12-SDR-31' --digiSeedOffset1 170 --digiSeedOffset2 170  --geometryVersion 'default:ATLAS-R2-2015-03-01-00' --inputHighPtMinbiasHitsFile  root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_valid.361035.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_high.merge.HITS.e3581_s2578_s2169_tid05098387_00/HITS.05098387.*.pool.root.? --inputLowPtMinbiasHitsFile  root://eosatlas.cern.ch//eos/atlas/atlascerngroupdisk/proj-sit/digitization/RTT/mc15a/mc15_valid.361034.Pythia8EvtGen_A2MSTW2008LO_minbias_inelastic_low.merge.HITS.e3581_s2578_s2169_tid05098374_00/HITS.05098374.*.pool.root.?  --jobNumber 1 --maxEvents 100 --numberOfCavernBkg="0" --numberOfHighPtMinBias '0.122680569785' --numberOfLowPtMinBias '39.8773194302'  --outputAODFile="myAOD.pool.root" --outputESDFile="myESD.pool.root" --outputRDOFile="myRDO.pool.root"  --pileupFinalBunch '6' --postExec 'all:CfgMgr.MessageSvc().setError+=["HepMcParticleLink"]' 'HITtoRDO:job.StandardPileUpToolsAlg.PileUpTools["MergeMcEventCollTool"].OnlySaveSignalTruth=True;job.StandardPileUpToolsAlg.PileUpTools["MdtDigitizationTool"].LastXing=150' 'RDOtoRDOTrigger:from AthenaCommon.AlgSequence import AlgSequence;AlgSequence().LVL1TGCTrigger.TILEMU=True;from AthenaCommon.AppMgr import ServiceMgr;import MuonRPC_Cabling.MuonRPC_CablingConfig;ServiceMgr.MuonRPC_CablingSvc.RPCTriggerRoadsfromCool=False' --postInclude 'default:RecJobTransforms/UseFrontier.py' --preExec 'all:rec.Commissioning.set_Value_and_Lock(True);from AthenaCommon.BeamFlags import jobproperties;jobproperties.Beam.numberOfCollisions.set_Value_and_Lock(40.0);from LArROD.LArRODFlags import larRODFlags;larRODFlags.NumberOfCollisions.set_Value_and_Lock(40);larRODFlags.nSamples.set_Value_and_Lock(4);larRODFlags.doOFCPileupOptimization.set_Value_and_Lock(True);larRODFlags.firstSample.set_Value_and_Lock(0);larRODFlags.useHighestGainAutoCorr.set_Value_and_Lock(True)' 'RAWtoESD:from CaloRec.CaloCellFlags import jobproperties;jobproperties.CaloCellFlags.doLArCellEmMisCalib=False;from TriggerJobOpts.TriggerFlags import TriggerFlags;TriggerFlags.triggerMenuSetup="MC_pp_v6_tight_mc_prescale"' 'ESDtoAOD:TriggerFlags.AODEDMSet="AODSLIM"' 'HITtoRDO:userRunLumiOverride={"run":222525, "startmu":40.0, "endmu":41.0, "stepmu":1.0, "startlb":1, "timestamp": 1376703331}'  --numberOfCavernBkg '0' --preInclude 'HITtoRDO:Digitization/ForceUseOfPileUpTools.py,SimulationJobOptions/preInclude.PileUpBunchTrainsMC15_2015_25ns_Config1.py,RunDependentSimData/configLumi_muRange.py'  --mts ESD:0 --steering "RAWtoESD:in-RDO,in+RDO_TRIG,in-BS" --ignoreErrors 'True' | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Digi_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  export userJobId="mp_fullchain_mc15_ttbar_valid_13tev_25ns_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  checkxAOD.py myRDO.pool.root &gt; myRDO.pool.root.checkfile.txt ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-      <jobTransform userJobId="combined_reco_mc15_ttbar_valid_13tev_25ns_mu40">
-	<doc>Reco_tf runs on 13TeV collision mc ttbar 25 ns mu40</doc>
-	<jobTransformJobName>combined_reco_mc15_ttbar_valid_13tev_25ns_mu40</jobTransformJobName>
-	<jobTransformCmd>
-	  export TRF_ECHO=1; xrdcp root://eosatlas.cern.ch//eos/atlas/user/a/atlaspmb/mc/mc15_13TeV.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e4032_s2608_s2183_r7011/RDO.06336725._000001.pool.root.1 RDO.06336725._000001.pool.root.1 ;  Reco_tf.py --inputRDOFile RDO.06336725._000001.pool.root.1 --maxEvents 100 --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --preExec='from PerfMonComps.PerfMonFlags import jobproperties as pmjp;pmjp.PerfMonFlags.doPostProcessing=True;pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True;rec.doTrigger=False;'  --ignoreErrors 'True' --conditionsTag=OFLCOND-RUN12-SDR-25 | tee  __log.txt; 
-	  echo $? &gt;  __exitcode ; 
-	  touch __done ;
-	  grep  -i "Reco_tf" jobReport.txt  | head -n1 | awk -F\" '{print $2}' &gt; __command.sh;
-	  for f in ntuple*.pmon.gz; do if [ -f "$f" ]; then tar xf $f "*.pmonsd.*" ; fi; done ; 
-	  checkxAOD.py myESD.pool.root &gt; myESD.pool.root.checkfile.txt ; 
-	  checkxAOD.py myAOD.pool.root &gt; myAOD.pool.root.checkfile.txt ;  
-	  export userJobId="combined_reco_mc15_ttbar_valid_13tev_25ns_mu40"; 
-	  export headDir="/afs/cern.ch/atlas/project/pmb/new_pmb/archive/custom";
-	  export OutputDestination=${headDir}/`date +'%d/%m/%Y'`/`echo ${AtlasBuildBranch}`/`basename $ROOTSYS`/${userJobId}; 
-	  gzip *txt; 
-	  mkdir -p                       ${OutputDestination} ; 
-	  rsync -avz  *mem*             ${OutputDestination}/. ; 
-	  rsync -avz ntuple*             ${OutputDestination}/. ; 
-	  rsync -avz __*                 ${OutputDestination}/. ; 
-	  rsync -avz *.checkfile.txt.gz  ${OutputDestination}/. ; 
-	</jobTransformCmd>
-	<group>TrfRecPerf</group>
-	<queue>atlasrttperf</queue>
-      </jobTransform>
-
-
-
-
-    
-    </jobList>
-
-    <jobGroups>
-      <jobGroup name="TrfRecPerf" parent="Transform">
-	<!-- keep everything which is not huge -->
-	<keepFilePattern>*.checkfile.txt</keepFilePattern>
-	<keepFilePattern>*.pmon.gz</keepFilePattern>
-	<keepFilePattern>*log*</keepFilePattern>
-	<keepFilePattern>*mem*</keepFilePattern>
-	<keepFilePattern>*exitcode*</keepFilePattern>
-	<keepFilePattern>*checkfile*</keepFilePattern>
-	<keepFilePattern>*.xml</keepFilePattern>
-	<keepFilePattern>*.py</keepFilePattern>
-	<keepFilePattern>*.pdf</keepFilePattern>
-	<keepFilePattern>*.txt</keepFilePattern>
-	<keepFilePattern>*.png</keepFilePattern>
-	<keepFilePattern>*.out</keepFilePattern>
-	<keepFilePattern>*.ascii</keepFilePattern>
-	<keepFilePattern>last*</keepFilePattern>
-	<keepFilePattern>*pickle</keepFilePattern>
-	<keepFilePattern>jobReport*</keepFilePattern>
-	<keepFilePattern>runargs*</keepFilePattern>
-	<keepFilePattern>ntuple*perfmon*</keepFilePattern>
-	<keepFilePattern>pmb-callgrind*log</keepFilePattern>
-	<keepFilePattern>callgrind*bz2</keepFilePattern>
-	<keepFilePattern>log.RAWtoESD</keepFilePattern>
-	<keepFilePattern>log.ESDtoAOD</keepFilePattern>
-	<keepFilePattern>log.AODtoDAOD</keepFilePattern>
-
-      </jobGroup>
-      
-    </jobGroups>
-    
-  </rtt>
-</unifiedTestConfiguration>
diff --git a/Reconstruction/RecExample/RecPerfTests/test/trfmultidomain.x b/Reconstruction/RecExample/RecPerfTests/test/trfmultidomain.x
deleted file mode 100755
index 0b1ff3b4c064ecc2cfb86e8edec2a205ef0ba409..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecPerfTests/test/trfmultidomain.x
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/bin/bash
-
-# Script for running multiple jobs with various domains enabled.
-# Authors: David Rousseau & Thomas Kittelmann
-
-###########################
-#  Common configuration:  #
-###########################
-
-#1) The transform:
-TRANSFORM=RAWtoESD_trf.py
-
-#2) Input file: Choose input by uncommenting in next lines to pick either BS or RDO:
-
-#7TeV collisions BS file:
-INPUTISBS=1
-INPUT=/afs/cern.ch/atlas/project/pmb/data/data11_7TeV.00182726.physics_JetTauEtmiss.merge.RAW._lb0215._SFO-5._0001.1_1000evts
-
-#Various older inputs:
-#INPUT=/afs/cern.ch/atlas/project/rig/referencefiles/dataStreams/data11_7TeV.00178044.physics_JetTauEtmiss.merge.RAW._lb0092._SFO-4._0001.1
-#/afs/cern.ch/atlas/project/rig/data/data10_7TeV.00165632.express_express.merge.RAW._lb0200._SFO-ALL._0001.1
-#/afs/cern.ch/atlas/project/rig/data/data10_7TeV.00153565.physics_L1CaloEM.merge.RAW._lb0420._0001.1 (1727 events)
-#(early minbias) INPUT=/afs/cern.ch/atlas/project/rig/data/data10_7TeV.00152166.physics_MinBias.merge.RAW._lb0206._0001.1
-#Small cosmic (10 events)
-#INPUTISBS=1
-#INPUT="/afs/cern.ch/user/g/gencomm/w0/RTT_INPUT_DATA/CosmicATN/daq.ATLAS.0091900.physics.IDCosmic.LB0001.SFO-1._0001.10EVTS.data"
-#Big cosmic file (406 evts):
-#INPUTISBS=1
-#INPUT="/afs/cern.ch/user/g/gencomm/w0/RTT_INPUT_DATA/data09_cos.00122096.physics_IDCosmic.daq.RAW._lb0000._SFO-3._0497.data"
-#Big RDO (250 evts)
-#INPUTISBS=0
-#INPUT="rfio:/castor/cern.ch/grid/atlas/atlasgroupdisk/proj-sit/rtt/RTTdata/valid1.005200.T1_McAtNlo_Jimmy.digit.RDO.e322_s488_d151_tid039414/RDO.039414._00001.pool.root.1"
-
-#3) Overall flags (excluding the input):
-COMMONFLAGS="maxEvents=5 autoConfiguration=everything --athenaopts=--stdcmalloc"
-
-#Special flag used to update the RecPerfTests xml:
-PRODUCETESTXML=0
-
-#Overall env var:
-export ATHENA_PYCINTEX_MINVMEM=150
-
-######################
-#  Helper function:  #
-######################
-
-if [ $INPUTISBS == 1 ]; then
-    TYPELOW="bs"
-    TYPEUP="BS"
-else
-    TYPELOW="rdo"
-    TYPEUP="RDO"
-fi
-COMMONFLAGS="input${TYPEUP}File=$INPUT $COMMONFLAGS"
-
-RUNDIR=$PWD
-LOGDIR=$RUNDIR/logs
-function runjob {
-    NAME=$1
-    DOC=$2
-    shift 2
-    EXTRAARGS=$*
-    if [ "x$DOC" == "x" ]; then
-	DOC=$NAME
-    fi
-    DOC="RAWtoESD_trf.py on ${TYPEUP} running $DOC."
-
-    if [ "x$PRODUCETESTXML" != "x1" ]; then
-	JOBDIR=$RUNDIR/job_$NAME
-	LOGFILE=$LOGDIR/rawtoesdtrf_$NAME.log
-	mkdir -p $LOGDIR
-	mkdir $JOBDIR && cd $JOBDIR
-	echo "-------------------------------------------------------------------------"
-	echo "Running job: '$NAME'"
-	echo "   Command:    "$TRANSFORM $COMMONFLAGS $EXTRAARGS
-	echo "   Description: $DOC"
-	echo "   Running in: $PWD"
-	echo "   Output log: $LOGFILE"
-        time $TRANSFORM $COMMONFLAGS $EXTRAARGS 2>&1 > $LOGFILE
-	EC=$?
-	echo "   Exit Code: ${EC}"
-	echo "-------------------------------------------------------------------------"
-	echo
-	cd $RUNDIR
-    else
-	RTTGROUP="TrfRecPerf${TYPEUP}"
-	TRENDID="${NAME}_${TYPELOW}"
-	echo "      <jobTransform trendId=\"$TRENDID\">"
-	echo "        <doc>$DOC</doc>"
-	echo "        <jobTransformJobName>$TRENDID</jobTransformJobName>"
-	echo "        <jobTransformCmd>$TRANSFORM $COMMONFLAGS $EXTRAARGS</jobTransformCmd>"
-	echo "        <group>TrfRecPerf${TYPEUP}</group>"
-	echo "        <dataset_info>"
-	echo "          <jobTransformData />"
-	echo "          <datasetName>$INPUT</datasetName>"
-	echo "          </dataset_info>"
-	echo "        <queue>medium</queue>"
-	echo "      </jobTransform>"
-	echo
-    fi
-}
-
-###############
-#  The jobs:  #
-###############
-
-MONFLAGS="outputDQMonitorFile=myMon.root"
-#NB: MUONCALIBFile and ZMUMUFile only on Muons stream and ZEEFile only on Egamma stream.
-OUTPUTFLAGS="outputESDFile=myESD.pool.root outputNTUP_MUONCALIBFile=myNTUP_MUONCALIB.root outputDRAW_ZMUMUFile=myDRAW_ZMUMU.data outputDRAW_ZEEFile=myDRAW_ZEE.data"
-PREEXEC_ALL="from@PerfMonComps.PerfMonFlags@import@jobproperties@as@pmjp,,pmjp.PerfMonFlags.doSemiDetailedMonitoringFullPrint=True"
-
-#First 6 jobs to disentangle core,id,muon,calo:
-runjob core nothing preExec=$PREEXEC_ALL,,rec.doCalo=False,,rec.doForwardDet=False,,rec.doInDet=False,,rec.doMuon=False,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doMuonCombined=False,,rec.doTau=False,,rec.doTrigger=False
-runjob id '' preExec=$PREEXEC_ALL,,rec.doCalo=False,,rec.doForwardDet=False,,rec.doMuon=False,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doMuonCombined=False,,rec.doTau=False,,rec.doTrigger=False
-runjob calo '' preExec=$PREEXEC_ALL,,rec.doInDet=False,,rec.doMuon=False,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doMuonCombined=False,,rec.doTau=False,,rec.doTrigger=False
-runjob muon '' preExec=$PREEXEC_ALL,,rec.doCalo=False,,rec.doForwardDet=False,,rec.doInDet=False,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doMuonCombined=False,,rec.doTau=False,,rec.doTrigger=False
-runjob idmuon '' preExec=$PREEXEC_ALL,,rec.doCalo=False,,rec.doForwardDet=False,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doMuonCombined=False,,rec.doTau=False,,rec.doTrigger=False
-runjob idmuoncalo '' preExec=$PREEXEC_ALL,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doMuonCombined=False,,rec.doTau=False,,rec.doTrigger=False
-
-#combined reco and egamma:
-runjob idmuoncalomucomb '' preExec=$PREEXEC_ALL,,rec.doJetMissingETTag=False,,rec.doEgamma=False,,rec.doTau=False,,rec.doTrigger=False
-runjob nojet idmuoncalomucombegamma preExec=$PREEXEC_ALL,,rec.doJetMissingETTag=False,,rec.doTau=False,,rec.doTrigger=False
-
-#Jets/tau/etmiss/btagging. Not that it only makes sense to enable the next domains in the order: jet->btag->tau->etmiss:
-NOETMISS='"recAlgs.doMissingET.set_Value_and_Lock(False)"'
-runjob jet idmuoncalomucombegammajet preExec=$PREEXEC_ALL,,rec.doJetMissingETTag=True,,rec.doTau=False,,rec.doTrigger=False,,jobproperties.JetRecFlags.doBTagging=False,,$NOETMISS
-runjob jetbtag idmuoncalomucombegammajetbtag preExec=$PREEXEC_ALL,,rec.doJetMissingETTag=True,,rec.doTau=False,,rec.doTrigger=False,,$NOETMISS
-runjob jetbtagtau idmuoncalomucombegammajetbtagtau preExec=$PREEXEC_ALL,,rec.doJetMissingETTag=True,,rec.doTau=True,,rec.doTrigger=False,,$NOETMISS
-runjob notrig idmuoncalomucombegammajetbtagtauetmiss preExec=$PREEXEC_ALL,,rec.doTrigger=False
-
-#Special jobs with output/mon enabled before the trigger - to split up those domains (and to provide output/mon info when trigger fails to run):
-runjob notrigmon idmuoncalomucombegammajetbtagtauetmissmon preExec=$PREEXEC_ALL,,rec.doTrigger=False $MONFLAGS
-runjob notrigmonout idmuoncalomucombegammajetbtagtauetmissmonoutput preExec=$PREEXEC_ALL,,rec.doTrigger=False $MONFLAGS $OUTPUTFLAGS
-
-#Enable the trigger in three steps: base/lvl2/event-filter:
-runjob trigbase idmuoncalomucombegammajetbtagtauetmisstrigbase preExec=$PREEXEC_ALL,,rec.doTrigger=True,,TriggerFlags.doLVL1=True,,TriggerFlags.doLVL2=False,,TriggerFlags.doEF=False
-runjob trigbaselvl2 idmuoncalomucombegammajetbtagtauetmisstrigbaselvl2 preExec=$PREEXEC_ALL,,rec.doTrigger=True,,TriggerFlags.doLVL1=True,,TriggerFlags.doEF=False
-runjob trig idmuoncalomucombegammajetbtagtauetmisstrigbaselvl2ef preExec=$PREEXEC_ALL
-
-#Finally enable monitoring and output writing in that order:
-runjob trigmon idmuoncalomucombegammajetbtagtauetmisstrigbaselvl2efmon preExec=$PREEXEC_ALL $MONFLAGS
-runjob all idmuoncalomucombegammajetbtagtauetmisstrigbaselvl2efmonout preExec=$PREEXEC_ALL $MONFLAGS $OUTPUTFLAGS
-
diff --git a/Reconstruction/RecJobTransforms/python/ConfigUtils.py b/Reconstruction/RecJobTransforms/python/ConfigUtils.py
deleted file mode 100644
index fe7189dfba9304bc41941b0bcf6cfa3d386a2e56..0000000000000000000000000000000000000000
--- a/Reconstruction/RecJobTransforms/python/ConfigUtils.py
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-
-# First define a list of functions
-# Then call them from PredefinedConfigFunctions(key,runArgs) at the end
-
-from __future__ import print_function
-def ConfigureFieldAndGeo(runArgs):
-    print("Method ConfigureFieldAndGeo...")
-    from PATJobTransforms.GeoConfig import GetRunNumber
-    RunNumber=GetRunNumber(runArgs)
-    print("Configuring geometry and field from RunNuber",RunNumber)
-    from RecExCommission.RecExCommission_MagneticFieldConfig import setFieldConfig
-    setFieldConfig(RunNumber)
-    return
-
-#------------------------
-def SetBeamType(runArgs):
-    print("Method SetBeamType...")
-    BeamType='NONE'
-    if hasattr(runArgs,"beamType"):
-        BeamType=runArgs.beamType
-    elif hasattr(runArgs,"outputESDFile") or hasattr(runArgs,"outputAODFile") or hasattr(runArgs,"inputESDFile") or hasattr(runArgs,"inputAODFile"):
-        print("Attempting to set beamType from outputESD or outputAOD file...")
-        print("known cosmics projects: data08_cos, data08_cosmag")
-        print("known single beam projects: data08_1beam, data08_1beammag")
-        print("know collisions projects: data08_coll900, data08 ")
-
-        if hasattr(runArgs,"outputESDFile"): fileName=runArgs.outputESDFile
-        elif hasattr(runArgs,"outputAODFile"): fileName=runArgs.outputAODFile
-        elif hasattr(runArgs,"inputESDFile"): fileName=runArgs.inputESDFile[0]
-        elif hasattr(runArgs,"inputAODFile"): fileName=runArgs.inputAODFile[0]
-        #base on a file named like this:
-        #run08_cos.00077585.physics_HLT_Cosmics_NIM4.recon.ESD.o4_r509_tid024433/ESD.024433._00001.pool.root.2
-        #or directly
-        #data08_cosmag.00090415.physics_CosmicMuons.recon.ESD.o4_f68._lb0001._sfo02._0001
-
-        #if several directories, take the first part
-        subNames=fileName.split('/')
-        firstName=subNames[0]
-        #from run08_cos.ESD.pool.root, split by dots and project is the first part
-        project = firstName.split('.')[0]
-        print('project = ',project)
-        if project=="data08_cos" or project=="data08_cosmag": BeamType='cosmics'
-        elif project=="data08_1beam" or project=="data08_1beammag": BeamType='singlebeam'
-        elif project=="data08" or project=="data08_coll900": BeamType='collisions'
-        else:
-            print("\n\nWARNING - unknown project name '%s'\n\n"%project)
-            print("Will try to guess project from 'data', '_cos', '_1beam', '_coll' keywords...")
-            if project.startswith('data'):
-                if project.rfind('_cos')>0: BeamType='cosmics'
-                elif project.rfind('_1beam')>0: BeamType='singlebeam'
-                elif project.rfind('_coll')>0: BeamType='collisions'                
-            if BeamType == 'NONE':
-                print("Unexpected project name. Maybe the project position is wrong?")
-                print("Trying to search the complete file name for known projects... [%s]"%fileName)
-                if fileName.rfind("data08_cos")>0 or fileName.rfind("data08_cosmag")>0: BeamType='cosmics'
-                elif fileName.rfind("data08_1beam")>0 or fileName.rfind("data08_1beammag")>0: BeamType='singlebeam'
-                elif fileName.rfind("data08.")>0 or fileName.rfind("data08_coll900")>0: BeamType='collisions'
-                else:
-                    raise RuntimeError("(2) Unable to determine beamType from file named '%s'"%fileName)
-            
-    if BeamType == 'NONE':
-        raise RuntimeError("(3) Unable to determine beamType from file name nor from direct argument")
-    else:
-        from AthenaCommon.BeamFlags import jobproperties
-        jobproperties.Beam.beamType.set_Value_and_Lock( BeamType )
-        print("The beamType is set to",BeamType)
-
-    return
-
-
-def PredefinedConfigFunctions(key,runArgs):
-    if key == "FieldAndGeo":
-        ConfigureFieldAndGeo(runArgs)
-    elif key == "BeamType":
-        SetBeamType(runArgs)
-    else:
-        raise RuntimeError("Unknown key '%s' in PredefinedConfigFunctions(key,runArgs)"%key)
-    return
-
diff --git a/Reconstruction/eflowRec/share/PFlowMTConfig.py b/Reconstruction/eflowRec/share/PFlowMTConfig.py
index 4fe88b2e26b735e6e09dbb07f507f0909eee7577..905e0e234285940955c5a10f5666179367072d2d 100644
--- a/Reconstruction/eflowRec/share/PFlowMTConfig.py
+++ b/Reconstruction/eflowRec/share/PFlowMTConfig.py
@@ -283,32 +283,6 @@ if jobproperties.eflowRecFlags.useFlowElements:
   PFMuonFlowElementAssocAlg.m_UseMuonTopoClusters=False # requires m_LinkNeutralFEClusters=True and if set to True= Retrieves TopoClusters from Aux. If not, cell-match muon calocluster to NFE topocluster.
   topSequence += PFMuonFlowElementAssocAlg
 
-  
-  if jobproperties.eflowRecFlags.doFlowElementValidation:
-      # since FE are not added at Tier0 yet, need to add it to the eflowRec routine
-      from AthenaMonitoring.AthenaMonitoringConf import AthenaMonManager
-      monMan = AthenaMonManager( "PhysValMonManager" )
-      monMan.ManualDataTypeSetup = True
-      monMan.DataType            = "monteCarlo"
-      monMan.Environment         = "altprod"
-      monMan.ManualRunLBSetup    = True
-      monMan.Run                 = 1
-      monMan.LumiBlock           = 1
-      monMan.FileKey = "PhysVal"
-      
-      
-      
-      include("PhysValMonitoring/PhysValPFlow_FlowElements_jobOptions.py")
-      
-      for tool in monMan.AthenaMonTools:
-          tool.EnableLumi = False
-          tool.ManagerName = 'PhysValMonManager'
-    
-      from AthenaCommon.AppMgr import ServiceMgr
-      from GaudiSvc.GaudiSvcConf import THistSvc
-      ServiceMgr += THistSvc()
-      svcMgr.THistSvc.Output += ["PhysVal DATAFILE='PhysVal.root' OPT='RECREATE'"]
-      topSequence += monMan  
       
 
   
diff --git a/Reconstruction/eflowRec/share/tauFELinkConfig.py b/Reconstruction/eflowRec/share/tauFELinkConfig.py
index fb0d78316e26d37c58a22a1b4c60e9a7bc4787ff..750e4104f6a21c0abb0628142575ec7935f641d4 100644
--- a/Reconstruction/eflowRec/share/tauFELinkConfig.py
+++ b/Reconstruction/eflowRec/share/tauFELinkConfig.py
@@ -6,3 +6,29 @@ if jobproperties.eflowRecFlags.usePFTauFlowElementAssoc and jobproperties.eflowR
     from eflowRec.eflowRecConf import PFTauFlowElementAssoc
     PFTauFlowElementAssoc=PFTauFlowElementAssoc("PFTauFlowElementAssoc")
     topSequence += PFTauFlowElementAssoc
+
+if jobproperties.eflowRecFlags.doFlowElementValidation and jobproperties.eflowRecFlags.useFlowElements:
+    # since FE are not added at Tier0 yet, need to add it to the eflowRec routine
+    from AthenaMonitoring.AthenaMonitoringConf import AthenaMonManager
+    monMan = AthenaMonManager( "PhysValMonManager" )
+    monMan.ManualDataTypeSetup = True
+    monMan.DataType            = "monteCarlo"
+    monMan.Environment         = "altprod"
+    monMan.ManualRunLBSetup    = True
+    monMan.Run                 = 1
+    monMan.LumiBlock           = 1
+    monMan.FileKey = "PhysVal"
+    
+          
+    include("PhysValMonitoring/PhysValPFlow_FlowElements_jobOptions.py")
+    
+    for tool in monMan.AthenaMonTools:
+        tool.EnableLumi = False
+        tool.ManagerName = 'PhysValMonManager'
+        
+    from AthenaCommon.AppMgr import ServiceMgr
+    from GaudiSvc.GaudiSvcConf import THistSvc
+    ServiceMgr += THistSvc()
+    svcMgr.THistSvc.Output += ["PhysVal DATAFILE='PhysVal.root' OPT='RECREATE'"]
+    topSequence += monMan  
+      
diff --git a/Tools/Tier0ChainTests/scripts/tct_runAll.sh b/Tools/Tier0ChainTests/scripts/tct_runAll.sh
index fc2e8269793b329af04d7ee453242999f6384ca0..fbf5914aebb5a82808ed19ee9d71f55bf7d05a2d 100755
--- a/Tools/Tier0ChainTests/scripts/tct_runAll.sh
+++ b/Tools/Tier0ChainTests/scripts/tct_runAll.sh
@@ -87,7 +87,7 @@ do
   idx=`expr $idx + 1`
 done
 
-TRFARGS="preInclude=RecExCommission/MinimalCommissioningSetup.py --ignoreunknown"
+TRFARGS="preInclude=RecExCond/MinimalCommissioningSetup.py --ignoreunknown"
 
 ## merge aods
 INFILE=job_${TRIGSTR}_0.AOD.pool.root
diff --git a/Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection/CMakeLists.txt b/Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection/CMakeLists.txt
index 46b2549a26376d64ba92f07a8a2c15ce7b2f43e1..50285282d02ee562370e75ee87f359868ed65775 100644
--- a/Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection/CMakeLists.txt
+++ b/Trigger/TrigAnalysis/TrigGlobalEfficiencyCorrection/CMakeLists.txt
@@ -17,7 +17,7 @@ atlas_add_library( TrigGlobalEfficiencyCorrectionLib
    #PUBLIC_HEADERS TrigGlobalEfficiencyCorrection/TrigGlobalEfficiencyCorrectionTool.h
    PUBLIC_HEADERS TrigGlobalEfficiencyCorrection
    PRIVATE_INCLUDE_DIRS ${BOOST_INCLUDE_DIRS} TriggerAnalysisInterfaces
-   LINK_LIBRARIES AsgTools xAODEgamma xAODMuon TriggerAnalysisInterfaces AthAnalysisBaseCompsLib EgammaAnalysisInterfacesLib MuonAnalysisInterfacesLib xAODEventInfo PathResolver TriggerMatchingToolLib
+   LINK_LIBRARIES AsgTools xAODEgamma xAODMuon TriggerAnalysisInterfaces EgammaAnalysisInterfacesLib MuonAnalysisInterfacesLib xAODEventInfo PathResolver TriggerMatchingToolLib
    PRIVATE_LINK_LIBRARIES ${BOOST_LIBRARIES}
 )
 
@@ -36,7 +36,7 @@ atlas_add_dictionary( TrigGlobalEfficiencyCorrectionDict
 
 set( pool_lib )
 if( NOT XAOD_STANDALONE )
-  set( pool_lib POOLRootAccessLib )
+  set( pool_lib POOLRootAccessLib AthAnalysisBaseCompsLib )
 endif()
 
 foreach(example TrigGlobEffCorrExample0 TrigGlobEffCorrExample1
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
index 957687f655578cb1ee3a8583512760e3b86d4b1f..21b28209fe94dbc94939628fda220274c0b9ca12 100644
--- a/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/src/TrigBjetBtagHypoAlgMT.cxx
@@ -359,9 +359,9 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO
   MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumTrackRelativeEta, float, bTaggingEL);
   MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageTrackRelativeEta, float, bTaggingEL);
 
-  MONITOR_BTAG_AUX_VAR(maximumTrackRelativeEta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(minimumTrackRelativeEta, float, bTaggingEL);
-  MONITOR_BTAG_AUX_VAR(averageTrackRelativeEta, float, bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta, float, bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta, float, bTaggingEL);
+  MONITOR_BTAG_AUX_VAR(JetFitterSecondaryVertex_averageAllJetTrackRelativeEta, float, bTaggingEL);
 
 
 
@@ -412,9 +412,9 @@ StatusCode TrigBjetBtagHypoAlgMT::monitor_btagging( const ElementLinkVector< xAO
     monitor_for_JetFitterSecondaryVertex_maximumTrackRelativeEta,
     monitor_for_JetFitterSecondaryVertex_minimumTrackRelativeEta,
     monitor_for_JetFitterSecondaryVertex_averageTrackRelativeEta,
-    monitor_for_maximumTrackRelativeEta,
-    monitor_for_minimumTrackRelativeEta,
-    monitor_for_averageTrackRelativeEta,
+    monitor_for_JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta,
+    monitor_for_JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta,
+    monitor_for_JetFitterSecondaryVertex_averageAllJetTrackRelativeEta,
     monitor_for_MV2c10
   );
 
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_combgen.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_combgen.cxx
deleted file mode 100644
index 1bbef9500caf4804a316b10bd96e016656cb8023..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_combgen.cxx
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// ********************************************************************
-//
-// NAME:     TrigJetHypoToolMT_combgen.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-//
-// ********************************************************************
-
-#include "TrigJetHypoToolConfig_combgen.h"
-#include "./conditionsFactoryMT.h"
-
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CombinationsGrouper.h"
-#include "./CombinationsGroupsToHelpersMatcherMT.h"
-
-TrigJetHypoToolConfig_combgen::TrigJetHypoToolConfig_combgen(const std::string& type,
-                                                 const std::string& name,
-                                                 const IInterface* parent) :
-  base_class(type, name, parent){
-
-}
-
-
-TrigJetHypoToolConfig_combgen::~TrigJetHypoToolConfig_combgen(){
-}
-
-StatusCode TrigJetHypoToolConfig_combgen::initialize() {
-  CHECK(checkVals());
-  
-  auto mult = (*m_children.begin()) -> requiresNJets();
- 
-  for (const auto& c : m_children){
-
-    if(c->requiresNJets() != mult){
-      ATH_MSG_ERROR(name() << " Children require differing number of jets:");
-      ATH_MSG_ERROR(" First child name: "
-		    << (*m_children.begin()) -> name()
-		    << " " << mult);
-      ATH_MSG_ERROR(" Differing mult child name: "
-		    << c -> name()
-		    << c-requiresNJets()
-		    );
-
-      return StatusCode::FAILURE;
-    }
-  }
-
-  if(!mult){
-    ATH_MSG_ERROR("Children require 0 jets:");
-    return StatusCode::FAILURE;
-  }
-    
-  m_size = mult;
-  
-  return StatusCode::SUCCESS;
-}
-
-
-
-
-std::optional<ConditionsMT>
-TrigJetHypoToolConfig_combgen::getConditions() const {
-  
-  ConditionsMT compoundConditions;
-	  
-
-  // collect the Conditions objects from the various sources
-  // return an invalid optional if any src signals a problem
-  
-  // m_condition makers is a list of compound condition makers
-  for(const auto& cm : m_conditionMakers) {
-    compoundConditions.push_back(cm->getCondition());
-  }
-  
-  return std::make_optional<ConditionsMT>(std::move(compoundConditions));
-
-}
-
- 
-std::unique_ptr<IJetGrouper>
-TrigJetHypoToolConfig_combgen::getJetGrouper() const {
-  return std::make_unique<CombinationsGrouper>(m_size);
-}
-
-StatusCode TrigJetHypoToolConfig_combgen::checkVals() const {
-
-  if(m_children.empty()){return  StatusCode::FAILURE;}
-  
-  return StatusCode::SUCCESS;
-}
-
-std::vector<std::shared_ptr<ICleaner>> 
-TrigJetHypoToolConfig_combgen::getCleaners() const {
-  std::vector<std::shared_ptr<ICleaner>> v;
-  return v;
-}
-
-
-std::unique_ptr<IGroupsMatcherMT>
-TrigJetHypoToolConfig_combgen::getMatcher () const {
-  /* Provides a matcher that matcheZ<s single HypoJetVectors to
-     multiple ITrigJetHypoToolHelperMT*/
-
-  return std::make_unique<CombinationsGroupsToHelpersMatcherMT>(m_children);
-}
-
-std::size_t
-TrigJetHypoToolConfig_combgen::requiresNJets() const {
-
-  // at least one child, all children with same multiplicity requirements
-  // checked from initialize
-  return m_children[0]->requiresNJets();
-}
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_combgen.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_combgen.h
deleted file mode 100644
index 4a16939f06440cc74e244e53b7b790778a02aa11..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_combgen.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGJETHYPOTOOLConfig_COMBGEN_H
-#define TRIGJETHYPOTOOLConfig_COMBGEN_H
-/********************************************************************
- *
- * NAME:     TrigJetHypoToolConfig_combgen.h
- * PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
- *
- *
- *********************************************************************/
-
-
-#include "ITrigJetHypoToolConfig.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigCompositeUtils/HLTIdentifier.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-#include "AthenaMonitoringKernel/GenericMonitoringTool.h"
-#include "TrigHLTJetHypo/ITrigJetHypoToolHelperMT.h"
-
-
-#include "./ConditionsDefsMT.h"
-#include "./ITrigJetConditionConfig.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h"
-
-class TrigJetHypoToolConfig_combgen:
-public extends<AthAlgTool, ITrigJetHypoToolConfig> {
-
- public:
-  
-  TrigJetHypoToolConfig_combgen(const std::string& type,
-                          const std::string& name,
-                          const IInterface* parent);
-  virtual ~TrigJetHypoToolConfig_combgen();
-
-  virtual StatusCode initialize() override;
-  virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override;
-  virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override;
-  virtual std::unique_ptr<IGroupsMatcherMT> getMatcher() const override;
-
-  virtual std::optional<ConditionsMT> getConditions() const override;
-
-  virtual std::size_t requiresNJets() const override;
-  
- private:
-
-  ToolHandleArray<ITrigJetConditionConfig> m_conditionMakers{
-    this, "conditionMakers", {}, "conditions makers for a leaf node."};
-  
-  std::size_t m_size{0};  // size of jet groups to pass to children
-
-  // m_children: used to make the matcher. The matcher takes care of
-  // passign jet groups to the child helpers.
-  ToolHandleArray<ITrigJetHypoToolHelperMT> m_children {
-    this, "children", {}, "list of child jet hypo helpers"};
-
-  virtual StatusCode checkVals()  const override;
- 
-};
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_dijet.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_dijet.cxx
deleted file mode 100644
index 31363b29b49c17ed4dcf8818ea24407d82bfc476..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_dijet.cxx
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-/*
-  Instatniation of JetHypo components for  the DiMass scenario
- */
-#include "TrigJetHypoToolConfig_dijet.h"
-
-#include "GaudiKernel/StatusCode.h"
-
-#include "./conditionsFactoryMT.h"
-
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CombinationsGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/xAODJetAsIJetFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/groupsMatcherFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h"
-#include "ArgStrToDouble.h"
-#include "./groupsMatcherFactoryMT.h"
-
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-
-#include <algorithm>
-
-using TrigCompositeUtils::DecisionID;
-using TrigCompositeUtils::Decision;
-using TrigCompositeUtils::DecisionContainer;
-
-TrigJetHypoToolConfig_dijet::TrigJetHypoToolConfig_dijet(const std::string& type,
-                                                 const std::string& name,
-                                                 const IInterface* parent) :
-  base_class(type, name, parent){
-
-}
-
-
-TrigJetHypoToolConfig_dijet::~TrigJetHypoToolConfig_dijet(){
-}
-
-StatusCode TrigJetHypoToolConfig_dijet::initialize() {
-  CHECK(checkVals());
-
-  ArgStrToDouble a2d;
-  
-  std::transform(m_massMins_str.begin(),
-                 m_massMins_str.end(),
-                 std::back_inserter(m_massMins),
-                 a2d
-                 );
-
-    
-  std::transform(m_massMaxs_str.begin(),
-                 m_massMaxs_str.end(),
-                 std::back_inserter(m_massMaxs),
-                 a2d
-                 );
-
-    
-  std::transform(m_dEtaMins_str.begin(),
-                 m_dEtaMins_str.end(),
-                 std::back_inserter(m_dEtaMins),
-                 a2d
-                 );
-  
-  std::transform(m_dEtaMaxs_str.begin(),
-                 m_dEtaMaxs_str.end(),
-                 std::back_inserter(m_dEtaMaxs),
-                 a2d
-                 );
-
-  std::transform(m_dPhiMins_str.begin(),
-                 m_dPhiMins_str.end(),
-                 std::back_inserter(m_dPhiMins),
-                 a2d
-                 );
-  
-  std::transform(m_dPhiMaxs_str.begin(),
-                 m_dPhiMaxs_str.end(),
-                 std::back_inserter(m_dPhiMaxs),
-                 a2d
-                 );
-
-  return StatusCode::SUCCESS;
-}
-
-
-
-
-std::optional<ConditionsMT>
-TrigJetHypoToolConfig_dijet::getConditions() const {
-  return
-    std::make_optional<ConditionsMT>(conditionsFactoryDijetMT(m_massMins,
-							      m_massMaxs,
-							      m_dEtaMins,
-							      m_dEtaMaxs,
-							      m_dPhiMins,
-							      m_dPhiMaxs));
-}
-
- 
-std::unique_ptr<IJetGrouper> TrigJetHypoToolConfig_dijet::getJetGrouper() const {
-  return std::make_unique<CombinationsGrouper>(2);
-}
-
-StatusCode TrigJetHypoToolConfig_dijet::checkVals() const {
-  // check cionsistent sizes
-
-  auto sz = m_massMins.size();
-  if (sz != m_massMaxs.size() or
-      sz != m_dEtaMins.size() or
-      sz != m_dEtaMaxs.size() or
-      sz != m_dPhiMins.size() or
-      sz != m_dPhiMaxs.size()){
-    ATH_MSG_ERROR(name()
-                  << ": mismatch between number of thresholds "
-                  << "and min, max fro mass, dEta, dPhi "
-                  << m_massMins.size() << " "
-                  << m_massMaxs.size() << " "
-                  << m_dEtaMins.size() << " "
-                  << m_dEtaMaxs.size() << " "
-                  << m_dPhiMins.size() << " "
-                  << m_dPhiMaxs.size() << " ");
-    
-    return StatusCode::FAILURE;
-  }
-  return StatusCode::SUCCESS;
-}
-
-std::vector<std::shared_ptr<ICleaner>> 
-TrigJetHypoToolConfig_dijet::getCleaners() const {
-  std::vector<std::shared_ptr<ICleaner>> v;
-  return v;
-}
-
-std::unique_ptr<IGroupsMatcherMT>
-TrigJetHypoToolConfig_dijet::getMatcher () const {
-
-  auto opt_conds = getConditions();
-
-  if(!opt_conds.has_value()){
-    return std::unique_ptr<IGroupsMatcherMT>(nullptr);
-  }
-  
-  return groupsMatcherFactoryMT_MaxBipartite(std::move(*opt_conds));
-}
-
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_dijet.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_dijet.h
deleted file mode 100644
index 759928d5934033be85ba0d484ae4394787dc7164..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_dijet.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGJETHYPOTOOLConfig_DIJET_H
-#define TRIGJETHYPOTOOLConfig_DIJET_H
-/********************************************************************
- *
- * NAME:     TrigJetHypoToolConfig_dijetTool.h
- * PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
- *
- *
- *********************************************************************/
-
-
-#include "ITrigJetHypoToolConfig.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigCompositeUtils/HLTIdentifier.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-#include "AthenaMonitoringKernel/GenericMonitoringTool.h"
-
-#include "./ConditionsDefsMT.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h"
-
-class TrigJetHypoToolConfig_dijet:
-public extends<AthAlgTool, ITrigJetHypoToolConfig> {
-
- public:
-  
-  TrigJetHypoToolConfig_dijet(const std::string& type,
-                          const std::string& name,
-                          const IInterface* parent);
-  virtual ~TrigJetHypoToolConfig_dijet();
-
-  virtual StatusCode initialize() override;
-  virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override;
-  virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override;
-  virtual std::unique_ptr<IGroupsMatcherMT> getMatcher() const override;
-  virtual std::optional<ConditionsMT> getConditions() const override;
-  virtual std::size_t requiresNJets() const override {return 2;}
-
-
- private:
-
-  Gaudi::Property<std::vector<std::string>>
-    m_massMins_str{this, "mass_mins", {}, "min mass for each dijet"};
-
-  Gaudi::Property<std::vector<std::string>>
-    m_massMaxs_str{this, "mass_maxs", {}, "max mass for each dijet"};
-
-  Gaudi::Property<std::vector<std::string>>
-    m_dEtaMins_str{this, "deta_mins", {}, "min dEta for jets in each dijet"};
-
-  Gaudi::Property<std::vector<std::string>>
-    m_dEtaMaxs_str{this, "deta_maxs", {}, "max dEta for jets in each dijet"};
-
-  Gaudi::Property<std::vector<std::string>>
-    m_dPhiMins_str{this, "dphi_mins", {}, "min dPhi for jets in each dijet"};
-
-  Gaudi::Property<std::vector<std::string>>
-    m_dPhiMaxs_str{this, "dphi_maxs", {}, "max dPhi for jets in each dijet"};
-
-  std::vector<double> m_massMins;
-  std::vector<double> m_massMaxs;
-  std::vector<double> m_dEtaMins;
-  std::vector<double> m_dEtaMaxs;
-  std::vector<double> m_dPhiMins;
-  std::vector<double> m_dPhiMaxs;
-
-  virtual StatusCode checkVals()  const override;
-};
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_leaf.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_leaf.cxx
deleted file mode 100644
index e79a0466c735421d3438625048dedae105cd0738..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_leaf.cxx
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// ********************************************************************
-//
-// NAME:     TrigJetHypoToolMT_leaf.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-//
-// ********************************************************************
-
-#include "TrigJetHypoToolConfig_leaf.h"
-
-#include "GaudiKernel/StatusCode.h"
-
-#include "./conditionsFactoryMT.h"
-
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/SingleJetGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CombinationsGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/xAODJetAsIJetFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/groupsMatcherFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h"
-#include "./groupsMatcherFactoryMT.h"
-#include "./svec2dvec.h"
-
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-
-using TrigCompositeUtils::DecisionID;
-using TrigCompositeUtils::Decision;
-using TrigCompositeUtils::DecisionContainer;
-
-TrigJetHypoToolConfig_leaf::TrigJetHypoToolConfig_leaf(const std::string& type,
-                                                 const std::string& name,
-                                                 const IInterface* parent) :
-  base_class(type, name, parent){
-
-}
-
-
-TrigJetHypoToolConfig_leaf::~TrigJetHypoToolConfig_leaf(){
-}
-
-StatusCode TrigJetHypoToolConfig_leaf::initialize() {
-  CHECK(checkVals());
-  return StatusCode::SUCCESS;
-}
-
-
-std::optional<ConditionsMT>
-TrigJetHypoToolConfig_leaf::getConditions() const {
-
-  ConditionsMT compoundConditions;
-	  
-
-  // collect the Conditions objects from the various sources
-  // return an invalid optional if any src signals a problem
-  
-  // m_condition makers is a list of compound condition makers
-  for(const auto& cm : m_conditionMakers) {
-    compoundConditions.push_back(cm->getCondition());
-  }
-  return std::make_optional<ConditionsMT>(std::move(compoundConditions));
-}
-
-
-std::size_t
-TrigJetHypoToolConfig_leaf::requiresNJets() const {
-  std::size_t result{0};
-  auto opt_conds = getConditions();
-  if(!opt_conds.has_value()){return result;}
-
-  for(const auto& c : *opt_conds){result += c->capacity();}
-
-  return result;
-}
-
- 
-std::unique_ptr<IJetGrouper>
-TrigJetHypoToolConfig_leaf::getJetGrouper() const {
-
-  auto opt_conds = getConditions();
-
-  if(!opt_conds.has_value()){
-    return std::unique_ptr<IJetGrouper>(nullptr);
-  }
-
-  const auto& f_cond =  (*opt_conds).front();
-  auto f_capacity = f_cond->capacity();
-  
-  if(f_capacity == 1){
-    return std::make_unique<SingleJetGrouper>();
-  } else {
-    return std::make_unique<CombinationsGrouper>(f_capacity);
-  }  
-}
-
-std::unique_ptr<IGroupsMatcherMT>
-TrigJetHypoToolConfig_leaf::getMatcher () const {
-
-  auto opt_conds = getConditions();
-
-  if(!opt_conds.has_value()){
-    return std::unique_ptr<IGroupsMatcherMT>(nullptr);
-  }
-
-  return groupsMatcherFactoryMT_MaxBipartite(std::move(*opt_conds));
-}
-
-StatusCode TrigJetHypoToolConfig_leaf::checkVals() const {
-  if (m_conditionMakers.empty()){
-    ATH_MSG_ERROR("No conditions supplied");
-    return StatusCode::FAILURE;
-  }
-  return StatusCode::SUCCESS;
-}
-
-std::vector<std::shared_ptr<ICleaner>> 
-TrigJetHypoToolConfig_leaf::getCleaners() const {
-  std::vector<std::shared_ptr<ICleaner>> v;
-  return v;
-}
-
-
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_leaf.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_leaf.h
deleted file mode 100644
index c4b0aeaa2583be0f9013ef4a063674a3b0bcbf47..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_leaf.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGJETHYPOTOOLConfig_LEAF_H
-#define TRIGJETHYPOTOOLConfig_LEAF_H
-
-/********************************************************************
- *
- * NAME:     TrigJetHypoToolConfig_leaf.h
- * PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
- *
- *
- *********************************************************************/
-
-
-#include "ITrigJetHypoToolConfig.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigCompositeUtils/HLTIdentifier.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-#include "AthenaMonitoringKernel/GenericMonitoringTool.h"
-
-#include "./ConditionsDefsMT.h"
-#include "./ITrigJetConditionConfig.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h"
-
-class TrigJetHypoToolConfig_leaf:
-public extends<AthAlgTool, ITrigJetHypoToolConfig> {
-
- public:
-  
-  TrigJetHypoToolConfig_leaf(const std::string& type,
-                          const std::string& name,
-                          const IInterface* parent);
-  virtual ~TrigJetHypoToolConfig_leaf();
-
-  virtual StatusCode initialize() override;
-  virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override;
-  virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override;
-  virtual std::unique_ptr<IGroupsMatcherMT> getMatcher() const override;
-  virtual std::optional<ConditionsMT> getConditions() const override;
-  virtual std::size_t requiresNJets() const override;
-
- private:
-
-  ToolHandleArray<ITrigJetConditionConfig> m_conditionMakers{
-    this, "conditionMakers", {}, "conditions makers for a leaf node."};
-
-
-
-  virtual StatusCode checkVals()  const override;
- 
-};
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_partgen.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_partgen.cxx
deleted file mode 100644
index bfc836884b9bb6541607f0e52b7562e252dfb54d..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_partgen.cxx
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// ********************************************************************
-//
-// NAME:     TrigJetHypoToolMT_partgen.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-//
-// ********************************************************************
-
-#include "TrigJetHypoToolConfig_partgen.h"
-#include "./conditionsFactoryMT.h"
-
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/PartitionsGrouper.h"
-#include "./PartitionsGroupsToHelpersMatcherMT.h"
-
-TrigJetHypoToolConfig_partgen::TrigJetHypoToolConfig_partgen(const std::string& type,
-                                                 const std::string& name,
-                                                 const IInterface* parent) :
-  base_class(type, name, parent){
-
-}
-
-
-TrigJetHypoToolConfig_partgen::~TrigJetHypoToolConfig_partgen(){
-}
-
-StatusCode TrigJetHypoToolConfig_partgen::initialize() {
-  CHECK(checkVals());
-  return StatusCode::SUCCESS;
-}
-
-
-
-std::optional<ConditionsMT>
-TrigJetHypoToolConfig_partgen::getConditions() const {
-
-  ConditionsMT compoundConditions;
-	  
-
-  // collect the Conditions objects from the various sources
-  // return an invalid optional if any src signals a problem
-  
-  // m_condition makers is a list of compound condition makers
-  for(const auto& cm : m_conditionMakers) {
-    compoundConditions.push_back(cm->getCondition());
-  }
-  
-  return std::make_optional<ConditionsMT>(std::move(compoundConditions));
-}
-
- 
-std::unique_ptr<IJetGrouper>
-TrigJetHypoToolConfig_partgen::getJetGrouper() const {
-
-  std::vector<std::size_t> mults;
-  for(const auto& c : m_children){
-    mults.push_back(c->requiresNJets());
-  }
-    
-  return std::make_unique<PartitionsGrouper>(mults);
-}
-
-StatusCode TrigJetHypoToolConfig_partgen::checkVals() const {
-
-  if(m_children.empty()){return  StatusCode::FAILURE;}
-
-  return StatusCode::SUCCESS;
-}
-
-std::vector<std::shared_ptr<ICleaner>> 
-TrigJetHypoToolConfig_partgen::getCleaners() const {
-  std::vector<std::shared_ptr<ICleaner>> v;
-  return v;
-}
-
-std::size_t
-TrigJetHypoToolConfig_partgen::requiresNJets() const {
-
-  std::size_t result{0};
-  for(const auto& c : m_children){result += c->requiresNJets();}
-  return result;
-}
-
-
-std::unique_ptr<IGroupsMatcherMT>
-TrigJetHypoToolConfig_partgen::getMatcher () const {
-  /* Provides a matcher that matches single HypoJetVectors to
-     multiple ITrigJetHypoToolHelperMT*/
-
-  return std::make_unique<PartitionsGroupsToHelpersMatcherMT>(m_children);
-}
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_partgen.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_partgen.h
deleted file mode 100644
index d814d785adacf868c27913695a190accc8d8d581..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_partgen.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGJETHYPOTOOLConfig_PARTGEN_H
-#define TRIGJETHYPOTOOLConfig_PARTGEN_H
-
-/********************************************************************
- *
- * NAME:     TrigJetHypoToolConfig_partgen.h
- * PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
- *
- *
- *********************************************************************/
-
-
-#include "ITrigJetHypoToolConfig.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigCompositeUtils/HLTIdentifier.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-#include "AthenaMonitoringKernel/GenericMonitoringTool.h"
-#include "TrigHLTJetHypo/ITrigJetHypoToolHelperMT.h"
-
-
-#include "./ConditionsDefsMT.h"
-#include "./ITrigJetConditionConfig.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h"
-
-class TrigJetHypoToolConfig_partgen:
-public extends<AthAlgTool, ITrigJetHypoToolConfig> {
-
- public:
-  
-  TrigJetHypoToolConfig_partgen(const std::string& type,
-                          const std::string& name,
-                          const IInterface* parent);
-  virtual ~TrigJetHypoToolConfig_partgen();
-
-  virtual StatusCode initialize() override;
-  virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override;
-  virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override;
-  virtual std::unique_ptr<IGroupsMatcherMT> getMatcher() const override;
-
-  virtual std::optional<ConditionsMT> getConditions() const override;
-  virtual std::size_t requiresNJets() const override;
-
- private:
-
-   ToolHandleArray<ITrigJetConditionConfig> m_conditionMakers{
-    this, "conditionMakers", {}, "conditions makers for a leaf node."};
-
-  Gaudi::Property<unsigned int>
-    m_size{this, "groupSize", {}, "Jet group size"};
-
-  ToolHandleArray<ITrigJetHypoToolHelperMT> m_children {
-    this, "children", {}, "list of child jet hypo helpers"};
-
-  virtual StatusCode checkVals()  const override;
- 
-};
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple.cxx
deleted file mode 100644
index 071e192a3399b24db68e15b8b7a18f7c28ff263d..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple.cxx
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// ********************************************************************
-//
-// NAME:     TrigJetHypoToolMT_simple.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-//
-// ********************************************************************
-
-#include "TrigJetHypoToolConfig_simple.h"
-
-#include "GaudiKernel/StatusCode.h"
-
-#include "./conditionsFactoryMT.h"
-
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/SingleJetGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/xAODJetAsIJetFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/groupsMatcherFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h"
-#include "./groupsMatcherFactoryMT.h"
-#include "./svec2dvec.h"
-
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-
-using TrigCompositeUtils::DecisionID;
-using TrigCompositeUtils::Decision;
-using TrigCompositeUtils::DecisionContainer;
-
-TrigJetHypoToolConfig_simple::TrigJetHypoToolConfig_simple(const std::string& type,
-                                                 const std::string& name,
-                                                 const IInterface* parent) :
-  base_class(type, name, parent){
-
-}
-
-
-TrigJetHypoToolConfig_simple::~TrigJetHypoToolConfig_simple(){
-}
-
-StatusCode TrigJetHypoToolConfig_simple::initialize() {
-  CHECK(checkVals());
-  return StatusCode::SUCCESS;
-}
-
-
-
-
-std::optional<ConditionsMT>
-TrigJetHypoToolConfig_simple::getConditions() const {
-
-  auto etaMins = svec2dvec(m_etaMins);
-  auto etaMaxs = svec2dvec(m_etaMaxs);
-  auto EtThresholds = svec2dvec(m_EtThresholds);
-  return
-    std::make_optional<ConditionsMT>(conditionsFactoryEtaEtMT(etaMins,
-							      etaMaxs,
-							      EtThresholds,
-							      m_asymmetricEtas));
-}
-
-
-std::size_t
-TrigJetHypoToolConfig_simple::requiresNJets() const {
-  std::size_t result{0};
-  auto opt_conds = getConditions();
-  if(!opt_conds.has_value()){return result;}
-
-  for(const auto& c : *opt_conds){result += c->capacity();}
-
-  return result;
-}
-
- 
-std::unique_ptr<IJetGrouper>
-TrigJetHypoToolConfig_simple::getJetGrouper() const {
-  return std::make_unique<SingleJetGrouper>();
-}
-
-std::unique_ptr<IGroupsMatcherMT>
-TrigJetHypoToolConfig_simple::getMatcher () const {
-
-  auto opt_conds = getConditions();
-
-  if(!opt_conds.has_value()){
-    return std::unique_ptr<IGroupsMatcherMT>(nullptr);
-  }
-  
-  return groupsMatcherFactoryMT_MaxBipartite(std::move(*opt_conds));
-}
-
-StatusCode TrigJetHypoToolConfig_simple::checkVals() const {
-  if (m_EtThresholds.size() != m_etaMins.size() or
-      m_EtThresholds.size() != m_etaMaxs.size() or
-      m_asymmetricEtas.size() != m_etaMaxs.size()){
-    
-    ATH_MSG_ERROR(name()
-                  << ": mismatch between number of thresholds "
-                  << "and eta min, max boundaries or asymmetric eta flags: "
-                  << m_EtThresholds.size() << " "
-                  << m_etaMins.size() << " "
-                  << m_etaMaxs.size() << " "
-                  << m_asymmetricEtas.size() << " "
-                  );
-    
-    return StatusCode::FAILURE;
-  }
-  return StatusCode::SUCCESS;
-}
-
-std::vector<std::shared_ptr<ICleaner>> 
-TrigJetHypoToolConfig_simple::getCleaners() const {
-  std::vector<std::shared_ptr<ICleaner>> v;
-  return v;
-}
-
-
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple.h
deleted file mode 100644
index 4a0fb7389a69987488cfafae9bec8e4babd5460f..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGJETHYPOTOOLConfig_SIMPLE_H
-#define TRIGJETHYPOTOOLConfig_SIMPLE_H
-/********************************************************************
- *
- * NAME:     TrigJetHypoToolConfig_simple.h
- * PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
- *
- *
- *********************************************************************/
-
-
-#include "ITrigJetHypoToolConfig.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigCompositeUtils/HLTIdentifier.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-#include "AthenaMonitoringKernel/GenericMonitoringTool.h"
-
-#include "./ConditionsDefsMT.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h"
-
-class TrigJetHypoToolConfig_simple:
-public extends<AthAlgTool, ITrigJetHypoToolConfig> {
-
- public:
-  
-  TrigJetHypoToolConfig_simple(const std::string& type,
-                          const std::string& name,
-                          const IInterface* parent);
-  virtual ~TrigJetHypoToolConfig_simple();
-
-  virtual StatusCode initialize() override;
-  virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override;
-  virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override;
-  virtual std::unique_ptr<IGroupsMatcherMT> getMatcher() const override;
-  virtual std::optional<ConditionsMT> getConditions() const override;
-  virtual std::size_t requiresNJets() const override;
-
- private:
-  
-  Gaudi::Property<std::vector<std::string>>
-    m_EtThresholds{this, "EtThresholds", {}, "Etthresholds by eta region"};
-  
-  Gaudi::Property<std::vector<std::string>>
-    m_etaMins{this, "eta_mins", {}, "Eta min for eta regions"};
-  
-  Gaudi::Property<std::vector<std::string>>
-    m_etaMaxs{this, "eta_maxs", {}, "Eta max for eta regions"};
-
-  Gaudi::Property<std::vector<int>>
-    m_asymmetricEtas{this, "asymmetricEtas", {}, "Apply asym. eta cuts"};
-
-
-  virtual StatusCode checkVals()  const override;
- 
-};
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple_partition.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple_partition.cxx
deleted file mode 100644
index fd4f18ff22968320c020cad52fc444205667285e..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple_partition.cxx
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-// ********************************************************************
-//
-// NAME:     TrigJetHypoToolMT_simple_partition.cxx
-// PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
-//
-//
-// ********************************************************************
-
-#include "TrigJetHypoToolConfig_simple_partition.h"
-
-#include "GaudiKernel/StatusCode.h"
-
-#include "./conditionsFactoryMT.h"
-
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/PartitionsGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/xAODJetAsIJetFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/groupsMatcherFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerFactory.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/TrigHLTJetHypoHelper2.h"
-#include "./groupsMatcherFactoryMT.h"
-
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-
-using TrigCompositeUtils::DecisionID;
-using TrigCompositeUtils::Decision;
-using TrigCompositeUtils::DecisionContainer;
-
-TrigJetHypoToolConfig_simple_partition::TrigJetHypoToolConfig_simple_partition(const std::string& type,
-                                                 const std::string& name,
-                                                 const IInterface* parent) :
-  base_class(type, name, parent){
-
-}
-
-
-
-StatusCode TrigJetHypoToolConfig_simple_partition::initialize() {
-  CHECK(checkVals());
-  return StatusCode::SUCCESS;
-}
-
-
-std::optional<ConditionsMT>
-TrigJetHypoToolConfig_simple_partition::getConditions() const {
-  
-  return
-    std::make_optional<ConditionsMT>(conditionsFactoryEtaEtMT(m_etaMins,
-							      m_etaMaxs,
-							      m_EtThresholds,
-							      m_asymmetricEtas));
-}
-
-std::size_t
-TrigJetHypoToolConfig_simple_partition::requiresNJets() const {
-  std::size_t result{0};
-  auto opt_conds = getConditions();
-  if(!opt_conds.has_value()){return result;}
-
-  for(const auto& c : *opt_conds){result += c->capacity();}
-
-  return result;
-}
- 
-std::unique_ptr<IJetGrouper>
-TrigJetHypoToolConfig_simple_partition::getJetGrouper() const {
-
-  // set up theP PartitionsGrouper according to the number of jets
-  // required by each condition
-  auto opt_conds = getConditions();
-  if(!opt_conds.has_value()){
-    ATH_MSG_ERROR("Error obtaining Conditions");
-    return std::unique_ptr<IJetGrouper>(nullptr);
-  }
-
-  std::vector<size_t> mults;
-  for(const auto& c : *opt_conds){mults.push_back(c->capacity());}
-   
-  return std::make_unique<PartitionsGrouper>(mults);
-}
-
-
-std::unique_ptr<IGroupsMatcherMT>
-TrigJetHypoToolConfig_simple_partition::getMatcher() const {
-  
-  auto opt_conds = getConditions();
-
-  if(!opt_conds.has_value()){
-    return std::unique_ptr<IGroupsMatcherMT>(nullptr);
-  }
-  
-  return groupsMatcherFactoryMT_Partitions(std::move(*opt_conds));
-}
-
-
-StatusCode TrigJetHypoToolConfig_simple_partition::checkVals() const {
-  if (m_EtThresholds.size() != m_etaMins.size() or
-      m_EtThresholds.size() != m_etaMaxs.size() or
-      m_asymmetricEtas.size() != m_etaMaxs.size()){
-    
-    ATH_MSG_ERROR(name()
-                  << ": mismatch between number of thresholds "
-                  << "and eta min, max boundaries or asymmetric eta flags: "
-                  << m_EtThresholds.size() << " "
-                  << m_etaMins.size() << " "
-                  << m_etaMaxs.size() << " "
-                  << m_asymmetricEtas.size() << " "
-                  );
-    
-    return StatusCode::FAILURE;
-  }
-
-  if (m_EtThresholds.empty()){
-    ATH_MSG_ERROR(name() + " No conditions");
-    return StatusCode::FAILURE;
-  }
-    
-  return StatusCode::SUCCESS;
-}
-
-std::vector<std::shared_ptr<ICleaner>> 
-TrigJetHypoToolConfig_simple_partition::getCleaners() const {
-  std::vector<std::shared_ptr<ICleaner>> v;
-  return v;
-}
-
-
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple_partition.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple_partition.h
deleted file mode 100644
index 8b479f10322ef9450aec35727712446aa3099c89..0000000000000000000000000000000000000000
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_simple_partition.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef TRIGJETHYPOTOOLConfig_SIMPLE_PARTITION_H
-#define TRIGJETHYPOTOOLConfig_SIMPLE_PARTITION_H
-/********************************************************************
- *
- * NAME:     TrigJetHypoToolConfig_simple_partition.h
- * PACKAGE:  Trigger/TrigHypothesis/TrigHLTJetHypo
- *
- *
- *********************************************************************/
-
-
-#include "ITrigJetHypoToolConfig.h"
-#include "./ConditionsDefsMT.h"
-#include "TrigCompositeUtils/HLTIdentifier.h"
-#include "AthenaBaseComps/AthAlgTool.h"
-#include "TrigCompositeUtils/TrigCompositeUtils.h"
-#include "AthenaMonitoringKernel/GenericMonitoringTool.h"
-
-#include "./ConditionsDefsMT.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ICleaner.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/IJetGrouper.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/CleanerBridge.h"
-#include "TrigHLTJetHypo/TrigHLTJetHypoUtils/ConditionsDefs.h"
-
-class TrigJetHypoToolConfig_simple_partition:
-public extends<AthAlgTool, ITrigJetHypoToolConfig> {
-
- public:
-  
-  TrigJetHypoToolConfig_simple_partition(const std::string& type,
-                          const std::string& name,
-                          const IInterface* parent);
-
-  virtual StatusCode initialize() override;
-  virtual std::vector<std::shared_ptr<ICleaner>> getCleaners() const override;
-  virtual std::unique_ptr<IJetGrouper> getJetGrouper() const override;
-  virtual std::unique_ptr<IGroupsMatcherMT> getMatcher() const override;
-  virtual std::optional<ConditionsMT> getConditions() const override;
-  virtual std::size_t requiresNJets() const override;
-
- private:
-  
-  Gaudi::Property<std::vector<double>>
-    m_EtThresholds{this, "EtThresholds", {}, "Etthresholds by eta region"};
-  
-  Gaudi::Property<std::vector<double>>
-    m_etaMins{this, "eta_mins", {}, "Eta min for eta regions"};
-  
-  Gaudi::Property<std::vector<double>>
-    m_etaMaxs{this, "eta_maxs", {}, "Eta max for eta regions"};
-
-  Gaudi::Property<std::vector<int>>
-    m_asymmetricEtas{this, "asymmetricEtas", {}, "Apply asym. eta cuts"};
-
-
-  virtual StatusCode checkVals()  const override;
- 
-};
-#endif
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx
index 2c1486abdb3b940ae74a6697996e0750e1d3ab90..2ef7d1045234acf52559225a1bf2dc2a29c6fe95 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/components/TrigHLTJetHypo_entries.cxx
@@ -13,13 +13,7 @@
 #include "TrigHLTJetHypo/TrigHLTJetHypo_TLA.h"
 #include "TrigHLTJetHypo/TrigHLTJetHypo_SMC.h"
 #include "../TrigJetHypoAlgMT.h"
-#include "../TrigJetHypoToolConfig_simple.h"
-#include "../TrigJetHypoToolConfig_simple_partition.h"
-#include "../TrigJetHypoToolConfig_dijet.h"
-#include "../TrigJetHypoToolConfig_combgen.h"
-#include "../TrigJetHypoToolConfig_partgen.h"
 #include "../TrigJetHypoToolConfig_fastreduction.h"
-#include "../TrigJetHypoToolConfig_leaf.h"
 #include "../TrigJetHypoToolConfig_ht.h"
 //
 #include "../TrigJetConditionConfig_abs_eta.h"
@@ -58,13 +52,7 @@ DECLARE_COMPONENT(TrigEFDPhiMetJetAllTE)
 DECLARE_COMPONENT(TrigHLTJetHypo_Dijet)
 DECLARE_COMPONENT(TrigHLTJetHypo_DijetMassDEta)
 DECLARE_COMPONENT(TrigHLTJetHypo_DijetMassDEtaDPhi)
-DECLARE_COMPONENT(TrigJetHypoToolConfig_simple)
-DECLARE_COMPONENT(TrigJetHypoToolConfig_simple_partition)
-DECLARE_COMPONENT(TrigJetHypoToolConfig_dijet)
-DECLARE_COMPONENT(TrigJetHypoToolConfig_combgen)
-DECLARE_COMPONENT(TrigJetHypoToolConfig_partgen)
 DECLARE_COMPONENT(TrigJetHypoToolConfig_fastreduction)
-DECLARE_COMPONENT(TrigJetHypoToolConfig_leaf)
 DECLARE_COMPONENT(TrigJetHypoToolConfig_ht)
 DECLARE_COMPONENT(TrigHLTJetHypo_SMC)
 DECLARE_COMPONENT(TrigHLTJetHypo_HT)
diff --git a/Trigger/TrigHypothesis/TrigTauHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigTauHypo/CMakeLists.txt
index 1f70c5acf6882e11d272a4c471eaa41dbf398038..670ac60d751a6d8f2fd6ba5145d59834df4eca31 100644
--- a/Trigger/TrigHypothesis/TrigTauHypo/CMakeLists.txt
+++ b/Trigger/TrigHypothesis/TrigTauHypo/CMakeLists.txt
@@ -10,7 +10,7 @@ find_package( ROOT COMPONENTS Core MathCore Hist )
 atlas_add_component( TrigTauHypo
                      src/*.cxx src/components/*.cxx
                      INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthViews AthenaBaseComps AthenaMonitoringKernelLib CaloEvent CxxUtils DecisionHandlingLib EventInfo GaudiKernel ITrackToVertex MuidEvent Particle PathResolver StoreGateLib TrigCaloEvent TrigCompositeUtilsLib TrigInDetEvent TrigInterfacesLib TrigMuonEvent TrigNavStructure TrigParticle TrigSteeringEvent TrigTopoEvent TrkTrack TrkTrackSummary VxVertex egammaEvent tauEvent xAODBase xAODCaloEvent xAODEgamma xAODJet xAODMuon xAODTau xAODTracking xAODTrigger )
+                     LINK_LIBRARIES ${ROOT_LIBRARIES} AthContainers AthViews AthenaBaseComps AthenaMonitoringKernelLib CaloEvent CxxUtils DecisionHandlingLib EventInfo GaudiKernel ITrackToVertex MuidEvent Particle PathResolver StoreGateLib TrigCaloEvent TrigCompositeUtilsLib TrigInDetEvent TrigInterfacesLib TrigMuonEvent TrigNavStructure TrigParticle TrigSteeringEvent TrigTopoEvent TrkTrack TrkTrackSummary VxVertex egammaEvent tauEvent xAODBase xAODCaloEvent xAODEgamma xAODJet xAODMuon xAODTau xAODTracking xAODTrigger MVAUtils tauRecToolsLib)
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} --extend-extensions=ATL900,ATL901 )
diff --git a/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.cxx b/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.cxx
index 47abcaaaef0c1116a7e7f1144f48082764f664af..8881a4e261c6f8b00ea0c1aa1c33a674910928d2 100644
--- a/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.cxx
+++ b/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.cxx
@@ -19,6 +19,8 @@
 #include "TrkTrackSummary/TrackSummary.h"
 #include "xAODTrigger/TrigPassBits.h"
 
+#include "PathResolver/PathResolver.h"
+#include "tauRecTools/HelperFunctions.h"
 
 TrigTauTrackRoiUpdaterMT::TrigTauTrackRoiUpdaterMT(const std::string & name, ISvcLocator* pSvcLocator) :
   AthReentrantAlgorithm(name, pSvcLocator)
@@ -41,13 +43,22 @@ StatusCode TrigTauTrackRoiUpdaterMT::initialize()
   ATH_MSG_DEBUG( " nSiHoles            		" 	<< m_nSiHoles );
   ATH_MSG_DEBUG( " UpdateEta            		" 	<< m_updateEta );
   ATH_MSG_DEBUG( " UpdatePhi            		" 	<< m_updatePhi );
+  ATH_MSG_DEBUG(  " useBDT               		" 	<< m_useBDT );
 
+  if(m_useBDT) {
+    ATH_MSG_DEBUG( " BDTweights     	        	" << m_BDTweights );
+
+    std::string inputWeightsPath = PathResolverFindCalibFile(m_BDTweights);
+    ATH_MSG_INFO(" InputWeightsPath: " << inputWeightsPath);
+    m_reader = std::make_unique<tauRecTools::BDTHelper>();
+    ATH_CHECK(m_reader->initialize(inputWeightsPath));
+  }
 
   ATH_MSG_DEBUG( "Initialising HandleKeys" );
   CHECK( m_roIInputKey.initialize()        );
-  CHECK( m_tracksKey.initialize() );
-  CHECK( m_roIOutputKey.initialize()  );
-
+  CHECK( m_tracksKey.initialize()          );
+  CHECK( m_roIOutputKey.initialize()       );
+  CHECK( m_tauJetKey.initialize(!m_tauJetKey.key().empty()));
   return StatusCode::SUCCESS;
 
 }
@@ -100,38 +111,67 @@ StatusCode TrigTauTrackRoiUpdaterMT::execute(const EventContext& ctx) const
   double trkPtMax = 0;
   
   if(foundTracks!=0){
-    
+
+    //Find the track with the highest BDT score
+    if(m_useBDT) {
+      
+      // retrieve TauJet from TrigTauRecCaloOnlyMVASequence
+      SG::ReadHandle< xAOD::TauJetContainer > tauJetHandle = SG::makeHandle( m_tauJetKey,ctx );
+      const xAOD::TauJetContainer *foundTaus = tauJetHandle.get();
+
+      if (foundTaus->size()==0) {
+	      ATH_MSG_ERROR( "No TauJetContainer feature was found." );
+      }
+
+      const Trk::Track *leadTrackBDT = nullptr;
+      for(const Trk::Track* trk_it : *foundTracks)
+        if(trk_it->perigeeParameters()->pT() > trkPtMax) {
+          trkPtMax = trk_it->perigeeParameters()->pT();
+          leadTrackBDT = trk_it;
+        }
+      double trkBDTMax = 0.;
+
+      for(const Trk::Track* trk_it : *foundTracks) {
+        double BDTscore = getBDTscore( foundTaus->at(0), trk_it, leadTrackBDT );
+
+        if(BDTscore > trkBDTMax) {
+          trkBDTMax = BDTscore;
+          leadTrack = trk_it;
+        }
+      }
+    }
     // Find leading track
-    for (const Trk::Track* track : *foundTracks){
-      trackPer = track->perigeeParameters();
-      summary = track->trackSummary();
-      if(summary==nullptr) ATH_MSG_ERROR(" track summary not available in RoI updater " << trkPtMax << " " << name() );
-      if(trackPer && summary){
- 	     float trackPt = trackPer->pT();
-	     if ( trackPt > trkPtMax ) {
-	       int nPix  = summary->get(Trk::numberOfPixelHits);
-	       if(nPix<0) nPix=0;
-	       if(nPix < m_nHitPix) {
-            if(msgLvl(MSG::DEBUG))  msg() << MSG::DEBUG <<" Track rejected because of nHitPix " << nPix << " < " << m_nHitPix
-            << " " << name() << ": in execute()" << endmsg;
-	         continue;
-	       }
-	       int nPixHole = summary->get(Trk::numberOfPixelHoles);
-	       if (nPixHole < 0) nPixHole = 0;
-	       int nSCTHole = summary->get(Trk::numberOfSCTHoles);
-	       if (nSCTHole < 0) nSCTHole = 0;
-	       if((nPixHole + nSCTHole) > m_nSiHoles) {
-            if(msgLvl(MSG::DEBUG) )  msg() << MSG::DEBUG <<" Track rejected because of nSiHoles " << nPixHole+nSCTHole << " > " << m_nSiHoles 
-            << " " << name() << ": in execute()" << endmsg;
-	         continue;
-	       }
-	       leadTrack = track;
-	       trkPtMax = trackPt;
-	     }
+    else{
+      for (const Trk::Track* track : *foundTracks){
+        trackPer = track->perigeeParameters();
+        summary = track->trackSummary();
+        if(summary==nullptr) ATH_MSG_ERROR(" track summary not available in RoI updater " << trkPtMax << " " << name() );
+        if(trackPer && summary){
+        float trackPt = trackPer->pT();
+        if ( trackPt > trkPtMax ) {
+          int nPix  = summary->get(Trk::numberOfPixelHits);
+          if(nPix<0) nPix=0;
+          if(nPix < m_nHitPix) {
+              if(msgLvl(MSG::DEBUG))  msg() << MSG::DEBUG <<" Track rejected because of nHitPix " << nPix << " < " << m_nHitPix
+              << " " << name() << ": in execute()" << endmsg;
+            continue;
+          }
+          int nPixHole = summary->get(Trk::numberOfPixelHoles);
+          if (nPixHole < 0) nPixHole = 0;
+          int nSCTHole = summary->get(Trk::numberOfSCTHoles);
+          if (nSCTHole < 0) nSCTHole = 0;
+          if((nPixHole + nSCTHole) > m_nSiHoles) {
+              if(msgLvl(MSG::DEBUG) )  msg() << MSG::DEBUG <<" Track rejected because of nSiHoles " << nPixHole+nSCTHole << " > " << m_nSiHoles 
+              << " " << name() << ": in execute()" << endmsg;
+            continue;
+          }
+          leadTrack = track;
+          trkPtMax = trackPt;
+        }
+        }
       }
     }
-
-
+    
     if(leadTrack) {
       ATH_MSG_DEBUG(" leading track pT " << trkPtMax );
       leadTrkZ0  = leadTrack->perigeeParameters()->parameters()[Trk::z0];
@@ -191,3 +231,67 @@ StatusCode TrigTauTrackRoiUpdaterMT::execute(const EventContext& ctx) const
   return StatusCode::SUCCESS;
 
 }
+
+double TrigTauTrackRoiUpdaterMT::getBDTscore(const xAOD::TauJet* tau, const Trk::Track* track, const Trk::Track* leadtrack ) const
+{
+
+  std::map<TString, float*> BDTvars;
+  BDTInputVariables vars;
+    
+  BDTvars = {
+    {"log(Coretrack_pt)", &vars.logtrk_pt}, 
+    {"fabs(Coretrack_z0)", &vars.abstrck_z0},
+    {"fabs(Coretrack_d0)", &vars.abstrk_d0},
+    {"Coretrack_nPiHits", &vars.trk_nPiHits},
+    {"Coretrack_nSiHoles", &vars.trk_nSiHoles},
+    {"log(Coretrack_ratioptCalo)", &vars.logtrk_ratiopt},
+    {"Coretrack_dR", &vars.trk_dR},
+    {"Coretrack_dRleadtrk", &vars.trk_dRtoleadtrk},
+    {"Coretrack_CaloHadpt", &vars.CaloHad_pt},
+    {"Coretrack_CaloEMpt", &vars.CaloEM_pt}
+  };
+
+  const Trk::Perigee* trkPerigee = track->perigeeParameters();
+  const Trk::TrackSummary* trkSummary = track->trackSummary();
+
+  int nPixHit = trkSummary->get(Trk::numberOfPixelHits);
+  int nPixDead = trkSummary->get(Trk::numberOfPixelDeadSensors);
+
+  int nPixHole = trkSummary->get(Trk::numberOfPixelHoles);
+  int nSCTHole = trkSummary->get(Trk::numberOfSCTHoles);
+
+  float ratio_pt = tau->ptTrigCaloOnly() ? trkPerigee->pT()/tau->ptTrigCaloOnly() : 0.;
+
+  float dEta = tau->eta() - trkPerigee->eta();
+  float dPhi = CxxUtils::wrapToPi(tau->phi() - trkPerigee->parameters()[Trk::phi0]);
+  float dR = sqrt(dEta*dEta + dPhi*dPhi);
+
+  const Trk::Perigee* leadtrkPerigee = leadtrack->perigeeParameters();
+  float dEta_leadtrk = trkPerigee->eta() - leadtrkPerigee->eta();
+  float dPhi_leadtrk = CxxUtils::wrapToPi(trkPerigee->parameters()[Trk::phi0] - leadtrkPerigee->parameters()[Trk::phi0]);
+  float dR_leadtrk = sqrt(dEta_leadtrk*dEta_leadtrk + dPhi_leadtrk*dPhi_leadtrk);
+
+  float tau_emscale_ptEM = 0;
+  float tau_emscale_ptHad = 0;
+  if ( !tau->detail( xAOD::TauJetParameters::etEMAtEMScale, tau_emscale_ptEM ) ) {
+    ATH_MSG_WARNING("Retrieval of tau etEMAtEMScale detail failed.");
+  }
+  if ( !tau->detail( xAOD::TauJetParameters::etHadAtEMScale, tau_emscale_ptHad ) ) {
+    ATH_MSG_WARNING("Retrieval of tau etHadAtEMScale detail failed.");
+  }
+
+  vars.logtrk_pt = log( trkPerigee->pT() );
+  vars.abstrck_z0 = std::abs( trkPerigee->parameters()[Trk::z0] );
+  vars.abstrk_d0 = std::abs( trkPerigee->parameters()[Trk::d0] );
+  vars.trk_nPiHits = nPixHit + nPixDead;
+  vars.trk_nSiHoles = nPixHole + nSCTHole;
+  vars.logtrk_ratiopt = log( ratio_pt );
+  vars.trk_dR = dR;
+  vars.trk_dRtoleadtrk = dR_leadtrk;
+  vars.CaloHad_pt = tau_emscale_ptHad;
+  vars.CaloEM_pt = tau_emscale_ptEM;
+
+  double BDTval = m_reader->getResponse(BDTvars);
+
+  return BDTval;
+}
diff --git a/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.h b/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.h
index 548677aa721df2e1232a8fb11ba4962d97ed46e9..90ba646fdce9cd00b52ea7c707af99fc4d6b75d1 100644
--- a/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.h
+++ b/Trigger/TrigHypothesis/TrigTauHypo/src/TrigTauTrackRoiUpdaterMT.h
@@ -14,6 +14,10 @@
 
 #include "TrigSteeringEvent/TrigRoiDescriptor.h"
 
+#include "MVAUtils/BDT.h"
+#include "xAODTau/TauJetContainer.h"
+#include "tauRecTools/BDTHelper.h"
+
 class TrigTauTrackRoiUpdaterMT : public AthReentrantAlgorithm {
 
  public:
@@ -30,10 +34,33 @@ class TrigTauTrackRoiUpdaterMT : public AthReentrantAlgorithm {
   Gaudi::Property< int > m_nSiHoles {this,"nSiHoles",2,"maximum number of Si holes on lead track"};
   Gaudi::Property< bool > m_updateEta {this,"updateEta",true,"flag to determine whether Roi eta should be updated using the track direction (true by default)"};
   Gaudi::Property< bool > m_updatePhi {this,"updatePhi",false,"flag to determine whether Roi phi should be updated using the track direction (false by default)"};
+  Gaudi::Property< bool > m_useBDT {this,"useBDT",false,"flag to determine whether the 1st stage of the FTF chooses the track with the highest BDT score"};
+  Gaudi::Property< std::string > m_BDTweights {this,"BDTweights","TrigTauRec/00-11-02/FTF_tauCore_BDT_v0.root","String with the path to the BDT file"};
+
+  //std::unique_ptr<MVAUtils::BDT> m_reader; //!
+  std::unique_ptr<tauRecTools::BDTHelper> m_reader;
+
+  struct BDTInputVariables
+  {
+    float logtrk_pt{0.0}; //!
+    float abstrck_z0{0.0}; //!
+    float abstrk_d0{0.0}; //!
+    float trk_nPiHits{0.0}; //!
+    float trk_nSiHoles{0.0}; //!
+    float logtrk_ratiopt{0.0}; //!
+    float trk_dR{0.0}; //!
+    float trk_dRtoleadtrk{0.0}; //!
+    float CaloHad_pt{0.0}; //!
+    float CaloEM_pt{0.0}; //!
+
+  };
 
   SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roIInputKey {this,"RoIInputKey","InputRoI","Input RoI key name"};
   SG::ReadHandleKey< TrackCollection > m_tracksKey { this, "fastTracksKey", "fasttracks", "fast tracks in view" };
   SG::WriteHandleKey< TrigRoiDescriptorCollection > m_roIOutputKey {this,"RoIOutputKey","InViewRoI","Output RoI Collection Key"};
 
+  SG::ReadHandleKey< xAOD::TauJetContainer> m_tauJetKey      { this, "Key_trigTauJetInputContainer", "HLT_taujet", "input taujet container" };
+  double getBDTscore(const xAOD::TauJet* tau, const Trk::Track* track, const Trk::Track* leadtrack ) const;
+
 };
 #endif
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py
index ef1f9a654fdd0a720157098f94076d28bf1d6910..cebb1da4659de60905707e4e95e8cd22dee4a5ab 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py
@@ -481,6 +481,16 @@ class _Settings_tauIso( _GlobalSettings ):
       self._configPT = _PrecisionTracking( signatureType = 'tauIso', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently...
       self._doRecord = True #Allow recording of track collections
 
+#This might be redundant but lets keep them for the time being...
+class _Settings_tauIsoBDT( _GlobalSettings ): 
+   def __init__( self ): 
+      _GlobalSettings.__init__(self)
+      self._name     = "tauIsoBDT" #To be appended to alg names
+      self._roi      = "HLT_Roi_TauIsoBDT" #FIXME: possibly different!  
+      self._configFT = _FastTracking(      signatureType = 'tauIso', nameSuffix = 'TauIso' ) #
+      self._configPT = _PrecisionTracking( signatureType = 'tauIso',    nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently...
+      self._doRecord = False #FIXME: Do I need to record these?
+
 class _Settings_bjet( _GlobalSettings ): 
    def __init__( self ): 
       _GlobalSettings.__init__(self)
@@ -548,6 +558,7 @@ _ConfigSettings = {
     "tauTau"      : _Settings_tauTau(),
     "tauCore"     : _Settings_tauCore(),
     "tauIso"      : _Settings_tauIso(),
+    "tauIsoBDT"   : _Settings_tauIsoBDT(),
 
     "bjet"        : _Settings_bjet(),
     "jet"         : _Settings_jet(),
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index f1300dfd45bf850ba32dc91932d6fc0878d29d01..1e095131beaefed0fda49496984811d501b1f70a 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -696,6 +696,20 @@ HLT_e26_lhtight_L1EM22VHI:
     2: 6
     3: 4
     4: 4
+HLT_e26_lhtight_gsf_L1EM22VHI:
+  eventCount: 4
+  stepCounts:
+    0: 5
+    1: 4
+    2: 4
+    3: 4
+    4: 4
+  stepFeatures:
+    0: 5
+    1: 6
+    2: 6
+    3: 4
+    4: 4
 HLT_e26_lhtight_ivarloose_L1EM22VHI:
   eventCount: 3
   stepCounts:
@@ -1904,7 +1918,7 @@ HLT_mu22_2mu4noL1_L1MU20:
     3: 6
     4: 2
     5: 2
-HLT_mu22_mu8noL1_L1MU20:
+HLT_mu22_mu10noL1_L1MU20:
   eventCount: 2
   stepCounts:
     0: 8
@@ -1920,22 +1934,22 @@ HLT_mu22_mu8noL1_L1MU20:
     3: 6
     4: 3
     5: 3
-HLT_mu24_2mu4noL1_L1MU20:
-  eventCount: 1
+HLT_mu22_mu8noL1_L1MU20:
+  eventCount: 2
   stepCounts:
     0: 8
     1: 6
     2: 5
     3: 5
-    4: 1
-    5: 1
+    4: 2
+    5: 2
   stepFeatures:
     0: 10
     1: 7
     2: 6
     3: 6
-    4: 2
-    5: 2
+    4: 3
+    5: 3
 HLT_mu24_L1MU20:
   eventCount: 5
   stepCounts:
@@ -1990,64 +2004,48 @@ HLT_mu24_mu10noL1_L1MU20:
     3: 6
     4: 3
     5: 3
-HLT_mu26_L1MU20:
-  eventCount: 4
+HLT_mu24_mu8noL1_L1MU20:
+  eventCount: 2
   stepCounts:
     0: 8
     1: 6
     2: 5
-    3: 4
-  stepFeatures:
-    0: 10
-    1: 7
-    2: 6
     3: 5
-HLT_mu26_ivarmedium_L1MU20:
-  eventCount: 3
-  stepCounts:
-    0: 8
-    1: 6
-    2: 5
-    3: 4
-    4: 3
+    4: 2
+    5: 2
   stepFeatures:
     0: 10
     1: 7
     2: 6
-    3: 5
+    3: 6
     4: 3
-HLT_mu26_mu10noL1_L1MU20:
-  eventCount: 1
+    5: 3
+HLT_mu26_L1MU20:
+  eventCount: 4
   stepCounts:
     0: 8
     1: 6
     2: 5
     3: 4
-    4: 1
-    5: 1
   stepFeatures:
     0: 10
     1: 7
     2: 6
     3: 5
-    4: 2
-    5: 2
-HLT_mu26_mu8noL1_L1MU20:
-  eventCount: 1
+HLT_mu26_ivarmedium_L1MU20:
+  eventCount: 3
   stepCounts:
     0: 8
     1: 6
     2: 5
     3: 4
-    4: 1
-    5: 1
+    4: 3
   stepFeatures:
     0: 10
     1: 7
     2: 6
     3: 5
-    4: 2
-    5: 2
+    4: 3
 HLT_mu28_ivarmedium_L1MU20:
   eventCount: 3
   stepCounts:
@@ -2062,36 +2060,6 @@ HLT_mu28_ivarmedium_L1MU20:
     2: 6
     3: 4
     4: 3
-HLT_mu28_mu8noL1_L1MU20:
-  eventCount: 1
-  stepCounts:
-    0: 8
-    1: 6
-    2: 5
-    3: 4
-    4: 1
-    5: 1
-  stepFeatures:
-    0: 10
-    1: 7
-    2: 6
-    3: 4
-    4: 1
-    5: 1
-HLT_mu35_ivarmedium_L1MU20:
-  eventCount: 2
-  stepCounts:
-    0: 8
-    1: 6
-    2: 4
-    3: 3
-    4: 2
-  stepFeatures:
-    0: 10
-    1: 7
-    2: 5
-    3: 3
-    4: 2
 HLT_mu4_l2io_L1MU4:
   eventCount: 11
   stepCounts:
@@ -2248,16 +2216,6 @@ HLT_mu6_xe30_mht_L1XE10:
     2: 12
     3: 12
     4: 11
-HLT_mu80_L1MU20:
-  eventCount: 0
-  stepCounts:
-    0: 8
-    1: 6
-    2: 1
-  stepFeatures:
-    0: 10
-    1: 7
-    2: 1
 HLT_mu80_msonly_3layersEC_L1MU20:
   eventCount: 1
   stepCounts:
@@ -2478,6 +2436,20 @@ HLT_tau25_idperf_track_L1TAU12IM:
     2: 15
     3: 15
     4: 15
+HLT_tau25_idperf_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 12
+  stepCounts:
+    0: 14
+    1: 12
+    2: 12
+    3: 12
+    4: 12
+  stepFeatures:
+    0: 24
+    1: 16
+    2: 15
+    3: 15
+    4: 15
 HLT_tau25_idperf_tracktwoMVA_L1TAU12IM:
   eventCount: 12
   stepCounts:
@@ -2508,6 +2480,34 @@ HLT_tau25_idperf_tracktwo_L1TAU12IM:
     3: 14
     4: 14
     5: 14
+HLT_tau25_looseRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 9
+  stepCounts:
+    0: 12
+    1: 10
+    2: 10
+    3: 10
+    4: 9
+  stepFeatures:
+    0: 22
+    1: 14
+    2: 13
+    3: 13
+    4: 12
+HLT_tau25_looseRNN_tracktwoMVA_L1TAU12IM:
+  eventCount: 8
+  stepCounts:
+    0: 12
+    1: 11
+    2: 10
+    3: 9
+    4: 8
+  stepFeatures:
+    0: 22
+    1: 15
+    2: 13
+    3: 12
+    4: 9
 HLT_tau25_looseRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 9
   stepCounts:
@@ -2544,6 +2544,18 @@ HLT_tau25_medium1_tracktwoEF_L1TAU12IM:
     1: 14
     2: 12
     3: 12
+HLT_tau25_medium1_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 0
+  stepCounts:
+    0: 12
+    1: 10
+    2: 10
+    3: 10
+  stepFeatures:
+    0: 22
+    1: 14
+    2: 13
+    3: 13
 HLT_tau25_medium1_tracktwoMVA_L1TAU12IM:
   eventCount: 0
   stepCounts:
@@ -2566,6 +2578,34 @@ HLT_tau25_medium1_tracktwo_L1TAU12IM:
     0: 22
     1: 14
     2: 12
+HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 8
+  stepCounts:
+    0: 12
+    1: 10
+    2: 10
+    3: 10
+    4: 8
+  stepFeatures:
+    0: 22
+    1: 14
+    2: 13
+    3: 13
+    4: 9
+HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM:
+  eventCount: 5
+  stepCounts:
+    0: 12
+    1: 11
+    2: 10
+    3: 9
+    4: 5
+  stepFeatures:
+    0: 22
+    1: 15
+    2: 13
+    3: 12
+    4: 5
 HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 8
   stepCounts:
@@ -2590,6 +2630,20 @@ HLT_tau25_mediumRNN_tracktwo_L1TAU12IM:
     0: 22
     1: 14
     2: 12
+HLT_tau25_perf_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 12
+  stepCounts:
+    0: 14
+    1: 12
+    2: 12
+    3: 12
+    4: 12
+  stepFeatures:
+    0: 24
+    1: 16
+    2: 15
+    3: 15
+    4: 15
 HLT_tau25_perf_tracktwoMVA_L1TAU12IM:
   eventCount: 12
   stepCounts:
@@ -2620,6 +2674,34 @@ HLT_tau25_perf_tracktwo_L1TAU12IM:
     3: 14
     4: 14
     5: 14
+HLT_tau25_tightRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 7
+  stepCounts:
+    0: 12
+    1: 10
+    2: 10
+    3: 10
+    4: 7
+  stepFeatures:
+    0: 22
+    1: 14
+    2: 13
+    3: 13
+    4: 7
+HLT_tau25_tightRNN_tracktwoMVA_L1TAU12IM:
+  eventCount: 4
+  stepCounts:
+    0: 12
+    1: 11
+    2: 10
+    3: 9
+    4: 4
+  stepFeatures:
+    0: 22
+    1: 15
+    2: 13
+    3: 12
+    4: 4
 HLT_tau25_tightRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 7
   stepCounts:
@@ -2644,6 +2726,20 @@ HLT_tau25_tightRNN_tracktwo_L1TAU12IM:
     0: 22
     1: 14
     2: 12
+HLT_tau25_verylooseRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 9
+  stepCounts:
+    0: 12
+    1: 10
+    2: 10
+    3: 10
+    4: 9
+  stepFeatures:
+    0: 22
+    1: 14
+    2: 13
+    3: 13
+    4: 12
 HLT_tau25_verylooseRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 9
   stepCounts:
diff --git a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref
index b8dc081700dda15d92475d3d3b743d496b775f7d..284043489a41b0151532b3ef18af89b8dc7dff42 100644
--- a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref
@@ -330,6 +330,8 @@ HLT_e26_lhtight_L1EM15VH:
   eventCount: 0
 HLT_e26_lhtight_L1EM22VHI:
   eventCount: 0
+HLT_e26_lhtight_gsf_L1EM22VHI:
+  eventCount: 0
 HLT_e26_lhtight_ivarloose_L1EM22VHI:
   eventCount: 0
 HLT_e26_lhtight_ivarmedium_L1EM22VHI:
@@ -1002,7 +1004,7 @@ HLT_mu22_2mu4noL1_L1MU20:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu22_mu8noL1_L1MU20:
+HLT_mu22_mu10noL1_L1MU20:
   eventCount: 0
   stepCounts:
     0: 1
@@ -1010,7 +1012,7 @@ HLT_mu22_mu8noL1_L1MU20:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu24_2mu4noL1_L1MU20:
+HLT_mu22_mu8noL1_L1MU20:
   eventCount: 0
   stepCounts:
     0: 1
@@ -1050,15 +1052,7 @@ HLT_mu24_mu10noL1_L1MU20:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu26_L1MU20:
-  eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
-  stepFeatures:
-    0: 1
-    1: 1
-HLT_mu26_ivarmedium_L1MU20:
+HLT_mu24_mu8noL1_L1MU20:
   eventCount: 0
   stepCounts:
     0: 1
@@ -1066,7 +1060,7 @@ HLT_mu26_ivarmedium_L1MU20:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu26_mu10noL1_L1MU20:
+HLT_mu26_L1MU20:
   eventCount: 0
   stepCounts:
     0: 1
@@ -1074,7 +1068,7 @@ HLT_mu26_mu10noL1_L1MU20:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu26_mu8noL1_L1MU20:
+HLT_mu26_ivarmedium_L1MU20:
   eventCount: 0
   stepCounts:
     0: 1
@@ -1090,22 +1084,6 @@ HLT_mu28_ivarmedium_L1MU20:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu28_mu8noL1_L1MU20:
-  eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
-  stepFeatures:
-    0: 1
-    1: 1
-HLT_mu35_ivarmedium_L1MU20:
-  eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
-  stepFeatures:
-    0: 1
-    1: 1
 HLT_mu4_l2io_L1MU4:
   eventCount: 0
   stepCounts:
@@ -1192,14 +1170,6 @@ HLT_mu6_xe30_mht_L1XE10:
   stepFeatures:
     0: 1
     1: 1
-HLT_mu80_L1MU20:
-  eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
-  stepFeatures:
-    0: 1
-    1: 1
 HLT_mu80_msonly_3layersEC_L1MU20:
   eventCount: 0
   stepCounts:
@@ -1408,6 +1378,20 @@ HLT_tau25_idperf_track_L1TAU12IM:
     2: 3
     3: 3
     4: 3
+HLT_tau25_idperf_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 3
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+    4: 3
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
+    4: 3
 HLT_tau25_idperf_tracktwoMVA_L1TAU12IM:
   eventCount: 3
   stepCounts:
@@ -1438,6 +1422,20 @@ HLT_tau25_idperf_tracktwo_L1TAU12IM:
     3: 3
     4: 3
     5: 3
+HLT_tau25_looseRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 2
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+    4: 2
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
+    4: 2
 HLT_tau25_looseRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 2
   stepCounts:
@@ -1474,6 +1472,18 @@ HLT_tau25_medium1_tracktwoEF_L1TAU12IM:
     1: 3
     2: 3
     3: 3
+HLT_tau25_medium1_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 0
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
 HLT_tau25_medium1_tracktwoMVA_L1TAU12IM:
   eventCount: 0
   stepCounts:
@@ -1496,6 +1506,20 @@ HLT_tau25_medium1_tracktwo_L1TAU12IM:
     0: 4
     1: 3
     2: 3
+HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 1
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+    4: 1
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
+    4: 1
 HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 1
   stepCounts:
@@ -1520,6 +1544,20 @@ HLT_tau25_mediumRNN_tracktwo_L1TAU12IM:
     0: 4
     1: 3
     2: 3
+HLT_tau25_perf_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 3
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+    4: 3
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
+    4: 3
 HLT_tau25_perf_tracktwoMVA_L1TAU12IM:
   eventCount: 3
   stepCounts:
@@ -1550,6 +1588,20 @@ HLT_tau25_perf_tracktwo_L1TAU12IM:
     3: 3
     4: 3
     5: 3
+HLT_tau25_tightRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 1
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+    4: 1
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
+    4: 1
 HLT_tau25_tightRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 1
   stepCounts:
@@ -1574,6 +1626,20 @@ HLT_tau25_tightRNN_tracktwo_L1TAU12IM:
     0: 4
     1: 3
     2: 3
+HLT_tau25_verylooseRNN_tracktwoMVABDT_L1TAU12IM:
+  eventCount: 2
+  stepCounts:
+    0: 3
+    1: 3
+    2: 3
+    3: 3
+    4: 2
+  stepFeatures:
+    0: 4
+    1: 3
+    2: 3
+    3: 3
+    4: 2
 HLT_tau25_verylooseRNN_tracktwoMVA_L1TAU12IM:
   eventCount: 2
   stepCounts:
diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py
index eea35e3b5fe82d5ae5f84c98d44a9b978b43097d..85ea2ea79085ac61a15dc38d6a91517c4858bfd6 100644
--- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py
+++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py
@@ -74,11 +74,20 @@ JetCopyVarsToKeep = ['pt', 'eta', 'phi', 'm',
                  ]
 JetCopyVars = '.'.join(JetCopyVarsToKeep)
 
-BTagOutput = ['jetLink','BTagTrackToJetAssociator','minimumTrackRelativeEta','maximumTrackRelativeEta','averageTrackRelativeEta','trkSum_ntrk','trkSum_SPt','trkSum_VPt','trkSum_VEta','Muons',]
+BTagOutput = ['jetLink','BTagTrackToJetAssociator','Muons',]
 BTagOutput_IP2D = ['IP2D_TrackParticleLinks','IP2D_gradeOfTracks','IP2D_weightBofTracks','IP2D_weightCofTracks','IP2D_weightUofTracks','IP2D_sigD0wrtPVofTracks','IP2D_flagFromV0ofTracks','IP2D_nTrks','IP2D_isDefaults','IP2D_cu','IP2D_bu','IP2D_bc',]
 BTagOutput_IP3D = ['IP3D_TrackParticleLinks','IP3D_gradeOfTracks','IP3D_weightBofTracks','IP3D_weightCofTracks','IP3D_weightUofTracks','IP3D_valD0wrtPVofTracks','IP3D_sigD0wrtPVofTracks','IP3D_valZ0wrtPVofTracks','IP3D_sigZ0wrtPVofTracks','IP3D_flagFromV0ofTracks','IP3D_nTrks','IP3D_isDefaults','IP3D_cu','IP3D_bu','IP3D_bc',]
 BTagOutput_SV1 = ['SV1_TrackParticleLinks','SV1_vertices','SV1_isDefaults','SV1_NGTinSvx','SV1_masssvx','SV1_N2Tpair','SV1_efracsvx','SV1_deltaR','SV1_Lxy','SV1_L3d','SV1_significance3d','SV1_energyTrkInJet','SV1_dstToMatLay','SV1_badTracksIP','SV1_normdist',]
-BTagOutput_JetFitter = ['JetFitter_deltaeta','JetFitter_deltaphi','JetFitter_fittedPosition','JetFitter_JFvertices','JetFitter_nVTX','JetFitter_nSingleTracks','JetFitter_isDefaults','JetFitter_deltaR','JetFitterSecondaryVertex_isDefaults','JetFitterSecondaryVertex_nTracks','JetFitterSecondaryVertex_mass','JetFitterSecondaryVertex_energy','JetFitterSecondaryVertex_energyFraction','JetFitterSecondaryVertex_displacement3d','JetFitterSecondaryVertex_displacement2d','JetFitterSecondaryVertex_minimumTrackRelativeEta','JetFitterSecondaryVertex_maximumTrackRelativeEta','JetFitterSecondaryVertex_averageTrackRelativeEta','JetFitter_mass','JetFitter_energyFraction','JetFitter_significance3d','JetFitter_nTracksAtVtx','JetFitter_N2Tpair','JetFitter_fittedCov','JetFitter_tracksAtPVchi2','JetFitter_tracksAtPVndf','JetFitter_tracksAtPVlinks','JetFitter_massUncorr','JetFitter_chi2','JetFitter_ndof','JetFitter_dRFlightDir',]
+BTagOutput_JetFitter = [
+    'JetFitter_deltaeta','JetFitter_deltaphi','JetFitter_fittedPosition','JetFitter_JFvertices','JetFitter_nVTX','JetFitter_nSingleTracks','JetFitter_isDefaults','JetFitter_deltaR',
+    'JetFitterSecondaryVertex_isDefaults','JetFitterSecondaryVertex_nTracks','JetFitterSecondaryVertex_mass','JetFitterSecondaryVertex_energy','JetFitterSecondaryVertex_energyFraction','JetFitterSecondaryVertex_displacement3d','JetFitterSecondaryVertex_displacement2d',
+    'JetFitterSecondaryVertex_minimumTrackRelativeEta',
+    'JetFitterSecondaryVertex_maximumTrackRelativeEta',
+    'JetFitterSecondaryVertex_averageTrackRelativeEta',
+    'JetFitterSecondaryVertex_minimumAllJetTrackRelativeEta',
+    'JetFitterSecondaryVertex_maximumAllJetTrackRelativeEta',
+    'JetFitterSecondaryVertex_averageAllJetTrackRelativeEta',
+    'JetFitter_mass','JetFitter_energyFraction','JetFitter_significance3d','JetFitter_nTracksAtVtx','JetFitter_N2Tpair','JetFitter_fittedCov','JetFitter_tracksAtPVchi2','JetFitter_tracksAtPVndf','JetFitter_tracksAtPVlinks','JetFitter_massUncorr','JetFitter_chi2','JetFitter_ndof','JetFitter_dRFlightDir',]
 BTagOutput_rnnip = ['rnnip_isDefaults','rnnip_pu','rnnip_pc','rnnip_pb','rnnip_ptau',]
 BTagOutput_highLevelTaggers = ['MV2c10_discriminant','DL1_pu','DL1_pc','DL1_pb','DL1r_pu','DL1r_pc','DL1r_pb',]
 
@@ -137,7 +146,9 @@ TriggerHLTListRun3 = [
 
     ('xAOD::TrackParticleContainer#HLT_IDTrack_Electron_IDTrig',        'BS ESD AODFULL', 'Egamma', 'inViews:precisionEtcutViews'),
     ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_Electron_IDTrigAux.', 'BS ESD AODFULL', 'Egamma'),
-
+    
+    ('xAOD::TrackParticleContainer#HLT_IDTrack_Electron_GSF',               'BS ESD AODFULL', 'Egamma', 'inViews:precisionElectronViews_GSF'),
+    ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_Electron_GSFAux.',           'BS ESD AODFULL', 'Egamma'),
 
     # these two corresponds to the output of the precisionCalo step
     ('xAOD::CaloClusterContainer#HLT_CaloEMClusters',               'BS ESD AODFULL', 'Egamma', 'inViews:precisionCaloViews'),
@@ -157,6 +168,8 @@ TriggerHLTListRun3 = [
     # These are for precision photon and precision Electron Keeping same names as in Run2
     ('xAOD::ElectronContainer#HLT_egamma_Electrons',                'BS ESD AODFULL', 'Egamma', 'inViews:precisionElectronViews'),
     ('xAOD::ElectronAuxContainer#HLT_egamma_ElectronsAux.',     'BS ESD AODFULL', 'Egamma'),
+    ('xAOD::ElectronContainer#HLT_egamma_Electrons_GSF',                'BS ESD AODFULL', 'Egamma', 'inViews:precisionElectronViews_GSF'),
+    ('xAOD::ElectronAuxContainer#HLT_egamma_Electrons_GSFAux.',     'BS ESD AODFULL', 'Egamma'),
     # enable when iso chains are present
     # ('xAOD::ElectronContainer#HLT_egamma_Iso_Electrons',            'BS ESD AODFULL', 'Egamma', 'inViews:precisionIsoElectronViews'),
     # ('xAOD::ElectronTrigAuxContainer#HLT_egamma_Iso_ElectronsAux.', 'BS ESD AODFULL', 'Egamma'),
@@ -280,6 +293,7 @@ TriggerHLTListRun3 = [
     ('TrigRoiDescriptorCollection#HLT_Roi_TauCore_MVA',                'BS ESD AODFULL AODSLIM',  'Steer'),
     ('TrigRoiDescriptorCollection#HLT_Roi_TauCore',             'BS ESD AODFULL AODSLIM',  'Steer'),
     ('TrigRoiDescriptorCollection#HLT_Roi_TauIso',             'BS ESD AODFULL AODSLIM',  'Steer'),
+    ('TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT',             'BS ESD AODFULL AODSLIM',  'Steer'),
     ('TrigRoiDescriptorCollection#HLT_Roi_TauID',           'BS ESD AODFULL AODSLIM',  'Steer'),
 
     ('xAOD::JetContainer#HLT_jet_seed',                         'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Tau', 'inViews:TAUCaloViews,TAUCaloMVAViews'),
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/HLTTriggerGetter.py b/Trigger/TriggerCommon/TriggerJobOpts/python/HLTTriggerGetter.py
index f4cfb67c00b7a58b1fc49ea1deb959353540f061..e8058e8941343ee4eac90c5fa9ba7c07819de071 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/HLTTriggerGetter.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/HLTTriggerGetter.py
@@ -189,7 +189,7 @@ class HLTSimulationGetter(Configured):
                 TrigSteer_HLT = ReruningTrigSteer_HLT('TrigSteer_HLT', hltFile=TriggerFlags.inputHLTconfigFile(), lvl1File=TriggerFlags.inputLVL1configFile())             
                 
             # TrigSteer_HLT.doL1TopoSimulation = TriggerFlags.doL1Topo() # this later needs to be extented to also run when we take data with L1Topo
-            TrigSteer_HLT.doL1TopoSimulation = True # always needs to run if the HLT is simulated
+            TrigSteer_HLT.doL1TopoSimulation = False # always needs to run if the HLT is simulated
             if hasattr(TrigSteer_HLT.LvlTopoConverter, 'MuonInputProvider'):
 
                 try: # this is temporary until TrigT1Muctpi-00-06-29 is in the release
diff --git a/Trigger/TriggerCommon/TriggerMenu/python/tau/generateTauChainDefs.py b/Trigger/TriggerCommon/TriggerMenu/python/tau/generateTauChainDefs.py
index 9a5b66e009cbb6b6831011a321ddc6bc0a008927..fec8226dacaa902b17e35171631da6b2480e4a3f 100755
--- a/Trigger/TriggerCommon/TriggerMenu/python/tau/generateTauChainDefs.py
+++ b/Trigger/TriggerCommon/TriggerMenu/python/tau/generateTauChainDefs.py
@@ -61,7 +61,7 @@ def _addTopoInfo(theChainDef,chainDict,doAtL2AndEF=False):
     L2ChainName = "L2_" + chainDict['chainName']
 
     topoThresh = chainDict['topoThreshold']
-    topoStartFrom = setupTopoStartFrom(topoThresh,theChainDef) if topoThresh else None
+    topoStartFrom = None # setupTopoStartFrom(topoThresh,theChainDef) if topoThresh else None
 
     topoAlgs = chainDict["topo"]
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py
index 5fa74ab7687d7d0e18285847ef021abbb2cd8ad9..33ac0be2f0a921871b1688c231761346544ab7fd 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/EgammaDefs.py
@@ -4,9 +4,10 @@
 # Static classes to configure photon chain container names
 #----------------------------------------------------------------
 
+from TrigEDMConfig.TriggerEDMRun3 import recordable
+
 class TrigEgammaKeys(object):
       """Static class to collect all string manipulation in Electron sequences """
-      from TrigEDMConfig.TriggerEDMRun3 import recordable
       SuperElectronRecCollectionName = 'HLT_ElectronSuperRecCollection'
       outputElectronKey = recordable('HLT_egamma_Electrons')
       SuperPhotonRecCollectionName = 'HLT_PhotonSuperRecCollection'
@@ -15,10 +16,17 @@ class TrigEgammaKeys(object):
       outputClusterKey = 'HLT_egammaClusters'
       outputTopoSeededClusterKey = 'HLT_egammaTopoSeededClusters'
       TrigEMClusterToolOutputContainer = 'HLT_TrigEMClusterOutput'
-      TrigElectronTracksCollectionName = 'HLT_IDTrack_Electron_IDTrig'
+      TrigElectronTracksCollectionName = recordable('HLT_IDTrack_Electron_IDTrig')
       pidVersion = 'rel21_20180312'
 
 
+class TrigEgammaKeys_GSF(object):
+      """Static class to collect all string manipulation in Electron sequences """
+      outputElectronKey_GSF = recordable('HLT_egamma_Electrons_GSF')
+      outputTrackKey_GSF = 'HLT_IDTrkTrack_Electron_GSF'
+      outputTrackParticleKey_GSF = recordable('HLT_IDTrack_Electron_GSF')
+      
+
 def TrigElectronSelectors(sel):
     import logging
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
index 2cd2fadec6b5d8376e3fc70e63abe6fd7189f9cd..f1087e5e0a93893e49bc55e507266a1b67ae23c2 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
@@ -11,6 +11,7 @@ from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import fastCa
 from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronSequenceSetup import fastElectronMenuSequence
 from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloSequenceSetup import precisionCaloMenuSequence
 from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionElectronSequenceSetup import precisionElectronMenuSequence
+from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionElectronSequenceSetup_GSF import precisionElectronMenuSequence_GSF
 from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionTrackingSequenceSetup import precisionTrackingMenuSequence
 
 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool, defineHistogram
@@ -34,6 +35,9 @@ def precisionTrackingSequenceCfg( flags ):
 def precisionElectronSequenceCfg( flags ):
     return precisionElectronMenuSequence()
 
+def precisionGSFElectronSequenceCfg( flags ):
+    return precisionElectronMenuSequence_GSF()
+
 
 # this must be moved to the HypoTool file:
 def diElectronMassComboHypoToolFromDict(chainDict):
@@ -88,10 +92,25 @@ class ElectronChainConfiguration(ChainConfigurationBase):
                 'lhtightivarloose'   : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionElectron'],
                 'lhtightivarmedium'  : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionElectron'],
                 'lhtightivartight'   : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionElectron'],
+        # gsf sequences. For now just settin gup as normal non-gsf chains
+                'lhloosegsf'   : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhvloosegsf'  : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhmediumgsf'  : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhtightgsf'   : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhloosegsfivarloose'  : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhloosegsfivarmedium' : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhloosegsfivartight'  : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhlmediumgsfivarloose' : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhlmediumgsfivarmedium': ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhlmediumgsfivartight' : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhtightgsfivarloose'   : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhtightgsfivarmedium'  : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+                'lhtightgsfivartight'   : ['getFastCalo', 'getFastElectron', 'getPrecisionCaloElectron', 'getPrecisionTracking', 'getPrecisionGSFElectron'],
+
                 }
 
         log.debug('electron chain part = %s', self.chainPart)
-        key = self.chainPart['extra'] + self.chainPart['IDinfo'] + self.chainPart['L2IDAlg'] + self.chainPart['isoInfo']
+        key = self.chainPart['extra'] + self.chainPart['IDinfo'] + self.chainPart['L2IDAlg'] + self.chainPart['isoInfo'] + self.chainPart['trkInfo']
 
 
         for addInfo in self.chainPart['addInfo']:
@@ -145,3 +164,14 @@ class ElectronChainConfiguration(ChainConfigurationBase):
             stepName = "precision_electron"+isocut
             return self.getStep(5,stepName,[ precisionElectronSequenceCfg])
 
+    def getPrecisionGSFElectron(self):
+
+        isocut = self.chainPart['isoInfo']
+        log.debug(' isolation cut = ' + str(isocut))
+
+        if "Zee" in self.chainName:
+            stepName = "precision_topoelectron_GSF"+isocut
+            return self.getStep(5,stepName,sequenceCfgArray=[precisionGSFElectronSequenceCfg], comboTools=[diElectronMassComboHypoToolFromDict])
+        else:
+            stepName = "precision_electron_GSF"+isocut
+            return self.getStep(5,stepName,[ precisionGSFElectronSequenceCfg])
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup.py
index 332c5fc44181e7f6bd823397bf02d3a3153d8f74..ef7b200b835d8a56bfff17a7aa4056754336f45a 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup.py
@@ -12,7 +12,7 @@ from DecisionHandling.DecisionHandlingConf import ViewCreatorPreviousROITool
 
 
 def precisionElectronSequence(ConfigFlags):
-    """ fourth step:  precision electron....."""
+    """ fifth step:  precision electron....."""
     InViewRoIs = "precisionElectron"
     # EVCreator:
     precisionElectronViewsMaker = EventViewCreatorAlgorithm("IMprecisionElectron")
@@ -40,7 +40,7 @@ def precisionElectronMenuSequence():
 
     # make the Hypo
     from TrigEgammaHypo.TrigEgammaHypoConf import TrigEgammaPrecisionElectronHypoAlgMT
-    thePrecisionElectronHypo = TrigEgammaPrecisionElectronHypoAlgMT("TrigEgammaPrecisionElectronHypoAlgMT")
+    thePrecisionElectronHypo = TrigEgammaPrecisionElectronHypoAlgMT("TrigEgammaPrecisionElectronHypoAlgMT_noGSF")
     thePrecisionElectronHypo.Electrons = sequenceOut
     thePrecisionElectronHypo.RunInView = True
 
@@ -52,3 +52,4 @@ def precisionElectronMenuSequence():
                           HypoToolGen = TrigEgammaPrecisionElectronHypoToolFromDict )
 
 
+
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup_GSF.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup_GSF.py
new file mode 100644
index 0000000000000000000000000000000000000000..7f39e31df3ac1707d0588042622862e68fadf19b
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/PrecisionElectronSequenceSetup_GSF.py
@@ -0,0 +1,57 @@
+#
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+
+from AthenaConfiguration.AllConfigFlags import ConfigFlags
+
+# menu components   
+from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool
+from AthenaCommon.CFElements import parOR, seqAND
+from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm
+from DecisionHandling.DecisionHandlingConf import ViewCreatorPreviousROITool
+
+
+def precisionElectronSequence_GSF(ConfigFlags):
+    """ 
+    Similar setup as ../PrecisionElectronSequenceSetup.py; tailored for GSF chains
+    """
+    InViewRoIs = "precisionElectron"
+    # EVCreator:
+    precisionElectronViewsMaker = EventViewCreatorAlgorithm("IMprecisionElectron_GSF")
+    precisionElectronViewsMaker.RoIsLink = "initialRoI"
+    precisionElectronViewsMaker.RoITool = ViewCreatorPreviousROITool()
+    precisionElectronViewsMaker.InViewRoIs = InViewRoIs
+    precisionElectronViewsMaker.Views = "precisionElectronViews_GSF" #precisionElectronViews_GSF
+    precisionElectronViewsMaker.ViewFallThrough = True
+    precisionElectronViewsMaker.RequireParentView = True
+
+    # Configure the reconstruction algorithm sequence
+    from TriggerMenuMT.HLTMenuConfig.Electron.PrecisionElectronRecoSequences_GSF import precisionElectronRecoSequence_GSF
+    (electronPrecisionRec, sequenceOut) = precisionElectronRecoSequence_GSF(InViewRoIs)
+
+    electronPrecisionInViewAlgs = parOR("electronPrecisionInViewAlgs_GSF", [electronPrecisionRec])
+    precisionElectronViewsMaker.ViewNodeName = "electronPrecisionInViewAlgs_GSF"
+
+    electronPrecisionAthSequence = seqAND("electronPrecisionAthSequence_GSF", [precisionElectronViewsMaker, electronPrecisionInViewAlgs ] )
+    return (electronPrecisionAthSequence, precisionElectronViewsMaker, sequenceOut)
+
+
+def precisionElectronMenuSequence_GSF():
+    # retrieve the reco seuqence+EVC
+    (electronPrecisionAthSequence, precisionElectronViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(precisionElectronSequence_GSF, ConfigFlags)
+
+    # make the Hypo
+    from TrigEgammaHypo.TrigEgammaHypoConf import TrigEgammaPrecisionElectronHypoAlgMT
+    thePrecisionElectronHypo = TrigEgammaPrecisionElectronHypoAlgMT("TrigEgammaPrecisionElectronHypoAlgMT_GSF")
+    thePrecisionElectronHypo.Electrons = sequenceOut
+    thePrecisionElectronHypo.RunInView = True
+
+    from TrigEgammaHypo.TrigEgammaPrecisionElectronHypoTool import TrigEgammaPrecisionElectronHypoToolFromDict
+
+    return  MenuSequence( Maker       = precisionElectronViewsMaker,
+                          Sequence    = electronPrecisionAthSequence,
+                          Hypo        = thePrecisionElectronHypo,
+                          HypoToolGen = TrigEgammaPrecisionElectronHypoToolFromDict )
+
+
+
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py
index afbde59905740bdb11f284f37e23afb7afb7b586..0b9ebbffe454946ade18483fc1eee37a7f565262 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/TrigEgammaFactories.py
@@ -174,6 +174,7 @@ def TrigPhotonIsoBuilderCfg(name='TrigPhotonIsolationBuilder'):
             
     return TrigPhotonIsolationBuilder()
 
+
 def TrigEgammaDecorationTools():
     #Return a list with the tools that decorate both electrons and photons. 
     return [ EMFourMomBuilder() ] 
@@ -186,3 +187,5 @@ def TrigElectronDecorationTools():
     #Return a list with the tools that decorate only photons
     return [ ElectronPIDBuilder()]
 
+
+
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py
index 1e795360a20c67197c4c4330e0dca7e97698b49d..e72d715774f2b0708f94c6999e0ee0638766941f 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences.py
@@ -13,7 +13,7 @@ def precisionElectronRecoSequence(RoIs):
 
     Sequence of algorithms is the following:
       - egammaRecBuilder/TrigEgammaRecElectron creates egammaObjects out of clusters and tracks. 
-      - electronSuperClusterBuilder algorithm will create superclusters out of the toposlusters and tracks in egammaRec under the electron hypothesis
+      - electronSuperClusterBuilder algorithm will create superclusters out of the topoclusters and tracks in egammaRec under the electron hypothesis
           https://gitlab.cern.ch/atlas/athena/blob/master/Reconstruction/egamma/egammaAlgs/python/egammaSuperClusterBuilder.py#L26 
       - TopoEgammBuilder will create photons and electrons out of trakcs and SuperClusters. Here at HLT electrons the aim is to ignore photons.
           https://gitlab.cern.ch/atlas/athena/blob/master/Reconstruction/egamma/egammaAlgs/src/topoEgammaBuilder.cxx
@@ -25,7 +25,7 @@ def precisionElectronRecoSequence(RoIs):
     # First the data verifiers:
     # Here we define the data dependencies. What input needs to be available for the Fexs (i.e. TopoClusters from precisionCalo) in order to run
     from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloSequenceSetup import precisionCaloMenuDefs
-    
+       
     # precision Tracking related data dependencies
     from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys
 
@@ -38,47 +38,53 @@ def precisionElectronRecoSequence(RoIs):
 
     """ Retrieve the factories now """
     from TriggerMenuMT.HLTMenuConfig.Electron.TrigElectronFactories import TrigEgammaRecElectron, TrigElectronSuperClusterBuilder, TrigTopoEgammaElectronCfg
-    from TriggerMenuMT.HLTMenuConfig.Egamma.TrigEgammaFactories import  TrigEMTrackMatchBuilder
-   
-    #The sequence of these algorithms
-    thesequence = parOR( "precisionElectron_%s" % RoIs)
-   
-    thesequence += ViewVerifyTrk
+    from TriggerMenuMT.HLTMenuConfig.Egamma.TrigEgammaFactories import  TrigEMTrackMatchBuilder, TrigElectronIsoBuilderCfg
+
     # Create the sequence of three steps:
     #  - TrigEgammaRecElectron, TrigElectronSuperClusterBuilder, TrigTopoEgammaElectron
-    trackMatchBuilder = TrigEMTrackMatchBuilder()
-    trackMatchBuilder.TrackParticlesName = TrigEgammaKeys.TrigElectronTracksCollectionName
-    TrigEgammaAlgo = TrigEgammaRecElectron()
-   
-    TrigEgammaAlgo.InputTopoClusterContainerName = precisionCaloMenuDefs.precisionCaloClusters
-    TrigEgammaAlgo.TrackMatchBuilderTool = trackMatchBuilder
-    thesequence += TrigEgammaAlgo
-        
-    trigElectronAlgo = TrigElectronSuperClusterBuilder()
-    
-    trigElectronAlgo.InputEgammaRecContainerName = TrigEgammaAlgo.egammaRecContainer
-    thesequence += trigElectronAlgo
 
-    trigTopoEgammaAlgo = TrigTopoEgammaElectronCfg()
-    trigTopoEgammaAlgo.SuperElectronRecCollectionName = trigElectronAlgo.SuperElectronRecCollectionName
-    collectionOut = trigTopoEgammaAlgo.ElectronOutputName
-    thesequence += trigTopoEgammaAlgo
+    # Create the sequence of three steps:
+    #  - TrigEgammaRecElectron, TrigElectronSuperClusterBuilder, TrigTopoEgammaElectron
+    #The sequence of these algorithms
+    thesequence = parOR( "precisionElectron%s" % RoIs)
+    thesequence += ViewVerifyTrk
     
-    from TriggerMenuMT.HLTMenuConfig.Egamma.TrigEgammaFactories import TrigElectronIsoBuilderCfg
-    isoBuilder = TrigElectronIsoBuilderCfg()
+    ## TrigEMTrackMatchBuilder_noGSF ##
+    TrigEMTrackMatchBuilder = TrigEMTrackMatchBuilder("TrigEMTrackMatchBuilder_noGSF")
+    TrigEMTrackMatchBuilder.TrackParticlesName =  TrigEgammaKeys.TrigElectronTracksCollectionName
+
+    ## TrigEgammaRecElectron_noGSF ##
+    TrigEgammaRecAlgo = TrigEgammaRecElectron("TrigEgammaRecElectron_noGSF")
+    thesequence += TrigEgammaRecAlgo
+    TrigEgammaRecAlgo.TrackMatchBuilderTool = TrigEMTrackMatchBuilder
+    TrigEgammaRecAlgo.InputTopoClusterContainerName = precisionCaloMenuDefs.precisionCaloClusters
+
+    ## TrigElectronSuperClusterBuilder_noGSF ##
+    TrigSuperElectronAlgo = TrigElectronSuperClusterBuilder("TrigElectronSuperClusterBuilder_noGSF")
+    thesequence += TrigSuperElectronAlgo
+    TrigSuperElectronAlgo.InputEgammaRecContainerName =  TrigEgammaRecAlgo.egammaRecContainer
+    TrigSuperElectronAlgo.TrackMatchBuilderTool = TrigEMTrackMatchBuilder
+
+    ## TrigTopoEgammaElectronCfg_noGSF ##
+    TrigTopoEgammaAlgo = TrigTopoEgammaElectronCfg("TrigTopoEgammaElectronCfg_noGSF")
+    thesequence += TrigTopoEgammaAlgo
+    TrigTopoEgammaAlgo.SuperElectronRecCollectionName = TrigSuperElectronAlgo.SuperElectronRecCollectionName
+    collectionOut = TrigTopoEgammaAlgo.ElectronOutputName
+
+    ## TrigElectronIsoBuilderCfg_noGSF ##
+    isoBuilder = TrigElectronIsoBuilderCfg("TrigElectronIsoBuilderCfg_noGSF")
     thesequence += isoBuilder
 
     #online monitoring for topoEgammaBuilder
     from TriggerMenuMT.HLTMenuConfig.Electron.TrigElectronFactories import PrecisionElectronTopoMonitorCfg
     PrecisionElectronRecoMonAlgo = PrecisionElectronTopoMonitorCfg()
-    PrecisionElectronRecoMonAlgo.ElectronKey = trigTopoEgammaAlgo.ElectronOutputName
+    PrecisionElectronRecoMonAlgo.ElectronKey = TrigTopoEgammaAlgo.ElectronOutputName
     thesequence += PrecisionElectronRecoMonAlgo
 
     #online monitoring for TrigElectronSuperClusterBuilder
     from TriggerMenuMT.HLTMenuConfig.Electron.TrigElectronFactories import PrecisionElectronSuperClusterMonitorCfg
     PrecisionElectronSuperClusterMonAlgo = PrecisionElectronSuperClusterMonitorCfg()
-    PrecisionElectronSuperClusterMonAlgo.InputEgammaRecContainerName = trigElectronAlgo.SuperElectronRecCollectionName
+    PrecisionElectronSuperClusterMonAlgo.InputEgammaRecContainerName = TrigSuperElectronAlgo.SuperElectronRecCollectionName
     thesequence += PrecisionElectronSuperClusterMonAlgo
-
     return (thesequence, collectionOut)
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences_GSF.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences_GSF.py
new file mode 100644
index 0000000000000000000000000000000000000000..9cec71f80791d6fc8f9ee606a59c4d30f2b9ec4b
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/PrecisionElectronRecoSequences_GSF.py
@@ -0,0 +1,85 @@
+#
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+
+from AthenaCommon.CFElements import parOR
+
+#logging
+from AthenaCommon.Logging import logging
+log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionElectronRecoSequences_GSF')
+
+def precisionElectronRecoSequence_GSF(RoIs):
+    """
+    Similar reconstruction sequence as ../PrecisionElectronRecoSequences.py, tailored to run GSF
+    """
+
+    log.debug('precisionElectronRecoSequence_GSF(RoIs = %s)',RoIs)
+    
+    import AthenaCommon.CfgMgr as CfgMgr
+    # First the data verifiers:
+    # Here we define the data dependencies. What input needs to be available for the Fexs (i.e. TopoClusters from precisionCalo) in order to run
+    from TriggerMenuMT.HLTMenuConfig.Egamma.PrecisionCaloSequenceSetup import precisionCaloMenuDefs
+       
+    # precision Tracking related data dependencies
+    from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys, TrigEgammaKeys_GSF
+
+    ViewVerifyTrk_GSF   = CfgMgr.AthViews__ViewDataVerifier("PrecisionTrackViewDataVerifier_GSF")
+
+    ViewVerifyTrk_GSF.DataObjects = [( 'CaloCellContainer' , 'StoreGateSvc+CaloCells' ),
+                                 ( 'xAOD::CaloClusterContainer' , 'StoreGateSvc+%s' % precisionCaloMenuDefs.precisionCaloClusters ),
+                                 ( 'xAOD::TrackParticleContainer','StoreGateSvc+%s' % TrigEgammaKeys.TrigElectronTracksCollectionName),
+                                 # verifier object needed by GSF
+                                 ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.averageInteractionsPerCrossing' ), 
+                                 ( 'TRT_RDO_Container' , 'StoreGateSvc+TRT_RDOs' ),
+                                 ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
+                                 ( 'InDet::PixelGangedClusterAmbiguities' , 'StoreGateSvc+PixelClusterAmbiguitiesMap' ),
+                                 ( 'InDet::PixelGangedClusterAmbiguities' , 'StoreGateSvc+SplitClusterAmbiguityMap' ),
+                                 ( 'InDet::TRT_DriftCircleContainer' , 'StoreGateSvc+TRT_DriftCircles' ),
+                                 ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.AveIntPerXDecor' )]
+
+
+    """ Retrieve the factories now """
+    from TriggerMenuMT.HLTMenuConfig.Electron.TrigElectronFactories import TrigEgammaRecElectron, TrigElectronSuperClusterBuilder, TrigTopoEgammaElectronCfg
+    from TriggerMenuMT.HLTMenuConfig.Egamma.TrigEgammaFactories import  TrigEMTrackMatchBuilder, TrigElectronIsoBuilderCfg
+   
+    # Create the sequence of three steps:
+    #  - TrigEgammaRecElectron, TrigElectronSuperClusterBuilder, TrigTopoEgammaElectron
+
+        
+    from TriggerMenuMT.HLTMenuConfig.Electron.TrigEMBremCollectionBuilder import TrigEMBremCollectionBuilder
+    # Create the sequence of steps:
+    #  - TrigEgammaRecElectron, TrigElectronSuperClusterBuilder, TrigTopoEgammaElectron
+    #The sequence of these algorithms
+    thesequence_GSF = parOR( "precisionElectron_GSF%s" % RoIs)
+    thesequence_GSF += ViewVerifyTrk_GSF
+    
+    ## TrigEMBremCollectionBuilder ##
+    track_GSF = TrigEMBremCollectionBuilder()
+    thesequence_GSF += track_GSF
+
+    ## TrigEMTrackMatchBuilder_GSF ##
+    TrigEMTrackMatchBuilder_GSF = TrigEMTrackMatchBuilder("TrigEMTrackMatchBuilder_GSF")
+    TrigEMTrackMatchBuilder_GSF.TrackParticlesName = track_GSF.OutputTrkPartContainerName
+    
+    ## TrigEgammaRecElectron_GSF ##
+    TrigEgammaRecAlgo_GSF = TrigEgammaRecElectron("TrigEgammaRecElectron_GSF")
+    thesequence_GSF += TrigEgammaRecAlgo_GSF
+    TrigEgammaRecAlgo_GSF.TrackMatchBuilderTool = TrigEMTrackMatchBuilder_GSF
+    TrigEgammaRecAlgo_GSF.InputTopoClusterContainerName = precisionCaloMenuDefs.precisionCaloClusters
+
+    ## TrigElectronSuperClusterBuilder_GSF ##
+    TrigSuperElectronAlgo_GSF = TrigElectronSuperClusterBuilder("TrigElectronSuperClusterBuilder_GSF")
+    thesequence_GSF += TrigSuperElectronAlgo_GSF
+    TrigSuperElectronAlgo_GSF.TrackMatchBuilderTool = TrigEMTrackMatchBuilder_GSF
+
+    ## TrigTopoEgammaElectronCfg_GSF ##
+    TrigTopoEgammaAlgo_GSF = TrigTopoEgammaElectronCfg("TrigTopoEgammaElectronCfg_GSF") 
+    thesequence_GSF += TrigTopoEgammaAlgo_GSF
+    TrigTopoEgammaAlgo_GSF.ElectronOutputName = TrigEgammaKeys_GSF.outputElectronKey_GSF
+    collectionOut_GSF = TrigTopoEgammaAlgo_GSF.ElectronOutputName
+
+    ## TrigElectronIsoBuilderCfg_GSF ##
+    isoBuilder_GSF = TrigElectronIsoBuilderCfg("TrigElectronIsoBuilderCfg_GSF")
+    thesequence_GSF += isoBuilder_GSF
+    isoBuilder_GSF.ElectronCollectionContainerName = TrigEgammaKeys_GSF.outputElectronKey_GSF
+    return (thesequence_GSF, collectionOut_GSF)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/TrigEMBremCollectionBuilder.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/TrigEMBremCollectionBuilder.py
new file mode 100644
index 0000000000000000000000000000000000000000..0f3e3789730449a0404ffc117fe2d395647562d0
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/TrigEMBremCollectionBuilder.py
@@ -0,0 +1,146 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+__doc__ = """ToolFactory to instantiate  TrigEMBremCollectionBuilder
+with default configuration"""
+
+import InDetRecExample.TrackingCommon as TrackingCommon
+from AthenaCommon.DetFlags import DetFlags
+from AthenaCommon.Logging import logging
+# import base class
+from egammaAlgs import egammaAlgsConf
+from egammaRec.Factories import AlgFactory
+from egammaTools.egammaExtrapolators import (AtlasPublicExtrapolator,
+                                             egammaExtrapolator)
+
+# default configuration of the EMBremCollectionBuilder
+from InDetRecExample.InDetJobProperties import InDetFlags
+from RecExConfig.RecFlags import rec
+from TriggerMenuMT.HLTMenuConfig.Egamma.EgammaDefs import TrigEgammaKeys_GSF
+
+class TrigEgammaBremCollectionBuilder (egammaAlgsConf.EMBremCollectionBuilder):
+    __slots__ = ()
+
+    def __init__(self, name="TrigEgammaBremCollectionBuilder", **kw):
+        mlog = logging.getLogger(name + '::__init__')
+        mlog.info("entering")
+
+        super(TrigEgammaBremCollectionBuilder, self).__init__(name, **kw)
+
+        import egammaRec.EMCommonRefitter
+        # import TriggerMenuMT.HLTMenuConfig.Electron.TrigEMCommonRefitter as TrigEMCommonRefitter
+        # Extrapolator to be used for GSF (private)
+        GSFBuildInDetExtrapolator = egammaExtrapolator()
+
+        # GsfReffiter (private not in ToolSvc)
+        from egammaTrackTools.egammaTrackToolsConf import egammaTrkRefitterTool
+        GSFRefitterTool = egammaTrkRefitterTool(
+            name='GSFRefitterTool',
+            FitterTool=egammaRec.EMCommonRefitter.getGSFTrackFitter(),
+            #FitterTool=TrigEMCommonRefitter.getGSFTrackFitter(),
+            useBeamSpot=False,
+            Extrapolator=GSFBuildInDetExtrapolator,
+            ReintegrateOutliers=True)
+
+        #
+        #  BLayer and Pixel Related Tools (private = True)
+        #
+        GSFBuildTestBLayerTool = None
+        GSFBuildPixelToTPIDTool = None
+        if DetFlags.haveRIO.pixel_on():
+            GSFPixelConditionsSummaryTool = (
+                TrackingCommon.getInDetPixelConditionsSummaryTool())
+            if InDetFlags.usePixelDCS():
+                GSFPixelConditionsSummaryTool.IsActiveStates = [
+                    'READY', 'ON', 'UNKNOWN', 'TRANSITION', 'UNDEFINED']
+                GSFPixelConditionsSummaryTool.IsActiveStatus = [
+                    'OK', 'WARNING', 'ERROR', 'FATAL']
+
+            GSFBuildTestBLayerTool = TrackingCommon.getInDetRecTestBLayerTool(
+                name="GSFBuildTestBLayerTool",
+                PixelSummaryTool=GSFPixelConditionsSummaryTool,
+                Extrapolator=GSFBuildInDetExtrapolator,
+                private=True)
+
+            GSFBuildPixelToTPIDTool = TrackingCommon.getInDetPixelToTPIDTool(
+                name="GSFBuildPixelToTPIDTool",
+                private=True)
+        #
+        #  TRT_ElectronPidTool (private =True)
+        #
+        GSFBuildTRT_ElectronPidTool = None
+        if DetFlags.haveRIO.TRT_on() and not InDetFlags.doSLHC(
+        ) and not InDetFlags.doHighPileup():
+            GSFBuildTRT_ElectronPidTool = (
+                TrackingCommon.getInDetTRT_ElectronPidTool(
+                    name="GSFBuildTRT_ElectronPidTool",
+                    private=True))
+
+        #
+        #  InDet Track Summary Helper, no Association and no hole
+        #  as we do not redo them (private = true)
+        #
+        GSFBuildTrackSummaryHelperTool = TrackingCommon.getInDetSummaryHelper(
+            name="GSFBuildTrackSummaryHelperTool",
+            AssoTool=None,
+            HoleSearch=None,
+            PixelToTPIDTool=GSFBuildPixelToTPIDTool,
+            TestBLayerTool=GSFBuildTestBLayerTool,
+            isHLT = True,
+            DoSharedHits=False,
+            private=True)
+
+        #
+        #  TrkTrackSummaryTool: no shared hits  no hole search
+        #
+        GSFBuildInDetTrigTrackSummaryTool = (
+            TrackingCommon.getInDetTrackSummaryTool(
+                name="GSFBuildInDetTrigTrackSummaryTool",
+                InDetSummaryHelperTool=GSFBuildTrackSummaryHelperTool,
+                doSharedHits=False,
+                doHolesInDet=False,
+                TRT_ElectronPidTool=GSFBuildTRT_ElectronPidTool,
+                PixelToTPIDTool=GSFBuildPixelToTPIDTool,
+                private=True)
+        )
+
+        #
+        #  Track Particle Creator tool (private not in ToolSvc)
+        #  But needs a public extrapolator
+        #
+        from TrkParticleCreator.TrkParticleCreatorConf import (
+            Trk__TrackParticleCreatorTool)
+
+        GSFBuildInDetParticleCreatorTool = Trk__TrackParticleCreatorTool(
+            name="GSFBuildInDetParticleCreatorTool",
+            KeepParameters=True,
+            Extrapolator=AtlasPublicExtrapolator(),
+            UseTrackSummaryTool=False)
+        #
+        #  Track slimming (private not in ToolSvc)
+        #
+        from TrkTrackSlimmingTool.TrkTrackSlimmingToolConf import (
+            Trk__TrackSlimmingTool as ConfigurableTrackSlimmingTool)
+        GSFBuildInDetTrkSlimmingTool = ConfigurableTrackSlimmingTool(
+            name="GSFBuildInDetTrackSlimmingTool",
+            KeepParameters=False,
+            KeepOutliers=True)
+        #
+        #  Default Configuration
+        #
+        self.TrackRefitTool = GSFRefitterTool
+        self.TrackParticleCreatorTool = GSFBuildInDetParticleCreatorTool
+        self.TrackSlimmingTool = GSFBuildInDetTrkSlimmingTool
+        self.TrackSummaryTool = GSFBuildInDetTrigTrackSummaryTool
+
+""" This is an instance of GSF fitter tool will be used on track particles """
+TrigEMBremCollectionBuilder = AlgFactory(TrigEgammaBremCollectionBuilder,
+    doAdd = False,
+    name='TrigEMBremCollectionBuilder',
+    TrackParticleContainerName="HLT_IDTrack_Electron_IDTrig",
+    SelectedTrackParticleContainerName="HLT_IDTrack_Electron_IDTrig",
+    OutputTrkPartContainerName = TrigEgammaKeys_GSF.outputTrackParticleKey_GSF,
+    OutputTrackContainerName=TrigEgammaKeys_GSF.outputTrackKey_GSF,
+    DoTruth=rec.doTruth(),
+    usePixel=DetFlags.haveRIO.pixel_on(),
+    useSCT=DetFlags.haveRIO.SCT_on()
+    )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
index 0ff9e92cc19ffc895d5209b35b566b08209f0ff9..e3c862c83029c2fd8bbe5da9032c17472a50cce0 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
@@ -61,18 +61,9 @@ def setupMenu():
         ChainProp(name='HLT_mu24_ivarmedium_L1MU20', groups=SingleMuonGroup),
 
         # Additional intermediate thresholds for validation comparisons to match with Physics_pp_v7_primaries menu
-        ChainProp(name='HLT_mu28_ivarmedium_L1MU20', groups=SingleMuonGroup),
-        ChainProp(name='HLT_mu35_ivarmedium_L1MU20', groups=SingleMuonGroup),
-        ChainProp(name='HLT_2mu15_L12MU10', groups=SingleMuonGroup),
-        ChainProp(name='HLT_3mu8_msonly_L13MU6', groups=SingleMuonGroup),
-        ChainProp(name='HLT_mu80_L1MU20', groups=SingleMuonGroup),
-        ChainProp(name='HLT_mu60_L1MU20', groups=SingleMuonGroup),
+        ChainProp(name='HLT_mu22_mu10noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
+        ChainProp(name='HLT_mu24_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
         ChainProp(name='HLT_mu24_mu10noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
-        ChainProp(name='HLT_mu26_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
-        ChainProp(name='HLT_mu26_mu10noL1_L1MU20', l1SeedThresholds=['MU20', 'FSNOSEED'], groups=MultiMuonGroup),
-        ChainProp(name='HLT_mu28_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
-        ChainProp(name='HLT_mu22_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
-        ChainProp(name='HLT_mu24_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
         ChainProp(name="HLT_mu10_L1MU10", groups=SingleMuonGroup),
         ChainProp(name='HLT_2mu4_L12MU4',  groups=MultiMuonGroup),
 
@@ -88,7 +79,6 @@ def setupMenu():
         ChainProp(name="HLT_mu8_L1MU6", groups=SingleMuonGroup),
         ChainProp(name="HLT_mu14_L1MU10", groups=SingleMuonGroup),
         ChainProp(name="HLT_mu24_L1MU20", groups=SingleMuonGroup),
-        ChainProp(name="HLT_mu26_L1MU20", groups=SingleMuonGroup),
 
         #ATR-21003
         ChainProp(name='HLT_mu4_l2io_L1MU4', groups=SingleMuonGroup),
@@ -115,7 +105,7 @@ def setupMenu():
         ChainProp(name='HLT_e5_lhmedium_L1EM3', groups=SingleElectronGroup),
         ChainProp(name='HLT_e5_lhtight_L1EM3', groups=SingleElectronGroup),
         ChainProp(name='HLT_e5_lhtight_nod0_L1EM3', groups=SingleElectronGroup),
-
+        
         # Primary
         ChainProp(name='HLT_e17_lhvloose_nod0_L1EM15VH',  groups=SingleElectronGroup),
         ChainProp(name='HLT_e17_lhvloose_nod0_L1EM15VHI',  groups=SingleElectronGroup),
@@ -126,7 +116,7 @@ def setupMenu():
         ChainProp(name='HLT_e26_lhloose_L1EM22VHI', groups=SingleElectronGroup),
         ChainProp(name='HLT_e26_lhmedium_L1EM22VHI', groups=SingleElectronGroup),
         ChainProp(name='HLT_e26_lhtight_L1EM22VHI', groups=SingleElectronGroup),
-        #ChainProp(name='HLT_e26_lhtight_gsf_L1EM22VHI', groups=SingleElectronGroup), Placeholder for GSF chain
+        ChainProp(name='HLT_e26_lhtight_gsf_L1EM22VHI', groups=SingleElectronGroup), #Placeholder for GSF chain
         ChainProp(name='HLT_e26_lhtight_ivarloose_L1EM22VHI', groups=SingleElectronGroup),
         ChainProp(name='HLT_e26_lhtight_ivarmedium_L1EM22VHI', groups=SingleElectronGroup),
         ChainProp(name='HLT_e26_lhtight_ivartight_L1EM22VHI', groups=SingleElectronGroup),
@@ -367,6 +357,13 @@ def setupMenu():
         ChainProp(name="HLT_tau160_medium1_tracktwoEF_L1TAU100",groups=SingleTauGroup),
         ChainProp(name="HLT_tau200_medium1_tracktwoEF_L1TAU100",groups=SingleTauGroup),
         ChainProp(name="HLT_tau200_mediumRNN_tracktwoMVA_L1TAU100",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_idperf_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_perf_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_medium1_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_verylooseRNN_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_looseRNN_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
+        ChainProp(name="HLT_tau25_tightRNN_tracktwoMVABDT_L1TAU12IM",groups=SingleTauGroup),
         # ATR-21797
         # the following 3 chains were in serial mode in Run-2
         ChainProp(name="HLT_tau80_mediumRNN_tracktwoMVA_tau60_mediumRNN_tracktwoMVA_L1TAU60_2TAU40",         l1SeedThresholds=['TAU60','TAU40'],     groups=MultiTauGroup),
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py
index 49dfe68fd079a019ed69cbca3bc60bee830b4e26..e25976b7607a86b9f6f87ed62f1e8261945a94b6 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py
@@ -60,23 +60,30 @@ def setupMenu():
         #Planned Primaries
         #-- 1 mu iso
         ChainProp(name='HLT_mu26_ivarmedium_L1MU20', groups=SingleMuonGroup),
+        ChainProp(name='HLT_mu28_ivarmedium_L1MU20', groups=SingleMuonGroup),
         #-- 1 mu
+        ChainProp(name='HLT_mu6_idperf_L1MU6', groups=SingleMuonGroup),
+        ChainProp(name="HLT_mu26_L1MU20", groups=SingleMuonGroup),
+        ChainProp(name='HLT_mu24_idperf_L1MU20', groups=SingleMuonGroup),
         ChainProp(name='HLT_mu50_L1MU20', groups=SingleMuonGroup),
         ChainProp(name='HLT_mu60_0eta105_msonly_L1MU20', groups=SingleMuonGroup),
+        ChainProp(name='HLT_mu60_L1MU20', groups=SingleMuonGroup),
         ChainProp(name='HLT_mu80_msonly_3layersEC_L1MU20', groups=SingleMuonGroup),
         #-- 2 mu
         ChainProp(name='HLT_mu22_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
         ChainProp(name='HLT_2mu14_L12MU10', groups=MultiMuonGroup),
+        ChainProp(name='HLT_2mu15_L12MU10', groups=SingleMuonGroup),
         #-- 2 mu iso invm
         ChainProp(name='HLT_mu10_ivarmedium_mu10_10invm70_L12MU10', groups=MultiMuonGroup), 
         #-- 3 mu
         ChainProp(name='HLT_mu20_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
+        ChainProp(name='HLT_mu22_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup),
         ChainProp(name='HLT_3mu6_L13MU6', l1SeedThresholds=['MU6'],   groups=MultiMuonGroup),
         ChainProp(name='HLT_3mu6_msonly_L13MU6', l1SeedThresholds=['MU6'],   groups=MultiMuonGroup),
+        ChainProp(name='HLT_3mu8_msonly_L13MU6', groups=SingleMuonGroup),
         #-- 4 mu
         ChainProp(name='HLT_4mu4_L14MU4', l1SeedThresholds=['MU4'],   groups=MultiMuonGroup),
-        ChainProp(name='HLT_mu6_idperf_L1MU6', groups=SingleMuonGroup),
-        ChainProp(name='HLT_mu24_idperf_L1MU20', groups=SingleMuonGroup),
+
      ]
 
     TriggerFlags.EgammaSlice.signatures = [
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
index 8567c63455710134a2b0a16912eaa6838863f6b0..ef11f3b32e37ac9760b091a2c8e9af829943db5e 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
@@ -261,7 +261,7 @@ TauChainParts = {
     'L1threshold'   : '',
     'chainPartName' : '',
     'threshold'     : '',
-    'preselection'  : ['track', 'tracktwo', 'tracktwoEF', 'tracktwoMVA', 'tracktwoEFmvaTES', 'ptonly', ],
+    'preselection'  : ['track', 'tracktwo', 'tracktwoEF', 'tracktwoMVA', 'tracktwoMVABDT' , 'tracktwoEFmvaTES', 'ptonly', ],
     'selection'     : ['medium1', 'verylooseRNN', 'looseRNN', 'mediumRNN', 'tightRNN', 'perf', 'idperf'],
     'multiplicity'  : '',
     'trigType'      : ['tau'],
@@ -385,7 +385,7 @@ ElectronChainParts = {
     'etaRange'       : [],
     'IDinfo'         : ['lhvloose','lhloose','lhmedium','lhtight'],
     'isoInfo'        : ['ivarloose','ivarmedium','ivartight'],
-    'trkInfo'        : ['nod0', 'idperf', 'gsf'],
+    'trkInfo'        : ['idperf', 'gsf'],
     'caloInfo'       : [],
     'lhInfo'         : [],
     'L2IDAlg'        : ['noringer'],
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauChainConfiguration.py
index 7091e3fe471461c9eb8f0e09b8bbb32fcb594660..3f2d0d2230ca73d3115bd4e80bf07f1456b71d7e 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauChainConfiguration.py
@@ -11,7 +11,7 @@ log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Tau.TauChainConfiguration")
 
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase
 
-from TriggerMenuMT.HLTMenuConfig.Tau.TauMenuSequences import tauCaloMenuSeq, tauCaloMVAMenuSeq, tauFTFTauSeq, tauFTFTauCoreSeq, tauFTFTauIsoSeq, tauIDPrecSeq, tauTrackPrecSeq, tauTrackTwoPrecSeq, tauTrackTwoEFSeq, tauTrackTwoMVASeq, tauPreSelSeq, tauPreSelTTSeq, tauPrecTrackSeq, tauPrecTrackIsoSeq
+from TriggerMenuMT.HLTMenuConfig.Tau.TauMenuSequences import tauCaloMenuSeq, tauCaloMVAMenuSeq, tauFTFTauSeq, tauFTFTauCoreSeq, tauFTFTauIsoSeq, tauFTFTauIsoBDTSeq, tauIDPrecSeq, tauTrackPrecSeq, tauTrackTwoPrecSeq, tauTrackTwoEFSeq, tauTrackTwoMVASeq, tauPreSelSeq, tauPreSelTTSeq, tauPrecTrackSeq, tauPrecTrackIsoSeq
 
 #--------------------------------------------------------
 # fragments generating config will be functions in new JO
@@ -31,6 +31,9 @@ def getFTFCoreCfg(flags):
 def getFTFIsoCfg(flags):
     return tauFTFTauIsoSeq()
 
+def getFTFIsoBDTCfg(flags):
+    return tauFTFTauIsoBDTSeq()
+
 def getIDPrecCfg(flags):
     return tauIDPrecSeq()
 
@@ -78,11 +81,12 @@ class TauChainConfiguration(ChainConfigurationBase):
         # define here the names of the steps and obtain the chainStep configuration 
         # --------------------
         stepDictionary = {
-            "ptonly"     :['getCaloSeq'   , 'getFTFTau'  , 'getTrkEmpty' , 'getTauEmpty'  , 'getPrecTrack'    , 'getIDPrec'      ], 
-            "track"      :['getCaloSeq'   , 'getFTFTau'  , 'getTrkEmpty' , 'getPreSel'    , 'getPrecTrack'    , 'getTrackPrec'   ], 
-            "tracktwo"   :['getCaloSeq'   , 'getFTFCore' , 'getFTFIso'   , 'getPreSelTT'  , 'getPrecTrackIso' , 'getTrackTwoPrec'],
-            "tracktwoEF" :['getCaloSeq'   , 'getFTFCore' , 'getFTFIso'   , 'getTauEmpty'  , 'getPrecTrackIso' , 'getTrackTwoEF'  ],
-            "tracktwoMVA":['getCaloMVASeq', 'getFTFCore' , 'getFTFIso'   , 'getTauEmpty'  , 'getPrecTrackIso' , 'getTrackTwoMVA' ],
+            "ptonly"        :['getCaloSeq'   , 'getFTFTau'  , 'getTrkEmpty' , 'getTauEmpty'  , 'getPrecTrack'    , 'getIDPrec'      ], 
+            "track"         :['getCaloSeq'   , 'getFTFTau'  , 'getTrkEmpty' , 'getPreSel'    , 'getPrecTrack'    , 'getTrackPrec'   ], 
+            "tracktwo"      :['getCaloSeq'   , 'getFTFCore' , 'getFTFIso'   , 'getPreSelTT'  , 'getPrecTrackIso' , 'getTrackTwoPrec'],
+            "tracktwoEF"    :['getCaloSeq'   , 'getFTFCore' , 'getFTFIso'   , 'getTauEmpty'  , 'getPrecTrackIso' , 'getTrackTwoEF'  ],
+            "tracktwoMVA"   :['getCaloMVASeq', 'getFTFCore' , 'getFTFIso'   , 'getTauEmpty'  , 'getPrecTrackIso' , 'getTrackTwoMVA' ],
+            "tracktwoMVABDT":['getCaloMVASeq', 'getFTFCore' , 'getFTFIsoBDT', 'getTauEmpty'  , 'getPrecTrackIso' , 'getTrackTwoMVA' ],
         }
 
         # this should be extended by the signature expert to make full use of the dictionary!
@@ -121,6 +125,11 @@ class TauChainConfiguration(ChainConfigurationBase):
         stepName = 'FTFIso_tau'
         return self.getStep(3,stepName, [getFTFIsoCfg])
 
+    # --------------------                                                                                                                                                                         
+    def getFTFIsoBDT(self):
+        stepName = 'FTFIsoBDT_tau'
+        return self.getStep(3,stepName, [getFTFIsoBDTCfg])
+
     # --------------------                                                                                                                                   
     def getTrkEmpty(self):
         stepName = 'TrkEmpty_tau'
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauMenuSequences.py
index a9034d9331acf7cd12d9a0a0ac7c79339d616dfa..c53fce12f2418359f0965696dfff15d1ba9541be 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauMenuSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauMenuSequences.py
@@ -7,7 +7,7 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags
 # menu components   
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool
 
-from TriggerMenuMT.HLTMenuConfig.Tau.TauRecoSequences import tauCaloSequence, tauCaloMVASequence, tauFTFCoreSequence, tauFTFTauSequence, tauFTFIsoSequence, tauIDSequence, tauTrackSequence, tauTrackTwoSequence, tauEFSequence, tauMVASequence, tauPreSelSequence, tauPreSelTTSequence, tauPrecTrackSequence, tauPrecIsoTrackSequence
+from TriggerMenuMT.HLTMenuConfig.Tau.TauRecoSequences import tauCaloSequence, tauCaloMVASequence, tauFTFCoreSequence, tauFTFTauSequence, tauFTFIsoSequence, tauFTFIsoBDTSequence, tauIDSequence, tauTrackSequence, tauTrackTwoSequence, tauEFSequence, tauMVASequence, tauPreSelSequence, tauPreSelTTSequence, tauPrecTrackSequence, tauPrecIsoTrackSequence
 
 # ====================================================================================================  
 #    Get MenuSequences
@@ -120,6 +120,25 @@ def tauFTFTauIsoSeq():
                           Hypo        = fastTrkHypo,
                           HypoToolGen = TrigTauTrackHypoToolFromDict )
 
+# ===============================================================================================                                                                                                  
+#   Fast track finder (iso bdt) + Dummy Hypo step (tracktwoMVABDT)                                                                                                                                 
+# ===============================================================================================                                                                                                  
+
+def tauFTFTauIsoBDTSeq():
+    (sequence, ftfIsoBDTViewsMaker, sequenceOut) = RecoFragmentsPool.retrieve(tauFTFIsoBDTSequence,ConfigFlags )
+
+    from TrigTauHypo.TrigTauHypoConf import  TrigTrackPreSelHypoAlgMT
+    fastTrkHypo                 = TrigTrackPreSelHypoAlgMT("TrackPreSelHypoAlg_PassByIsoBDT")
+    fastTrkHypo.trackcollection = sequenceOut
+    fastTrkHypo.RoIForIDReadHandleKey = "UpdatedTrackBDTRoI"
+
+    from TrigTauHypo.TrigTauHypoTool import TrigTauTrackHypoToolFromDict
+
+    return  MenuSequence( Sequence    = sequence,
+                          Maker       = ftfIsoBDTViewsMaker,
+                          Hypo        = fastTrkHypo,
+                          HypoToolGen = TrigTauTrackHypoToolFromDict )
+
 
 # ===============================================================================================
 #     Precision tracking + Tau Precision Alg + EFMVHypo step   (pTonly)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py
index 8593e99dc6892021fc3225ddfa3238caece0dc3b..f69fbc8370abff462a298f9f036ddfeec8f3d644 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Tau/TauRecoSequences.py
@@ -23,9 +23,12 @@ def _getTauSignatureShort( name ):
     elif "FTFCore" in name:
       signature = 'tauCore'
       signatureID = 'tauCore'
-    elif "FTFIso" in name:
+    elif "IsoInView" in name:
       signature = 'tauIso'
       signatureID = 'tauIso'
+    elif "IsoBDT" in name:
+      signature = 'tauIsoBDT'
+      signatureID = 'tauIsoBDT'
     elif "TrackInView" in name:
       signature = 'tauTrk'
       signatureID = 'tauTau'
@@ -89,6 +92,17 @@ def _algoTauTrackRoiUpdater(inputRoIs, tracks):
     algo.RoIInputKey                   = inputRoIs
     algo.RoIOutputKey                  = "UpdatedTrackRoI"
     algo.fastTracksKey                 = tracks
+    algo.Key_trigTauJetInputContainer  = ""
+    return algo
+
+def _algoTauTrackBDTRoiUpdater(inputRoIs, tracks):
+    from TrigTauHypo.TrigTauHypoConf import TrigTauTrackRoiUpdaterMT
+    algo                               = TrigTauTrackRoiUpdaterMT("TrackRoiUpdaterBDT")
+    algo.RoIInputKey                   = inputRoIs
+    algo.RoIOutputKey                  = "UpdatedTrackBDTRoI"
+    algo.fastTracksKey                 = tracks
+    algo.useBDT                        = True
+    algo.Key_trigTauJetInputContainer  = "HLT_TrigTauRecMerged_CaloOnly"
     return algo
 
 def _algoTauPreselection(inputRoIs, tracks, step):
@@ -357,6 +371,8 @@ def tauFTFSequence( RoIs, name ):
 
     if 'Core' in signatureName:
       tauTrackRoiUpdaterAlg = _algoTauTrackRoiUpdater(inputRoIs = RoIs, tracks = TrackCollection)
+      tauTrackRoiUpdaterAlgBDT = _algoTauTrackBDTRoiUpdater(inputRoIs = RoIs, tracks = TrackCollection)
+      viewAlgs.append(tauTrackRoiUpdaterAlgBDT)
       viewAlgs.append(tauTrackRoiUpdaterAlg)
 
     tauFTFSequence += viewAlgs
@@ -444,6 +460,32 @@ def tauFTFIsoSequence(ConfigFlags):
     tauFastTrackIsoSequence = seqAND("tauFastTrackIsoSequence", [ftfIsoViewsMaker, tauFTFIsoInViewSequence ])
     return (tauFastTrackIsoSequence, ftfIsoViewsMaker, sequenceOut)
 
+# ===============================================================================================                                                                                                  
+#   Reco sequence for FTFTauIsoBDT (tracktwoMVABDT)                                                                                                                                                
+# ===============================================================================================                                                                                                  
+
+def tauFTFIsoBDTSequence(ConfigFlags):
+
+    RecoSequenceName                   = "tauFTFIsoBDTInViewSequence"
+
+    newRoITool                         = ViewCreatorFetchFromViewROITool()
+    newRoITool.RoisWriteHandleKey      = recordable("HLT_Roi_TauIsoBDT") #RoI collection recorded to EDM                                                                                           
+    newRoITool.InViewRoIs              = "UpdatedTrackBDTRoI" #input RoIs from calo only step                                                                                                      
+
+    ftfIsoViewsMaker                   = EventViewCreatorAlgorithm("IMFTFIsoBDT")
+    ftfIsoViewsMaker.RoIsLink          = "roi"
+    ftfIsoViewsMaker.RoITool           = newRoITool
+    ftfIsoViewsMaker.InViewRoIs        = "RoiForTauIsoBDT"
+    ftfIsoViewsMaker.Views             = "TAUFTFIsoBDTViews"
+    ftfIsoViewsMaker.ViewFallThrough   = True
+    ftfIsoViewsMaker.RequireParentView = True
+    ftfIsoViewsMaker.ViewNodeName      = RecoSequenceName
+
+    (tauFTFIsoBDTInViewSequence, sequenceOut) = tauFTFSequence( ftfIsoViewsMaker.InViewRoIs, RecoSequenceName)
+
+    tauFastTrackIsoBDTSequence = seqAND("tauFastTrackIsoBDTSequence", [ftfIsoViewsMaker, tauFTFIsoBDTInViewSequence ])
+    return (tauFastTrackIsoBDTSequence, ftfIsoViewsMaker, sequenceOut)
+
 
 # ===============================================================================================                                                            
 #   Reco sequence for PreSelection algorithm (track)