diff --git a/Control/StoreGate/StoreGate/StoreGate.h b/Control/StoreGate/StoreGate/StoreGate.h
deleted file mode 100644
index d0999a5db85b67723cb1e7774c1c74f696d86304..0000000000000000000000000000000000000000
--- a/Control/StoreGate/StoreGate/StoreGate.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef STOREGATE_STOREGATE_H
-#define STOREGATE_STOREGATE_H
-
-/** @class StoreGate
- *  @brief a multipleton that provides access to StoreGateSvc instances
- *  @author ATLAS Collaboration
- *  $Id: StoreGate.h,v 1.10 2003-04-16 01:58:11 calaf Exp $
- **/
-
-#include "StoreGate/StoreGateSvc.h"
-#include <string>
-
-class NullType;
-class ActiveStoreSvc;
-
-class StoreGate {
-public:
-  /// returns active store ptr (see ActiveStoreSvc). Can be slow: use sparingly
-  static StoreGateSvc* pointer();
-  /// returns active store ref (see ActiveStoreSvc). Can be slow: use sparingly
-  static StoreGateSvc& instance();
-  /// returns ptr to ActiveStoreSvc. Cache it and use it to access active store
-  /// multiple times
-  static ActiveStoreSvc* activeStoreSvc();
-  /** multipleton: get a store by name
-   * @param sgID name of the StoreGateSvc ptr to be returned */ 
-  static StoreGateSvc* pointer(const std::string& sgID); 
-  /** multipleton: get a store by name
-   *  @param sgID name of the StoreGateSvc ptr to be returned 
-   *  @throws std::runtime_error if not found*/ 
-  static StoreGateSvc& instance(const std::string& sgID);
-  
-  friend class NullType; //remove compiler warning
-
-protected:
-  ~StoreGate(); //FIXME avoid compiler warning for private
-private:
-  //standard singleton stuff
-  StoreGate();
-  StoreGate(StoreGate&);
-  StoreGate& operator=(const StoreGate&);
-};
-#endif // STOREGATE_STOREGATE_H
-
-
-
-
-
diff --git a/Control/StoreGate/src/StoreGate.cxx b/Control/StoreGate/src/StoreGate.cxx
deleted file mode 100644
index 7d3bccb215702adc027ae0d3a404656c4d5688a3..0000000000000000000000000000000000000000
--- a/Control/StoreGate/src/StoreGate.cxx
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "StoreGate/StoreGate.h"
-#include "StoreGate/ActiveStoreSvc.h"
-#include "StoreGate/tools/hash_functions.h"
-
-#include <exception>
-#include <iostream>
-
-#include "GaudiKernel/Bootstrap.h"
-#include "GaudiKernel/Kernel.h"
-#include "GaudiKernel/ISvcLocator.h"
-#include "GaudiKernel/IService.h"
-
-using namespace std;
-
-ActiveStoreSvc* 
-getActiveStoreSvc() {
-  ActiveStoreSvc* pASG(0);
-  static const bool CREATEIF(true);
-  if ((Gaudi::svcLocator()->service("ActiveStoreSvc", pASG, CREATEIF)).isSuccess()) {
-    pASG->addRef(); //FIXME WHO RELEASES?
-    return pASG; 
-  } else {
-#ifndef NDEBUG
-    cerr << __FILE__ << ':' << __LINE__ << ":   "
-         << "ERROR Could not locate ActiveStoreSvc " <<endl;
-#endif
-    return 0;
-  }
-}
-
-StoreGateSvc* 
-getStore() {
-  ActiveStoreSvc* pASG(0);
-  StoreGateSvc* pSG(0);
-  static const bool CREATEIF(true);
-  if ((Gaudi::svcLocator()->service("ActiveStoreSvc", pASG, CREATEIF)).isSuccess() &&
-      0 != (pSG = pASG->operator->())) {
-    pSG->addRef(); //FIXME WHO RELEASES?
-    return pSG; 
-  } else {
-#ifndef NDEBUG
-    cerr << __FILE__ << ':' << __LINE__ << ":   "
-         << "ERROR Could not locate active StoreGate " <<endl;
-#endif
-    return 0;
-  }
-}
-
-StoreGateSvc* 
-getStore(std::string name) {
-  StoreGateSvc* pSGService(0);
-  static const bool CREATEIF(true);
-  if ((Gaudi::svcLocator()->service(name, pSGService, CREATEIF)).isSuccess()) {
-    pSGService->addRef();
-    return pSGService;
-  } else {
-#ifndef NDEBUG
-    cerr << __FILE__ << ':' << __LINE__ << ":   "
-         << "ERROR Could not locate StoreGate "
-         << "instance named " << name << endl;
-#endif
-    return 0;
-  }
-}
-
-StoreGateSvc*
-StoreGate::pointer() {
-  return getStore();
-}
-
-
-StoreGateSvc& 
-StoreGate::instance() { 
-  StoreGateSvc* ptr(pointer());
-  if (0 == ptr) {
-    throw std::runtime_error("Could not locate active StoreGate ");
-  }
-  return *ptr;
-}
-
-ActiveStoreSvc*
-StoreGate::activeStoreSvc() {
-  return getActiveStoreSvc();
-}
-
-StoreGateSvc*
-StoreGate::pointer(const std::string& sgID) {
-  return getStore(sgID);
-}
-
-
-StoreGateSvc& 
-StoreGate::instance(const std::string& sgID) {
-  StoreGateSvc* ptr(pointer(sgID));
-  if (0 == ptr) {
-    throw std::runtime_error("Could not locate required StoreGate instance");
-  }
-  return *ptr;
-}
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Control/StoreGate/test/SGtests.cxx b/Control/StoreGate/test/SGtests.cxx
index 543899ef3cfc57fd636beab9c5bccdd37783ecbf..c06235924c0ed51f47c092872ef0484e9ad3bf56 100644
--- a/Control/StoreGate/test/SGtests.cxx
+++ b/Control/StoreGate/test/SGtests.cxx
@@ -32,7 +32,6 @@
 #include "StoreGate/SGWPtr.h"
 #include "StoreGate/WriteHandle.h"
 #include "StoreGate/ReadHandle.h"
-#include "StoreGate/StoreGate.h"
 #include "StoreGate/StoreGateSvc.h"
 #include "SGTools/DataStore.h"
 #include "SGTools/SGVersionedKey.h"
diff --git a/Control/StoreGate/test/WriteCondHandle_test.cxx b/Control/StoreGate/test/WriteCondHandle_test.cxx
index 7a8329f150838affa86528a5902b39129fd3969a..2bd75d599174f4a72e19d232c2ce52d3c7b142da 100644
--- a/Control/StoreGate/test/WriteCondHandle_test.cxx
+++ b/Control/StoreGate/test/WriteCondHandle_test.cxx
@@ -23,7 +23,7 @@
 #include "AthenaKernel/errorcheck.h"
 #include "AthenaKernel/ExtendedEventContext.h"
 #include "CxxUtils/checker_macros.h"
-#include "StoreGate/StoreGate.h"
+#include "StoreGate/StoreGateSvc.h"
 #include <cassert>
 #include <iostream>
 
diff --git a/Database/RDBAccessSvc/src/RDBAccessSvc.cxx b/Database/RDBAccessSvc/src/RDBAccessSvc.cxx
index edcfb9e4ce7c080877895df3da41b961d39bc544..94418c743f995e5a8d943628d7ca7fafe5736095 100755
--- a/Database/RDBAccessSvc/src/RDBAccessSvc.cxx
+++ b/Database/RDBAccessSvc/src/RDBAccessSvc.cxx
@@ -17,17 +17,10 @@
 #include "RDBVersionAccessor.h"
 #include "RDBQuery.h"
 
-#include "RelationalAccess/RelationalServiceException.h"
-#include "RelationalAccess/SchemaException.h"
-#include "RelationalAccess/SessionException.h"
-#include "RelationalAccess/IRelationalService.h"
-#include "RelationalAccess/IRelationalDomain.h"
 #include "RelationalAccess/ISessionProxy.h"
 #include "RelationalAccess/ITransaction.h"
 #include "RelationalAccess/SchemaException.h"
 #include "RelationalAccess/ConnectionService.h"
-#include "RelationalAccess/IConnectionService.h"
-#include "RelationalAccess/AccessMode.h"
 #include "RelationalAccess/ICursor.h"
 #include "RelationalAccess/ITable.h"
 #include "RelationalAccess/ISchema.h"
@@ -36,14 +29,11 @@
 #include "CxxUtils/checker_macros.h"
 
 #include "CoralBase/Exception.h"
-#include "RelationalAccess/AuthenticationServiceException.h"
-
-#include "GaudiKernel/ServiceHandle.h"
 
 #include <thread>
 
-RDBAccessSvc::RDBAccessSvc(const std::string& name, ISvcLocator* svc):
-  AthService(name,svc)
+RDBAccessSvc::RDBAccessSvc(const std::string& name, ISvcLocator* svc)
+  : AthService(name,svc)
 {
 }
 
@@ -53,6 +43,7 @@ RDBAccessSvc::~RDBAccessSvc()
 
 bool RDBAccessSvc::connect(const std::string& connName)
 {
+  std::lock_guard<std::mutex> guard(m_sessionMutex);
   // Check if it is the first attempt to open a connection connName
   if(m_sessions.find(connName)==m_sessions.end()) {
     ATH_MSG_DEBUG(" Trying to open the connection " << connName << " for the first time");
@@ -62,7 +53,7 @@ bool RDBAccessSvc::connect(const std::string& connName)
     // 3. Recordset by connection
     m_sessions[connName] = 0;
     m_openConnections[connName] = 0;
-    m_recordsetptrs[connName] = new RecordsetPtrMap();
+    m_recordsetptrs.emplace(connName,RecordsetPtrMap());
   }
 
   // Use existing Connection Proxy if available
@@ -76,6 +67,7 @@ bool RDBAccessSvc::connect(const std::string& connName)
   coral::ISessionProxy *proxy = 0;
   try {
     proxy = conSvcH.connect(connName,coral::ReadOnly);
+    proxy->transaction().start(true);
     ATH_MSG_DEBUG("Proxy for connection "  << connName << " obtained");
   }
   catch(std::exception& e) {
@@ -91,28 +83,27 @@ bool RDBAccessSvc::connect(const std::string& connName)
 
 bool RDBAccessSvc::disconnect(const std::string& connName)
 {
-  if(m_openConnections.find(connName)==m_openConnections.end()) {
+  auto connection = m_openConnections.find(connName);
+  if(connection==m_openConnections.end()) {
     ATH_MSG_ERROR("Wrong name for the connection: " << connName);
     return false;
   }
 
-  if(m_openConnections[connName]>0) {
-    m_openConnections[connName]--;
+  std::lock_guard<std::mutex> guard(m_sessionMutex); 
+  if(connection->second>0) {
+    connection->second--;
     
-    ATH_MSG_DEBUG("Connection " << connName << " Sessions = " << m_openConnections[connName]);
-
-    if(m_openConnections[connName]==0) {
-      if(m_sessions.find(connName)!=m_sessions.end()) {
-	delete m_sessions[connName];
-	m_sessions[connName] = 0;
+    ATH_MSG_DEBUG("Connection " << connName << " Sessions = " << connection->second);
+
+    if(connection->second==0) {
+      auto session = m_sessions.find(connName);
+      if(session!=m_sessions.end()) {
+	session->second->transaction().commit();
+	delete session->second;
+	session->second = nullptr;
       }
       
       ATH_MSG_DEBUG(connName << " Disconnected!");
-
-      // clean up all shared recordsets for this connection
-      if(m_recordsetptrs.find(connName)!=m_recordsetptrs.end()) {
-	m_recordsetptrs[connName]->clear();
-      }
     }
   }
   return true;
@@ -123,8 +114,10 @@ bool RDBAccessSvc::shutdown(const std::string& connName)
   if(connName=="*Everything*") {
     for(const auto& ii : m_openConnections) {
       if(ii.second != 0) {
-	ATH_MSG_WARNING("Close everything: Connection: " << ii.first << " with reference count = " << ii.second << " will be closed.");
-	return shutdown_connection(ii.first);
+	ATH_MSG_INFO("Close everything: Connection: " << ii.first << " with reference count = " << ii.second << " will be closed.");
+	if(!shutdown_connection(ii.first)) {
+	  return false;
+	}
       }
     }
     return true;
@@ -135,33 +128,31 @@ bool RDBAccessSvc::shutdown(const std::string& connName)
 
 bool RDBAccessSvc::shutdown_connection(const std::string& connName)
 {
-  if(m_openConnections.find(connName)==m_openConnections.end()) {
+  auto connection = m_openConnections.find(connName);
+  if(connection==m_openConnections.end()) {
     ATH_MSG_ERROR("Wrong name for the connection: " << connName);
     return false;
   }
-
-  m_openConnections[connName]=0;
+  std::lock_guard<std::mutex> guard(m_sessionMutex);
+  connection->second = 0;
   
-  ATH_MSG_DEBUG("Connection " << connName << " Sessions = " << m_openConnections[connName]);
-  if(m_sessions.find(connName)!=m_sessions.end()) {
-    delete m_sessions[connName];
-    m_sessions[connName] = 0;
+  auto session = m_sessions.find(connName);
+  if(session!=m_sessions.end() 
+     && session->second) {
+    session->second->transaction().commit();
+    delete session->second;
+    session->second = nullptr;
   }
   
   ATH_MSG_DEBUG(connName << " Disconnected!");
 
-  // clean up all shared recordsets for this connection
-  if(m_recordsetptrs.find(connName)!=m_recordsetptrs.end()) {
-    m_recordsetptrs[connName]->clear();
-  }
-
   return true;
 }
 
-IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node,
-						const std::string& tag,
-						const std::string& tag2node,
-						const std::string& connName)
+IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node
+						, const std::string& tag
+						, const std::string& tag2node
+						, const std::string& connName)
 {
   std::string key = node + "::" + tag;
   if(tag2node!="")
@@ -169,15 +160,15 @@ IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node,
 
   ATH_MSG_DEBUG("Getting RecordsetPtr with key " << key);
 
-  std::lock_guard<std::mutex> guard(m_mutex);
+  std::lock_guard<std::mutex> guard(m_recordsetMutex);
   if(!connect(connName)) {
     ATH_MSG_ERROR("Unable to open connection " << connName << ". Returning empty recordset");
     return IRDBRecordset_ptr(new RDBRecordset(this));
   }
 
-  RecordsetPtrMap* recordsets = m_recordsetptrs[connName];
-  RecordsetPtrMap::const_iterator it = recordsets->find(key);
-  if(it != recordsets->end()) {
+  RecordsetPtrMap& recordsets = m_recordsetptrs[connName];
+  RecordsetPtrMap::const_iterator it = recordsets.find(key);
+  if(it != recordsets.end()) {
     ATH_MSG_DEBUG("Reusing existing recordset");
     disconnect(connName);
     return it->second;
@@ -188,9 +179,6 @@ IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node,
   coral::ISessionProxy* session = m_sessions[connName];
 
   try {
-    // Start new readonly transaction
-    session->transaction().start(true);
-
     // Check lookup table first
     std::string lookupMapKey = tag + "::" + connName;
     GlobalTagLookupMap::const_iterator lookupmap = m_globalTagLookup.find(lookupMapKey);
@@ -209,9 +197,6 @@ IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node,
       versionAccessor.getChildTagData();
       recConcrete->getData(session,versionAccessor.getNodeName(),versionAccessor.getTagName(),versionAccessor.getTagID());
     }
-	
-    // Finish the transaction
-    session->transaction().commit();
   }
   catch(coral::SchemaException& se) {
     ATH_MSG_ERROR("Schema Exception : " << se.what());
@@ -223,18 +208,18 @@ IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node,
     ATH_MSG_ERROR("Exception caught(...)");
   }
 
-  (*recordsets)[key] = rec;
+  recordsets.emplace(key,rec);
   disconnect(connName);
   return rec;
 }
 
-std::unique_ptr<IRDBQuery> RDBAccessSvc::getQuery(const std::string& node,
-						  const std::string& tag,
-						  const std::string& tag2node,
-						  const std::string& connName)
+std::unique_ptr<IRDBQuery> RDBAccessSvc::getQuery(const std::string& node
+						  , const std::string& tag
+						  , const std::string& tag2node
+						  , const std::string& connName)
 {
   ATH_MSG_DEBUG("getQuery (" << node << "," << tag << "," << tag2node << "," << connName << ")");
-  std::lock_guard<std::mutex> guard(m_mutex);
+  std::lock_guard<std::mutex> guard(m_recordsetMutex);
 
   std::unique_ptr<IRDBQuery> query;
 
@@ -257,22 +242,16 @@ std::unique_ptr<IRDBQuery> RDBAccessSvc::getQuery(const std::string& node,
       }
     }
     else {
-      // Start new readonly transaction
-      session->transaction().start(true);
-
       RDBVersionAccessor versionAccessor{node,(tag2node.empty()?node:tag2node),tag,session,msg()};
       versionAccessor.getChildTagData();
       childTagId = versionAccessor.getTagID();
-      
-      // Finish the transaction
-      session->transaction().commit();
     }
 
     if(childTagId.empty()) {
       ATH_MSG_WARNING("Could not get the tag for " << node << " node. Returning 0 pointer to IRDBQuery");
     }
     else {
-      query = std::unique_ptr<IRDBQuery>(new RDBQuery(this,session,node,childTagId,connName));
+      query = std::unique_ptr<IRDBQuery>(new RDBQuery(this,node,childTagId,connName));
     }
   }
   catch(coral::SchemaException& se) {
@@ -289,10 +268,10 @@ std::unique_ptr<IRDBQuery> RDBAccessSvc::getQuery(const std::string& node,
   return query;
 }
 
-std::string RDBAccessSvc::getChildTag(const std::string& childNode,
-				      const std::string& parentTag,
-				      const std::string& parentNode,
-				      const std::string& connName)
+std::string RDBAccessSvc::getChildTag(const std::string& childNode
+				      , const std::string& parentTag
+				      , const std::string& parentNode
+				      , const std::string& connName)
 {
   return getChildTag(childNode
 		     , parentTag
@@ -301,14 +280,14 @@ std::string RDBAccessSvc::getChildTag(const std::string& childNode,
 		     , false);
 }
 
-std::string RDBAccessSvc::getChildTag(const std::string& childNode,
-				      const std::string& parentTag,
-				      const std::string& parentNode,
-				      const std::string& connName,
-				      bool force)
+std::string RDBAccessSvc::getChildTag(const std::string& childNode
+				      , const std::string& parentTag
+				      , const std::string& parentNode
+				      , const std::string& connName
+				      , bool force)
 {
   ATH_MSG_DEBUG("getChildTag for " << childNode << " " << parentTag << " " << parentNode);
-  std::lock_guard<std::mutex> guard(m_mutex);
+  std::lock_guard<std::mutex> guard(m_recordsetMutex);
 
   // Check lookup table first
   std::string lookupMapKey = parentTag + "::" + connName;
@@ -333,15 +312,9 @@ std::string RDBAccessSvc::getChildTag(const std::string& childNode,
   std::string childTag("");
   try {
     // We don't have lookup table for given parent tag. Go into slow mode through Version Accessor
-    // Start new readonly transaction
     coral::ISessionProxy* session = m_sessions[connName];
-    session->transaction().start(true);
-
     RDBVersionAccessor versionAccessor(childNode,parentNode,parentTag,session,msg());
     versionAccessor.getChildTagData();
-	      
-    // Finish the transaction
-    session->transaction().commit(); 
 
     childTag = versionAccessor.getTagName();
   }
@@ -360,12 +333,12 @@ std::string RDBAccessSvc::getChildTag(const std::string& childNode,
   return childTag;
 }
 
-void RDBAccessSvc::getTagDetails(RDBTagDetails& tagDetails,
-                                 const std::string& tag,
-                                 const std::string& connName)
+void RDBAccessSvc::getTagDetails(RDBTagDetails& tagDetails
+                                 , const std::string& tag
+                                 , const std::string& connName)
 {
   ATH_MSG_DEBUG("getTagDetails for tag: " << tag);
-  std::lock_guard<std::mutex> guard(m_mutex);
+  std::lock_guard<std::mutex> guard(m_recordsetMutex);
 
   if(!connect(connName)) {
     ATH_MSG_ERROR("Failed to open connection " << connName);
@@ -373,9 +346,6 @@ void RDBAccessSvc::getTagDetails(RDBTagDetails& tagDetails,
 
   coral::ISessionProxy* session = m_sessions[connName];
   try {
-    // Start new readonly transaction
-    session->transaction().start(true);
-	
     coral::ITable& tableTag2Node = session->nominalSchema().tableHandle("HVS_TAG2NODE");
     coral::IQuery *queryTag2Node = tableTag2Node.newQuery();
     queryTag2Node->addToOutputList("LOCKED");
@@ -426,10 +396,6 @@ void RDBAccessSvc::getTagDetails(RDBTagDetails& tagDetails,
 	delete lookup;
       }
     }
-    // Finish the transaction
-    if(session->transaction().isActive()) {
-      session->transaction().commit();
-    }
   }
   catch(coral::SchemaException& se) {
     ATH_MSG_INFO("Schema Exception : " << se.what());
@@ -444,8 +410,8 @@ void RDBAccessSvc::getTagDetails(RDBTagDetails& tagDetails,
   disconnect(connName);
 }
 
-void RDBAccessSvc::getAllLeafNodes(std::vector<std::string>& list,
-				   const std::string& connName)
+void RDBAccessSvc::getAllLeafNodes(std::vector<std::string>& list
+				   , const std::string& connName)
 {
   list.clear();
   if(!connect(connName)) {
@@ -455,9 +421,6 @@ void RDBAccessSvc::getAllLeafNodes(std::vector<std::string>& list,
 
   coral::ISessionProxy* session = m_sessions[connName];
   try {
-    // Start new readonly transaction
-    session->transaction().start(true);
-
     coral::ITable& tableNode = session->nominalSchema().tableHandle("HVS_NODE");
     coral::IQuery *queryNode = tableNode.newQuery();
     queryNode->addToOutputList("NODE_NAME");
@@ -472,11 +435,6 @@ void RDBAccessSvc::getAllLeafNodes(std::vector<std::string>& list,
     }
     
     delete queryNode;
-
-    // Finish the transaction
-    if(session->transaction().isActive()) {
-      session->transaction().commit();
-    }
   }
   catch(coral::SchemaException& se) {
     ATH_MSG_INFO("Schema Exception : " << se.what());
@@ -536,6 +494,12 @@ std::vector<std::string> RDBAccessSvc::getLockedSupportedTags(const std::string&
   return taglist;
 }
 
+coral::ISessionProxy* RDBAccessSvc::getSession(const std::string& connName)
+{
+  auto sessionIt = m_sessions.find(connName);
+  return sessionIt == m_sessions.end() ? nullptr : sessionIt->second;
+}
+
 StatusCode RDBAccessSvc::initialize()
 {
   return StatusCode::SUCCESS;
@@ -543,12 +507,6 @@ StatusCode RDBAccessSvc::initialize()
 
 StatusCode RDBAccessSvc::finalize()
 {
-  // Clean up all remaining recordsets
-  RecordsetPtrsByConn::iterator first_ptr_map = m_recordsetptrs.begin();
-  RecordsetPtrsByConn::iterator last_ptr_map = m_recordsetptrs.end();
-  for(;first_ptr_map!=last_ptr_map;++first_ptr_map) {
-    delete first_ptr_map->second;
-  }
   m_recordsetptrs.clear();
 
   // Clear global tag lookup table
diff --git a/Database/RDBAccessSvc/src/RDBAccessSvc.h b/Database/RDBAccessSvc/src/RDBAccessSvc.h
index 1c326c0beef3e8716b48f4e86171767364d83164..317ac855f80eeb2e72ff8982b1ef15a7415c4f7f 100755
--- a/Database/RDBAccessSvc/src/RDBAccessSvc.h
+++ b/Database/RDBAccessSvc/src/RDBAccessSvc.h
@@ -18,7 +18,6 @@
 #include "RDBAccessSvc/IRDBAccessSvc.h"
 #include "RDBRecordset.h"
 
-#include "Gaudi/Property.h"
 #include "AthenaBaseComps/AthService.h"
 
 #include <string>
@@ -30,7 +29,6 @@ class RDBRecordset;
 namespace coral 
 {
   class ISessionProxy;
-  class IRelationalService;
 }
 
 template <class TYPE> class SvcFactory;
@@ -40,10 +38,10 @@ template <class TYPE> class SvcFactory;
 typedef std::map<std::string, IRDBRecordset_ptr> RecordsetPtrMap;
 
 // Pointers to recordset maps by connection name
-typedef std::map<std::string, RecordsetPtrMap*> RecordsetPtrsByConn;
+typedef std::map<std::string, RecordsetPtrMap> RecordsetPtrsByConn;
 
 // Session map
-typedef std::map<std::string, coral::ISessionProxy*, std::less<std::string> > SessionMap;
+typedef std::map<std::string, coral::ISessionProxy*> SessionMap;
 
 // Lookup table for global tag contents quick access
 typedef std::pair<std::string, std::string> TagNameId;
@@ -59,9 +57,18 @@ typedef std::map<std::string, TagNameIdByNode*> GlobalTagLookupMap; // Key - <Gl
 
 class RDBAccessSvc final : public AthService, virtual public IRDBAccessSvc 
 {
-  friend class RDBRecordset;
-
  public:
+  /// Standard Service Constructor
+  RDBAccessSvc(const std::string& name, ISvcLocator* svc);
+
+  /// Standard Service Destructor
+  ~RDBAccessSvc() override;
+
+  StatusCode initialize() override;
+  StatusCode finalize() override;
+  StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface ) override;
+
+  friend class SvcFactory<RDBAccessSvc>;
 
   /// Retrieve interface ID
   static const InterfaceID& interfaceID() { return IID_IRDBAccessSvc; }
@@ -87,10 +94,10 @@ class RDBAccessSvc final : public AthService, virtual public IRDBAccessSvc
   /// tag of the HVS branch node specified by tag2node otherwise
   /// @param tag2node [IN] some parent of the HVS leaf node specified by node parameter
   /// @return pointer to the recordset object
-  IRDBRecordset_ptr getRecordsetPtr(const std::string& node,
-					    const std::string& tag,
-					    const std::string& tag2node="",
-					    const std::string& connName = "ATLASDD") override;
+  IRDBRecordset_ptr getRecordsetPtr(const std::string& node
+				    , const std::string& tag
+				    , const std::string& tag2node=""
+				    , const std::string& connName = "ATLASDD") override;
 
   /// Gets the tag name for the node by giving its parent node tag
   /// @param childNode [IN] name of the child node
@@ -98,53 +105,44 @@ class RDBAccessSvc final : public AthService, virtual public IRDBAccessSvc
   /// @param parentNode [IN] name of the parent node
   /// @param fetchData [IN] if true fetch the corresponding data
   /// this parameter has no sence if child is the branch node
-  std::string getChildTag(const std::string& childNode,
-				  const std::string& parentTag,
-				  const std::string& parentNode,
-				  const std::string& connName) override;
+  std::string getChildTag(const std::string& childNode
+			  , const std::string& parentTag
+			  , const std::string& parentNode
+			  , const std::string& connName) override;
 
-  std::string getChildTag(const std::string& childNode,
-			  const std::string& parentTag,
-			  const std::string& parentNode,
-			  const std::string& connName,
-			  bool force);
+  std::string getChildTag(const std::string& childNode
+			  , const std::string& parentTag
+			  , const std::string& parentNode
+			  , const std::string& connName
+			  , bool force);
 
-  std::unique_ptr<IRDBQuery> getQuery(const std::string& node,
-				      const std::string& tag,
-				      const std::string& tag2node,
-				      const std::string& connName) override;
+  std::unique_ptr<IRDBQuery> getQuery(const std::string& node
+				      , const std::string& tag
+				      , const std::string& tag2node
+				      , const std::string& connName) override;
 
-  void getTagDetails(RDBTagDetails& tagDetails,
-                     const std::string& tag,
-                     const std::string& connName = "ATLASDD") override;
+  void getTagDetails(RDBTagDetails& tagDetails
+		     , const std::string& tag
+		     , const std::string& connName = "ATLASDD") override;
 
-  void getAllLeafNodes(std::vector<std::string>& list,
-		       const std::string& connName = "ATLASDD");
+  void getAllLeafNodes(std::vector<std::string>& list
+		       , const std::string& connName = "ATLASDD");
 
   std::vector<std::string> getLockedSupportedTags(const std::string& connName = "ATLASDD");
 
-  inline MsgStream& msgStream() { return msg(); }
+  coral::ISessionProxy* getSession(const std::string& connName = "ATLASDD");
 
-  StatusCode initialize() override;
-  StatusCode finalize() override;
-  StatusCode queryInterface( const InterfaceID& riid, void** ppvInterface ) override;
-
-  friend class SvcFactory<RDBAccessSvc>;
-
-  /// Standard Service Constructor
-  RDBAccessSvc(const std::string& name, ISvcLocator* svc);
-
-  /// Standard Service Destructor
-  ~RDBAccessSvc() override;
+  inline MsgStream& msgStream() { return msg(); }
 
 private:
   SessionMap m_sessions;
-  std::map<std::string, unsigned int, std::less<std::string> > m_openConnections;
+  std::map<std::string, unsigned int> m_openConnections;
 
   RecordsetPtrsByConn m_recordsetptrs;  
   GlobalTagLookupMap m_globalTagLookup;
 
-  std::mutex m_mutex;
+  std::mutex m_recordsetMutex;
+  std::mutex m_sessionMutex;
 
   bool shutdown_connection(const std::string& connName);
 };
diff --git a/Database/RDBAccessSvc/src/RDBQuery.cxx b/Database/RDBAccessSvc/src/RDBQuery.cxx
index 008e905ceac8f0dca128640004a316ea8a5a02c1..0f13635e94fe544f631c033d684576f8a0af65be 100755
--- a/Database/RDBAccessSvc/src/RDBQuery.cxx
+++ b/Database/RDBAccessSvc/src/RDBQuery.cxx
@@ -5,12 +5,10 @@
 #include "RDBQuery.h"
 #include "RDBAccessSvc.h"
 #include <stdexcept>
-#include <iostream>
 
 #include "RelationalAccess/ICursor.h"
 #include "RelationalAccess/IQuery.h"
 #include "RelationalAccess/ISessionProxy.h"
-#include "RelationalAccess/ITransaction.h"
 #include "RelationalAccess/ISchema.h"
 #include "RelationalAccess/ITable.h"
 #include "RelationalAccess/ITableDescription.h"
@@ -24,25 +22,20 @@
 #include "CxxUtils/checker_macros.h"
 
 RDBQuery::RDBQuery(RDBAccessSvc* accessSvc
-		   , coral::ISessionProxy* session
 		   , const std::string& nodeName
 		   , const std::string& tagId
 		   , const std::string& connName)
-   : IRDBQuery()
-   , m_query(0)
-   , m_queryCount(0)
-   , m_accessSvc(accessSvc)
-   , m_session(session)
-   , m_nodeName(nodeName)
-   , m_tagId(tagId)
-   , m_connName(connName)
-   , m_size(0)
-   , m_cursor(0)
+  : IRDBQuery()
+  , m_query(nullptr)
+  , m_queryCount(nullptr)
+  , m_accessSvc(accessSvc)
+  , m_nodeName(nodeName)
+  , m_tagId(tagId)
+  , m_connName(connName)
+  , m_size(0)
+  , m_cursor(nullptr)
+  , m_executed(false)
 {
-  if (!m_accessSvc->connect(m_connName)) {
-    m_accessSvc->msg() << MSG::ERROR << "Can't connect to database: "
-                       << connName << endmsg;
-  }
 }
 
 RDBQuery::~RDBQuery()
@@ -53,17 +46,30 @@ RDBQuery::~RDBQuery()
 
 void RDBQuery::execute()
 {
-  if(m_accessSvc->msg().level() <= MSG::DEBUG)
+  if(m_executed) {
+    m_accessSvc->msg() << MSG::WARNING << "RDBQuery cannot be executed more than once! Query: "
+		       << m_nodeName << ", "
+		       << m_tagId << ", "
+		       << m_orderField << ", "
+		       << m_fields.size() << endmsg;
+    return;
+  }
+
+  if(m_accessSvc->msg().level() <= MSG::DEBUG) {
     m_accessSvc->msg() << MSG::DEBUG << "Query execute " << m_nodeName << ", "
 		       << m_tagId << ", "
 		       << m_orderField << ", "
 		       << m_fields.size() << endmsg;
+  }
 
-  try
-  {
-    // ... Start readonly transaction
-    m_session->transaction().start(true); 
+  if (!m_accessSvc->connect(m_connName)) {
+    m_accessSvc->msg() << MSG::ERROR << "Cannot connect to the database: "
+                       << m_connName << endmsg;
+    throw std::runtime_error( "Cannot connect to the database " + m_connName);
+  }
 
+  m_executed=true;
+  try {
     // ... Get the node name and change to to Upper Case
     std::string upperName = m_nodeName;
     std::string::iterator it = upperName.begin();
@@ -73,20 +79,22 @@ void RDBQuery::execute()
     }
 
     // ... Create query objects
-    m_query = m_session->nominalSchema().newQuery();
-    m_queryCount = m_session->nominalSchema().newQuery();
+    m_query = m_accessSvc->getSession(m_connName)->nominalSchema().newQuery();
+    m_queryCount = m_accessSvc->getSession(m_connName)->nominalSchema().newQuery();
 
     // Add fields
     if(m_fields.size()>0) {
       // Custom fields
-      for(unsigned int i=0; i<m_fields.size(); ++i)
+      for(unsigned int i=0; i<m_fields.size(); ++i) {
 	m_query->addToOutputList(upperName+"_DATA."+m_fields[i]);
+      }
     }
     else {
       // All fields from the table
-      const coral::ITableDescription& dataTableDesc = m_session->nominalSchema().tableHandle(upperName + "_DATA").description();
-      for(int i=0; i<dataTableDesc.numberOfColumns(); ++i)
+      const coral::ITableDescription& dataTableDesc = m_accessSvc->getSession(m_connName)->nominalSchema().tableHandle(upperName + "_DATA").description();
+      for(int i=0; i<dataTableDesc.numberOfColumns(); ++i) {
 	m_query->addToOutputList(upperName+"_DATA."+dataTableDesc.columnDescription(i).name());
+      }
     }
 
     m_queryCount->addToOutputList("COUNT("+upperName+"_DATA_ID)","SUMREC");
@@ -98,10 +106,12 @@ void RDBQuery::execute()
     m_queryCount->addToTableList(upperName + "_DATA2TAG");    
 
     // ... Define order
-    if(m_orderField.empty())
+    if(m_orderField.empty()) {
       m_query->addToOrderList(upperName + "_DATA." + upperName + "_DATA_ID");
-    else
+    }
+    else {
       m_query->addToOrderList(upperName + "_DATA." + m_orderField);
+    }
 
     // ... Define conditions
     coral::AttributeList bindsData ATLAS_THREAD_SAFE;
@@ -127,7 +137,6 @@ void RDBQuery::execute()
 
     // ... Get the data cursor
     m_cursor = &(m_query->execute());
-
     return;
   }
   catch(coral::SchemaException& se) {
@@ -150,21 +159,7 @@ long RDBQuery::size()
 
 void RDBQuery::finalize()
 {
-  if(m_cursor)
-    m_cursor->close();
-
-  if(m_session) {
-    try {
-      // finish the transaction
-      m_session->transaction().commit();
-    }
-    catch(std::exception& e) {
-      m_accessSvc->msg() << MSG::WARNING << "QUERY Finalize: Exception : " + std::string(e.what()) << endmsg;
-    }
-    catch(...) {
-      m_accessSvc->msg() << MSG::WARNING << "QUERY Finalize : Exception caught... "  << endmsg;
-    }
-  }
+  if(m_cursor) m_cursor->close();
   m_accessSvc->disconnect(m_connName);
 }
 
diff --git a/Database/RDBAccessSvc/src/RDBQuery.h b/Database/RDBAccessSvc/src/RDBQuery.h
index b9c896368af2dbe180bc1f389d1b262a1dde7e43..a5d128ccc08496b7dc541bc9b5fa1b431c1d675c 100755
--- a/Database/RDBAccessSvc/src/RDBQuery.h
+++ b/Database/RDBAccessSvc/src/RDBQuery.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 RDBACCESSSVC_RDBQUERY_H
@@ -13,7 +13,6 @@
 namespace coral
 {
   class IQuery;
-  class ISessionProxy;
   class ICursor;
 }
 
@@ -30,7 +29,6 @@ class RDBQuery final : public IRDBQuery
 {
  public:
   RDBQuery(RDBAccessSvc* accessSvc
-	   , coral::ISessionProxy* session
 	   , const std::string& nodeName
 	   , const std::string& tagId
 	   , const std::string& connName);
@@ -51,7 +49,6 @@ class RDBQuery final : public IRDBQuery
   coral::IQuery*           m_query;
   coral::IQuery*           m_queryCount;
   RDBAccessSvc*            m_accessSvc;
-  coral::ISessionProxy*    m_session;
   std::string              m_nodeName;
   std::string              m_tagId;
   std::string              m_connName;
@@ -59,6 +56,7 @@ class RDBQuery final : public IRDBQuery
   std::vector<std::string> m_fields;
   coral::ICursor*          m_cursor;
   std::string              m_orderField;
+  bool                     m_executed;
 };
 
 #endif
diff --git a/Database/RDBAccessSvc/src/RDBRecord.cxx b/Database/RDBAccessSvc/src/RDBRecord.cxx
index 0da53148915aea4cee7a612182b3a6e73e336a33..660fabb93ec44d286f24ec9681901e15dede03fc 100755
--- a/Database/RDBAccessSvc/src/RDBRecord.cxx
+++ b/Database/RDBAccessSvc/src/RDBRecord.cxx
@@ -22,19 +22,18 @@
 
 #include <stdexcept>
 #include <sstream>
-#include <iostream>
+#include <string>
 
-RDBRecord::RDBRecord(const coral::AttributeList& attList, 
-		     std::string tableName):
-  m_values(0),
-  m_tableName(tableName)
+RDBRecord::RDBRecord(const coral::AttributeList& attList
+		     , std::string tableName)
+  : m_values(0)
+  , m_tableName(tableName)
 {
   // Copy attList.  Try to avoid sharing, for thread-safety.
   m_values = new coral::AttributeList(attList.specification(), false);
   m_values->fastCopyData (attList);
 
-  for(unsigned int i=0; i<m_values->size(); i++)
-  {
+  for(unsigned int i=0; i<m_values->size(); i++) {
     std::string key = (*m_values)[i].specification().name();
     m_name2Index[key] = i;
   }
@@ -48,8 +47,9 @@ RDBRecord::~RDBRecord()
 bool RDBRecord::isFieldNull(const std::string& fieldName) const 
 {
   FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName);
-  if(it==m_name2Index.end())
+  if(it==m_name2Index.end()) {
     throw std::runtime_error( "Wrong name for the field " + m_tableName+"."+fieldName);
+  }
 
   return (*m_values)[it->second].isNull();
 }
@@ -57,146 +57,166 @@ bool RDBRecord::isFieldNull(const std::string& fieldName) const
 int RDBRecord::getInt(const std::string& fieldName) const
 {
   FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName);
-  if(it==m_name2Index.end())
+  if(it==m_name2Index.end()) {
     throw std::runtime_error( "Wrong name for the field " + m_tableName+"."+fieldName);
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(int))
+  if((*m_values)[it->second].specification().type()==typeid(int)) {
     return (*m_values)[it->second].data<int>();
-  else if((*m_values)[it->second].specification().type()==typeid(long))
+  }
+  else if((*m_values)[it->second].specification().type()==typeid(long)) {
     return (int)(*m_values)[it->second].data<long>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of integer type\n");
+  }
 }
 
 long RDBRecord::getLong(const std::string& fieldName) const
 {
   FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName);
-  if(it==m_name2Index.end())
+  if(it==m_name2Index.end()) {
     throw std::runtime_error( "Wrong name for the field " + m_tableName+"."+fieldName);
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(long))
+  if((*m_values)[it->second].specification().type()==typeid(long)) {
     return (*m_values)[it->second].data<long>();
-  else if((*m_values)[it->second].specification().type()==typeid(int))
+  }
+  else if((*m_values)[it->second].specification().type()==typeid(int)) {
     return (long)(*m_values)[it->second].data<int>();
-  else if((*m_values)[it->second].specification().type()==typeid(long long))
+  }
+  else if((*m_values)[it->second].specification().type()==typeid(long long)) {
     return (long)(*m_values)[it->second].data<long long>();
-  else
-      throw std::runtime_error( "Field " + fieldName + " is NOT of long type");
+  }
+  else {
+    throw std::runtime_error( "Field " + fieldName + " is NOT of long type");
+  }
 }
 
 double RDBRecord::getDouble(const std::string& fieldName) const
 {
   FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName);
-  if(it==m_name2Index.end())
+  if(it==m_name2Index.end()) {
     throw std::runtime_error( "Wrong name for the field " + m_tableName+"."+fieldName);
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(double))
+  if((*m_values)[it->second].specification().type()==typeid(double)) {
     return (*m_values)[it->second].data<double>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of double type");
+  }
 }
 
 float RDBRecord::getFloat(const std::string& fieldName) const
 {
   FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName);
-  if(it==m_name2Index.end())
+  if(it==m_name2Index.end()) {
     throw std::runtime_error( "Wrong name for the field " + m_tableName+"."+fieldName);
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(float))
+  if((*m_values)[it->second].specification().type()==typeid(float)) {
     return (*m_values)[it->second].data<float>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of float type");
+  }
 }
 
 std::string RDBRecord::getString(const std::string& fieldName) const
 {
   FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName);
-  if(it==m_name2Index.end())
+  if(it==m_name2Index.end()) {
     throw std::runtime_error( "Wrong name for the field " + m_tableName+"."+fieldName);
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(std::string))
+  if((*m_values)[it->second].specification().type()==typeid(std::string)) {
     return (*m_values)[it->second].data<std::string>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of string type");
+  }
 }
 
 int RDBRecord::getInt(const std::string& fieldName, unsigned int index) const
 {
-  std::ostringstream strInd;
-  strInd << index;
-
-  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + strInd.str());
-  if(it==m_name2Index.end())
-    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + strInd.str() + " is out of range");
+  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + std::to_string(index));
+  if(it==m_name2Index.end()) {
+    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + std::to_string(index) + " is out of range");
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(int))
+  if((*m_values)[it->second].specification().type()==typeid(int)) {
     return (*m_values)[it->second].data<int>();
-  else if((*m_values)[it->second].specification().type()==typeid(long))
+  }
+  else if((*m_values)[it->second].specification().type()==typeid(long)) {
     return (int)(*m_values)[it->second].data<long>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of integer type\n");
+  }
 }
 
 long RDBRecord::getLong(const std::string& fieldName, unsigned int index) const
 {
-  std::ostringstream strInd;
-  strInd << index;
-
-  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + strInd.str());
-  if(it==m_name2Index.end())
-    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + strInd.str() + " is out of range");
+  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + std::to_string(index));
+  if(it==m_name2Index.end()) {
+    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + std::to_string(index) + " is out of range");
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(long))
+  if((*m_values)[it->second].specification().type()==typeid(long)) {
     return (*m_values)[it->second].data<long>();
-  else if((*m_values)[it->second].specification().type()==typeid(int))
+  }
+  else if((*m_values)[it->second].specification().type()==typeid(int)) {
     return (long)(*m_values)[it->second].data<int>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of long type");
+  }
 }
 
 double RDBRecord::getDouble(const std::string& fieldName, unsigned int index) const
 {
-  std::ostringstream strInd;
-  strInd << index;
-
-  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + strInd.str());
-  if(it==m_name2Index.end())
-    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + strInd.str() + " is out of range");
+  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + std::to_string(index));
+  if(it==m_name2Index.end()) {
+    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + std::to_string(index) + " is out of range");
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(double))
+  if((*m_values)[it->second].specification().type()==typeid(double)) {
     return (*m_values)[it->second].data<double>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of double type");
+  }
 }
 
 float RDBRecord::getFloat(const std::string& fieldName, unsigned int index) const
 {
-  std::ostringstream strInd;
-  strInd << index;
-
-  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + strInd.str());
-  if(it==m_name2Index.end())
-    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + strInd.str() + " is out of range");
+  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + std::to_string(index));
+  if(it==m_name2Index.end()) {
+    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + std::to_string(index) + " is out of range");
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(float))
+  if((*m_values)[it->second].specification().type()==typeid(float)) {
     return (*m_values)[it->second].data<float>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of float type");
+  }
 }
 
 std::string RDBRecord::getString(const std::string& fieldName, unsigned int index) const
 {
-  std::ostringstream strInd;
-  strInd << index;
-
-  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + strInd.str());
-  if(it==m_name2Index.end())
-    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + strInd.str() + " is out of range");
+  FieldName2ListIndex::const_iterator it = m_name2Index.find(m_tableName+"."+fieldName + "_" + std::to_string(index));
+  if(it==m_name2Index.end()) {
+    throw std::runtime_error("Wrong name for the array field " + m_tableName+"."+fieldName + " or index=" + std::to_string(index) + " is out of range");
+  }
 
-  if((*m_values)[it->second].specification().type()==typeid(std::string))
+  if((*m_values)[it->second].specification().type()==typeid(std::string)) {
     return (*m_values)[it->second].data<std::string>();
-  else
+  }
+  else {
     throw std::runtime_error( "Field " + fieldName + " is NOT of string type");
+  }
 }
 
 bool RDBRecord::operator!=(const RDBRecord& rhs) const
@@ -204,8 +224,7 @@ bool RDBRecord::operator!=(const RDBRecord& rhs) const
   const coral::AttributeList& myAttList = *m_values;
   const coral::AttributeList& rhsAttList = *rhs.m_values;
 
-  if(myAttList.size()!=rhsAttList.size())
-    return true;
+  if(myAttList.size()!=rhsAttList.size()) return true;
 
   for(size_t i(0); i<myAttList.size(); ++i) {
     const coral::Attribute& myAtt = myAttList[i];
@@ -214,8 +233,9 @@ bool RDBRecord::operator!=(const RDBRecord& rhs) const
     for(size_t j(0); j<rhsAttList.size(); ++j) {
       const coral::Attribute& rhsAtt = rhsAttList[j];
       if(rhsAtt.specification().name()==name) {
-	if(myAtt!=rhsAtt)
+	if(myAtt!=rhsAtt) {
 	  return true;
+	}
 	exists = true;
 	break;
       }
diff --git a/Database/RDBAccessSvc/src/RDBRecordset.cxx b/Database/RDBAccessSvc/src/RDBRecordset.cxx
index e0ab595b14552d73b8c2a9f1f56fdc248c1d540d..06e73f6726ebe42b8d28aab0c3f796139c2f570f 100755
--- a/Database/RDBAccessSvc/src/RDBRecordset.cxx
+++ b/Database/RDBAccessSvc/src/RDBRecordset.cxx
@@ -15,8 +15,6 @@
 #include "RDBAccessSvc.h"
 #include "RDBRecordset.h"
 #include "RDBRecord.h"
-#include "RDBVersionAccessor.h"
-#include "RDBQuery.h"
 
 #include "RelationalAccess/ISessionProxy.h"
 #include "RelationalAccess/ICursor.h"
@@ -38,29 +36,31 @@
 #include <iostream>
 #include <set>
 
-RDBRecordset::RDBRecordset(RDBAccessSvc* accessSvc):
-  m_tableName(""),
-  m_tagName(""),
-  m_accessSvc(accessSvc)
+RDBRecordset::RDBRecordset(RDBAccessSvc* accessSvc)
+  : m_tableName("")
+  , m_tagName("")
+  , m_accessSvc(accessSvc)
 {
 }
 
 RDBRecordset::~RDBRecordset()
 {
-  for(unsigned int ind=0; ind<m_records.size(); ind++)
-    delete m_records[ind];
+  for(auto record : m_records) {
+    delete record;
+  }
   m_records.clear();
 }
 
-void RDBRecordset::getData(coral::ISessionProxy* session,
-			   const std::string& nodeName,
-			   const std::string& tagName,
-			   const std::string& tagId)
+void RDBRecordset::getData(coral::ISessionProxy* session
+			   , const std::string& nodeName
+			   , const std::string& tagName
+			   , const std::string& tagId)
 {
-  if(m_accessSvc->msg().level() <= MSG::DEBUG)
+  if(m_accessSvc->msg().level() <= MSG::DEBUG) {
     m_accessSvc->msg() << MSG::DEBUG << "Recordset get data " << nodeName << ", " 
 		       << tagName << ", " 
 		       << tagId << endmsg;
+  }
 
   if(session==0) {
     m_accessSvc->msg() << MSG::ERROR << "RT: No connection to database!" << endmsg;
@@ -92,8 +92,9 @@ void RDBRecordset::getData(coral::ISessionProxy* session,
 
     // Compose the list of output fields for queryStructure
     const coral::ITableDescription& dataTableDesc = session->nominalSchema().tableHandle(upperName + "_DATA").description();
-    for(int i=0; i<dataTableDesc.numberOfColumns(); i++)
+    for(int i=0; i<dataTableDesc.numberOfColumns(); i++) {
       queryStructure->addToOutputList(upperName + "_DATA." + dataTableDesc.columnDescription(i).name());
+    }
 
     // Create table list for query >> data and data2vers tables
     queryStructure->addToTableList(upperName + "_DATA");
@@ -165,8 +166,7 @@ IRDBRecordset::const_iterator RDBRecordset::end() const
 
 bool RDBRecordset::operator!=(const RDBRecordset& rhs) const
 {
-  if(m_records.size()!=rhs.m_records.size())
-    return true;
+  if(m_records.size()!=rhs.m_records.size()) return true;
 
   for(size_t i=0; i<m_records.size(); ++i) {
     RDBRecord* rec1 = dynamic_cast<RDBRecord*>(m_records[i]);
@@ -254,23 +254,26 @@ void RDBRecordset::compare(const RDBRecordset& rec, std::ostream& os) const
 	break;
       }
     }
-    if(!found)
+    if(!found) {
       uniq1.insert(i);
+    }
   }
 
   // print out results
   if(uniq0.size()>0) {
     os << "Records with the following data ids are present in recordset 0 and missing in recordset 1: " << std::endl;
     std::set<size_t>::const_iterator it = uniq0.begin();
-    for(; it!=uniq0.end(); ++it)
+    for(; it!=uniq0.end(); ++it) {
       os << m_records[*it]->getLong(upperName+"_DATA_ID") << " ";
+    }
     os << std::endl;
   }
   if(uniq1.size()>0) {
     os << "Records with the following data ids are present in recordset 1 and missing in recordset 0: " << std::endl;
     std::set<size_t>::const_iterator it = uniq1.begin();
-    for(; it!=uniq1.end(); ++it)
+    for(; it!=uniq1.end(); ++it) {
       os << rec.m_records[*it]->getLong(upperName+"_DATA_ID") << " ";
+    }
     os << std::endl;
   }
 
@@ -278,6 +281,5 @@ void RDBRecordset::compare(const RDBRecordset& rec, std::ostream& os) const
 
 void RDBRecordset::setNodeName(const std::string& nodeName)
 {
-  if(m_tableName.empty())
-    m_tableName = nodeName; 
+  if(m_tableName.empty()) m_tableName = nodeName; 
 }
diff --git a/Database/RDBAccessSvc/src/RDBRecordset.h b/Database/RDBAccessSvc/src/RDBRecordset.h
index 6aad45ae2dc695d484524829bb199773b358a8fd..1257db95ed122ca7c0d3973851892aa9981d8cf4 100755
--- a/Database/RDBAccessSvc/src/RDBRecordset.h
+++ b/Database/RDBAccessSvc/src/RDBRecordset.h
@@ -49,10 +49,10 @@ class RDBRecordset final: public IRDBRecordset
   /// Constructs SQL query and retrieves the data from DB
   /// @param session [IN] active relational session
   /// @param taginfo [IN] object holding information about the node tag
-  void getData(coral::ISessionProxy* session,
-	       const std::string& nodeName,
-	       const std::string& tagName,
-	       const std::string& tagId);
+  void getData(coral::ISessionProxy* session
+	       , const std::string& nodeName
+	       , const std::string& tagName
+	       , const std::string& tagId);
 
   /// @return number of records
   unsigned int size() const override;
diff --git a/Database/RDBAccessSvc/src/RDBVersionAccessor.cxx b/Database/RDBAccessSvc/src/RDBVersionAccessor.cxx
index c7e972e9e54fc41958a044635b2ed2b4d4668d3e..7bb67ae5133786108fe352c513e05e063e1283e1 100755
--- a/Database/RDBAccessSvc/src/RDBVersionAccessor.cxx
+++ b/Database/RDBAccessSvc/src/RDBVersionAccessor.cxx
@@ -18,7 +18,6 @@
 #include "RelationalAccess/ICursor.h"
 #include "RelationalAccess/ITable.h"
 #include "RelationalAccess/ISchema.h"
-#include "RelationalAccess/ITransaction.h"
 #include "RelationalAccess/IQuery.h"
 #include "RelationalAccess/SchemaException.h"
 
@@ -28,24 +27,23 @@
 #include "CoralBase/AttributeList.h"
 
 #include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/IMessageSvc.h"
 
 #include <stdexcept>
 #include <sstream>
 
-RDBVersionAccessor::RDBVersionAccessor(std::string childNode,
-				       std::string parentNode,
-				       std::string parentTag,
-				       coral::ISessionProxy* session,
-				       MsgStream& msgStream):
-  m_session(session),
-  m_childNode(childNode),
-  m_parentNode(parentNode),
-  m_parentTag(parentTag),
-  m_tagName(""),
-  m_tagID(""),
-  m_isChildLeaf(false),
-  m_msgStream(msgStream)
+RDBVersionAccessor::RDBVersionAccessor(std::string childNode
+				       , std::string parentNode
+				       , std::string parentTag
+				       , coral::ISessionProxy* session
+				       , MsgStream& msgStream)
+  : m_session(session)
+  , m_childNode(childNode)
+  , m_parentNode(parentNode)
+  , m_parentTag(parentTag)
+  , m_tagName("")
+  , m_tagID("")
+  , m_isChildLeaf(false)
+  , m_msgStream(msgStream)
 {
 }
 
@@ -54,18 +52,17 @@ void RDBVersionAccessor::getChildTagData()
   std::string parentNodeId, childNodeId, parentTagId;
   int nRows;
 
-  if(!m_session)
-  {
+  if(!m_session) {
     m_msgStream << MSG::ERROR << "VersionAccessor: No connection to database!" << endmsg;
     return;
   }
 
-  try 
-  {
-    if(m_msgStream.level()==MSG::VERBOSE)
+  try {
+    if(m_msgStream.level()==MSG::VERBOSE) {
       m_msgStream << MSG::VERBOSE << "VersionAccessor:  Version accessor for \n    ChildNode = " << m_childNode 
 		  << "     ParentNode = " << m_parentNode 
 		  << "     ParentTag = " << m_parentTag << endmsg;
+    }
 
     coral::ITable& tableTag2Node = m_session->nominalSchema().tableHandle("HVS_TAG2NODE");
     coral::ITable& tableNode = m_session->nominalSchema().tableHandle("HVS_NODE");
@@ -86,10 +83,8 @@ void RDBVersionAccessor::getChildTagData()
 
     coral::ICursor& cursorTag2Node = queryTag2Node->execute();
     nRows = 0;
-    while(cursorTag2Node.next())
-    {
-      if(++nRows>1)
-      {
+    while(cursorTag2Node.next()) {
+      if(++nRows>1) {
 	delete queryTag2Node;
 	throw std::runtime_error( "The tag " + m_parentTag + " is not unique in HVS_TAG2NODE table!");
       }      
@@ -98,15 +93,15 @@ void RDBVersionAccessor::getChildTagData()
       parentTagId = attribute2String(row,"TAG_ID");
 
     }
-    if(nRows==0)
-    {
+    if(nRows==0) {
       delete queryTag2Node;
       throw std::runtime_error( "The tag " + m_parentTag + " not found in HVS_TAG2NODE table!");
     }
 
     delete queryTag2Node;
-    if(m_msgStream.level()==MSG::VERBOSE)
+    if(m_msgStream.level()==MSG::VERBOSE) {
       m_msgStream << MSG::VERBOSE << "VersionAccessor:  Parent Tag Id = " << parentTagId << endmsg;
+    }
 
     //
     // STEP 2. Get NodeIDs for parentNode and child 
@@ -134,22 +129,21 @@ void RDBVersionAccessor::getChildTagData()
     coral::ICursor& cursorNodeIDs = queryNodeIDs->execute();
 
     nRows = 0;
-    while(cursorNodeIDs.next())
-    {
-      if(++nRows>2)
+    while(cursorNodeIDs.next()) {
+      if(++nRows>2) {
 	break;
+      }
       const coral::AttributeList& row = cursorNodeIDs.currentRow();
 
-      if(attribute2String(row,"NODE_NAME")==m_childNode)
-      {
+      if(attribute2String(row,"NODE_NAME")==m_childNode) {
 	childNodeId = attribute2String(row,"NODE_ID");
 	m_isChildLeaf = (attribute2String(row,"BRANCH_FLAG")=="0");
       }
-      else
+      else {
 	parentNodeId = attribute2String(row,"NODE_ID");
+      }
     }
-    if(nRows!=2 && m_childNode!=m_parentNode)
-    {
+    if(nRows!=2 && m_childNode!=m_parentNode) {
       delete queryNodeIDs;
       throw std::runtime_error("Error processing HVS_NODE, Number of fetched records !=2");
     }
@@ -161,8 +155,7 @@ void RDBVersionAccessor::getChildTagData()
 
     delete queryNodeIDs;
 
-    if(m_childNode==m_parentNode)
-    {
+    if(m_childNode==m_parentNode) {
       m_tagName = m_parentTag;
       m_tagID = parentTagId;
       return;
@@ -188,8 +181,7 @@ void RDBVersionAccessor::getChildTagData()
     coral::AttributeList bindsNode ATLAS_THREAD_SAFE;
     bindsNode.extend<std::string>("nodeId");
 
-    while(currentParrent != parentNodeId)
-    {
+    while(currentParrent != parentNodeId) {
       //
       // Query: "SELECT PARENT_ID FROM HVS_NODE WHERE NODE_ID='currentChild'"
       //
@@ -206,18 +198,15 @@ void RDBVersionAccessor::getChildTagData()
       nRows = 0;
 
       // Process Query results
-      while(cursorNode.next())
-      {
-	if(++nRows>1)
-	{
+      while(cursorNode.next()) {
+	if(++nRows>1) {
 	  delete queryNode;
 	  throw std::runtime_error("The node " + currentChild + " has more than one parent!");
 	}	
 
 	const coral::AttributeList& row = cursorNode.currentRow();
 	
-	if(row[0].isNull())
-	{
+	if(row[0].isNull()) {
 	  delete queryNode;
 	  throw std::runtime_error("The requested child and parent nodes are not on the same branch!");
 	}	
@@ -226,8 +215,7 @@ void RDBVersionAccessor::getChildTagData()
 	currentChild = currentParrent;
 	path.push_back(currentParrent);
       }
-      if(nRows==0)
-      {
+      if(nRows==0) {
 	delete queryNode;
 	throw std::runtime_error("The node " + currentChild + " has no parent!");
       }
@@ -245,8 +233,7 @@ void RDBVersionAccessor::getChildTagData()
     bindsLtag2Ltag.extend<std::string>("parentN");
 
 
-    for(unsigned int ind=1; ind<path.size(); ind++)
-    {
+    for(unsigned int ind=1; ind<path.size(); ind++) {
       // Query: "SELECT CHILD_TAG FROM HVS_LTAG2LTAG WHERE
       //         CHILD_NODE  = 'path[path.size()-ind-1]' AND
       //         PARENT_TAG  = 'parentTagId' AND
@@ -267,10 +254,8 @@ void RDBVersionAccessor::getChildTagData()
 
       nRows = 0;
       // Process Query results
-      while(cursorLtag2Ltag.next())
-      {
-	if(++nRows>1)
-	{
+      while(cursorLtag2Ltag.next()) {
+	if(++nRows>1) {
 	  delete queryLtag2Ltag;
 	  throw std::runtime_error("Version " + parentTagId + 
 				   " has more than one child of type " + path[path.size()-ind-1] + "!");
@@ -279,17 +264,16 @@ void RDBVersionAccessor::getChildTagData()
 	const coral::AttributeList& row = cursorLtag2Ltag.currentRow();
 	parentTagId = attribute2String(row,"CHILD_TAG");
       }
-      if(nRows==0)
-      {
+      if(nRows==0) {
 	delete queryLtag2Ltag;
 	throw std::runtime_error("Version " + parentTagId + " has no child of type " + path[path.size()-ind-1] + "!");
       }
 
       delete queryLtag2Ltag;
 
-      if(m_msgStream.level()==MSG::VERBOSE)
+      if(m_msgStream.level()==MSG::VERBOSE) {
 	m_msgStream << MSG::VERBOSE << "VersionAccessor:  Parent Tag Id = " << parentTagId << endmsg;
-
+      }
     }
 
     //
@@ -311,10 +295,8 @@ void RDBVersionAccessor::getChildTagData()
     coral::ICursor& cursorTagName = queryTagName->execute();
 
     nRows = 0;
-    while(cursorTagName.next())
-    {
-      if(++nRows>1)
-      {
+    while(cursorTagName.next()) {
+      if(++nRows>1) {
 	delete queryTagName;
 	throw std::runtime_error("More than one record retrieved when getting tag name for given ID");
       }  
@@ -324,8 +306,9 @@ void RDBVersionAccessor::getChildTagData()
       m_tagName =attribute2String(row,"TAG_NAME"); 
       m_tagID = parentTagId;
 
-      if(m_msgStream.level()==MSG::VERBOSE)
+      if(m_msgStream.level()==MSG::VERBOSE) {
 	m_msgStream << MSG::VERBOSE << "VersionAccessor:  Child Tag Name = " << m_tagName << endmsg;
+      }
     }
     delete queryTagName;
 
diff --git a/Database/RDBAccessSvc/src/RDBVersionAccessor.h b/Database/RDBAccessSvc/src/RDBVersionAccessor.h
index 19681e013e4390f298a4dfab5953b2a902e5eca7..e42b3db523ae3c6dc12305dd888a05862eca04ea 100755
--- a/Database/RDBAccessSvc/src/RDBVersionAccessor.h
+++ b/Database/RDBAccessSvc/src/RDBVersionAccessor.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
 */
 
 /**
@@ -12,8 +12,8 @@
  * $Id: RDBVersionAccessor.h,v 1.11 2006-05-11 22:34:39 tsulaia Exp $
  */
 
-#ifndef _RDB_VERSIONACCESSOR_H_
-#define _RDB_VERSIONACCESSOR_H_
+#ifndef RDBACCESSSVC_RDBVERSIONACCESSOR_H
+#define RDBACCESSSVC_RDBVERSIONACCESSOR_H
 
 #include <string>
 #include "GaudiKernel/MsgStream.h"
@@ -41,11 +41,11 @@ class RDBVersionAccessor
   /// @param parentNode [IN] parent node name
   /// @param parentTag [IN] parent tag name
   /// @param session [IN] active relational session  
-  RDBVersionAccessor(std::string childNode,
-		     std::string parentNode,
-		     std::string parentTag,
-		     coral::ISessionProxy* session,
-		     MsgStream& stream);
+  RDBVersionAccessor(std::string childNode
+		     , std::string parentNode
+		     , std::string parentTag
+		     , coral::ISessionProxy* session
+		     , MsgStream& stream);
   
   /// Constructs SQL query and retrieves child tag ID and Name from DB
   void getChildTagData();
@@ -68,8 +68,8 @@ class RDBVersionAccessor
   RDBVersionAccessor();
 
   // Convert attribute value to std::string
-  std::string attribute2String(const coral::AttributeList& attList,
-			       std::string fieldName);
+  std::string attribute2String(const coral::AttributeList& attList
+			       , std::string fieldName);
 
   coral::ISessionProxy* m_session;
 
diff --git a/Database/RDBAccessSvc/src/SourceCompAlg.h b/Database/RDBAccessSvc/src/SourceCompAlg.h
index 62df92bbd0f11780e9113f9736ed671cf0bcbb4a..2382314be51902a6c996971c6924e33aef055520 100644
--- a/Database/RDBAccessSvc/src/SourceCompAlg.h
+++ b/Database/RDBAccessSvc/src/SourceCompAlg.h
@@ -6,7 +6,6 @@
 #define RDBACCESSSVC_SOURCECOMPALG_H
 
 #include "AthenaBaseComps/AthAlgorithm.h"
-#include "RDBAccessSvc/IRDBAccessSvc.h"
 
 #include <string>
 #include <fstream>
diff --git a/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamInputSvc.h b/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamInputSvc.h
index fb7498dd3105ffea65b3ab432517f40e5e1f5d97..0bf7f2d8accd372b9cc3aecb0494655917784741 100644
--- a/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamInputSvc.h
+++ b/Event/ByteStreamCnvSvc/ByteStreamCnvSvc/ByteStreamInputSvc.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 BYTESTREAMCNVSVC_BYTESTREAMINPUTSVC_H
@@ -38,7 +38,7 @@ public:
   virtual const RawEvent* currentEvent() const = 0;
   /// virtual method for accessing the current event status
   virtual unsigned int currentEventStatus() const;
-  virtual std::pair<long,std::string> getBlockIterator(const std::string /* file */);
+  virtual std::pair<long,std::string> getBlockIterator(const std::string& /* file */);
   virtual void closeBlockIterator(bool);
   virtual bool ready() const;
   virtual StatusCode generateDataHeader(); 
@@ -57,7 +57,7 @@ inline unsigned int ByteStreamInputSvc::currentEventStatus() const {
 }
 
 // Virtual methods needed for file input
-inline std::pair<long,std::string> ByteStreamInputSvc::getBlockIterator(const std::string /* file */) {return std::make_pair(-1,"GUID");}
+inline std::pair<long,std::string> ByteStreamInputSvc::getBlockIterator(const std::string& /* file */) {return std::make_pair(-1,"GUID");}
 inline void ByteStreamInputSvc::closeBlockIterator(bool) {}
 inline bool ByteStreamInputSvc::ready() const {return false;}
 inline StatusCode ByteStreamInputSvc::generateDataHeader() {return StatusCode::SUCCESS;}
diff --git a/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.cxx b/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.cxx
index a0723224e942fe54eb633efc1947a8a33a170698..9625b79dec6b5c9f4a9e28d3b7a7d076eff4fa4d 100644
--- a/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.cxx
+++ b/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.cxx
@@ -518,7 +518,7 @@ ByteStreamEventStorageInputSvc::ready() const
 
 /******************************************************************************/
 std::pair<long,std::string>
-ByteStreamEventStorageInputSvc::getBlockIterator(const std::string fileName)
+ByteStreamEventStorageInputSvc::getBlockIterator(const std::string& fileName)
 {
   // open the file
   if(m_reader != 0) closeBlockIterator();
diff --git a/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.h b/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.h
index c0a878753c4ea4487e0e81f95bc88cbc4eeb171e..e195b33e17be65fca8fbb4ad150ce8a09bda8e5d 100644
--- a/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.h
+++ b/Event/ByteStreamCnvSvc/src/ByteStreamEventStorageInputSvc.h
@@ -61,7 +61,7 @@ public:
   virtual void         validateEvent     (); 
 
   virtual long positionInBlock   ();
-  virtual std::pair<long,std::string> getBlockIterator(const std::string fileName);
+  virtual std::pair<long,std::string> getBlockIterator(const std::string& fileName);
   void         closeBlockIterator(bool clearMetadata=true);
   bool         setSequentialRead ();
   bool         ready             () const;
diff --git a/Event/ByteStreamCnvSvc/src/ByteStreamMergeOutputSvc.cxx b/Event/ByteStreamCnvSvc/src/ByteStreamMergeOutputSvc.cxx
index 1028f743deb617f780fa85807f9ea93a57519847..d58588eef340b2f46dee7fea290c4dfe5f42631e 100644
--- a/Event/ByteStreamCnvSvc/src/ByteStreamMergeOutputSvc.cxx
+++ b/Event/ByteStreamCnvSvc/src/ByteStreamMergeOutputSvc.cxx
@@ -147,7 +147,7 @@ bool  ByteStreamMergeOutputSvc::putEvent(const RawEvent* newEvent) {
    mergedEventWrite->stream_tag(event->nstream_tag(), tmp);
    mergedEventWrite->checksum_type(event->checksum_type());
    // copy robs
-   for(ROBMAP::iterator it = robsToAdd.begin(), itEnd = robsToAdd.end(); it != itEnd; it++) {
+   for(ROBMAP::iterator it = robsToAdd.begin(), itEnd = robsToAdd.end(); it != itEnd; ++it) {
       mergedEventWrite->append(it->second);
    }
    // convert RawEventWrite to RawEvent
@@ -160,7 +160,7 @@ bool  ByteStreamMergeOutputSvc::putEvent(const RawEvent* newEvent) {
    }
    RawEvent newRawEvent(buffer);
    StatusCode sc = m_outSvc->putEvent(&newRawEvent) ? StatusCode::SUCCESS : StatusCode::FAILURE;
-   for(ROBMAP::iterator it = robsToAdd.begin(), itEnd = robsToAdd.end(); it != itEnd; it++) {
+   for(ROBMAP::iterator it = robsToAdd.begin(), itEnd = robsToAdd.end(); it != itEnd; ++it) {
       delete it->second; it->second = 0;
    }
    delete mergedEventWrite; mergedEventWrite = 0;
diff --git a/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx b/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx
index b481be19b4e4710ae29959caa60f4b1b6a008ef8..eb5fa9eed0407b1529763178f914b59caa31d424 100644
--- a/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx
+++ b/Event/ByteStreamCnvSvc/src/EventSelectorByteStream.cxx
@@ -182,10 +182,9 @@ StatusCode EventSelectorByteStream::reinit(lock_t& /*lock*/) {
    m_NumEvents = 0;
    bool retError = false;
    if (!m_helperTools.empty()) {
-      for (std::vector<ToolHandle<IAthenaSelectorTool> >::iterator iter = m_helperTools.begin(),
-           last = m_helperTools.end(); iter != last; iter++) {
-         if (!(*iter)->postInitialize().isSuccess()) {
-            ATH_MSG_FATAL("Failed to postInitialize() " << (*iter)->name());
+      for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
+         if (!tool->postInitialize().isSuccess()) {
+            ATH_MSG_FATAL("Failed to postInitialize() " << tool->name());
             retError = true;
          }
       }
@@ -248,10 +247,9 @@ StatusCode EventSelectorByteStream::finalize() {
          ATH_MSG_WARNING("Failed to preFinalize() CounterTool");
       }
    }
-   for (std::vector<ToolHandle<IAthenaSelectorTool> >::iterator iter = m_helperTools.begin(),
-        last = m_helperTools.end(); iter != last; iter++) {
-      if (!(*iter)->preFinalize().isSuccess()) {
-         ATH_MSG_WARNING("Failed to preFinalize() " << (*iter)->name());
+   for (ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
+      if (!tool->preFinalize().isSuccess()) {
+         ATH_MSG_WARNING("Failed to preFinalize() " << tool->name());
       }
    }
    delete m_beginIter; m_beginIter = 0;
@@ -357,10 +355,9 @@ StatusCode EventSelectorByteStream::nextImpl(IEvtSelector::Context& it,
       return(StatusCode::SUCCESS);
    }
    // Call all selector tool preNext before starting loop
-   for (std::vector<ToolHandle<IAthenaSelectorTool> >::const_iterator iter = m_helperTools.begin(),
-                   last = m_helperTools.end(); iter != last; iter++) {
-      if (!(*iter)->preNext().isSuccess()) {
-         ATH_MSG_WARNING("Failed to preNext() " << (*iter)->name());
+   for (const ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
+      if (!tool->preNext().isSuccess()) {
+         ATH_MSG_WARNING("Failed to preNext() " << tool->name());
       }
    }
    if (!m_counterTool.empty()) {
@@ -406,14 +403,13 @@ StatusCode EventSelectorByteStream::nextImpl(IEvtSelector::Context& it,
          StatusCode status(StatusCode::SUCCESS);
          // Build event info attribute list
          if (recordAttributeListImpl(lock).isFailure()) ATH_MSG_WARNING("Unable to build event info att list");
-         for (std::vector<ToolHandle<IAthenaSelectorTool> >::const_iterator iter = m_helperTools.begin(),
-		         last = m_helperTools.end(); iter != last; iter++) {
-            StatusCode toolStatus = (*iter)->postNext();
+         for (const ToolHandle<IAthenaSelectorTool>& tool : m_helperTools) {
+            StatusCode toolStatus = tool->postNext();
             if (toolStatus.isRecoverable()) {
-               ATH_MSG_INFO("Request skipping event from: " << (*iter)->name());
+               ATH_MSG_INFO("Request skipping event from: " << tool->name());
                status = StatusCode::RECOVERABLE;
             } else if (toolStatus.isFailure()) {
-               ATH_MSG_WARNING("Failed to postNext() " << (*iter)->name());
+               ATH_MSG_WARNING("Failed to postNext() " << tool->name());
                status = StatusCode::FAILURE;
             }
          }
diff --git a/Event/ByteStreamCnvSvc/test/AtlCopyBSEvent.cxx b/Event/ByteStreamCnvSvc/test/AtlCopyBSEvent.cxx
index 4af0f739421d2ca3a86ba9227f11c7d5b0b2c560..d7a84c2507e71f66d942dfd544bffa6153713fa5 100644
--- a/Event/ByteStreamCnvSvc/test/AtlCopyBSEvent.cxx
+++ b/Event/ByteStreamCnvSvc/test/AtlCopyBSEvent.cxx
@@ -189,7 +189,7 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[]) {
     try {
       if (!catalogFile.empty()) {
         ctlg->setWriteCatalog(*catalogFile.begin());
-        for (std::vector<std::string>::const_iterator iter = catalogFile.begin(); iter != catalogFile.end(); iter++) {
+        for (std::vector<std::string>::const_iterator iter = catalogFile.begin(); iter != catalogFile.end(); ++iter) {
           ctlg->addReadCatalog(*iter);
         }
       } else {
@@ -201,7 +201,7 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[]) {
       return -1;
     }
     ctlg->start();
-    for (std::vector<std::string>::const_iterator collIter = collNames.begin(), typeIter = collTypes.begin(), collEnd = collNames.end(); collIter != collEnd; collIter++, typeIter++) {
+    for (std::vector<std::string>::const_iterator collIter = collNames.begin(), typeIter = collTypes.begin(), collEnd = collNames.end(); collIter != collEnd; ++collIter, ++typeIter) {
       try {
         // Open the collection and execute the query
         pool::ICollection* srcColl = collSvc->handle(*collIter, *typeIter, collConnect, true);
@@ -270,14 +270,14 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[]) {
 
   std::sort(searchEvents.begin(),searchEvents.end());
   std::cout << "Events to copy: ";
-  for (std::vector<uint32_t>::const_iterator itEvt1=searchEvents.begin(), itEvt2=searchEvents.end(); itEvt1!=itEvt2; itEvt1++) {
+  for (std::vector<uint32_t>::const_iterator itEvt1=searchEvents.begin(), itEvt2=searchEvents.end(); itEvt1!=itEvt2; ++itEvt1) {
     std::cout << *itEvt1 << " ";
   }
   std::cout << std::endl;
 
   EventStorage::DataWriter* pDW=NULL;
   //start loop over files
-  for (std::vector<std::string>::const_iterator it = fileNames.begin(), it_e = fileNames.end(); it != it_e; it++) {
+  for (std::vector<std::string>::const_iterator it = fileNames.begin(), it_e = fileNames.end(); it != it_e; ++it) {
     const std::string& fName=*it;
     std::cout << "Checking file " << fName << std::endl;
     DataReader *pDR = pickDataReader(fName);
@@ -381,7 +381,7 @@ void eventLoop(DataReader* pDR, EventStorage::DataWriter* pDW, unsigned& nFound,
     if (pOffsetEvents != 0) {
       if (offIt == offEnd) break;
       ecode = pDR->getData(eventSize, &buf, *offIt);
-      offIt++;
+      ++offIt;
     } else {
       ecode = pDR->getData(eventSize,&buf);
     }
diff --git a/Event/ByteStreamCnvSvc/test/AtlFindBSEvent.cxx b/Event/ByteStreamCnvSvc/test/AtlFindBSEvent.cxx
index 49257d6eea070a31dd03188854bdb65992168a70..2a312e536f0fdb7f71c58c65f202faf6f581ce41 100644
--- a/Event/ByteStreamCnvSvc/test/AtlFindBSEvent.cxx
+++ b/Event/ByteStreamCnvSvc/test/AtlFindBSEvent.cxx
@@ -106,7 +106,7 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[])
   //start loop over files
   std::vector<std::string>::const_iterator it=fileNames.begin();
   std::vector<std::string>::const_iterator it_e=fileNames.end();
-  for (;!found && it!=it_e;it++) {
+  for (;!found && it!=it_e;++it) {
     const std::string& fName=*it;
     eventCounter=0;
 
diff --git a/Event/ByteStreamCnvSvc/test/AtlListBSEvents.cxx b/Event/ByteStreamCnvSvc/test/AtlListBSEvents.cxx
index 4d7e8db67ebbcb92fb9e3bccd9df74111c6589cb..36eb619623e58172ee66f2fd12afdfd343fdd7c1 100644
--- a/Event/ByteStreamCnvSvc/test/AtlListBSEvents.cxx
+++ b/Event/ByteStreamCnvSvc/test/AtlListBSEvents.cxx
@@ -65,7 +65,7 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[])
   std::map<SubDetectorGroup,unsigned> totalSizePerSubdet;
   std::map<SubDetectorGroup,unsigned>::iterator sizeit;
   
-  for(sizeit=totalSizePerSubdet.begin();sizeit!=totalSizePerSubdet.end();sizeit++)
+  for(sizeit=totalSizePerSubdet.begin();sizeit!=totalSizePerSubdet.end();++sizeit)
     sizeit->second=0;
 
   unsigned totalSize=0;
@@ -111,11 +111,7 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[])
   }
 
   //start loop over files
-  std::vector<std::string>::const_iterator it=fileNames.begin();
-  std::vector<std::string>::const_iterator it_e=fileNames.end();
-  for (;eventCounter<=maxEvents && it!=it_e;it++) {
-    const std::string& fName=*it;
-
+  for (const std::string& fName : fileNames) {
     std::cout << "Checking file " << fName << std::endl;
     DataReader *pDR = pickDataReader(fName);
 
@@ -250,7 +246,7 @@ int main ATLAS_NOT_THREAD_SAFE (int argc, char *argv[])
     std::vector<std::pair<SubDetectorGroup,std::string> >::const_iterator nit=namesPerSubdet.begin();
     std::vector<std::pair<SubDetectorGroup,std::string> >::const_iterator nit_e=namesPerSubdet.end();
     unsigned sum=0;
-    for(;nit!=nit_e;nit++) {
+    for(;nit!=nit_e;++nit) {
       const SubDetectorGroup sd=nit->first;
       const std::string& name=nit->second;
       
diff --git a/Event/EventBookkeeperTools/Root/BookkeeperTool.cxx b/Event/EventBookkeeperTools/Root/BookkeeperTool.cxx
index 7222472c8130cae67c9dffb57ba406b53602214d..05da271a408bd6d91f0b414fed0e38312d58d664 100644
--- a/Event/EventBookkeeperTools/Root/BookkeeperTool.cxx
+++ b/Event/EventBookkeeperTools/Root/BookkeeperTool.cxx
@@ -292,14 +292,19 @@ StatusCode BookkeeperTool::loadXAODMetaData()
 
   // If no such object is found then return
   if (itTruthMetaDataPtr == metaDataContainer->end()) {
-    ATH_MSG_ERROR("Could not load weight meta data!");
-    return StatusCode::FAILURE;
+    m_numberOfWeightVariations = 1;
+    ATH_MSG_DEBUG("Could not load weight meta data! Assumming 1 variation.");
+    return StatusCode::SUCCESS;
   }
 
   // Update cached weight data
   const std::vector<std::string> &truthWeightNames = (*itTruthMetaDataPtr)->weightNames();
 
   m_numberOfWeightVariations = truthWeightNames.size();
+  if (m_numberOfWeightVariations == 0) {
+    ATH_MSG_DEBUG("No variations present, setting to 1.");
+    m_numberOfWeightVariations = 1;
+  }
 
   return StatusCode::SUCCESS;
 #endif
diff --git a/Event/EventBookkeeperTools/test/test_CutFlowSvc.py b/Event/EventBookkeeperTools/test/test_CutFlowSvc.py
index 0ad4259ceef016c8570c21677e1566c23b8c3ae1..26403c15b12d9bd714b67a5a4480b67699a61ec1 100755
--- a/Event/EventBookkeeperTools/test/test_CutFlowSvc.py
+++ b/Event/EventBookkeeperTools/test/test_CutFlowSvc.py
@@ -4,6 +4,7 @@
 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 """
 import sys
+from argparse import ArgumentParser
 
 from AthenaCommon.Configurable import Configurable
 from AthenaConfiguration.AllConfigFlags import ConfigFlags
@@ -15,9 +16,18 @@ from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
 
 from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowSvcCfg, CutFlowOutputList
 
+# Argument parsing
+parser = ArgumentParser(prog='dump-cbk')
+parser.add_argument('input', metavar='input', type=str, nargs='?',
+                    help='Specify the input file')
+args = parser.parse_args()
+
 # Setup configuration
 Configurable.configurableRun3Behavior = True
-ConfigFlags.Input.Files = defaultTestFiles.AOD_MC
+if args.input:
+    ConfigFlags.Input.Files = [args.input]
+else:
+    ConfigFlags.Input.Files = defaultTestFiles.AOD_MC
 ConfigFlags.Output.AODFileName = "testAOD.pool.root"
 
 # Flags relating to multithreaded execution
diff --git a/Event/PyDumper/python/Dumpers.py b/Event/PyDumper/python/Dumpers.py
index 4a83826b58ffc60e36decff6a8001b388f29f7c5..fd88cdc1dc55bd44ec93245d890ea579e430eae4 100644
--- a/Event/PyDumper/python/Dumpers.py
+++ b/Event/PyDumper/python/Dumpers.py
@@ -50,6 +50,10 @@ Muon = getattr (Analysis, 'Muon', None) if Analysis else None
 jetAssocNull = cppyy.bind_object(cppyy.nullptr, JetAssociationBase) if JetAssociationBase else None
 muonNull = cppyy.bind_object(cppyy.nullptr, Muon) if Muon else None
 
+InDet = getattr (cppyy.gbl, 'InDet', None)
+InDetLowBetaCandidate = getattr (InDet, 'InDetLowBetaCandidate', None)
+InDetLowBetaCandidateNull = cppyy.bind_object(cppyy.nullptr, InDetLowBetaCandidate) if InDetLowBetaCandidate else None
+
 
 # Work around a cling bug.
 if hasattr(ROOT,'TrackParticleTruthCollection'):
@@ -3814,7 +3818,7 @@ def dump_TrigRNNOutput (p, f):
 
 
 def dump_InDetLowBetaCandidate (p, f):
-    if p is None:
+    if p == InDetLowBetaCandidateNull:
         fprint (f, '(null)')
         return
     if hasattr (p, 'getTRTInverseBeta'):
diff --git a/Event/PyDumper/python/SgDumpLib.py b/Event/PyDumper/python/SgDumpLib.py
index 85387d68d093d3219eae6db828172c02f80233c2..45a1e6273dd70630157238a240e6c7a8b977775f 100644
--- a/Event/PyDumper/python/SgDumpLib.py
+++ b/Event/PyDumper/python/SgDumpLib.py
@@ -279,7 +279,6 @@ def _run_jobo(job, msg, options):
         return sc, out
     sh = out
 
-    from time import time
     logfile = tempfile.NamedTemporaryFile(prefix='sg_dumper_job_',
                                           suffix='.logfile.txt',
                                           dir=os.getcwd(),
@@ -329,6 +328,7 @@ def _run_jobo(job, msg, options):
                 
         return pos
 
+    import time
     while app_handle.poll() is None:
         pos = _monitor(pos)
         time.sleep (5)
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsAlgs/CMakeLists.txt b/InnerDetector/InDetConditions/TRT_ConditionsAlgs/CMakeLists.txt
index eba3d78c7ee82ce7f9886a00dd1800780a8e061c..64053a00d2d8915ebb484bc5b38c2c3d91334ec4 100644
--- a/InnerDetector/InDetConditions/TRT_ConditionsAlgs/CMakeLists.txt
+++ b/InnerDetector/InDetConditions/TRT_ConditionsAlgs/CMakeLists.txt
@@ -5,15 +5,11 @@ atlas_subdir( TRT_ConditionsAlgs )
 
 # External dependencies:
 find_package( CORAL COMPONENTS CoralBase CoralKernel RelationalAccess )
+find_package( COOL COMPONENTS CoolKernel CoolApplication )
 
 # Component(s) in the package:
 atlas_add_component( TRT_ConditionsAlgs
                      src/*.cxx
                      src/components/*.cxx
-                     INCLUDE_DIRS ${CORAL_INCLUDE_DIRS}
-                     LINK_LIBRARIES LINK_LIBRARIES ${CORAL_LIBRARIES} AthenaBaseComps AthenaKernel AthenaPoolUtilities DetDescrConditions GaudiKernel GeoModelUtilities GeoPrimitives InDetIdentifier StoreGateLib TRT_ConditionsData TRT_ConditionsServicesLib TRT_ReadoutGeometry )
-
-# Install files from the package:
-atlas_install_joboptions( share/*.py )
-atlas_install_runtime( share/*.txt share/*.py )
-
+                     INCLUDE_DIRS ${CORAL_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS}
+                     LINK_LIBRARIES LINK_LIBRARIES ${CORAL_LIBRARIES} ${COOL_LIBRARIES} AthenaBaseComps AthenaKernel AthenaPoolUtilities DetDescrConditions GaudiKernel GeoModelUtilities GeoPrimitives InDetIdentifier StoreGateLib TRT_ConditionsData TRT_ConditionsServicesLib TRT_ReadoutGeometry )
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/CMakeLists.txt b/InnerDetector/InDetConditions/TRT_ConditionsNN/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..79655d48bbc22b8a5d091c8bbb58b42bc9410324
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/CMakeLists.txt
@@ -0,0 +1,23 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+# Declare the package name:
+atlas_subdir( TRT_ConditionsNN )
+
+# External dependencies:
+find_package( CORAL COMPONENTS CoralBase CoralKernel RelationalAccess )
+find_package( COOL COMPONENTS CoolKernel CoolApplication )
+find_package( lwtnn )
+
+# Component(s) in the package:
+atlas_add_library( TRT_ConditionsNNLib
+                   src/TRTPIDNN.cxx
+                   PUBLIC_HEADERS TRT_ConditionsNN
+                   INCLUDE_DIRS ${LWTNN_INCLUDE_DIRS}
+                   LINK_LIBRARIES ${LWTNN_LIBRARIES} AthenaKernel AthenaPoolUtilities Identifier GaudiKernel )
+
+
+atlas_add_component( TRT_ConditionsNN
+                     src/*Alg.cxx
+                     src/components/*.cxx
+                     INCLUDE_DIRS ${CORAL_INCLUDE_DIRS} ${COOL_INCLUDE_DIRS}
+                     LINK_LIBRARIES ${CORAL_LIBRARIES} ${COOL_LIBRARIES} AthenaBaseComps AthenaKernel AthenaPoolUtilities GaudiKernel StoreGateLib TRT_ConditionsNNLib )
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/TRT_ConditionsNN/ATLAS_CHECK_THREAD_SAFETY b/InnerDetector/InDetConditions/TRT_ConditionsNN/TRT_ConditionsNN/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 0000000000000000000000000000000000000000..666a7e13f5a0aa733f0a9aa93ad6b7619269ebf8
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/TRT_ConditionsNN/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+InnerDetector/InDetConditions/TRT_ConditionsNN
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/TRT_ConditionsNN/TRTPIDNN.h b/InnerDetector/InDetConditions/TRT_ConditionsNN/TRT_ConditionsNN/TRTPIDNN.h
new file mode 100644
index 0000000000000000000000000000000000000000..a916d1bd92487cfc7615593a0db45614c49f0f08
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/TRT_ConditionsNN/TRTPIDNN.h
@@ -0,0 +1,77 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+#ifndef INDETTRTPIDNN_H
+#define INDETTRTPIDNN_H
+
+///////////////////////////////////////////////////////////////////
+// TRTPIDNN.h, (c) ATLAS Detector software
+///////////////////////////////////////////////////////////////////
+
+/****************************************************************************************\
+
+  Class to wrap the lwtnn instance of the TRT PID NN. It is instantiated in PIDNNCondAlg.
+
+  Author: Christian Grefe (christian.grefe@cern.ch)
+
+\****************************************************************************************/
+#include "GaudiKernel/StatusCode.h"
+#include "AthenaKernel/CLASS_DEF.h"
+#include "AthenaKernel/CondCont.h"
+#include "lwtnn/LightweightGraph.hh"
+#include <map>
+#include <memory>
+#include <string>
+#include <vector>
+
+namespace InDet {
+  class TRTPIDNN {
+  public:
+    TRTPIDNN()=default;
+    virtual ~TRTPIDNN()=default;
+
+    std::string getDefaultOutputNode() const {
+      return m_outputNode;
+    }
+
+    std::string getDefaultOutputLabel() const {
+      return m_outputLabel;
+    }
+
+    // get the structure of the scalar inputs to the NN
+    std::map<std::string, std::map<std::string, double>> getScalarInputs() const {
+      return m_scalarInputs;
+    }
+
+    // get the structure of the vector inputs to the NN
+    std::map<std::string, std::map<std::string, std::vector<double>>> getVectorInputs() const {
+      return m_vectorInputs;
+    }
+
+    // calculate NN response for default output node and label
+    double evaluate(std::map<std::string, std::map<std::string, double>>& scalarInputs,
+             std::map<std::string, std::map<std::string, std::vector<double>>>& vectorInputs) const {
+      return evaluate(scalarInputs, vectorInputs, m_outputNode, m_outputLabel);
+    }
+
+    // calculate NN response
+    double evaluate(std::map<std::string, std::map<std::string, double>>& scalarInputs,
+             std::map<std::string, std::map<std::string, std::vector<double>>>& vectorInputs,
+             const std::string& outputNode, const std::string& outputLabel) const;
+
+    // set up the NN
+    StatusCode configure(const std::string& json);
+
+  private:
+    std::unique_ptr<lwt::LightweightGraph> m_nn;   // the NN
+    lwt::GraphConfig m_nnConfig;  // cofiguration of the NN
+    std::map<std::string, std::map<std::string, double>> m_scalarInputs;  // template for the structure of the scalar inputs to the NN
+    std::map<std::string, std::map<std::string, std::vector<double>>> m_vectorInputs;  // template for the structure of the vector inputs to the NN
+    std::string m_outputNode;  // name of the output node of the NN
+    std::string m_outputLabel;  // name of the output label of the NN
+};
+}
+CLASS_DEF(InDet::TRTPIDNN,341715853,1)
+CONDCONT_DEF(InDet::TRTPIDNN,710491600);
+
+#endif
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/doc/packagedoc.h b/InnerDetector/InDetConditions/TRT_ConditionsNN/doc/packagedoc.h
new file mode 100644
index 0000000000000000000000000000000000000000..f77889b0c8f69ceb9e2abfa0d9c16a2751985574
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/doc/packagedoc.h
@@ -0,0 +1,27 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+/**
+@page TRT_ConditionsNN_page TRT_ConditionsNN package
+
+@author christian.grefe@cern.ch
+
+@section TRT_ConditionsNN_TRT_ConditionsNNIntro Introduction
+
+This package provides conditions algorithms and conditions data objects for NN-related TRT objects.
+
+@section TRT_ConditionsNN_TRT_ConditionsNNOverview Class Overview
+
+  -  TRTPIDNN: holds the NN representation
+  -  TRTPIDNNCondAlg: Conditions algorithm that provides TRTPIDNN objects
+
+
+*/
+/**
+
+
+*/
+/**
+
+*/
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNN.cxx b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNN.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..4ad7e38879bb0590268147aadd8ede5cadc67721
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNN.cxx
@@ -0,0 +1,74 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+#include "TRT_ConditionsNN/TRTPIDNN.h"
+#include "AthenaKernel/getMessageSvc.h"
+#include "GaudiKernel/MsgStream.h"
+#include <iostream>
+
+// lwtnn includes
+//#include "lwtnn/LightweightGraph.hh"
+#include "lwtnn/Exceptions.hh"
+#include "lwtnn/parse_json.hh"
+
+// JSON parsing
+#include "boost/property_tree/ptree.hpp"
+#include "boost/property_tree/json_parser.hpp"
+#include "boost/property_tree/exceptions.hpp"
+
+double InDet::TRTPIDNN::evaluate(std::map<std::string, std::map<std::string, double>>& scalarInputs,
+        std::map<std::string, std::map<std::string, std::vector<double>>>& vectorInputs,
+        const std::string& outputNode, const std::string& outputLabel) const {
+  MsgStream log(Athena::getMessageSvc(),"TRTPIDNN");
+  const auto result = m_nn->compute(scalarInputs, vectorInputs, outputNode);
+  const auto itResult = result.find(outputLabel);
+  if (itResult == result.end()) {
+    log << MSG::ERROR << " unable to find output: node=" << outputNode << ", label=" << outputLabel << endmsg;
+    return 0.5;
+  }
+  return itResult->second;
+}
+
+StatusCode InDet::TRTPIDNN::configure(const std::string& json) {
+  MsgStream log(Athena::getMessageSvc(),"TRTPIDNN");
+  try {
+    std::istringstream inputCfg(json);
+    m_nnConfig = lwt::parse_json_graph(inputCfg);
+  } catch (boost::property_tree::ptree_error& err) {
+    log << MSG::ERROR << " NN not readable: " << err.what() << endmsg;
+    return StatusCode::FAILURE;
+  }
+
+  try {
+    m_nn.reset(new lwt::LightweightGraph(m_nnConfig));
+  } catch (lwt::NNConfigurationException& err) {
+    log << MSG::ERROR << " NN configuration failed: " << err.what() << endmsg;
+    return StatusCode::FAILURE;
+  }
+
+  // set the default output node name
+  if (m_nnConfig.outputs.empty() or m_nnConfig.outputs.begin()->second.labels.empty()) {
+    log << MSG::ERROR << " unable to define NN output." << endmsg;
+    return StatusCode::FAILURE;
+  }
+  m_outputNode = m_nnConfig.outputs.begin()->first;
+  m_outputLabel = *(m_nnConfig.outputs[m_outputNode].labels.begin());
+
+  // store templates of the structure of the inputs to the NN
+  m_scalarInputs.clear();
+  for (auto input : m_nnConfig.inputs) {
+    m_scalarInputs[input.name] = {};
+    for (auto variable : input.variables) {
+      m_scalarInputs[input.name][variable.name] = input.defaults[variable.name];
+    }
+  }
+  m_vectorInputs.clear();
+  for (auto input : m_nnConfig.input_sequences) {
+    m_vectorInputs[input.name] = {};
+    for (auto variable : input.variables) {
+      m_vectorInputs[input.name][variable.name] = {};
+    }
+  }
+
+  return StatusCode::SUCCESS;
+}
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNNCondAlg.cxx b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNNCondAlg.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..1683027fcb2219783241938660a03cf4ff8913e0
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNNCondAlg.cxx
@@ -0,0 +1,91 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "TRTPIDNNCondAlg.h"
+#include "CoolKernel/IObject.h"
+
+TRTPIDNNCondAlg::TRTPIDNNCondAlg(const std::string& name
+				 , ISvcLocator* pSvcLocator )
+  : ::AthAlgorithm(name,pSvcLocator),
+    m_condSvc("CondSvc",name)
+{}
+TRTPIDNNCondAlg::~TRTPIDNNCondAlg(){}
+
+StatusCode TRTPIDNNCondAlg::initialize()
+{
+
+  // CondSvc
+  ATH_CHECK( m_condSvc.retrieve() );
+
+  // Read key
+  ATH_CHECK( m_readKey.initialize() );
+
+  // Register write handle
+  ATH_CHECK( m_writeKey.initialize() );
+
+  if (m_condSvc->regHandle(this, m_writeKey).isFailure()) {
+    ATH_MSG_ERROR("unable to register WriteCondHandle " << m_writeKey.fullKey() << " with CondSvc");
+    return StatusCode::FAILURE;
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+StatusCode TRTPIDNNCondAlg::execute()
+{
+  ATH_MSG_DEBUG("execute " << name());
+
+  // Construct Write Cond Handle and check its validity
+
+  SG::WriteCondHandle<InDet::TRTPIDNN> writeHandle{m_writeKey};
+
+  // Do we have a valid Write Cond Handle for current time?
+  if(writeHandle.isValid()) {
+    ATH_MSG_DEBUG("CondHandle " << writeHandle.fullKey() << " is already valid."
+                  << ". In theory this should not be called, but may happen"
+                  << " if multiple concurrent events are being processed out of order.");
+
+    return StatusCode::SUCCESS; 
+  }
+
+  std::unique_ptr<InDet::TRTPIDNN> writeCdo{std::make_unique<InDet::TRTPIDNN>()};
+  
+  // Read the NN configuration from the ReadHandle
+  SG::ReadCondHandle<CondAttrListCollection> readHandle{m_readKey};
+  const CondAttrListCollection* attrListColl{*readHandle};
+  if (attrListColl==nullptr or attrListColl->size() != 1) {
+    ATH_MSG_ERROR(" Problem reading /TRT/Calib/PID_NN cond object");
+    return StatusCode::FAILURE;
+  }
+  // The NN configuration is stored as one big string in the first channel
+  const coral::AttributeList& attrList = attrListColl->begin()->second;
+  const std::string json = attrList["NN_config"].data<cool::String16M>();
+  if (StatusCode::SUCCESS != writeCdo->configure(json)) {
+    ATH_MSG_ERROR ("Problem setting up TRTPIDNN.");
+    return StatusCode::FAILURE;     
+  }
+ 
+  // Assign range of writeCdo to that of the ReadHandle 
+  EventIDRange rangeW;
+
+  if(!readHandle.range(rangeW)) {
+        ATH_MSG_ERROR("Failed to retrieve validity range for " << readHandle.key());
+        return StatusCode::FAILURE;
+  }
+
+  // Record CDO
+ if(writeHandle.record(rangeW,std::move(writeCdo)).isFailure()) {
+    ATH_MSG_ERROR("Could not record InDet::TRTPIDNN " << writeHandle.key() 
+		  << " with EventRange " << rangeW
+		  << " into Conditions Store");
+    return StatusCode::FAILURE;
+  }
+
+  ATH_MSG_INFO("Recorded InDet::TRTPIDNN " << writeHandle.key() 
+		  << " with EventRange " << rangeW
+		  << " into Conditions Store");
+
+
+  return StatusCode::SUCCESS;
+}
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNNCondAlg.h b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNNCondAlg.h
new file mode 100644
index 0000000000000000000000000000000000000000..ae2bd3338402985ff6202bbf0dce76daebc5ae3a
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/TRTPIDNNCondAlg.h
@@ -0,0 +1,38 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef TRTPIDNNCONDALG_H
+#define TRTPIDNNCONDALG_H
+
+#include "AthenaBaseComps/AthAlgorithm.h"
+#include "StoreGate/WriteCondHandleKey.h"
+#include "TRT_ConditionsNN/TRTPIDNN.h"
+#include "AthenaPoolUtilities/CondAttrListCollection.h"
+#include "GaudiKernel/ICondSvc.h"
+#include "Gaudi/Property.h"
+
+/****************************************************************************************\
+
+  Conditions algorithm to handle TRT PID NN.
+
+  Author: Christian Grefe (christian.grefe@cern.ch)
+
+\****************************************************************************************/
+
+class TRTPIDNNCondAlg : public AthAlgorithm
+{
+ public:
+  TRTPIDNNCondAlg(const std::string& name, ISvcLocator* pSvcLocator);
+  virtual ~TRTPIDNNCondAlg() override;
+
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute() override;
+
+ private:
+  ServiceHandle<ICondSvc> m_condSvc;
+  SG::ReadCondHandleKey<CondAttrListCollection> m_readKey{this,"TRTPIDNNReadKey","/TRT/Calib/PID_NN","TRTPIDNN in-key"};
+  SG::WriteCondHandleKey<InDet::TRTPIDNN> m_writeKey{this,"TRTPIDNNWriteKey","TRTPIDNN","TRTPIDNN out-key"};
+
+};
+#endif
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsNN/src/components/TRT_ConditionsNN_entries.cxx b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/components/TRT_ConditionsNN_entries.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..83ad9c0beb60d9f070948f2d5504218655a91dee
--- /dev/null
+++ b/InnerDetector/InDetConditions/TRT_ConditionsNN/src/components/TRT_ConditionsNN_entries.cxx
@@ -0,0 +1,3 @@
+#include "../TRTPIDNNCondAlg.h"
+
+DECLARE_COMPONENT( TRTPIDNNCondAlg )
diff --git a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py
index 9e51a95f7036244662b70554598ab0189b48298b..68302473537b4af138bf709348b2022e21e78754 100644
--- a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py
@@ -1088,7 +1088,6 @@ def getInDetTrackSummaryTool(name='InDetTrackSummaryTool',**kwargs) :
                          doSharedHits           = False,
                          doHolesInDet           = do_holes,
                          TRT_ElectronPidTool    = None,         # we don't want to use those tools during pattern
-                         TRT_ToT_dEdxTool       = None,         # dito
                          PixelToTPIDTool        = None)         # we don't want to use those tools during pattern
     from TrkTrackSummaryTool.TrkTrackSummaryToolConf import Trk__TrackSummaryTool
     return Trk__TrackSummaryTool(name = the_name, **kwargs)
@@ -1111,16 +1110,12 @@ def getInDetTrackSummaryToolSharedHits(name='InDetTrackSummaryToolSharedHits',**
     if 'TRT_ElectronPidTool' not in kwargs :
         kwargs = setDefaults( kwargs, TRT_ElectronPidTool    = getInDetTRT_ElectronPidTool())
 
-    if 'TRT_ToT_dEdxTool' not in kwargs :
-        kwargs = setDefaults( kwargs, TRT_ToT_dEdxTool       = getInDetTRT_dEdxTool())
-
     if 'PixelToTPIDTool' not in kwargs :
         kwargs = setDefaults( kwargs, PixelToTPIDTool        = getInDetPixelToTPIDTool())
 
     from InDetRecExample.InDetJobProperties import InDetFlags
     kwargs = setDefaults(kwargs,
-                         doSharedHits           = InDetFlags.doSharedHits(),
-                         minTRThitsForTRTdEdx   = 1)    # default is 1
+                         doSharedHits           = InDetFlags.doSharedHits())
 
     return getInDetTrackSummaryTool( name, **kwargs)
 
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py
index 4054e492ba74ff5888faeb4dfc394bdca99f017e..4a047c5eaf4bbecbe29ee11e8b2a9ab1030c8d5d 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecConditionsAccess.py
@@ -471,6 +471,11 @@ if DetFlags.haveRIO.TRT_on():
     if not conddb.folderRequested( "/TRT/Calib/ToT/ToTValue"):
        conddb.addFolderSplitOnline( "TRT", "/TRT/Onl/Calib/ToT/ToTValue", "/TRT/Calib/ToT/ToTValue",className='CondAttrListCollection')
 
+    if not conddb.folderRequested( "/TRT/Calib/PID_NN"):
+       conddb.addFolderSplitOnline( "TRT", "/TRT/Onl/Calib/PID_NN", "/TRT/Calib/PID_NN",className='CondAttrListCollection')
+    # FIXME: force tag until the folder is included in global tag
+    conddb.addOverride("/TRT/Calib/PID_NN", "TRTCalibPID_NN_v1")
+    conddb.addOverride("/TRT/Onl/Calib/PID_NN", "TRTCalibPID_NN_v1")
 
     #
     # now do the services
@@ -522,6 +527,10 @@ if DetFlags.haveRIO.TRT_on():
     from TRT_ConditionsAlgs.TRT_ConditionsAlgsConf import TRTHTCondAlg
     TRTHTCondAlg = TRTHTCondAlg(name = "TRTHTCondAlg")
 
+    # PID NN
+    from TRT_ConditionsNN.TRT_ConditionsNNConf import TRTPIDNNCondAlg
+    TRTPIDNNCondAlg = TRTPIDNNCondAlg(name = "TRTPIDNNCondAlg")
+
     # dEdx probability algorithm
     from TRT_ConditionsAlgs.TRT_ConditionsAlgsConf import TRTToTCondAlg
     TRTToTCondAlg = TRTToTCondAlg(name = "TRTToTCondAlg")
@@ -542,6 +551,8 @@ if DetFlags.haveRIO.TRT_on():
     # Condition algorithms for Pid
     if not hasattr(condSeq, "TRTHTCondAlg"):
         condSeq += TRTHTCondAlg
+    if not hasattr(condSeq, "TRTPIDNNCondAlg"):
+        condSeq += TRTPIDNNCondAlg
     if not hasattr(condSeq, "TRTToTCondAlg"):
         condSeq += TRTToTCondAlg
 
diff --git a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/TrackSummaryToolWorkaround.py b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/TrackSummaryToolWorkaround.py
index 0df7e5c1dc1dfab10eb03c67dbea10d429cb9823..72cf3e03e4883aa6a77da7cc3c36f8431677ffd6 100644
--- a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/TrackSummaryToolWorkaround.py
+++ b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/TrackSummaryToolWorkaround.py
@@ -100,7 +100,6 @@ def TrackSummaryToolWorkaround(flags):
                                                   doSharedHits           = False,
                                                   doHolesInDet           = True,
                                                   TRT_ElectronPidTool    = '',
-                                                  TRT_ToT_dEdxTool       = '',
                                                   PixelToTPIDTool        = '')
     result.setPrivateTools(InDetTrackSummaryTool)
     ############################## WORKAROUND (END) ############################
diff --git a/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelGangedClusterAmbiguities.h b/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelGangedClusterAmbiguities.h
index 3e044d86b77a5733338073f10ca48b624e2cde7f..fe1968a56e7414ced3fe96f9a3ebbc47e7e089d9 100755
--- a/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelGangedClusterAmbiguities.h
+++ b/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/PixelGangedClusterAmbiguities.h
@@ -26,6 +26,13 @@ namespace InDet{
     {
       Identifier ida = (a!=0 ? a->identify() : Identifier(0));
       Identifier idb = (b!=0 ? b->identify() : Identifier(0));
+
+      // sometimes different clusters have the same identity
+      // use the size to determine the order/break degeneracy
+      if( ida == idb && ida != Identifier(0) ) { 
+        return (a->width() < b->width());
+      }
+        
       return ida < idb;
     }
   };
diff --git a/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiWidth.h b/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiWidth.h
index 563e23dfab39c45b091f5d126292919c86cc235f..f7663d62483c4bba5b87d743de952c757d3c0f29 100755
--- a/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiWidth.h
+++ b/InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiWidth.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -63,6 +63,9 @@ namespace InDet {
    // return z
    double z() const;
 
+   // comparison
+   bool operator <(const SiWidth& width) const;
+   bool operator >(const SiWidth& width) const;
 
    ///////////////////////////////////////////////////////////////////
    // Non-const methods:
@@ -128,6 +131,28 @@ namespace InDet {
   {
     return m_phirzWidth[Trk::locZ];    
   }
+
+  // comparison
+  // return true if smaller in either direction
+  inline bool InDet::SiWidth::operator <(const InDet::SiWidth &width) const
+  {
+    // size phi
+    if ( m_colrow[0] < width.colRow()[0] ) { return true; }
+    // size z
+    if ( m_colrow[1] < width.colRow()[1] ) { return true; }
+    return false;
+  }
+
+  // flip logic of <
+  inline bool InDet::SiWidth::operator >(const InDet::SiWidth &width) const
+  {
+    // size phi
+    if ( m_colrow[0] < width.colRow()[0] ) { return false; }
+    // size z
+    if ( m_colrow[1] < width.colRow()[1] ) { return false; }
+    return true;
+  }
+
   
   inline void SiWidth::setColumn(const double col)
   {
@@ -137,7 +162,7 @@ namespace InDet {
   inline void SiWidth::setRow(const double row)
   {
    m_colrow[1] = row;
-   }
+  }
 
   inline void SiWidth::setColRow(const Amg::Vector2D& colRow)
   {
diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/CMakeLists.txt b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/CMakeLists.txt
index c74ef1d4367d928934d4ed743ca10ca21f4a31f8..9d8cd9e769d483966c270584cb9436ea579f993c 100644
--- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/CMakeLists.txt
+++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/CMakeLists.txt
@@ -11,8 +11,7 @@ atlas_add_library( TRT_ElectronPidToolsLib
                    TRT_ElectronPidTools/*.h
                    INTERFACE
                    PUBLIC_HEADERS TRT_ElectronPidTools
-                   LINK_LIBRARIES GaudiKernel AthenaBaseComps AthenaKernel TrkTrack InDetRawData TrkParameters TrkToolInterfaces TRT_ConditionsData TrkEventPrimitives TRT_ConditionsServicesLib InDetPrepRawData StoreGateLib TRT_ConditionsData )
-
+                   LINK_LIBRARIES GaudiKernel AthenaBaseComps AthenaKernel TrkTrack InDetRawData TrkParameters TrkToolInterfaces TRT_ConditionsData TrkEventPrimitives TRT_ConditionsServicesLib InDetPrepRawData StoreGateLib TRT_ConditionsNNLib )
 # Component(s) in the package:
 atlas_add_component( TRT_ElectronPidTools
                      src/*.cxx
diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_ElectronPidToolRun2.h b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_ElectronPidToolRun2.h
index 0456cd962d445f63b35cfcb859ab9a702a609958..8f63d7511f9576ff988e1b3daf75977372c7774e 100644
--- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_ElectronPidToolRun2.h
+++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_ElectronPidToolRun2.h
@@ -19,6 +19,7 @@
 #include "TrkToolInterfaces/ITRT_ElectronPidTool.h"
 #include "TRT_ElectronPidTools/ITRT_ElectronToTTool.h"
 #include "TRT_ConditionsData/HTcalculator.h"
+#include "TRT_ConditionsNN/TRTPIDNN.h"
 #include "TrkEventPrimitives/ParticleHypothesis.h"
 
 #include "TRT_ElectronPidTools/ITRT_LocalOccupancy.h"
@@ -143,6 +144,11 @@ namespace InDet
                                                      "HTcalculator",
                                                      "HTcalculator",
                                                      "HTcalculator in-key" };
+
+    SG::ReadCondHandleKey<InDet::TRTPIDNN> m_TRTPIDNNReadKey{ this,
+                                                     "TRTPIDNN",
+                                                     "TRTPIDNN",
+                                                     "TRTPIDNN in-key" };
    }; 
 } // end of namespace
 
diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx
index 1b283a54e4e5c5382308812b3586be7060cd7eef..04e0f80d2defd7c734dd3c973e334c8a2ab48d3b 100644
--- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx
+++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ElectronPidToolRun2.cxx
@@ -21,6 +21,7 @@
 
 // Tracking:
 #include "TrkTrack/Track.h"
+#include "TrkTrackSummary/TrackSummary.h"
 #include "TrkTrack/TrackStateOnSurface.h"
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
@@ -35,6 +36,9 @@
 // ToT Tool Interface
 #include "TRT_ElectronPidTools/ITRT_ToT_dEdx.h"
 
+// For the track length in straw calculations
+#include "TRT_ToT_dEdx.h"
+
 // Particle masses
 
 // Math functions:
@@ -48,6 +52,16 @@
 
 //#include "TRT_ElectronPidToolRun2_HTcalculation.cxx"
 
+// Helper method to store NN input variables into maps
+template <typename T>
+void storeNNVariable(std::map<std::string, T>& theMap, const std::string& name, const T& value) {
+  auto it = theMap.find(name);
+  if (it != theMap.end()) {
+    it->second = value;
+  }
+}
+
+
 
 /*****************************************************************************\
 |*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*|
@@ -96,6 +110,8 @@ StatusCode InDet::TRT_ElectronPidToolRun2::initialize()
 
   ATH_CHECK( m_HTReadKey.initialize() );
 
+  ATH_CHECK( m_TRTPIDNNReadKey.initialize() );
+
   CHECK( m_TRTStrawSummaryTool.retrieve() );
   if ( !m_TRTStrawSummaryTool.empty()) ATH_MSG_INFO( "Retrieved tool " << m_TRTStrawSummaryTool);
 
@@ -119,11 +135,7 @@ StatusCode InDet::TRT_ElectronPidToolRun2::finalize()
 std::vector<float> InDet::TRT_ElectronPidToolRun2::electronProbability_old(const Trk::Track& track)
 {
   // Simply return values without calculation
-  std::vector<float> PIDvalues(4);
-  PIDvalues[0] = 0.5;
-  PIDvalues[1] = 0.5;
-  PIDvalues[2] = 0.0;
-  PIDvalues[3] = 0.5;
+  std::vector<float> PIDvalues = Trk::eProbabilityDefault;
   const Trk::TrackParameters* perigee = track.perigeeParameters();
   if (!perigee) { return PIDvalues; }
   return PIDvalues;
@@ -146,15 +158,16 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
    ATH_MSG_WARNING ("  No Pid calibration from the DB.");
  }
 
-  //Initialize the return vector
-  std::vector<float> PIDvalues(5);
-  float & prob_El_Comb      = PIDvalues[0] = 0.5;
-  float & prob_El_HT        = PIDvalues[1] = 0.5;
-  float & prob_El_ToT       = PIDvalues[2] = 0.5;
-  float & prob_El_Brem      = PIDvalues[3] = 0.5;
-  float & occ_local         = PIDvalues[4] = 0.0;
+ // Get the PID NN
+ SG::ReadCondHandle<InDet::TRTPIDNN> readHandlePIDNN{m_TRTPIDNNReadKey,ctx};
+ const InDet::TRTPIDNN* PIDNN = (*readHandlePIDNN);
+ // make sure some calibration is available
+ if(PIDNN==nullptr) {
+   ATH_MSG_WARNING ("  No PID NN available from the DB.");
+ }
 
-  float dEdx = 0.0;
+  // Initialize the vector with default PID values
+  std::vector<float> PIDvalues = Trk::eProbabilityDefault;
 
   // Check for perigee:
   const Trk::TrackParameters* perigee = track.perigeeParameters();
@@ -183,7 +196,12 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
   double eta  = -log(tan(theta/2.0));
 
   // Check the tool to get the local occupancy (i.e. for the track in question):
-  occ_local = m_LocalOccTool->LocalOccupancy(ctx,track);
+  PIDvalues[Trk::TRTTrackOccupancy] = m_LocalOccTool->LocalOccupancy(ctx,track);
+
+  if (PIDvalues[Trk::TRTTrackOccupancy] > 1.0  || PIDvalues[Trk::TRTTrackOccupancy]  < 0.0) {
+    ATH_MSG_WARNING("  Occupancy was outside allowed range! Returning default Pid values. Occupancy = " << PIDvalues[Trk::TRTTrackOccupancy] );
+    return PIDvalues;
+  }
 
   ATH_MSG_DEBUG ("");
   ATH_MSG_DEBUG ("");
@@ -199,8 +217,20 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
   // Loop over TRT hits on track, and calculate HT and R-ToT probability:
   // ------------------------------------------------------------------------------------
 
+  std::vector<double> hit_HTMB;
+  std::vector<double> hit_gasType;
+  std::vector<double> hit_tot;
+  std::vector<double> hit_L;
+  std::vector<double> hit_rTrkWire;
+  std::vector<double> hit_HitZ;
+  std::vector<double> hit_HitR;
+  std::vector<double> hit_isPrec;
+
   unsigned int nTRThits     = 0;
   unsigned int nTRThitsHTMB = 0;
+  unsigned int nXehits      = 0;
+  unsigned int nArhits      = 0;
+  unsigned int nPrecHits    = 0;
 
 
   // Check for track states:
@@ -221,15 +251,7 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
     if (!measurement) continue;
 
     // Get drift circle (ensures that hit is from TRT):
-    const InDet::TRT_DriftCircleOnTrack* driftcircle = nullptr;
-    if (measurement->type(Trk::MeasurementBaseType::RIO_OnTrack)) {
-      const Trk::RIO_OnTrack* tmpRio =
-        static_cast<const Trk::RIO_OnTrack*>(measurement);
-      if (tmpRio->rioType(Trk::RIO_OnTrackType::TRT_DriftCircle)) {
-        driftcircle = static_cast<const InDet::TRT_DriftCircleOnTrack*>(tmpRio);
-      }
-    }
-
+    const InDet::TRT_DriftCircleOnTrack* driftcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(measurement);
     if (!driftcircle) continue;
 
     // From now (May 2015) onwards, we ONLY USE MIDDLE HT BIT:
@@ -237,6 +259,7 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
 
     nTRThits++;
     if (isHTMB) nTRThitsHTMB++;
+    hit_HTMB.push_back(static_cast<double>(isHTMB));
 
 
     // ------------------------------------------------------------------------------------
@@ -263,14 +286,17 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
     }
 
     // Get Z (Barrel) or R (Endcap) location of the hit, and distance from track to wire (i.e. anode) in straw:
-    double HitZ, HitR, rTrkWire;
-    bool hasTrackParameters= true; // Keep track of this for HT prob calculation
+    double HitZ = 0.;
+    double HitR = 0.;
+    double rTrkWire = 0.;
+    bool hasTrackParameters = true; // Keep track of this for HT prob calculation
     if ((*tsosIter)->trackParameters()) {
       // If we have precise information (from hit), get that:
       const Amg::Vector3D& gp = driftcircle->globalPosition();
       HitR = gp.perp();
       HitZ = gp.z();
       rTrkWire = fabs((*tsosIter)->trackParameters()->parameters()[Trk::driftRadius]);
+      if (rTrkWire > 2.2) rTrkWire = 2.175;   // cut off track-to-wire distance for outliers
     } else {
       // Otherwise just use the straw coordinates:
       hasTrackParameters = false; // Jared - pass this to HT calculation
@@ -279,6 +305,12 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
       rTrkWire = 0;
     }
 
+    // fill vectors for NN PID
+    hit_HitZ.push_back(HitZ);
+    hit_HitR.push_back(HitR);
+    hit_rTrkWire.push_back(rTrkWire);
+    hit_L.push_back(TRT_ToT_dEdx::calculateTrackLengthInStraw((*tsosIter), m_trtId));
+    hit_tot.push_back(driftcircle->timeOverThreshold());
 
     // ------------------------------------------------------------------------------------
     // Collection and checks of input variables for HT probability calculation:
@@ -302,13 +334,6 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
       ZRpos[TrtPart] = ZRpos_min[TrtPart] + 0.001;
     }
 
-    if (rTrkWire > 2.2) rTrkWire = 2.175;   // Happens once in a while - no need for warning!
-
-    if (occ_local > 1.0  ||  occ_local < 0.0) {
-      ATH_MSG_WARNING("  Occupancy was outside allowed range!  TrtPart = " << TrtPart << "  Occupancy = " << occ_local);
-      continue;
-    }
-
     // ------------------------------------------------------------------------------------
     // Calculate the HT probability:
     // ------------------------------------------------------------------------------------
@@ -332,7 +357,24 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
                   << nTRThits << "  TrtPart: " << TrtPart
                   << "  GasType: " << GasType << "  SL: " << StrawLayer
                   << "  ZRpos: " << ZRpos[TrtPart] << "  TWdist: " << rTrkWire
-                  << "  Occ_Local: " << occ_local << "  HTMB: " << isHTMB);
+                  << "  Occ_Local: " << PIDvalues[Trk::TRTTrackOccupancy]  << "  HTMB: " << isHTMB);
+
+    // RNN gas type observables
+    hit_gasType.push_back(static_cast<double>(GasType));
+    if (GasType == 0) {
+      nXehits++;
+    } else if (GasType == 1) {
+      nArhits++;
+    }
+
+    // RNN hit preciion observables
+    float errDc = sqrt(driftcircle->localCovariance()(Trk::driftRadius, Trk::driftRadius));
+    bool isPrec = false;
+    if (errDc < 1.0) {
+      isPrec = true;
+      nPrecHits++;
+    }
+    hit_isPrec.push_back(static_cast<double>(isPrec));
 
     // Then call pHT functions with these values:
     // ------------------------------------------
@@ -344,7 +386,7 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
                                      StrawLayer,
                                      ZRpos[TrtPart],
                                      rTrkWire,
-                                     occ_local,
+                                     PIDvalues[Trk::TRTTrackOccupancy] ,
                                      hasTrackParameters);
     double pHTpi = HTcalc->getProbHT(pTrk,
                                      Trk::pion,
@@ -353,7 +395,7 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
                                      StrawLayer,
                                      ZRpos[TrtPart],
                                      rTrkWire,
-                                     occ_local,
+                                     PIDvalues[Trk::TRTTrackOccupancy] ,
                                      hasTrackParameters);
 
     if (pHTel > 0.999 || pHTpi > 0.999 || pHTel < 0.001 || pHTpi < 0.001) {
@@ -361,7 +403,7 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
                     << pHTel << "  pHTpi = " << pHTpi
                     << "     TrtPart: " << TrtPart << "  SL: " << StrawLayer
                     << "  ZRpos: " << ZRpos[TrtPart] << "  TWdist: " << rTrkWire
-                    << "  Occ_Local: " << occ_local);
+                    << "  Occ_Local: " << PIDvalues[Trk::TRTTrackOccupancy] );
       continue;
     }
 
@@ -370,7 +412,7 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
                     << pHTel << "  pHTpi = " << pHTpi
                     << "     TrtPart: " << TrtPart << "  SL: " << StrawLayer
                     << "  ZRpos: " << ZRpos[TrtPart] << "  TWdist: " << rTrkWire
-                    << "  Occ_Local: " << occ_local);
+                    << "  Occ_Local: " << PIDvalues[Trk::TRTTrackOccupancy] );
       continue;
     }
 
@@ -379,44 +421,84 @@ InDet::TRT_ElectronPidToolRun2::electronProbability(const Trk::Track& track) con
     else        {pHTel_prod *= 1.0-pHTel;  pHTpi_prod *= 1.0-pHTpi;}
     ATH_MSG_DEBUG ("check         pHT(el): " << pHTel << "  pHT(pi): " << pHTpi );
 
-    // Jared - Development Output...
-
-    //std::cout << "check         pHT(el): " << pHTel << "  pHT(pi): " << pHTpi << std::endl;
-
-  }//of loop over hits
+  } // end of loop over hits
 
 
   // If number of hits is adequate (default is 5 hits), calculate HT and ToT probability.
   if (not (nTRThits >= m_minTRThits)) return PIDvalues;
 
   // Calculate electron probability (HT)
-  prob_El_HT = pHTel_prod / (pHTel_prod + pHTpi_prod);
+  PIDvalues[Trk::eProbabilityHT] = pHTel_prod / (pHTel_prod + pHTpi_prod);
 
-  ATH_MSG_DEBUG ("check---------------------------------------------------------------------------------------");
-  ATH_MSG_DEBUG("check  nTRThits: " << nTRThits << "  : " << nTRThitsHTMB
-                                    << "  pHTel_prod: " << pHTel_prod
-                                    << "  pHTpi_prod: " << pHTpi_prod
-                                    << "  probEl: " << prob_El_HT);
-  ATH_MSG_DEBUG ("check---------------------------------------------------------------------------------------");
-  ATH_MSG_DEBUG ("");
-  ATH_MSG_DEBUG ("");
+  ATH_MSG_DEBUG ("check  nTRThits: " << nTRThits << "  : " << nTRThitsHTMB
+                                     << "  pHTel_prod: " << pHTel_prod
+                                     << "  pHTpi_prod: " << pHTpi_prod
+                                     << "  probEl: " << PIDvalues[Trk::eProbabilityHT]);
 
-  // Jared - ToT Implementation
-  dEdx = m_TRTdEdxTool->dEdx(ctx,&track, false); // Divide by L, exclude HT hits
-  double usedHits = m_TRTdEdxTool->usedHits(ctx,&track, false);
-  prob_El_ToT = m_TRTdEdxTool->getTest(ctx,dEdx, pTrk, Trk::electron, Trk::pion, usedHits);
+  PIDvalues[Trk::TRTdEdx] = m_TRTdEdxTool->dEdx(ctx,&track); // default dEdx using all hits
+  PIDvalues[Trk::eProbabilityNumberOfTRTHitsUsedFordEdx] = m_TRTdEdxTool->usedHits(ctx,&track);
+  double dEdx_noHTHits = m_TRTdEdxTool->dEdx(ctx,&track, false); // Divide by L, exclude HT hits
+  double dEdx_usedHits_noHTHits = m_TRTdEdxTool->usedHits(ctx,&track, false);
+  PIDvalues[Trk::eProbabilityToT] = m_TRTdEdxTool->getTest(ctx, dEdx_noHTHits, pTrk, Trk::electron, Trk::pion, dEdx_usedHits_noHTHits);
 
   // Limit the probability values the upper and lower limits that are given/trusted for each part:
-  double limProbHT = HTcalc->Limit(prob_El_HT);
-  double limProbToT = HTcalc->Limit(prob_El_ToT);
+  double limProbHT = HTcalc->Limit(PIDvalues[Trk::eProbabilityHT]);
+  double limProbToT = HTcalc->Limit(PIDvalues[Trk::eProbabilityToT]);
 
   // Calculate the combined probability, assuming no correlations (none are expected).
-  prob_El_Comb = (limProbHT * limProbToT ) / ( (limProbHT * limProbToT) + ( (1.0-limProbHT) * (1.0-limProbToT)) );
+  PIDvalues[Trk::eProbabilityComb] = (limProbHT * limProbToT ) / ( (limProbHT * limProbToT) + ( (1.0-limProbHT) * (1.0-limProbToT)) );
 
   // Troels: VERY NASTY NAMING, BUT AGREED UPON FOR NOW (for debugging, 27. NOV. 2014):
-  prob_El_Brem = pHTel_prod; // decorates electron LH to el brem for now... (still used?)
+  PIDvalues[Trk::eProbabilityBrem] = pHTel_prod; // decorates electron LH to el brem for now... (still used?)
+
+  // Calculate RNN PID score
+  std::map<std::string, std::map<std::string, double>> scalarInputs_NN = PIDNN->getScalarInputs();
+  std::map<std::string, std::map<std::string, std::vector<double>>> vectorInputs_NN = PIDNN->getVectorInputs();
+  
+  // Calculate the hit fraction
+  double fAr = static_cast<double>(nArhits) / nTRThits;
+  double fHTMB = static_cast<double>(nTRThitsHTMB) / nTRThits;
+  double PHF = static_cast<double>(nPrecHits) / nTRThits;
+
+  if (!scalarInputs_NN.empty()) {
+    std::map<std::string, double>& trackVarMap = scalarInputs_NN.begin()->second;
+    storeNNVariable(trackVarMap, "trkOcc", static_cast<double>(PIDvalues[Trk::TRTTrackOccupancy]));
+    storeNNVariable(trackVarMap, "p", pTrk);
+    storeNNVariable(trackVarMap, "pT", pT);
+    storeNNVariable(trackVarMap, "nXehits", static_cast<double>(nXehits));
+    storeNNVariable(trackVarMap, "fAr", fAr);
+    storeNNVariable(trackVarMap, "fHTMB", fHTMB);
+    storeNNVariable(trackVarMap, "PHF", PHF);
+    storeNNVariable(trackVarMap, "dEdx", static_cast<double>(dEdx_noHTHits));
+  }
+
+  if (!vectorInputs_NN.empty()) {
+    std::map<std::string, std::vector<double>>& hitVarMap = vectorInputs_NN.begin()->second;
+    storeNNVariable(hitVarMap, "hit_HTMB", hit_HTMB);
+    storeNNVariable(hitVarMap, "hit_gasType", hit_gasType);
+    storeNNVariable(hitVarMap, "hit_tot", hit_tot);
+    storeNNVariable(hitVarMap, "hit_L", hit_L);
+    storeNNVariable(hitVarMap, "hit_rTrkWire", hit_rTrkWire);
+    storeNNVariable(hitVarMap, "hit_HitZ", hit_HitZ);
+    storeNNVariable(hitVarMap, "hit_HitR", hit_HitR);
+    storeNNVariable(hitVarMap, "hit_isPrec", hit_isPrec);
+  }
+  PIDvalues[Trk::eProbabilityNN] = PIDNN->evaluate(scalarInputs_NN, vectorInputs_NN);
 
-  //std::cout << "Prob_HT = " << prob_El_HT << "   Prob_ToT = " << prob_El_ToT << "   Prob_Comb = " << prob_El_Comb << std::endl;
+  ATH_MSG_DEBUG ("check NN PID calculation: ");
+  for (auto scalarInputs : scalarInputs_NN) {
+    ATH_MSG_DEBUG ("  scalar inputs: " << scalarInputs.first);
+    for (auto variable : scalarInputs.second) {
+      ATH_MSG_DEBUG ("    " << variable.first << " = " << variable.second);
+    }
+  }
+  for (auto vectorInputs : vectorInputs_NN) {
+    ATH_MSG_DEBUG ("  vector inputs: " << vectorInputs.first);
+    for (auto variable : vectorInputs.second) {
+      ATH_MSG_DEBUG ("    " << variable.first << " = " << variable.second);
+    }
+  }
+  ATH_MSG_DEBUG ("  eProbilityNN: " << PIDvalues[Trk::eProbabilityNN]);
 
   return PIDvalues;
 }
diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ToT_dEdx.cxx b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ToT_dEdx.cxx
index cc7cb3ec2780eb3da9f5b5cddccfd461ab69a690..bb619ec0e06d949322377452a00f7aaa440c7b21 100644
--- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ToT_dEdx.cxx
+++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_ToT_dEdx.cxx
@@ -1215,7 +1215,10 @@ double TRT_ToT_dEdx::trackOccupancyCorrection(const Trk::Track* track,  bool use
     corr=dEdxCorrection->trackOccPar0NoHt[index]+dEdxCorrection->trackOccPar1NoHt[index]*trackOcc+dEdxCorrection->trackOccPar2NoHt[index]*pow(trackOcc,2);
   }
 
-  return corr;
+  if (corr != 0) {
+    return 1./corr;
+  }
+  return 0.;
 }
 
 double TRT_ToT_dEdx::calculateTrackLengthInStraw(const Trk::TrackStateOnSurface* trackState, const TRT_ID* identifier) {
@@ -1252,6 +1255,11 @@ double TRT_ToT_dEdx::calculateTrackLengthInStraw(const Trk::TrackStateOnSurface*
   const InDetDD::TRT_BaseElement* element = driftcircle->detectorElement();
   double strawphi = element->center(DCId).phi();
 
+  // check if track is an outlier
+  if (Trt_Rtrack >= 2.0) {
+    return 0.;
+  }
+
   double length=0;
   if (HitPart == 1) { //Barrel
     length = 2*std::sqrt(4-Trt_Rtrack*Trt_Rtrack)*1./std::abs(std::sin(Trt_HitTheta));
diff --git a/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/MdtCalibSvc/MdtCalibrationDbTool.h b/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/MdtCalibSvc/MdtCalibrationDbTool.h
index b388cb86552ca8cdcebbe877de7ea8d0a294b222..f0fec1632a7903403e99e0485a102d967665eb4f 100644
--- a/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/MdtCalibSvc/MdtCalibrationDbTool.h
+++ b/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/MdtCalibSvc/MdtCalibrationDbTool.h
@@ -99,7 +99,8 @@ private:
   SG::ReadCondHandleKey<MdtRtRelationCollection> m_readKeyRt{this,"MdtRtRelationCollection","MdtRtRelationCollection","MDT RT relations"};
   SG::ReadCondHandleKey<MdtTubeCalibContainerCollection> m_readKeyTube{this,"MdtTubeCalibContainerCollection","MdtTubeCalibContainerCollection","MDT tube calib"};
   SG::ReadCondHandleKey<MdtCorFuncSetCollection> m_readKeyCor{this,"MdtCorFuncSetCollection","MdtCorFuncSetCollection","MDT cor Funcs"};
-
+  
+  Gaudi::Property<bool>               m_wasConfigured {this,"WasConfigured",false,"This tool is too complicated to rely on defaults. Will fail if not configured."};
 };
 
 #endif // MDTCALIBSVC_MDTCALIBRATIONDBTOOL_H
diff --git a/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/src/MdtCalibrationDbTool.cxx b/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/src/MdtCalibrationDbTool.cxx
index c438cb0cdbaa74800ad9d661e49ae9f20414d000..f16d455e4b36c289d618a1289c2efb1be181678e 100644
--- a/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/src/MdtCalibrationDbTool.cxx
+++ b/MuonSpectrometer/MuonCalib/MdtCalib/MdtCalibSvc/src/MdtCalibrationDbTool.cxx
@@ -55,6 +55,10 @@ StatusCode MdtCalibrationDbTool::initialize() {
   ATH_CHECK(m_readKeyRt.initialize());
   ATH_CHECK(m_readKeyTube.initialize());
   ATH_CHECK(m_readKeyCor.initialize (m_createSlewingFunction || m_createWireSagFunction || m_create_b_field_function));
+  
+  if (!m_wasConfigured){
+    ATH_MSG_WARNING( "This tool is too complicated to rely on defaults. Potential configuration issue." );
+  }
 
   return StatusCode::SUCCESS;
 }  //end MdtCalibrationDbTool::initialize
diff --git a/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibConfig.py b/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibConfig.py
index 94608b056c31c27d82957381cc97ed5ba395d377..084fcafe75514875a4ef86fe05ef969cb1087310 100644
--- a/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibConfig.py
+++ b/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibConfig.py
@@ -162,48 +162,275 @@ def setupMdtCondDB():
         condSequence += MdtCalibDbAlg("MdtCalibDbAlg")
 
     if conddb.isOnline and not conddb.isMC:
-        MdtCalibDbAlg.TubeFolder = "/MDT/T0"
-        MdtCalibDbAlg.RtFolder = "/MDT/RT"
-        MdtCalibDbAlg.ReadKeyTube = "/MDT/T0"
-        MdtCalibDbAlg.ReadKeyRt = "/MDT/RT"
+        condSequence.MdtCalibDbAlg.TubeFolder = "/MDT/T0"
+        condSequence.MdtCalibDbAlg.RtFolder = "/MDT/RT"
+        condSequence.MdtCalibDbAlg.ReadKeyTube = "/MDT/T0"
+        condSequence.MdtCalibDbAlg.ReadKeyRt = "/MDT/RT"
     else:
-        MdtCalibDbAlg.TubeFolder = "/MDT/T0" + mdt_folder_name_appendix
-        MdtCalibDbAlg.RtFolder = "/MDT/RT" + mdt_folder_name_appendix
-        MdtCalibDbAlg.ReadKeyTube = "/MDT/T0" + mdt_folder_name_appendix
-        MdtCalibDbAlg.ReadKeyRt = "/MDT/RT" + mdt_folder_name_appendix
-    MdtCalibDbAlg.RT_InputFiles = ["Muon_RT_default.data"]
+        condSequence.MdtCalibDbAlg.TubeFolder = "/MDT/T0" + mdt_folder_name_appendix
+        condSequence.MdtCalibDbAlg.RtFolder = "/MDT/RT" + mdt_folder_name_appendix
+        condSequence.MdtCalibDbAlg.ReadKeyTube = "/MDT/T0" + mdt_folder_name_appendix
+        condSequence.MdtCalibDbAlg.ReadKeyRt = "/MDT/RT" + mdt_folder_name_appendix
+    condSequence.MdtCalibDbAlg.RT_InputFiles = ["Muon_RT_default.data"]
     if globalflags.DataSource == 'data':
-        MdtCalibDbAlg.defaultT0 = 40
+        condSequence.MdtCalibDbAlg.defaultT0 = 40
     elif globalflags.DataSource == 'geant4':
-        MdtCalibDbAlg.defaultT0 = 799
-    MdtCalibDbAlg.UseMLRt = mdtCalibFlags.useMLRt()
-    MdtCalibDbAlg.TimeSlewingCorrection = mdtCalibFlags.correctMdtRtForTimeSlewing()
-    MdtCalibDbAlg.MeanCorrectionVsR = [ -5.45973, -4.57559, -3.71995, -3.45051, -3.4505, -3.4834, -3.59509, -3.74869, -3.92066, -4.10799, -4.35237, -4.61329, -4.84111, -5.14524 ]
-    MdtCalibDbAlg.PropagationSpeedBeta = mdtCalibFlags.mdtPropagationSpeedBeta()
+        condSequence.MdtCalibDbAlg.defaultT0 = 799
+    condSequence.MdtCalibDbAlg.UseMLRt = mdtCalibFlags.useMLRt()
+    condSequence.MdtCalibDbAlg.TimeSlewingCorrection = mdtCalibFlags.correctMdtRtForTimeSlewing()
+    condSequence.MdtCalibDbAlg.MeanCorrectionVsR = [ -5.45973, -4.57559, -3.71995, -3.45051, -3.4505, -3.4834, -3.59509, -3.74869, -3.92066, -4.10799, -4.35237, -4.61329, -4.84111, -5.14524 ]
+    condSequence.MdtCalibDbAlg.PropagationSpeedBeta = mdtCalibFlags.mdtPropagationSpeedBeta()
     # the same as MdtCalibrationDbTool
-    MdtCalibDbAlg.CreateBFieldFunctions = mdtCalibFlags.correctMdtRtForBField()
-    MdtCalibDbAlg.CreateWireSagFunctions = mdtCalibFlags.correctMdtRtWireSag()
-    MdtCalibDbAlg.CreateSlewingFunctions = mdtCalibFlags.correctMdtRtForTimeSlewing()
+    condSequence.MdtCalibDbAlg.CreateBFieldFunctions = mdtCalibFlags.correctMdtRtForBField()
+    condSequence.MdtCalibDbAlg.CreateWireSagFunctions = mdtCalibFlags.correctMdtRtWireSag()
+    condSequence.MdtCalibDbAlg.CreateSlewingFunctions = mdtCalibFlags.correctMdtRtForTimeSlewing()
 
+def MdtCalibrationTool(name="MdtCalibrationTool", **kwargs):
     from MdtCalibSvc.MdtCalibSvcConf import MdtCalibrationTool
-    MdtCalibrationTool.DoSlewingCorrection = mdtCalibFlags.correctMdtRtForTimeSlewing()
+    kwargs.setdefault("DoSlewingCorrection", mdtCalibFlags.correctMdtRtForTimeSlewing())
+
     # Hack to use DoTemperatureCorrection for applyRtScaling; but applyRtScaling should not be used anyway, since MLRT can be used
-    MdtCalibrationTool.DoTemperatureCorrection = mdtCalibFlags.applyRtScaling()
-    MdtCalibrationTool.DoWireSagCorrection = mdtCalibFlags.correctMdtRtWireSag()
+    kwargs.setdefault("DoTemperatureCorrection", mdtCalibFlags.applyRtScaling())
+    kwargs.setdefault("DoWireSagCorrection", mdtCalibFlags.correctMdtRtWireSag())
+
     # for collisions cut away hits that are far outside of the MDT time window
     if beamFlags.beamType() == 'collisions':
-        MdtCalibrationTool.DoTofCorrection = True
-        if globalflags.DataSource() == 'geant4':
-            MdtCalibrationTool.TimeWindowSetting = mdtCalibWindowNumber('Collision_G4')
-        elif globalflags.DataSource() == 'data':
-            MdtCalibrationTool.TimeWindowSetting = mdtCalibWindowNumber('Collision_G4')
+        kwargs.setdefault("DoTofCorrection", True)
+
+        if globalflags.DataSource() == 'geant4' or globalflags.DataSource() == 'data':
+            kwargs.setdefault("TimeWindowSetting", mdtCalibWindowNumber('Collision_G4'))
     else: # cosmics or single beam
-        MdtCalibrationTool.DoTofCorrection = False
+        kwargs.setdefault("DoTofCorrection", False)
+    
+    kwargs.setdefault("CalibrationDbTool", MdtCalibrationDbTool())
 
+    return MdtCalibrationTool(name, **kwargs)
+
+def MdtCalibrationDbTool(name="MdtCalibrationDbTool", **kwargs):
     from MdtCalibSvc.MdtCalibSvcConf import MdtCalibrationDbTool
-    MdtCalibrationDbTool.CreateBFieldFunctions = mdtCalibFlags.correctMdtRtForBField()
-    MdtCalibrationDbTool.CreateWireSagFunctions = mdtCalibFlags.correctMdtRtWireSag()
-    MdtCalibrationDbTool.CreateSlewingFunctions = mdtCalibFlags.correctMdtRtForTimeSlewing()
+    kwargs.setdefault("CreateBFieldFunctions", mdtCalibFlags.correctMdtRtForBField())
+    kwargs.setdefault("CreateWireSagFunctions", mdtCalibFlags.correctMdtRtWireSag())
+    kwargs.setdefault("CreateSlewingFunctions", mdtCalibFlags.correctMdtRtForTimeSlewing())
+    kwargs.setdefault("WasConfigured", True)
+
+    return MdtCalibrationDbTool(name, **kwargs)
+
+
+# return a list of dictionaires containing the calib config info (keys etc)
+def getCalibConfigs():
+    global muonRecFlags,rec
+    configs = []
+    if muonRecFlags.calibMuonStandalone and (muonRecFlags.doStandalone or rec.readESD):
+#        try:
+            configs.append( muonRec.getConfig("MuonStandalone").getCalibConfig() )
+#        except KeyError:
+#            logMuon.warning("Could not get calibration config for MuonStandAlone - not adding MuonStandAlone info to calibration")
+#            muonRecFlags.calibMuonStandalone = False
+    else:
+        muonRecFlags.calibMuonStandalone = False
+
+    return configs
+        
+    
+
+## Setup MuonSegmenToCalibSegment algorithm.
+# @param[in] segmentKeys list of segment keys to use or single segments key (string)
+def getMuonSegmentToCalibSegment():
+    global topSequence,muonRecFlags
+    try:
+        return topSequence.MuonSegmentToCalibSegment
+    except AttributeError:
+            
+        from MuonCalibPatRec.MuonCalibPatRecConf import MuonCalib__MuonSegmentToCalibSegment
+        MuonSegmentToCalibSegment = MuonCalib__MuonSegmentToCalibSegment("MuonSegmentToCalibSegment")
+        # set consistent time-of-flight correction with MdtDriftCircleOnTrackCreator
+        mdtCreator = getPublicTool("MdtDriftCircleOnTrackCreator")
+        MuonSegmentToCalibSegment.DoTOF = getProperty(mdtCreator,"DoTofCorrection")
+        # when doing segment fits with floating t0's
+        MuonSegmentToCalibSegment.UpdateForT0Shift = type(MuonSegmentToCalibSegment.getDefaultProperty("UpdateForT0Shift")) (muonRecFlags.doSegmentT0Fit())
+        MuonSegmentToCalibSegment.UseCscSegments = False
+        MuonSegmentToCalibSegment.SegmentLocations = [ "MuonSegments" ]
+        MuonSegmentToCalibSegment.SegmentAuthors = [ 4,8 ] 
+        MuonSegmentToCalibSegment.ReadSegments = True # rather than SegmentCombinations
+
+        from MuonCnvExample import MuonCalibConfig
+        MuonCalibConfig.setupMdtCondDB()
+
+        MuonSegmentToCalibSegment.CalibrationTool = MuonCalibConfig.MdtCalibrationTool()
+
+        # finally add it to topSequence
+        topSequence += MuonSegmentToCalibSegment
+
+    return topSequence.MuonSegmentToCalibSegment
+
+
+## Setup the basic MuonCalibAlg algorithm. Needs further configuration after this call
+# depending on the use-case.
+# @param[in] evenTag The event tag written to file
+def getMuonCalibAlg(eventTag):
+    global topSequence,beamFlags
+    try:
+        return topSequence.MuonCalibAlg
+    except AttributeError:
+        from MuonCalibAlgs.MuonCalibAlgsConf import MuonCalib__MuonCalibAlg
+        MuonCalibAlg = MuonCalib__MuonCalibAlg("MuonCalibAlg",
+                                               doMDTs = muonRecFlags.doMDTs(),
+                                               doCSCs = muonRecFlags.doCSCs(),
+                                               doRPCs = muonRecFlags.doRPCs(),
+                                               doTGCs = (muonRecFlags.doTGCs() and muonRecFlags.calibNtupleRawTGC()),
+                                               doTGCCoinData = (muonRecFlags.doTGCs() and muonRecFlags.calibNtupleRawTGC()),
+                                               doTruth = rec.doTruth(),
+                                               DoPrdSelect = muonRecFlags.doPrdSelect(),  # optional cutting away of PRD hits to simulate dead channels
+                                               NtupleName = muonRecFlags.calibNtupleOutput(),  # set the name of the output calibration ntuple
+                                               EventTag = eventTag )
+
+        if beamFlags.beamType == 'singlebeam' or beamFlags.beamType == 'cosmics':
+            MuonCalibAlg.addTriggerTag = False
+        else:
+            MuonCalibAlg.addTriggerTag = rec.doTrigger()
+        MuonCalibAlg.doTruth=rec.doTruth()
+        topSequence += MuonCalibAlg
+        return topSequence.MuonCalibAlg
+
+
+def setupMuonCalibNtuple():
+    global topSequence,muonRecFlags,beamFlags,ToolSvc,rec,DetFlags
+    if not rec.doMuon() or not DetFlags.Muon_on():
+        logMuon.warning("Not setting up requested Muon Calibration Ntuple because Muons are off")
+        return
+    
+    logMuon.info("Setting up Muon Calibration Ntuple")
+    try:
+        configs = getCalibConfigs()
+        # MuonSegmentToCalibSegment is only needed if we want segments
+        if muonRecFlags.calibNtupleSegments and muonRecFlags.calibMuonStandalone:
+            MuonSegmentToCalibSegment = getMuonSegmentToCalibSegment()
+
+        # MuonCalibAlg is always needed
+        eventTag="UNKNOWN"
+        if (muonRecFlags.calibNtupleSegments or muonRecFlags.calibNtupleTracks) and muonRecFlags.calibMuonStandalone:
+            if len(configs) >= 1:
+                eventTag = configs[0]["eventTag"]
+        elif muonRecFlags.calibNtupleTrigger:
+            eventTag = "TRIG"
+        else:
+            eventTag = "HITS"
+
+        MuonCalibAlg = getMuonCalibAlg(eventTag)
+        # configure for writing ntuple
+        from MuonCalibTools.MuonCalibToolsConf import MuonCalib__PatternNtupleMaker
+        MuonCalibTool = MuonCalib__PatternNtupleMaker("MuonCalibPatternNtupleMaker")
+        MuonCalibTool.FillTruth = rec.doTruth()
+        MuonCalibTool.DoRawTGC = (muonRecFlags.doTGCs() and muonRecFlags.calibNtupleRawTGC())
+        ToolSvc += MuonCalibTool
+        MuonCalibAlg.MuonCalibTool = MuonCalibTool
+
+        # MuonCalibExtraTree only if we want to write tracks
+        if muonRecFlags.calibNtupleTracks:
+            MuonCalibTool.DelayFinish = True
+            from MuonCalibExtraTreeAlg.MuonCalibExtraTreeAlgConf import MuonCalib__MuonCalibExtraTreeAlg
+            MuonCalibExtraTreeAlg = MuonCalib__MuonCalibExtraTreeAlg("MuonCalibExtraTreeAlg",
+                                                                     NtupleName = "PatternNtupleMaker",
+                                                                     )
+            segmentOnTrackSelector=None
+            if hasattr(topSequence, "MuonSegmentToCalibSegment"):
+              from MuonCalibExtraTreeAlg.MuonCalibExtraTreeAlgConf import MuonCalib__SegmentOnTrackSelector
+              segmentOnTrackSelector=MuonCalib__SegmentOnTrackSelector()
+              segmentOnTrackSelector.PattternLocation = "PatternsForCalibration"
+              ToolSvc+=segmentOnTrackSelector
+              MuonCalibExtraTreeAlg.SegmentOnTrackSelector= segmentOnTrackSelector
+            if not rec.doMuonCombined():
+               tool_nr=0
+               from MuonCalibExtraTreeAlg.MuonCalibExtraTreeAlgConf import MuonCalib__ExtraTreeTrackFillerTool
+               resPullCalc=getPublicTool("ResidualPullCalculator")
+               for config in configs:
+                 trackDumpTool = MuonCalib__ExtraTreeTrackFillerTool("ExtraTreeTrackFillerTool" + str(tool_nr))
+                 trackDumpTool.TrackCollectionKey = config['tracksKey']
+                 trackDumpTool.SegmentAuthors = [config['segmentAuthor']]
+                 trackDumpTool.TrackAuthor = config['trackAuthor']
+                 trackDumpTool.PullCalculator = resPullCalc
+                 ToolSvc+=trackDumpTool
+                 MuonCalibExtraTreeAlg.TrackFillerTools.append(trackDumpTool)
+                 tool_nr+=1
+            # configure needed tools
+
+
+            # add to topSequence
+            topSequence += MuonCalibExtraTreeAlg
+
+
+        # MuonCalibExtraTreeTriggerAlg only if trigger is available
+        if muonRecFlags.calibNtupleTrigger: # and DetFlags.detdescr.LVL1_on() and DetFlags.haveRDO.LVL1_on():
+            # protect against running without AtlasTrigger project
+            doMuCTPI = True
+            if doMuCTPI:
+                try:
+                    from TrigT1RPCRecRoiSvc import TrigT1RPCRecRoiConfig
+                    from TrigT1TGCRecRoiSvc import TrigT1TGCRecRoiConfig
+                except ImportError:
+                    logMuon.warning("MuonCalibExtraTreeTriggerAlg.doMuCTPI = False because AtlasTrigger is not available")
+                    doMuCTPI = False
+
+            # delay writing of MuonCalibAlg
+            MuonCalibTool.DelayFinish = True
+            # also delay MuonCalibExtraTreeAlg if it is running
+            try:
+                topSequence.MuonCalibExtraTreeAlg.DelayFinish = True
+            except AttributeError:
+                pass
+            
+            from MuonCalibExtraTreeAlg.MuonCalibExtraTreeAlgConf import MuonCalib__MuonCalibExtraTreeTriggerAlg
+            topSequence += MuonCalib__MuonCalibExtraTreeTriggerAlg( 'MuonCalibExtraTreeTriggerAlg',
+                                                                    doMuCTPI   = doMuCTPI,
+                                                                    doLVL1Calo = rec.doTile() or rec.doLArg() or DetFlags.haveRDO.Calo_on(),
+                                                                    doMBTS     = rec.doTile() or DetFlags.haveRDO.Tile_on() )
+
+
+    except:
+        from AthenaCommon.Resilience import treatException
+        treatException("Problem in MuonCalib - Muon Calibration Ntuple configuration probably incomplete")
+
+
+
+def setupMuonCalib():
+    global topSequence,ToolSvc
+    if not rec.doMuon() or not DetFlags.Muon_on():
+        logMuon.warning("Not setting up requested Muon Calibration because Muons are off")
+        return
+
+    logMuon.info("Setting up Muon Calibration")
+    try:
+        from MuonCnvExample.MuonCalibFlags import muonCalibFlags
+        muonCalibFlags.setDefaults()
+
+        configs = getCalibConfigs()
+        #
+        # MuonSegmentToCalibSegment
+        #
+        calibConfig = muonRec.allConfigs()[0].getCalibConfig() #muonRec.getConfig(muonCalibFlags.EventTag()).getCalibConfig()
+        MuonSegmentToCalibSegment = getMuonSegmentToCalibSegment()
+        #
+        # MuonCalibAlg
+        #
+        MuonCalibAlg = getMuonCalibAlg(muonCalibFlags.EventTag())
+
+        from MdtCalibTools.MdtCalibToolsConf import MuonCalib__MdtCalibTool
+        MuonCalibTool = MuonCalib__MdtCalibTool()
+        calibMode = muonCalibFlags.Mode()
+        if calibMode == 'regionNtuple':
+            from MdtCalibTools.MdtCalibToolsConf import MuonCalib__MdtCalibNtupleMakerTool
+            MdtCalibTool = MuonCalib__MdtCalibNtupleMakerTool()
+        else:
+            raise RuntimeError( "Unknown Muon Calibration Mode: %r" % calibMode )
+
+        ToolSvc += MdtCalibTool
+        MuonCalibTool.MdtCalibTool = MdtCalibTool
+
+        ToolSvc += MuonCalibTool
+        MuonCalibAlg.MuonCalibTool = MuonCalibTool
+    except:
+        from AthenaCommon.Resilience import treatException
+        treatException("Problem in MuonCalib - Muon Calibration configuration probably incomplete")
 
 
 # return a list of dictionaires containing the calib config info (keys etc)
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CompetingMuonClustersOnTrackCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CompetingMuonClustersOnTrackCnv_p2_test.ref
index 3c50c1642a444a9b155e398bc90631a7ec9f8ac4..e1e476e67f6d9b190a4f283945b243c651c5f9c4 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CompetingMuonClustersOnTrackCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CompetingMuonClustersOnTrackCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:56:03 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:39 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscClusterOnTrackCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscClusterOnTrackCnv_p2_test.ref
index 80f2a7c8a758f6e81459b471d52d091eef43094f..eeeefbe0302b1c70663e39634fa50ca6978c3949 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscClusterOnTrackCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscClusterOnTrackCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:27:28 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:27 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p1_test.ref
index a463acacecb056c45c29ee01141bcaa525926453..851b18a96969ec79a2cb9c0224b6d4f2e22d3f63 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:58:07 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:57 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p2_test.ref
index cea147a8d8eac2fbf3bbcaf3a9bd2746ee2db16e..30848425c8b60ab4e0f218706560e8e17df41f9f 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscPrepDataContainerCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 21:13:45 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:59 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscStripPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscStripPrepDataContainerCnv_p1_test.ref
index 926b5347c3ad146a199427412130198f674fbb1a..764dbbe20bea1d22f14a64dbb9dd883d3e826c67 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscStripPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/CscStripPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:26:26 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:01 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11372 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12362 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MMPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MMPrepDataContainerCnv_p1_test.ref
index 93fd0cd6a5227e32171ebecb97e3cafee9fda221..df8f187c316bc26ed9b490b051e1fd31f796ec97 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MMPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MMPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:21:46 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:20 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_ClusterOnTrackCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_ClusterOnTrackCnv_p1_test.ref
index e55934786df9e6ed4635fea8551f6872a8621ce5..b87dc25d8c1d1e71459759f9e4e10dea61d733bc 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_ClusterOnTrackCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_ClusterOnTrackCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:49:20 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:33 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p1_test.ref
index 1f43aa615789d4c51545f3fabfaaae7611588677..28dae364c486ec9d8a0b63511e7665d960e9ab3d 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:54:00 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:35 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11361 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12351 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p2_test.ref
index 944ac6415254d31fb4aa2ba7107a0c78ce7646f6..ad5ca7f9891de24ab02e8754b631883c08828885 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MM_DigitContainerCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:35:31 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:37 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11361 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12351 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtDriftCircleOnTrackCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtDriftCircleOnTrackCnv_p2_test.ref
index f9cee4c88157c2a92437c793cc9902aad10460c3..54a2dbe22d0df7849a566eb72f870bd0e6dea47d 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtDriftCircleOnTrackCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtDriftCircleOnTrackCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:58:07 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:37 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p1_test.ref
index 1584f712d129f7b79dd198d27c2ee89a29a1f87d..6d93fdab534a8a9fbe7094f73c62778307f4e204 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:59:40 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:03 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p2_test.ref
index 1584f712d129f7b79dd198d27c2ee89a29a1f87d..ef6a7a9a7038e5b5b8ed7e8c703dfad206eecb74 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/MdtPrepDataContainerCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:59:40 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:05 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcClusterOnTrackCnv_p3_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcClusterOnTrackCnv_p3_test.ref
index 6793b6c6c481338faf8a83c85f0b191c50a6e50b..ea4f6544a6f4aa05f535c1cfb17e9e8de2392427 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcClusterOnTrackCnv_p3_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcClusterOnTrackCnv_p3_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:53:50 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:29 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcCoinDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcCoinDataContainerCnv_p1_test.ref
index fbb360bf46942210cd4cb488c9bd391d819d5557..181fafde8e41f169feef2c4f3ee136f3290737db 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcCoinDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcCoinDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:26:32 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:26 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11360 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12350 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p1_test.ref
index 1584f712d129f7b79dd198d27c2ee89a29a1f87d..502a24e0fad6148483eac7445f667a815cb26dba 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:59:40 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:06 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p2_test.ref
index 42c3c15a2ba237665b5f72b09a3469a8faa2dc7d..9df09184480cf66e90da817fe69bafa5b43a8ed9 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:59:42 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:08 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p3_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p3_test.ref
index 42c3c15a2ba237665b5f72b09a3469a8faa2dc7d..261490cbdd5bdf3c6d5de4610dd711688a56d77d 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p3_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/RpcPrepDataContainerCnv_p3_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:59:42 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:10 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_ClusterOnTrackCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_ClusterOnTrackCnv_p1_test.ref
index f3f1295795bd68d57d356996c3d3834ff004d0ec..a5372c3c70f75bb979b22c08992954f6de39d477 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_ClusterOnTrackCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_ClusterOnTrackCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:57:19 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:35 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_DigitContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_DigitContainerCnv_p1_test.ref
index 15caa6ea8b8584258de8d70ae032ea7c3fd61a37..d00583b1dd27333880def958a7a62723d1ddad95 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_DigitContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_DigitContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:58:17 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:40 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11361 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12351 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_RawDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_RawDataContainerCnv_p1_test.ref
index f33987f72618cb35b7110c42b796c8d41936dcc7..69b35ca28fac4063cc4b1e4eaa8110f2f5f060d3 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_RawDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/STGC_RawDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:27:40 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:42 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11360 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12350 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
  Before has size: 2, after has size: 2
 Collection #1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcClusterOnTrackCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcClusterOnTrackCnv_p2_test.ref
index afb0082ce2f5810854fa2710ae4136bf9e013fd6..e27a493f1a5fc7453973f371a1e555b5da20cc31 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcClusterOnTrackCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcClusterOnTrackCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:35:19 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:34:31 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11371 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12361 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,7 +140,9 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
-ClassIDSvc           INFO  getRegistryEntries: read 291 CLIDRegistry entries for module ALL
-ClassIDSvc           INFO  getRegistryEntries: read 168 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 320 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 170 CLIDRegistry entries for module ALL
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p1_test.ref
index 1154f6d092517e4b8f48f442dbced038456c5d44..c2e52e80af0b59e3d9985a03b7a97b1f54d49890 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 21:13:54 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:27 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11360 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12350 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p2_test.ref
index c3171a22bf8f7cd7afd63e2b10bd77335320ad7a..504ba4f1fb7e42ad6278d029d721a037cb7beb22 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:21:46 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:29 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11360 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12350 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p3_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p3_test.ref
index e3a93452533b3c8f342692961f9ee50167f3338b..4a86c312012bc4e1f452bb003ee5a1608297b62d 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p3_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcCoinDataContainerCnv_p3_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sat Mar  7 20:56:13 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:31 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11360 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12350 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p1_test.ref
index 4917471e954852e1d00b91d6f84ae1c02a3c0ca2..c3da0d71eacf6dfd1bfdaacdb023cbf058ede200 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:57:21 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:12 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p2_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p2_test.ref
index bd3c418438615fe102cf5d749d27beab70af0dd0..c5386371eae29bd428fd5faf2466b2e0a6b2bbf3 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p2_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p2_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:57:24 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:14 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p3_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p3_test.ref
index bd3c418438615fe102cf5d749d27beab70af0dd0..94c5023c1e765e61dc831d4165fa04630af458df 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p3_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/TgcPrepDataContainerCnv_p3_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-opt/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus719.cern.ch on Sun Mar  8 00:57:24 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:16 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11370 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -140,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/sTgcPrepDataContainerCnv_p1_test.ref b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/sTgcPrepDataContainerCnv_p1_test.ref
index 8878998c78af6485a700a6f4327bef16d17d4bac..74deb3704f3a5fd5f89f2e8eae814b6af74b8d26 100644
--- a/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/sTgcPrepDataContainerCnv_p1_test.ref
+++ b/MuonSpectrometer/MuonCnv/MuonEventTPCnv/share/sTgcPrepDataContainerCnv_p1_test.ref
@@ -1,18 +1,18 @@
 
 
-Initializing Gaudi ApplicationMgr using job opts /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
-JobOptionsSvc        INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+Initializing Gaudi ApplicationMgr using job opts /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO # =======> /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 JobOptionsSvc        INFO # (1,1): ApplicationMgr.Dlls += ["StoreGate", "CLIDComps"]
 JobOptionsSvc        INFO # (2,1): ApplicationMgr.ExtSvc += ["StoreGateSvc", "StoreGateSvc/DetectorStore", "StoreGateSvc/ConditionStore", "Athena::RCUSvc"]
-JobOptionsSvc        INFO Job options successfully read in from /afs/cern.ch/user/s/ssnyder/atlas-work3/build-x86_64-centos7-gcc8-dbg/x86_64-centos7-gcc8-dbg/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
+JobOptionsSvc        INFO Job options successfully read in from /home/emoyse/master2/build/x86_64-centos7-gcc8-opt/jobOptions/MuonEventTPCnv/MuonEventTPCnv_test.txt
 ApplicationMgr    SUCCESS 
 ====================================================================================================================================
-                                                   Welcome to ApplicationMgr (GaudiCoreSvc v33r0)
-                                          running on lxplus7100.cern.ch on Sun Mar  8 00:56:08 2020
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v34r0)
+                                          running on pcumass4 on Wed Nov  4 09:35:18 2020
 ====================================================================================================================================
 ApplicationMgr       INFO Successfully loaded modules : StoreGate, CLIDComps
 ApplicationMgr       INFO Application Manager Configured successfully
-ClassIDSvc           INFO  getRegistryEntries: read 11423 CLIDRegistry entries for module ALL
+ClassIDSvc           INFO  getRegistryEntries: read 12360 CLIDRegistry entries for module ALL
 EventLoopMgr      WARNING Unable to locate service "EventSelector" 
 EventLoopMgr      WARNING No events will be processed from external input.
 ApplicationMgr       INFO Application Manager Initialized successfully
@@ -68,22 +68,7 @@ eta_index     7
  DEBUG Wafer range -> 2/1/0/0/0:21/-6:6 | 2/1/0/1/0:37/-6:6 | 2/1/0/2/0:51/-6:6 | 2/1/-2,2/0:2/0:47/0
  DEBUG Pixel range -> 2/1/0/0/0:21/-6:6/0:327/0:191 | 2/1/0/1/0:37/-6:6/0:327/0:143 | 2/1/0/2/0:51/-6:6/0:327/0:143 | 2/1/-2,2/0:2/0:47/0/0:327/0:143
 INFO SCT_ID::initialize_from_dictionary 
-DEBUG SCT_ID::initialize_from_dictionary (Re)initialize
  AtlasDetectorID::initialize_from_dictionary - OK 
-DEBUG SCT_ID::initLevelsFromDict decode index and bit fields for each level: 
-DEBUG SCT_ID::initLevelsFromDict indet    decode 1 vals 2,4,5,7,10,11,12,13 mask/zero mask/shift/bits/offset 7   1fffffffffffffff 61 3  0  indexes 0 0 1 2 0 3 0 0 4 5 6 7 mode  enumerated  
-DEBUG SCT_ID::initLevelsFromDict sct      decode 1 vals 1:3             mask/zero mask/shift/bits/offset 3   e7ffffffffffffff 59 2  3  indexes                     mode  both_bounded  
-DEBUG SCT_ID::initLevelsFromDict bec      decode 1 vals -2,0,2          mask/zero mask/shift/bits/offset 3   f9ffffffffffffff 57 2  5  indexes 0 0 1 0 2           mode  enumerated  
-DEBUG SCT_ID::initLevelsFromDict lay_disk decode 0 vals 0:8             mask/zero mask/shift/bits/offset f   fe1fffffffffffff 53 4  7  indexes                     mode  both_bounded  
-DEBUG SCT_ID::initLevelsFromDict phi_mod  decode 0 vals 0:55            mask/zero mask/shift/bits/offset 3f  ffe07fffffffffff 47 6  11 indexes                     mode  both_bounded  
-DEBUG SCT_ID::initLevelsFromDict eta_mod  decode 1 vals -6:6            mask/zero mask/shift/bits/offset f   ffff87ffffffffff 43 4  17 indexes                     mode  both_bounded  
-DEBUG SCT_ID::initLevelsFromDict side     decode 0 vals 0:1             mask/zero mask/shift/bits/offset 1   fffffbffffffffff 42 1  21 indexes                     mode  both_bounded  
-DEBUG SCT_ID::initLevelsFromDict strip    decode 0 vals 0:767           mask/zero mask/shift/bits/offset 3ff fffffc00ffffffff 32 10 22 indexes                     mode  both_bounded  
-DEBUG SCT_ID::initialize_from_dictionary Set barrel field values: 0
-DEBUG SCT_ID::initialize_from_dictionary Found field values: SCT 2
-DEBUG SCT_ID::init_neighbors 
-DEBUG SCT_ID::initialize_from_dictionary Wafer range -> 2/2/0/0/0:31/-6:-1/0:1 | 2/2/0/1/0:39/-6:-1/0:1 | 2/2/0/2/0:47/-6:-1/0:1 | 2/2/0/3/0:55/-6:-1/0:1 | 2/2/0/0/0:31/1:6/0:1 | 2/2/0/1/0:39/1:6/0:1 | 2/2/0/2/0:47/1:6/0:1 | 2/2/0/3/0:55/1:6/0:1 | 2/2/-2,2/0:8/0:51/0/0:1 | 2/2/-2,2/0/0:39/1/0:1 | 2/2/-2,2/1:5/0:39/1:2/0:1 | 2/2/-2,2/6:7/0:39/1/0:1
-Strip range -> 2/2/0/0/0:31/-6:-1/0:1/0:767 | 2/2/0/1/0:39/-6:-1/0:1/0:767 | 2/2/0/2/0:47/-6:-1/0:1/0:767 | 2/2/0/3/0:55/-6:-1/0:1/0:767 | 2/2/0/0/0:31/1:6/0:1/0:767 | 2/2/0/1/0:39/1:6/0:1/0:767 | 2/2/0/2/0:47/1:6/0:1/0:767 | 2/2/0/3/0:55/1:6/0:1/0:767 | 2/2/-2,2/0:8/0:51/0/0:1/0:767 | 2/2/-2,2/0/0:39/1/0:1/0:767 | 2/2/-2,2/1:5/0:39/1:2/0:1/0:767 | 2/2/-2,2/6:7/0:39/1/0:1/0:767
 INFO Initialize from dictionary cout 0
  DEBUG (Re)initialize
  AtlasDetectorID::initialize_from_dictionary - OK 
@@ -155,5 +140,7 @@ MmIdHelper           INFO The element hash max is 64
 MmIdHelper           INFO The detector element hash max is 128
 MmIdHelper           INFO Initializing MicroMegas hash indices for finding neighbors ... 
  AtlasDetectorID::initialize_from_dictionary - OK 
-ClassIDSvc           INFO  getRegistryEntries: read 372 CLIDRegistry entries for module ALL
+SCTDetectorManager   INFO Using contructor with name specification, to create SCT_DetectorManager named SCT
+SCTDetectorManager   INFO 
+ClassIDSvc           INFO  getRegistryEntries: read 379 CLIDRegistry entries for module ALL
 test1
diff --git a/MuonSpectrometer/MuonConfig/python/MuonCalibrationConfig.py b/MuonSpectrometer/MuonConfig/python/MuonCalibrationConfig.py
index e6ac246bb0828c8bb2982e581cc79a3313487538..9b7244c3d267dc89cde391e343c437adb0e70387 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonCalibrationConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonCalibrationConfig.py
@@ -69,10 +69,10 @@ def _setupMdtCondDB(flags):
 # end of function setupMdtCondDB()
 
 def MdtCalibrationToolCfg(flags, **kwargs):
-    result=MdtCalibrationDbToolCfg(flags, **kwargs)
-    mdt_calibibration_db_tool = result.getPrimary()
+    result=MdtCalibrationDbToolCfg(flags)
+    mdt_calibration_db_tool = result.getPrimary()
     
-    kwargs.setdefault("CalibrationDbTool", mdt_calibibration_db_tool)
+    kwargs.setdefault("CalibrationDbTool", mdt_calibration_db_tool)
     kwargs.setdefault("DoSlewingCorrection", flags.Muon.Calib.correctMdtRtForTimeSlewing)
     kwargs.setdefault("DoTemperatureCorrection", flags.Muon.Calib.applyRtScaling)
     kwargs.setdefault("DoWireSagCorrection", flags.Muon.Calib.correctMdtRtWireSag)
@@ -80,7 +80,7 @@ def MdtCalibrationToolCfg(flags, **kwargs):
     
     acc = MagneticFieldSvcCfg(flags)
     result.merge(acc)
-    
+
     MdtCalibrationTool = CompFactory.MdtCalibrationTool
     mdt_calibration_tool = MdtCalibrationTool(**kwargs)
     result.setPrivateTools(mdt_calibration_tool)
@@ -93,7 +93,8 @@ def MdtCalibrationDbToolCfg(flags, **kwargs):
     kwargs.setdefault("CreateBFieldFunctions", flags.Muon.Calib.correctMdtRtForBField)
     kwargs.setdefault("CreateWireSagFunctions", flags.Muon.Calib.correctMdtRtWireSag)
     kwargs.setdefault("CreateSlewingFunctions", flags.Muon.Calib.correctMdtRtForTimeSlewing)
-    
+    kwargs.setdefault("WasConfigured", True)
+
     MdtCalibrationDbTool = CompFactory.MdtCalibrationDbTool
     mdt_calibration_db_tool = MdtCalibrationDbTool(**kwargs)
     result.setPrivateTools(mdt_calibration_db_tool)
diff --git a/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py b/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py
index 94d30a541ef272c766d8901b052cce5d54d09a82..ba4b344dc0dcce083c9fe910250abe4c6ee4f580 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py
@@ -72,15 +72,8 @@ def MdtDriftCircleOnTrackCreatorCfg(flags,name="MdtDriftCircleOnTrackCreator", *
     # acc = MdtCalibrationDbSvcCfg(flags)
     # result.merge(acc)
     
-    acc = MdtCalibrationDbToolCfg(flags)
-    mdt_calibibration_db_tool = acc.getPrimary()
-    result.merge(acc)
-    kwargs.setdefault("CalibrationDbTool", mdt_calibibration_db_tool)
-
-    acc = MdtCalibrationToolCfg(flags)
-    mdt_calibibration_tool = acc.getPrimary()
-    result.merge(acc)
-    kwargs.setdefault("CalibrationTool", mdt_calibibration_tool)
+    kwargs.setdefault("CalibrationDbTool", result.popToolsAndMerge( MdtCalibrationDbToolCfg(flags)))
+    kwargs.setdefault("CalibrationTool", result.popToolsAndMerge( MdtCalibrationToolCfg(flags)) )
 
     kwargs.setdefault("DoMagneticFieldCorrection", flags.Muon.Calib.correctMdtRtForBField)
     kwargs.setdefault("DoWireSag", flags.Muon.useWireSagCorrections)
@@ -107,8 +100,8 @@ def MdtDriftCircleOnTrackCreatorCfg(flags,name="MdtDriftCircleOnTrackCreator", *
 
     if flags.Muon.MuonTrigger:
         kwargs.setdefault("doMDT", False)
-                 
-    result.addPublicTool(Muon__MdtDriftCircleOnTrackCreator(name, **kwargs),primary=True)
+
+    result.addPublicTool(Muon__MdtDriftCircleOnTrackCreator(name, WasConfigured=True, **kwargs),primary=True)
     return result
     
 def MuonClusterOnTrackCreatorCfg(flags,name="MuonClusterOnTrackCreator", **kwargs):
diff --git a/MuonSpectrometer/MuonConfig/python/MuonRdoDecodeConfig.py b/MuonSpectrometer/MuonConfig/python/MuonRdoDecodeConfig.py
index b78e56be7379f7e95648f8db7e6fc5a449192615..fc3cacf940986932da031fd3f76e69d4c1759a0c 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonRdoDecodeConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonRdoDecodeConfig.py
@@ -121,6 +121,7 @@ def TgcRDODecodeCfg(flags, forTrigger=False):
 
 def MdtRDODecodeCfg(flags, forTrigger=False):
     acc = ComponentAccumulator()
+    from MuonConfig.MuonCalibrationConfig import MdtCalibrationToolCfg
 
     # We need the MDT cabling to be setup
     from MuonConfig.MuonCablingConfig import MDTCablingConfigCfg
@@ -135,13 +136,14 @@ def MdtRDODecodeCfg(flags, forTrigger=False):
 
     # Get the RDO -> PRD tool
     Muon__MdtRdoToPrepDataToolMT=CompFactory.Muon.MdtRdoToPrepDataToolMT
-    MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataToolMT(name = "MdtRdoToMdtPrepDataTool")
-    
+    calibTool =  acc.popToolsAndMerge( MdtCalibrationToolCfg(flags)) 
+    MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataToolMT(name = "MdtRdoToMdtPrepDataTool", CalibrationTool = calibTool)
+
     # Get the RDO -> PRD alorithm
     MdtRdoToMdtPrepData=CompFactory.MdtRdoToMdtPrepData
     MdtRdoToMdtPrepData = MdtRdoToMdtPrepData(name          = "MdtRdoToMdtPrepData",
                                               DecodingTool  = MdtRdoToMdtPrepDataTool,
-                                              PrintPrepData = False )
+                                              PrintPrepData = False)
     # add RegSelTool
     from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg
     MdtRdoToMdtPrepData.RegSel_MDT = acc.popToolsAndMerge( regSelTool_MDT_Cfg( flags ) )
diff --git a/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py b/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py
index 0a6284b85992723fbebc9425653d14c4273c8f95..85f2eab75c34b304496d698e3a5eaa96ca15a4f3 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonRecToolsConfig.py
@@ -37,10 +37,11 @@ def MuonTrackToSegmentToolCfg(flags,name="MuonTrackToSegmentTool", **kwargs):
 
 def MuonSeededSegmentFinderCfg(flags,name="MuonSeededSegmentFinder", **kwargs):
     Muon__MuonSeededSegmentFinder=CompFactory.Muon.MuonSeededSegmentFinder
-    from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg, MdtMathSegmentFinder # FIXME - should really shift this to RecTools then.
+    from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg, MdtMathSegmentFinderCfg # FIXME - should really shift this to RecTools then.
+    from MuonConfig.MuonRIO_OnTrackCreatorConfig import MdtDriftCircleOnTrackCreatorCfg
     result = ComponentAccumulator()
     
-    mdt_segment_finder = MdtMathSegmentFinder(flags, name="MCTBMdtMathSegmentFinder", UseChamberTheta = False, AssociationRoadWidth = 1.5)
+    mdt_segment_finder = result.popToolsAndMerge( MdtMathSegmentFinderCfg(flags, name="MCTBMdtMathSegmentFinder", UseChamberTheta = False, AssociationRoadWidth = 1.5) )
     result.addPublicTool(mdt_segment_finder)
     
     if "SegmentMaker" not in kwargs or "SegmentMakerNoHoles" not in kwargs:
@@ -62,6 +63,9 @@ def MuonSeededSegmentFinderCfg(flags,name="MuonSeededSegmentFinder", **kwargs):
         kwargs.setdefault("MMPrepDataContainer","")
     
     kwargs.setdefault("Printer", MuonEDMPrinterTool(flags) )
+    acc = MdtDriftCircleOnTrackCreatorCfg(flags)
+    kwargs.setdefault("MdtRotCreator", acc.getPrimary())
+    result.merge(acc)
 
     kwargs.setdefault('TgcPrepDataContainer', 'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC and not flags.Muon.useTGCPriorNextBC else 'TGC_Measurements')
     
diff --git a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py
index 370a96d62934257a239a3139e3d65b0c67ab034a..f2f2c4ba924e41bd86c300bcbbdf1bbe4fcc0a0d 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py
@@ -23,7 +23,7 @@ Muon__MuonSegmentSelectionTool=CompFactory.getComp("Muon::MuonSegmentSelectionTo
 Muon__MuonClusterSegmentFinder=CompFactory.getComp("Muon::MuonClusterSegmentFinder")
 
 #Local
-from MuonConfig.MuonCalibrationConfig import MdtCalibDbAlgCfg
+from MuonConfig.MuonCalibrationConfig import MdtCalibrationDbToolCfg
 from MuonConfig.MuonRecToolsConfig import MCTBFitterCfg, MuonAmbiProcessorCfg, MuonStationIntersectSvcCfg, MuonTrackCleanerCfg, MuonTrackSummaryToolCfg, MuonEDMPrinterTool
 from MuonConfig.MuonRIO_OnTrackCreatorConfig import MdtCalibWindowNumber
 
@@ -76,16 +76,17 @@ def AdjustableT0Tool(flags,**kwargs):
     AdjT0__AdjustableT0Tool=CompFactory.getComp("AdjT0::AdjustableT0Tool")
     return AdjT0__AdjustableT0Tool(**kwargs)
 
-def MdtMathSegmentFinder(flags,name="MdtMathSegmentFinder", **kwargs):
+def MdtMathSegmentFinderCfg(flags,name="MdtMathSegmentFinder", **kwargs):
     # beamType       = getattr(extraFlags,"beamType", beamFlags.beamType())
     # doSegmentT0Fit = getattr(extraFlags,"doSegmentT0Fit",muonRecFlags.doSegmentT0Fit())
     # enableCurvedSegmentFinding = getattr(extraFlags,"enableCurvedSegmentFinding", muonStandaloneFlags.enableCurvedSegmentFinding())
+    result = ComponentAccumulator()
 
     if flags.Muon.doSegmentT0Fit:
         kwargs.setdefault("AssociationRoadWidth", 3.)
         kwargs.setdefault("MDTAssocationPullcut", 3.)
         kwargs.setdefault("RecoverMdtOutliers", False)
-        kwargs.setdefault("DCFitProvider", "MdtSegmentT0Fitter" )
+        kwargs.setdefault("DCFitProvider", result.popToolsAndMerge(MdtSegmentT0FitterCfg(flags) ) )
 
     if flags.Beam.Type == 'singlebeam' or flags.Beam.Type == 'cosmics' or flags.Input.isMC is False:
         kwargs.setdefault("AssociationRoadWidth", 2.)
@@ -94,8 +95,8 @@ def MdtMathSegmentFinder(flags,name="MdtMathSegmentFinder", **kwargs):
 
     if flags.Muon.enableCurvedSegmentFinding:
         kwargs.setdefault("DoCurvedSegmentFinder",True)
-
-    return Muon__MdtMathSegmentFinder(name=name,**kwargs)
+    result.setPrivateTools(Muon__MdtMathSegmentFinder(name=name,**kwargs))
+    return result
 
 def MuonSegmentFittingToolCfg(flags, **kwargs):
     # declareProperty("SLPropagator",   m_slPropagator);
@@ -131,8 +132,13 @@ def MuonSegmentFittingToolCfg(flags, **kwargs):
     result.setPrivateTools(Muon__MuonSegmentFittingTool(**kwargs))    
     return result
 
+def MdtSegmentT0FitterCfg(flags, name="MdtSegmentT0Fitter", **kwargs):
+    result = MdtCalibrationDbToolCfg(flags) # Needed by MdtSegmentT0Fitter
+    kwargs.setdefault("CalibrationDbTool", result.popPrivateTools())
+    result.setPrivateTools(CompFactory.TrkDriftCircleMath.MdtSegmentT0Fitter(name, **kwargs))    
+    return result
+
 def DCMathSegmentMakerCfg(flags, **kwargs):    
-    TrkDriftCircleMath__MdtSegmentT0Fitter=CompFactory.TrkDriftCircleMath.MdtSegmentT0Fitter
     from MuonConfig.MuonRIO_OnTrackCreatorConfig import MdtDriftCircleOnTrackCreatorCfg, MuonClusterOnTrackCreatorCfg, TriggerChamberClusterOnTrackCreatorCfg
     from MuonConfig.MuonCondAlgConfig import MdtCondDbAlgCfg
      
@@ -160,12 +166,7 @@ def DCMathSegmentMakerCfg(flags, **kwargs):
     kwargs.setdefault("AssumePointingPhi", beamType != 'cosmics')
     kwargs.setdefault("OutputFittedT0", True)
 
-    acc = MdtCalibDbAlgCfg(flags) # Needed by MdtSegmentT0Fitter
-    result.merge(acc)
-
-    mdt_segment_t0_fitter = TrkDriftCircleMath__MdtSegmentT0Fitter()
-    result.addPublicTool(mdt_segment_t0_fitter)
-    kwargs.setdefault("DCFitProvider", mdt_segment_t0_fitter)
+    kwargs.setdefault("DCFitProvider", result.popToolsAndMerge(MdtSegmentT0FitterCfg(flags)))
     #kwargs.setdefault("CurvedErrorScaling", False)
     kwargs.setdefault("UsePreciseError", True)
     kwargs.setdefault("SinAngleCut", 0.4)
@@ -183,11 +184,10 @@ def DCMathSegmentMakerCfg(flags, **kwargs):
         mdt_dcot_CA = MdtDriftCircleOnTrackCreatorCfg(flags, name="MdtDriftCircleOnTrackCreatorAdjustableT0", TimingMode=3, \
                    DoTofCorrection=True, TimeWindowSetting=MdtCalibWindowNumber('Collision_data'))
         result.merge(mdt_dcot_CA)
-        mdt_creator=acc.getPrimary()
-        kwargs.setdefault("MdtCreatorT0", mdt_creator) # TODO - is this correct? 
-        mdt_math_segment_finder = MdtMathSegmentFinder(flags, doSegmentT0Fit=True)
+        kwargs.setdefault("MdtCreatorT0", mdt_dcot_CA.getPrimary()) # TODO - is this correct? 
+        mdt_math_segment_finder = result.popToolsAndMerge(MdtMathSegmentFinderCfg(flags, doSegmentT0Fit=True))
     else:
-        mdt_math_segment_finder = MdtMathSegmentFinder(flags)
+        mdt_math_segment_finder = result.popToolsAndMerge(MdtMathSegmentFinderCfg(flags))
         
     result.addPublicTool(mdt_math_segment_finder)
     kwargs.setdefault("MdtSegmentFinder", mdt_math_segment_finder )
@@ -524,85 +524,52 @@ def MooSegmentFinderCfg(flags, name='MooSegmentFinder', **kwargs):
     return result
 
 def MuonClusterSegmentFinderToolCfg(flags, **kwargs):
-    #m_slTrackFitter("Trk::GlobalChi2Fitter/MCTBSLFitter"),
-    #m_ambiTool("Trk::SimpleAmbiguityProcessorTool/MuonAmbiProcessor"),
-    #m_trackToSegmentTool("Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool"),
-    #m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-    #m_edmHelperSvc("Muon::MuonEDMHelperSvc/MuonEDMHelperSvc"),
-    #m_trackCleaner("Muon::MuonTrackCleaner/MuonTrackCleaner") {
-    #declareProperty("SLFitter",            m_slTrackFitter);
-    #declareProperty("SegmentAmbiguityTool",m_ambiTool);
-    #declareProperty("TrackToSegmentTool",  m_trackToSegmentTool);
-    #declareProperty("TrackCleaner",        m_trackCleaner);
+    from MuonConfig.MuonRecToolsConfig import MuonTrackToSegmentToolCfg
     result=ComponentAccumulator()
+    # Won't explicitly configure MuonIdHelperSvc
+    # Won't explicitly configure MuonEDMHelperSvc
+    kwargs.setdefault('SegmentAmbiguityTool', result.popToolsAndMerge( MuonAmbiProcessorCfg(flags) ) ) 
+    kwargs.setdefault('SLFitter', result.popToolsAndMerge( MCTBFitterCfg(flags, name = "SLFitter", StraightLine=True) ) ) 
+    kwargs.setdefault("TrackToSegmentTool", result.popToolsAndMerge( MuonTrackToSegmentToolCfg(flags) ) )
+    kwargs.setdefault("Printer", MuonEDMPrinterTool(flags) )
+    kwargs.setdefault('TrackCleaner', result.popToolsAndMerge( MuonTrackCleanerCfg(flags) ) ) 
+    kwargs.setdefault('TrackSummaryTool', result.popToolsAndMerge( MuonTrackSummaryToolCfg(flags) ) ) 
 
-    acc = MCTBFitterCfg(flags, name = "SLFitter", StraightLine=True)
-    slfitter = acc.getPrimary()      
-    result.addPublicTool(slfitter)
-    result.merge(acc)
-    kwargs.setdefault("SLFitter", slfitter)
-
-    acc = MuonTrackCleanerCfg(flags)
-    cleaner = acc.getPrimary()      
-    result.addPublicTool(cleaner)
-    kwargs.setdefault("TrackCleaner", cleaner)
-    result.merge(acc)
-
-    acc = MuonTrackSummaryToolCfg(flags)
-    track_summary = acc.getPrimary( )
-    result.addPublicTool(track_summary)
-    kwargs.setdefault('TrackSummaryTool', track_summary)
-    result.merge(acc)
+    result.setPrivateTools(Muon__MuonClusterSegmentFinderTool(**kwargs))
+    return result
 
-    acc  = MuonAmbiProcessorCfg(flags, name='MuonAmbiProcessor')
-    ambi = acc.popPrivateTools()      
-    acc.addPublicTool(ambi)
+def MuonPRDSelectionToolCfg( flags, name="MuonPRDSelectionTool", **kwargs):
+    from MuonConfig.MuonRIO_OnTrackCreatorConfig import MuonClusterOnTrackCreatorCfg, MdtDriftCircleOnTrackCreatorCfg
+    # Won't explicitly configure MuonIdHelperSvc
+    result=MdtDriftCircleOnTrackCreatorCfg(flags)
+    kwargs.setdefault("MdtDriftCircleOnTrackCreator", result.getPrimary())
+    acc = MuonClusterOnTrackCreatorCfg(flags)
+    kwargs.setdefault("MuonClusterOnTrackCreator", acc.getPrimary() )
     result.merge(acc)
-    kwargs.setdefault("SegmentAmbiguityTool", ambi)
+    # Won't explicitly configure MuonRecoValidationTool (but it would need configuration if used)
+    result.setPrivateTools(CompFactory.Muon.MuonPRDSelectionTool(**kwargs))
+    return result
 
+def MuonClusterSegmentFinderCfg(flags, **kwargs):
     from MuonConfig.MuonRecToolsConfig import MuonTrackToSegmentToolCfg
-    acc = MuonTrackToSegmentToolCfg(flags)
-    kwargs.setdefault( "TrackToSegmentTool", result.popToolsAndMerge(acc))
+    from MuonConfig.MuonRIO_OnTrackCreatorConfig import MuonClusterOnTrackCreatorCfg
 
-    # FIXME - remaining tools
-    result.setPrivateTools(Muon__MuonClusterSegmentFinderTool(**kwargs))
-    return result
-    
-def MuonClusterSegmentFinderCfg(flags, **kwargs):
-    #declareProperty("MuonClusterizationTool", m_clusterTool);
-    #declareProperty("MuonEDMPrinterTool",m_printer );    
-    #declareProperty("MuonPRDSelectionTool", m_muonPRDSelectionTool );
-    #declareProperty("MdtSegmentMaker",m_segmentMaker);
-    #declareProperty("SLFitter",            m_slTrackFitter);
-    #declareProperty("TrackToSegmentTool",  m_trackToSegmentTool);
-    #declareProperty("AmbiguityProcessor",m_ambiguityProcessor);
-    #declareProperty("TrackCleaner",        m_trackCleaner);
     result=ComponentAccumulator()
-    # FIXME - rest of the tools.
-
-    acc = DCMathSegmentMakerCfg(flags,name="DCMathSegmentMaker")
-    segment_maker = acc.getPrimary()      
-    acc.addPublicTool(segment_maker)
-    kwargs.setdefault('MdtSegmentMaker', segment_maker)
-    result.merge(acc)
-
-    acc = MCTBFitterCfg(flags, name = "SLFitter", StraightLine=True)
-    slfitter = acc.getPrimary()      
-    acc.addPublicTool(slfitter)
-    result.merge(acc)
-    kwargs.setdefault("SLFitter", slfitter)
-    
-    acc  = MuonAmbiProcessorCfg(flags, name='NewMuonAmbiProcessor')
-    ambi = acc.getPrimary()      
-    acc.addPublicTool(ambi)
-    result.merge(acc)
-    kwargs.setdefault("AmbiguityProcessor", ambi)
 
-    acc = MuonTrackCleanerCfg(flags)
-    cleaner = acc.getPrimary()      
-    acc.addPublicTool(cleaner)
+    # Won't explicitly configure MuonIdHelperSvc
+    kwargs.setdefault("MuonEDMPrinterTool", MuonEDMPrinterTool(flags) )
+    # Won't explicitly configure MuonLayerHashProviderTool
+    kwargs.setdefault("MuonPRDSelectionTool", result.popToolsAndMerge( MuonPRDSelectionToolCfg(flags) ) )
+    kwargs.setdefault('MdtSegmentMaker', result.popToolsAndMerge( DCMathSegmentMakerCfg(flags,name="DCMathSegmentMaker") ) ) 
+    # Won't explicitly configure MuonClusterizationTool
+    acc = MuonClusterOnTrackCreatorCfg(flags) # This only sets a public tool at the moment, so need to it like this. FIXME
+    kwargs.setdefault("MuonClusterOnTrackCreator", acc.getPrimary() )
     result.merge(acc)
-    kwargs.setdefault("TrackCleaner", cleaner)
+    kwargs.setdefault("TrackToSegmentTool", result.popToolsAndMerge( MuonTrackToSegmentToolCfg(flags) ) )
+    kwargs.setdefault('SLFitter', result.popToolsAndMerge( MCTBFitterCfg(flags, name = "SLFitter", StraightLine=True) ) ) 
+    kwargs.setdefault('AmbiguityProcessor', result.popToolsAndMerge( MuonAmbiProcessorCfg(flags) ) ) 
+    kwargs.setdefault('TrackCleaner', result.popToolsAndMerge( MuonTrackCleanerCfg(flags) ) ) 
+    # Won't explicitly configure MuonSegmentOverlapRemovalTool (though it possibly needs it)
 
     from MuonConfig.MuonRecToolsConfig import MuonTrackToSegmentToolCfg
     acc = MuonTrackToSegmentToolCfg(flags)
@@ -748,8 +715,7 @@ if __name__=="__main__":
     
     itemsToRecord = ["Trk::SegmentCollection#MuonSegments", "Trk::SegmentCollection#NCB_MuonSegments"]
     SetupMuonStandaloneOutput(cfg, ConfigFlags, itemsToRecord)
-    
-    
+
     # cfg.getService("StoreGateSvc").Dump = True
     cfg.printConfig()
     f=open("MuonSegmentFinding.pkl","wb")
diff --git a/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py
index d08ecc569532233ad50978b7ee5b9dc65d1cf9bd..c66983c0fca2ac6b9825996dbd71df01f2c775bc 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py
@@ -18,9 +18,7 @@ def MooTrackFitterCfg(flags, name = 'MooTrackFitter', **kwargs):
     result.addPublicTool(mctb_fitter)
     kwargs.setdefault("Fitter",          mctb_fitter)
     kwargs.setdefault("FitterPreFit",          mctb_fitter)
-    
-    # FIXME MuPatHitTool currently isn't configured, but should be.
-    MuPatHitToolCfg
+        
     acc = MuPatHitToolCfg(flags)
     mu_pat_hit_tool = acc.getPrimary()
     result.addPublicTool(mu_pat_hit_tool)
@@ -343,6 +341,8 @@ def MuPatCandidateToolCfg(flags, name="MuPatCandidateTool", **kwargs):
     Muon__MuPatCandidateTool=CompFactory.Muon.MuPatCandidateTool
     # https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuPatTools.py#L32
     from MuonConfig.MuonRIO_OnTrackCreatorConfig import CscClusterOnTrackCreatorCfg,MdtDriftCircleOnTrackCreatorCfg
+    from MuonConfig.MuonRecToolsConfig import MuPatHitToolCfg
+
     result = MdtDriftCircleOnTrackCreatorCfg(flags)
     mdt_dcot_creator = result.getPrimary()
     kwargs.setdefault("MdtRotCreator", mdt_dcot_creator)
@@ -354,16 +354,28 @@ def MuPatCandidateToolCfg(flags, name="MuPatCandidateTool", **kwargs):
         
     kwargs.setdefault("MuonPrinterTool", MuonEDMPrinterTool(flags) )
 
+    acc = MuPatHitToolCfg(flags)
+    mu_pat_hit_tool = acc.getPrimary()
+    result.merge(acc)
+    kwargs.setdefault("HitTool",          mu_pat_hit_tool)
+
     mu_pat_cand_tool = Muon__MuPatCandidateTool(name, **kwargs)
     result.setPrivateTools(mu_pat_cand_tool)
     return result
     
 def MuonChamberHoleRecoveryToolCfg(flags, name="MuonChamberHoleRecoveryTool", **kwargs):
+    from MuonConfig.MuonRIO_OnTrackCreatorConfig import CscClusterOnTrackCreatorCfg,MdtDriftCircleOnTrackCreatorCfg
+
     Muon__MuonChamberHoleRecoveryTool=CompFactory.Muon.MuonChamberHoleRecoveryTool
     result=ComponentAccumulator()
+    # Not setting explicitly MuonStationIntersectSvc
+    acc = MdtDriftCircleOnTrackCreatorCfg(flags)
+    mdt_dcot_creator = acc.getPrimary()
+    kwargs.setdefault("MdtRotCreator", mdt_dcot_creator)
+    result.merge(acc)
+
     kwargs.setdefault("AddMeasurements",  not flags.Muon.doSegmentT0Fit )
     if flags.Detector.GeometryCSC:
-        from MuonConfig.MuonRIO_OnTrackCreatorConfig import CscClusterOnTrackCreatorCfg
         extrakwargs={}
         if flags.Muon.enableErrorTuning or not flags.Input.isMC:
             extrakwargs["ErrorScalerBeta"] = 0.200
diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MdtDigitizationConfig.py b/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MdtDigitizationConfig.py
index e82b1c285072aed05d7029f547be6824d25883df..b8217bc2462934a56f6864730df254b76bfb071c 100644
--- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MdtDigitizationConfig.py
+++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/python/MdtDigitizationConfig.py
@@ -19,7 +19,9 @@ def MDT_LastXing():
     return 150
 
 def MdtDigitizationTool(name="MdtDigitizationTool",**kwargs):
-   import MuonCondAlg.MdtCondDbAlgConfig # noqa: F401 (MT-safe conditions access)
+   import MuonCondAlg.MdtCondDbAlgConfig # noqa: F401 MT-safe conditions access 
+   from MuonCnvExample import MuonCalibConfig
+
    kwargs.setdefault("MaskedStations", [])
    kwargs.setdefault("UseDeadChamberSvc", True)
    kwargs.setdefault("DiscardEarlyHits", True)
@@ -50,6 +52,8 @@ def MdtDigitizationTool(name="MdtDigitizationTool",**kwargs):
       kwargs.setdefault("OutputSDOName", overlayFlags.bkgPrefix() + "MDT_SDO")
    else:
       kwargs.setdefault("OutputSDOName", "MDT_SDO")
+   
+   kwargs.setdefault("CalibrationDbTool", MuonCalibConfig.MdtCalibrationDbTool()) 
 
    return CfgMgr.MdtDigitizationTool(name,**kwargs)
       #return CfgMgr.MDT_PileUpTool(name,**kwargs)
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/CMakeLists.txt b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/CMakeLists.txt
index a6936e0f8d8316eb510a54c414cc327b4e9cd489..f2f9a3a07ab7902f3d5550f5a178cd82209403bf 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/CMakeLists.txt
+++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/CMakeLists.txt
@@ -17,5 +17,4 @@ atlas_add_component( MdtDriftCircleOnTrackCreator
 
 # Install files from the package:
 atlas_install_headers( MdtDriftCircleOnTrackCreator )
-atlas_install_joboptions( share/*.py )
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator.h b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator.h
index 77f8091767c2f06963fe210dd9520dc131aa2112..151382ed3b35cc18d12341289281257e8ab268af 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator.h
@@ -189,8 +189,8 @@ namespace Muon {
       double muonErrorStrategy(const MuonDriftCircleErrorStrategy* myStrategy, double sigmaR, const Identifier& id) const;
       
       ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
-      ToolHandle<MdtCalibrationTool> m_mdtCalibrationTool{this,"CalibrationTool","MdtCalibrationTool"};
-      ToolHandle<MdtCalibrationDbTool> m_mdtCalibrationDbTool{this,"CalibrationDbTool","MdtCalibrationDbTool"};
+      ToolHandle<MdtCalibrationTool>        m_mdtCalibrationTool{this,"CalibrationTool","MdtCalibrationTool"};
+      ToolHandle<MdtCalibrationDbTool>      m_mdtCalibrationDbTool{this,"CalibrationDbTool","MdtCalibrationDbTool"};
 
       // Configuration variables
       bool                                 m_doMdt; //!< Process MDT ROTs
@@ -218,6 +218,7 @@ namespace Muon {
       bool                                m_doIndividualChamberReweights; //!< Deweight individual chambers
       bool                                m_isMC; //!< toggle between MC and data alignment errors (to be removed in rel. 21!)
       bool                                m_looseErrors; //!< toggle between loose errors (initial before alignment) and tight after alignment
+      Gaudi::Property<bool>               m_wasConfigured {this,"WasConfigured",false,"This tool is too complicated to rely on defaults. Will fail if not configured."};
     
       const double m_inverseSpeedOfLight = 1 / Gaudi::Units::c_light; // need 1/299.792458, needed inside timeOfFlight()
     };
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/share/MdtDriftCircleOnTrackCreator.py b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/share/MdtDriftCircleOnTrackCreator.py
deleted file mode 100644
index 1d5dfaa87b2bc89b656bf2d22067644896fcd800..0000000000000000000000000000000000000000
--- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/share/MdtDriftCircleOnTrackCreator.py
+++ /dev/null
@@ -1,5 +0,0 @@
-print "***** WARNING ******************************************************************"
-print " The file MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator.py"
-print "          is currently obsolete."
-print "********************************************************************************"
-
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx
index d7d7affb396fbe15423793956796b4d41da68fba..832872863f906696c1144300cdbaca749a9b7676 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRIO_OnTrackCreators/MdtDriftCircleOnTrackCreator/src/MdtDriftCircleOnTrackCreator.cxx
@@ -137,6 +137,10 @@ StatusCode Muon::MdtDriftCircleOnTrackCreator::initialize()
     ATH_MSG_ERROR( "Time Correction Type too large! Aborting." );
     return StatusCode::FAILURE;
   }
+
+  if (!m_wasConfigured){
+    ATH_MSG_WARNING( "This tool is too complicated to rely on defaults. Potential configuration issue." );
+  }
   
   return StatusCode::SUCCESS; 
 } 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonPrdProviderToolsConfig.py b/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonPrdProviderToolsConfig.py
index edd0358ebe330792d03092db6a750495b75d68ab..dc084832971d7f04cc035c21d89ad341270b132f 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonPrdProviderToolsConfig.py
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonPrdProviderToolsConfig.py
@@ -36,6 +36,7 @@ def MdtPrepDataProviderTool(name="MdtPrepDataProviderTool", **kwargs):
   
   if globalflags.DataSource.is_data():
     kwargs.setdefault("UseTwin", True)
+  kwargs.setdefault("CalibrationTool", MuonCalibConfig.MdtCalibrationTool())
 
   from MuonMDT_CnvTools.MuonMDT_CnvToolsConf import Muon__MdtRdoToPrepDataToolMT
   return Muon__MdtRdoToPrepDataToolMT(name,**kwargs)
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecTools.py b/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecTools.py
index 49b060b6f8860aef4b2b687b615db173df969d10..dfadaae81f8a87dab87aef1b746983e096f3ad07 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecTools.py
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecTools.py
@@ -78,6 +78,8 @@ def MdtDriftCircleOnTrackCreator(name="MdtDriftCircleOnTrackCreator",**kwargs):
     kwargs.setdefault("DoMagneticFieldCorrection", mdtCalibFlags.correctMdtRtForBField())
     kwargs.setdefault("DoWireSag", muonRecFlags.useWireSagCorrections())
     kwargs.setdefault("DoSlewingCorrection", mdtCalibFlags.correctMdtRtForTimeSlewing())
+    kwargs.setdefault("CalibrationTool", MuonCalibConfig.MdtCalibrationTool())
+    kwargs.setdefault("CalibrationDbTool", MuonCalibConfig.MdtCalibrationDbTool())
 
     if beamFlags.beamType() == 'cosmics' or beamFlags.beamType() == 'singlebeam' :
         kwargs.setdefault("DoTofCorrection", False)
@@ -104,7 +106,7 @@ def MdtDriftCircleOnTrackCreator(name="MdtDriftCircleOnTrackCreator",**kwargs):
     if TriggerFlags.MuonSlice.doTrigMuonConfig:
         kwargs.setdefault("doMDT", True)
 
-    return CfgMgr.Muon__MdtDriftCircleOnTrackCreator(name,**kwargs)
+    return CfgMgr.Muon__MdtDriftCircleOnTrackCreator(name, WasConfigured=True, **kwargs)
 # end of factory function MdtDriftCircleOnTrackCreator
 
 
@@ -349,6 +351,7 @@ def MdtSegmentT0Fitter(name="MdtSegmentT0Fitter",**kwargs):
     from MuonRecExample import MuonAlignConfig  # noqa: F401
     from MuonCnvExample import MuonCalibConfig  # noqa: F401
     MuonCalibConfig.setupMdtCondDB()
+    kwargs.setdefault("CalibrationDbTool", MuonCalibConfig.MdtCalibrationDbTool())
     return CfgMgr.TrkDriftCircleMath__MdtSegmentT0Fitter(name,**kwargs)
 
 def MdtMathSegmentFinder(name="MdtMathSegmentFinder",extraFlags=None,**kwargs):
diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopJetMETCPTools.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopJetMETCPTools.cxx
index bb3e3d380abbc73b1ece46e007e4464ff0a96cf2..5e807046423707d8bd8e696f80073ba5da69c057 100644
--- a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopJetMETCPTools.cxx
+++ b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopJetMETCPTools.cxx
@@ -382,9 +382,11 @@ namespace top {
           calibConfigLargeR = "JES_MC16recommendation_FatJet_Trimmed_JMS_calo_12Oct2018.config";
         } else if (calibChoice == "TCCMass") {
           calibConfigLargeR = "JES_MC16recommendation_FatJet_TCC_JMS_calo_30Oct2018.config";
+	} else if (calibChoice == "UFOSDMass") {
+	  calibConfigLargeR = "JES_MC16recommendation_R10_UFO_CSSK_SoftDrop_JMS_01April2020.config";
         } else {
           ATH_MSG_ERROR(
-            "Unknown largeRJESJMSConfig (Available options: TAMass, CaloMass, CombMass and TCCMass)) : " + calibChoice);
+            "Unknown largeRJESJMSConfig (Available options: TAMass, CaloMass, CombMass, TCCMass and UFOSDMass)) : " + calibChoice);
           return StatusCode::FAILURE;
         }
       } else { //Insitu calibration for Data
@@ -394,15 +396,19 @@ namespace top {
         } else if (calibChoice == "TCCMass") {
           calibConfigLargeR = "JES_MC16recommendation_FatJet_TCC_JMS_calo_30Oct2018.config"; //There's no insitu
                                                                                              // calibration yet
-        } else {
+        } else if (calibChoice == "UFOSDMass") {
+	  calibConfigLargeR = "JES_MC16recommendation_R10_UFO_CSSK_SoftDrop_JMS_01April2020.config"; //There's no insitu
+	                                                                                     // calibration yet
+	} else {
           ATH_MSG_ERROR(
-            "Unknown largeRJESJMSConfig (Available options: TAMass, CaloMass, CombMass and TCCMass) : " + calibChoice);
+            "Unknown largeRJESJMSConfig (Available options: TAMass, CaloMass, CombMass, TCCMass and UFOSDMass) : " + calibChoice);
           return StatusCode::FAILURE;
         }
       }
       std::string calibSequenceLargeR = "EtaJES_JMS";
       if ((!m_config->isMC()) &&
-          (calibChoice != "TCCMass")) calibSequenceLargeR = "EtaJES_JMS_Insitu_InsituCombinedMass"; //For data, there's
+          (calibChoice != "TCCMass") &&
+	  (calibChoice != "UFOSDMass")) calibSequenceLargeR = "EtaJES_JMS_Insitu_InsituCombinedMass"; //For data, there's
                                                                                                     // is insitu
                                                                                                     // calibration for
                                                                                                     // lc-topo jets
diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx
index 6f1d01ea67d15147590e84d7336ffe145af464bd..c5f455ea61268ad36af17294c30ae9128e993903 100644
--- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx
+++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx
@@ -221,7 +221,7 @@ namespace top {
                       "Path to directory containing large-R jet uncertainties config",
                       "rel21/Summer2019");
     registerParameter("LargeRJESJMSConfig",
-                      "Calibration for large-R JES/JMS. CombMass, CaloMass or TCCMass (default CombMass).",
+                      "Calibration for large-R JES/JMS. CombMass, CaloMass, TCCMass or UFOSDMass (default CombMass).",
                       "CombMass");
     registerParameter("BoostedJetTagging",
                       "Boosted jet taggers to use in the analysis, separated by commas or white spaces."
diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/Root/JetObjectCollectionMaker.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/Root/JetObjectCollectionMaker.cxx
index 21f5fe7c7c049bec58ec7c541716dd9343ff2a03..6ee10ed8087e27a147d60ae10813e64cce34832f 100644
--- a/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/Root/JetObjectCollectionMaker.cxx
+++ b/PhysicsAnalysis/TopPhys/xAOD/TopSystematicObjectMaker/Root/JetObjectCollectionMaker.cxx
@@ -221,7 +221,7 @@ namespace top {
         largeRsysts.insert(m_jetUncertaintiesToolLargeR->recommendedSystematics());
       } else {
         ATH_MSG_WARNING(
-          "TA Mass & Calo Mass are not supported for large-R jet uncertainties at the moment. Large-R jet systemtatics skipped!");
+          "TA Mass & Calo Mass & UFO SD Mass are not supported for large-R jet uncertainties at the moment. Large-R jet systemtatics skipped!");
       }
     }
 
diff --git a/Projects/AnalysisBase/externals.txt b/Projects/AnalysisBase/externals.txt
index d74ef6bfa537046888180fbd2cada71e150a5c67..cd048463713487dd992cc6a33cc5523c33e45fa1 100644
--- a/Projects/AnalysisBase/externals.txt
+++ b/Projects/AnalysisBase/externals.txt
@@ -6,4 +6,4 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AnalysisBaseExternalsVersion = 2.0.84
+AnalysisBaseExternalsVersion = 2.0.85
diff --git a/Projects/AthDataQuality/CMakeLists.txt b/Projects/AthDataQuality/CMakeLists.txt
index 5106635935320af46572e71f445b5630afacaad2..75a5c2a00faed82b2de4470ed64d4a9f0d7aa7a1 100644
--- a/Projects/AthDataQuality/CMakeLists.txt
+++ b/Projects/AthDataQuality/CMakeLists.txt
@@ -18,7 +18,7 @@ set( TDAQ-COMMON_ATROOT
 find_package( AtlasCMake REQUIRED )
 
 # Build the project against LCG:
-set( LCG_VERSION_POSTFIX "python3"
+set( LCG_VERSION_POSTFIX "python3_ATLAS_2"
    CACHE STRING "Version postfix for the LCG release to use" )
 set( LCG_VERSION_NUMBER 98
    CACHE STRING "Version number for the LCG release to use" )
diff --git a/Projects/AthDataQuality/externals.txt b/Projects/AthDataQuality/externals.txt
index 528ea863b78a4a772dad1fa215434caf01b9eeca..ce0fa6e95687ad0e4c48f1707d7825605cacd19d 100644
--- a/Projects/AthDataQuality/externals.txt
+++ b/Projects/AthDataQuality/externals.txt
@@ -5,4 +5,4 @@
 # an "origin/" prefix before it. For tags however this is explicitly
 # forbidden.
 
-AtlasExternalsVersion = 2.0.84
+AtlasExternalsVersion = 2.0.85
diff --git a/Projects/AthGeneration/build_externals.sh b/Projects/AthGeneration/build_externals.sh
index 1273378fd15f735a589ac3659f01e04e03db4b3a..3b50cc48cff407496d7d15391079557d883905a2 100755
--- a/Projects/AthGeneration/build_externals.sh
+++ b/Projects/AthGeneration/build_externals.sh
@@ -24,7 +24,7 @@ BUILDDIR=""
 BUILDTYPE="RelWithDebInfo"
 FORCE=""
 CI=""
-EXTRACMAKE=(-DLCG_VERSION_NUMBER=98 -DLCG_VERSION_POSTFIX="python3")
+EXTRACMAKE=(-DLCG_VERSION_NUMBER=98 -DLCG_VERSION_POSTFIX="python3_ATLAS_2")
 while getopts ":t:b:x:fch" opt; do
     case $opt in
         t)
diff --git a/Projects/AthGeneration/externals.txt b/Projects/AthGeneration/externals.txt
index aa90f04a096baa23219ab7f51aacfb0aa1bf0f42..8ea0e812eee807c0b2b1dd881ebe4bdf369e48c6 100644
--- a/Projects/AthGeneration/externals.txt
+++ b/Projects/AthGeneration/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthGenerationExternalsVersion = 2.0.84
+AthGenerationExternalsVersion = 2.0.85
 
 # The version of atlas/Gaudi to use:
 GaudiVersion = v34r0.005
diff --git a/Projects/AthSimulation/build_externals.sh b/Projects/AthSimulation/build_externals.sh
index e6467a5ff31fc6c2c19d8036c1db9b6bd357ffd0..3de9f169edf3f2581d559c36cd2a990f03a6270c 100755
--- a/Projects/AthSimulation/build_externals.sh
+++ b/Projects/AthSimulation/build_externals.sh
@@ -24,7 +24,7 @@ BUILDDIR=""
 BUILDTYPE="RelWithDebInfo"
 FORCE=""
 CI=""
-EXTRACMAKE=(-DLCG_VERSION_NUMBER=98 -DLCG_VERSION_POSTFIX="python3")
+EXTRACMAKE=(-DLCG_VERSION_NUMBER=98 -DLCG_VERSION_POSTFIX="python3_ATLAS_2")
 while getopts ":t:b:x:fch" opt; do
     case $opt in
         t)
diff --git a/Projects/AthSimulation/externals.txt b/Projects/AthSimulation/externals.txt
index 6e02eda2577b0bf28e34bc7b7d3a80b33cb8ce44..b72e0bd225f5f236b41b6253d6401581b259075f 100644
--- a/Projects/AthSimulation/externals.txt
+++ b/Projects/AthSimulation/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthSimulationExternalsVersion = 2.0.84
+AthSimulationExternalsVersion = 2.0.85
 
 # The version of atlas/Gaudi to use:
 GaudiVersion = v34r0.005
diff --git a/Projects/Athena/build_externals.sh b/Projects/Athena/build_externals.sh
index 20771cdb68c2420b3870e42aa4f861877a9c4a0e..e84746e1b1fd7ad6a0cac7ac1fc1dc7790077e26 100755
--- a/Projects/Athena/build_externals.sh
+++ b/Projects/Athena/build_externals.sh
@@ -24,7 +24,7 @@ BUILDDIR=""
 BUILDTYPE="RelWithDebInfo"
 FORCE=""
 CI=""
-EXTRACMAKE=(-DLCG_VERSION_NUMBER=98 -DLCG_VERSION_POSTFIX="python3")
+EXTRACMAKE=(-DLCG_VERSION_NUMBER=98 -DLCG_VERSION_POSTFIX="python3_ATLAS_2")
 while getopts ":t:b:x:fch" opt; do
     case $opt in
         t)
diff --git a/Projects/Athena/externals.txt b/Projects/Athena/externals.txt
index 4cb26b9a339d93a5b92cd621b9feecb130f68ebb..596814391928a2985134bba03759313886b77008 100644
--- a/Projects/Athena/externals.txt
+++ b/Projects/Athena/externals.txt
@@ -6,7 +6,7 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-AthenaExternalsVersion = 2.0.84
+AthenaExternalsVersion = 2.0.85
 
 # The version of atlas/Gaudi to use:
 GaudiVersion = v34r0.005
diff --git a/Projects/VP1Light/externals.txt b/Projects/VP1Light/externals.txt
index 8e3f7150134e98c6da5dd386adf86068a852e6a3..65022b2ebd0be87f3b010204276a7b7068dc77ca 100644
--- a/Projects/VP1Light/externals.txt
+++ b/Projects/VP1Light/externals.txt
@@ -6,4 +6,4 @@
 # forbidden.
 
 # The version of atlas/atlasexternals to use:
-VP1LightExternalsVersion = 2.0.84
+VP1LightExternalsVersion = 2.0.85
diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
index 1b39bc031dfd4fe728750020f2196b6f8bd25963..715ded49b3b09d492aeab24003b78e3456aa634e 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py
@@ -211,14 +211,13 @@ def MuonMaterialProviderToolCfg(flags,  name = "MuonMaterialProviderTool"):
 
 def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs):
     from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
-    result = MuonMaterialProviderToolCfg(flags)
-    kwargs.setdefault( "CaloMaterialProvider", result.getPrimary() )
-    if flags.Muon.MuonTrigger:
-        kwargs.setdefault('MakeTrackAtMSLink',True)
-        kwargs.setdefault("FillTimingInformation",False)
-        kwargs.setdefault("MuonSelectionTool", "")
-        kwargs.setdefault("UseCaloCells", False)
-        kwargs.setdefault("TrackSegmentAssociationTool", "")
+    result = ComponentAccumulator()
+    # Not explicitly setting up MuonIdHelperSvc, nor MuonEDMHelperSvc
+    kwargs.setdefault("Printer", MuonEDMPrinterTool(flags) )
+    # Not explicitly setting up MuonPrintingTool
+    acc = ParticleCaloExtensionToolCfg(flags,StartFromPerigee=True)
+    kwargs.setdefault("ParticleCaloExtensionTool", acc.getPrimary() )
+    result.merge(acc)
 
     acc = MuonCombinedParticleCreatorCfg(flags)
     kwargs.setdefault("TrackParticleCreator", acc.getPrimary() )
@@ -237,10 +236,29 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs):
     kwargs.setdefault("AmbiguityProcessor", acc.popPrivateTools())
     result.merge(acc)
 
+    kwargs.setdefault("Propagator", CompFactory.Trk.RungeKuttaPropagator(name = 'AtlasRungeKuttaPropagator'))# FIXME - there should be a CA for this!
+    # Not explicitly setting up MuonDressingTool (but probably should FIXME)
+    # Not explicitly setting up MomentumBalanceTool nor ScatteringAngleTool
+    # Not explicitly setting up MuonSegmentConverterTool (but probably should FIXME)
+    # Not explicitly setting up MeanMDTdADCTool (but probably should FIXME)
+
+    kwargs.setdefault( "CaloMaterialProvider", result.popToolsAndMerge( MuonMaterialProviderToolCfg(flags) ) )
+
+    # Not explicitly setting up TrackSegmentAssociationTool 
+
+    kwargs.setdefault("TrackQuery",   result.popToolsAndMerge(MuonTrackQueryCfg(flags)) )
+
     acc = MuonTrackSummaryToolCfg(flags)
     kwargs.setdefault("TrackSummaryTool", acc.popPrivateTools())
     result.merge(acc)
 
+    if flags.Muon.MuonTrigger:
+        kwargs.setdefault('MakeTrackAtMSLink',True)
+        kwargs.setdefault("FillTimingInformation",False)
+        kwargs.setdefault("MuonSelectionTool", "")
+        kwargs.setdefault("UseCaloCells", False)
+        kwargs.setdefault("TrackSegmentAssociationTool", "")
+
     # This tool needs MuonScatteringAngleSignificanceTool... which in turn needs TrackingVolumeSvc.
     # FIXME - probably this should be someplace central.
     trackingVolSvc = CompFactory.Trk.TrackingVolumesSvc(name="TrackingVolumesSvc")
@@ -303,6 +321,14 @@ def MuonCandidateToolCfg(flags, name="MuonCandidateTool",**kwargs):
     result.setPrivateTools(tool)
     return result 
 
+def MuonCombinedDebuggerToolCfg( flags, name="MuonCombinedDebuggerTool",**kwargs ):
+    result=ComponentAccumulator()
+    match_quality = CompFactory.Rec.MuonMatchQuality(TrackQuery = result.popToolsAndMerge( MuonTrackQueryCfg(flags) ) )
+    kwargs.setdefault("MuonMatchQuality",match_quality )
+    tool = CompFactory.MuonCombined.MuonCombinedDebuggerTool(name, **kwargs)
+    result.setPrivateTools(tool)
+    return result    
+
 def MuonCombinedToolCfg(flags, name="MuonCombinedTool",**kwargs):
     tools = []
     result=ComponentAccumulator()
@@ -320,6 +346,8 @@ def MuonCombinedToolCfg(flags, name="MuonCombinedTool",**kwargs):
         result.merge(acc)
 
     kwargs.setdefault("MuonCombinedTagTools", tools )
+    kwargs.setdefault("MuonCombinedDebuggerTool", result.popToolsAndMerge( MuonCombinedDebuggerToolCfg(flags) ) )
+
     tool = CompFactory.MuonCombined.MuonCombinedTool(name,**kwargs)
     result.setPrivateTools(tool)
     return result 
@@ -337,9 +365,7 @@ def MuonCombinedFitTagToolCfg(flags, name="MuonCombinedFitTagTool",**kwargs):
     result.addPublicTool(tool)
     kwargs.setdefault("TrackBuilder",  tool )
 
-    acc = MuonTrackQueryCfg(flags)
-    kwargs.setdefault("TrackQuery",           acc.popPrivateTools() )
-    result.merge(acc)
+    kwargs.setdefault("TrackQuery",   result.popToolsAndMerge(MuonTrackQueryCfg(flags)) )
 
     acc = MuonMatchQualityCfg(flags)
     kwargs.setdefault("MatchQuality",           acc.popPrivateTools() )
@@ -412,6 +438,7 @@ def iPatSLFitterCfg(flags, name='iPatSLFitter', **kwargs):
 
 # track cleaner configured to use the same fitter
 def MuidTrackCleanerCfg(flags, name='MuidTrackCleaner', **kwargs ):
+    from MuonConfig.MuonRecToolsConfig import MuonTrackCleanerCfg
     if flags.Beam.Type == 'cosmics':
         kwargs.setdefault("PullCut"     , 5.0)
         kwargs.setdefault("PullCutPhi"  , 10.0)
@@ -422,17 +449,7 @@ def MuidTrackCleanerCfg(flags, name='MuidTrackCleaner', **kwargs ):
     if flags.Muon.MuonTrigger:
         kwargs.setdefault("Iterate", False)
         kwargs.setdefault("RecoverOutliers", False)
-    result = iPatFitterCfg(flags)
-    kwargs.setdefault("Fitter"      , result.popPrivateTools() )
-    acc= iPatSLFitterCfg(flags)
-    kwargs.setdefault("SLFitter"    , acc.popPrivateTools() )
-    result.merge(acc)
-  
-    kwargs.setdefault("Printer", MuonEDMPrinterTool(flags) )
-
-    tool = CompFactory.Muon.MuonTrackCleaner(name,**kwargs) #FIXME this is also in MuonConfig - check to see whether we can just use this.
-    result.setPrivateTools(tool)
-    return result
+    return MuonTrackCleanerCfg(flags, name, **kwargs)
     
 def MuidCaloEnergyParam(flags, name='MuidCaloEnergyParam', **kwargs ):
     kwargs.setdefault("Cosmics", flags.Beam.Type == 'cosmics' )
@@ -648,6 +665,8 @@ def CombinedMuonTrackBuilderCfg(flags, name='CombinedMuonTrackBuilder', **kwargs
     kwargs.setdefault( "CaloMaterialProvider", acc.getPrimary() )
     result.merge(acc)
  
+    kwargs.setdefault("TrackQuery",   result.popToolsAndMerge(MuonTrackQueryCfg(flags)) )
+
     if flags.Muon.SAMuonTrigger:
         acc = MuonTrackSummaryToolCfg(flags)
         kwargs.setdefault("TrackSummaryTool", acc.popPrivateTools())
@@ -724,6 +743,8 @@ def CombinedMuonTrackBuilderFitCfg(flags, name='CombinedMuonTrackBuilderFit', **
 def MuonMatchQualityCfg(flags, name='MuonMatchQuality', **kwargs ):
     result = CombinedMuonTagTestToolCfg(flags)
     kwargs.setdefault("TagTool", result.popPrivateTools() )
+    kwargs.setdefault("TrackQuery", result.popToolsAndMerge(MuonTrackQueryCfg(flags)) )
+
     tool = CompFactory.Rec.MuonMatchQuality(name,**kwargs)
     result.setPrivateTools(tool)
     return result
@@ -889,7 +910,7 @@ def MuonCaloTagToolCfg(flags, name='MuonCaloTagTool', **kwargs ):
 
 # Misc 
 def MuonLayerSegmentFinderToolCfg(flags, name="MuonLayerSegmentFinderTool", **kwargs ):
-    from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg, MuonClusterSegmentFinderToolCfg
+    from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg, MuonClusterSegmentFinderToolCfg, MuonPRDSelectionToolCfg
     result = ComponentAccumulator() 
 
     csc2d=""
@@ -907,13 +928,15 @@ def MuonLayerSegmentFinderToolCfg(flags, name="MuonLayerSegmentFinderTool", **kw
     kwargs.setdefault("Csc2DSegmentMaker",               csc2d )
     kwargs.setdefault("Csc4DSegmentMaker",               csc4d )
 
+    kwargs.setdefault("MuonPRDSelectionTool", result.popToolsAndMerge( MuonPRDSelectionToolCfg(flags) ) )
+
     acc = DCMathSegmentMakerCfg(flags, name = "DCMathSegmentMaker")
     segmentmaker = acc.popPrivateTools()
     kwargs.setdefault("SegmentMaker",               segmentmaker )
     result.addPublicTool(segmentmaker)
     result.merge(acc)
 
-    acc = MuonClusterSegmentFinderCfg(flags, name = "MuonClusterSegmentFinderEJWM")
+    acc = MuonClusterSegmentFinderCfg(flags, name = "MuonClusterSegmentFinder")
     clustersegmentfinder = acc.getPrimary() #Already adds it as a public tool.
     kwargs.setdefault("MuonClusterSegmentFinder",               clustersegmentfinder )
     result.merge(acc)
@@ -940,10 +963,16 @@ def MuonLayerSegmentMatchingToolCfg(flags, name="MuonLayerSegmentMatchingTool",
 def MuonInsideOutRecoToolCfg(flags, name="MuonInsideOutRecoTool", **kwargs ):
 #    if TriggerFlags.MuonSlice.doTrigMuonConfig:
 #       kwargs.setdefault("VertexContainer", "")
-    result = MuonLayerSegmentFinderToolCfg(flags, name= "MuonLayerSegmentFinderToolEJWM")
+    result = MuonLayerSegmentFinderToolCfg(flags, name= "MuonLayerSegmentFinderTool")
     layersegmentfindertool = result.popPrivateTools()
     kwargs.setdefault("MuonLayerSegmentFinderTool", layersegmentfindertool)
     result.addPublicTool(layersegmentfindertool)
+    
+    acc = MuonLayerSegmentMatchingToolCfg(flags)
+    muon_layer_segment_matching = acc.popPrivateTools()
+    kwargs.setdefault("MuonLayerSegmentMatchingTool", muon_layer_segment_matching)
+    acc.addPublicTool(muon_layer_segment_matching)
+    result.merge(acc)
 
     acc = MuonLayerAmbiguitySolverToolCfg(flags)
     muon_layer_ambiguity_solver = acc.popPrivateTools()
@@ -951,12 +980,6 @@ def MuonInsideOutRecoToolCfg(flags, name="MuonInsideOutRecoTool", **kwargs ):
     acc.addPublicTool(muon_layer_ambiguity_solver)
     result.merge(acc)
 
-    acc = MuonLayerSegmentMatchingToolCfg(flags)
-    muon_layer_segment_matching = acc.popPrivateTools()
-    kwargs.setdefault("MuonLayerSegmentMatchingTool", muon_layer_segment_matching)
-    acc.addPublicTool(muon_layer_segment_matching)
-    result.merge(acc)
-
     acc = MuonCandidateTrackBuilderToolCfg(flags)
     muon_candidate_track_builder = acc.popPrivateTools()
     kwargs.setdefault("MuonCandidateTrackBuilderTool", muon_candidate_track_builder)
@@ -976,6 +999,9 @@ def MuonInsideOutRecoToolCfg(flags, name="MuonInsideOutRecoTool", **kwargs ):
     kwargs.setdefault("TrackAmbiguityProcessor", acc.getPrimary())
     result.merge(acc)
 
+    from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryToolCfg
+    kwargs.setdefault("TrackSummaryTool", acc.popToolsAndMerge(  MuonTrackSummaryToolCfg(flags) ) )
+
     tool = CompFactory.MuonCombined.MuonInsideOutRecoTool(name, **kwargs)
     result.setPrivateTools(tool)
     return result
@@ -1047,6 +1073,7 @@ def MuonStauRecoToolCfg(flags,  name="MuonStauRecoTool", **kwargs ):
     from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg
     from MuonConfig.MuonTrackBuildingConfig import MuonChamberHoleRecoveryToolCfg
     from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg, MuonSeededSegmentFinderCfg
+    from MuonConfig.MuonCalibrationConfig import MdtCalibrationDbToolCfg
 
     kwargs.setdefault("ConsideredPDGs", [13,-13,1000015,-1000015])
     kwargs.setdefault("DoTruth", flags.Input.isMC )
@@ -1092,4 +1119,7 @@ def MuonStauRecoToolCfg(flags,  name="MuonStauRecoTool", **kwargs ):
     result.merge(acc)
     tool = CompFactory.MuonCombined.MuonStauRecoTool(name, **kwargs)
     result.setPrivateTools(tool)
+
+    kwargs.setdefault("CalibrationDbTool", result.popToolsAndMerge( MdtCalibrationDbToolCfg(flags)))
+
     return result
diff --git a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuGirlTagTool.py b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuGirlTagTool.py
index 967db99b0a3a1c1362f75ae01f461e0a12f018ce..ff9f2002549c125ab20d6913064e21dbeccccb5a 100644
--- a/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuGirlTagTool.py
+++ b/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuGirlTagTool.py
@@ -97,12 +97,15 @@ def MuonStauInsideOutRecoTool( name="MuonStauInsideOutRecoTool", **kwargs ):
    return CfgMgr.MuonCombined__MuonInsideOutRecoTool(name,**kwargs )
 
 def MuonStauRecoTool( name="MuonStauRecoTool", **kwargs ):
+   from MuonCnvExample.MuonCalibConfig import MdtCalibrationDbTool
+
    kwargs.setdefault("ConsideredPDGs", [13,-13,1000015,-1000015])
    kwargs.setdefault("DoTruth", rec.doTruth() )
    kwargs.setdefault("DoSummary", muonCombinedRecFlags.printSummary() )
    kwargs.setdefault("MuonSegmentMaker", getPublicTool("DCMathStauSegmentMaker") )
    kwargs.setdefault("MuonInsideOutRecoTool", getPublicTool("MuonStauInsideOutRecoTool") )
    kwargs.setdefault("TrackAmbiguityProcessor", getPublicTool("MuonAmbiProcessor") )
+   kwargs.setdefault("MdtCalibrationDbTool", MdtCalibrationDbTool())
    return CfgMgr.MuonCombined__MuonStauRecoTool(name,**kwargs )
 
 
diff --git a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
index fb953b93aecd9944913a2f68433ddf62b4d7202f..9dbe634be4df94f90a14aa50db1542a002aed09a 100644
--- a/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
+++ b/Reconstruction/RecExample/RecExCommon/share/RecExCommon_topOptions.py
@@ -1283,20 +1283,26 @@ if ( rec.doAOD() or rec.doWriteAOD()) and not rec.readAOD() :
             from tauRec.tauRecFlags import tauFlags
             if ( rec.readESD() or tauFlags.Enabled() ) and rec.doTau:                
                 from CaloRec.CaloRecConf import CaloThinCellsByClusterAlg
-                alg = CaloThinCellsByClusterAlg('CaloThinCellsByClusterAlg_TauPi0Clusters',
-                                                StreamName = 'StreamAOD',
-                                                Clusters = 'TauPi0Clusters',
-                                                Cells = 'AllCalo')
-                topSequence += alg
+                tauCellAlg1 = CaloThinCellsByClusterAlg('CaloThinCellsByClusterAlg_TauPi0Clusters',
+                                                        StreamName = 'StreamAOD',
+                                                        Clusters = 'TauPi0Clusters',
+                                                        Cells = 'AllCalo')
+                topSequence += tauCellAlg1
+
+                tauCellAlg2 = CaloThinCellsByClusterAlg('CaloThinCellsByClusterAlg_TauShotClusters',
+                                                        StreamName = 'StreamAOD',
+                                                        Clusters = 'TauShotClusters',
+                                                        Cells = 'AllCalo')
+                topSequence += tauCellAlg2
 
                 from tauRec.tauRecConf import TauCellThinningAlg
-                alg = TauCellThinningAlg('TauCellThinningAlg',
-                                         StreamName = 'StreamAOD',
-                                         Cells = 'AllCalo',
-                                         CellLinks = 'CaloCalTopoClusters_links',
-                                         Taus = "TauJets",
-                                         UseSubtractedCluster = tauFlags.useSubtractedCluster())
-                topSequence += alg
+                tauCellAlg3 = TauCellThinningAlg('TauCellThinningAlg',
+                                                 StreamName = 'StreamAOD',
+                                                 Cells = 'AllCalo',
+                                                 CellLinks = 'CaloCalTopoClusters_links',
+                                                 Taus = "TauJets",
+                                                 UseSubtractedCluster = tauFlags.useSubtractedCluster())
+                topSequence += tauCellAlg3
                 
         except Exception:
             treatException("Could not make AOD cells" )
diff --git a/Reconstruction/eflowRec/src/PFMuonFlowElementAssoc.cxx b/Reconstruction/eflowRec/src/PFMuonFlowElementAssoc.cxx
index ea9ceb582c393d7eaebacfff3ecff71efc6852fa..324b2e9e8f05b2fbebaca1ec7065c4df2471b97b 100644
--- a/Reconstruction/eflowRec/src/PFMuonFlowElementAssoc.cxx
+++ b/Reconstruction/eflowRec/src/PFMuonFlowElementAssoc.cxx
@@ -33,7 +33,7 @@ PFMuonFlowElementAssoc::~PFMuonFlowElementAssoc() {}
 // ============================================================= 
 StatusCode PFMuonFlowElementAssoc::initialize() {   
 
-  ATH_MSG_INFO("Initializing " << name() << "...");   
+  ATH_MSG_VERBOSE("Initializing " << name() << "...");   
 
   // Initialise the decoration keys   
   ATH_CHECK(m_muonChargedFEWriteHandleKey.initialize());
@@ -54,7 +54,7 @@ StatusCode PFMuonFlowElementAssoc::initialize() {
   ATH_CHECK(m_neutralFEReadHandleKey.initialize());
 
 
-  ATH_MSG_INFO("Initialization completed successfully");   
+  ATH_MSG_VERBOSE("Initialization completed successfully");   
 
   return StatusCode::SUCCESS; 
 } 
@@ -69,7 +69,7 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
   // WriteDecorHandles for the charged/neutral Flow Elements and Muons
   // Links a Muon that has a track to a charged flow element if possible
   
-  ATH_MSG_INFO("Started execute step");
+  ATH_MSG_VERBOSE("Started execute step");
 
   // Get container for muons
   SG::WriteDecorHandle<xAOD::MuonContainer,std::vector<FlowElementLink_t> > muonChargedFEWriteDecorHandle (m_muonChargedFEWriteHandleKey,ctx);
@@ -111,6 +111,9 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
     //loop over muons in container
     for(const xAOD::Muon* muon: *muonChargedFEWriteDecorHandle){
       const xAOD::TrackParticle* muon_trk=muon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle);      
+      if(muon_trk==nullptr) // not all muons have a track. catch the nullptrs in this case and skip
+	continue;
+      
       size_t MuonTrkIndex=muon_trk->index();
       if(MuonTrkIndex==FETrackIndex){
 	// Add Muon element link to a vector
@@ -139,7 +142,7 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
       m_UseMuonTopoClusters (True= Case 1, False = Case 2)
   **/
   if(m_LinkNeutralFEClusters){
-    ATH_MSG_INFO("Experimental: Cluster Linkers between neutral FEs and Muons are used");
+    ATH_MSG_VERBOSE("Experimental: Cluster Linkers between neutral FEs and Muons are used");
     for (const xAOD::FlowElement* FE: *NeutralFEmuonWriteDecorHandle){
       int nMatchedFE=0;
       //get the index of the cluster corresponding to the Neutral FlowElements
@@ -153,6 +156,10 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
       // retrieve the link to cells
       const CaloClusterCellLink* CellLink = FE_cluster->getCellLinks();
       // build the iterator(s) for the looping over the elements inside the CellLink
+      if(CellLink==nullptr && !m_UseMuonTopoClusters){ // safety check if no celll link and we're doing the cell based matching only
+	ATH_MSG_WARNING("Flow Element cluster link is nullptr");
+	continue;
+      }
       CaloClusterCellLink::const_iterator FE_FirstCell=CellLink->begin();
       CaloClusterCellLink::const_iterator FE_LastCell=CellLink->end();
 					     
@@ -164,13 +171,21 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
       for (const xAOD::Muon* muon: *muonNeutralFEWriteDecorHandle ){
 	//Retrieve the ElementLink vector of clusters      
 	const ElementLink<xAOD::CaloClusterContainer> ClusterLink=muon->clusterLink();
-	
+	//check if the ElementLink is valid
+	if(!ClusterLink.isValid()){
+	  ATH_MSG_DEBUG("Muon has an invalid link to cluster");
+	  continue;
+	}
 	//access object from element link
 	const xAOD::CaloCluster* cluster = *ClusterLink; // de-ref the element link to retrieve the pointer to the original object
 	  if(m_UseMuonTopoClusters){
 	    // get the linker to the topo clusters
 	    std::vector<ElementLink<xAOD::CaloClusterContainer>> linksToTopoClusters=cluster->auxdata<std::vector<ElementLink<xAOD::CaloClusterContainer>> >("constituentClusterLinks");
 	    for (ElementLink<xAOD::CaloClusterContainer> TopoClusterLink: linksToTopoClusters){
+	      if(!TopoClusterLink.isValid()){
+		ATH_MSG_WARNING("Muon Calo cluster's TopoCluster link not found, skip");
+		continue;
+	      }
 	      const xAOD::CaloCluster* MuonTopoCluster=*TopoClusterLink; // de-ref the link to get the topo-cluster
 	      size_t MuonTopoCluster_index=MuonTopoCluster->index();
 	      if(MuonTopoCluster_index==FEclusterindex){
@@ -179,7 +194,7 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
 		FEMuonLinks.push_back(MuonLink_t(*muonReadHandle,muon->index()));
 		// index() is the unique index of the cFlowElement in the cFlowElementcontaine
 		muonNeutralFEVec.at(muon->index()).push_back(FlowElementLink_t(*NeutralFEReadHandle,FE->index()));
-		ATH_MSG_INFO("Got a match between NFE and Muon");
+		ATH_MSG_VERBOSE("Got a match between NFE and Muon");
 		nMatchedFE++; // count number of matches between FE and muons
 	      } // check block of index matching	      
 	    } // end of loop over element links
@@ -191,7 +206,12 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
 	    
 	    //retrieve cells associated to Muon cluster
 	    const CaloClusterCellLink* Muon_Clus_CellLink=cluster->getCellLinks();
+	    if(Muon_Clus_CellLink==nullptr){
+	      ATH_MSG_WARNING("This Muon calo cluster does not have any cells associated to it");
+	      continue;
+	    } // if nullptr, skip this muon cluster.
 	    //get the iterator on the links
+
 	    CaloClusterCellLink::const_iterator Muon_Clus_FirstCell=Muon_Clus_CellLink->begin();
 	    CaloClusterCellLink::const_iterator Muon_Clus_LastCell=Muon_Clus_CellLink->end();
 
@@ -225,8 +245,8 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
 	      frac_muon_cluster_energy_matched=Muon_sum_matched_cellEnergy/tot_muon_cluster_energy;
 	    }
 	    if(frac_FE_cluster_energy_matched>0){ 
-	      ATH_MSG_INFO("Fraction of FE cluster energy used in match: "<<frac_FE_cluster_energy_matched<<", ismatched? "<<isCellMatched<<"");
-	      ATH_MSG_INFO("Fraction of Muon cluster energy used in match: "<<frac_muon_cluster_energy_matched<<"");
+	      ATH_MSG_VERBOSE("Fraction of FE cluster energy used in match: "<<frac_FE_cluster_energy_matched<<", ismatched? "<<isCellMatched<<"");
+	      ATH_MSG_VERBOSE("Fraction of Muon cluster energy used in match: "<<frac_muon_cluster_energy_matched<<"");
 	    }
 
 	    if(isCellMatched){ // cell matched => Link the two objects.
@@ -268,6 +288,10 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
       // For debug of the muon clusters used, add also: dR between caloclusters and number of caloclusters associated to each muon.
       //retrieve element link again to cluster
       const ElementLink<xAOD::CaloClusterContainer> ClusterContLink=muon->clusterLink();
+      if(!ClusterContLink.isValid()){
+	ATH_MSG_DEBUG("Muon cluster link is invalid, skip");
+	continue;
+      }
       // use elem link to retrieve container
       const xAOD::CaloCluster* MuonCluster=*ClusterContLink;
       TLorentzVector muon_fourvec=muon->p4();
@@ -278,7 +302,7 @@ StatusCode PFMuonFlowElementAssoc::execute(const EventContext & ctx) const
       muon_ClusterInfo_deltaR_WriteDecorHandle(*muon)=deltaR_muon_cluster;
     }
   }// end of experimental block
-  ATH_MSG_INFO("Execute completed successfully");   
+  ATH_MSG_VERBOSE("Execute completed successfully");   
   
   return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/egamma/egammaValidation/share/egammaArtCaloCalPostInclude.py b/Reconstruction/egamma/egammaValidation/share/egammaArtCaloCalPostInclude.py
new file mode 100644
index 0000000000000000000000000000000000000000..a41d6d3374c55242f90f0183544cc9dabb255d62
--- /dev/null
+++ b/Reconstruction/egamma/egammaValidation/share/egammaArtCaloCalPostInclude.py
@@ -0,0 +1,21 @@
+#
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration.
+#
+
+# Handle additonal moments for e/gamma ART
+TypeForExisting = "xAOD::CaloClusterAuxContainer"
+KeyForExisting = "CaloCalTopoClustersAux"
+ExistingList = ""
+AdditionalEgamma = ".LATERAL.ENG_FRAC_EM"
+for CollectionsList in CILMergeAOD(TypeForExisting):
+    if KeyForExisting in CollectionsList:
+        ExistingList = CollectionsList
+        break
+
+if ExistingList:
+    AdditionalEgamma = ".LATERAL.ENG_FRAC_EM"
+    CILMergeAOD.removeItem(ExistingList)
+    CILMergeAOD.add(ExistingList+AdditionalEgamma)
+    StreamAOD.ItemList = CILMergeAOD()
+    print("Modified list")
+    print(StreamAOD.ItemList)
diff --git a/Reconstruction/egamma/egammaValidation/test/test_electron.sh b/Reconstruction/egamma/egammaValidation/test/test_electron.sh
index c3b46318783dbabf5703ff8e89449ef11b275706..3cbb7046e1ced4af548762a0cb754c10d9f41465 100755
--- a/Reconstruction/egamma/egammaValidation/test/test_electron.sh
+++ b/Reconstruction/egamma/egammaValidation/test/test_electron.sh
@@ -29,7 +29,7 @@ case $ArtProcess in
         echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC}"
         unset  ATHENA_NUM_PROC
 
-	AODMerge_tf.py --inputAODFile=art_core_*/Nightly_AOD_electron.pool.root --outputAOD_MRGFile=Nightly_AOD_electron.pool.root --preExec "from RecExConfig.RecAlgsFlags import recAlgs; recAlgs.doTrigger=False" --postExec "all:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST.LATERAL.ENG_FRAC_EM\");StreamAOD.ItemList=CILMergeAOD()"
+	AODMerge_tf.py --inputAODFile=art_core_*/Nightly_AOD_electron.pool.root --outputAOD_MRGFile=Nightly_AOD_electron.pool.root --preExec "from RecExConfig.RecAlgsFlags import recAlgs; recAlgs.doTrigger=False" --postInclude "all:egammaValidation/egammaArtCaloCalPostInclude.py"
 	
 	echo  "art-result: $? AODMerge"
 
@@ -67,7 +67,7 @@ case $ArtProcess in
 	echo "Unsetting ATHENA_NUM_PROC=${ATHENA_NUM_PROC}"
 	unset  ATHENA_NUM_PROC
 	
-	Reco_tf.py --inputRDOFile=$x --outputAODFile=Nightly_AOD_electron.pool.root --maxEvents=2000 --autoConfiguration="everything" --preExec="from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(False);AODFlags.egammaTrackSlimmer.set_Value_and_Lock(False);AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False); AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False); rec.doTrigger=False; rec.doTau=False ; rec.doMuon=False; rec.doBTagging=False ; from RecExConfig.RecAlgsFlags import recAlgs; recAlgs.doMuonSpShower=False ; recAlgs.doEFlow=False ; recAlgs.doEFlowJet=False ; recAlgs.doMissingET=False ; recAlgs.doMissingETSig=False ; recAlgs.doTrigger=False ; from JetRec.JetRecFlags import jetFlags ; jetFlags.Enabled=False ; " --postExec "ESDtoAOD:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.LATERAL.ENG_FRAC_EM.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST\");StreamAOD.ItemList=CILMergeAOD()" "POOLMergeAthenaMPAOD0:CILMergeAOD.removeItem(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList\");CILMergeAOD.add(\"xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.SECOND_R.LATERAL.ENG_FRAC_EM.SECOND_LAMBDA.CENTER_MAG.CENTER_LAMBDA.FIRST_ENG_DENS.ENG_FRAC_MAX.ISOLATION.ENG_BAD_CELLS.N_BAD_CELLS.BADLARQ_FRAC.ENG_POS.AVG_LAR_Q.AVG_TILE_Q.EM_PROBABILITY.BadChannelList.ENG_CALIB_TOT.ENG_CALIB_OUT_L.ENG_CALIB_EMB0.ENG_CALIB_EME0.ENG_CALIB_TILEG3.ENG_CALIB_DEAD_TOT.ENG_CALIB_DEAD_EMB0.ENG_CALIB_DEAD_TILE0.ENG_CALIB_DEAD_TILEG3.ENG_CALIB_DEAD_EME0.ENG_CALIB_DEAD_HEC0.ENG_CALIB_DEAD_FCAL.ENG_CALIB_DEAD_LEAKAGE.ENG_CALIB_DEAD_UNCLASS.ENG_CALIB_FRAC_EM.ENG_CALIB_FRAC_HAD.ENG_CALIB_FRAC_REST\");StreamAOD.ItemList=CILMergeAOD()"
+	Reco_tf.py --inputRDOFile=$x --outputAODFile=Nightly_AOD_electron.pool.root --maxEvents=2000 --autoConfiguration="everything" --preExec="from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(False);AODFlags.egammaTrackSlimmer.set_Value_and_Lock(False);AODFlags.ThinInDetForwardTrackParticles.set_Value_and_Lock(False); AODFlags.ThinNegativeEnergyNeutralPFOs.set_Value_and_Lock(False); rec.doTrigger=False; rec.doTau=False ; rec.doMuon=False; rec.doBTagging=False ; from RecExConfig.RecAlgsFlags import recAlgs; recAlgs.doMuonSpShower=False ; recAlgs.doEFlow=False ; recAlgs.doEFlowJet=False ; recAlgs.doMissingET=False ; recAlgs.doMissingETSig=False ; recAlgs.doTrigger=False ; from JetRec.JetRecFlags import jetFlags ; jetFlags.Enabled=False ; " --postInclude "ESDtoAOD:egammaValidation/egammaArtCaloCalPostInclude.py" "POOLMergeAthenaMPAOD0:egammaValidation/egammaArtCaloCalPostInclude.py"
 	
 	echo  "art-result: $? reconstruction"
 
diff --git a/Reconstruction/tauRec/share/TauAODList.py b/Reconstruction/tauRec/share/TauAODList.py
index 159bb37e0542861313dd587e51c997a6c8b7b5c8..19dea7073b01a1c1984c373f3719304f5fdd9527 100644
--- a/Reconstruction/tauRec/share/TauAODList.py
+++ b/Reconstruction/tauRec/share/TauAODList.py
@@ -36,10 +36,11 @@ TauAODList += [ "xAOD::CaloClusterAuxContainer#TauPi0ClustersAux." ]
 TauAODList += [ "CaloClusterCellLinkContainer#TauPi0Clusters_links" ]
 
 #------------------------------------------------------------------------------
-# Shot clusters
+# Shot clusters and cell links
 #------------------------------------------------------------------------------
 TauAODList += [ "xAOD::CaloClusterContainer#TauShotClusters"]
 TauAODList += [ "xAOD::CaloClusterAuxContainer#TauShotClustersAux."]
+TauAODList += [ "CaloClusterCellLinkContainer#TauShotClusters_links" ]
 
 #------------------------------------------------------------------------------
 # Final reconstructed 4-vectors of Pi0s
diff --git a/Reconstruction/tauRec/share/TauESDList.py b/Reconstruction/tauRec/share/TauESDList.py
index a8d36482330776eec404f487345765ddc6200a00..de81e842a59a1ea3485855ac7e1b2ac5cf2bc6b2 100644
--- a/Reconstruction/tauRec/share/TauESDList.py
+++ b/Reconstruction/tauRec/share/TauESDList.py
@@ -36,10 +36,11 @@ TauESDList += [ "xAOD::CaloClusterAuxContainer#TauPi0ClustersAux." ]
 TauESDList += [ "CaloClusterCellLinkContainer#TauPi0Clusters_links" ]
 
 #------------------------------------------------------------------------------
-# Shot clusters
+# Shot clusters and cell links
 #------------------------------------------------------------------------------
 TauESDList += [ "xAOD::CaloClusterContainer#TauShotClusters"]
 TauESDList += [ "xAOD::CaloClusterAuxContainer#TauShotClustersAux."]
+TauESDList += [ "CaloClusterCellLinkContainer#TauShotClusters_links" ]
 
 #------------------------------------------------------------------------------
 # Final reconstructed 4-vectors of Pi0s
diff --git a/Reconstruction/tauRec/src/TauProcessorAlg.cxx b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
index d5da68149fde0b2f89a89a5a236a178e380febc9..43136600269b3124febb7536b04428feb3fdee9e 100644
--- a/Reconstruction/tauRec/src/TauProcessorAlg.cxx
+++ b/Reconstruction/tauRec/src/TauProcessorAlg.cxx
@@ -3,15 +3,11 @@
 */
 
 #include "tauRec/TauProcessorAlg.h"
-#include "xAODJet/Jet.h"
-#include "xAODJet/JetContainer.h"
 #include "xAODTau/TauJetAuxContainer.h"
-#include "xAODTau/TauDefs.h"
-#include "xAODTau/TauTrackContainer.h"
 #include "xAODTau/TauTrackAuxContainer.h"
-#include "StoreGate/ReadCondHandleKey.h"
-#include "StoreGate/ReadHandle.h"
-#include "StoreGate/WriteHandle.h"
+#include "xAODCaloEvent/CaloClusterAuxContainer.h"
+#include "xAODPFlow/PFOAuxContainer.h"
+#include "CaloUtils/CaloClusterStoreHelper.h"
 #include "NavFourMom/INavigable4MomentumCollection.h"
 #include <boost/dynamic_bitset.hpp>
 
@@ -40,6 +36,7 @@ StatusCode TauProcessorAlg::initialize() {
   ATH_CHECK( m_tauOutputContainer.initialize() );
   ATH_CHECK( m_tauTrackOutputContainer.initialize() );
   ATH_CHECK( m_tauShotClusOutputContainer.initialize() );
+  ATH_CHECK( m_tauShotClusLinkContainer.initialize() );
   ATH_CHECK( m_tauShotPFOOutputContainer.initialize() );
   ATH_CHECK( m_tauPi0CellOutputContainer.initialize(SG::AllowEmpty) );
   
@@ -189,6 +186,10 @@ StatusCode TauProcessorAlg::execute(const EventContext& ctx) const {
     } 
   }// loop through seeds
 
+  // build cell link container for shot clusters
+  SG::WriteHandle<CaloClusterCellLinkContainer> tauShotClusLinkHandle( m_tauShotClusLinkContainer, ctx );
+  ATH_CHECK(CaloClusterStoreHelper::finalizeClusters (tauShotClusLinkHandle, tauShotClusContainer));
+
   // Check this is needed for the cell container?
   if(Pi0CellContainer) {
     // symlink as INavigable4MomentumCollection (as in CaloRec/CaloCellMaker)
diff --git a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
index 3a4c36ad859f3a75fd54e66cd19395320f6ce3cd..a4b0a4a31b43c5e464aacb286b32215fa2b1cb3d 100644
--- a/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
+++ b/Reconstruction/tauRec/tauRec/TauProcessorAlg.h
@@ -14,10 +14,11 @@
 #include "AthenaBaseComps/AthReentrantAlgorithm.h"
 
 #include "xAODTau/TauJetContainer.h"
+#include "xAODTau/TauTrackContainer.h"
+#include "xAODJet/JetContainer.h"
 #include "xAODPFlow/PFOContainer.h"
-#include "xAODPFlow/PFOAuxContainer.h"
 #include "xAODCaloEvent/CaloClusterContainer.h"
-#include "xAODCaloEvent/CaloClusterAuxContainer.h"
+#include "CaloEvent/CaloClusterCellLinkContainer.h"
 #include "InDetReadoutGeometry/SiDetectorElementCollection.h"
 #include "TRT_ReadoutGeometry/TRT_DetElementContainer.h"
 #include "CaloInterface/ICaloCellMakerTool.h"
@@ -60,6 +61,7 @@ class TauProcessorAlg: public AthReentrantAlgorithm
   SG::WriteHandleKey<xAOD::TauJetContainer> m_tauOutputContainer{this,"Key_tauOutputContainer","tmp_TauJets","output tau data key"};
   SG::WriteHandleKey<xAOD::TauTrackContainer> m_tauTrackOutputContainer{this,"Key_tauTrackOutputContainer","TauTracks","output tau tracks data key"};
   SG::WriteHandleKey<xAOD::CaloClusterContainer> m_tauShotClusOutputContainer{this,"Key_tauShotClusOutputContainer", "TauShotClusters", "tau shot clusters out key"};
+  SG::WriteHandleKey<CaloClusterCellLinkContainer> m_tauShotClusLinkContainer{this,"Key_tauShotClusLinkContainer", "TauShotClusters_links", "tau shot clusters out key"};
   SG::WriteHandleKey<xAOD::PFOContainer> m_tauShotPFOOutputContainer{this,"Key_tauShotPFOOutputContainer", "TauShotParticleFlowObjects", "tau pfo out key"};
   SG::WriteHandleKey<CaloCellContainer> m_tauPi0CellOutputContainer{this,"Key_tauPi0CellOutputContainer","TauCommonPi0Cells","output calo cell key"};
     
diff --git a/Simulation/SimuJobTransforms/python/ISF_Skeleton.py b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py
new file mode 100644
index 0000000000000000000000000000000000000000..88da8ebffd70f8ed423150603abcfd6ec5e637bf
--- /dev/null
+++ b/Simulation/SimuJobTransforms/python/ISF_Skeleton.py
@@ -0,0 +1,237 @@
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+import sys
+from PyJobTransforms.CommonRunArgsToFlags import commonRunArgsToFlags
+
+# based on https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/Control/AthenaServices/python/Configurables.py#0247
+def EvtIdModifierSvc_add_modifier(svc,
+        run_nbr=None, evt_nbr=None, time_stamp=None, lbk_nbr=None,
+        nevts=1):
+    if run_nbr is None:
+        modify_run_nbr = 0
+        run_nbr = 0
+    else:
+        modify_run_nbr = 1
+
+
+    if evt_nbr is None:
+        modify_evt_nbr = 0
+        evt_nbr = 0
+    else:
+        modify_evt_nbr = 1
+
+    if time_stamp is None:
+        modify_time_stamp = 0
+        time_stamp = 0
+    else:
+        modify_time_stamp = 1
+
+    if lbk_nbr is None:
+        modify_lbk_nbr = 0
+        lbk_nbr = 0
+    else:
+        modify_lbk_nbr = 1
+
+    mod_bit = int(0b0000
+                | (modify_run_nbr << 0)
+                | (modify_evt_nbr << 1)
+                | (modify_time_stamp << 2)
+                | (modify_lbk_nbr << 3))
+
+    svc.Modifiers += [run_nbr, evt_nbr, time_stamp, lbk_nbr,
+                    nevts, mod_bit]
+
+def defaultSimulationFlags(ConfigFlags):
+    """Fill default simulation flags"""
+    # TODO: how to autoconfigure those
+    ConfigFlags.Sim.CalibrationRun = "Off" #"DeadLAr" 
+    ConfigFlags.Sim.RecordStepInfo = False
+    ConfigFlags.Sim.CavernBG = "Signal"
+    ConfigFlags.Sim.BeamPipeSimMode = 'FastSim'
+    ConfigFlags.Sim.ReleaseGeoModel = False
+    ConfigFlags.Sim.ISFRun = True
+    ConfigFlags.GeoModel.Align.Dynamic = False
+
+    #Frozen showers OFF = 0
+    ConfigFlags.Sim.LArParameterization = 2
+
+
+    #set the detector flags: - all on currently
+    #inner detectors
+    ConfigFlags.Detector.SimulateBCM = True
+    ConfigFlags.Detector.GeometryBCM = True
+    ConfigFlags.Detector.SimulateDBM = True
+    ConfigFlags.Detector.GeometryDBM = True
+    ConfigFlags.Detector.SimulatePixel = True
+    ConfigFlags.Detector.GeometryPixel = True
+    ConfigFlags.Detector.SimulateSCT = True
+    ConfigFlags.Detector.GeometrySCT = True
+    ConfigFlags.Detector.SimulateTRT = True
+    ConfigFlags.Detector.GeometryTRT = True
+
+    #muon
+    ConfigFlags.Detector.SimulateMuon = True #True
+    ConfigFlags.Detector.GeometryMuon = True #True <these two break it (others can be true)
+    ConfigFlags.Detector.SimulateMDT = True #True
+    ConfigFlags.Detector.GeometryMDT = True #True
+    ConfigFlags.Detector.SimulateRPC = True #True
+    ConfigFlags.Detector.GeometryRPC = True #True
+    ConfigFlags.Detector.SimulateTGC = True #True
+    ConfigFlags.Detector.GeometryTGC = True #True
+    ConfigFlags.Detector.SimulateCSC = True #True
+    ConfigFlags.Detector.GeometryCSC = True #True
+
+    #LAr
+    ConfigFlags.Detector.SimulateLAr = True
+    ConfigFlags.Detector.GeometryLAr = True
+    ConfigFlags.Detector.SimulateTile = True
+    ConfigFlags.Detector.GeometryTile = True
+
+    ConfigFlags.Detector.SimulateHGTD = False
+    #ConfigFlags.Detector.GeometryHGTD = False #isn't a flag -- is it needed?
+
+
+    ConfigFlags.Detector.SimulateBpipe = True
+    ConfigFlags.Detector.GeometryBpipe = True
+
+
+    #forward region not migrated yet
+    ConfigFlags.Detector.SimulateLucid = False
+    ConfigFlags.Detector.SimulateZDC = False
+    ConfigFlags.Detector.SimulateALFA = False
+    ConfigFlags.Detector.SimulateAFP = False
+    ConfigFlags.Detector.SimulateFwdRegion = False
+    ConfigFlags.Detector.SimulateForward = False
+
+
+
+
+def fromRunArgs(runArgs):
+    from AthenaCommon.Configurable import Configurable
+    Configurable.configurableRun3Behavior = True
+
+    from AthenaCommon.Logging import logging
+    log = logging.getLogger('Overlay')
+    log.info('****************** STARTING Simulation *****************')
+
+    log.info('**** Transformation run arguments')
+    log.info(str(runArgs))
+
+    log.info('**** Setting-up configuration flags')
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    commonRunArgsToFlags(runArgs, ConfigFlags)
+
+    if hasattr(runArgs, 'inputEVNTFile'):
+        ConfigFlags.Input.Files = runArgs.inputEVNTFile
+    else:
+        raise RuntimeError('No input EVNT file defined')
+
+    if hasattr(runArgs, 'outputHITSFile'):
+        if runArgs.outputHITSFile == 'None':
+            ConfigFlags.Output.HITSFileName = ''
+        else:
+            ConfigFlags.Output.HITSFileName  = runArgs.outputHITSFile
+    else:
+        raise RuntimeError('No outputHITSFile defined')
+
+    if hasattr(runArgs, 'DataRunNumber'):
+        ConfigFlags.Input.RunNumber = [runArgs.DataRunNumber] # is it updating?
+
+    if hasattr(runArgs, 'outputHITSFile'):
+        ConfigFlags.Sim.PhysicsList = runArgs.physicsList
+
+    if hasattr(runArgs, 'conditionsTag'):
+        ConfigFlags.IOVDb.GlobalTag = runArgs.conditionsTag
+
+    if hasattr(runArgs, 'simulator'):
+        ConfigFlags.Sim.ISF.Simulator = runArgs.simulator
+
+    if hasattr(runArgs, 'truthStrategy'):
+        ConfigFlags.Sim.TruthStrategy = runArgs.truthStrategy
+
+    if hasattr(runArgs, 'maxEvents'):
+        evtMax = runArgs.maxEvents
+    else:
+        evtMax = -1
+    
+    # Setup common simulation flags
+    defaultSimulationFlags(ConfigFlags)
+
+    # Pre-exec
+    #simFlags error?
+    # if hasattr(runArgs, 'preExec') and runArgs.preExec != 'NONE' and runArgs.preExec:
+    #     for cmd in runArgs.preExec:
+    #         exec(cmd)
+
+    # Pre-include
+    # if hasattr(runArgs, 'preInclude') and runArgs.preInclude:
+    #     raise ValueError('preInclude not supported')
+    
+    # Lock flags
+    ConfigFlags.lock()
+
+
+    #run ISF
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    cfg = MainServicesCfg(ConfigFlags)
+
+    from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
+    from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
+    cfg.merge(PoolReadCfg(ConfigFlags))
+    cfg.merge(PoolWriteCfg(ConfigFlags))
+    # todo its own cfg ...
+    #todo check evtMax=-1 works with this method
+    myRunNumber = 284500
+    myFirstLB = 1
+    myInitialTimeStamp = 1446539185
+    from AthenaConfiguration.ComponentFactory import CompFactory
+    evtIdModifierSvc = CompFactory.EvtIdModifierSvc(EvtStoreName="StoreGateSvc")
+    iovDbMetaDataTool = CompFactory.IOVDbMetaDataTool()
+    iovDbMetaDataTool.MinMaxRunNumbers = [myRunNumber, 2147483647]
+    cfg.addPublicTool(iovDbMetaDataTool)
+    EvtIdModifierSvc_add_modifier(evtIdModifierSvc, run_nbr=myRunNumber, lbk_nbr=myFirstLB, time_stamp=myInitialTimeStamp, nevts=evtMax)
+    eventSelector = cfg.getService("EventSelector")
+    eventSelector.OverrideRunNumber = True
+    eventSelector.RunNumber = myRunNumber
+    eventSelector.FirstLB = myFirstLB
+    eventSelector.InitialTimeStamp = myInitialTimeStamp # Necessary to avoid a crash
+    if hasattr(eventSelector, "OverrideRunNumberFromInput"):
+        eventSelector.OverrideRunNumberFromInput = True
+    cfg.addService(evtIdModifierSvc, create=True)
+    # ... up to here?
+
+    # add BeamEffectsAlg
+    from BeamEffects.BeamEffectsAlgConfig import BeamEffectsAlgCfg
+    cfg.merge(BeamEffectsAlgCfg(ConfigFlags))
+
+    # add the ISF_MainConfig
+    from ISF_Config.ISF_MainConfigNew import Kernel_FullG4MTCfg
+    cfg.merge(Kernel_FullG4MTCfg(ConfigFlags))
+
+    from TileGeoG4SD.TileGeoG4SDToolConfig import TileGeoG4SDCalcCfg
+    cfg.merge(TileGeoG4SDCalcCfg(ConfigFlags))
+
+    # Post-include
+    # if hasattr(runArgs, 'postInclude') and runArgs.postInclude:
+    #     # from OverlayConfiguration.OverlayHelpers import accFromFragment
+    #     for fragment in runArgs.postInclude:
+    #         cfg.merge(accFromFragment(fragment, ConfigFlags))
+
+    # Post-exec
+    # if hasattr(runArgs, 'postExec') and runArgs.postExec != 'NONE' and runArgs.postExec:
+    #     for cmd in runArgs.postExec:
+    #         exec(cmd)
+
+    import time
+    tic = time.time()
+    # Run the final accumulator
+    sc = cfg.run()
+    log.info("Run ISF_MainConfigNew_Test in " + str(time.time()-tic) + " seconds")
+    
+    sys.exit(not sc.isSuccess())
+    
+    f = open("test.pkl","wb")
+    cfg.store(f)
+    f.close()
+
+    sys.exit(0)
\ No newline at end of file
diff --git a/Simulation/SimuJobTransforms/python/SimTransformUtils.py b/Simulation/SimuJobTransforms/python/SimTransformUtils.py
index 2cd2d3c5169c5fc81938c0f25324153392192bb5..b37ae4760f28f358a8a6d2177326c8878bb89000 100644
--- a/Simulation/SimuJobTransforms/python/SimTransformUtils.py
+++ b/Simulation/SimuJobTransforms/python/SimTransformUtils.py
@@ -128,6 +128,7 @@ def addSimulationSubstep(executorSet, overlayTransform = False):
                            outData=['HITS','NULL'] )
     executorSet.add(TRExe)
     SimExe = athenaExecutor(name = 'EVNTtoHITS', skeletonFile = 'SimuJobTransforms/skeleton.EVGENtoHIT_ISF.py',
+                            skeletonCA = 'SimuJobTransforms.ISF_Skeleton',
                                    substep = 'sim', tryDropAndReload = False, perfMonFile = 'ntuple.pmon.gz',
                                    inData=['NULL','EVNT'],
                                    outData=['EVNT_TR','HITS','NULL'] )
diff --git a/Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h b/Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h
index 24ed209335f3e748e1c5a7b0956bd622a12ead3d..64964c1f29ee5403045af92453477133a3f25851 100755
--- a/Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h
+++ b/Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h
@@ -124,22 +124,32 @@ enum SummaryType {
         eProbabilityToT_res                 = 49, //!< Electron probability from Time-Over-Threshold (ToT) information [float].   
         eProbabilityBrem_res                = 50, //!< Electron probability from Brem fitting (DNA) [float]. 
         pixeldEdx_res                       = 51, //!< the dE/dx estimate, calculated using the pixel clusters [?]
+        eProbabilityNN_res                  = 73, //!< Electron probability from NN [float].
+        TRTTrackOccupancy_res               = 74, //!< TRT track occupancy.
+        TRTdEdx_res                         = 75, //!< dEdx from TRT ToT measurement.
 
  // -- numbers...
-        numberOfTrackSummaryTypes = 73
+        numberOfTrackSummaryTypes = 76
     };
 
+// summary types that are stored as float values
+static const std::vector<unsigned int> floatSummaryTypes = {eProbabilityComb_res, eProbabilityHT_res, eProbabilityToT_res, eProbabilityBrem_res,
+                                                      pixeldEdx_res, eProbabilityNN_res, TRTTrackOccupancy_res, TRTdEdx_res};
+
 // Troels.Petersen@cern.ch:
     enum eProbabilityType {
         eProbabilityComb            = 0,       //!< Electron probability from combining the below probabilities.
         eProbabilityHT              = 1,       //!< Electron probability from High Threshold (HT) information.
         eProbabilityToT             = 2,       //!< Electron probability from Time-Over-Threshold (ToT) information.
         eProbabilityBrem            = 3,       //!< Electron probability from Brem fitting (DNA).
-        numberOfeProbabilityTypes   = 4        
-    }; 
-  // the eProbability vector is abused to store : 
-  // [4] TRT local occupancy
-  // [5] TRT dE/dx
+        eProbabilityNN              = 4,       //!< Electron probability from NN.
+        TRTTrackOccupancy           = 5,       //!< TRT track occupancy.
+        TRTdEdx                     = 6,       //!< dEdx from TRT ToT measurement.
+        eProbabilityNumberOfTRTHitsUsedFordEdx = 7, //!< Number of TRT hits used for dEdx measurement.
+        numberOfeProbabilityTypes   = 8        
+    };
+
+static const std::vector<float> eProbabilityDefault(numberOfeProbabilityTypes, 0.5);
 
 /** enumerates the various detector types currently accessible from the isHit() method.
 \todo work out how to add muons to this*/
diff --git a/Tracking/TrkEvent/TrkTrackSummary/src/TrackSummary.cxx b/Tracking/TrkEvent/TrkTrackSummary/src/TrackSummary.cxx
index 9911f88e217cf261039e6e002a2f79a782eaba23..42de737e96ff33bba78b5546113843a5aa5f1a3c 100755
--- a/Tracking/TrkEvent/TrkTrackSummary/src/TrackSummary.cxx
+++ b/Tracking/TrkEvent/TrkTrackSummary/src/TrackSummary.cxx
@@ -19,7 +19,7 @@ const int    Trk::TrackSummary::SummaryTypeNotSet=-1;
 Trk::TrackSummary::TrackSummary()
     :
     m_information(numberOfTrackSummaryTypes, SummaryTypeNotSet),
-    m_eProbability(numberOfeProbabilityTypes, 0.5),
+    m_eProbability(Trk::eProbabilityDefault),
     m_dedx(-1),
     m_nhitsdedx(-1),
     m_nhitsoverflowdedx(-1),
@@ -105,8 +105,9 @@ Trk::TrackSummary& Trk::TrackSummary::operator+=(const TrackSummary& ts)
 }
            m_information[i]+= ts.m_information[i];
         }
-        for (int i=0;i<numberOfeProbabilityTypes;++i) { m_eProbability[i] *= ts.m_eProbability[i];
-}
+        if (ts.m_eProbability != Trk::eProbabilityDefault) {
+          m_eProbability = ts.m_eProbability;
+        }
         if (m_dedx<0 && ts.m_dedx>=0) {
           m_dedx=ts.m_dedx;
           m_nhitsdedx=ts.m_nhitsdedx;
@@ -198,6 +199,10 @@ T_out& dumpTrackSummary( T_out& out, const TrackSummary& trackSum )
   out << " * Electron probability from HT:   " << trackSum.getPID(eProbabilityHT)   << "\n";
   out << " * Electron probability from ToT:  " << trackSum.getPID(eProbabilityToT)  << "\n";
   out << " * Electron probability from Brem: " << trackSum.getPID(eProbabilityBrem) << "\n";
+  out << " * Electron probability from NN: "   << trackSum.getPID(eProbabilityNN)   << "\n";
+  out << " * TRT track occupancy: "            << trackSum.getPID(TRTTrackOccupancy)   << "\n";
+  out << " * dE/dx from TRT: "                 << trackSum.getPID(TRTdEdx)   << "\n";
+  out << " * number of TRT hits used for dE/dx: " << trackSum.getPID(eProbabilityNumberOfTRTHitsUsedFordEdx)   << "\n";
   out << " --------------------------------- " << "\n";
 
   out << " dE/dx from pixels               : " << trackSum.getPixeldEdx() << " MeV g^-1 cm^2" << "\n";
diff --git a/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx b/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx
index c46db14d84887bf1c2f68aeb8b7d367667a3a8ee..8c844009a059d5d86a94fc9525e01b262c1cc1a2 100644
--- a/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx
+++ b/Tracking/TrkTools/TrkParticleCreator/src/TrackParticleCreatorTool.cxx
@@ -86,9 +86,9 @@ createEProbabilityMap(std::map<std::string, std::pair<Trk::eProbabilityType, boo
   // added as decorations
   eprob_map.insert(std::make_pair("eProbabilityToT", std::make_pair(Trk::eProbabilityToT, true)));
   eprob_map.insert(std::make_pair("eProbabilityBrem", std::make_pair(Trk::eProbabilityBrem, true)));
-  eprob_map.insert(std::make_pair("TRTTrackOccupancy", std::make_pair(Trk::numberOfeProbabilityTypes, true)));
-  eprob_map.insert(std::make_pair(
-    "TRTdEdx", std::make_pair(static_cast<Trk::eProbabilityType>(Trk::numberOfeProbabilityTypes + 1), true)));
+  eprob_map.insert(std::make_pair("eProbabilityNN", std::make_pair(Trk::eProbabilityNN, true)));
+  eprob_map.insert(std::make_pair("TRTdEdx", std::make_pair(Trk::TRTdEdx, true)));
+  eprob_map.insert(std::make_pair("TRTTrackOccupancy", std::make_pair(Trk::TRTTrackOccupancy, true)));
 }
 
 void
@@ -106,7 +106,7 @@ TrackParticleCreatorTool::TrackParticleCreatorTool(const std::string& t, const s
   , m_detID(nullptr)
   , m_pixelID(nullptr)
   , m_IBLParameterSvc("IBLParameterSvc", n)
-  , m_copyExtraSummaryName{ "eProbabilityComb", "eProbabilityHT", "TRTTrackOccupancy", "TRTdEdx", "TRTdEdxUsedHits" }
+  , m_copyExtraSummaryName{ "eProbabilityComb", "eProbabilityHT", "eProbabilityNN", "TRTTrackOccupancy", "TRTdEdx", "TRTdEdxUsedHits" }
   , m_copyEProbabilities{}
   , m_decorateEProbabilities{}
   , m_decorateSummaryTypes{}
@@ -1054,9 +1054,6 @@ TrackParticleCreatorTool::TrackParticleCreatorTool(const std::string& t, const s
   }
 
   void TrackParticleCreatorTool::setTrackSummary( xAOD::TrackParticle& tp, const TrackSummary& summary ) const {
-    // int types
-    unsigned int offset = 47;// where the floats start in xAOD::SummaryType
-
     // ensure that xAOD TrackSummary and TrackSummary enums are in sync.
     constexpr unsigned int xAodReferenceEnum=static_cast<unsigned int>(xAOD::pixeldEdx);
     constexpr unsigned int TrkReferenceEnum=static_cast<unsigned int>(Trk::pixeldEdx_res);
@@ -1067,9 +1064,8 @@ TrackParticleCreatorTool::TrackParticleCreatorTool(const std::string& t, const s
       if ( i >= Trk::numberOfMdtHits && i <= Trk::numberOfRpcEtaHits ) continue;
       if ( i == Trk::numberOfCscUnspoiltEtaHits ) continue;
       if ( i >= Trk::numberOfCscEtaHoles && i <= Trk::numberOfTgcPhiHoles ) continue;
-      if ( i >= offset && i < offset+Trk::numberOfeProbabilityTypes+1){
-        continue;
-      }
+      // skip values which are floats
+      if ( std::find(floatSummaryTypes.begin(), floatSummaryTypes.end(), i) != floatSummaryTypes.end() ) continue;
       if ( i >= Trk::numberOfStgcEtaHits && i <= Trk::numberOfMmHoles) continue;
       // coverity[mixed_enums]
       if (i == Trk::numberOfTRTHitsUsedFordEdx ) continue;
diff --git a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITRT_ElectronPidTool.h b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITRT_ElectronPidTool.h
index 12091989f1e6b45ea2763c516bbc70105d773a9c..7050bd36525aa6e525cfbe35687ff28352a88f88 100644
--- a/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITRT_ElectronPidTool.h
+++ b/Tracking/TrkTools/TrkToolInterfaces/TrkToolInterfaces/ITRT_ElectronPidTool.h
@@ -10,6 +10,7 @@
 
 #include "GaudiKernel/IAlgTool.h"
 #include "TrkEventPrimitives/ParticleHypothesis.h"
+#include "TrkTrackSummary/TrackSummary.h"
 #include <vector>
 
 namespace Trk {
@@ -44,8 +45,6 @@ namespace Trk {
     virtual double probHT( const double p, const Trk::ParticleHypothesis hypothesis, const int HitPart, const int Layer, const int Strawlayer) const = 0;
     virtual double probHTRun2( float pTrk, Trk::ParticleHypothesis hypothesis, int TrtPart, int GasType, int StrawLayer, float ZR, float rTrkWire, float Occupancy ) const = 0;
 
-
-
   };
 
   inline const InterfaceID& Trk::ITRT_ElectronPidTool::interfaceID()
diff --git a/Tracking/TrkTools/TrkTrackSummaryTool/TrkTrackSummaryTool/TrackSummaryTool.h b/Tracking/TrkTools/TrkTrackSummaryTool/TrkTrackSummaryTool/TrackSummaryTool.h
index 2c3ca7d0363977c10f1490071dfd1b19456a9c89..b83d211e1c9a5ce0f97c270917e8f70045ce27fe 100755
--- a/Tracking/TrkTools/TrkTrackSummaryTool/TrkTrackSummaryTool/TrackSummaryTool.h
+++ b/Tracking/TrkTools/TrkTrackSummaryTool/TrkTrackSummaryTool/TrackSummaryTool.h
@@ -12,7 +12,6 @@
 #include "TrkTrack/Track.h"
 #include "TrkTrackSummary/TrackSummary.h"
 
-#include "TRT_ElectronPidTools/ITRT_ToT_dEdx.h"
 #include "TrkToolInterfaces/IExtendedTrackSummaryHelperTool.h"
 #include "TrkToolInterfaces/IPixelToTPIDTool.h"
 #include "TrkToolInterfaces/ITRT_ElectronPidTool.h"
@@ -22,7 +21,6 @@
 
 class AtlasDetectorID;
 class Identifier;
-class ITRT_ToT_dEdx;
 
 namespace Trk {
 class ITRT_ElectronPidTool;
@@ -222,8 +220,6 @@ private:
                                                        "TRT_ElectronPidTool",
                                                        "",
                                                        "" };
-  /** tool to calculate the TRT_ToT_dEdx.*/
-  ToolHandle<ITRT_ToT_dEdx> m_trt_dEdxTool{ this, "TRT_ToT_dEdxTool", "", "" };
   /**tool to calculate dE/dx using pixel clusters*/
   ToolHandle<IPixelToTPIDTool> m_dedxtool{ this, "PixelToTPIDTool", "", "" };
   /**tool to decipher muon RoTs*/
@@ -253,13 +249,6 @@ private:
   /** switch to deactivate Pixel info init */
   Gaudi::Property<bool> m_pixelExists{ this, "PixelExists", true, "" };
 
-  /** Only compute TRT dE/dx if there are at least this number of TRT hits or
-   * outliers.*/
-  Gaudi::Property<int> m_minTRThitsForTRTdEdx{ this,
-                                               "minTRThitsForTRTdEdx",
-                                               1,
-                                               "" };
-
   Gaudi::Property<bool> m_alwaysRecomputeHoles {
     this, "AlwaysRecomputeHoles", false, ""
   };
diff --git a/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx b/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx
index 52ccbbc735384acada6d42944c93166f8a4c6a8d..a6f4e02619da0d50d72ac1dcbaaf19884d500acd 100755
--- a/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx
+++ b/Tracking/TrkTools/TrkTrackSummaryTool/src/TrackSummaryTool.cxx
@@ -4,6 +4,7 @@
 
 #include "TrkTrackSummaryTool/TrackSummaryTool.h"
 #include "TrkToolInterfaces/ITrackHoleSearchTool.h"
+#include "TrkToolInterfaces/ITRT_ElectronPidTool.h"
 #include "TrkEventPrimitives/FitQualityOnSurface.h"
 #include "TrkEventPrimitives/ParticleHypothesis.h"
 
@@ -71,11 +72,6 @@ StatusCode
        if ( !m_eProbabilityTool.empty()) msg(MSG::INFO) << "Retrieved tool " << m_eProbabilityTool << endmsg;
 
 
-    if (!m_trt_dEdxTool.empty()) {
-      ATH_CHECK( m_trt_dEdxTool.retrieve() );
-    }
-
-
     if ( !m_dedxtool.empty() && m_dedxtool.retrieve().isFailure() )
     {
         ATH_MSG_ERROR ("Failed to retrieve pixel dEdx tool " << m_dedxtool);
@@ -196,8 +192,7 @@ information.resize(std::min(information.size(),
                             static_cast<size_t>(numberOfTrackSummaryTypes)));
 
 // Troels.Petersen@cern.ch:
-unsigned int numberOfeProbabilityTypes = Trk::numberOfeProbabilityTypes + 1;
-std::vector<float> eProbability(numberOfeProbabilityTypes, 0.5);
+std::vector<float> eProbability = Trk::eProbabilityDefault;
 
   float dedx = -1;
   int nhitsuseddedx = -1;
@@ -238,9 +233,9 @@ std::vector<float> eProbability(numberOfeProbabilityTypes, 0.5);
     information[numberOfTRTTubeHits] = 0;
     information[numberOfTRTSharedHits] = 0;
 
-    // Troels.Petersen@cern.ch:
     if (!m_eProbabilityTool.empty()) {
       eProbability = m_eProbabilityTool->electronProbability(track);
+      information[Trk::numberOfTRTHitsUsedFordEdx] = static_cast<int>(eProbability[Trk::eProbabilityNumberOfTRTHitsUsedFordEdx]);
     }
   }
 
@@ -318,22 +313,6 @@ std::vector<float> eProbability(numberOfeProbabilityTypes, 0.5);
     searchHolesStepWise(track,information, doHolesInDet, doHolesMuon);
   }
 
-  if (!m_trt_dEdxTool.empty()) {
-    if (information[Trk::numberOfTRTHits]+information[Trk::numberOfTRTOutliers]>=m_minTRThitsForTRTdEdx) {
-      int nhits = static_cast<int>( m_trt_dEdxTool->usedHits(&track) );
-      double fvalue = (nhits>0 ? m_trt_dEdxTool->dEdx(&track) : 0.0);
-      eProbability.push_back(fvalue);
-      information[ numberOfTRTHitsUsedFordEdx] = static_cast<uint8_t>(std::max(nhits,0));
-    }
-    else {
-      information[ numberOfTRTHitsUsedFordEdx]=0;
-      eProbability.push_back(0.0);
-    }
-  }
-  else {
-    eProbability.push_back(0.0);
-  }
-
   ts.m_eProbability = eProbability;
   ts.m_idHitPattern = hitPattern.to_ulong();
   ts.m_dedx = dedx;
@@ -360,28 +339,14 @@ void Trk::TrackSummaryTool::updateSharedHitCount(const Track& track, const Trk::
 
 void Trk::TrackSummaryTool::updateAdditionalInfo(const Track& track, TrackSummary &summary, bool initialise_to_zero) const
 {
-  unsigned int numberOfeProbabilityTypes = Trk::numberOfeProbabilityTypes+1;
-  std::vector<float> eProbability(numberOfeProbabilityTypes,0.5);
-  if ( !m_eProbabilityTool.empty() ) eProbability = m_eProbabilityTool->electronProbability(track);
-
-  if (!m_trt_dEdxTool.empty()) {
-    if (summary.get(Trk::numberOfTRTHits)+summary.get(Trk::numberOfTRTOutliers)>=m_minTRThitsForTRTdEdx) {
-      int nhits = static_cast<int>( m_trt_dEdxTool->usedHits(&track) );
-      double fvalue = (nhits>0 ? m_trt_dEdxTool->dEdx(&track) : 0.0);
-      eProbability.push_back(fvalue);
-      if (!summary.update(Trk::numberOfTRTHitsUsedFordEdx, static_cast<uint8_t>(std::max(nhits,0)) )) {
-        ATH_MSG_WARNING( "Attempt to update numberOfTRTHitsUsedFordEdx but this summary information is "
-                         "already set. numberOfTRTHitsUsedFordEdx is:" << summary.get(numberOfTRTHitsUsedFordEdx)
-                         << " =?= should:" << nhits );
-      }
-    }
-    else {
-      eProbability.push_back(0.0);
-      if (!summary.update(Trk::numberOfTRTHitsUsedFordEdx, 0) ) {
-        ATH_MSG_WARNING( "Attempt to update numberOfTRTHitsUsedFordEdx but this summary information is "
-                         "already set. numberOfTRTHitsUsedFordEdx is:" << summary.get(numberOfTRTHitsUsedFordEdx)
-                         << " =?= should:" << 0 );
-      }
+  std::vector<float> eProbability = Trk::eProbabilityDefault;
+  if (!m_eProbabilityTool.empty()) {
+    eProbability = m_eProbabilityTool->electronProbability(track);
+    int nHits = eProbability[Trk::eProbabilityNumberOfTRTHitsUsedFordEdx];
+    if (!summary.update(Trk::numberOfTRTHitsUsedFordEdx, static_cast<uint8_t>(std::max(nHits,0)) )) {
+      ATH_MSG_WARNING("Attempt to update numberOfTRTHitsUsedFordEdx but this summary information is "
+                      "already set. numberOfTRTHitsUsedFordEdx is:" << summary.get(numberOfTRTHitsUsedFordEdx)
+                      << " =?= should:" << nHits );
     }
   }
 
@@ -393,7 +358,7 @@ void Trk::TrackSummaryTool::updateAdditionalInfo(const Track& track, TrackSummar
     dedx = m_dedxtool->dEdx(track, nhitsuseddedx, noverflowhitsdedx);
   }
 
-  m_idTool->updateAdditionalInfo(summary, eProbability,dedx, nhitsuseddedx,noverflowhitsdedx);
+  m_idTool->updateAdditionalInfo(summary, eProbability, dedx, nhitsuseddedx, noverflowhitsdedx);
 
   m_idTool->updateExpectedHitInfo(track, summary);
 
diff --git a/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md b/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md
index e384a8889fbc30ccd9bf209a811b7acbeb3730ed..004ce9ab4fcd07154632b925002acaea7bd1be89 100644
--- a/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md
+++ b/Trigger/TrigAlgorithms/TrigEFMissingET/doc/met_configuration.md
@@ -166,6 +166,10 @@ There are three types of sequence that can be configured by this code
   The menu sequence describes a full 'input maker' + reco + hypo grouping, i.e.
   a segment that calculates a MET value and then creates a decision using it
 
+All of these are divided into 'steps'. As hypos only appear at the end of each
+step these are the only points at which early rejection is possible. This
+motivates running CPU intensive reconstruction in later steps.
+
 The 'difficult' part of this is the first part - the reco sequence. The MET code
 uses a helper class
 `TriggerMenuMT.HLTMenuConfig.MET.METRecoSequences.AlgConfig`.
@@ -174,6 +178,10 @@ config class, which then knows how to interpret the rest of the `recoDict` to
 correctly configure the sequence. (In fact this class is used to configure all
 stages).
 
+These then further use helper classes based on
+`TriggerMenuMT.HLTMenuConfig.MET.AlgInputConfig.AlgInputConfig`
+to provide the input sequences (e.g. clusters, tracks).
+
 In our example, `xe110_tcpufit_lcw` gets converted into the `recoDict`
 ``` python
     {
@@ -184,7 +192,8 @@ In our example, `xe110_tcpufit_lcw` gets converted into the `recoDict`
 ```
 This is passed to the `TCPufitConfig` class, which sets up the input sequence
 creating the clusters and the MET algorithm calculating the MET according to the
-`tcpufit` algorithm.
+`tcpufit` algorithm. The cluster input sequence is set up by the
+`ClusterInputConfig` class.
 
 The same happens to the `xe70_cell` piece, except it gets passed to the
 `CellConfig` class.
@@ -280,13 +289,21 @@ defined) so it's guaranteed that your class will be known to python when
 A new `AlgConfig` class must define two things
 - a `@classmethod` called `algType` that returns the name of the EFrecoAlg that
   it defines
-- an `__init__` method that receives the `recoDict` and defines `self.inputs`
-  and `self.fexAlg`. The base class `__init__` method must receive the **whole**
-  `recoDict` or it will not construct the correct names.
+- an `__init__` method that receives the `recoDict` and calculates the necessary
+  inputs. The base class `__init__` method must receive the **whole** `recoDict`
+  or it will not construct the correct names.
+- a make_fex function
 
 Look at the other classes in that module for inspiration and consult the
 `AlgConfig` docstring as well.
 
+#### Creating a new input config
+
+You may require a new input config as well (i.e. something which calculates
+an input object for one of the MET calculations). In order to do this, read the
+documentation in `TriggerMenuMT.HLTMenuConfig.MET.AlgInputConfig` and check the
+existing versions in `TriggerMenuMT.HLTMenuConfig.MET.METRecoSequences`.
+
 #### Creating a new C++ class
 
 Where possible new C++ Fex classes should following the naming convention
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py
index b7cd89d341ae661afe37ae9e0f1b4160c305af8f..04fcae2901a4041a20088490365cd3972e2256ae 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig.py
@@ -41,7 +41,11 @@ if not MuonGeometryFlags.hasCSC():
 #Need different PRD collection names to run offline and Run 2 trigger in same job
 if not TriggerFlags.doMT():
     from MuonMDT_CnvTools.MuonMDT_CnvToolsConf import Muon__MdtRdoToPrepDataTool
-    MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataTool(name = "TrigMdtRdoToPrepDataTool",OutputCollection="TrigMDT_DriftCircles")
+    from MuonCnvExample import MuonCalibConfig
+
+    MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataTool(name = "TrigMdtRdoToPrepDataTool",
+                                                         OutputCollection="TrigMDT_DriftCircles",
+                                                         CalibrationTool=MuonCalibConfig.MdtCalibrationTool())
     ToolSvc += MdtRdoToMdtPrepDataTool
     theDataPreparator.MDTDataPreparator.MdtPrepDataProvider =  MdtRdoToMdtPrepDataTool
     theDataPreparator.MDTDataPreparator.MDTPrepDataContainer = MdtRdoToMdtPrepDataTool.OutputCollection
@@ -143,7 +147,8 @@ class TrigL2MuonSAMTConfig(MuonSA.MuFastSteering):
         super( TrigL2MuonSAMTConfig, self ).__init__( name )
 
         self.DataPreparator    = theDataPreparator
-        self.PatternFinder     = MuonSA.TrigL2MuonSA__MuFastPatternFinder()
+        from MuonCnvExample.MuonCalibConfig import MdtCalibrationTool
+        self.PatternFinder     = MuonSA.TrigL2MuonSA__MuFastPatternFinder(CalibrationTool=MdtCalibrationTool())
         self.StationFitter     = theStationFitter
         self.TrackFitter       = MuonSA.TrigL2MuonSA__MuFastTrackFitter()
         self.TrackExtrapolator = MuonSA.TrigL2MuonSA__MuFastTrackExtrapolator()
@@ -231,7 +236,8 @@ class TrigL2MuonSAConfig(MuonSA.MuFastSteering):
         super( TrigL2MuonSAConfig, self ).__init__( name )
 
         self.DataPreparator    = theDataPreparator
-        self.PatternFinder     = MuonSA.TrigL2MuonSA__MuFastPatternFinder()
+        from MuonCnvExample.MuonCalibConfig import MdtCalibrationTool
+        self.PatternFinder     = MuonSA.TrigL2MuonSA__MuFastPatternFinder(CalibrationTool=MdtCalibrationTool())
         self.StationFitter     = theStationFitter
         self.TrackFitter       = MuonSA.TrigL2MuonSA__MuFastTrackFitter()
         self.TrackExtrapolator = MuonSA.TrigL2MuonSA__MuFastTrackExtrapolator()
diff --git a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py
index 624b7307acfc836b9b9e97b68c141335485ff059..8a610a1ecef45d6290db6d836252bb018731af47 100644
--- a/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py
+++ b/Trigger/TrigAlgorithms/TrigL2MuonSA/python/TrigL2MuonSAConfig_newJO.py
@@ -115,6 +115,7 @@ def MmDataPreparatorCfg( flags, roisKey ):
 
 # Based on TrigL2MuonSAMTConfig at TrigL2MuonSA/TrigL2MuonSAConfig.py
 def muFastSteeringCfg( flags, roisKey, setup="" ):
+    from MuonConfig.MuonCalibrationConfig import MdtCalibrationToolCfg
 
     acc = ComponentAccumulator()
 
@@ -171,9 +172,8 @@ def muFastSteeringCfg( flags, roisKey, setup="" ):
         PtFromAlphaBeta.AvoidMisalignedCSCs = True
 
     MuFastStationFitter = TrigL2MuonSA__MuFastStationFitter( PtFromAlphaBeta = PtFromAlphaBeta )
-
     TrigL2MuonSA__MuFastPatternFinder,TrigL2MuonSA__MuFastTrackFitter,TrigL2MuonSA__MuFastTrackExtrapolator,TrigL2MuonSA__MuCalStreamerTool,TrigL2MuonSA__CscSegmentMaker=CompFactory.getComps("TrigL2MuonSA::MuFastPatternFinder","TrigL2MuonSA::MuFastTrackFitter","TrigL2MuonSA::MuFastTrackExtrapolator","TrigL2MuonSA::MuCalStreamerTool","TrigL2MuonSA::CscSegmentMaker")
-    MuFastPatternFinder     = TrigL2MuonSA__MuFastPatternFinder()
+    MuFastPatternFinder     = TrigL2MuonSA__MuFastPatternFinder(CalibrationTool=acc.popToolsAndMerge( MdtCalibrationToolCfg(flags)))
     MuFastTrackFitter       = TrigL2MuonSA__MuFastTrackFitter()
     MuFastTrackExtrapolator = TrigL2MuonSA__MuFastTrackExtrapolator()
     MuCalStreamerTool       = TrigL2MuonSA__MuCalStreamerTool()
diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py
index 2db8347a2972c3f71998215c10a8e089c8c8af23..243f1cae90b722fdd54bde815c238c9e4fb0c2b2 100755
--- a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py
+++ b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py
@@ -538,7 +538,9 @@ class TrigMuonEFStandaloneTrackToolConfig (TrigMuonEFConf.TrigMuonEFStandaloneTr
         from MuonCSC_CnvTools.MuonCSC_CnvToolsConf import Muon__CscRdoToCscPrepDataTool
         from MuonTGC_CnvTools.MuonTGC_CnvToolsConf import Muon__TgcRdoToPrepDataTool
         from MuonRPC_CnvTools.MuonRPC_CnvToolsConf import Muon__RpcRdoToPrepDataTool
-        MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataTool(name = "TrigEFMdtRdoToPrepDataTool")
+        from MuonCnvExample import MuonCalibConfig
+
+        MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataTool(name = "TrigEFMdtRdoToPrepDataTool", CalibrationTool=MuonCalibConfig.MdtCalibrationTool())
         CscRdoToCscPrepDataTool = Muon__CscRdoToCscPrepDataTool(name = "TrigEFCscRdoToPrepDataTool")
         TgcRdoToTgcPrepDataTool = Muon__TgcRdoToPrepDataTool(name = "TrigEFTgcRdoToPrepDataTool")
         RpcRdoToRpcPrepDataTool = Muon__RpcRdoToPrepDataTool(name = "TrigEFRpcRdoToPrepDataTool")
diff --git a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py
index 6093811ed349e5ea95b4ed5cc83fbdbec0888d46..b606da07f6fe43bde71ed3c175a97d35222d1091 100644
--- a/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py
+++ b/Trigger/TrigAlgorithms/TrigT2CaloCommon/python/CaloDef.py
@@ -3,6 +3,7 @@
 from AthenaCommon.Constants import ERROR
 from AthenaCommon.CFElements import seqAND, parOR
 from AthenaConfiguration.ComponentFactory import CompFactory
+from TriggerMenuMT.HLTMenuConfig.CommonSequences.FullScanDefs import caloFSRoI
 
 def setMinimalCaloSetup() :
   from AthenaCommon.AppMgr import ServiceMgr as svcMgr
@@ -114,7 +115,7 @@ def createFastCaloSequence(EMRoIDecisions, doRinger=False, ClustersName="HLT_Fas
 
 def clusterFSInputMaker( ):
   """Creates the inputMaker for FS in menu"""
-  RoIs = 'HLT_FSJETRoI'
+  RoIs = caloFSRoI
   from AthenaConfiguration.ComponentFactory import CompFactory
   InputMakerAlg = CompFactory.InputMakerForRoI("IMclusterFS", RoIsLink="initialRoI")
   InputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool()
@@ -122,11 +123,11 @@ def clusterFSInputMaker( ):
   return InputMakerAlg
 
 
-def HLTCellMaker(RoIs='HLT_FSJETRoI', outputName="CaloCells", algSuffix=""):
+def HLTCellMaker(RoIs=caloFSRoI, outputName="CaloCells", algSuffix=""):
     cellMakerAlgo = _algoHLTCaloCell(name="HLTCaloCellMaker"+algSuffix, inputEDM=RoIs, outputEDM=outputName, RoIMode=True)
     return cellMakerAlgo
 
-def HLTFSCellMakerRecoSequence(RoIs='HLT_FSJETRoI'):
+def HLTFSCellMakerRecoSequence(RoIs=caloFSRoI):
     cellMaker = HLTCellMaker(RoIs, outputName="CaloCellsFS", algSuffix="FS")
     RecoSequence = parOR("ClusterRecoSequenceFS", [cellMaker])
     return (RecoSequence, cellMaker.CellsName)
diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx
index 8dbd32782f2ca1f8d73dfb80e9556bc3376cf52f..6ab34b2b6a4bf3195c97c4d6a462fb118d4c2bcb 100644
--- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx
+++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/CacheGlobalMemory.cxx
@@ -61,7 +61,8 @@ Trig::CacheGlobalMemory::CacheGlobalMemory() :
   m_oldDecisionKeyPtr(nullptr),
   m_oldEventInfoKeyPtr(nullptr),
 #endif
-  m_navigationKeyPtr(nullptr),
+  m_run2NavigationKeyPtr(nullptr),
+  m_run3NavigationKeyPtr(nullptr),
   m_bgCode(0)
 {}
 
@@ -378,7 +379,7 @@ bool Trig::CacheGlobalMemory::assert_decision() {
     // over DecisionUnpackerAthena
     if ( contains_xAOD_decision ){
       ATH_MSG_INFO("SG contains xAOD decision, use DecisionUnpackerStandalone");
-      setUnpacker(new DecisionUnpackerStandalone(m_decisionKeyPtr, m_navigationKeyPtr));
+      setUnpacker(new DecisionUnpackerStandalone(m_decisionKeyPtr, m_run2NavigationKeyPtr));
     }
     else if( is_l1result_configured ){
       ATH_MSG_INFO("SG contains AOD decision, use DecisionUnpackerAthena");
@@ -391,7 +392,7 @@ bool Trig::CacheGlobalMemory::assert_decision() {
 #else
     if ( contains_xAOD_decision ){
       ATH_MSG_INFO("SG contains xAOD decision, use DecisionUnpackerStandalone");
-      setUnpacker(new DecisionUnpackerStandalone(m_decisionKeyPtr, m_navigationKeyPtr));
+      setUnpacker(new DecisionUnpackerStandalone(m_decisionKeyPtr, m_run2NavigationKeyPtr));
     }
 #endif
     
diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx
index 932d4278c117e36d605e42ada978c43a335e87d4..b3c598ceebec75a60e2facd7d8881a75bb094b3b 100644
--- a/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx
+++ b/Trigger/TrigAnalysis/TrigDecisionTool/Root/TrigDecisionTool.cxx
@@ -143,6 +143,7 @@ Trig::TrigDecisionTool::initialize() {
 #endif
 
    cgm()->navigation(&*m_navigation);
+
    cgm()->setStore(&*evtStore()); // Use of this is deprecated, and should be phased out.
    
 #ifndef XAOD_STANDALONE
@@ -188,7 +189,8 @@ StatusCode Trig::TrigDecisionTool::beginEvent() {
 
   CacheGlobalMemory* cgmPtr = cgm();
   cgmPtr->setDecisionKeyPtr( &m_decisionKey );
-  cgmPtr->setNavigationKeyPtr( &m_navigationKey );
+  cgmPtr->setRun2NavigationKeyPtr( &m_navigationKey );
+  cgmPtr->setRun3NavigationKeyPtr( &m_HLTSummaryKeyIn );
 
   size_t slot = 0;
 #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Full athena
diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h
index 6722804588566321a4c4cc300f4db7075d0754d2..9220505554ff14bdba7e84618ce0d4ce2f128cf4 100644
--- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h
+++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/CacheGlobalMemory.h
@@ -144,7 +144,9 @@ namespace Trig {
     EventPtr_t store() const { return m_store; }
 
     void setDecisionKeyPtr(SG::ReadHandleKey<xAOD::TrigDecision>* k) { m_decisionKeyPtr = k; }
-    void setNavigationKeyPtr(SG::ReadHandleKey<xAOD::TrigNavigation>* k) { m_navigationKeyPtr = k; }
+    void setRun2NavigationKeyPtr(SG::ReadHandleKey<xAOD::TrigNavigation>* k) { m_run2NavigationKeyPtr = k; }
+    void setRun3NavigationKeyPtr(SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>* k) { m_run3NavigationKeyPtr = k; }
+    SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>& getRun3NavigationKeyPtr() { return *m_run3NavigationKeyPtr; }
 
 #if !defined(XAOD_STANDALONE) && !defined(XAOD_ANALYSIS) // Full Athena
     void setOldDecisionKeyPtr(SG::ReadHandleKey<TrigDec::TrigDecision>* k) { m_oldDecisionKeyPtr = k; }
@@ -223,7 +225,8 @@ namespace Trig {
     SG::ReadHandleKey<EventInfo>* m_oldEventInfoKeyPtr; //!< Parent TDT's read handle key
 #endif
 
-    SG::ReadHandleKey<xAOD::TrigNavigation>* m_navigationKeyPtr; //!< Parent TDT's read handle key
+    SG::ReadHandleKey<xAOD::TrigNavigation>* m_run2NavigationKeyPtr; //!< Parent TDT's read handle key
+    SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>* m_run3NavigationKeyPtr; //!< Parent TDT's read handle key
 
     typedef std::unordered_map<std::string, const TrigConf::HLTChain*> ChainHashMap_t;
     ChainHashMap_t     m_mConfChains;            //!< map of conf chains
diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h
index 127f492b3f5f85cd35418596cddbc60487412155..37ea788fad2bf46636dedbe5ddbd153090fa6e25 100644
--- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h
+++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.h
@@ -119,6 +119,7 @@ namespace Trig {
        * @brief returns typed features related to given chain group of HLT chains or L1 items
        * Note: This is a RUN 3 (and on) function.
        * @param[in] eventStore Event store pointer. To migrate to readHandles with the rest of the TDT soon
+       * @param[in] HLTSummaryKeyIn SG Key to the navigation summary container
        * @param[in] condition Condition requirement. Only TrigDefs::Physics and TrigDefs::includeFailedDecisions are supported.
        * @param[in] containerSGKey Optional requirement to return only features within the specified container name. Not checked if not specified. 
        * @param[in] featureCollectionMode For lastFeatureOfType, stop exploring each route through the navigation once one matching feature has been found.
@@ -127,6 +128,7 @@ namespace Trig {
        **/  
       template<class CONTAINER>
       std::vector< TrigCompositeUtils::LinkInfo<CONTAINER> > features(EventPtr_t eventStore,
+                SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>& HLTSummaryKeyIn,
                 unsigned int condition = TrigDefs::Physics,
                 const std::string& containerSGKey = "",
                 const unsigned int featureCollectionMode = TrigDefs::lastFeatureOfType,
diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.icc b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.icc
index 880d797b4781b528692210eeaf661355902da34b..4985288a161216ea2ed14aadf77e8ce8db7b51b9 100644
--- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.icc
+++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/ChainGroup.icc
@@ -1,5 +1,13 @@
+/*
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "AsgDataHandles/ReadHandle.h"
+#include "AsgDataHandles/ReadHandleKey.h"
+
 template<class CONTAINER>
 std::vector< TrigCompositeUtils::LinkInfo<CONTAINER> > Trig::ChainGroup::features(EventPtr_t eventStore,
+        SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer>& HLTSummaryKeyIn,
         unsigned int condition, const std::string& containerSGKey,
         const unsigned int featureCollectionMode, const std::string& navElementLinkKey) const {
 
@@ -19,8 +27,8 @@ std::vector< TrigCompositeUtils::LinkInfo<CONTAINER> > Trig::ChainGroup::feature
   }
 
   // TODO when we decide what happens to CacheGlobalMemory - this needs to be updated to use a ReadHandle
-  const TrigCompositeUtils::DecisionContainer* navigationSummaryContainer = nullptr;
-  if (eventStore->retrieve(navigationSummaryContainer, "HLTNav_Summary").isFailure() || navigationSummaryContainer == nullptr) {
+  SG::ReadHandle<TrigCompositeUtils::DecisionContainer> navigationSummaryRH = SG::ReadHandle(HLTSummaryKeyIn);
+  if (!navigationSummaryRH.isValid()) {
     ATH_MSG_ERROR("Unable to read Run 3 trigger navigation. Cannot retrieve features.");
     errState = true;
   }
@@ -28,7 +36,7 @@ std::vector< TrigCompositeUtils::LinkInfo<CONTAINER> > Trig::ChainGroup::feature
   // We always want to search from the passed raw terminus node to find features for passed chains.
   const TrigCompositeUtils::Decision* terminusNode = nullptr;
   if (!errState) {
-    for (const TrigCompositeUtils::Decision* decision : *navigationSummaryContainer) {
+    for (const TrigCompositeUtils::Decision* decision : *navigationSummaryRH) {
       if (decision->name() == "HLTPassRaw") {
         terminusNode = decision;
         break;
diff --git a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionAccess.icc b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionAccess.icc
index 56c02e8abc6f10032f6b83640aa6533f178e3292..57bfddb4848192c2a7de452ac0c016f9b4394a08 100644
--- a/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionAccess.icc
+++ b/Trigger/TrigAnalysis/TrigDecisionTool/TrigDecisionTool/DecisionAccess.icc
@@ -49,8 +49,7 @@ std::vector< TrigCompositeUtils::LinkInfo<CONTAINER> > Trig::DecisionAccess::fea
                                                                   const std::string& containerSGKey,
                                                                   const unsigned int featureCollectionMode,
                                                                   const std::string& navElementLinkKey) const {
-  // const TrigCompositeUtils::DecisionContainer* terminusNode = SG::get(m_HLTSummaryKeyIn/*, context*/);
-  return group->features<CONTAINER>(cgm()->store(), condition, containerSGKey, featureCollectionMode, navElementLinkKey);
+  return group->features<CONTAINER>(cgm()->store(), cgm()->getRun3NavigationKeyPtr(), condition, containerSGKey, featureCollectionMode, navElementLinkKey);
 }
 
 template<class CONTAINER>
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt
index 4cfbd3d6ba741417c7ecc4b36cb780ba7e41d7a0..ba89603b84bc405c515badb7e89ec1ce3157ca1c 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/CMakeLists.txt
@@ -13,7 +13,7 @@ atlas_add_library( TrigHLTJetHypoLib
                    PUBLIC_HEADERS TrigHLTJetHypo
                    PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
                    LINK_LIBRARIES AsgTools AthenaBaseComps DecisionHandlingLib GaudiKernel TrigCompositeUtilsLib TrigInterfacesLib TrigParticle TrigTimeAlgsLib xAODJet
-                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaMonitoringKernelLib CaloGeoHelpers TrigMissingEtEvent xAODEventInfo xAODTrigger )
+                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} AthenaMonitoringKernelLib CaloGeoHelpers TrigMissingEtEvent xAODEventInfo xAODTrigger TrigSteeringEvent )
 
 atlas_add_component( TrigHLTJetHypo
                      src/components/*.cxx
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx
index f7f95d76a10aea8259b1af4c9ecb4049b001d43a..12e20c532fcad7afaa9e795f4bd75d2bb629e287 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.cxx
@@ -7,7 +7,7 @@
 #include "TrigJetHypoAlgMT.h"
 #include "TrigCompositeUtils/HLTIdentifier.h"
 #include "TrigCompositeUtils/TrigCompositeUtils.h"
-
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
 
 using namespace TrigCompositeUtils;
 
@@ -19,8 +19,8 @@ TrigJetHypoAlgMT::TrigJetHypoAlgMT( const std::string& name,
 
 
 StatusCode TrigJetHypoAlgMT::initialize() {
+
   CHECK( m_hypoTools.retrieve() );
-  
   CHECK( m_jetsKey.initialize() );
   return StatusCode::SUCCESS;
 }
@@ -31,7 +31,7 @@ StatusCode TrigJetHypoAlgMT::execute( const EventContext& context ) const {
 
 
   // read in the previous Decisions made before running this hypo Alg.
-  // The container should have only one such Decision (for L1) as deding
+  // The container should have only one such Decision (for L1) as deciding
   // on jets is a one step process.
 
   ATH_MSG_DEBUG("Retrieving L1 decision \"" << decisionInput().key() << "\"");
@@ -43,8 +43,8 @@ StatusCode TrigJetHypoAlgMT::execute( const EventContext& context ) const {
   }
 
   if(h_prevDecisions->size() != 1){
-    ATH_MSG_ERROR(" Expected one previous decisions (L1 RoIs not used), found "
-                  << h_prevDecisions->size());
+    ATH_MSG_ERROR(" Expected one previous decisions in " << decisionInput().key()
+		  << " (L1 RoIs not used), found " << h_prevDecisions->size());
     return StatusCode::FAILURE;      
   }
 
@@ -66,7 +66,7 @@ StatusCode TrigJetHypoAlgMT::execute( const EventContext& context ) const {
   auto h_jets = SG::makeHandle(m_jetsKey, context );
   ATH_MSG_DEBUG("Retrieving jets from: " << h_jets.key());
   ATH_CHECK(h_jets.isValid());
-
+    
   const JetContainer* jets = h_jets.get();
 
   CHECK(decide(jets, previousDecision, outputDecisions)); 
@@ -87,19 +87,41 @@ TrigJetHypoAlgMT::decide(const xAOD::JetContainer* jets,
 
   std::vector<std::pair<const xAOD::Jet*,Decision*>> jetHypoInputs;
 
-  for (const xAOD::Jet* jet : *jets) {
-
-    // Create a new Decision object to mirror this Jet.
-    // Link it to its parent Decision object and attach the jet as a "feature"
-
-    Decision* newDecision =
-      TrigCompositeUtils::newDecisionIn(outputDecisions, previousDecision);
+  if(m_doPresel) {
+    // In the preselection case, we create only one DecisionObject, which links
+    // all jets -- this is so as to avoid making spurious DecisionObject
+    // chains where the objects in one step have no unambiguous relationship
+    // with those in the preceding step.
+    Decision* newDecision = nullptr;
+    newDecision = TrigCompositeUtils::newDecisionIn(outputDecisions, previousDecision);
+    // Needs a dummy feature link -- we will specify the input RoI
+    if(!newDecision->hasObjectLink(featureString())) {
+      newDecision->setObjectLink<TrigRoiDescriptorCollection>(TrigCompositeUtils::featureString(), 
+							      TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>(newDecision, TrigCompositeUtils::initialRoIString()).link);
+      }
+    // We need to fill the jetHypoInputs vector, pairing each jet with
+    // the same newDecision object, such that it is updated if the hypo
+    // tool passes the jet.
+    for (const xAOD::Jet* jet : *jets) {
+      jetHypoInputs.push_back( std::make_pair(jet, newDecision) );
+    }
+  } else {
+    // When operating as a terminal hypo selection, we create one DecisionObject
+    // per jet, which is later used to identify which jets contributed to an
+    // event passing.
+    for (const xAOD::Jet* jet : *jets) {
+
+      Decision* newDecision = nullptr;
+      // Create a new Decision object to mirror this Jet.
+      // Link it to its parent Decision object and attach the jet as a "feature"
+      newDecision = TrigCompositeUtils::newDecisionIn(outputDecisions, previousDecision);
     
-    ElementLink<xAOD::JetContainer> jetLink =
-      ElementLink<xAOD::JetContainer>(*jets, jet->index());
+      ElementLink<xAOD::JetContainer> jetLink =
+	ElementLink<xAOD::JetContainer>(*jets, jet->index());
 
-    newDecision->setObjectLink<xAOD::JetContainer>(featureString(), jetLink);
-    jetHypoInputs.push_back( std::make_pair(jet, newDecision) );
+      newDecision->setObjectLink<xAOD::JetContainer>(featureString(), jetLink);
+      jetHypoInputs.push_back( std::make_pair(jet, newDecision) );
+    }
   }
 
   // Extract the IDs of the jet chains which are active.
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h
index bd572eb449137436a834c52b94dc2f41608f170e..d55aa045e98bf7621141f56fb07a6d392b5c1873 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoAlgMT.h
@@ -51,6 +51,11 @@ class TrigJetHypoAlgMT : public ::HypoBase {
      
   SG::ReadHandleKey< xAOD::JetContainer > m_jetsKey {
     this, "Jets", "Jets", "jet container key, full scan"};  
+
+  // For preselection, we want to only generate one decision object
+  // a la L1, rather than one per jet
+  Gaudi::Property<bool> m_doPresel {
+    this, "DoPresel", false, "is this preselection rather than main decision?"};
   
 }; 
 
diff --git a/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt b/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt
index 5725d3f4a13e4e4683dd248e94561ee9d271be4e..e03cfc613a17d014a26eb2336fcf7ad7d4d37dd2 100644
--- a/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt
+++ b/Trigger/TrigHypothesis/TrigStreamerHypo/CMakeLists.txt
@@ -6,7 +6,7 @@ atlas_subdir( TrigStreamerHypo )
 # Component(s) in the package:
 atlas_add_component( TrigStreamerHypo
                      src/*.cxx src/components/*.cxx
-                     LINK_LIBRARIES AsgTools AthenaBaseComps DecisionHandlingLib GaudiKernel TrigCompositeUtilsLib )
+                     LINK_LIBRARIES AsgTools AthenaBaseComps DecisionHandlingLib GaudiKernel TrigCompositeUtilsLib TrigSteeringEvent )
 
 # 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/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx
index a488662a22abf7c778ad16641c951fd7030d14b7..b686b1debbcfa9c2a120ec05ba6d72d1ccaae327 100644
--- a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx
+++ b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.cxx
@@ -6,6 +6,7 @@
 #include "Gaudi/Property.h"
 #include "TrigCompositeUtils/HLTIdentifier.h"
 #include "TrigCompositeUtils/TrigCompositeUtils.h"
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
 
 using namespace TrigCompositeUtils;
 
@@ -46,6 +47,13 @@ StatusCode TrigStreamerHypoAlgMT::execute( const EventContext& context ) const {
   
   // Create output Decision object, link it to prevDecision & its "feature"
   auto newDecision = TrigCompositeUtils::newDecisionIn(newDecisions, previousDecision, "", context);
+
+  // We may want to use this as a 1st step PassThrough hypo
+  // In this case, we need to be more explicit about setting a feature on the Decision object
+  if(m_setInitialRoiAsFeature && !newDecision->hasObjectLink(featureString())) {
+    newDecision->setObjectLink<TrigRoiDescriptorCollection>(TrigCompositeUtils::featureString(), 
+							    TrigCompositeUtils::findLink<TrigRoiDescriptorCollection>(newDecision, TrigCompositeUtils::initialRoIString()).link);
+  }
   
   // Get set of active chains
   const TrigCompositeUtils::DecisionIDContainer previousDecisionIDs{
diff --git a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h
index da9af58845ae92b563e914450dd80bcf4e5b1928..b4b0801b6b2f5128a90bb224836e0dad523ae5f4 100644
--- a/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h
+++ b/Trigger/TrigHypothesis/TrigStreamerHypo/src/TrigStreamerHypoAlgMT.h
@@ -27,6 +27,9 @@ class TrigStreamerHypoAlgMT : public ::HypoBase {
 
   ToolHandleArray<ITrigStreamerHypoToolMT> m_hypoTools {
     this, "HypoTools", {}, "Hypo tools"};
+
+  Gaudi::Property<bool> m_setInitialRoiAsFeature {
+    this, "SetInitialRoIAsFeature", false, "For use in a passthrough step 1"};
      
 }; 
 
diff --git a/Trigger/TrigSteer/DecisionHandling/python/jetMenuHelper.py b/Trigger/TrigSteer/DecisionHandling/python/jetMenuHelper.py
deleted file mode 100644
index 818527083c4b4ca4cab367b9ab3ac5ac9151b8ff..0000000000000000000000000000000000000000
--- a/Trigger/TrigSteer/DecisionHandling/python/jetMenuHelper.py
+++ /dev/null
@@ -1,46 +0,0 @@
-#  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
-#
-
-from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetMenuSequence, jetCFSequence
-from AthenaConfiguration.AllConfigFlags import ConfigFlags
-
-def jetDictFromString(jet_def_string):
-    """ Function to retrieve the jet dictionaory from string"""
-   
-    # Translate the definition string into an approximation
-    # of the "recoParts" in the jet chainParts.
-    jetRecoDict = {}
-    # Insert values from string
-    # Python names are more descriptive. May want to sync
-    # these names with the SignatureDict, needs coordination with
-    # menu group when they start to implement this
-    trkopt = "notrk"
-    if "_ftf" in jet_def_string:
-        jetalg, inputtype, clusterscale, jetcalib, trkopt = jet_def_string.split('_')
-    else:
-        jetalg, inputtype, clusterscale, jetcalib = jet_def_string.split('_')
-
-    jetRecoDict = {
-        "recoAlg":  jetalg,
-        "dataType": inputtype,
-        "calib":    clusterscale,
-        "jetCalib": jetcalib,
-        # Default to this for now pending further development.
-        # Ideally it'd be better to deprecate this and instead
-        # take the defaults from SignatureDicts for most
-        # purposes, but this can wait until the needs of clients
-        # are more clear.
-        "trkopt" :  trkopt
-    }
-    return jetRecoDict
-
-def jetCFSequenceFromString(jet_def_string):
-    """ Function to retrieve jet Reco sequence from string"""
-    jetRecoDict=jetDictFromString(jet_def_string)
-    return jetCFSequence(ConfigFlags,**jetRecoDict)	
-    
- 
-def jetMenuSequenceFromString(jet_def_string):
-    """ Function to retrieve jet menu sequence from string"""
-    jetRecoDict=jetDictFromString(jet_def_string)
-    return jetMenuSequence(ConfigFlags,**jetRecoDict) # First arg dummy flags for RecoFragmentsPool
diff --git a/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx b/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx
index 8b3529bf22f0765a894073adf1acc65d0c008814..7a579b52e2d866d4f66a6458c964e55168f7208b 100644
--- a/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx
+++ b/Trigger/TrigSteer/TrigCompositeUtils/Root/TrigCompositeUtilsRoot.cxx
@@ -18,6 +18,7 @@ CLASS_DEF( xAOD::IParticleContainer, 1241842700, 1 )
 #include <unordered_map>
 #include <regex>
 #include <iomanip> // std::setfill
+#include <mutex>
 
 static const SG::AuxElement::Accessor< std::vector<TrigCompositeUtils::DecisionID> > readWriteAccessor("decisions");
 static const SG::AuxElement::ConstAccessor< std::vector<TrigCompositeUtils::DecisionID> > readOnlyAccessor("decisions");
@@ -220,28 +221,37 @@ namespace TrigCompositeUtils {
     // The list of containers we need to read can change on a file-by-file basis (it depends on the SMK)
     // Hence we query SG for all collections rather than maintain a large and ever changing ReadHandleKeyArray
 
-    std::vector<std::string> keys;
+    static std::vector<std::string> keys ATLAS_THREAD_SAFE;
+    static std::mutex keysMutex;
     // TODO TODO TODO NEED TO REPLACE THIS WITH A STANDALONE-FRIENDLY VERSION
 #ifndef XAOD_STANDALONE
-    eventStore->keys(static_cast<CLID>( ClassID_traits< DecisionContainer >::ID() ), keys);
+    {
+      std::lock_guard<std::mutex> lock(keysMutex);
+      if (keys.size() == 0) {
+        // In theory this can change from file to file, 
+        // the use case for this function is monitoring, and this is typically over a single run.
+        eventStore->keys(static_cast<CLID>( ClassID_traits< DecisionContainer >::ID() ), keys);
+      }
+    }
 #else
+    eventStore->event(); // Avoid unused warning
     throw std::runtime_error("Cannot yet obtain rejected HLT features in AnalysisBase");
 #endif
 
     // Loop over each DecisionContainer,
     for (const std::string& key : keys) {
       // Get and check this container
-      if ( key.find("HLTNav") != 0 ) {
+      if ( key.find("HLTNav_") != 0 ) {
         continue; // Only concerned about the decision containers which make up the navigation, they have name prefix of HLTNav
       }
       if ( key == "HLTNav_Summary" ) {
         continue; //  This is where accepted paths start. We are looking for rejected ones
       }
-      const DecisionContainer* container = nullptr;
-      if ( eventStore->retrieve( container, key ).isFailure() ) {
+      SG::ReadHandle<DecisionContainer> containerRH(key);
+      if (!containerRH.isValid()) {
         throw std::runtime_error("Unable to retrieve " + key + " from event store.");
       }
-      for (const Decision* d : *container) {
+      for (const Decision* d : *containerRH) {
         if (!d->hasObjectLink(featureString())) {
           // TODO add logic for ComboHypo where this is expected
           continue; // Only want Decision objects created by HypoAlgs
diff --git a/Trigger/TrigT1/TrigT1CaloCalibConditions/TrigT1CaloCalibConditions/ATLAS_CHECK_THREAD_SAFETY b/Trigger/TrigT1/TrigT1CaloCalibConditions/TrigT1CaloCalibConditions/ATLAS_CHECK_THREAD_SAFETY
new file mode 100644
index 0000000000000000000000000000000000000000..1d276eb953f3f1f2841c87df29985854ce16743a
--- /dev/null
+++ b/Trigger/TrigT1/TrigT1CaloCalibConditions/TrigT1CaloCalibConditions/ATLAS_CHECK_THREAD_SAFETY
@@ -0,0 +1 @@
+Trigger/TrigT1/TrigT1CaloCalibConditions
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index 919cfc6341500652c7a1528cfd136e97a40ed999..09a3180c974292b2cce35af8c23cbcad24ebb62e 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -1,12 +1,12 @@
 TrigSignatureMoniMT                                 INFO HLT_10j40_pf_subresjesgscIS_ftf_L14J15 #3575805394
-TrigSignatureMoniMT                                 INFO -- #3575805394 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3575805394 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3575805394 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3575805394 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_10j40_subjesIS_L14J15 #2760204981
 TrigSignatureMoniMT                                 INFO -- #2760204981 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2760204981 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_10j40_subresjesgscIS_ftf_L14J15 #3568675904
-TrigSignatureMoniMT                                 INFO -- #3568675904 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3568675904 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3568675904 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3568675904 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_2e12_lhloose_mu10_L12EM8VH_MU10 #2518246928
 TrigSignatureMoniMT                                 INFO -- #2518246928 Events         1          1          0          0          0          0          0          0          0          0          0          -          -          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2518246928 Features                             0          0          0          0          0          0          0          0          0          -          -          -          -          -
@@ -56,11 +56,11 @@ TrigSignatureMoniMT                                 INFO HLT_2g50_loose_L12EM20V
 TrigSignatureMoniMT                                 INFO -- #3590373854 Events         2          2          2          0          0          0          -          -          -          -          -          -          -          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3590373854 Features                             2          0          0          0          -          -          -          -          -          -          -          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_2j330_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3495282139
-TrigSignatureMoniMT                                 INFO -- #3495282139 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3495282139 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3495282139 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3495282139 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_2j330_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #2680976232
-TrigSignatureMoniMT                                 INFO -- #2680976232 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2680976232 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2680976232 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2680976232 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 #1295975955
 TrigSignatureMoniMT                                 INFO -- #1295975955 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #1295975955 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
@@ -119,11 +119,11 @@ TrigSignatureMoniMT                                 INFO HLT_3j200_L1J100 #21994
 TrigSignatureMoniMT                                 INFO -- #2199422919 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2199422919 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_3j200_pf_subresjesgscIS_ftf_L1J100 #794428037
-TrigSignatureMoniMT                                 INFO -- #794428037 Events          3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #794428037 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #794428037 Events          3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #794428037 Features                              0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_3j200_subresjesgscIS_ftf_L1J100 #1801834652
-TrigSignatureMoniMT                                 INFO -- #1801834652 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1801834652 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1801834652 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1801834652 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_3mu6_L13MU6 #1832399408
 TrigSignatureMoniMT                                 INFO -- #1832399408 Events         0          0          0          0          0          0          0          0          0          0          0          -          -          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #1832399408 Features                             0          0          0          0          0          0          0          0          0          -          -          -          -          -
@@ -134,14 +134,14 @@ TrigSignatureMoniMT                                 INFO HLT_3mu8_msonly_L13MU6
 TrigSignatureMoniMT                                 INFO -- #424835335 Events          0          0          0          0          0          0          0          0          0          0          -          -          -          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #424835335 Features                              0          0          0          0          0          0          0          0          -          -          -          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_4j120_pf_subresjesgscIS_ftf_L13J50 #1755129033
-TrigSignatureMoniMT                                 INFO -- #1755129033 Events         1          1          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1755129033 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1755129033 Events         1          1          0          0          0          0          0          0          0          0          0          0          1          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1755129033 Features                             0          0          0          0          0          0          0          0          0          0          1          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_4j120_subjesIS_L13J50 #3722303680
 TrigSignatureMoniMT                                 INFO -- #3722303680 Events         1          1          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3722303680 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_4j120_subresjesgscIS_ftf_L13J50 #91006165
-TrigSignatureMoniMT                                 INFO -- #91006165 Events           1          1          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #91006165 Features                               0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #91006165 Events           1          1          0          0          0          0          0          0          0          0          0          0          1          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #91006165 Features                               0          0          0          0          0          0          0          0          0          0          1          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_4mu4_L14MU4 #1834383636
 TrigSignatureMoniMT                                 INFO -- #1834383636 Events         0          0          0          0          0          0          0          0          0          0          0          -          -          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #1834383636 Features                             0          0          0          0          0          0          0          0          0          -          -          -          -          -
@@ -149,47 +149,47 @@ TrigSignatureMoniMT                                 INFO HLT_5j70_0eta240_L14J20
 TrigSignatureMoniMT                                 INFO -- #1175391812 Events         7          7          0          0          0          0          0          0          0          0          0          0          1          -          -          -          1
 TrigSignatureMoniMT                                 INFO -- #1175391812 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_5j70_pf_subresjesgscIS_ftf_0eta240_L14J15 #4189027854
-TrigSignatureMoniMT                                 INFO -- #4189027854 Events         9          9          0          0          0          0          0          0          0          0          0          0          1          -          -          -          1
-TrigSignatureMoniMT                                 INFO -- #4189027854 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -
+TrigSignatureMoniMT                                 INFO -- #4189027854 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          1          -          -          1
+TrigSignatureMoniMT                                 INFO -- #4189027854 Features                             0          0          0          0          0          0          0          0          0          0          9          5          -          -
 TrigSignatureMoniMT                                 INFO HLT_5j70_subresjesgscIS_ftf_0eta240_L14J15 #819918597
-TrigSignatureMoniMT                                 INFO -- #819918597 Events          9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #819918597 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #819918597 Events          9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #819918597 Features                              0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_5j85_pf_subresjesgscIS_ftf_L14J15 #4208121018
-TrigSignatureMoniMT                                 INFO -- #4208121018 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #4208121018 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #4208121018 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #4208121018 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_5j85_subjesIS_L14J15 #2745094401
 TrigSignatureMoniMT                                 INFO -- #2745094401 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2745094401 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_5j85_subresjesgscIS_ftf_L14J15 #1148892499
-TrigSignatureMoniMT                                 INFO -- #1148892499 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1148892499 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1148892499 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1148892499 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_6j55_pf_subresjesgscIS_ftf_0eta240_L14J15 #1526259867
-TrigSignatureMoniMT                                 INFO -- #1526259867 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1526259867 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1526259867 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1526259867 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_6j55_subjesIS_0eta240_L14J15 #68179418
 TrigSignatureMoniMT                                 INFO -- #68179418 Events           9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #68179418 Features                               0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_6j55_subresjesgscIS_ftf_0eta240_L14J15 #1068073241
-TrigSignatureMoniMT                                 INFO -- #1068073241 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1068073241 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1068073241 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1068073241 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_6j70_pf_subresjesgscIS_ftf_L14J15 #1755772565
-TrigSignatureMoniMT                                 INFO -- #1755772565 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1755772565 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1755772565 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1755772565 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_6j70_subjesIS_L14J15 #1003115860
 TrigSignatureMoniMT                                 INFO -- #1003115860 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #1003115860 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_6j70_subresjesgscIS_ftf_L14J15 #59957514
-TrigSignatureMoniMT                                 INFO -- #59957514 Events           9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #59957514 Features                               0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #59957514 Events           9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #59957514 Features                               0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_7j45_pf_subresjesgscIS_ftf_L14J15 #2701381398
-TrigSignatureMoniMT                                 INFO -- #2701381398 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2701381398 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2701381398 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2701381398 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_7j45_subjesIS_L14J15 #2617173782
 TrigSignatureMoniMT                                 INFO -- #2617173782 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2617173782 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_7j45_subresjesgscIS_ftf_L14J15 #2928962349
-TrigSignatureMoniMT                                 INFO -- #2928962349 Events         9          9          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2928962349 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2928962349 Events         9          9          0          0          0          0          0          0          0          0          0          0          9          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2928962349 Features                             0          0          0          0          0          0          0          0          0          0          9          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_JetDS_j0_L1J100 #3302698716
 TrigSignatureMoniMT                                 INFO -- #3302698716 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          3          3          -          3
 TrigSignatureMoniMT                                 INFO -- #3302698716 Features                             0          0          0          0          0          0          0          0          0          0          81         32         3          -
@@ -413,8 +413,8 @@ TrigSignatureMoniMT                                 INFO HLT_j0_vbenfSEP30etSEP3
 TrigSignatureMoniMT                                 INFO -- #4034799151 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
 TrigSignatureMoniMT                                 INFO -- #4034799151 Features                             0          0          0          0          0          0          0          0          0          0          402        -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100 #219711753
-TrigSignatureMoniMT                                 INFO -- #219711753 Events          3          3          0          0          0          0          0          0          0          0          0          0          0          0          -          -          0
-TrigSignatureMoniMT                                 INFO -- #219711753 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -
+TrigSignatureMoniMT                                 INFO -- #219711753 Events          3          3          0          0          0          0          0          0          0          0          0          0          3          0          0          -          0
+TrigSignatureMoniMT                                 INFO -- #219711753 Features                              0          0          0          0          0          0          0          0          0          0          3          0          0          -
 TrigSignatureMoniMT                                 INFO HLT_j260_320eta490_L1J20 #3084792704
 TrigSignatureMoniMT                                 INFO -- #3084792704 Events         19         19         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3084792704 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
@@ -422,104 +422,113 @@ TrigSignatureMoniMT                                 INFO HLT_j260_320eta490_L1J7
 TrigSignatureMoniMT                                 INFO -- #3769257182 Events         2          2          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3769257182 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j275_pf_subjesgscIS_ftf_bdl1r60_split_L1J100 #2912155644
-TrigSignatureMoniMT                                 INFO -- #2912155644 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2912155644 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2912155644 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2912155644 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j275_pf_subjesgscIS_ftf_boffperf_split_L1J100 #9543810
-TrigSignatureMoniMT                                 INFO -- #9543810 Events            3          3          0          0          0          0          0          0          0          0          0          0          0          0          -          -          0
-TrigSignatureMoniMT                                 INFO -- #9543810 Features                                0          0          0          0          0          0          0          0          0          0          0          0          -          -
+TrigSignatureMoniMT                                 INFO -- #9543810 Events            3          3          0          0          0          0          0          0          0          0          0          0          3          0          0          -          0
+TrigSignatureMoniMT                                 INFO -- #9543810 Features                                0          0          0          0          0          0          0          0          0          0          3          0          0          -
 TrigSignatureMoniMT                                 INFO HLT_j275_subjesgscIS_ftf_bdl1r60_split_L1J100 #2807668578
-TrigSignatureMoniMT                                 INFO -- #2807668578 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2807668578 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2807668578 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2807668578 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j275_subjesgscIS_ftf_bmv2c1060_split_L1J100 #710546402
-TrigSignatureMoniMT                                 INFO -- #710546402 Events          3          3          0          0          0          0          0          0          0          0          0          0          0          0          -          -          0
-TrigSignatureMoniMT                                 INFO -- #710546402 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -
+TrigSignatureMoniMT                                 INFO -- #710546402 Events          3          3          0          0          0          0          0          0          0          0          0          0          3          0          0          -          0
+TrigSignatureMoniMT                                 INFO -- #710546402 Features                              0          0          0          0          0          0          0          0          0          0          3          0          0          -
 TrigSignatureMoniMT                                 INFO HLT_j275_subjesgscIS_ftf_boffperf_split_L1J100 #540369970
-TrigSignatureMoniMT                                 INFO -- #540369970 Events          3          3          0          0          0          0          0          0          0          0          0          0          0          0          -          -          0
-TrigSignatureMoniMT                                 INFO -- #540369970 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -
+TrigSignatureMoniMT                                 INFO -- #540369970 Events          3          3          0          0          0          0          0          0          0          0          0          0          3          0          0          -          0
+TrigSignatureMoniMT                                 INFO -- #540369970 Features                              0          0          0          0          0          0          0          0          0          0          3          0          0          -
 TrigSignatureMoniMT                                 INFO HLT_j300_pf_subjesgscIS_ftf_bdl1r70_split_L1J100 #2576796343
-TrigSignatureMoniMT                                 INFO -- #2576796343 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2576796343 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2576796343 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2576796343 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j300_subjesgscIS_ftf_bdl1r70_split_L1J100 #2952175162
-TrigSignatureMoniMT                                 INFO -- #2952175162 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2952175162 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2952175162 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2952175162 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j300_subjesgscIS_ftf_bmv2c1070_split_L1J100 #2074989613
-TrigSignatureMoniMT                                 INFO -- #2074989613 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          0          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2074989613 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -
+TrigSignatureMoniMT                                 INFO -- #2074989613 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          0          -          0
+TrigSignatureMoniMT                                 INFO -- #2074989613 Features                             0          0          0          0          0          0          0          0          0          0          3          0          0          -
 TrigSignatureMoniMT                                 INFO HLT_j360_pf_subjesgscIS_ftf_bdl1r77_split_L1J100 #3049708671
-TrigSignatureMoniMT                                 INFO -- #3049708671 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3049708671 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3049708671 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3049708671 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j360_subjesgscIS_ftf_bdl1r77_split_L1J100 #1563453863
-TrigSignatureMoniMT                                 INFO -- #1563453863 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1563453863 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1563453863 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1563453863 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j360_subjesgscIS_ftf_bmv2c1077_split_L1J100 #4176355792
-TrigSignatureMoniMT                                 INFO -- #4176355792 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          0          -          -          0
-TrigSignatureMoniMT                                 INFO -- #4176355792 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -
+TrigSignatureMoniMT                                 INFO -- #4176355792 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          0          -          0
+TrigSignatureMoniMT                                 INFO -- #4176355792 Features                             0          0          0          0          0          0          0          0          0          0          3          0          0          -
 TrigSignatureMoniMT                                 INFO HLT_j420_L1J100 #2659902019
 TrigSignatureMoniMT                                 INFO -- #2659902019 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2659902019 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j420_pf_subresjesgscIS_ftf_L1J100 #3936932891
-TrigSignatureMoniMT                                 INFO -- #3936932891 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3936932891 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3936932891 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3936932891 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j420_subresjesgscIS_ftf_L1J100 #2477128298
-TrigSignatureMoniMT                                 INFO -- #2477128298 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2477128298 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2477128298 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2477128298 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_L1J15 #1364976160
 TrigSignatureMoniMT                                 INFO -- #1364976160 Events         20         20         0          0          0          0          0          0          0          0          0          0          19         -          -          -          19
 TrigSignatureMoniMT                                 INFO -- #1364976160 Features                             0          0          0          0          0          0          0          0          0          0          49         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_csskpf_nojcalib_ftf_L1J20 #2528888897
-TrigSignatureMoniMT                                 INFO -- #2528888897 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
-TrigSignatureMoniMT                                 INFO -- #2528888897 Features                             0          0          0          0          0          0          0          0          0          0          30         -          -          -
+TrigSignatureMoniMT                                 INFO -- #2528888897 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         15         -          -          15
+TrigSignatureMoniMT                                 INFO -- #2528888897 Features                             0          0          0          0          0          0          0          0          0          0          19         30         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_cssktc_nojcalib_L1J20 #3295122398
 TrigSignatureMoniMT                                 INFO -- #3295122398 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
 TrigSignatureMoniMT                                 INFO -- #3295122398 Features                             0          0          0          0          0          0          0          0          0          0          27         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_ftf_L1J15 #868405538
-TrigSignatureMoniMT                                 INFO -- #868405538 Events          20         20         0          0          0          0          0          0          0          0          0          0          18         -          -          -          18
-TrigSignatureMoniMT                                 INFO -- #868405538 Features                              0          0          0          0          0          0          0          0          0          0          44         -          -          -
+TrigSignatureMoniMT                                 INFO -- #868405538 Events          20         20         0          0          0          0          0          0          0          0          0          0          20         18         -          -          18
+TrigSignatureMoniMT                                 INFO -- #868405538 Features                              0          0          0          0          0          0          0          0          0          0          20         44         -          -
+TrigSignatureMoniMT                                 INFO HLT_j45_ftf_preselj45_L1J20 #526860976
+TrigSignatureMoniMT                                 INFO -- #526860976 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         18         -          -          18
+TrigSignatureMoniMT                                 INFO -- #526860976 Features                              0          0          0          0          0          0          0          0          0          0          19         44         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_nojcalib_L1J20 #2042444294
 TrigSignatureMoniMT                                 INFO -- #2042444294 Events         19         19         0          0          0          0          0          0          0          0          0          0          17         -          -          -          17
 TrigSignatureMoniMT                                 INFO -- #2042444294 Features                             0          0          0          0          0          0          0          0          0          0          39         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_ftf_L1J20 #3679554988
-TrigSignatureMoniMT                                 INFO -- #3679554988 Events         19         19         0          0          0          0          0          0          0          0          0          0          16         -          -          -          16
-TrigSignatureMoniMT                                 INFO -- #3679554988 Features                             0          0          0          0          0          0          0          0          0          0          35         -          -          -
+TrigSignatureMoniMT                                 INFO -- #3679554988 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         16         -          -          16
+TrigSignatureMoniMT                                 INFO -- #3679554988 Features                             0          0          0          0          0          0          0          0          0          0          19         35         -          -
+TrigSignatureMoniMT                                 INFO HLT_j45_pf_ftf_preselj45_L1J20 #650158432
+TrigSignatureMoniMT                                 INFO -- #650158432 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         16         -          -          16
+TrigSignatureMoniMT                                 INFO -- #650158432 Features                              0          0          0          0          0          0          0          0          0          0          19         35         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_nojcalib_ftf_L1J20 #4202219904
-TrigSignatureMoniMT                                 INFO -- #4202219904 Events         19         19         0          0          0          0          0          0          0          0          0          0          16         -          -          -          16
-TrigSignatureMoniMT                                 INFO -- #4202219904 Features                             0          0          0          0          0          0          0          0          0          0          36         -          -          -
+TrigSignatureMoniMT                                 INFO -- #4202219904 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         16         -          -          16
+TrigSignatureMoniMT                                 INFO -- #4202219904 Features                             0          0          0          0          0          0          0          0          0          0          19         36         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_subjesgscIS_ftf_L1J20 #2187173741
-TrigSignatureMoniMT                                 INFO -- #2187173741 Events         19         19         0          0          0          0          0          0          0          0          0          0          18         -          -          -          18
-TrigSignatureMoniMT                                 INFO -- #2187173741 Features                             0          0          0          0          0          0          0          0          0          0          39         -          -          -
+TrigSignatureMoniMT                                 INFO -- #2187173741 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         18         -          -          18
+TrigSignatureMoniMT                                 INFO -- #2187173741 Features                             0          0          0          0          0          0          0          0          0          0          19         39         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_subjesgscIS_ftf_bdl1r70_split_L1J20 #4239752847
-TrigSignatureMoniMT                                 INFO -- #4239752847 Events         19         19         0          0          0          0          0          0          0          0          0          0          18         -          -          -          18
-TrigSignatureMoniMT                                 INFO -- #4239752847 Features                             0          0          0          0          0          0          0          0          0          0          39         -          -          -
+TrigSignatureMoniMT                                 INFO -- #4239752847 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         18         -          -          18
+TrigSignatureMoniMT                                 INFO -- #4239752847 Features                             0          0          0          0          0          0          0          0          0          0          19         39         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_subjesgscIS_ftf_boffperf_split_L1J20 #2546763674
-TrigSignatureMoniMT                                 INFO -- #2546763674 Events         19         19         0          0          0          0          0          0          0          0          0          0          16         16         -          -          16
-TrigSignatureMoniMT                                 INFO -- #2546763674 Features                             0          0          0          0          0          0          0          0          0          0          36         36         -          -
+TrigSignatureMoniMT                                 INFO -- #2546763674 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         16         16         -          16
+TrigSignatureMoniMT                                 INFO -- #2546763674 Features                             0          0          0          0          0          0          0          0          0          0          19         36         36         -
 TrigSignatureMoniMT                                 INFO HLT_j45_sktc_nojcalib_L1J20 #1542468090
 TrigSignatureMoniMT                                 INFO -- #1542468090 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
 TrigSignatureMoniMT                                 INFO -- #1542468090 Features                             0          0          0          0          0          0          0          0          0          0          26         -          -          -
+TrigSignatureMoniMT                                 INFO HLT_j45_subjesIS_ftf_preselj45_L1J20 #3647626880
+TrigSignatureMoniMT                                 INFO -- #3647626880 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         19         -          -          19
+TrigSignatureMoniMT                                 INFO -- #3647626880 Features                             0          0          0          0          0          0          0          0          0          0          19         49         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_011jvt_L1J15 #266323220
-TrigSignatureMoniMT                                 INFO -- #266323220 Events          20         20         0          0          0          0          0          0          0          0          0          0          13         -          -          -          13
-TrigSignatureMoniMT                                 INFO -- #266323220 Features                              0          0          0          0          0          0          0          0          0          0          29         -          -          -
+TrigSignatureMoniMT                                 INFO -- #266323220 Events          20         20         0          0          0          0          0          0          0          0          0          0          20         13         -          -          13
+TrigSignatureMoniMT                                 INFO -- #266323220 Features                              0          0          0          0          0          0          0          0          0          0          20         29         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_015jvt_L1J15 #3102941497
-TrigSignatureMoniMT                                 INFO -- #3102941497 Events         20         20         0          0          0          0          0          0          0          0          0          0          13         -          -          -          13
-TrigSignatureMoniMT                                 INFO -- #3102941497 Features                             0          0          0          0          0          0          0          0          0          0          29         -          -          -
+TrigSignatureMoniMT                                 INFO -- #3102941497 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         13         -          -          13
+TrigSignatureMoniMT                                 INFO -- #3102941497 Features                             0          0          0          0          0          0          0          0          0          0          20         29         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_059jvt_L1J15 #2237035634
-TrigSignatureMoniMT                                 INFO -- #2237035634 Events         20         20         0          0          0          0          0          0          0          0          0          0          13         -          -          -          13
-TrigSignatureMoniMT                                 INFO -- #2237035634 Features                             0          0          0          0          0          0          0          0          0          0          28         -          -          -
+TrigSignatureMoniMT                                 INFO -- #2237035634 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         13         -          -          13
+TrigSignatureMoniMT                                 INFO -- #2237035634 Features                             0          0          0          0          0          0          0          0          0          0          20         28         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_L1J15 #1960278431
-TrigSignatureMoniMT                                 INFO -- #1960278431 Events         20         20         0          0          0          0          0          0          0          0          0          0          19         -          -          -          19
-TrigSignatureMoniMT                                 INFO -- #1960278431 Features                             0          0          0          0          0          0          0          0          0          0          50         -          -          -
+TrigSignatureMoniMT                                 INFO -- #1960278431 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         19         -          -          19
+TrigSignatureMoniMT                                 INFO -- #1960278431 Features                             0          0          0          0          0          0          0          0          0          0          20         50         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_bdl1r70_split_L1J20 #2947439578
-TrigSignatureMoniMT                                 INFO -- #2947439578 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         -          -          -          19
-TrigSignatureMoniMT                                 INFO -- #2947439578 Features                             0          0          0          0          0          0          0          0          0          0          50         -          -          -
+TrigSignatureMoniMT                                 INFO -- #2947439578 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         19         -          -          19
+TrigSignatureMoniMT                                 INFO -- #2947439578 Features                             0          0          0          0          0          0          0          0          0          0          19         50         -          -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_bmv2c1070_split_L1J20 #980453000
-TrigSignatureMoniMT                                 INFO -- #980453000 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         10         -          -          10
-TrigSignatureMoniMT                                 INFO -- #980453000 Features                              0          0          0          0          0          0          0          0          0          0          49         19         -          -
+TrigSignatureMoniMT                                 INFO -- #980453000 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         19         10         -          10
+TrigSignatureMoniMT                                 INFO -- #980453000 Features                              0          0          0          0          0          0          0          0          0          0          19         49         19         -
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20 #3374916154
-TrigSignatureMoniMT                                 INFO -- #3374916154 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         19         -          -          19
-TrigSignatureMoniMT                                 INFO -- #3374916154 Features                             0          0          0          0          0          0          0          0          0          0          49         49         -          -
+TrigSignatureMoniMT                                 INFO -- #3374916154 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         19         19         -          19
+TrigSignatureMoniMT                                 INFO -- #3374916154 Features                             0          0          0          0          0          0          0          0          0          0          19         49         49         -
 TrigSignatureMoniMT                                 INFO HLT_j45_subresjesgscIS_ftf_L1J15 #1213239619
-TrigSignatureMoniMT                                 INFO -- #1213239619 Events         20         20         0          0          0          0          0          0          0          0          0          0          18         -          -          -          18
-TrigSignatureMoniMT                                 INFO -- #1213239619 Features                             0          0          0          0          0          0          0          0          0          0          44         -          -          -
+TrigSignatureMoniMT                                 INFO -- #1213239619 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         18         -          -          18
+TrigSignatureMoniMT                                 INFO -- #1213239619 Features                             0          0          0          0          0          0          0          0          0          0          20         44         -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10_lcw_subjes_L1J100 #3327656707
 TrigSignatureMoniMT                                 INFO -- #3327656707 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3327656707 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
@@ -533,23 +542,23 @@ TrigSignatureMoniMT                                 INFO HLT_j460_a10r_L1J20 #38
 TrigSignatureMoniMT                                 INFO -- #3875082669 Events         19         19         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3875082669 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3781128663
-TrigSignatureMoniMT                                 INFO -- #3781128663 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3781128663 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3781128663 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3781128663 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_jes_ftf_L1J100 #1509950051
-TrigSignatureMoniMT                                 INFO -- #1509950051 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #1509950051 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1509950051 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #1509950051 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #249842682
-TrigSignatureMoniMT                                 INFO -- #249842682 Events          3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #249842682 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #249842682 Events          3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #249842682 Features                              0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_L1J100 #3452032818
-TrigSignatureMoniMT                                 INFO -- #3452032818 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #3452032818 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3452032818 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #3452032818 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_lcw_nojcalib_L1J100 #3093997295
 TrigSignatureMoniMT                                 INFO -- #3093997295 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #3093997295 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_pf_nojcalib_ftf_L1J100 #2138269254
-TrigSignatureMoniMT                                 INFO -- #2138269254 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
-TrigSignatureMoniMT                                 INFO -- #2138269254 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2138269254 Events         3          3          0          0          0          0          0          0          0          0          0          0          3          0          -          -          0
+TrigSignatureMoniMT                                 INFO -- #2138269254 Features                             0          0          0          0          0          0          0          0          0          0          3          0          -          -
 TrigSignatureMoniMT                                 INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 #2296827117
 TrigSignatureMoniMT                                 INFO -- #2296827117 Events         3          3          0          0          0          0          0          0          0          0          0          0          0          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #2296827117 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -
@@ -575,11 +584,11 @@ TrigSignatureMoniMT                                 INFO HLT_j85_L1J20 #51047553
 TrigSignatureMoniMT                                 INFO -- #510475538 Events          19         19         0          0          0          0          0          0          0          0          0          0          13         -          -          -          13
 TrigSignatureMoniMT                                 INFO -- #510475538 Features                              0          0          0          0          0          0          0          0          0          0          21         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_j85_ftf_L1J20 #877042532
-TrigSignatureMoniMT                                 INFO -- #877042532 Events          19         19         0          0          0          0          0          0          0          0          0          0          12         -          -          -          12
-TrigSignatureMoniMT                                 INFO -- #877042532 Features                              0          0          0          0          0          0          0          0          0          0          18         -          -          -
+TrigSignatureMoniMT                                 INFO -- #877042532 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         12         -          -          12
+TrigSignatureMoniMT                                 INFO -- #877042532 Features                              0          0          0          0          0          0          0          0          0          0          19         18         -          -
 TrigSignatureMoniMT                                 INFO HLT_j85_pf_ftf_L1J20 #789444389
-TrigSignatureMoniMT                                 INFO -- #789444389 Events          19         19         0          0          0          0          0          0          0          0          0          0          11         -          -          -          11
-TrigSignatureMoniMT                                 INFO -- #789444389 Features                              0          0          0          0          0          0          0          0          0          0          17         -          -          -
+TrigSignatureMoniMT                                 INFO -- #789444389 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         11         -          -          11
+TrigSignatureMoniMT                                 INFO -- #789444389 Features                              0          0          0          0          0          0          0          0          0          0          19         17         -          -
 TrigSignatureMoniMT                                 INFO HLT_mb_sptrk_L1RD0_FILLED #4097312640
 TrigSignatureMoniMT                                 INFO -- #4097312640 Events         20         0          0          0          -          -          -          -          -          -          -          -          -          -          -          -          0
 TrigSignatureMoniMT                                 INFO -- #4097312640 Features                             0          0          -          -          -          -          -          -          -          -          -          -          -          -
@@ -1046,32 +1055,32 @@ TrigSignatureMoniMT                                 INFO HLT_unconvtrk120_isohpt
 TrigSignatureMoniMT                                 INFO -- #3425113791 Events         10         10         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6
 TrigSignatureMoniMT                                 INFO -- #3425113791 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_cvfpufit_L1XE50 #2729083465
-TrigSignatureMoniMT                                 INFO -- #2729083465 Events         10         10         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6
-TrigSignatureMoniMT                                 INFO -- #2729083465 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2729083465 Events         10         10         0          0          0          0          0          0          0          0          0          0          10         6          -          -          6
+TrigSignatureMoniMT                                 INFO -- #2729083465 Features                             0          0          0          0          0          0          0          0          0          0          10         6          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_mht_L1XE50 #532175988
 TrigSignatureMoniMT                                 INFO -- #532175988 Events          10         10         0          0          0          0          0          0          0          0          0          0          9          -          -          -          9
 TrigSignatureMoniMT                                 INFO -- #532175988 Features                              0          0          0          0          0          0          0          0          0          0          9          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50 #3054195458
-TrigSignatureMoniMT                                 INFO -- #3054195458 Events         10         10         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5
-TrigSignatureMoniMT                                 INFO -- #3054195458 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -
+TrigSignatureMoniMT                                 INFO -- #3054195458 Events         10         10         0          0          0          0          0          0          0          0          0          0          10         5          -          -          5
+TrigSignatureMoniMT                                 INFO -- #3054195458 Features                             0          0          0          0          0          0          0          0          0          0          10         5          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_mhtpufit_pf_subjesgscIS_L1XE50 #2614685150
-TrigSignatureMoniMT                                 INFO -- #2614685150 Events         10         10         0          0          0          0          0          0          0          0          0          0          4          -          -          -          4
-TrigSignatureMoniMT                                 INFO -- #2614685150 Features                             0          0          0          0          0          0          0          0          0          0          4          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2614685150 Events         10         10         0          0          0          0          0          0          0          0          0          0          10         4          -          -          4
+TrigSignatureMoniMT                                 INFO -- #2614685150 Features                             0          0          0          0          0          0          0          0          0          0          10         4          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_pfopufit_L1XE50 #2909333517
-TrigSignatureMoniMT                                 INFO -- #2909333517 Events         10         10         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3
-TrigSignatureMoniMT                                 INFO -- #2909333517 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -
+TrigSignatureMoniMT                                 INFO -- #2909333517 Events         10         10         0          0          0          0          0          0          0          0          0          0          10         3          -          -          3
+TrigSignatureMoniMT                                 INFO -- #2909333517 Features                             0          0          0          0          0          0          0          0          0          0          10         3          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_pfsum_L1XE50 #1890237897
-TrigSignatureMoniMT                                 INFO -- #1890237897 Events         10         10         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3
-TrigSignatureMoniMT                                 INFO -- #1890237897 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1890237897 Events         10         10         0          0          0          0          0          0          0          0          0          0          10         3          -          -          3
+TrigSignatureMoniMT                                 INFO -- #1890237897 Features                             0          0          0          0          0          0          0          0          0          0          10         3          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_tcpufit_L1XE50 #2803198799
 TrigSignatureMoniMT                                 INFO -- #2803198799 Events         10         10         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6
 TrigSignatureMoniMT                                 INFO -- #2803198799 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_trkmht_L1XE50 #1055916731
-TrigSignatureMoniMT                                 INFO -- #1055916731 Events         10         10         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7
-TrigSignatureMoniMT                                 INFO -- #1055916731 Features                             0          0          0          0          0          0          0          0          0          0          7          -          -          -
+TrigSignatureMoniMT                                 INFO -- #1055916731 Events         10         10         0          0          0          0          0          0          0          0          0          0          10         7          -          -          7
+TrigSignatureMoniMT                                 INFO -- #1055916731 Features                             0          0          0          0          0          0          0          0          0          0          10         7          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50 #451622546
-TrigSignatureMoniMT                                 INFO -- #451622546 Events          10         10         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5
-TrigSignatureMoniMT                                 INFO -- #451622546 Features                              0          0          0          0          0          0          0          0          0          0          5          -          -          -
+TrigSignatureMoniMT                                 INFO -- #451622546 Events          10         10         0          0          0          0          0          0          0          0          0          0          6          5          -          -          5
+TrigSignatureMoniMT                                 INFO -- #451622546 Features                              0          0          0          0          0          0          0          0          0          0          6          5          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe110_mht_L1XE50 #3030733259
 TrigSignatureMoniMT                                 INFO -- #3030733259 Events         10         10         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7
 TrigSignatureMoniMT                                 INFO -- #3030733259 Features                             0          0          0          0          0          0          0          0          0          0          7          -          -          -
@@ -1088,29 +1097,29 @@ TrigSignatureMoniMT                                 INFO HLT_xe30_cell_xe30_tcpu
 TrigSignatureMoniMT                                 INFO -- #3768353779 Events         19         19         0          0          0          0          0          0          0          0          0          0          14         -          -          -          14
 TrigSignatureMoniMT                                 INFO -- #3768353779 Features                             0          0          0          0          0          0          0          0          0          0          14         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_cvfpufit_L1XE10 #3860749499
-TrigSignatureMoniMT                                 INFO -- #3860749499 Events         19         19         0          0          0          0          0          0          0          0          0          0          14         -          -          -          14
-TrigSignatureMoniMT                                 INFO -- #3860749499 Features                             0          0          0          0          0          0          0          0          0          0          14         -          -          -
+TrigSignatureMoniMT                                 INFO -- #3860749499 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         14         -          -          14
+TrigSignatureMoniMT                                 INFO -- #3860749499 Features                             0          0          0          0          0          0          0          0          0          0          19         14         -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_mht_L1XE10 #3626903018
 TrigSignatureMoniMT                                 INFO -- #3626903018 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         -          -          -          19
 TrigSignatureMoniMT                                 INFO -- #3626903018 Features                             0          0          0          0          0          0          0          0          0          0          19         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10 #689201557
-TrigSignatureMoniMT                                 INFO -- #689201557 Events          19         19         0          0          0          0          0          0          0          0          0          0          12         -          -          -          12
-TrigSignatureMoniMT                                 INFO -- #689201557 Features                              0          0          0          0          0          0          0          0          0          0          12         -          -          -
+TrigSignatureMoniMT                                 INFO -- #689201557 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         12         -          -          12
+TrigSignatureMoniMT                                 INFO -- #689201557 Features                              0          0          0          0          0          0          0          0          0          0          19         12         -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10 #1886909707
-TrigSignatureMoniMT                                 INFO -- #1886909707 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
-TrigSignatureMoniMT                                 INFO -- #1886909707 Features                             0          0          0          0          0          0          0          0          0          0          15         -          -          -
+TrigSignatureMoniMT                                 INFO -- #1886909707 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         14         -          -          14
+TrigSignatureMoniMT                                 INFO -- #1886909707 Features                             0          0          0          0          0          0          0          0          0          0          19         14         -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_pfopufit_L1XE10 #2252641537
-TrigSignatureMoniMT                                 INFO -- #2252641537 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
-TrigSignatureMoniMT                                 INFO -- #2252641537 Features                             0          0          0          0          0          0          0          0          0          0          15         -          -          -
+TrigSignatureMoniMT                                 INFO -- #2252641537 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         15         -          -          15
+TrigSignatureMoniMT                                 INFO -- #2252641537 Features                             0          0          0          0          0          0          0          0          0          0          19         15         -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_pfsum_L1XE10 #998713382
-TrigSignatureMoniMT                                 INFO -- #998713382 Events          19         19         0          0          0          0          0          0          0          0          0          0          16         -          -          -          16
-TrigSignatureMoniMT                                 INFO -- #998713382 Features                              0          0          0          0          0          0          0          0          0          0          16         -          -          -
+TrigSignatureMoniMT                                 INFO -- #998713382 Events          19         19         0          0          0          0          0          0          0          0          0          0          19         16         -          -          16
+TrigSignatureMoniMT                                 INFO -- #998713382 Features                              0          0          0          0          0          0          0          0          0          0          19         16         -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_tcpufit_L1XE10 #1583719916
 TrigSignatureMoniMT                                 INFO -- #1583719916 Events         19         19         0          0          0          0          0          0          0          0          0          0          14         -          -          -          14
 TrigSignatureMoniMT                                 INFO -- #1583719916 Features                             0          0          0          0          0          0          0          0          0          0          14         -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe30_trkmht_L1XE10 #2468872349
-TrigSignatureMoniMT                                 INFO -- #2468872349 Events         19         19         0          0          0          0          0          0          0          0          0          0          15         -          -          -          15
-TrigSignatureMoniMT                                 INFO -- #2468872349 Features                             0          0          0          0          0          0          0          0          0          0          15         -          -          -
+TrigSignatureMoniMT                                 INFO -- #2468872349 Events         19         19         0          0          0          0          0          0          0          0          0          0          19         15         -          -          15
+TrigSignatureMoniMT                                 INFO -- #2468872349 Features                             0          0          0          0          0          0          0          0          0          0          19         15         -          -
 TrigSignatureMoniMT                                 INFO HLT_xe65_cell_L1XE50 #531141817
 TrigSignatureMoniMT                                 INFO -- #531141817 Events          10         10         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7
 TrigSignatureMoniMT                                 INFO -- #531141817 Features                              0          0          0          0          0          0          0          0          0          0          7          -          -          -
@@ -1127,5 +1136,5 @@ TrigSignatureMoniMT                                 INFO HLT_xe80_tcpufit_unconv
 TrigSignatureMoniMT                                 INFO -- #153760048 Events          10         10         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6
 TrigSignatureMoniMT                                 INFO -- #153760048 Features                              0          0          0          0          0          0          0          0          0          0          6          -          -          -
 TrigSignatureMoniMT                                 INFO HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50 #302256132
-TrigSignatureMoniMT                                 INFO -- #302256132 Events          10         10         0          0          0          0          0          0          0          0          0          0          4          -          -          -          4
-TrigSignatureMoniMT                                 INFO -- #302256132 Features                              0          0          0          0          0          0          0          0          0          0          4          -          -          -
+TrigSignatureMoniMT                                 INFO -- #302256132 Events          10         10         0          0          0          0          0          0          0          0          0          0          4          4          -          -          4
+TrigSignatureMoniMT                                 INFO -- #302256132 Features                              0          0          0          0          0          0          0          0          0          0          4          4          -          -
diff --git a/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_new.py b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_new.py
new file mode 100755
index 0000000000000000000000000000000000000000..615a89d9e066b71c92427043231b2fd3d0e36768
--- /dev/null
+++ b/Trigger/TrigValidation/TrigInDetValidation/test/test_trigID_all_ttbar_pu80_new.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python
+
+# art-description: art job for all_ttbar_pu80_new
+# art-type: grid
+# art-include: master/Athena
+# art-input-nfiles: 3
+# art-athena-mt: 8
+# art-memory: 4096
+# art-html: https://idtrigger-val.web.cern.ch/idtrigger-val/TIDAWeb/TIDAart/?jobdir=
+# art-output: *.txt
+# art-output: *.log
+# art-output: log.*
+# art-output: *.out
+# art-output: *.err
+# art-output: *.log.tar.gz
+# art-output: *.new
+# art-output: *.json
+# art-output: *.root
+# art-output: *.check*
+# art-output: HLT*
+# art-output: times*
+# art-output: cost-perCall
+# art-output: cost-perEvent
+# art-output: cost-perCall-chain
+# art-output: cost-perEvent-chain
+# art-output: *.dat 
+
+
+from TrigValTools.TrigValSteering import Test, CheckSteps
+from TrigInDetValidation.TrigInDetArtSteps import TrigInDetReco, TrigInDetAna, TrigInDetdictStep, TrigInDetCompStep, TrigInDetCpuCostStep
+
+
+import sys,getopt
+
+try:
+    opts, args = getopt.getopt(sys.argv[1:],"lxp",["local"])
+except getopt.GetoptError:
+    print("Usage:  ")
+    print("-l(--local)    run locally with input file from art eos grid-input")
+    print("-x             don't run athena or post post-processing, only plotting")
+    print("-p             run post-processing, even if -x is set")
+
+
+local=False
+exclude=False
+postproc=False
+for opt,arg in opts:
+    if opt in ("-l", "--local"):
+        local=True
+    if opt=="-x":
+        exclude=True
+    if opt=="-p":
+        postproc=True
+
+
+rdo2aod = TrigInDetReco()
+rdo2aod.slices = ['muon','electron','tau','bjet']
+rdo2aod.max_events = 4000 
+rdo2aod.threads = 8 
+rdo2aod.concurrent_events = 8
+rdo2aod.perfmon = False
+rdo2aod.timeout = 18*3600
+rdo2aod.input = 'ttbar_pu80_mc15'   # defined in TrigValTools/share/TrigValInputs.json  
+
+
+test = Test.Test()
+test.art_type = 'grid'
+if (not exclude):
+    test.exec_steps = [rdo2aod]
+    test.exec_steps.append(TrigInDetAna()) # Run analysis to produce TrkNtuple
+    test.check_steps = CheckSteps.default_check_steps(test)
+
+# Run Tidardict
+if ((not exclude) or postproc ):
+    rdict = TrigInDetdictStep()
+    rdict.args='TIDAdata-run3-offline.dat -r Offline -f data-hists.root -b Test_bin.dat '
+    test.check_steps.append(rdict)
+
+ 
+# Now the comparitor steps
+comp=TrigInDetCompStep('Comp_L2muon','L2','muon')
+comp.test='ttbar'
+test.check_steps.append(comp)
+ 
+ 
+comp2=TrigInDetCompStep('Comp_EFmuon','EF','muon')
+comp2.test='ttbar'
+test.check_steps.append(comp2)
+
+
+comp3=TrigInDetCompStep('Comp_L2bjet','L2','bjet')
+comp3.test='ttbar'
+test.check_steps.append(comp3)
+
+comp4=TrigInDetCompStep('Comp_EFbjet','EF','bjet')
+comp4.test='ttbar'
+test.check_steps.append(comp4)
+
+comp5=TrigInDetCompStep('Comp_L2tau','L2','tau')
+comp5.test='ttbar'
+test.check_steps.append(comp5)
+
+comp6=TrigInDetCompStep('Comp_EFtau','EF','tau')
+comp6.test='ttbar'
+test.check_steps.append(comp6)
+
+comp7=TrigInDetCompStep('Comp_L2ele','L2','electron')
+comp7.test='ttbar'
+test.check_steps.append(comp7)
+
+comp8=TrigInDetCompStep('Comp_EFele','EF','electron')
+comp8.test='ttbar'
+test.check_steps.append(comp8)
+
+comp9=TrigInDetCompStep('Comp_L2FS','L2','FS')
+comp9.test='ttbar'
+test.check_steps.append(comp9)
+
+# CPU cost steps
+cpucost=TrigInDetCpuCostStep('CpuCostStep1', ftf_times=False)
+test.check_steps.append(cpucost)
+
+cpucost2=TrigInDetCpuCostStep('CpuCostStep2')
+test.check_steps.append(cpucost2)
+
+import sys
+sys.exit(test.run())
diff --git a/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json b/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json
index e4a705f1de379637c1630a2730c31a4df8a3b003..9cd4528a0e8d1decc6d3c9ffef72843e5b6ac2ad 100644
--- a/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json
+++ b/Trigger/TrigValidation/TrigValTools/share/TrigValInputs.json
@@ -84,6 +84,15 @@
             "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/mc16_13TeV.410470.PhPy8EG_A14_ttbar_hdamp258p75_nonallhad.recon.RDO.e6337_e5984_s3126_r10201/RDO.13232200._000020.pool.root.1"
         ]
     },
+    "ttbar_pu80_mc15": {
+        "source": "mc",
+        "format": "RDO",
+        "paths": [
+            "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigInDetValidation/samples/mc15_13TeV.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.recon.RDO.e3698_s2608_s2183_r7195/RDO.06752780._000001.pool.root.1",
+            "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigInDetValidation/samples/mc15_13TeV.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.recon.RDO.e3698_s2608_s2183_r7195/RDO.06752780._000002.pool.root.1",
+            "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigInDetValidation/samples/mc15_13TeV.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.recon.RDO.e3698_s2608_s2183_r7195/RDO.06752780._000003.pool.root.1"
+        ]
+    },
     "ttbar_rel21": {
         "source": "mc",
         "format": "RDO",
diff --git a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref
index ae0282f4a81f034c08dc2aaea694ef744af42661..9dde7711ff7414d562b3ef6f23858361a7ad9dc1 100644
--- a/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TriggerTest/share/ref_data_v1Dev_build.ref
@@ -1,12 +1,12 @@
 TrigSignatureMoniMT                                 INFO HLT_10j40_pf_subresjesgscIS_ftf_L14J15 #3575805394
-TrigSignatureMoniMT                                 INFO -- #3575805394 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3575805394 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3575805394 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3575805394 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_10j40_subjesIS_L14J15 #2760204981
 TrigSignatureMoniMT                                 INFO -- #2760204981 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2760204981 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_10j40_subresjesgscIS_ftf_L14J15 #3568675904
-TrigSignatureMoniMT                                 INFO -- #3568675904 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3568675904 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3568675904 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3568675904 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_2e12_lhloose_mu10_L12EM8VH_MU10 #2518246928
 TrigSignatureMoniMT                                 INFO -- #2518246928 Events         20         20         0          0          0          0          0          0          0          0          0          -          -          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2518246928 Features                             0          0          0          0          0          0          0          0          0          -          -          -          -          -          
@@ -56,11 +56,11 @@ TrigSignatureMoniMT                                 INFO HLT_2g50_loose_L12EM20V
 TrigSignatureMoniMT                                 INFO -- #3590373854 Events         20         20         0          0          0          0          -          -          -          -          -          -          -          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3590373854 Features                             0          0          0          0          -          -          -          -          -          -          -          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_2j330_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3495282139
-TrigSignatureMoniMT                                 INFO -- #3495282139 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3495282139 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3495282139 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3495282139 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_2j330_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #2680976232
-TrigSignatureMoniMT                                 INFO -- #2680976232 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2680976232 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2680976232 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2680976232 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_2j330_a10t_lcw_jes_35smcINF_L1J100 #1295975955
 TrigSignatureMoniMT                                 INFO -- #1295975955 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #1295975955 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
@@ -119,11 +119,11 @@ TrigSignatureMoniMT                                 INFO HLT_3j200_L1J100 #21994
 TrigSignatureMoniMT                                 INFO -- #2199422919 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2199422919 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_3j200_pf_subresjesgscIS_ftf_L1J100 #794428037
-TrigSignatureMoniMT                                 INFO -- #794428037 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #794428037 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #794428037 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #794428037 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_3j200_subresjesgscIS_ftf_L1J100 #1801834652
-TrigSignatureMoniMT                                 INFO -- #1801834652 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1801834652 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1801834652 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1801834652 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_3mu6_L13MU6 #1832399408
 TrigSignatureMoniMT                                 INFO -- #1832399408 Events         20         20         0          0          0          0          0          0          0          0          0          -          -          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #1832399408 Features                             0          0          0          0          0          0          0          0          0          -          -          -          -          -          
@@ -134,14 +134,14 @@ TrigSignatureMoniMT                                 INFO HLT_3mu8_msonly_L13MU6
 TrigSignatureMoniMT                                 INFO -- #424835335 Events          20         20         0          0          0          0          0          0          0          0          -          -          -          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #424835335 Features                              0          0          0          0          0          0          0          0          -          -          -          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_4j120_pf_subresjesgscIS_ftf_L13J50 #1755129033
-TrigSignatureMoniMT                                 INFO -- #1755129033 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1755129033 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1755129033 Events         20         20         0          0          0          0          0          0          0          0          0          0          2          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1755129033 Features                             0          0          0          0          0          0          0          0          0          0          2          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_4j120_subjesIS_L13J50 #3722303680
 TrigSignatureMoniMT                                 INFO -- #3722303680 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3722303680 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_4j120_subresjesgscIS_ftf_L13J50 #91006165
-TrigSignatureMoniMT                                 INFO -- #91006165 Events           20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #91006165 Features                               0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #91006165 Events           20         20         0          0          0          0          0          0          0          0          0          0          2          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #91006165 Features                               0          0          0          0          0          0          0          0          0          0          2          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_4mu4_L14MU4 #1834383636
 TrigSignatureMoniMT                                 INFO -- #1834383636 Events         20         20         0          0          0          0          0          0          0          0          0          -          -          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #1834383636 Features                             0          0          0          0          0          0          0          0          0          -          -          -          -          -          
@@ -149,47 +149,47 @@ TrigSignatureMoniMT                                 INFO HLT_5j70_0eta240_L14J20
 TrigSignatureMoniMT                                 INFO -- #1175391812 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #1175391812 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_5j70_pf_subresjesgscIS_ftf_0eta240_L14J15 #4189027854
-TrigSignatureMoniMT                                 INFO -- #4189027854 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #4189027854 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #4189027854 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #4189027854 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_5j70_subresjesgscIS_ftf_0eta240_L14J15 #819918597
-TrigSignatureMoniMT                                 INFO -- #819918597 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #819918597 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #819918597 Events          20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #819918597 Features                              0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_5j85_pf_subresjesgscIS_ftf_L14J15 #4208121018
-TrigSignatureMoniMT                                 INFO -- #4208121018 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #4208121018 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #4208121018 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #4208121018 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_5j85_subjesIS_L14J15 #2745094401
 TrigSignatureMoniMT                                 INFO -- #2745094401 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2745094401 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_5j85_subresjesgscIS_ftf_L14J15 #1148892499
-TrigSignatureMoniMT                                 INFO -- #1148892499 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1148892499 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1148892499 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1148892499 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_6j55_pf_subresjesgscIS_ftf_0eta240_L14J15 #1526259867
-TrigSignatureMoniMT                                 INFO -- #1526259867 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1526259867 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1526259867 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1526259867 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_6j55_subjesIS_0eta240_L14J15 #68179418
 TrigSignatureMoniMT                                 INFO -- #68179418 Events           20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #68179418 Features                               0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_6j55_subresjesgscIS_ftf_0eta240_L14J15 #1068073241
-TrigSignatureMoniMT                                 INFO -- #1068073241 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1068073241 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1068073241 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1068073241 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_6j70_pf_subresjesgscIS_ftf_L14J15 #1755772565
-TrigSignatureMoniMT                                 INFO -- #1755772565 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1755772565 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1755772565 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1755772565 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_6j70_subjesIS_L14J15 #1003115860
 TrigSignatureMoniMT                                 INFO -- #1003115860 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #1003115860 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_6j70_subresjesgscIS_ftf_L14J15 #59957514
-TrigSignatureMoniMT                                 INFO -- #59957514 Events           20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #59957514 Features                               0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #59957514 Events           20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #59957514 Features                               0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_7j45_pf_subresjesgscIS_ftf_L14J15 #2701381398
-TrigSignatureMoniMT                                 INFO -- #2701381398 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2701381398 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2701381398 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2701381398 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_7j45_subjesIS_L14J15 #2617173782
 TrigSignatureMoniMT                                 INFO -- #2617173782 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2617173782 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_7j45_subresjesgscIS_ftf_L14J15 #2928962349
-TrigSignatureMoniMT                                 INFO -- #2928962349 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2928962349 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2928962349 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2928962349 Features                             0          0          0          0          0          0          0          0          0          0          7          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_JetDS_j0_L1J100 #3302698716
 TrigSignatureMoniMT                                 INFO -- #3302698716 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
 TrigSignatureMoniMT                                 INFO -- #3302698716 Features                             0          0          0          0          0          0          0          0          0          0          0          0          0          -          
@@ -413,8 +413,8 @@ TrigSignatureMoniMT                                 INFO HLT_j0_vbenfSEP30etSEP3
 TrigSignatureMoniMT                                 INFO -- #4034799151 Events         20         20         0          0          0          0          0          0          0          0          0          0          2          -          -          -          2          
 TrigSignatureMoniMT                                 INFO -- #4034799151 Features                             0          0          0          0          0          0          0          0          0          0          24         -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j225_subjesgscIS_ftf_bmv2c1040_split_L1J100 #219711753
-TrigSignatureMoniMT                                 INFO -- #219711753 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #219711753 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
+TrigSignatureMoniMT                                 INFO -- #219711753 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
+TrigSignatureMoniMT                                 INFO -- #219711753 Features                              0          0          0          0          0          0          0          0          0          0          0          0          0          -          
 TrigSignatureMoniMT                                 INFO HLT_j260_320eta490_L1J20 #3084792704
 TrigSignatureMoniMT                                 INFO -- #3084792704 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3084792704 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
@@ -422,104 +422,113 @@ TrigSignatureMoniMT                                 INFO HLT_j260_320eta490_L1J7
 TrigSignatureMoniMT                                 INFO -- #3769257182 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3769257182 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j275_pf_subjesgscIS_ftf_bdl1r60_split_L1J100 #2912155644
-TrigSignatureMoniMT                                 INFO -- #2912155644 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2912155644 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2912155644 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2912155644 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j275_pf_subjesgscIS_ftf_boffperf_split_L1J100 #9543810
-TrigSignatureMoniMT                                 INFO -- #9543810 Events            20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #9543810 Features                                0          0          0          0          0          0          0          0          0          0          0          0          -          -          
+TrigSignatureMoniMT                                 INFO -- #9543810 Events            20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
+TrigSignatureMoniMT                                 INFO -- #9543810 Features                                0          0          0          0          0          0          0          0          0          0          0          0          0          -          
 TrigSignatureMoniMT                                 INFO HLT_j275_subjesgscIS_ftf_bdl1r60_split_L1J100 #2807668578
-TrigSignatureMoniMT                                 INFO -- #2807668578 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2807668578 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2807668578 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2807668578 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j275_subjesgscIS_ftf_bmv2c1060_split_L1J100 #710546402
-TrigSignatureMoniMT                                 INFO -- #710546402 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #710546402 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
+TrigSignatureMoniMT                                 INFO -- #710546402 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
+TrigSignatureMoniMT                                 INFO -- #710546402 Features                              0          0          0          0          0          0          0          0          0          0          0          0          0          -          
 TrigSignatureMoniMT                                 INFO HLT_j275_subjesgscIS_ftf_boffperf_split_L1J100 #540369970
-TrigSignatureMoniMT                                 INFO -- #540369970 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #540369970 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
+TrigSignatureMoniMT                                 INFO -- #540369970 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
+TrigSignatureMoniMT                                 INFO -- #540369970 Features                              0          0          0          0          0          0          0          0          0          0          0          0          0          -          
 TrigSignatureMoniMT                                 INFO HLT_j300_pf_subjesgscIS_ftf_bdl1r70_split_L1J100 #2576796343
-TrigSignatureMoniMT                                 INFO -- #2576796343 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2576796343 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2576796343 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2576796343 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j300_subjesgscIS_ftf_bdl1r70_split_L1J100 #2952175162
-TrigSignatureMoniMT                                 INFO -- #2952175162 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2952175162 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2952175162 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2952175162 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j300_subjesgscIS_ftf_bmv2c1070_split_L1J100 #2074989613
-TrigSignatureMoniMT                                 INFO -- #2074989613 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2074989613 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
+TrigSignatureMoniMT                                 INFO -- #2074989613 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
+TrigSignatureMoniMT                                 INFO -- #2074989613 Features                             0          0          0          0          0          0          0          0          0          0          0          0          0          -          
 TrigSignatureMoniMT                                 INFO HLT_j360_pf_subjesgscIS_ftf_bdl1r77_split_L1J100 #3049708671
-TrigSignatureMoniMT                                 INFO -- #3049708671 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3049708671 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3049708671 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3049708671 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j360_subjesgscIS_ftf_bdl1r77_split_L1J100 #1563453863
-TrigSignatureMoniMT                                 INFO -- #1563453863 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1563453863 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1563453863 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1563453863 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j360_subjesgscIS_ftf_bmv2c1077_split_L1J100 #4176355792
-TrigSignatureMoniMT                                 INFO -- #4176355792 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #4176355792 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
+TrigSignatureMoniMT                                 INFO -- #4176355792 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          0          -          0          
+TrigSignatureMoniMT                                 INFO -- #4176355792 Features                             0          0          0          0          0          0          0          0          0          0          0          0          0          -          
 TrigSignatureMoniMT                                 INFO HLT_j420_L1J100 #2659902019
 TrigSignatureMoniMT                                 INFO -- #2659902019 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2659902019 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j420_pf_subresjesgscIS_ftf_L1J100 #3936932891
-TrigSignatureMoniMT                                 INFO -- #3936932891 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3936932891 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3936932891 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3936932891 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j420_subresjesgscIS_ftf_L1J100 #2477128298
-TrigSignatureMoniMT                                 INFO -- #2477128298 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2477128298 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2477128298 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2477128298 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_L1J15 #1364976160
 TrigSignatureMoniMT                                 INFO -- #1364976160 Events         20         20         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6          
 TrigSignatureMoniMT                                 INFO -- #1364976160 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_csskpf_nojcalib_ftf_L1J20 #2528888897
-TrigSignatureMoniMT                                 INFO -- #2528888897 Events         20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
-TrigSignatureMoniMT                                 INFO -- #2528888897 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2528888897 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          3          -          -          3          
+TrigSignatureMoniMT                                 INFO -- #2528888897 Features                             0          0          0          0          0          0          0          0          0          0          5          3          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_cssktc_nojcalib_L1J20 #3295122398
 TrigSignatureMoniMT                                 INFO -- #3295122398 Events         20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
 TrigSignatureMoniMT                                 INFO -- #3295122398 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_ftf_L1J15 #868405538
-TrigSignatureMoniMT                                 INFO -- #868405538 Events          20         20         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7          
-TrigSignatureMoniMT                                 INFO -- #868405538 Features                              0          0          0          0          0          0          0          0          0          0          7          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #868405538 Events          20         20         0          0          0          0          0          0          0          0          0          0          7          7          -          -          7          
+TrigSignatureMoniMT                                 INFO -- #868405538 Features                              0          0          0          0          0          0          0          0          0          0          7          7          -          -          
+TrigSignatureMoniMT                                 INFO HLT_j45_ftf_preselj45_L1J20 #526860976
+TrigSignatureMoniMT                                 INFO -- #526860976 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #526860976 Features                              0          0          0          0          0          0          0          0          0          0          5          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_nojcalib_L1J20 #2042444294
 TrigSignatureMoniMT                                 INFO -- #2042444294 Events         20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
 TrigSignatureMoniMT                                 INFO -- #2042444294 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_ftf_L1J20 #3679554988
-TrigSignatureMoniMT                                 INFO -- #3679554988 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #3679554988 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3679554988 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #3679554988 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
+TrigSignatureMoniMT                                 INFO HLT_j45_pf_ftf_preselj45_L1J20 #650158432
+TrigSignatureMoniMT                                 INFO -- #650158432 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #650158432 Features                              0          0          0          0          0          0          0          0          0          0          5          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_nojcalib_ftf_L1J20 #4202219904
-TrigSignatureMoniMT                                 INFO -- #4202219904 Events         20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
-TrigSignatureMoniMT                                 INFO -- #4202219904 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #4202219904 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          3          -          -          3          
+TrigSignatureMoniMT                                 INFO -- #4202219904 Features                             0          0          0          0          0          0          0          0          0          0          5          3          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_subjesgscIS_ftf_L1J20 #2187173741
-TrigSignatureMoniMT                                 INFO -- #2187173741 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #2187173741 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2187173741 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #2187173741 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_subjesgscIS_ftf_bdl1r70_split_L1J20 #4239752847
-TrigSignatureMoniMT                                 INFO -- #4239752847 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #4239752847 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #4239752847 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #4239752847 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_pf_subjesgscIS_ftf_boffperf_split_L1J20 #2546763674
-TrigSignatureMoniMT                                 INFO -- #2546763674 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #2546763674 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
+TrigSignatureMoniMT                                 INFO -- #2546763674 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          5          -          5          
+TrigSignatureMoniMT                                 INFO -- #2546763674 Features                             0          0          0          0          0          0          0          0          0          0          5          5          5          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_sktc_nojcalib_L1J20 #1542468090
 TrigSignatureMoniMT                                 INFO -- #1542468090 Events         20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
 TrigSignatureMoniMT                                 INFO -- #1542468090 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -          
+TrigSignatureMoniMT                                 INFO HLT_j45_subjesIS_ftf_preselj45_L1J20 #3647626880
+TrigSignatureMoniMT                                 INFO -- #3647626880 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #3647626880 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_011jvt_L1J15 #266323220
-TrigSignatureMoniMT                                 INFO -- #266323220 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #266323220 Features                              0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #266323220 Events          20         20         0          0          0          0          0          0          0          0          0          0          7          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #266323220 Features                              0          0          0          0          0          0          0          0          0          0          7          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_015jvt_L1J15 #3102941497
-TrigSignatureMoniMT                                 INFO -- #3102941497 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #3102941497 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3102941497 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #3102941497 Features                             0          0          0          0          0          0          0          0          0          0          7          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_059jvt_L1J15 #2237035634
-TrigSignatureMoniMT                                 INFO -- #2237035634 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #2237035634 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2237035634 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #2237035634 Features                             0          0          0          0          0          0          0          0          0          0          7          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_L1J15 #1960278431
-TrigSignatureMoniMT                                 INFO -- #1960278431 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7          
-TrigSignatureMoniMT                                 INFO -- #1960278431 Features                             0          0          0          0          0          0          0          0          0          0          7          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1960278431 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          7          -          -          7          
+TrigSignatureMoniMT                                 INFO -- #1960278431 Features                             0          0          0          0          0          0          0          0          0          0          7          7          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_bdl1r70_split_L1J20 #2947439578
-TrigSignatureMoniMT                                 INFO -- #2947439578 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #2947439578 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2947439578 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #2947439578 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_bmv2c1070_split_L1J20 #980453000
-TrigSignatureMoniMT                                 INFO -- #980453000 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          1          -          -          1          
-TrigSignatureMoniMT                                 INFO -- #980453000 Features                              0          0          0          0          0          0          0          0          0          0          5          1          -          -          
+TrigSignatureMoniMT                                 INFO -- #980453000 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          5          1          -          1          
+TrigSignatureMoniMT                                 INFO -- #980453000 Features                              0          0          0          0          0          0          0          0          0          0          5          5          1          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subjesgscIS_ftf_boffperf_split_L1J20 #3374916154
-TrigSignatureMoniMT                                 INFO -- #3374916154 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #3374916154 Features                             0          0          0          0          0          0          0          0          0          0          5          5          -          -          
+TrigSignatureMoniMT                                 INFO -- #3374916154 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          5          5          -          5          
+TrigSignatureMoniMT                                 INFO -- #3374916154 Features                             0          0          0          0          0          0          0          0          0          0          5          5          5          -          
 TrigSignatureMoniMT                                 INFO HLT_j45_subresjesgscIS_ftf_L1J15 #1213239619
-TrigSignatureMoniMT                                 INFO -- #1213239619 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7          
-TrigSignatureMoniMT                                 INFO -- #1213239619 Features                             0          0          0          0          0          0          0          0          0          0          7          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1213239619 Events         20         20         0          0          0          0          0          0          0          0          0          0          7          7          -          -          7          
+TrigSignatureMoniMT                                 INFO -- #1213239619 Features                             0          0          0          0          0          0          0          0          0          0          7          7          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10_lcw_subjes_L1J100 #3327656707
 TrigSignatureMoniMT                                 INFO -- #3327656707 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3327656707 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
@@ -533,23 +542,23 @@ TrigSignatureMoniMT                                 INFO HLT_j460_a10r_L1J20 #38
 TrigSignatureMoniMT                                 INFO -- #3875082669 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3875082669 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_jes_ftf_35smcINF_L1J100 #3781128663
-TrigSignatureMoniMT                                 INFO -- #3781128663 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3781128663 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3781128663 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3781128663 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_jes_ftf_L1J100 #1509950051
-TrigSignatureMoniMT                                 INFO -- #1509950051 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1509950051 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1509950051 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1509950051 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_35smcINF_L1J100 #249842682
-TrigSignatureMoniMT                                 INFO -- #249842682 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #249842682 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #249842682 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #249842682 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_csskpf_nojcalib_ftf_L1J100 #3452032818
-TrigSignatureMoniMT                                 INFO -- #3452032818 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3452032818 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3452032818 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3452032818 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_lcw_nojcalib_L1J100 #3093997295
 TrigSignatureMoniMT                                 INFO -- #3093997295 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #3093997295 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10sd_pf_nojcalib_ftf_L1J100 #2138269254
-TrigSignatureMoniMT                                 INFO -- #2138269254 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2138269254 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2138269254 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2138269254 Features                             0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j460_a10t_lcw_jes_30smcINF_L1J100 #2296827117
 TrigSignatureMoniMT                                 INFO -- #2296827117 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2296827117 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
@@ -575,11 +584,11 @@ TrigSignatureMoniMT                                 INFO HLT_j85_L1J20 #51047553
 TrigSignatureMoniMT                                 INFO -- #510475538 Events          20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
 TrigSignatureMoniMT                                 INFO -- #510475538 Features                              0          0          0          0          0          0          0          0          0          0          3          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j85_ftf_L1J20 #877042532
-TrigSignatureMoniMT                                 INFO -- #877042532 Events          20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
-TrigSignatureMoniMT                                 INFO -- #877042532 Features                              0          0          0          0          0          0          0          0          0          0          3          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #877042532 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          3          -          -          3          
+TrigSignatureMoniMT                                 INFO -- #877042532 Features                              0          0          0          0          0          0          0          0          0          0          5          3          -          -          
 TrigSignatureMoniMT                                 INFO HLT_j85_pf_ftf_L1J20 #789444389
-TrigSignatureMoniMT                                 INFO -- #789444389 Events          20         20         0          0          0          0          0          0          0          0          0          0          2          -          -          -          2          
-TrigSignatureMoniMT                                 INFO -- #789444389 Features                              0          0          0          0          0          0          0          0          0          0          2          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #789444389 Events          20         20         0          0          0          0          0          0          0          0          0          0          5          2          -          -          2          
+TrigSignatureMoniMT                                 INFO -- #789444389 Features                              0          0          0          0          0          0          0          0          0          0          5          2          -          -          
 TrigSignatureMoniMT                                 INFO HLT_mb_sptrk_L1RD0_FILLED #4097312640
 TrigSignatureMoniMT                                 INFO -- #4097312640 Events         20         20         20         19         -          -          -          -          -          -          -          -          -          -          -          -          19         
 TrigSignatureMoniMT                                 INFO -- #4097312640 Features                             20         19         -          -          -          -          -          -          -          -          -          -          -          -          
@@ -1046,32 +1055,32 @@ TrigSignatureMoniMT                                 INFO HLT_unconvtrk120_isohpt
 TrigSignatureMoniMT                                 INFO -- #3425113791 Events         20         20         0          0          0          0          0          0          0          0          0          0          9          -          -          -          9          
 TrigSignatureMoniMT                                 INFO -- #3425113791 Features                             0          0          0          0          0          0          0          0          0          0          13         -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_cvfpufit_L1XE50 #2729083465
-TrigSignatureMoniMT                                 INFO -- #2729083465 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2729083465 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2729083465 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2729083465 Features                             0          0          0          0          0          0          0          0          0          0          20         0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_mht_L1XE50 #532175988
 TrigSignatureMoniMT                                 INFO -- #532175988 Events          20         20         0          0          0          0          0          0          0          0          0          0          1          -          -          -          1          
 TrigSignatureMoniMT                                 INFO -- #532175988 Features                              0          0          0          0          0          0          0          0          0          0          1          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_mhtpufit_em_subjesgscIS_L1XE50 #3054195458
-TrigSignatureMoniMT                                 INFO -- #3054195458 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #3054195458 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3054195458 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #3054195458 Features                             0          0          0          0          0          0          0          0          0          0          20         0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_mhtpufit_pf_subjesgscIS_L1XE50 #2614685150
-TrigSignatureMoniMT                                 INFO -- #2614685150 Events         20         20         0          0          0          0          0          0          0          0          0          0          1          -          -          -          1          
-TrigSignatureMoniMT                                 INFO -- #2614685150 Features                             0          0          0          0          0          0          0          0          0          0          1          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2614685150 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         1          -          -          1          
+TrigSignatureMoniMT                                 INFO -- #2614685150 Features                             0          0          0          0          0          0          0          0          0          0          20         1          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_pfopufit_L1XE50 #2909333517
-TrigSignatureMoniMT                                 INFO -- #2909333517 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #2909333517 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2909333517 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #2909333517 Features                             0          0          0          0          0          0          0          0          0          0          20         0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_pfsum_L1XE50 #1890237897
-TrigSignatureMoniMT                                 INFO -- #1890237897 Events         20         20         0          0          0          0          0          0          0          0          0          0          1          -          -          -          1          
-TrigSignatureMoniMT                                 INFO -- #1890237897 Features                             0          0          0          0          0          0          0          0          0          0          1          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1890237897 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         1          -          -          1          
+TrigSignatureMoniMT                                 INFO -- #1890237897 Features                             0          0          0          0          0          0          0          0          0          0          20         1          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_tcpufit_L1XE50 #2803198799
 TrigSignatureMoniMT                                 INFO -- #2803198799 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #2803198799 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_trkmht_L1XE50 #1055916731
-TrigSignatureMoniMT                                 INFO -- #1055916731 Events         20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #1055916731 Features                             0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1055916731 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #1055916731 Features                             0          0          0          0          0          0          0          0          0          0          20         0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50 #451622546
-TrigSignatureMoniMT                                 INFO -- #451622546 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #451622546 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #451622546 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #451622546 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe110_mht_L1XE50 #3030733259
 TrigSignatureMoniMT                                 INFO -- #3030733259 Events         20         20         0          0          0          0          0          0          0          0          0          0          1          -          -          -          1          
 TrigSignatureMoniMT                                 INFO -- #3030733259 Features                             0          0          0          0          0          0          0          0          0          0          1          -          -          -          
@@ -1088,29 +1097,29 @@ TrigSignatureMoniMT                                 INFO HLT_xe30_cell_xe30_tcpu
 TrigSignatureMoniMT                                 INFO -- #3768353779 Events         20         20         0          0          0          0          0          0          0          0          0          0          3          -          -          -          3          
 TrigSignatureMoniMT                                 INFO -- #3768353779 Features                             0          0          0          0          0          0          0          0          0          0          3          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_cvfpufit_L1XE10 #3860749499
-TrigSignatureMoniMT                                 INFO -- #3860749499 Events         20         20         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6          
-TrigSignatureMoniMT                                 INFO -- #3860749499 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #3860749499 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         6          -          -          6          
+TrigSignatureMoniMT                                 INFO -- #3860749499 Features                             0          0          0          0          0          0          0          0          0          0          20         6          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_mht_L1XE10 #3626903018
 TrigSignatureMoniMT                                 INFO -- #3626903018 Events         20         20         0          0          0          0          0          0          0          0          0          0          14         -          -          -          14         
 TrigSignatureMoniMT                                 INFO -- #3626903018 Features                             0          0          0          0          0          0          0          0          0          0          14         -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_mhtpufit_em_subjesgscIS_L1XE10 #689201557
-TrigSignatureMoniMT                                 INFO -- #689201557 Events          20         20         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7          
-TrigSignatureMoniMT                                 INFO -- #689201557 Features                              0          0          0          0          0          0          0          0          0          0          7          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #689201557 Events          20         20         0          0          0          0          0          0          0          0          0          0          20         5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #689201557 Features                              0          0          0          0          0          0          0          0          0          0          20         5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_mhtpufit_pf_subjesgscIS_L1XE10 #1886909707
-TrigSignatureMoniMT                                 INFO -- #1886909707 Events         20         20         0          0          0          0          0          0          0          0          0          0          5          -          -          -          5          
-TrigSignatureMoniMT                                 INFO -- #1886909707 Features                             0          0          0          0          0          0          0          0          0          0          5          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #1886909707 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         5          -          -          5          
+TrigSignatureMoniMT                                 INFO -- #1886909707 Features                             0          0          0          0          0          0          0          0          0          0          20         5          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_pfopufit_L1XE10 #2252641537
-TrigSignatureMoniMT                                 INFO -- #2252641537 Events         20         20         0          0          0          0          0          0          0          0          0          0          4          -          -          -          4          
-TrigSignatureMoniMT                                 INFO -- #2252641537 Features                             0          0          0          0          0          0          0          0          0          0          4          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2252641537 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         4          -          -          4          
+TrigSignatureMoniMT                                 INFO -- #2252641537 Features                             0          0          0          0          0          0          0          0          0          0          20         4          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_pfsum_L1XE10 #998713382
-TrigSignatureMoniMT                                 INFO -- #998713382 Events          20         20         0          0          0          0          0          0          0          0          0          0          7          -          -          -          7          
-TrigSignatureMoniMT                                 INFO -- #998713382 Features                              0          0          0          0          0          0          0          0          0          0          7          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #998713382 Events          20         20         0          0          0          0          0          0          0          0          0          0          20         7          -          -          7          
+TrigSignatureMoniMT                                 INFO -- #998713382 Features                              0          0          0          0          0          0          0          0          0          0          20         7          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_tcpufit_L1XE10 #1583719916
 TrigSignatureMoniMT                                 INFO -- #1583719916 Events         20         20         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6          
 TrigSignatureMoniMT                                 INFO -- #1583719916 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe30_trkmht_L1XE10 #2468872349
-TrigSignatureMoniMT                                 INFO -- #2468872349 Events         20         20         0          0          0          0          0          0          0          0          0          0          6          -          -          -          6          
-TrigSignatureMoniMT                                 INFO -- #2468872349 Features                             0          0          0          0          0          0          0          0          0          0          6          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #2468872349 Events         20         20         0          0          0          0          0          0          0          0          0          0          20         6          -          -          6          
+TrigSignatureMoniMT                                 INFO -- #2468872349 Features                             0          0          0          0          0          0          0          0          0          0          20         6          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe65_cell_L1XE50 #531141817
 TrigSignatureMoniMT                                 INFO -- #531141817 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #531141817 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
@@ -1127,5 +1136,5 @@ TrigSignatureMoniMT                                 INFO HLT_xe80_tcpufit_unconv
 TrigSignatureMoniMT                                 INFO -- #153760048 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
 TrigSignatureMoniMT                                 INFO -- #153760048 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
 TrigSignatureMoniMT                                 INFO HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50 #302256132
-TrigSignatureMoniMT                                 INFO -- #302256132 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          -          -          -          0          
-TrigSignatureMoniMT                                 INFO -- #302256132 Features                              0          0          0          0          0          0          0          0          0          0          0          -          -          -          
+TrigSignatureMoniMT                                 INFO -- #302256132 Events          20         20         0          0          0          0          0          0          0          0          0          0          0          0          -          -          0          
+TrigSignatureMoniMT                                 INFO -- #302256132 Features                              0          0          0          0          0          0          0          0          0          0          0          0          -          -          
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py
index 1243169090a2f42ab179437411a5017ae46c536b..e1d37d311f7fe293e090c0cf7117f6010605aec9 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/CaloSequenceSetup.py
@@ -4,6 +4,7 @@
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool, MenuSequence
 from AthenaCommon.CFElements import seqAND, parOR
 from TrigEDMConfig.TriggerEDMRun3 import recordable
+from .FullScanDefs import caloFSRoI
 
 class CaloMenuDefs(object):
       """Static Class to collect all string manipulations in Calo sequences """
@@ -48,7 +49,7 @@ def fastCaloMenuSequence(name, doRinger):
                          HypoToolGen = TrigEgammaFastCaloHypoToolFromDict )
 
 
-def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs="HLT_FSJETRoI", outputName="CaloCellsFS"):
+def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs=caloFSRoI, outputName="CaloCellsFS"):
     """ Produce the full scan cell collection """
     if not RoIs:
         from L1Decoder.L1DecoderConfig import mapThresholdToL1RoICollection
@@ -64,7 +65,7 @@ def cellRecoSequence(flags, name="HLTCaloCellMakerFS", RoIs="HLT_FSJETRoI", outp
     return parOR(name+"RecoSequence", [alg]), alg.CellsName
 
 def caloClusterRecoSequence(
-        flags, name="HLTCaloClusterMakerFS", RoIs="HLT_FSJETRoI",
+        flags, name="HLTCaloClusterMakerFS", RoIs=caloFSRoI,
         outputName="HLT_TopoCaloClustersFS"):
     """ Create the EM-level fullscan clusters """
     cell_sequence, cells_name = RecoFragmentsPool.retrieve(cellRecoSequence, flags=None, RoIs=RoIs)
@@ -78,7 +79,7 @@ def caloClusterRecoSequence(
     return parOR(name+"RecoSequence", [cell_sequence, alg]), alg.CaloClusters
 
 def LCCaloClusterRecoSequence(
-        flags, name="HLTCaloClusterCalibratorLCFS", RoIs="HLT_FSJETRoI",
+        flags, name="HLTCaloClusterCalibratorLCFS", RoIs=caloFSRoI,
         outputName="HLT_TopoCaloClustersLCFS"):
     """ Create the LC calibrated fullscan clusters
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/FullScanDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/FullScanDefs.py
new file mode 100644
index 0000000000000000000000000000000000000000..321d44889f9b6dc1848371210e696d3211b34959
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/CommonSequences/FullScanDefs.py
@@ -0,0 +1,8 @@
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+
+""" Provide a place for definitions required by all fullscan signatures """
+
+# RoI used for the full-scan calorimeter step
+caloFSRoI = "FSJETMETCaloRoI"
+# RoI used for the full-scan tracking step
+trkFSRoI = "FSJETMETTrkRoI"
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
index 5b54d52c4abb4062c21c7d99f5365ea531db1767..feef2d17126acd1e046da1dac8ed1ea10d20918c 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
@@ -2,10 +2,11 @@
 
 from AthenaCommon.Logging import logging
 logging.getLogger().info("Importing %s",__name__)
-log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Jet.JetDef")
+log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Jet.JetChainConfiguration")
 
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep, RecoFragmentsPool
+from .JetRecoConfiguration import jetRecoDictToString
 
 import copy
 
@@ -62,17 +63,22 @@ class JetChainConfiguration(ChainConfigurationBase):
         # --------------------
         # Only one step for now, but we might consider adding steps for
         # reclustering and trimming workflows
-
-        step1_jetCollectionName, step1= self.getJetChainStep()
-        steps=[step1]
-
         chainSteps = []
-        for step in steps:
-            chainSteps+=[step]
-         
-         
+        if self.recoDict["trkopt"]=="ftf":
+            if self.recoDict["trkpresel"]=="nopresel":
+                clustersKey, caloRecoStep = self.getJetCaloRecoChainStep()
+                chainSteps.append( caloRecoStep )
+            elif self.recoDict["trkpresel"]=="preselj45":
+                clustersKey, jetPreselStep = self.getJetCaloPreselChainStep()
+                chainSteps.append( jetPreselStep )
+            jetCollectionName, jetTrackingHypoStep = self.getJetTrackingHypoChainStep(clustersKey)
+            chainSteps.append( jetTrackingHypoStep )
+        else:
+            jetCollectionName, jetCaloHypoStep = self.getJetCaloHypoChainStep()
+            chainSteps.append( jetCaloHypoStep )
+
         if "JetDS" in self.chainName:
-           TLAStep = self.getJetTLAChainStep(step1_jetCollectionName)
+           TLAStep = self.getJetTLAChainStep(jetCollectionName)
            chainSteps+= [TLAStep]
         
         myChain = self.buildChain(chainSteps)
@@ -83,27 +89,93 @@ class JetChainConfiguration(ChainConfigurationBase):
     # --------------------
     # Configuration of steps
     # --------------------
-    def getJetChainStep(self):
-        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetMenuSequence
-        from TriggerMenuMT.HLTMenuConfig.Jet.JetRecoSequences import jetRecoDictToString
+    def getJetCaloHypoChainStep(self):
+        jetDefStr = jetRecoDictToString(self.recoDict)
+
+        stepName = "MainStep_jet_"+jetDefStr
+        from AthenaConfiguration.AllConfigFlags import ConfigFlags
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloHypoMenuSequence
+        jetSeq = RecoFragmentsPool.retrieve( jetCaloHypoMenuSequence, 
+                                             ConfigFlags, **self.recoDict )
+        jetCollectionName = jetSeq.hypo.Alg.Jets 
+
+        return jetCollectionName, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
 
+    def getJetTrackingHypoChainStep(self, clustersKey):
         jetDefStr = jetRecoDictToString(self.recoDict)
 
-        stepName = "Step1_jet_"+jetDefStr
+        stepName = "MainStep_jet_"+jetDefStr
         from AthenaConfiguration.AllConfigFlags import ConfigFlags
-        jetSeq1 = RecoFragmentsPool.retrieve( jetMenuSequence, ConfigFlags, **self.recoDict ) # the None will be used for flags in future
-        step1_jetCollectionName = jetSeq1.hypo.Alg.Jets 
-        chainStep1 = ChainStep(stepName, [jetSeq1], multiplicity=[1], chainDicts=[self.dict])
-        
-        return step1_jetCollectionName, chainStep1
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetTrackingHypoMenuSequence
+        jetSeq = RecoFragmentsPool.retrieve( jetTrackingHypoMenuSequence,
+                                             ConfigFlags, clustersKey=clustersKey, **self.recoDict )
+        jetCollectionName = jetSeq.hypo.Alg.Jets 
+
+        return jetCollectionName, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
+
+    def getJetCaloRecoChainStep(self):
+        stepName = "CaloRecoPTStep_jet_"+self.recoDict["calib"]
+        from AthenaConfiguration.AllConfigFlags import ConfigFlags
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloRecoMenuSequence
+        jetSeq, clustersKey = RecoFragmentsPool.retrieve( jetCaloRecoMenuSequence,
+                                                          ConfigFlags, clusterCalib=self.recoDict["calib"] )
+
+        return clustersKey, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
+
+    def getJetCaloPreselChainStep(self):
+        # Define a fixed preselection dictionary for prototyping -- we may expand the options
+        preselRecoDict = {
+            'recoAlg':'a4',
+            'dataType':'tc',
+            'calib':'em',
+            'jetCalib':'subjesIS',
+            'trkopt':'notrk',
+            'trkpresel': 'nopresel'
+        }
+        preselJetParts = dict(preselRecoDict)
+        preselJetParts.update(
+            {'L1threshold': 'NOL1SEED',
+             'TLA': '',
+             'addInfo': [],
+             'bConfig': [],
+             'bMatching': [],
+             'bTag': '',
+             'bTracking': '',
+             'chainPartName': 'j45',
+             'cleaning': 'noCleaning',
+             'dataScouting': '',
+             'etaRange': '0eta320',
+             'extra': '',
+             'hypoScenario': 'simple',
+             'jvt': '',
+             'momCuts': '',
+             'multiplicity': '1',
+             'scan': 'FS',
+             'signature': 'Jet',
+             'smc': 'nosmc',
+             'threshold': '20',
+             'topo': [],
+             'trigType': 'j'}
+        )
+        preselChainDict = dict(self.dict)
+        preselChainDict['chainParts'] = [preselJetParts]
+
+        jetDefStr = jetRecoDictToString(preselRecoDict)
+
+        stepName = "PreselStep_jet_"+jetDefStr
+        from AthenaConfiguration.AllConfigFlags import ConfigFlags
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloPreselMenuSequence
+        jetSeq, clustersKey = RecoFragmentsPool.retrieve( jetCaloPreselMenuSequence,
+                                                          ConfigFlags, **preselRecoDict )
+
+        return clustersKey, ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[preselChainDict])
 
     def getJetTLAChainStep(self, jetCollectionName):
-        #maybe not needed
-        from TriggerMenuMT.HLTMenuConfig.Jet.JetTLAConfiguration import jetTLAMenuSequence
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetTLASequences import jetTLAMenuSequence
 
-        stepName = "Step2_jetTLA_"+jetCollectionName
-        jetSeq2 = RecoFragmentsPool.retrieve( jetTLAMenuSequence, jetCollectionName ) # the None will be used for flags in future
-        chainStep2 = ChainStep(stepName, [jetSeq2], multiplicity=[1], chainDicts=[self.dict])
+        stepName = "TLAStep_"+jetCollectionName
+        jetSeq = RecoFragmentsPool.retrieve( jetTLAMenuSequence, jetCollectionName )
+        chainStep = ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
 
-        return chainStep2
+        return chainStep
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py
index ec486493dcbb9a4fe254ce0d72109a9fd430bc45..2215c5846f49b01355baaab8d62a042f0d70e9f9 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetMenuSequences.py
@@ -1,25 +1,157 @@
-#  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RecoFragmentsPool, MenuSequence
-from TriggerMenuMT.HLTMenuConfig.Jet.JetRecoSequences import jetAthSequence, jetRecoDictToString
-    
-def jetCFSequence(configFlags,**recoDict):
-    """ Function to create the jet Menu Sequence"""
-    
-    #reco sequence
-    (JetAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetAthSequence,configFlags,**recoDict)
-    return (JetAthSequence, InputMakerAlg, sequenceOut) 
-
-def jetMenuSequence(configFlags,**recoDict):
-    (JetAthSequence, InputMakerAlg, sequenceOut)= jetCFSequence(configFlags,**recoDict)    
+from AthenaCommon.CFElements import seqAND
+from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable
+from .JetRecoConfiguration import jetRecoDictToString
+from AthenaConfiguration.ComponentFactory import CompFactory
+from ..CommonSequences.FullScanDefs import caloFSRoI, trkFSRoI
+
+# For step 1, starting from the basic calo reco and topoclustering
+# Used for calo-only chains and preselection for tracking
+def getInitialInputMaker():
+    from TrigT2CaloCommon.CaloDef import clusterFSInputMaker
+    InputMakerAlg = conf2toConfigurable(clusterFSInputMaker())
+    return InputMakerAlg
+
+# For later steps, where calo reco should not be run
+# The same instance of an algorithm cannot be run in different steps
+# Used for chains that use tracking
+def getTrackingInputMaker():
+    InputMakerAlg = conf2toConfigurable(CompFactory.InputMakerForRoI( "IM_Jet_TrackingStep" ))
+    InputMakerAlg.RoITool = conf2toConfigurable(CompFactory.ViewCreatorInitialROITool())
+    InputMakerAlg.RoIs = trkFSRoI
+    return InputMakerAlg
+
+
+###############################################################################################
+# Complete sequences that set up or specify the inputs to jet finding
+
+# This sets up the reconstruction starting from topoclusters.
+# No tracking is permitted.
+def jetCaloRecoSequences( configFlags, RoIs, **jetRecoDict ):
+    if jetRecoDict["trkopt"] != "notrk":
+        raise ValueError("Calorimeter jet reco called with a tracking option!")
+
+    # Get the topocluster reconstruction sequence
+    from .JetRecoSequences import jetClusterSequence, jetRecoSequence
+    topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve(
+        jetClusterSequence, configFlags, RoIs=RoIs, clusterCalib=jetRecoDict["calib"])
+
+    # Get the jet reconstruction sequence including the jet definition and output collection
+    jetRecoSeq, jetsOut, jetDef  = RecoFragmentsPool.retrieve(
+        jetRecoSequence, configFlags, clustersKey=clustersKey, **jetRecoDict )
+
+    return [topoClusterSequence,jetRecoSeq], jetsOut, clustersKey
+
+# This sets up the reconstruction where tracks are required.
+# Topoclustering will not be scheduled, we just pass in the name of the cluster collection.
+def jetTrackingRecoSequences(configFlags, RoIs, clustersKey, **jetRecoDict):
+    if jetRecoDict["trkopt"] == "notrk":
+        raise ValueError("Jet reco with tracks called without a tracking option!")
+
+    # Get the track reconstruction sequence
+    from .JetTrackingConfig import JetTrackingSequence
+    (jetTrkSeq, trkcolls) = RecoFragmentsPool.retrieve(
+        JetTrackingSequence, configFlags, trkopt=jetRecoDict["trkopt"], RoIs=RoIs)
+
+    # Get the jet reconstruction sequence including the jet definition and output collection
+    # Pass in the cluster and track collection names
+    from .JetRecoSequences import jetRecoSequence
+    jetRecoSeq, jetsOut, jetDef  = RecoFragmentsPool.retrieve(
+        jetRecoSequence,
+        configFlags, clustersKey=clustersKey, **trkcolls, **jetRecoDict )
+
+    return [jetTrkSeq,jetRecoSeq], jetsOut
+
+###############################################################################################
+# Functions defining the MenuSequence that will be placed into ChainSteps
+
+# Generate a menu sequence given a set of jet sequences to schedule.
+# The hypo may be set up as a preselection hypo, in which case it will
+# record a single DecisionObject, instead of one per jet.
+# A hypo may alternatively be configured to passThrough, such that
+# the hypo will not retrieve any jets and simply pass.
+
+from enum import Enum
+class JetHypoAlgType(Enum):
+    STANDARD = 0
+    PRESEL = 1
+    PASSTHROUGH = 2
+
+def makeMenuSequence(jetSeq,IMAlg,jetsIn,jetDefString,hypoType=JetHypoAlgType.STANDARD):
+
     #hypo
-    from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetHypoAlgMT
     from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict
-    hypo = TrigJetHypoAlgMT("TrigJetHypoAlgMT_"+jetRecoDictToString(recoDict))
-    hypo.Jets = sequenceOut
+    def trigStreamerHypoTool(chain_dict):
+        return conf2toConfigurable(CompFactory.TrigStreamerHypoToolMT(chain_dict["chainName"]))
 
-    return  MenuSequence(   Sequence    = JetAthSequence,
-                            Maker       = InputMakerAlg,
+    hyponame = "TrigJetHypoAlgMT_"+jetDefString
+    trigHypoToolGen = trigJetHypoToolFromDict
+    if hypoType==JetHypoAlgType.PASSTHROUGH:
+        hyponame = "TrigStreamerHypoAlgMT_caloReco"
+        hypo = conf2toConfigurable(CompFactory.TrigStreamerHypoAlgMT(hyponame,SetInitialRoIAsFeature=True))
+        trigHypoToolGen = trigStreamerHypoTool
+    elif hypoType==JetHypoAlgType.PRESEL:
+        hyponame += "_presel"
+        hypo = conf2toConfigurable(CompFactory.TrigJetHypoAlgMT(hyponame, Jets=jetsIn, DoPresel=True))
+    else:
+        hypo = conf2toConfigurable(CompFactory.TrigJetHypoAlgMT(hyponame, Jets=jetsIn))
+
+    return  MenuSequence(   Sequence    = jetSeq,
+                            Maker       = IMAlg,
                             Hypo        = hypo,
-                            HypoToolGen = trigJetHypoToolFromDict )
+                            HypoToolGen = trigHypoToolGen )
+
+# For the preselection step before running tracking (step 1)
+def jetCaloPreselMenuSequence(configFlags, **jetRecoDict):
+    InputMakerAlg = getInitialInputMaker()
+    jetSequences, jetsIn, clustersKey = RecoFragmentsPool.retrieve(
+        jetCaloRecoSequences,
+        configFlags, RoIs=caloFSRoI, **jetRecoDict)
+
+    jetDefString = jetRecoDictToString(jetRecoDict)
+    jetAthSeq = seqAND("jetSeqCaloPresel_"+jetDefString,[InputMakerAlg]+jetSequences)
+
+    return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,jetDefString,
+                            hypoType=JetHypoAlgType.PRESEL), clustersKey
+
+# A null preselection, which will only run the cluster making (step 1)
+def jetCaloRecoMenuSequence(configFlags, clusterCalib):
+    InputMakerAlg = getInitialInputMaker()
+    jetsIn = ""
+    from .JetRecoSequences import jetClusterSequence
+    topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve(
+        jetClusterSequence, configFlags, RoIs=caloFSRoI, clusterCalib=clusterCalib)
+
+    jetAthSeq = seqAND("jetSeqCaloRecoPassThrough_"+clusterCalib,[InputMakerAlg,topoClusterSequence])
+
+    return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,"caloreco",
+                            hypoType=JetHypoAlgType.PASSTHROUGH), clustersKey
+
+# A full hypo selecting only on calo jets (step 1)
+def jetCaloHypoMenuSequence(configFlags, **jetRecoDict):
+    InputMakerAlg = getInitialInputMaker()
+    jetSequences, jetsIn, clustersKey = RecoFragmentsPool.retrieve(
+        jetCaloRecoSequences,
+        configFlags, RoIs=caloFSRoI, **jetRecoDict)
+    jetDefString = jetRecoDictToString(jetRecoDict)
+    jetAthSeq = seqAND("jetSeqCaloHypo_"+jetDefString,[InputMakerAlg]+jetSequences)
+
+    return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,jetDefString)
+
+# A full hypo selecting on jets with track reco (step 2)
+# To combine either with a presel or a passthrough sequence
+# As this does not run topoclustering, the cluster collection
+# name needs to be passed in
+def jetTrackingHypoMenuSequence(configFlags, clustersKey, **jetRecoDict):
+    InputMakerAlg = getTrackingInputMaker()
+    jetSequences, jetsIn = RecoFragmentsPool.retrieve(
+        jetTrackingRecoSequences,
+        configFlags, RoIs=trkFSRoI, clustersKey=clustersKey, **jetRecoDict)
+
+    jetDefString = jetRecoDictToString(jetRecoDict)
+    jetAthSeq = seqAND("jetSeqTrkHypo_"+jetDefString,[InputMakerAlg]+jetSequences)
+
+    return makeMenuSequence(jetAthSeq,InputMakerAlg,jetsIn,jetDefString)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py
index 7adb1f6efa51c3908339e4fb862788cad68aef58..1d6109a0dcc4485c00877e343afc7ef59f49f0bc 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoConfiguration.py
@@ -19,11 +19,12 @@ def interpretJetCalibDefault(recoDict):
     elif recoDict['dataType'].endswith('pf'):
       return 'subresjesgscIS'
 
+recoKeys = ['recoAlg','dataType','calib','jetCalib','trkopt','trkpresel']
+
 # Extract the jet reco dict from the chainDict
 def extractRecoDict(chainParts):
     # interpret the reco configuration only
     # eventually should just be a subdict in the chainDict
-    recoKeys = ['recoAlg','dataType','calib','jetCalib','trkopt','cleaning']
     recoDict = {}
     for p in chainParts:
         for k in recoKeys:
@@ -43,6 +44,40 @@ def extractRecoDict(chainParts):
 
     return recoDict
 
+# Translate the reco dict to a string for suffixing etc
+def jetRecoDictToString(jetRecoDict):
+    strtemp = "{recoAlg}_{dataType}_{calib}_{jetCalib}"
+    if jetRecoDict["trkopt"] != "notrk":
+        strtemp += "_{trkopt}_{trkpresel}"
+    return strtemp.format(**jetRecoDict)
+
+# Inverse of the above, essentially only for CF tests
+def jetRecoDictFromString(jet_def_string):
+
+    # Translate the definition string into an approximation
+    # of the "recoParts" in the jet chainParts.
+    jetRecoDict = {}
+    # Insert values from string
+    # Python names are more descriptive. May want to sync
+    # these names with the SignatureDict, needs coordination with
+    # menu group when they start to implement this
+    trkopt = "notrk"
+    trkpresel = "nopresel"
+    if "_ftf" in jet_def_string:
+        jetalg, inputtype, clusterscale, jetcalib, trkopt = jet_def_string.split('_')
+    else:
+        jetalg, inputtype, clusterscale, jetcalib = jet_def_string.split('_')
+
+    jetRecoDict = {
+        "recoAlg":   jetalg,
+        "dataType":  inputtype,
+        "calib":     clusterscale,
+        "jetCalib":  jetcalib,
+        "trkopt" :   trkopt,
+        "trkpresel": trkpresel
+    }
+    return jetRecoDict
+
 # Define the jet constituents to be interpreted by JetRecConfig
 # When actually specifying the reco, clustersKey should be
 # set, but default to None to allow certain checks, in particular
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
index 9189cd93342c2a3d9e5a3ae02cd04302bba7a2d6..9f8e18736c812458a36a66dac278b66e69c6a5b0 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetRecoSequences.py
@@ -2,41 +2,55 @@
 #  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
-from AthenaCommon.CFElements import parOR, seqAND
+from AthenaCommon.CFElements import parOR
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import RecoFragmentsPool
 from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable
-from TriggerMenuMT.HLTMenuConfig.Jet import JetRecoConfiguration
 from JetRecConfig.JetRecConfig import getConstitPJGAlg, getJetAlgorithm
 from JetRecConfig import JetInputConfig
 from JetRecConfig import JetRecConfig
 
 from TrigEDMConfig.TriggerEDMRun3 import recordable
 
-# Translate the reco dict to a string for suffixing etc
-def jetRecoDictToString(jetRecoDict):
-    strtemp = "{recoAlg}_{dataType}_{calib}_{jetCalib}"
-    if jetRecoDict["trkopt"] != "notrk":
-        strtemp += "_{trkopt}"
-    return strtemp.format(**jetRecoDict)
+from . import JetRecoConfiguration
+from .JetRecoConfiguration import jetRecoDictToString
 
-# Configure reco from a dict of options
-# Start from a FullScan inputs maker
-def jetAthSequence(configFlags, **jetRecoDict):
-    from TrigT2CaloCommon.CaloDef import clusterFSInputMaker
-    InputMakerAlg= conf2toConfigurable(clusterFSInputMaker())
+###############################################################################################
+# Sequences for input information
 
-    (recoSequence, sequenceOut, jetDef) = RecoFragmentsPool.retrieve( jetRecoSequence, configFlags, **jetRecoDict )
+# Calo cell unpacking and topocluster reconstruction
+def jetClusterSequence(configFlags, RoIs, clusterCalib):
+
+    # Start by adding the topocluster reco sequence
+    from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
+            caloClusterRecoSequence, LCCaloClusterRecoSequence)
+    if clusterCalib == "em":
+        topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve(
+                caloClusterRecoSequence, flags=None, RoIs=RoIs)
+    elif clusterCalib == "lcw":
+        topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve(
+                LCCaloClusterRecoSequence, flags=None, RoIs=RoIs)
+    else:
+        raise ValueError("Invalid value for calib: '{}'".format(clusterCalib))
+
+    return topoClusterSequence, clustersKey
 
-    jetDefString = jetRecoDictToString(jetRecoDict)
-    JetAthSequence =  seqAND("jetAthSequence_"+jetDefString,[InputMakerAlg, recoSequence ])
-    return (JetAthSequence, InputMakerAlg, sequenceOut)
 
+###############################################################################################
+# Sequences that set up the concrete jet finding job
 jetNamePrefix = "HLT_"
 
-# Dummy flag arg needed so that each reco sequence is held separately
-# in the RecoFragmentsPool -- only the kwargs are used to distinguish
-# different sequences. New convention is just to pass "None" for flags
-def jetRecoSequence( configFlags, RoIs = 'HLT_FSJETRoI', **jetRecoDict ):
+# Need to do this hacky extraction to get around the inability
+# to hash dicts as input to RecoFragmentsPool.retrieve
+from .JetTrackingConfig import trkcollskeys
+def getTrkColls(jetRecoDict):
+    trkcolls = {key:jetRecoDict[key] for key in trkcollskeys}
+    return trkcolls
+
+# The top-level sequence, forwards arguments as appropriate to 
+# standard jet reco, grooming or reclustering sequences
+# If tracking is required, then the trkcolls dict (returned by the
+# JetTrackingSequence) must also be passed as kwargs
+def jetRecoSequence( configFlags, clustersKey, **jetRecoDict ):
 
     jetalg, jetradius, extra = JetRecoConfiguration.interpretRecoAlg(jetRecoDict["recoAlg"])
     doGrooming = extra in ["t","sd"]
@@ -44,55 +58,44 @@ def jetRecoSequence( configFlags, RoIs = 'HLT_FSJETRoI', **jetRecoDict ):
     dataSource = "mc" if configFlags.Input.isMC else "data"
 
     if doRecluster:
-        return RecoFragmentsPool.retrieve( reclusteredJetRecoSequence, configFlags, dataSource=dataSource, RoIs=RoIs, **jetRecoDict)
+        return RecoFragmentsPool.retrieve(
+            reclusteredJetRecoSequence, 
+            configFlags, dataSource=dataSource,
+            clustersKey=clustersKey, **jetRecoDict)
     elif doGrooming:
-        return RecoFragmentsPool.retrieve( groomedJetRecoSequence, configFlags, dataSource=dataSource, RoIs=RoIs, **jetRecoDict)
+        return RecoFragmentsPool.retrieve(
+            groomedJetRecoSequence,
+            configFlags, dataSource=dataSource,
+            clustersKey=clustersKey, **jetRecoDict)
     else:
-        return RecoFragmentsPool.retrieve( standardJetRecoSequence, configFlags, dataSource=dataSource, RoIs=RoIs, **jetRecoDict)
+        return RecoFragmentsPool.retrieve(
+            standardJetRecoSequence,
+            configFlags, dataSource=dataSource,
+            clustersKey=clustersKey, **jetRecoDict)
 
 # Normal jet reconstruction, no reclustering or grooming
-def standardJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
+def standardJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ):
     jetDefString = jetRecoDictToString(jetRecoDict)
     recoSeq = parOR( "JetRecSeq_"+jetDefString, [])
+    trkcolls = getTrkColls(jetRecoDict) if jetRecoDict["trkopt"]!="notrk" else {}
 
-    # Start by adding the topocluster reco sequence
-    from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
-            caloClusterRecoSequence, LCCaloClusterRecoSequence)
-    if jetRecoDict["calib"] == "em":
-        topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve(
-                caloClusterRecoSequence, flags=None, RoIs=RoIs)
-    elif jetRecoDict["calib"] == "lcw":
-        topoClusterSequence, clustersKey = RecoFragmentsPool.retrieve(
-                LCCaloClusterRecoSequence, flags=None, RoIs=RoIs)
-    else:
-        raise ValueError("Invalid value for calib: '{}'".format(jetRecoDict["calib"]))
-    recoSeq += topoClusterSequence
-
-    # Set up tracking sequence -- may need to reorganise or relocate
-    # depending on how we want to handle HLT preselection
-    trkcolls = None
-    if jetRecoDict["trkopt"] != "notrk":
-        from .JetTrackingConfig import JetTrackingSequence
-        (jettrkseq, trkcolls) = RecoFragmentsPool.retrieve( JetTrackingSequence, configFlags, trkopt=jetRecoDict["trkopt"], RoIs=RoIs)
-        recoSeq += jettrkseq
-
-    # Potentially add particle flow reconstruction
-    # Work in progress
+    # Add particle flow reconstruction if needed
     if "pf" in jetRecoDict["dataType"]:
-        if jetRecoDict["trkopt"] == "notrk":
+        if not trkcolls:
             raise RuntimeError("PFlow jet chain requested with no tracking option!")
         from eflowRec.PFHLTSequence import PFHLTSequence
-        (pfseq, pfoPrefix) = RecoFragmentsPool.retrieve(PFHLTSequence, configFlags, clustersin=clustersKey, tracktype=jetRecoDict["trkopt"])
+        (pfseq, pfoPrefix) = RecoFragmentsPool.retrieve(
+            PFHLTSequence,
+            configFlags, clustersin=clustersKey, tracktype=jetRecoDict["trkopt"])
         recoSeq += pfseq
         jetDef = JetRecoConfiguration.defineJets(jetRecoDict,pfoPrefix=pfoPrefix, prefix=jetNamePrefix)
     else:
         jetDef = JetRecoConfiguration.defineJets(jetRecoDict,clustersKey=clustersKey, prefix=jetNamePrefix)
 
-    doConstitMods = jetRecoDict["dataType"] in ["sktc","cssktc", "pf", "csskpf"]
-
+    # chosen jet collection
     jetsFullName = jetDef.fullname()
-    sequenceOut = recordable(jetsFullName)
-
+    jetsOut = recordable(jetsFullName)
+    doConstitMods = jetRecoDict["dataType"] in ["sktc","cssktc", "pf", "csskpf"]
     JetRecConfig.instantiateAliases(jetDef)
     if doConstitMods:
         # Get online monitoring jet rec tool
@@ -115,7 +118,7 @@ def standardJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
         pjs.append(trkcolls["GhostTracks"])
 
     jetModList = []
-    if jetRecoDict["trkopt"] != "notrk":
+    if trkcolls:
         trkMods = JetRecoConfiguration.defineTrackMods(jetRecoDict["trkopt"])
         jetModList += trkMods
 
@@ -151,25 +154,29 @@ def standardJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
     # (via a JetRecTool instance).
     jetRecAlg = JetRecConfig.getJetAlgorithm(jetsFullName, jetDef, pjs, monTool)
     recoSeq += conf2toConfigurable( jetRecAlg )
+
     # End of basic jet reco
-    return recoSeq, sequenceOut, jetDef
+    return recoSeq, jetsOut, jetDef
 
 # Grooming needs the ungroomed jets to be built first,
 # so call the basic jet reco seq, then add a grooming alg
-def groomedJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
+def groomedJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ):
     jetDefString = jetRecoDictToString(jetRecoDict)
     recoSeq = parOR( "JetGroomSeq_"+jetDefString, [])
+
     ungroomedJetRecoDict = dict(jetRecoDict)
     ungroomedJetRecoDict["recoAlg"] = ungroomedJetRecoDict["recoAlg"].rstrip("tsd") # Drop grooming spec
     ungroomedJetRecoDict["jetCalib"] = "nojcalib" # No need to calibrate
 
-    (ungroomedJetRecoSequence,ungroomedJetsName, ungroomedDef) = RecoFragmentsPool.retrieve(standardJetRecoSequence,configFlags,dataSource=dataSource,RoIs=RoIs,**ungroomedJetRecoDict)
+    (ungroomedJetRecoSequence,ungroomedJetsName, ungroomedDef) = RecoFragmentsPool.retrieve(
+        standardJetRecoSequence,
+        configFlags, dataSource=dataSource, clustersKey=clustersKey,
+        **ungroomedJetRecoDict)
     recoSeq += conf2toConfigurable( ungroomedJetRecoSequence )
     # Need to forward the pseudojets of the parents to the groomer
     parentpjs = getattr(ungroomedJetRecoSequence,"jetalg_{}".format(ungroomedJetsName)).Tools[0].InputPseudoJets
 
-    
-    groomDef = JetRecoConfiguration.defineGroomedJets(jetRecoDict,ungroomedDef)#,ungroomedJetsName)
+    groomDef = JetRecoConfiguration.defineGroomedJets(jetRecoDict,ungroomedDef)
     groomedJetsFullName = groomDef.fullname()+"_"+jetRecoDict["jetCalib"]
     if jetRecoDict["trkopt"]!="notrk":
         groomedJetsFullName += "_"+jetRecoDict["trkopt"]
@@ -186,19 +193,23 @@ def groomedJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
     groomalg = getJetGroomAlg(groomedJetsFullName,groomDef,parentpjs,monTool)
     recoSeq += conf2toConfigurable( groomalg )
 
-    sequenceOut = recordable(groomedJetsFullName)    
-    return recoSeq, sequenceOut, groomDef
+    jetsOut = recordable(groomedJetsFullName)
+    jetDef = groomDef
+    return recoSeq, jetsOut, jetDef
 
 
 # Reclustering -- call the basic jet reco and add this to the sequence,
 # then add another jet algorithm to run the reclustering step
-def reclusteredJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
+def reclusteredJetRecoSequence( configFlags, dataSource, clustersKey, **jetRecoDict ):
     jetDefString = jetRecoDictToString(jetRecoDict)
     recoSeq = parOR( "JetReclusterSeq_"+jetDefString, [])
 
     basicJetRecoDict = dict(jetRecoDict)
     basicJetRecoDict["recoAlg"] = "a4" # Standard size for reclustered
-    (basicJetRecoSequence,basicJetsName, basicJetDef) = RecoFragmentsPool.retrieve(standardJetRecoSequence,configFlags,dataSource=dataSource,RoIs=RoIs,**basicJetRecoDict)
+    (basicJetRecoSequence,basicJetsName, basicJetDef) = RecoFragmentsPool.retrieve(
+        standardJetRecoSequence,
+        configFlags, dataSource=dataSource, clustersKey=clustersKey,
+        **basicJetRecoDict)
     recoSeq += basicJetRecoSequence
 
     rcJetPtMin = 15e3 # 15 GeV minimum pt for jets to be reclustered
@@ -227,6 +238,6 @@ def reclusteredJetRecoSequence( configFlags, dataSource, RoIs, **jetRecoDict ):
 
     recoSeq += conf2toConfigurable( rcJetRecAlg )
 
-    sequenceOut = recordable(rcJetsFullName)
+    jetsOut = recordable(rcJetsFullName)
     jetDef = rcJetDef
-    return recoSeq, sequenceOut, jetDef
+    return recoSeq, jetsOut, jetDef
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLAConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLASequences.py
similarity index 72%
rename from Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLAConfiguration.py
rename to Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLASequences.py
index fe25509c75d54d1d0439acb81aedbb7504618aad..8ecf1caf2f8b66acb0f5992cac5b4a00b8622cb8 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLAConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTLASequences.py
@@ -7,42 +7,41 @@ from AthenaCommon.CFElements import parOR, seqAND
 from GaudiKernel.Constants import WARNING
 
 #this can eventually become a TLA/PEB sequence, but let's start with TLA only
-def jetTLASequence(jetDefString):
+def jetTLASequence(jetsin):
         
     #make a new reco sequence, empty at this point now
-    recoSeq = parOR("JetTLASeq_"+jetDefString, [])
+    recoSeq = parOR("JetTLASeq_"+jetsin, [])
 
     #import the TLA algorithm that selects jets and makes a new collection to pass to [what used to be the ScoutingStreamWriter]
     from TrigHLTJetRec import TrigHLTJetTLASelector
     
-    tempInputCollection = jetDefString
-    sequenceOut=jetDefString+"_TLA"
-    TLAAlg=TrigHLTJetTLASelector.getConfiguredTLASelector(inputJetsKey=tempInputCollection, outputJetsKey=sequenceOut, outputLevel=WARNING)
+    sequenceOut=jetsin+"_TLA"
+    TLAAlg=TrigHLTJetTLASelector.getConfiguredTLASelector(inputJetsKey=jetsin, outputJetsKey=sequenceOut, outputLevel=WARNING)
     recoSeq+=TLAAlg
 
     return (recoSeq, sequenceOut)
 
 #Configure an AthSequence for jet TLA - will eventually also include PEB
-def jetTLAAthSequence(jetDefString):
+def jetTLAAthSequence(jetsin):
     from AthenaConfiguration.ComponentFactory import CompFactory
     
-    InputMakerAlg = CompFactory.InputMakerForRoI( "IM_TLAJet_step2" )
+    InputMakerAlg = CompFactory.InputMakerForRoI( "IM_Jet_TLAStep" )
     InputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool()
     InputMakerAlg.mergeUsingFeature = True
     
-    (JetTLASequence, sequenceOut) = RecoFragmentsPool.retrieve( jetTLASequence, jetDefString )
-    JetTLAAthSequence =  seqAND("jetTLAAthSequence_"+jetDefString,[InputMakerAlg, JetTLASequence ])
+    (JetTLASequence, sequenceOut) = RecoFragmentsPool.retrieve( jetTLASequence, jetsin )
+    JetTLAAthSequence =  seqAND("jetTLAAthSequence_"+jetsin,[InputMakerAlg, JetTLASequence ])
 
     return (JetTLAAthSequence, InputMakerAlg, sequenceOut)
 
-def jetTLAMenuSequence(jetDefString):
+def jetTLAMenuSequence(jetsin):
 
     from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetTLAHypoAlgMT
     from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetTLAHypoToolFromDict
     
-    (JetTLAAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetTLAAthSequence,jetDefString)
+    (JetTLAAthSequence, InputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(jetTLAAthSequence,jetsin)
     
-    hypo = TrigJetTLAHypoAlgMT("TrigJetTLAHypoAlgMT_"+jetDefString)
+    hypo = TrigJetTLAHypoAlgMT("TrigJetTLAHypoAlgMT_"+jetsin)
     hypo.Jets = sequenceOut 
 
     return  MenuSequence( Sequence    = JetTLAAthSequence,
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py
index 9ee6e53d6ef4bc5ef192e5aebe181402348ee2b4..60b249ecd7cd5cb2856c292ca692d5c7ca1fa24a 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetTrackingConfig.py
@@ -9,6 +9,8 @@ from JetRecTools.JetRecToolsConfig import getTrackSelTool, getTrackVertexAssocTo
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaConfiguration.ComponentAccumulator import conf2toConfigurable
 
+trkcollskeys = ["Tracks", "Vertices", "TVA", "GhostTracks", "GhostTracksLabel", "JetTracks"]
+
 def JetTrackingSequence(dummyFlags,trkopt,RoIs):
     jetTrkSeq = parOR( "JetTrackingSeq_"+trkopt, [])
     tracksname = ""
@@ -19,7 +21,7 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs):
 
     if trkopt=="ftf":
         from TrigInDetConfig.InDetSetup import makeInDetAlgsNoView
-        viewAlgs = makeInDetAlgsNoView( config = IDTrigConfig, rois=recordable(RoIs))
+        viewAlgs = makeInDetAlgsNoView( config = IDTrigConfig, rois=RoIs)
         jetTrkSeq += viewAlgs
         tracksname =  IDTrigConfig.FT.tracksFTF( doRecord = IDTrigConfig.isRecordable ) 
         verticesname = recordable("HLT_IDVertex_FS")
@@ -30,10 +32,14 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs):
     jetTrkSeq += prmVtx
 
     tvaname = "JetTrackVtxAssoc_"+trkopt
+    label = "GhostTrack_{}".format(trkopt)
+    ghosttracksname = "PseudoJet{}".format(label)
     trkcolls = {
         "Tracks":           tracksname,
         "Vertices":         verticesname,
         "TVA":              tvaname,
+        "GhostTracks" :     ghosttracksname,
+        "GhostTracksLabel": label,
     }
 
     from JetRecTools.JetRecToolsConfig import trackcollectionmap
@@ -46,18 +52,11 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs):
     jettvassoc = getTrackVertexAssocTool(trkopt)
 
     trackcollectionmap[trkopt]["JetTracks"] = jettracksname
-    trackcollectionmap[trkopt]["TVA"] = tvaname
 
     jettrkprepalg = CompFactory.JetAlgorithm("jetalg_TrackPrep")
     jettrkprepalg.Tools = [ jettrackselloose, jettvassoc ]
     jetTrkSeq += conf2toConfigurable( jettrkprepalg )
 
-    label = "GhostTrack_{}".format(trkopt)
-    ghosttracksname = "PseudoJet{}".format(label)
-
-    trackcollectionmap[trkopt]["GhostTracks"] = ghosttracksname
-    trackcollectionmap[trkopt]["GhostTracksLabel"] = label
-
     pjgalg = CompFactory.PseudoJetAlgorithm(
         "pjgalg_"+label,
         InputContainer=tracksname,
@@ -67,4 +66,4 @@ def JetTrackingSequence(dummyFlags,trkopt,RoIs):
         )
     jetTrkSeq += conf2toConfigurable( pjgalg )
 
-    return jetTrkSeq, trkcolls
+    return jetTrkSeq, trackcollectionmap[trkopt]
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
index 87f6f0587975394a6b92c814524aa5347dfdb15e..e84e9cf305a4fdd4c50150b37ce2beb9240ffc4f 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/generateJet.py
@@ -5,16 +5,17 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 import pprint
 from AthenaCommon.Logging import logging
+from ..CommonSequences.FullScanDefs import caloFSRoI
 log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Jet.generateJet' )
 
 def HLTCaloCellMakerCfg( cellsname, cdaSvc ):
     result = ComponentAccumulator()
     verifier = CompFactory.AthViews.ViewDataVerifier( name = 'VDVFSCaloJet',
-                                                    DataObjects = [('TrigRoiDescriptorCollection', 'StoreGateSvc+HLT_FSJETRoI'),
+                                                    DataObjects = [('TrigRoiDescriptorCollection', f"StoreGateSvc+{caloFSRoI}"),
                                                                   ('CaloBCIDAverage', 'StoreGateSvc+CaloBCIDAverage') ])
     result.addEventAlgo( verifier )
     cellmaker = CompFactory.HLTCaloCellMaker("HLTCaloCellMaker_FS")
-    cellmaker.RoIs = "HLT_FSJETRoI"
+    cellmaker.RoIs = caloFSRoI
     cellmaker.TrigDataAccessMT = cdaSvc
     cellmaker.CellsName = cellsname
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py
index 91b456ed7964e603e47594ae71b630e7ae542d5e..042a5f7c7dbc0172784048108b00e35ea27b5ce1 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgConfigs.py
@@ -2,13 +2,21 @@
 #  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 
-from .ConfigHelpers import AlgConfig, jetRecoDictForMET
-from ..Menu.MenuComponents import RecoFragmentsPool
+from .ConfigHelpers import AlgConfig
 from ..Menu.SignatureDicts import METChainParts
 import GaudiKernel.SystemOfUnits as Units
 import TrigEFMissingET.PUClassification as PUClassification
+from TrigEFMissingET.TrigEFMissingETConf import (
+    HLT__MET__CellFex,
+    HLT__MET__TCFex,
+    HLT__MET__TCPufitFex,
+    HLT__MET__MHTFex,
+    HLT__MET__TrkMHTFex,
+    HLT__MET__PFSumFex,
+    HLT__MET__MHTPufitFex,
+    HLT__MET__PUSplitPufitFex,
+)
 
-from AthenaConfiguration.AllConfigFlags import ConfigFlags
 
 from AthenaCommon.Logging import logging
 
@@ -41,18 +49,10 @@ class CellConfig(AlgConfig):
         return "cell"
 
     def __init__(self, **recoDict):
-        super(CellConfig, self).__init__(**recoDict)
-        from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
-            cellRecoSequence,
-        )
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__CellFex
-
-        cellMakerSeq, cellName = RecoFragmentsPool.retrieve(
-            cellRecoSequence, flags=None, RoIs=self.inputMaker.RoIs
-        )
+        super(CellConfig, self).__init__(inputs=["Cells"], **recoDict)
 
-        self.inputs = [cellMakerSeq]
-        self.fexAlg = self._make_fex_alg(HLT__MET__CellFex, CellName=cellName)
+    def make_fex(self, name, inputs):
+        return HLT__MET__CellFex(name, CellName=inputs["Cells"])
 
 
 class TCConfig(AlgConfig):
@@ -61,25 +61,10 @@ class TCConfig(AlgConfig):
         return "tc"
 
     def __init__(self, calib, **recoDict):
-        super(TCConfig, self).__init__(calib=calib, **recoDict)
-        from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
-            caloClusterRecoSequence,
-            LCCaloClusterRecoSequence,
-        )
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__TCFex
+        super(TCConfig, self).__init__(inputs=["Clusters"], calib=calib, **recoDict)
 
-        RoIs = self.inputMaker.RoIs
-        if calib == "em":
-            tcSeq, clusterName = RecoFragmentsPool.retrieve(
-                caloClusterRecoSequence, flags=None, RoIs=RoIs
-            )
-        elif calib == "lcw":
-            tcSeq, clusterName = RecoFragmentsPool.retrieve(
-                LCCaloClusterRecoSequence, flag=None, RoIs=RoIs
-            )
-
-        self.inputs = [tcSeq]
-        self.fexAlg = self._make_fex_alg(HLT__MET__TCFex, ClusterName=clusterName)
+    def make_fex(self, name, inputs):
+        return HLT__MET__TCFex(name, ClusterName=inputs["Clusters"])
 
 
 class TCPufitConfig(AlgConfig):
@@ -88,25 +73,12 @@ class TCPufitConfig(AlgConfig):
         return "tcpufit"
 
     def __init__(self, calib, **recoDict):
-        super(TCPufitConfig, self).__init__(calib=calib, **recoDict)
-        from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
-            caloClusterRecoSequence,
-            LCCaloClusterRecoSequence,
+        super(TCPufitConfig, self).__init__(
+            inputs=["Clusters"], calib=calib, **recoDict
         )
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__TCPufitFex
-
-        RoIs = self.inputMaker.RoIs
-        if calib == "em":
-            tcSeq, clusterName = RecoFragmentsPool.retrieve(
-                caloClusterRecoSequence, flags=None, RoIs=RoIs
-            )
-        elif calib == "lcw":
-            tcSeq, clusterName = RecoFragmentsPool.retrieve(
-                LCCaloClusterRecoSequence, flags=None, RoIs=RoIs
-            )
 
-        self.inputs = [tcSeq]
-        self.fexAlg = self._make_fex_alg(HLT__MET__TCPufitFex, ClusterName=clusterName)
+    def make_fex(self, name, inputs):
+        return HLT__MET__TCPufitFex(name, ClusterName=inputs["Clusters"])
 
 
 class MHTConfig(AlgConfig):
@@ -115,61 +87,41 @@ class MHTConfig(AlgConfig):
         return "mht"
 
     def __init__(self, **recoDict):
-        super(MHTConfig, self).__init__(**recoDict)
-        from ..Jet.JetRecoSequences import jetRecoSequence
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__MHTFex
-
-        jetRecoDict = jetRecoDictForMET(**recoDict)
-        # TODO - right now jet calibration is hardcoded to EM
-        jetRecoDict["calib"] = "em"
-        jetRecoDict["jetCalib"] = "subjes"
-        jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve(
-            jetRecoSequence, ConfigFlags, **jetRecoDict
-        )
+        super(MHTConfig, self).__init__(inputs=["Jets"], **recoDict)
 
-        self.inputs = [jetSeq]
-        self.fexAlg = self._make_fex_alg(HLT__MET__MHTFex, JetName=jetName)
+    def make_fex(self, name, inputs):
+        return HLT__MET__MHTFex(name, JetName=inputs["Jets"])
 
 
+# NB: TrkMHT isn't ready to run with PF jets yet - for that we need to add an
+# option for cPFOs
 class TrkMHTConfig(AlgConfig):
     @classmethod
     def algType(cls):
         return "trkmht"
 
     def __init__(self, **recoDict):
-        super(TrkMHTConfig, self).__init__(**recoDict)
-        from ..Jet.JetRecoSequences import jetRecoSequence
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__TrkMHTFex
-
-        jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict)
-        # TODO - right now jet calibration is hardcoded to EM
-        jetRecoDict["calib"] = "em"
-        
-        jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve(
-            jetRecoSequence, ConfigFlags, **jetRecoDict
+        super(TrkMHTConfig, self).__init__(
+            inputs=["Jets", "Tracks", "Vertices", "TVA", "GhostTracksLabel"],
+            forceTracks=True,
+            **recoDict
         )
 
-        # These are the names set by the upstream algorithms. Unfortunately
-        # these aren't passed to us - we just have to 'know' them
-        tracks = "HLT_IDTrack_FS_FTF"
-        vertices = "HLT_IDVertex_FS"
-        tva = "JetTrackVtxAssoc_{trkopt}".format(**jetRecoDict)
-        track_links = "GhostTrack_{trkopt}".format(**jetRecoDict)
-
-        self.inputs = [jetSeq]
-        self.fexAlg = self._make_fex_alg(
-            HLT__MET__TrkMHTFex,
-            JetName=jetName,
-            TrackName=tracks,
-            VertexName=vertices,
-            TVAName=tva,
-            TrackLinkName=track_links,
+    def make_fex(self, name, inputs):
+        fex = HLT__MET__TrkMHTFex(
+            name,
+            JetName=inputs["Jets"],
+            TrackName=inputs["Tracks"],
+            VertexName=inputs["Vertices"],
+            TVAName=inputs["TVA"],
+            TrackLinkName=inputs["GhostTracksLabel"],
         )
-        self.fexAlg.TrackSelTool.CutLevel = "Loose"
-        self.fexAlg.TrackSelTool.maxZ0SinTheta = 1.5
-        self.fexAlg.TrackSelTool.maxD0overSigmaD0 = 3
-        self.fexAlg.TrackSelTool.minPt = 1 * Units.GeV
-        
+        fex.TrackSelTool.CutLevel = "Loose"
+        fex.TrackSelTool.maxZ0SinTheta = 1.5
+        fex.TrackSelTool.maxD0overSigmaD0 = 3
+        fex.TrackSelTool.minPt = 1 * Units.GeV
+        return fex
+
 
 class PFSumConfig(AlgConfig):
     @classmethod
@@ -177,18 +129,11 @@ class PFSumConfig(AlgConfig):
         return "pfsum"
 
     def __init__(self, **recoDict):
-        super(PFSumConfig, self).__init__(**recoDict)
-
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__PFSumFex
-        from .METRecoSequences import pfoRecoSequence
+        super(PFSumConfig, self).__init__(inputs=["cPFOs", "nPFOs"], **recoDict)
 
-        self.inputs, pfoPrefix = RecoFragmentsPool.retrieve(
-            pfoRecoSequence, flags=None, RoIs=self.inputMaker.RoIs
-        )
-        self.fexAlg = self._make_fex_alg(
-            HLT__MET__PFSumFex,
-            NeutralPFOName=pfoPrefix + "CHSNeutralParticleFlowObjects",
-            ChargedPFOName=pfoPrefix + "CHSChargedParticleFlowObjects",
+    def make_fex(self, name, inputs):
+        return HLT__MET__PFSumFex(
+            name, NeutralPFOName=inputs["nPFOs"], ChargedPFOName=inputs["cPFOs"],
         )
 
 
@@ -198,34 +143,15 @@ class PFOPufitConfig(AlgConfig):
         return "pfopufit"
 
     def __init__(self, **recoDict):
-        super(PFOPufitConfig, self).__init__(**recoDict)
-
-        from TrigEFMissingET.TrigEFMissingETConf import (
-            HLT__MET__PUSplitPufitFex,
-            HLT__MET__PFOPrepAlg,
+        super(PFOPufitConfig, self).__init__(
+            inputs=["MergedPFOs", "PFOPUCategory"], **recoDict
         )
-        from .METRecoSequences import pfoRecoSequence
 
-        pfoInputs, pfoPrefix = RecoFragmentsPool.retrieve(
-            pfoRecoSequence, flags=None, RoIs=self.inputMaker.RoIs
-        )
-        # NB for this, we might be slightly misusing the 'flags' parameter in
-        # the reco fragments pool. Here, we let it just pass the name parameter
-        # through to the underlying alg config class parameter
-        prepAlg = RecoFragmentsPool.retrieve(
-            HLT__MET__PFOPrepAlg,
-            "{}PFOPufitPrepAlg".format(pfoPrefix),
-            InputNeutralKey="{}CHSNeutralParticleFlowObjects".format(pfoPrefix),
-            InputChargedKey="{}CHSChargedParticleFlowObjects".format(pfoPrefix),
-            OutputKey="{}METTrigCombinedParticleFlowObjects".format(pfoPrefix),
-            OutputCategoryKey="PUClassification",
-        )
-        self.inputs = pfoInputs + [prepAlg]
-        # TODO - make the neutral threshold mode settable in the chain name?
-        self.fexAlg = self._make_fex_alg(
-            HLT__MET__PUSplitPufitFex,
-            InputName=prepAlg.OutputKey,
-            InputCategoryName=prepAlg.OutputCategoryKey,
+    def make_fex(self, name, inputs):
+        return HLT__MET__PUSplitPufitFex(
+            name,
+            InputName=inputs["MergedPFOs"],
+            InputCategoryName=inputs["PFOPUCategory"],
             NeutralThresholdMode=PUClassification.NeutralForward,
         )
 
@@ -236,32 +162,15 @@ class CVFPufitConfig(AlgConfig):
         return "cvfpufit"
 
     def __init__(self, **recoDict):
-        super(CVFPufitConfig, self).__init__(**recoDict)
-        from .METRecoSequences import cvfClusterSequence
-        from TrigEFMissingET.TrigEFMissingETConf import (
-            HLT__MET__CVFPrepAlg,
-            HLT__MET__PUSplitPufitFex,
+        super(CVFPufitConfig, self).__init__(
+            inputs=["Clusters", "CVFPUCategory"], **recoDict
         )
 
-        RoIs = self.inputMaker.RoIs
-        calib = recoDict["calib"]
-        inputs, clusterName, cvfName = RecoFragmentsPool.retrieve(
-            cvfClusterSequence, flags=None, RoIs=RoIs, **recoDict
-        )
-
-        prepAlg = RecoFragmentsPool.retrieve(
-            HLT__MET__CVFPrepAlg,
-            "{}ClusterCVFPrepAlg".format(calib),
-            InputClusterKey=clusterName,
-            InputCVFKey=cvfName,
-            OutputCategoryKey="PUClassification",
-        )
-
-        self.inputs = inputs + [prepAlg]
-        self.fexAlg = self._make_fex_alg(
-            HLT__MET__PUSplitPufitFex,
-            InputName=clusterName,
-            InputCategoryName=prepAlg.OutputCategoryKey,
+    def make_fex(self, name, inputs):
+        return HLT__MET__PUSplitPufitFex(
+            name,
+            InputName=inputs["Clusters"],
+            InputCategoryName=inputs["CVFPUCategory"],
             NeutralThresholdMode=PUClassification.All,
         )
 
@@ -272,60 +181,35 @@ class MHTPufitConfig(AlgConfig):
         return "mhtpufit"
 
     def __init__(self, **recoDict):
-        super(MHTPufitConfig, self).__init__(**recoDict)
-        from ..Jet.JetRecoSequences import jetRecoSequence
-        from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
-            caloClusterRecoSequence,
-        )
-        from TrigEFMissingET.TrigEFMissingETConf import HLT__MET__MHTPufitFex
-
-        jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict)
-        # If this is PFlow then set the calib type to "em"
-        if recoDict["jetDataType"] == "pf":
-            jetRecoDict["calib"] = "em"
-        jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve(
-            jetRecoSequence, flags=ConfigFlags, **jetRecoDict
+        inputs = ["Jets", "JetDef"]
+        if "pf" in recoDict["jetDataType"]:
+            inputs += ["MergedPFOs"]
+        else:
+            inputs += ["Clusters"]
+        super(MHTPufitConfig, self).__init__(
+            inputs=inputs, forceTracks=True, **recoDict
         )
 
-        # We need to get the input name that the jet sequence used
-        _, clusterName = RecoFragmentsPool.retrieve(
-            caloClusterRecoSequence, flags=None, RoIs=self.inputMaker.RoIs
-        )
-        if jetRecoDict["dataType"] == "pf":
-            from eflowRec.PFHLTSequence import PFHLTSequence
-
-            _, pfoPrefix = RecoFragmentsPool.retrieve(
-                PFHLTSequence,
-                flags=None,
-                clustersin=clusterName,
-                tracktype=jetRecoDict["trkopt"],
-            )
-            #jetDef = defineJets(jetRecoDict, pfoPrefix=pfoPrefix)
-        elif jetRecoDict["dataType"] == "tc":
-            pass
-        #jetDef = defineJets(jetRecoDict, clustersKey=clusterName)
-        else:
-            raise ValueError(
-                "Unexpected jetDataType {}".format(jetRecoDict["dataType"])
-            )
-        inputName = jetDef.inputdef.containername
-        calibHasAreaSub = "sub" in jetRecoDict["jetCalib"]
+    def make_fex(self, name, inputs):
+        calibHasAreaSub = "sub" in self.recoDict
         if calibHasAreaSub:
             from JetRecConfig.JetRecConfig import instantiateAliases
             from JetRecConfig.JetInputConfig import buildEventShapeAlg
-            instantiateAliases(jetDef)
-            evtShapeAlg = buildEventShapeAlg( jetDef,  "HLT_" )
-            
+
+            instantiateAliases(inputs["JetDef"])
+            evtShapeAlg = buildEventShapeAlg(inputs["JetDef"], "HLT_")
+
             rhoKey = evtShapeAlg.EventDensityTool.OutputContainer
         else:
             rhoKey = ""
-
-        self.inputs = [jetSeq]
-        self.fexAlg = self._make_fex_alg(
-            HLT__MET__MHTPufitFex,
-            InputJetsName=jetName,
+        if "pf" in self.recoDict["jetDataType"]:
+            inputName = inputs["MergedPFOs"]
+        else:
+            inputName = inputs["Clusters"]
+        return HLT__MET__MHTPufitFex(
+            name,
+            InputJetsName=inputs["Jets"],
             InputName=inputName,
             JetCalibIncludesAreaSub=calibHasAreaSub,
             JetEventShapeName=rhoKey,
         )
-
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgInputConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgInputConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..56482c0ec8c2fe846bb5f6c5a18b61559c29e4a0
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/AlgInputConfig.py
@@ -0,0 +1,201 @@
+#
+#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+#
+
+""" Helpers for creating input reco sequences
+
+Classes:
+    AlgInputConfig - base class for individual input configs
+    InputConfigRegistry - class to gather input configurations together
+
+Together, these classes implement a rudimentary dependency resolution method.
+The main unit in this are the inputs being created. These are referred to by
+nicknames rather than the container names directly as these can vary depending
+on the reconstruction parameters provided.
+
+This file just provides the underlying mechanisms. For the concrete example see
+METRecoSequences, which will be referenced in the following explanation.
+
+Each config declares the inputs it will produce and on what inputs it depends.
+The dependencies are allowed to be different for different reco configurations
+but for simplicity's sake the inputs produced are always the same. For example
+the jet input config in METRecoSequences produces ["Jets", "JetDef"] and its
+dependencies are ["Clusters"] if no tracks are needed and ["Clusters", "Tracks"
+"Vertices"] otherwise.
+
+Each config also has a create_sequence method which builds the actual reco
+sequence. This method returns a two-tuple. The first element is the reco
+sequence which makes the inputs, the second is a dictionary mapping the produced
+input's nicknames to their values. These values are usually storegate keys but
+can be any object. For example, the jet input config (with the correct reco
+configuration) would produce
+{
+    "Jets" : "HLT_AntiKt4EMTopoJets_subjesIS",
+    "JetDef" : jetdef
+}
+for this mapping, where jetdef is a python object produced by the jet reco
+sequence.
+
+The dependency resolution is done by the InputConfigRegistry class. This
+maintains a list of known input configs where no two can claim to produce the
+same input. The main one used here is the default_inputs object created in
+METRecoSequences. The 'build_steps' method is then used to create the necessary
+sequences in the correct order, split into their steps and also to collate and 
+return the mapping of input nicknames to values.
+"""
+
+from abc import ABC, abstractmethod
+from collections import defaultdict
+
+
+class AlgInputConfig(ABC):
+    """ Base class for building up inputs for the FEXes """
+
+    def __init__(self, produces, step=None):
+        """ Initialise the class
+
+        =========
+        Arguments
+        =========
+        produces: The nicknames of the inputs this config produces
+        step: The step in which the input sequences should run
+
+        step can be None, in which case it will be calculated as the maximum
+        of all the steps of the input's dependencies. This means that an input
+        with no dependencies must have its step set explicitly
+        """
+        self._produces = produces
+        self._step = step
+
+    @property
+    def step(self):
+        """ The reconstruction step this input runs in """
+        return self._step
+
+    @property
+    def produces(self):
+        """ Which (nicknamed) inputs does this config produce """
+        return self._produces
+
+    @abstractmethod
+    def dependencies(self, recoDict):
+        """ Given the reco parameters, which inputs does this config depend on """
+        pass
+
+    @abstractmethod
+    def create_sequence(self, inputs, RoIs, recoDict):
+        """ Create the sequence and return it along with a dictionary of the objects that it produces """
+        pass
+
+
+class InputConfigRegistry:
+    def __init__(self):
+        self._configs = {}
+
+    def add_input(self, config):
+        overlap = [x for x in config.produces if x in self._configs]
+        if overlap:
+            raise ValueError(
+                f"Attempting to add an input config that produces {overlap} but these are already present"
+            )
+        for x in config.produces:
+            self._configs[x] = config
+
+    def build_steps(self, requested, RoIs, recoDict):
+        """ Build the necessary input sequence, separated by steps
+
+        =========
+        Arguments
+        =========
+        requested: The nicknames of the requested inputs
+        RoIs: The input RoIs, one must be provided for each step
+        recoDict: The recoDict extracted from the chain
+
+        =======
+        Returns
+        =======
+        (steps, inputs)
+        where steps is a list of input sequences, one for each step and inputs
+        is a dictionary mapping input nickname to storegate key
+        """
+        # The input sequences, keyed by step
+        steps = defaultdict(list)
+        # The mapping of input nickname to storegate key
+        inputs = {}
+        # Internal mapping of input nickname to step
+        input_steps = {}
+        for name in requested:
+            this_steps = self._create_input(
+                name, RoIs, recoDict, input_steps=input_steps, inputs=inputs
+            )
+            for step, seq_list in this_steps.items():
+                steps[step] += seq_list
+        # Now convert the steps into a list
+        steps = [steps[idx] for idx in range(max(steps.keys()) + 1)]
+        return steps, inputs
+
+    def _create_input(self, name, RoIs, recoDict, input_steps, inputs, _seen=None):
+        """ Create an input and its dependencies 
+        
+        =========
+        Arguments
+        =========
+        name: The name of the input to create
+        RoIs: The input RoIs, one for each step
+        recoDict: The recoDict extracted from the chain
+        input_steps: Mapping of encountered inputs to the steps they happen in
+        inputs: The names of any inputs already created
+        _seen: internal parameter for catching circular dependencies
+
+        =======
+        Returns
+        =======
+        steps
+        where steps is a list of input sequences, one for each step
+        The provided input_steps and inputs parameters are also updated with
+        the new inputs that have been produced
+        """
+        if _seen is None:
+            _seen = []
+        elif name in _seen:
+            raise RuntimeError(
+                "Circular dependency: {}".format(" -> ".join(_seen + [name]))
+            )
+        if name in input_steps:
+            # We've already seen this step so return dummies
+            return {}
+        steps = defaultdict(list)
+
+        try:
+            config = self._configs[name]
+        except KeyError:
+            raise KeyError(f"Requested input {name} not defined")
+        # If config.step is None, use this to record the max step among
+        # config's dependencies
+        step = config.step if config.step is not None else -1
+        for dep_name in config.dependencies(recoDict):
+            dep_steps = self._create_input(
+                dep_name, RoIs, recoDict, input_steps, inputs, _seen + [name]
+            )
+            dep_step = input_steps[dep_name]
+            if config.step is not None and dep_step > config.step:
+                raise ValueError(
+                    f"Dependency {dep_name} is in a later step '{dep_step}' than {name} which requires it (step = {config.step})"
+                )
+            else:
+                step = max(step, dep_step)
+            # Add these reco sequences to our output lists
+            for step, seq_list in dep_steps.items():
+                steps[step] += seq_list
+        # Finally, add *our* info
+        if step < 0:
+            raise ValueError(f"Unable to work out step for input config {name}!")
+        if step > len(RoIs):
+            raise ValueError(f"Step {step} is greater than the number of RoIs ({RoIs})")
+        sequences, this_inputs = config.create_sequence(inputs, RoIs[step], recoDict)
+        steps[step] += sequences
+        inputs.update(this_inputs)
+        # Add this to the list of things we've already seen, along with everything else it's made
+        for made in this_inputs.keys():
+            input_steps[made] = step
+        return steps
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py
index 418791db019e1d8206f12af9089ce8b25aa263e8..683dbad2d431c8af3c0201246c2b866f4b9c9a74 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/ConfigHelpers.py
@@ -4,26 +4,21 @@
 """
 
 from AthenaCommon.CFElements import seqAND
-from ..Menu.SignatureDicts import METChainParts_Default, JetChainParts_Default
-from ..Menu.MenuComponents import RecoFragmentsPool
+from ..Menu.SignatureDicts import METChainParts_Default
+from ..Menu.MenuComponents import RecoFragmentsPool, ChainStep, MenuSequence
 from copy import copy
-import six
+from ..CommonSequences.FullScanDefs import caloFSRoI, trkFSRoI
+from AthenaCommon.Logging import logging
+from TrigEFMissingET.TrigEFMissingETMTConfig import getMETMonTool
+from abc import ABC, abstractmethod
+from string import ascii_uppercase
+
+log = logging.getLogger(__name__)
 
 # The keys from the MET chain dict that directly affect reconstruction
 # The order here is important as it also controls the dict -> string conversion
 recoKeys = ["EFrecoAlg", "calib", "jetDataType", "jetCalib", "addInfo"]
-
-def extractMETRecoDict(chainDict, fillDefaults=True):
-    """ Extract the keys relevant to reconstruction from a provided dictionary
-
-    If fillDefaults is True then any missing keys will be taken from the
-    METChainParts_Default dictionary.
-    """
-    if fillDefaults:
-        return {k: chainDict.get(k, METChainParts_Default[k])
-                for k in recoKeys}
-    else:
-        return {k: chainDict[k] for k in recoKeys if k in chainDict}
+metFSRoIs = [caloFSRoI, trkFSRoI]
 
 def metRecoDictToString(recoDict, skipDefaults=True):
     """ Convert a dictionary containing reconstruction keys to a string
@@ -33,39 +28,23 @@ def metRecoDictToString(recoDict, skipDefaults=True):
     also be skipped.
     """
     return "_".join(
-            recoDict[k] for k in recoKeys if 
-            k in recoDict and 
-            (not skipDefaults or recoDict[k] != METChainParts_Default[k]) )
+        recoDict[k]
+        for k in recoKeys
+        if k in recoDict
+        and (not skipDefaults or recoDict[k] != METChainParts_Default[k])
+    )
 
-def jetRecoDictForMET(**recoDict):
-    """ Get a jet reco dict that's usable for the MET slice """
-    keys = ["recoAlg", "dataType", "calib", "jetCalib", "trkopt", "cleaning"]
-    jrd = {k: recoDict.get(k, JetChainParts_Default[k]) for k in keys}
-    if "jetDataType" in recoDict:
-        # Allow for the renaming dataType -> jetDataType
-        jrd["dataType"] = recoDict["jetDataType"]
-    from TriggerMenuMT.HLTMenuConfig.Jet import JetRecoConfiguration
-    if jrd["jetCalib"] == "default":
-        jrd["jetCalib"] = JetRecoConfiguration.interpretJetCalibDefault(jrd)
-    return jrd
 
-
-
-class AlgConfig(object):
+class AlgConfig(ABC):
     """ Base class to describe algorithm configurations
 
     Each individual 'EFrecoAlg' should be described by *one* AlgConfig subclass.
-    That subclass must set two data members from its __init__ method:
-
-    - self.inputs should be a *list* of all sequences required to make inputs
-      for the algorithm that calculates the MET value
-    - self.fexAlg should the FEX that calculates the MET value
-
-    Alternatively the recoSequence property can be overwritten to not require
-    these.
+    It must provide its list of required inputs to the constructor and override
+    the make_fex method
 
     The name of fexAlg *must* be self.fexName and the METContainerKey property
-    *must* be set to self.outputKey
+    *must* be set to self.outputKey (but this class usually should take care of
+    this).
 
     The subclass must also implement the @classmethod 'algType' which returns
     the EFrecoAlg string that it describes.
@@ -81,116 +60,162 @@ class AlgConfig(object):
         """
         raise NotImplementedError("algType not implemented by subclass!")
 
-    def __init__(self, **recoDict):
+    def __init__(self, inputs=[], inputRegistry=None, **recoDict):
+        """ Initialise the base class
+
+        =========
+        Arguments
+        =========
+        inputs: The nicknames of the inputs that this FEX uses
+        inputRegistry:
+            The InputConfigRegistry instance to use. Usually this can be left
+            as None and then METRecoSequences.default_inputs will be used.
+            However, this parameter is provided in case a FEX requires a vastly
+            different set of input objects
+        recoDict: Pass *all* the keys required for the recoDict
+        """
+                   
         # Make sure that we got *all* the keys (i.e. the subclass didn't
         # inadvertently steal one of them from us)
-        assert set(recoKeys) == set(six.iterkeys(recoDict) ), (
-                "AlgConfig.__init__ did not receive all the recoKeys - this "
-                "suggests a problem in the subclass __init__ method!")
+        alg_type = self.algType()
+        assert all(k in recoDict for k in recoKeys), (
+            f"AlgConfig.__init__ for {alg_type} did not receive all the recoKeys"
+            " - this suggests a problem in the subclass __init__ method!"
+        )
         self.recoDict = copy(recoDict)
         self._suffix = metRecoDictToString(recoDict)
+        if inputRegistry is None:
+            from .METRecoSequences import default_inputs
+
+            inputRegistry = default_inputs
+        self._registry = inputRegistry
+        self._inputs = inputs
+
+    @abstractmethod
+    def make_fex(self, name, inputs):
+        """ Create the fex from its name and the inputs dict """
+        pass
+
+    @property
+    def inputRegistry(self):
+        """ The InputConfigRegistry object used to build the input sequences """
+        return self._registry
 
     @property
     def outputKey(self):
         """ The MET container object produced by this algorithm """
         from TrigEDMConfig.TriggerEDMRun3 import recordable
-        return recordable("HLT_MET_{}".format(self._suffix) )
+
+        return recordable("HLT_MET_{}".format(self._suffix))
 
     @property
     def fexName(self):
         """ The name of the algorithm made by this configuration """
         return "EFMET_{}".format(self._suffix)
 
-    @property
-    def hypoAlg(self):
+    def getMonTool(self):
+        """ Create the monitoring tool """
+        return getMETMonTool()
+
+    def athSequences(self):
+        """ Get the reco sequences (split by step) """
+        if hasattr(self, "_athSequences"):
+            return self._athSequences
+
+        inputMakers = self.inputMakers()
+        # Retrieve the inputss
+        log.verbose(f"Create inputs for {self._suffix}")
+        steps, inputs = self.inputRegistry.build_steps(
+            self._inputs, metFSRoIs, self.recoDict
+        )
+        fex = self.make_fex(self.fexName, inputs)
+        fex.MonTool = self.getMonTool()
+        fex.METContainerKey = self.outputKey
+        sequences = []
+
+        for idx, algList in enumerate(steps):
+            # Put the input makers at the start
+            algList.insert(0, inputMakers[idx])
+            if idx == len(steps) - 1:
+                algList += [fex]
+            sequences.append(seqAND(f"METAthSeq_step{idx}_{self._suffix}", algList))
+        self._athSequences = sequences
+        return self._athSequences
+
+    def menuSequences(self):
+        """ Get the menu sequences (split by step) """
+        if hasattr(self, "_menuSequences"):
+            return self._menuSequences
+
+        from TrigMissingETHypo.TrigMissingETHypoConfigMT import (
+            TrigMETCellHypoToolFromDict,
+        )
+        from TrigStreamerHypo.TrigStreamerHypoConfigMT import (
+            StreamerHypoToolMTgenerator,
+        )
+
+        sequences = []
+        inputMakers = self.inputMakers()
+        ath_sequences = self.athSequences()
+        for idx, seq in enumerate(ath_sequences):
+            if idx == len(ath_sequences) - 1:
+                hypo = self.make_hypo_alg()
+                hypo_tool = TrigMETCellHypoToolFromDict
+            else:
+                hypo = self.make_passthrough_hypo_alg(idx)
+                hypo_tool = StreamerHypoToolMTgenerator
+            sequences.append(
+                MenuSequence(
+                    Sequence=seq,
+                    Maker=inputMakers[idx],
+                    Hypo=hypo,
+                    HypoToolGen=hypo_tool,
+                )
+            )
+        self._menuSequences = sequences
+        return self._menuSequences
+
+    def make_steps(self, chainDict):
+        """ Create the actual chain steps """
+        # NB - we index the steps using uppercase letters 'A', 'B', etc
+        # This technically means that there is an upper limit of 26 on the
+        # number of different steps that can be provided this way, but it seems
+        # unlikely that we'll actually run into this limit. If we do, it
+        # shouldn't be a problem to change it
+        return [
+            ChainStep(
+                f"step{ascii_uppercase[idx]}_{self._suffix}",
+                [seq],
+                multiplicity=[1],
+                chainDicts=[chainDict],
+            )
+            for idx, seq in enumerate(self.menuSequences())
+        ]
+
+    def make_hypo_alg(self):
         """ The hypo alg used for this configuration """
-        if hasattr(self, "_hypoAlg"):
-            return self._hypoAlg
 
         from TrigMissingETHypo.TrigMissingETHypoConf import TrigMissingETHypoAlgMT
-        self._hypoAlg = TrigMissingETHypoAlgMT(
-                name = "METHypoAlg_{}".format(self._suffix),
-                METContainerKey = self.outputKey)
-        return self._hypoAlg
 
-    @property
-    def menuSequence(self):
-        """ The menu sequence for this configuration """
-        if hasattr(self, "_menuSequence"):
-            return self._menuSequence
-        
-        from ..Menu.MenuComponents import MenuSequence
-        from TrigMissingETHypo.TrigMissingETHypoConfigMT import TrigMETCellHypoToolFromDict
-        self._menuSequence = MenuSequence(
-                Sequence    = self.athSequence,
-                Maker       = self.inputMaker,
-                Hypo        = self.hypoAlg,
-                # TODO - this shouldn't be called 'cell' something
-                HypoToolGen = TrigMETCellHypoToolFromDict)
-        return self._menuSequence
-    @property
-    def inputMaker(self):
-        """ The input maker for this configuration """
-        if hasattr(self, "_inputMaker"):
-            return self._inputMaker
-        from TrigT2CaloCommon.CaloDef import clusterFSInputMaker
-        self._inputMaker = clusterFSInputMaker()
-        return self._inputMaker
+        return TrigMissingETHypoAlgMT(
+            name="METHypoAlg_{}".format(self._suffix), METContainerKey=self.outputKey
+        )
 
-    @property
-    def athSequence(self):
-        """ Create the 'ath' sequence
-        
-        The return value is cached so only one instance is ever created
-        """
-        if hasattr(self, "_athSequence"):
-            return self._athSequence
-        self._athSequence = seqAND("METAthSeq_{}".format(self._suffix),
-                                   [self.inputMaker, self.recoSequence])
-        return self._athSequence
+    def make_passthrough_hypo_alg(self, step):
+        from TrigStreamerHypo.TrigStreamerHypoConf import TrigStreamerHypoAlgMT
 
-    @property
-    def recoSequence(self):
-        """ Create the full reco sequence
-        
-        The return value is cached so only one instance is ever created
-        """
-        if hasattr(self, "_recoSequence"):
-            # Cache the result so we only ever create this once
-            return self._recoSequence
-        # First, verify that everything was done right
-        assert self.fexAlg.name() == self.fexName, (
-            "Incorrect algorithm name '{}' set (should be '{}')".format(
-                self.fexAlg.name(), self.fexName) )
-        assert self.fexAlg.METContainerKey == self.outputKey, (
-            "Incorrect output key '{}' set (should be '{}')".format(
-                self.fexAlg.METContainerKey, self.outputKey) )
-
-        self._recoSequence = seqAND("METRecoSeq_{}".format(self._suffix),
-                     self.inputs + [self.fexAlg])
-        return self._recoSequence
-
-    def _make_fex_alg(self, alg_cls, name=None, METContainerKey=None,
-                  MonTool=None, **kwargs):
-        """ Helper function to make Fex algs
-
-        Ensures that (unless overridden) the default name, output key and
-        monitoring tool are used.
-        """
-        from TrigEFMissingET.TrigEFMissingETMTConfig import getMETMonTool
-        # Set the defaults
-        if name is None:
-            name = self.fexName
-        if METContainerKey is None:
-            METContainerKey = self.outputKey
-        if MonTool is None:
-            MonTool = getMETMonTool()
-        return alg_cls(
-                name            = name,
-                METContainerKey = METContainerKey,
-                MonTool         = MonTool,
-                **kwargs)
+        return TrigStreamerHypoAlgMT(
+            f"METPassThroughHypo_{self._suffix}_step{step}", SetInitialRoIAsFeature=True
+        )
 
+    def inputMakers(self):
+        """ The input makers for each step """
+        if hasattr(self, "_inputMakers"):
+            return self._inputMakers
+        from ..Jet.JetMenuSequences import getInitialInputMaker, getTrackingInputMaker
+
+        self._inputMakers = [getInitialInputMaker(), getTrackingInputMaker()]
+        return self._inputMakers
 
     @classmethod
     def _get_subclasses(cls):
@@ -216,11 +241,14 @@ class AlgConfig(object):
         for subcls in cls._get_subclasses():
             if subcls.algType() == EFrecoAlg:
                 return RecoFragmentsPool.retrieve(
-                        subcls._makeCls, None, EFrecoAlg=EFrecoAlg, **recoDict)
+                    subcls._makeCls, None, EFrecoAlg=EFrecoAlg, **recoDict
+                )
+
+        raise ValueError("Unknown EFrecoAlg '{}' requested".format(EFrecoAlg))
 
-        raise ValueError("Unknown EFrecoAlg '{}' requested".format(EFrecoAlg) )
 
 # Load all the defined configurations
 from . import AlgConfigs
+
 # Make sure that there is an AlgConfig for every EFrecoAlg
 AlgConfigs.test_configs()
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py
index e0382a387115b1e8982e52c171deb8e0b5553441..1f8d05ba344bee160e820febda14cf12f2c90881 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METChainConfiguration.py
@@ -1,42 +1,43 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
 from AthenaCommon.Logging import logging
-logging.getLogger().info("Importing %s",__name__)
+
+logging.getLogger().info("Importing %s", __name__)
 log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.MET.METChainConfiguration")
 
 
 from ..Menu.ChainConfigurationBase import ChainConfigurationBase
-from .ConfigHelpers import extractMETRecoDict, metRecoDictToString, AlgConfig
-from ..Menu.MenuComponents import ChainStep
+from .ConfigHelpers import recoKeys, AlgConfig
+from ..Menu.SignatureDicts import METChainParts_Default
+
+
+def extractMETRecoDict(chainDict, fillDefaults=True):
+    """ Extract the keys relevant to reconstruction from a provided dictionary
 
+    If fillDefaults is True then any missing keys will be taken from the
+    METChainParts_Default dictionary.
+    """
+    if fillDefaults:
+        return {k: chainDict.get(k, METChainParts_Default[k]) for k in recoKeys}
+    else:
+        return {k: chainDict[k] for k in recoKeys if k in chainDict}
 
-#----------------------------------------------------------------
+
+# ----------------------------------------------------------------
 # Class to configure chain
-#----------------------------------------------------------------
+# ----------------------------------------------------------------
 class METChainConfiguration(ChainConfigurationBase):
-
     def __init__(self, chainDict):
-        ChainConfigurationBase.__init__(self,chainDict)
+        ChainConfigurationBase.__init__(self, chainDict)
         # Only some subset of keys in the METChainParts dictionary describe
         # reconstruction details - only these keys are passed down into the menu
         # sequence (the actual hypo tool is created later)
         self.recoDict = extractMETRecoDict(self.chainPart)
-        
+
     # ----------------------
     # Assemble the chain depending on information from chainName
     # ----------------------
-    def assembleChain(self):                            
+    def assembleChain(self):
         log.debug("Assembling chain for " + self.chainName)
-        
-        # Right now we only ever have one step, however we may want to
-        # reintroduce the automatic cell > 50 preselection
-        # this function interpretst the reco dict extracted in __init__
-        mainStep = self.getMETStep()
-        return self.buildChain([mainStep])
-
-    def getMETStep(self):
-        """ Use the reco-dict to construct a single MET step """
-        stepName = "Step1_met_{}".format(metRecoDictToString(self.recoDict) )
         conf = AlgConfig.fromRecoDict(**self.recoDict)
-        seq = conf.menuSequence
-        return ChainStep(stepName, [seq], multiplicity=[1], chainDicts=[self.dict])
+        return self.buildChain(conf.make_steps(self.dict))
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py
index ce5aedd1244a59e4b94fb4deeeca6801e491e474..3ba1a92a7675d735ca55614c345d3def0fe8c3b1 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/MET/METRecoSequences.py
@@ -3,113 +3,313 @@
 #
 
 
-from .ConfigHelpers import AlgConfig, jetRecoDictForMET
+from .AlgInputConfig import AlgInputConfig, InputConfigRegistry
 from AthenaCommon.Logging import logging
 from TriggerMenuMT.HLTMenuConfig.CommonSequences.CaloSequenceSetup import (
+    cellRecoSequence,
     caloClusterRecoSequence,
     LCCaloClusterRecoSequence,
 )
 from eflowRec.PFHLTSequence import PFHLTSequence
-from ..Jet.JetRecoConfiguration import defineJetConstit
-from ..Jet.JetTrackingConfig import JetTrackingSequence
-from JetRecConfig.ConstModHelpers import getConstitModAlg
+from ..Jet.JetRecoConfiguration import defineJetConstit, interpretJetCalibDefault
+from ..Jet.JetRecoConfiguration import recoKeys as jetRecoKeys
+from ..Jet.JetTrackingConfig import JetTrackingSequence, trkcollskeys
+from ..Jet.JetRecoSequences import jetRecoSequence, getTrkColls
+from JetRecConfig.ConstModHelpers import getConstitModAlg, aliasToInputDef
 from ..Menu.MenuComponents import RecoFragmentsPool
 from TrigEFMissingET.TrigEFMissingETConf import (
     HLT__MET__CVFAlg,
+    HLT__MET__CVFPrepAlg,
+    HLT__MET__PFOPrepAlg,
     ApproximateTrackToLayerTool,
 )
+from AthenaConfiguration.AllConfigFlags import ConfigFlags
+from ..Menu.SignatureDicts import JetChainParts_Default
 from InDetTrackSelectionTool.InDetTrackSelectionToolConf import (
     InDet__InDetTrackSelectionTool,
 )
 from TrackVertexAssociationTool.TrackVertexAssociationToolConf import (
     CP__TrackVertexAssociationTool,
 )
-
+import copy
 
 log = logging.getLogger(__name__)
 
 
-def metAthSequence(dummyFlags, **recoDict):
-    conf = AlgConfig.fromRecoDict(**recoDict)
-    return conf.athSequence, conf.inputMaker, conf.outputKey
+def jetRecoDictForMET(**recoDict):
+    """ Get a jet reco dict that's usable for the MET slice """
+    jrd = {k: recoDict.get(k, JetChainParts_Default[k]) for k in jetRecoKeys}
+    if "jetDataType" in recoDict:
+        # Allow for the renaming dataType -> jetDataType
+        jrd["dataType"] = recoDict["jetDataType"]
+        if jrd["dataType"] == "pf":
+            # We only use em calibration for PFOs
+            jrd["calib"] = "em"
+    if jrd["jetCalib"] == "default":
+        jrd["jetCalib"] = interpretJetCalibDefault(jrd)
+    return jrd
+
+
+default_inputs = InputConfigRegistry()
+
+
+class CellInputConfig(AlgInputConfig):
+    def __init__(self):
+        super().__init__(produces=["Cells"], step=0)
+
+    def dependencies(self, recoDict):
+        # Cells have no input dependencies
+        return []
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        cellSeq, cellName = RecoFragmentsPool.retrieve(
+            cellRecoSequence, flags=None, RoIs=RoIs
+        )
+        return cellSeq, {"Cells": cellName}
+
+
+default_inputs.add_input(CellInputConfig())
+
+
+class ClusterInputConfig(AlgInputConfig):
+    def __init__(self):
+        super().__init__(produces=["Clusters"], step=0)
+
+    def dependencies(self, recoDict):
+        # Clusters have no input dependencies
+        return []
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        calib = recoDict["calib"]
+        if calib == "em":
+            tcSeq, clusterName = RecoFragmentsPool.retrieve(
+                caloClusterRecoSequence, flags=None, RoIs=RoIs
+            )
+        elif calib == "lcw":
+            tcSeq, clusterName = RecoFragmentsPool.retrieve(
+                LCCaloClusterRecoSequence, flags=None, RoIs=RoIs
+            )
+        else:
+            raise ValueError(f"Invalid value for cluster calibration: {calib}")
+        return [tcSeq], {"Clusters": clusterName}
 
 
-def metRecoSequence(dummyFlags, **recoDict):
-    conf = AlgConfig.fromRecoDict(**recoDict)
-    return conf.recoSequence, conf.outputKey
+default_inputs.add_input(ClusterInputConfig())
 
 
-def pfoRecoSequence(dummyFlags, RoIs, **recoDict):
-    """ Get PFOs as inputs for the MET algorithms
+class EMClusterInputConfig(AlgInputConfig):
+    """ Input config that forces the clusters produced to be at the EM scale
     
-    Returns the list of input sequences and the pfo prefix
+    We have this so that we can force PFOs to be produced at the EM scale,
+    however a better solution would probably be to add 'em' to the trigger name
+    or to change the 'calib' default to be "default" and then have the algorithm
+    choose.
     """
 
-    tcSeq, clusterName = RecoFragmentsPool.retrieve(
-        caloClusterRecoSequence, flags=None, RoIs=RoIs
-    )
-    pfSeq, pfoPrefix = RecoFragmentsPool.retrieve(
-        PFHLTSequence, flags=None, clustersin=clusterName, tracktype="ftf"
-    )
-    # The jet constituent modifier sequence here is to apply the correct weights
-    # and decorate the PV matching decoration
-    jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict)
-    jetRecoDict["calib"] = "em"
-    jetRecoDict["dataType"] = "pf"
-    constit = defineJetConstit(jetRecoDict, pfoPrefix=pfoPrefix)
-    from JetRecConfig.ConstModHelpers import aliasToInputDef
-    constit = aliasToInputDef(constit)
-    constit_mod_seq = getConstitModAlg(
-        constit,
-        # "HLT",
-        # tvaKey="JetTrackVtxAssoc_{trkopt}".format(**jetRecoDict),
-        # vtxKey="HLT_IDVertex_FS",
-    )
-    allSeqs = [tcSeq, pfSeq]
-    if constit_mod_seq :
-        allSeqs.append(constit_mod_seq)
-    return allSeqs, pfoPrefix
-
-
-def cvfClusterSequence(dummyFlags, RoIs, **recoDict):
-    """ Get the clusters with the CVF calculated
-
-    Returns the list of input sequences, the cluster container name and the CVF
-    decoration name
-    """
-    calib = recoDict["calib"]
-    if calib == "em":
+    def __init__(self):
+        super().__init__(produces=["EMClusters"], step=0)
+
+    def dependencies(self, recoDict):
+        # Clusters have no input dependencies
+        return []
+
+    def create_sequence(self, inputs, RoIs, recoDict):
         tcSeq, clusterName = RecoFragmentsPool.retrieve(
             caloClusterRecoSequence, flags=None, RoIs=RoIs
         )
-    elif calib == "lcw":
-        tcSeq, clusterName = RecoFragmentsPool.retrieve(
-            LCCaloClusterRecoSequence, flags=None, RoIs=RoIs
+        return [tcSeq], {"EMClusters": clusterName}
+
+
+default_inputs.add_input(EMClusterInputConfig())
+
+
+class TrackingInputConfig(AlgInputConfig):
+    def __init__(self):
+        super().__init__(
+            produces=copy.copy(trkcollskeys),
+            step=1,
+        )
+
+    def dependencies(self, recoDict):
+        # Tracks have no input dependencies
+        return []
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        trkSeq, trkColls = RecoFragmentsPool.retrieve(
+            JetTrackingSequence, flags=None, trkopt="ftf", RoIs=RoIs
+        )
+        return [trkSeq], trkColls
+
+
+default_inputs.add_input(TrackingInputConfig())
+
+
+class PFOInputConfig(AlgInputConfig):
+    def __init__(self):
+        super().__init__(produces=["PFOPrefix", "cPFOs", "nPFOs"])
+
+    def _input_clusters(self, recoDict):
+        # Only take the config that forces 'EMClusters' if the calibration
+        # isn't set to 'em'. If it's set to em then we want to make sure that
+        # we only create those sequences once
+        return "Clusters" if recoDict["calib"] == "em" else "EMClusters"
+
+    def dependencies(self, recoDict):
+        return [self._input_clusters(recoDict), "Tracks", "Vertices", "TVA"]
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        pfSeq, pfoPrefix = RecoFragmentsPool.retrieve(
+            PFHLTSequence,
+            flags=None,
+            clustersin=inputs[self._input_clusters(recoDict)],
+            tracktype="ftf",
+        )
+        # The jet constituent modifier sequence here is to apply the correct weights
+        # and decorate the PV matching decoration
+        jetRecoDict = jetRecoDictForMET(trkopt="ftf", **recoDict)
+        jetRecoDict["calib"] = "em"
+        jetRecoDict["dataType"] = "pf"
+        constit_mod_seq = getConstitModAlg(
+            aliasToInputDef(defineJetConstit(jetRecoDict, pfoPrefix=pfoPrefix))
+        )
+        allSeqs = [pfSeq]
+        if constit_mod_seq:
+            allSeqs.append(constit_mod_seq)
+        return (
+            allSeqs,
+            {
+                "PFOPrefix": pfoPrefix,
+                "cPFOs": pfoPrefix + "CHSChargedParticleFlowObjects",
+                "nPFOs": pfoPrefix + "CHSNeutralParticleFlowObjects",
+            },
         )
-    else:
-        raise ValueError("Unsupported calib state {} requested!".format(calib))
-
-    trkopt = "ftf"
-    trackSeq, trackColls = RecoFragmentsPool.retrieve(
-        JetTrackingSequence, flags=None, trkopt=trkopt, RoIs=RoIs
-    )
-
-    # These are the names set by the upstream algorithms. Unfortunately
-    # these aren't passed to us - we just have to 'know' them
-    tracks = "HLT_IDTrack_FS_FTF"
-    vertices = "HLT_IDVertex_FS"
-
-    cvfAlg = RecoFragmentsPool.retrieve(
-        HLT__MET__CVFAlg,
-        "{}{}ClusterCVFAlg".format(calib, trkopt),
-        InputClusterKey=clusterName,
-        InputTrackKey=tracks,
-        InputVertexKey=vertices,
-        OutputCVFKey="CVF",
-        TrackSelectionTool=InDet__InDetTrackSelectionTool(CutLevel="TightPrimary"),
-        TVATool=CP__TrackVertexAssociationTool(
-            WorkingPoint="Loose", VertexContainer=vertices
-        ),
-        ExtensionTool=ApproximateTrackToLayerTool(),
-    )
-    return [tcSeq, trackSeq, cvfAlg], clusterName, "CVF"
+
+
+default_inputs.add_input(PFOInputConfig())
+
+
+class MergedPFOInputConfig(AlgInputConfig):
+    """ Input config for the PFOs merged into a single container """
+
+    def __init__(self):
+        super().__init__(produces=["MergedPFOs", "PFOPUCategory"])
+
+    def dependencies(self, recoDict):
+        return ["PFOPrefix", "cPFOs", "nPFOs"]
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        prepAlg = RecoFragmentsPool.retrieve(
+            HLT__MET__PFOPrepAlg,
+            f"{inputs['PFOPrefix']}METTrigPFOPrepAlg",
+            InputNeutralKey=inputs["nPFOs"],
+            InputChargedKey=inputs["cPFOs"],
+            OutputKey=f"{inputs['PFOPrefix']}METTrigCombinedParticleFlowObjects",
+            OutputCategoryKey="PUClassification",
+        )
+        return (
+            [prepAlg],
+            {
+                "MergedPFOs": prepAlg.OutputKey,
+                "PFOPUCategory": prepAlg.OutputCategoryKey,
+            },
+        )
+
+
+default_inputs.add_input(MergedPFOInputConfig())
+
+
+class CVFClusterInputConfig(AlgInputConfig):
+    def __init__(self):
+        super().__init__(produces=["CVF", "CVFPUCategory"])
+
+    def dependencies(self, recoDict):
+        return ["Clusters", "Tracks", "Vertices"]
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        trkopt = "ftf"
+        cvfAlg = RecoFragmentsPool.retrieve(
+            HLT__MET__CVFAlg,
+            f"{recoDict['calib']}{trkopt}ClusterCVFAlg",
+            InputClusterKey=inputs["Clusters"],
+            InputTrackKey=inputs["Tracks"],
+            InputVertexKey=inputs["Vertices"],
+            OutputCVFKey="CVF",
+            TrackSelectionTool=InDet__InDetTrackSelectionTool(CutLevel="TightPrimary"),
+            TVATool=CP__TrackVertexAssociationTool(
+                WorkingPoint="Loose", VertexContainer=inputs["Vertices"]
+            ),
+            ExtensionTool=ApproximateTrackToLayerTool(),
+        )
+        prepAlg = RecoFragmentsPool.retrieve(
+            HLT__MET__CVFPrepAlg,
+            f"{recoDict['calib']}{trkopt}ClusterCVFPrepAlg",
+            InputClusterKey=inputs["Clusters"],
+            InputCVFKey=cvfAlg.OutputCVFKey,
+            OutputCategoryKey="PUClassification",
+        )
+        return (
+            [cvfAlg, prepAlg],
+            {"CVF": cvfAlg.OutputCVFKey, "CVFPUCategory": prepAlg.OutputCategoryKey},
+        )
+
+
+default_inputs.add_input(CVFClusterInputConfig())
+
+
+class JetInputConfig(AlgInputConfig):
+    """ Helper input config for jets
+
+    Note that if the jets require JVT but are topo jets there is nothing in the
+    recoDict (unless the calibration is gsc) to force tracking to run. Therefore
+    for this config, you can add an extra key 'forceTracks' to the recoDict
+    """
+
+    def __init__(self):
+        super().__init__(produces=["Jets", "JetDef"])
+
+    def _input_clusters(self, recoDict):
+        # Only take the config that forces 'EMClusters' if the calibration
+        # isn't set to 'em'. If it's set to em then we want to make sure that
+        # we only create those sequences once
+        # NB: for the jets here this is hopefully temporary - we're only forcing
+        # the clusters to be EM as we haven't added the lcw jets to the EDM
+        return "Clusters" if recoDict["calib"] == "em" else "EMClusters"
+
+    def _use_tracks(self, recoDict):
+        """ Whether or not this reco configuration requires tracks """
+        if recoDict.get("forceTracks", False):
+            return True
+        if recoDict["jetDataType"] in ["pf", "csskpf"]:
+            return True
+        elif recoDict["jetDataType"] in ["tc", "sktc", "cssktc"]:
+            return "gsc" in recoDict["jetCalib"]
+        else:
+            raise ValueError(f"Unexpected jetDataType {recoDict['jetDataType']}")
+
+    def dependencies(self, recoDict):
+        deps = [self._input_clusters(recoDict)]
+        if self._use_tracks(recoDict):
+            deps += ["Tracks", "Vertices"]
+        return deps
+
+    def create_sequence(self, inputs, RoIs, recoDict):
+        trkopt = "ftf" if self._use_tracks(recoDict) else "notrk"
+        recoDict = {k: v for k, v in recoDict.items() if k != "forceTracks"}
+        jetRecoDict = jetRecoDictForMET(trkopt=trkopt, **recoDict)
+        # hard code to em (for now) - there are no LC jets in EDM
+        jetRecoDict["calib"] = "em"
+
+        # Extract the track collections part from our input dict
+        trkcolls = {} if trkopt == "notrk" else getTrkColls(inputs)
+
+        jetSeq, jetName, jetDef = RecoFragmentsPool.retrieve(
+            jetRecoSequence,
+            ConfigFlags,
+            clustersKey=inputs[self._input_clusters(recoDict)],
+            **trkcolls,
+            **jetRecoDict,
+        )
+        return [jetSeq], {"Jets": jetName, "JetDef": jetDef}
+
+
+default_inputs.add_input(JetInputConfig())
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
index eb2542b957fad431fae6b10f4ff05e8a5d4a7292..929dfc215d8a596a42fd227fde795cd49d73c22e 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
@@ -222,6 +222,9 @@ def setupMenu():
         ChainProp(name='HLT_j85_ftf_L1J20', groups=SingleJetGroup),
 
         ChainProp(name='HLT_j45_pf_ftf_L1J20', groups=SingleJetGroup),
+        ChainProp(name='HLT_j45_pf_ftf_preselj45_L1J20', groups=SingleJetGroup),
+        ChainProp(name='HLT_j45_ftf_preselj45_L1J20', groups=SingleJetGroup),
+        ChainProp(name='HLT_j45_subjesIS_ftf_preselj45_L1J20', groups=SingleJetGroup),
         ChainProp(name='HLT_j45_pf_subjesgscIS_ftf_L1J20', groups=SingleJetGroup),
         ChainProp(name='HLT_j85_pf_ftf_L1J20', groups=SingleJetGroup),
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
index bbe5aa7ead2982b59b55f9e7a7c0312481e567ea..dad431596e854b456fe150af542e72ec3305e063 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
@@ -134,6 +134,7 @@ JetChainParts = {
     'bConfig'      : ['split',],
     'bMatching'    : ['antimatchdr05mu'],
     'trkopt'       : ['notrk','ftk','ftkrefit','ftf'],
+    'trkpresel'    : ['nopresel','preselj45'],
     'hypoScenario' : ['simple', 'vbenf',
                       'vbenfSEP30etSEP34mass35SEP50fbet',
                       'dijetSEP80j1etSEP0j1eta240SEP80j2etSEP0j2eta240SEP700djmass',
@@ -172,6 +173,7 @@ JetChainParts_Default = {
     'bMatching'     : [],
     'dataScouting'  : '',
     'trkopt'        : 'notrk',
+    'trkpresel'     : 'nopresel',
     'hypoScenario'  : 'simple',
     'smc'           : 'nosmc',
     'sigFolder'     : 'Jet',
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py
index a4e2acacb564f197c17ac2c24ccd6a05136166f9..0934aaaf8fdd3322fd16b3745924314dec237d68 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/MuonSetup.py
@@ -198,8 +198,11 @@ def makeMuonPrepDataAlgs(RoIs="MURoIs", forFullScan=False):
   ToolSvc += MuonMdtRawDataProviderTool
 
   from MuonMDT_CnvTools.MuonMDT_CnvToolsConf import Muon__MdtRdoToPrepDataToolMT
+  from MuonCnvExample import MuonCalibConfig
+
   MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataToolMT(name                     = "MdtRdoToPrepDataTool",
-                                                         MdtPrdContainerCacheKey = MuonPrdCacheNames.MdtCache)
+                                                         MdtPrdContainerCacheKey = MuonPrdCacheNames.MdtCache,
+                                                         CalibrationTool=MuonCalibConfig.MdtCalibrationTool())
 
   ToolSvc += MdtRdoToMdtPrepDataTool
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py
index 94f52e37600dc43a43b8b7b0a94a5bd1f6c562f0..bb83906a355eb50d2769129232fad814e3fb6f46 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/UnconventionalTracking/UnconventionalTrackingChainConfiguration.py
@@ -7,6 +7,7 @@ log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.UnconventionalTracking.Unco
 from TriggerMenuMT.HLTMenuConfig.Menu.ChainConfigurationBase import ChainConfigurationBase
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequence, RecoFragmentsPool
 from AthenaCommon.CFElements import seqAND
+from ..CommonSequences.FullScanDefs import caloFSRoI
 
 def unconventionalTrackingChainParts(chainParts):
     unconvtrkChainParts = []
@@ -89,8 +90,7 @@ def IsoHPtTrackTriggerSequence(ConfigFlags):
 
     from TrigEDMConfig.TriggerEDMRun3 import recordable
     from TrigInDetConfig.InDetSetup import makeInDetAlgsNoView
-    RoIs = 'HLT_FSJETRoI'
-    TrkInputNoViewAlg = makeInDetAlgsNoView( config = IDTrigConfig, rois=recordable(RoIs))
+    TrkInputNoViewAlg = makeInDetAlgsNoView( config = IDTrigConfig, rois=caloFSRoI)
 
     
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py b/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py
index 78cbf0474981eb672ad672ee60e5ee33a85bc6c1..67529e23aa56629f39f4fdabcfb3347b42778615 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/share/full_menu_cf.py
@@ -117,40 +117,58 @@ def generateChains():
     ##################################################################
     # jet chains
     ##################################################################
+
+    from TriggerMenuMT.HLTMenuConfig.Jet.JetRecoConfiguration import jetRecoDictFromString
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    def jetCaloHypoMenuSequenceFromString(jet_def_str):
+        jetRecoDict = jetRecoDictFromString(jet_def_str)
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloHypoMenuSequence
+        return jetCaloHypoMenuSequence(ConfigFlags, **jetRecoDict)
+
+    def jetCaloPreselMenuSequenceFromString(jet_def_str):
+        jetRecoDict = jetRecoDictFromString(jet_def_str)
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetCaloPreselMenuSequence
+        return jetCaloPreselMenuSequence(ConfigFlags, **jetRecoDict)
+
+    def jetTrackingHypoMenuSequenceFromString(jet_def_str,clustersKey):
+        jetRecoDict = jetRecoDictFromString(jet_def_str)
+        from TriggerMenuMT.HLTMenuConfig.Jet.JetMenuSequences import jetTrackingHypoMenuSequence
+        return jetTrackingHypoMenuSequence(ConfigFlags, clustersKey=clustersKey, **jetRecoDict)
+
     if opt.doJetSlice == True:
-        from DecisionHandling.jetMenuHelper import jetMenuSequenceFromString
 
-        # small-R jets, different calibrations HLT_AntiKt4EMTopoJets_subjesIS
-        jetSeq_a4_tc_em = jetMenuSequenceFromString("a4_tc_em_subjesIS")
-        step_a4_tc_em =makeChainStep("Step_jet_a4_tc_em", [jetSeq_a4_tc_em])
-        
-        jetSeq_a4_tc_em_subjes = jetMenuSequenceFromString("a4_tc_em_subjes")
-        step_a4_tc_em_subjes = makeChainStep("Step_jet_a4_subjes_tc_em", [jetSeq_a4_tc_em_subjes])
+        # small-R jets
+        jetSeq_a4_tc_em = jetCaloHypoMenuSequenceFromString("a4_tc_em_subjesIS")
+        step_a4_tc_em = makeChainStep("Step_jet_a4_tc_em", [jetSeq_a4_tc_em])
         
-        jetSeq_a4_tc_em_nocalib = jetMenuSequenceFromString("a4_tc_em_nojcalib")
-        step_a4_tc_em_nocalib=makeChainStep("Step_jet_a4_nojcalib_tc_em", [jetSeq_a4_tc_em_nocalib])
-        
-        #    jetSeq_a4_tc_lcw = jetMenuSequenceFromString("a10_tc_lcw_subjesIS")
-        #    step_a4_tc_lcw=ChainStep("Step_jet_a10_tc_lcw", [jetSeq_a4_tc_lcw])
-    
         # large-R jets
-        jetSeq_a10_tc_lcw_subjes = jetMenuSequenceFromString("a10_tc_lcw_subjes")
-        step_a10_tc_lcw_subjes=makeChainStep("Step_jet_a10_subjes_tc_lcw", [jetSeq_a10_tc_lcw_subjes])
+        jetSeq_a10_tc_lcw_subjes = jetCaloHypoMenuSequenceFromString("a10_tc_lcw_subjes")
+        step_a10_tc_lcw_subjes = makeChainStep("Step_jet_a10_subjes_tc_lcw", [jetSeq_a10_tc_lcw_subjes])
         
-        jetSeq_a10r = jetMenuSequenceFromString("a10r_tc_em_subjesIS")
-        step_a10r=makeChainStep("Step_jet_a10r", [jetSeq_a10r])
+        jetSeq_a10r = jetCaloHypoMenuSequenceFromString("a10r_tc_em_subjesIS")
+        step_a10r = makeChainStep("Step_jet_a10r", [jetSeq_a10r])
+
+        jetSeq_a10t = jetCaloHypoMenuSequenceFromString("a10t_tc_lcw_jes")
+        step_a10t = makeChainStep("Step_jet_a10t", [jetSeq_a10t])
         
+        # Jet chains with tracking
+        jetSeq_a4_tc_em_presel, emclusters = jetCaloPreselMenuSequenceFromString("a4_tc_em_subjesIS")
+        step_a4_tc_em_presel = makeChainStep("Step_jet_a4_tc_em_presel", [jetSeq_a4_tc_em_presel])
+        jetSeq_a4_pf_em_ftf = jetTrackingHypoMenuSequenceFromString("a4_tc_em_subresjesgscIS_ftf",emclusters)
+        step_a4_pf_em_ftf = makeChainStep("Step_jet_a4_pf_em_ftf", [jetSeq_a4_pf_em_ftf])
+
         jetChains  = [
             makeChain(name='HLT_j45_L1J20',  L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ),
             makeChain(name='HLT_j85_L1J20',  L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ),
             makeChain(name='HLT_j420_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ),
             makeChain(name='HLT_j260_320eta490_L1J20',  L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ),
-        # makeChain(name='HLT_j225_gsc420_boffperf_split',   ChainSteps=[step_a4_tc_em]  ),
             makeChain(name='HLT_j0_vbenfSEP30etSEP34mass35SEP50fbet_L1J20',  L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ),
             makeChain(name='HLT_j460_a10_lcw_subjes_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a10_tc_lcw_subjes]  ),
             makeChain(name='HLT_j460_a10r_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a10r]  ),
+            makeChain(name='HLT_j460_a10t_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a10t]  ),
             makeChain(name='HLT_3j200_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ),
             makeChain(name='HLT_5j70_0eta240_L1J20', L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em]  ), # 5j70_0eta240_L14J15 (J20 until multi-object L1 seeds supported)
+            makeChain(name='HLT_j45_pf_subresjesgscIS_ftf_L1J20',  L1Thresholds=["J20"], ChainSteps=[step_a4_tc_em_presel,step_a4_pf_em_ftf]  ),
             ]
 
         testChains += jetChains
@@ -160,18 +178,19 @@ def generateChains():
     # bjet chains
     ##################################################################
     if opt.doBjetSlice == True:
-        from DecisionHandling.jetMenuHelper import jetMenuSequenceFromString
         from TriggerMenuMT.HLTMenuConfig.Bjet.BjetSequenceSetup import getBJetSequence
 
-        jetSequence = jetMenuSequenceFromString("a4_tc_em_subjesgscIS_ftf")
+        jetSeq_a4_tc_em_presel, emclusters = jetCaloPreselMenuSequenceFromString("a4_tc_em_subjesIS")
+        jetSeq_a4_tc_em_gsc_ftf = jetTrackingHypoMenuSequenceFromString("a4_tc_em_subjesgscIS_ftf",emclusters)
         
-        step1 = makeChainStep("Step1_bjet", [jetSequence] )
-        step2 = makeChainStep("Step2_bjet", [getBJetSequence()])
+        step1 = makeChainStep("Step_jet_a4_tc_em_presel", [jetSeq_a4_tc_em_presel])
+        step2 = makeChainStep("Step_jet_a4_tc_em_gsc_ftf", [jetSeq_a4_tc_em_gsc_ftf])
+        step3 = makeChainStep("Step3_bjet", [getBJetSequence()])
         
         bjetChains  = [
-            makeChain(name='HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20' , L1Thresholds=["J20"], ChainSteps=[step1,step2] ),
-            makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20', L1Thresholds=["J20"], ChainSteps=[step1,step2] ),
-            makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_L1J20'      , L1Thresholds=["J20"], ChainSteps=[step1,step2] )
+            makeChain(name='HLT_j45_ftf_subjesgscIS_boffperf_split_L1J20' , L1Thresholds=["J20"], ChainSteps=[step1,step2,step3] ),
+            makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_split_L1J20', L1Thresholds=["J20"], ChainSteps=[step1,step2,step3] ),
+            makeChain(name='HLT_j45_ftf_subjesgscIS_bmv2c1070_L1J20'      , L1Thresholds=["J20"], ChainSteps=[step1,step2,step3] )
             ]
         testChains += bjetChains
     
@@ -204,17 +223,20 @@ def generateChains():
     ##################################################################
     if opt.doMETSlice == True:
         from TriggerMenuMT.HLTMenuConfig.MET.METMenuSequences import metMenuSequence
-        from TriggerMenuMT.HLTMenuConfig.MET.ConfigHelpers import extractMETRecoDict
+        from TriggerMenuMT.HLTMenuConfig.MET.METChainConfiguration import extractMETRecoDict
+        from TriggerMenuMT.HLTMenuConfig.MET.ConfigHelpers import AlgConfig
 
         cellRecoDict = extractMETRecoDict({'EFrecoAlg': "cell"})
-        metCellSeq = metMenuSequence(None, **cellRecoDict)
+        metCellConf = AlgConfig.fromRecoDict(**cellRecoDict)
+        metCellSeqs = metCellConf.menuSequences()
 
         pufitRecoDict = extractMETRecoDict({'EFrecoAlg': "tcpufit"})
-        metClusterPufitSeq = metMenuSequence(None, **pufitRecoDict)
+        metClusterPufitConf = AlgConfig.fromRecoDict(**pufitRecoDict)
+        metClusterPufitSeqs = metClusterPufitConf.menuSequences()
         
-        metCellStep = makeChainStep("Step1_met_cell", [metCellSeq])
-        metClusterPufitStep          = makeChainStep("Step1_met_clusterpufit", [metClusterPufitSeq])
-        comboStep_cell_clusterpufit  = makeChainStep("Step1_combo_cell_clusterpufit", [metCellSeq, metClusterPufitSeq], multiplicity=[1,1])
+        metCellStep = makeChainStep("Step1_met_cell", metCellSeqs)
+        metClusterPufitStep          = makeChainStep("Step1_met_clusterpufit", metClusterPufitSeqs)
+        comboStep_cell_clusterpufit  = makeChainStep("Step1_combo_cell_clusterpufit", metCellSeqs + metClusterPufitSeqs, multiplicity=[1,1])
 
         metChains = [
             makeChain(name="HLT_xe65_L1XE50",         L1Thresholds=["XE50"], ChainSteps=[metCellStep]),