diff --git a/AtlasTest/TestTools/CMakeLists.txt b/AtlasTest/TestTools/CMakeLists.txt
index a30595c9653636b23225eb5c080a8e413b2ebd75..aae7a855606f3a526ea3093908a06c04d82ecb3a 100644
--- a/AtlasTest/TestTools/CMakeLists.txt
+++ b/AtlasTest/TestTools/CMakeLists.txt
@@ -27,7 +27,7 @@ endif()
 # Install files from the package:
 atlas_install_python_modules( python/*.py )
 atlas_install_joboptions( share/*.py )
-atlas_install_scripts( share/runUnitTests.sh share/post.sh share/nopost.sh scripts/nightlies/TestHelloWorld.sh share/skip_if_libraryMissing.sh )
+atlas_install_scripts( share/post.sh share/nopost.sh )
 
 if( NOT XAOD_STANDALONE )
    find_package( TBB )
diff --git a/AtlasTest/TestTools/doc/packagedoc.h b/AtlasTest/TestTools/doc/packagedoc.h
deleted file mode 100644
index 1c6df01007277c0ece5d4cdecc4cb36df7d86426..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/doc/packagedoc.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
-*/
-
-/**
-
-@page TestTools_page 
-
-This package contains a few tools to help writing unit tests. 
-
-@section TestTools_UnitTest_run The UnitTest_run cmt pattern
-
-TestTools requirements file defines the cmt pattern UnitTest_run. UnitTest_run 
-will compile, link and run a standalone C++ program when a "gmake check" 
-command is issued. It will then run the share/post.sh script to compare the 
-program output with a reference one, if available.
- The pattern takes one parameter <unit_test> which is used to identify a number of files:
- -# $PKGROOT/test/<unit_test>_test.cxx		C++ program to be run
- -# $PKGROOT/share/<unit_test>_test.ref		optional reference output
- -# $PKGROOT/run/<unit_test>_test.log		program output (stdout & stderr)
- -# $PKGROOT/$CMTCONFIG/<unit_test>_test.exe	executable
-
-So for example 
-<PRE>
-  apply_pattern UnitTest_run unit_test=DataPool
-will compile and link 
- ../test/DataPool_test.cxx 
-into 
- ../$CMTCONFIG/DataPool_test.exe 
-which will be run and produce 
- ../run/DataPool_test.log 
-If you have created the reference output
- ../share/DataPool_test.ref
-this will be compared to the log file at the end of the job.
-</PRE>
-
-Notice that the comparison tries to ignore a certain 
-number of differences that are usually harmless (e.g. the execution time 
-reported by ChronoStatSvc or the package versions and even in certain cases
-pointer addresses). This is currently done in a very naive fashion (using 
-diff -I option) but a more sophisticated "diff" script is in the plans
-
-@section TestTools_initGaudi The initGaudi functions
-TestTools/initGaudi.h defines two functions in the namespace Athena_test 
-to initialize Gaudi ApplicationMgr 
-and be able to run using core Gaudi services. An optional string argument
-<jobOptsFile> instructs initGaudi to read in the job options file
- $PKGROOT/share/<jobOptsFile>
-to configure your job
-
-@section TestTools_scripts Scripts
- - share/runUnitTests.sh is a sh script that cmt broadcasts gmake check
- and filter its output. It is 
-installed in the run area. It accepts one or more arguments that it passes
-to cmt broadcast, for example
-<PRE>
- ../run/%runUnitTests.sh -select=StoreGate
-</PRE>
- - share/post.sh is a script used by the UnitTest_run pattern to 
-analize a job output 
-
-@section TestTools_toys Toys
-
-The TestTools component library provides toy implementations of a number of
-typical Gaudi classes, namely ToyConverter, ToyConversionSvc (and soon 
-ToyAlgorithm). These are made available via the job opts file
- $TESTTOOLSROOT/share/ToyConversionOpts.txt
-
-
-
-@section TestTools_Examples Examples
-
-The package AthenaTests/ControlTests contains several examples that use
-the initGaudi function.
-Control/StoreGate has a couple of non-Gaudi-based,
-very simple unit tests (e.g. KeyConcept) as well as more sophisticated ones
-that show 
- - how to link the test program with an extra library (e.g. Clear_Store) 
- - how to use the ToyConversionSvc provided by TestTools (ProxyProviderSvc)
-
-@section TestTools_links More info
-The package can be browsed using LXR 
-(http://atlassw1.phy.bnl.gov/lxr/source/atlas/AtlasTest/TestTools/)
-
-To generate doxygen doc, run (from the cmt dir) gmake doxygen and point 
-your browser to .../doc/Doxygen/html/index.html
-
-\author Paolo Calafiura <Paolo.Calafiura@cern.ch>
-*/
diff --git a/AtlasTest/TestTools/scripts/nightlies/CppUnitSGServiceTestExample.sh b/AtlasTest/TestTools/scripts/nightlies/CppUnitSGServiceTestExample.sh
deleted file mode 100755
index 10aff1f8f737f2c7345ba6a1cfaef007cf5d870a..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/scripts/nightlies/CppUnitSGServiceTestExample.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-# MAILTO : undrus@bnl.gov
-echo " ======================================================== "
-echo " Starting CppUnitTestExample "
-echo " ======================================================== "
-if [ "$CMTSTRUCTURINGSTYLE" = "without_version_directory" ]; then
-cd ${NIGHTLYAREA}/Atlas*Release/cmt
-else
-cd ${NIGHTLYAREA}/Atlas*Release/*/cmt
-fi
-cmt broadcast -select=CppUnitSGServiceExample make CppUnit
-stat=$? 
-if [ "$stat" != "0"  ]; then
-        echo " ------------------------------------------ "
-        echo " FAILURE : test CppUnitSGServiceTestExample "
-        echo " ------------------------------------------ "
-fi
-
-
diff --git a/AtlasTest/TestTools/scripts/nightlies/CppUnitTestExample.sh b/AtlasTest/TestTools/scripts/nightlies/CppUnitTestExample.sh
deleted file mode 100755
index bf9bd180282bcb32b199fbede92a33df6cb2d09e..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/scripts/nightlies/CppUnitTestExample.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-# MAILTO : undrus@bnl.gov
-echo " ======================================================== "
-echo " Starting CppUnitTestExample "
-echo " ======================================================== "
-if [ "$CMTSTRUCTURINGSTYLE" = "without_version_directory" ]; then
-cd ${NIGHTLYAREA}/Atlas*Release/cmt
-else
-cd ${NIGHTLYAREA}/Atlas*Release/*/cmt
-fi
-cmt broadcast -select=CppUnitExample make CppUnit
-stat=$? 
-if [ "$stat" != "0"  ]; then
-        echo " -------------------------------- "
-        echo " FAILURE : test CppUnitTestExample "
-        echo " -------------------------------- "
-fi
-
-
diff --git a/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld.sh b/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld.sh
deleted file mode 100755
index a7cc188137f3dd52dea2c2588219a603955a6465..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-# ERROR_MESSAGE :FAILURE (ERROR)
-# SUCCESS_MESSAGE :FATAL A FATAL
-# MAILTO : undrus@bnl.gov
-
-# -----------------------------------------------------------
-# Author: Alex Undrus
-# -----------------------------------------------------------
-
-echo " ======================================================== "
-echo " Starting test with TestHelloWorld.py "
-echo " ======================================================== "
-athena.py AthExHelloWorld/HelloWorldOptions.py 
-stat=$? 
-if [ "$stat" != "0" ]; then
-        echo " -------------------------------- "
-        echo " FAILURE (ERROR) : test HelloWorld.py "
-        echo " -------------------------------- "
-fi
diff --git a/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld_XML.xml b/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld_XML.xml
deleted file mode 100755
index 4f3ae79ce108e1b590e602d4c429d2f9e526b37a..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld_XML.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-<atn>
-   <TEST name="HelloWorld" type="athena" suite="Examples">
-      <options_atn>AthExHelloWorld/HelloWorldOptions.py</options_atn>
-      <timelimit>2</timelimit>
-      <author> Atlas Developer </author> 
-      <mailto> somebody@somewhere.ch </mailto>   
-      <expectations>
-         <errorMessage>FAILURE (ERROR)</errorMessage>
-         <successMessage>FATAL A FATAL</successMessage>
-         <returnValue>0</returnValue>
-      </expectations>
-   </TEST>
-</atn>
diff --git a/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld_script.xml b/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld_script.xml
deleted file mode 100755
index 9839e2db24697bf3a526a9aa86e18219f3364975..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/scripts/nightlies/TestHelloWorld_script.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0"?>
-<atn>
-   <TEST name="HelloWorld" type="script" suite="Examples">
-      <options_atn>TestHelloWorld.sh</options_atn>
-      <timelimit>2</timelimit>
-      <author> Atlas Developer </author> 
-      <mailto> somebody@somewhere.ch </mailto>   
-      <expectations>
-         <errorMessage>FAILURE (ERROR)</errorMessage>
-         <successMessage>FATAL A FATAL</successMessage>
-         <returnValue>0</returnValue>
-      </expectations>
-   </TEST>
-</atn>
diff --git a/AtlasTest/TestTools/share/IoAuditor_fragment.py b/AtlasTest/TestTools/share/IoAuditor_fragment.py
old mode 100755
new mode 100644
diff --git a/AtlasTest/TestTools/share/post.sh b/AtlasTest/TestTools/share/post.sh
index 1581fb5fde42b0d9598add3cdb69fe4901e6ad59..8e0ef918d97818f1316009377cf131255fea86f0 100755
--- a/AtlasTest/TestTools/share/post.sh
+++ b/AtlasTest/TestTools/share/post.sh
@@ -1,9 +1,9 @@
 #!/usr/bin/env bash
 #
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 #
 #/** @file post.sh
-# @brief sh script that check the return code of an executable and compares
+# @brief sh script that checks the return code of an executable and compares
 # its output with a reference (if available).
 #
 # @author Scott Snyder <snyder@fnal.gov> - ATLAS Collaboration.
@@ -13,38 +13,28 @@
 
 usage() {
     cat <<EOF
-Syntax: post.sh TESTNAME [EXTRAPATTERNS] [-s REGEX] [-i REGEX]
+Syntax: post.sh TESTNAME [-s REGEX] [-i REGEX]
     TESTNAME       name of unit test
-    EXTRAPATTERNS  additional regex patterns to exlude in diff (deprecated, use -i)
     -s             lines matching REGEX will be selected for the diff
     -i             lines matching REGEX will be ignored for the diff
     -h             help
 
+Post-processing script that checks the return code of an executable (expected
+in \$testStatus) and compares its output with a reference.
+
 The select pattern is always extended to include common ERROR patterns.
 If both select and ignore are specified, the lines are first selected and
 then filtered by the ignore pattern. In all cases, a default ignore list is applied.
 EOF
 }
 
-if [ "$#" -lt 1 ]; then
+if [ "$#" -lt 1 -o "$1" == "-h" ]; then
     usage
     exit 1
 fi
 test=$1
 shift
 
-# Backwards-compatible code for use with EXTRA_PATTERNS where the '-s' and
-# patterns arrived as one argument. This can be removed once EXTRA_PATTERNS
-# support has been removed in atlas_add_test.
-if [ "$#" -eq 1 ]; then
-    if [[ "$1" = "-s "* ]]; then
-        selectpatterns=`echo "$1" | sed 's/-s\s*//' | sed 's/ $//'`
-    else
-        ignorepatterns=$1
-    fi
-    shift
-fi
-
 while getopts ":s:i:h" opt; do
     case $opt in
         s)
@@ -60,23 +50,16 @@ while getopts ":s:i:h" opt; do
     esac
 done
 
-#verbose="1"
 if [ "$POST_SH_NOCOLOR" = "" ]; then
- GREEN=""
  YELLOW=""
  RED=""
  RESET=""
 else
- GREEN=""
  YELLOW=""
  RED=""
  RESET=""
 fi
 
-if [ "$ATLAS_CTEST_PACKAGE" = "" ]; then
-  ATLAS_CTEST_PACKAGE="__NOPACKAGE__"
-fi
-
 ########################################## START ####################################################
 ## Definition of default patterns
 
@@ -293,15 +276,11 @@ if [ -n "$selectpatterns" ]; then
 fi
 
 if [ -z "$testStatus" ]; then
-   echo "$YELLOW post.sh> Warning: athena exit status is not available $RESET"
+   echo "$YELLOW post.sh> Warning: athena exit status is not available (\$testStatus is not set). $RESET"
 else
    # check exit status
    joblog=${test}.log
-   if [ "$testStatus" = 0 ]
-       then
-       if [ "$verbose" != "" ]; then
-         echo "$GREEN post.sh> OK: ${test} exited normally. Output is in `realpath $joblog` $RESET"
-       fi
+   if [ "$testStatus" = 0 ]; then
        reflog=../share/${test}.ref
 
        # If we can't find the reference file, maybe it's located outside
@@ -341,10 +320,6 @@ else
                echo "$RED post.sh> ERROR: $joblog and $reflog differ $RESET"
                # Return with failure in this case:
                exit 1
-           else
-               if [ "$verbose" != "" ]; then
-                   echo "$GREEN post.sh> OK: $joblog and $reflog identical $RESET"
-               fi
            fi
        else
            # Don't warn for gtest tests.
diff --git a/AtlasTest/TestTools/share/runUnitTests.sh b/AtlasTest/TestTools/share/runUnitTests.sh
deleted file mode 100755
index acba3fbbf2c50c5dc3a566d3f57c5b99f9f32567..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/share/runUnitTests.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-#/** @file runUnitTests.sh
-# @brief sh script that cmt broadcasts gmake check and filters out its output
-# @param opts options to be passed to cmt (eg -select=Store)
-# @author Paolo Calafiura <pcalafiura@lbl.gov> - ATLAS Collaboration.
-# $Id: runUnitTests.sh,v 1.1 2003-04-04 01:31:24 calaf Exp $
-# **/
-#if [ "$#" = 0 ]
-#    then
-#    opts=-
-#else
-    opts="$@"
-#fi
-
-joblog=gmakecheck.log
-cmt bro "$opts" gmake check 2>&1 | tee $joblog | egrep "(post.sh>|Now trying)" 
-tail -1 $joblog | grep -q "check ok"
-rc=$?
-if [ "$rc" = 0 ]
-    then 
-    echo "OK: gmake check exited normally. Output is in $joblog"
-else
-    tail $joblog
-    echo  "ERROR: gmake check exited abnormally!"
-
-    echo  " Please check ${PWD}/$joblog"
-fi
diff --git a/AtlasTest/TestTools/share/skip_if_libraryMissing.sh b/AtlasTest/TestTools/share/skip_if_libraryMissing.sh
deleted file mode 100755
index 5ab05ade060821dcf0616d9c4f7fea0debb01125..0000000000000000000000000000000000000000
--- a/AtlasTest/TestTools/share/skip_if_libraryMissing.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration.
-SCRIPTNAME=$(basename $0)
-libroot=$1
-shift
-echo "$SCRIPTNAME:  command provided: \"$@\""
-
-for p in `echo $LD_LIBRARY_PATH | tr : ' ' `; do
-  if [ -r $p/lib${libroot}.so ]; then
-    echo "$SCRIPTNAME:  Library $libroot is present; will execute provided command."
-    $@
-    # take return value from executed command
-    exit $?
-  fi
-done
-
-
-echo "$SCRIPTNAME:  Library $libroot is not present , *not* executing provided command."
-
diff --git a/Control/AthenaConfiguration/python/AtlasSemantics.py b/Control/AthenaConfiguration/python/AtlasSemantics.py
new file mode 100644
index 0000000000000000000000000000000000000000..f8a197d419b7b7fd4069c16522a4daa6d558a9b6
--- /dev/null
+++ b/Control/AthenaConfiguration/python/AtlasSemantics.py
@@ -0,0 +1,85 @@
+# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+
+import GaudiConfig2.semantics
+import re
+
+class AppendListSemantics(GaudiConfig2.semantics.SequenceSemantics):
+    '''
+    Extend the sequence-semantics with a merge-method that appends the lists
+    Use 'appendList<T>' as fifth parameter of the Gaudi::Property<T> constructor 
+    to invoke this merging method. The template parameter is important, also
+    in the string that forms the fifth argument. 
+    '''
+    __handled_types__ = (re.compile(r"^appendList<.*>$"),)
+    def __init__(self, cpp_type, name=None):
+        super(AppendListSemantics, self).__init__(cpp_type, name)
+
+    def merge(self,a,b):
+        a.extend(b)
+        return a
+
+class SetSemantics(GaudiConfig2.semantics.SequenceSemantics):
+    '''
+    Extend the sequence-semantics with a merge-method that treats the like 
+    sets, eg creating a list with unique values. 
+    Use 'Set<T>' as fifth parameter of the Gaudi::Property<T> constructor 
+    to invoke this merging method. The template parameter is important, also
+    in the string that forms the fifth argument. 
+    '''
+    __handled_types__ = (re.compile(r"^Set<.*>$"),)
+    def __init__(self, cpp_type, name=None):
+        super(SetSemantics, self).__init__(cpp_type, name)
+
+    def merge(self,a,b):
+        union=set(a) | set(b)
+        return union#GaudiConfig2.semantics._ListHelper(union)
+
+
+class VarHandleSematics(GaudiConfig2.semantics.StringSemantics):
+    '''
+    Treat VarHandleKeys like strings
+    '''
+    __handled_types__ = ("SG::VarHandleKey",)
+    def __init__(self,cpp_type,name=None):
+        super(VarHandleSematics,self).__init__(cpp_type, name)
+        pass
+
+class ToolHandleSemantics(GaudiConfig2.semantics.PropertySemantics):
+    '''
+    Private alg-tools need recusive merging (de-duplication):
+    ''' 
+    __handled_types__ = ("PrivateToolHandle",)
+    def __init__(self,cpp_type,name=None):
+        super(ToolHandleSemantics, self).__init__(cpp_type,name)
+        
+
+    def merge(self,a,b):
+        return a.merge(b)
+        
+class ToolHandleArraySemantics(GaudiConfig2.semantics.PropertySemantics):
+    '''
+    Private alg-tools need recusive merging (de-duplication):
+    ''' 
+    __handled_types__ = ("PrivateToolHandleArray",)
+    def __init__(self,cpp_type,name=None):
+        super(ToolHandleArraySemantics, self).__init__(cpp_type,name)
+    
+    def default(self,value):
+        from GaudiKernel.GaudiHandles import PrivateToolHandleArray
+        return PrivateToolHandleArray()
+
+    def merge(self,a,b):
+        for bTool in b:
+            try:
+                #If a tool with that name exists in a, we'll merge it 
+                a.__getitem__(bTool).merge(bTool)
+            except IndexError:
+                #Tool does not exists in a, append it
+                a.append(bTool)
+        return a
+
+GaudiConfig2.semantics.SEMANTICS.append(SetSemantics)
+GaudiConfig2.semantics.SEMANTICS.append(AppendListSemantics)
+GaudiConfig2.semantics.SEMANTICS.append(VarHandleSematics)
+GaudiConfig2.semantics.SEMANTICS.append(ToolHandleSemantics)
+GaudiConfig2.semantics.SEMANTICS.append(ToolHandleArraySemantics)
diff --git a/Control/AthenaConfiguration/python/ComponentFactory2.py b/Control/AthenaConfiguration/python/ComponentFactory2.py
new file mode 100644
index 0000000000000000000000000000000000000000..f6c9781cdbb32ca488197f3175e02a606d6888a5
--- /dev/null
+++ b/Control/AthenaConfiguration/python/ComponentFactory2.py
@@ -0,0 +1,20 @@
+# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+
+#Wrapper to ease the transition to GaudiConfig2
+#This is the version for GaudiConfig2
+
+#extend Semantics for ATLAS-specific cases:
+import AthenaConfiguration.AtlasSemantics # noqa: F401
+
+#Get Configurable database from Gaudi:
+from GaudiConfig2 import Configurables as _cfgs
+class _compFactory():
+    def __getattr__(self,cfgName):
+        if not cfgName.startswith("__"):
+            return getattr(_cfgs,cfgName)
+
+    def getComps(self, *manyNames):
+        return [_cfgs.getByType(cfgName) for cfgName in manyNames]
+           
+CompFactory=_compFactory()
+del _compFactory
diff --git a/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h b/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h
index ce4f2bd308ab96936bfc6d673403645b55684c53..b9625700decf5820b7d4841b511d64628d0989ff 100644
--- a/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h
+++ b/Control/AthenaMonitoring/AthenaMonitoring/AthMonitorAlgorithm.h
@@ -91,22 +91,53 @@ public:
      * should avoid using this specific function name 'fill' in daughter classes.
      *
      * @param groupHandle A reference of the GenericMonitoringTool to which add variables
+     * @param variables Rvalue reference to vector of monitored variables to be saved. Note,
+     *                  the vector will not be valid after calling this function! Use
+     *                  const lvalue variant if you want to keep your vectors.
+     */
+    void fill( const ToolHandle<GenericMonitoringTool>& groupHandle,
+               std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>&& variables ) const;
+
+    /**
+     * Fills a vector of variables to a group by reference. Calls BASE FILL.
+     *
+     * At the end of the fillHistograms routine, one should save the monitored variables
+     * to the group. This function wraps the process of getting the desired group by a
+     * call to AthMonitorAlgorithm::getGroup() and a call to Monitored::Group::fill(),
+     * which also disables the auto-fill feature to avoid double-filling. Note, users
+     * should avoid using this specific function name 'fill' in daughter classes.
+     *
+     * @param groupHandle A reference of the GenericMonitoringTool to which add variables
      * @param variables Vector of monitored variables to be saved
      */
+
     void fill( const ToolHandle<GenericMonitoringTool>& groupHandle,
-               std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables ) const;
+               const std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>& variables ) const {
+        fill(groupHandle, std::move(std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{variables}));
+    };
 
     /**
-     * Fills a variadic list of variables to a group by reference. Callse BASE FILL.
+     * Fills a variadic list of variables to a group by reference. Calls BASE FILL.
      *
      * @param groupHandle Reference to the GenericMonitoringTool
      * @param variables... Variadic list of monitored variables to be saved
      */
     template <typename... T>
     void fill( const ToolHandle<GenericMonitoringTool>& groupHandle, T&&... variables ) const {
-        fill(groupHandle,{std::forward<T>(variables)...});
+        fill(groupHandle,std::move(std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{std::forward<T>(variables)...}));
     }
 
+    /**
+     * Fills a vector of variables to a group by name. Calls BASE FILL.
+     *
+     * @param groupHandle Reference to the GenericMonitoringTool
+     * @param variables Rvalue reference to vector of monitored variables to be saved. Note,
+     *                  the vector will not be valid after calling this function! Use
+     *                  const lvalue variant if you want to keep your vectors.
+     */
+    void fill( const std::string& groupName,
+               std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>&& variables ) const;
+
     /**
      * Fills a vector of variables to a group by name. Calls BASE FILL.
      *
@@ -114,7 +145,9 @@ public:
      * @param variables Vector of monitored variables to be saved
      */
     void fill( const std::string& groupName,
-               std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables ) const;
+               const std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>& variables ) const {
+        fill( getGroup(groupName), std::move(std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{variables}));
+    }
 
     /**
      * Fills a variadic list of variables to a group by name. Calls BASE FILL.
@@ -124,7 +157,7 @@ public:
      */
     template <typename... T>
     void fill( const std::string& groupName, T&&... variables ) const {
-        fill(getGroup(groupName),{std::forward<T>(variables)...});
+        fill(getGroup(groupName),std::move(std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{std::forward<T>(variables)...}));
     }
     /** @} */ // end of fill group
 
@@ -345,6 +378,7 @@ protected:
 private:
     typedef std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> MonVarVec_t;
     std::string m_name;
+    std::unordered_map<std::string, size_t> m_toolLookupMap;
 };
 
 #endif
diff --git a/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx b/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx
index 63c0dcdd0bfa96219451b126a579708b89820785..b4cd41c0287db8c58b3e11667f02b13f2db6d497 100644
--- a/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx
+++ b/Control/AthenaMonitoring/src/AthMonitorAlgorithm.cxx
@@ -21,6 +21,9 @@ StatusCode AthMonitorAlgorithm::initialize() {
     // Retrieve the generic monitoring tools (a ToolHandleArray)
     if ( !m_tools.empty() ) {
         ATH_CHECK( m_tools.retrieve() );
+        for (size_t idx = 0; idx < m_tools.size(); ++idx) {
+            m_toolLookupMap[m_tools[idx].name()] = idx;
+        }
     }
 
     // Retrieve the trigger decision tool if requested
@@ -86,14 +89,14 @@ StatusCode AthMonitorAlgorithm::execute( const EventContext& ctx ) const {
 
 
 void AthMonitorAlgorithm::fill( const ToolHandle<GenericMonitoringTool>& groupHandle,
-                                MonVarVec_t variables ) const {
-    Monitored::Group(groupHandle,variables).fill();
+                                MonVarVec_t&& variables ) const {
+    Monitored::Group(groupHandle,std::move(variables)).fill();
 }
 
 
 void AthMonitorAlgorithm::fill( const std::string& groupName,
-                                MonVarVec_t variables ) const {
-    fill(getGroup(groupName),variables);
+                                MonVarVec_t&& variables ) const {
+   this->fill(getGroup(groupName),std::move(variables));
 }
 
 
@@ -156,8 +159,12 @@ AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataTypeStringToEnum( const
 
 ToolHandle<GenericMonitoringTool> AthMonitorAlgorithm::getGroup( const std::string& name ) const {
     // get the pointer to the tool, and check that it exists
-    const ToolHandle<GenericMonitoringTool>* toolPtr = m_tools[name];
-    if ( !toolPtr ) {
+    const ToolHandle<GenericMonitoringTool>* toolPtr{nullptr};
+    auto idx = m_toolLookupMap.find(name);
+    if (ATH_LIKELY(idx != m_toolLookupMap.end())) {
+        toolPtr = &m_tools[idx->second];
+    }
+    if ( ATH_UNLIKELY(!toolPtr) ) {
         std::string available = std::accumulate( m_tools.begin(), m_tools.end(),
             m_tools.begin()->name(), [](std::string s,auto h){return s + "," + h->name();} );
         ATH_MSG_FATAL( "The tool " << name << " could not be found in the tool array of the " <<
@@ -166,7 +173,7 @@ ToolHandle<GenericMonitoringTool> AthMonitorAlgorithm::getGroup( const std::stri
             available << "}." << endmsg );
     }
     const ToolHandle<GenericMonitoringTool> toolHandle = *toolPtr;
-    if ( toolHandle.empty() ) {
+    if ( ATH_UNLIKELY(toolHandle.empty()) ) {
         ATH_MSG_FATAL("The tool "<<name<<" could not be found because of an empty tool handle."<<endmsg);
     }
     // return the tool handle
diff --git a/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx b/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx
index eac9f78a444c8612bcd2ef266a43cf9d6eea3fa3..008e26bea43ee70770ad9970cd9fea0d39a823ae 100644
--- a/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx
+++ b/Control/AthenaMonitoring/src/ExampleMonitorAlgorithm.cxx
@@ -15,6 +15,9 @@ ExampleMonitorAlgorithm::~ExampleMonitorAlgorithm() {}
 
 StatusCode ExampleMonitorAlgorithm::initialize() {
     using namespace Monitored;
+    // initialize superclass
+    ATH_CHECK( AthMonitorAlgorithm::initialize() );
+    
     m_abGroups1 = buildToolMap<int>(m_tools,"ExampleMonitor",2);
     m_abGroups2 = buildToolMap<std::vector<int>>(m_tools,"ExampleMonitor",4,2);
 
@@ -22,7 +25,7 @@ StatusCode ExampleMonitorAlgorithm::initialize() {
     std::vector<std::string> clusters = {"clusterX","clusterB"};
     m_cGroups1 = buildToolMap<int>(m_tools,"ExampleMonitor",layers);
     m_cGroups2 = buildToolMap<std::map<std::string,int>>(m_tools,"ExampleMonitor",layers,clusters);
-    return AthMonitorAlgorithm::initialize();
+    return StatusCode::SUCCESS;
 }
 
 
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/GenericMonitoringTool.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/GenericMonitoringTool.h
index 5e9db8d79990c52d93c902dd1292fb195b45e7a3..448d3324f868512c39cfb523006cdc618fec7442 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/GenericMonitoringTool.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/GenericMonitoringTool.h
@@ -95,7 +95,7 @@ public:
   virtual StatusCode stop() override;
 
   /// Retrieve the histogram fillers
-  std::vector<std::shared_ptr<Monitored::HistogramFiller>> getHistogramsFillers(std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> monitoredVariables) const;
+  std::vector<std::shared_ptr<Monitored::HistogramFiller>> getHistogramsFillers(const std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>& monitoredVariables) const;
   /// Book histograms
   StatusCode book();
   /// Overrride configured booking path
@@ -112,7 +112,6 @@ private:
   Gaudi::Property<bool> m_explicitBooking { this, "ExplicitBooking", false, "Do not create histograms automatically in initialize but wait until the method book is called." };
 
   std::unordered_map<std::string, std::vector<std::shared_ptr<Monitored::HistogramFiller>>> m_fillerMap; //!< map from variables to fillers
-
 };
 
 /**
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramDef.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramDef.h
index 3322c7878a83b857a714c1f6313d113a4bb729ad..f6e0486d7bfc7ede350644b9490c14fec863bae7 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramDef.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramDef.h
@@ -22,6 +22,7 @@ namespace Monitored {
     std::string tld{""}; //!< top level directory (below THistSvc stream)
     std::string convention; //!< path naming convention (e.g. OFFLINE)
     std::string weight; //!< name of weight variable
+    std::string cutMask; //!< variable that defines whether event is accepted
 
     std::string xvar; //!< name of x variable
     int xbins; //!< number of y bins
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramFiller.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramFiller.h
index 8055ec83044d8fe1e98cf0c3b96d6854d26dbcc5..29a0f9ff2bb9de2b39f2cd4d4d1360ca44d29af6 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramFiller.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/HistogramFiller.h
@@ -29,7 +29,8 @@ namespace Monitored {
       : m_mutex(std::make_shared<std::mutex>()),
         m_histDef(new HistogramDef(histDef)),
         m_histogramProvider(histogramProvider),
-        m_monWeight(nullptr) {}
+        m_monWeight(nullptr),
+        m_monCutMask(nullptr) {}
     /**
      * @brief Copy constructor
      *
@@ -39,7 +40,8 @@ namespace Monitored {
       : m_mutex(hf.m_mutex),
         m_histDef(hf.m_histDef),
         m_histogramProvider(hf.m_histogramProvider),
-        m_monWeight(hf.m_monWeight) {}
+        m_monWeight(hf.m_monWeight),
+        m_monCutMask(hf.m_monCutMask) {}
     /**
      * @brief Move constructor
      */
@@ -59,11 +61,11 @@ namespace Monitored {
      * @brief clone filler for actual filling
      * Note that this operation is very chip as the this class is effectively a flyweight
      */
-    virtual HistogramFiller* clone() = 0;
+    virtual HistogramFiller* clone() const = 0;
 
 
-    void setMonitoredVariables(const std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>& monitoredVariables) {
-      m_monVariables = monitoredVariables;
+    void setMonitoredVariables(std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>&& monitoredVariables) {
+      m_monVariables = std::move(monitoredVariables);
     }
 
     /**
@@ -74,6 +76,10 @@ namespace Monitored {
       m_monWeight = monitoredWeight;
     }
 
+    void setMonitoredCutMask(Monitored::IMonitoredVariable* monitoredCutMask) {
+      m_monCutMask = monitoredCutMask;
+    }
+
     const std::vector<std::string>& histogramVariablesNames() const {
       return m_histDef->name;
     }
@@ -82,18 +88,43 @@ namespace Monitored {
       return m_histDef->weight;
     }
 
+    const std::string& histogramCutMaskName() const {
+      return m_histDef->cutMask;
+    }
+    
   protected:
     template <class H>
     H* histogram() {
       return static_cast<H*>(m_histogramProvider->histogram());
     }
 
+    // convenience function to provide a function that interprets the cutmask
+    std::pair<size_t, std::function<bool(size_t)>> getCutMaskFunc() {
+      std::function<bool(size_t)> cutMaskValue = [] (size_t){ return true; }; // default is true
+      size_t maskSize = 1;
+      const std::vector<double> cutMaskVector{m_monCutMask ? m_monCutMask->getVectorRepresentation() : std::vector<double>{}};
+      if ( m_monCutMask != nullptr ) {
+        maskSize = cutMaskVector.size();
+        if (maskSize == 1) {
+          if (!cutMaskVector[0]) {
+            // globally fails cut; zero first argument is a signal that one can abort
+            return std::make_pair(0, [](size_t){ return false; });
+            // otherwise, default cutMaskValue is sufficient
+          }
+        } else {
+          return std::make_pair(maskSize, [cutMaskVector=std::move(cutMaskVector)](size_t i){ return bool(cutMaskVector[i]); });
+        }
+      }
+      return std::make_pair(maskSize, cutMaskValue);
+    }
+
     std::shared_ptr<std::mutex> m_mutex;
     std::shared_ptr<HistogramDef> m_histDef;
     std::shared_ptr<IHistogramProvider> m_histogramProvider;
     std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> m_monVariables;
     Monitored::IMonitoredVariable* m_monWeight; // bare pointer instead of reference as it can be null
-
+    Monitored::IMonitoredVariable* m_monCutMask;
+    
   private:
     HistogramFiller& operator=(HistogramFiller const&) = delete;
   };
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/IMonitoredVariable.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/IMonitoredVariable.h
index 5196cf928014834fc4596c199c3e41f552ba9d7f..e01f26d92302577517d745ee11297d4f06c83424 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/IMonitoredVariable.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/IMonitoredVariable.h
@@ -17,10 +17,11 @@ namespace Monitored {
     virtual ~IMonitoredVariable() {}
 
     const std::string& name() const { return m_name; }
-    virtual const std::vector<double> getVectorRepresentation() const = 0;
+    virtual std::vector<double> getVectorRepresentation() const = 0;
     virtual std::vector<std::string> getStringVectorRepresentation() const = 0;
     virtual bool hasStringRepresentation() const = 0; //!< indcates that the stored content can be converted to strings
-
+    virtual size_t size() const = 0; //!< gives size of vector representation
+    
   protected:
 
     IMonitoredVariable(std::string name)
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredCollection.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredCollection.h
index acff63691153e4bfd6b84d2cd89165068859c515..4f6f3c2f895f7b8bded8a06b4b97dfbf48bc9caa 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredCollection.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredCollection.h
@@ -58,6 +58,10 @@ namespace Monitored {
              std::function<double(const typename ObjectsCollection<T>::const_value_type&)> converterToDouble) {
     return ObjectsCollection<T>(std::move(name), collection, std::move(converterToDouble));
   }
+  template <class T> ObjectsCollection<T>
+  Collection(std::string name, const T&& collection,
+             std::function<double(const typename ObjectsCollection<T>::const_value_type&)> converterToDouble) = delete;
+
 
   namespace detail {
     /// Get element type for containers
@@ -84,10 +88,11 @@ namespace Monitored {
 
     /// @brief .     \if empty doc string required due to doxygen bug 787131 \endif
     friend ValuesCollection<T> Collection<T>(std::string name, const T& collection);
+    friend ValuesCollection<T> Collection<T>(std::string name, const T&& collection);
 
     ValuesCollection(ValuesCollection&&) = default;
 
-    const std::vector<double> getVectorRepresentation() const override {
+    std::vector<double> getVectorRepresentation() const override {
       return convertToDouble( m_collection );
     }
 
@@ -97,13 +102,18 @@ namespace Monitored {
     virtual bool hasStringRepresentation() const override {
       return std::is_constructible<std::string, value_type>::value;
     }
+    virtual size_t size() const override {
+      return std::size(m_collection);
+    }
 
   private:
     const T& m_collection;
+    
 
     ValuesCollection(std::string vname, const T& collection)
-        : IMonitoredVariable(std::move(vname)), m_collection(collection) {
+      : IMonitoredVariable(std::move(vname)), m_collection{collection} {
     }
+
     ValuesCollection(ValuesCollection const&) = delete;
     ValuesCollection& operator=(ValuesCollection const&) = delete;
 
@@ -149,7 +159,7 @@ namespace Monitored {
 
     ObjectsCollection(ObjectsCollection&&) = default;
 
-    const std::vector<double> getVectorRepresentation() const override {
+    std::vector<double> getVectorRepresentation() const override {
       // Reserve space and fill vector
       std::vector<double> result;
       result.reserve(std::size(m_collection));
@@ -164,7 +174,10 @@ namespace Monitored {
     virtual bool hasStringRepresentation() const override {
       return false;
     };
-
+    virtual size_t size() const override {
+      return std::size(m_collection);
+    }
+    
   private:
     const T& m_collection;
     std::function<double(const const_value_type&)> m_converterToDouble;
@@ -172,7 +185,7 @@ namespace Monitored {
     ObjectsCollection(std::string name, const T& collection,
                       std::function<double(const const_value_type&)> converterToDouble)
         : IMonitoredVariable(std::move(name)),
-          m_collection(collection),
+      m_collection(std::move(collection)),
           m_converterToDouble(std::move(converterToDouble)) {}
     ObjectsCollection(ObjectsCollection const&) = delete;
     ObjectsCollection& operator=(ObjectsCollection const&) = delete;
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h
index 951124bcd87e903b7536cbb51a4dd75282ab6615..c3711108617116a5b229c21b1456954f51241717 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredGroup.h
@@ -47,12 +47,18 @@ namespace Monitored {
         m_monitoredGroup{monitoredGroup...},
         m_histogramsFillers(!m_tool.empty() ? m_tool->getHistogramsFillers(m_monitoredGroup) : std::vector<std::shared_ptr<Monitored::HistogramFiller>>()) { }
 
-    Group(const ToolHandle<GenericMonitoringTool>& tool, std::vector<std::reference_wrapper<IMonitoredVariable>> monitoredGroup)
+     Group(const ToolHandle<GenericMonitoringTool>& tool, const std::vector<std::reference_wrapper<IMonitoredVariable>>& monitoredGroup)
       : m_tool(tool),
         m_autoFill(true),
         m_monitoredGroup(monitoredGroup),
         m_histogramsFillers(!m_tool.empty() ? m_tool->getHistogramsFillers(m_monitoredGroup) : std::vector<std::shared_ptr<Monitored::HistogramFiller>>()) { }
 
+     Group(const ToolHandle<GenericMonitoringTool>& tool, std::vector<std::reference_wrapper<IMonitoredVariable>>&& monitoredGroup)
+      : m_tool(tool),
+        m_autoFill(true),
+        m_monitoredGroup(std::move(monitoredGroup)),
+        m_histogramsFillers(!m_tool.empty() ? m_tool->getHistogramsFillers(m_monitoredGroup) : std::vector<std::shared_ptr<Monitored::HistogramFiller>>()) { }
+
     virtual ~Group() {
       if (m_autoFill) {
         fill();
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredScalar.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredScalar.h
index f4b498dc5756d8eaa30c8204292877a94abd54e9..833483e31b6f9f9fb95a8702cbb445ae34e15de4 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredScalar.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredScalar.h
@@ -71,7 +71,7 @@ namespace Monitored {
     T operator--() { return --m_value; }
     T operator--(int) { return m_value--; }
 
-    const std::vector<double> getVectorRepresentation() const override {
+    std::vector<double> getVectorRepresentation() const override {
       return { convertToDouble( m_value, m_valueTransform, m_valueGenerator ) };
     }
 
@@ -83,6 +83,10 @@ namespace Monitored {
       return std::is_constructible<std::string, T>::value;
     }
 
+    virtual size_t size() const override {
+      return 1;
+    }
+    
   private:
     T m_value;
     std::function<double(const T&)> m_valueTransform;
diff --git a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredTimer.h b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredTimer.h
index 93c7d3731ea4096df73dd8f8fa10b15034b46486..3f98a6b0ea871148ab5a9bd02f34bab2d1400804 100644
--- a/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredTimer.h
+++ b/Control/AthenaMonitoringKernel/AthenaMonitoringKernel/MonitoredTimer.h
@@ -38,11 +38,12 @@ namespace Monitored {
 
     operator double() const; //!< duration between start and stop (or current time) in microseconds
 
-    const std::vector<double> getVectorRepresentation() const override { return {double(*this)}; }
+    std::vector<double> getVectorRepresentation() const override { return {double(*this)}; }
 
     virtual std::vector<std::string> getStringVectorRepresentation() const override { return std::vector<std::string>(); };
     virtual bool hasStringRepresentation() const override { return false; };
-
+    virtual size_t size() const override { return 1; }
+    
   private:
 
     typedef std::chrono::high_resolution_clock clock_type;
diff --git a/Control/AthenaMonitoringKernel/python/GenericMonitoringTool.py b/Control/AthenaMonitoringKernel/python/GenericMonitoringTool.py
index 5b94c9c318fa5d65f0be34d8dc17db4c0172af9c..0833930b08c098a9919d25a527062a6d7625a455 100644
--- a/Control/AthenaMonitoringKernel/python/GenericMonitoringTool.py
+++ b/Control/AthenaMonitoringKernel/python/GenericMonitoringTool.py
@@ -106,6 +106,7 @@ class GenericMonitoringArray:
 #  @param path     top-level histogram directory (e.g. EXPERT, SHIFT, etc.)
 #  @param title    Histogram title and optional axis title (same syntax as in TH constructor)
 #  @param weight   Name of the variable containing the fill weight
+#  @param cutmask  Name of the boolean-castable variable that determines if the plot is filled
 #  @param opt      Histrogram options (see GenericMonitoringTool)
 #  @param labels   Deprecated. Copies value to xlabels.
 #  @param xlabels  List of x bin labels.
@@ -117,11 +118,12 @@ def defineHistogram(varname, type='TH1F', path=None,
                     xbins=100, xmin=0, xmax=1, xlabels=None,
                     ybins=None, ymin=None, ymax=None, ylabels=None,
                     zmin=None, zmax=None, zlabels=None,
-                    opt='', labels=None, convention=None):
+                    opt='', labels=None, convention=None,
+                    cutmask=None):
 
     # All of these fields default to an empty string
     stringSettingsKeys = ['xvar', 'yvar', 'zvar', 'type', 'path', 'title', 'weight',
-    'opt', 'convention', 'alias'] 
+    'cutMask', 'opt', 'convention', 'alias'] 
     # All of these fileds default to 0
     numberSettingsKeys = ['xbins', 'xmin', 'xmax', 'ybins', 'ymin', 'ymax', 'zbins',
     'zmin', 'zmax']
@@ -185,6 +187,10 @@ def defineHistogram(varname, type='TH1F', path=None,
     if weight is not None:
         settings['weight'] = weight
 
+    # Cutmask
+    if cutmask is not None:
+        settings['cutMask'] = cutmask
+
     # Output path naming convention
     if convention is not None:
         settings['convention'] = convention
@@ -228,12 +234,17 @@ def defineHistogram(varname, type='TH1F', path=None,
     if labels is not None:
         assert xlabels is None and ylabels is None and zlabels is None,'Mixed use of \
         depricated "labels" argument with [xyz]labels arguments.'
+        log.warning('Histogram %s configured with deprecated "labels" argument. Please use "xlabels" and "ylabels" instead.', 
+                    settings['title'])
         nLabels = len(labels)
         if nLabels==xbins:
             xlabels = labels
         elif nLabels>xbins:
+            if nLabels > xbins+ybins:
+                log.warning('More labels specified for %s (%d) than there are x+y bins (%d+%d)',
+                            settings['title'], nLabels, xbins, ybins)
             xlabels = labels[:xbins]
-            ylabels = labels[xbins:]
+            ylabels = labels[xbins:xbins+ybins]
     # Then, parse the [xyz]label arguments
     if xlabels is not None and len(xlabels)>0:
         assert isinstance(xlabels, (list, tuple)),'xlabels must be list or tuple'
diff --git a/Control/AthenaMonitoringKernel/share/GenericMon.txt b/Control/AthenaMonitoringKernel/share/GenericMon.txt
index 3059d7b083de428feb3c255977e623ee2918df80..e0c57b811055ef490d03939f20ff38f8e7b3a931 100644
--- a/Control/AthenaMonitoringKernel/share/GenericMon.txt
+++ b/Control/AthenaMonitoringKernel/share/GenericMon.txt
@@ -15,12 +15,14 @@ THistSvc.OutputLevel = 0;
 THistSvc.Output= {"EXPERT DATAFILE='expert-monitoring.root' OPT='RECREATE'" };
 ToolSvc.MonTool.OutputLevel = 0;
 ToolSvc.MonTool.HistPath="TestGroup";
-ToolSvc.MonTool.Histograms =  {'{"alias": "Eta", "allvars": ["Eta"], "convention": "", "opt": "", "path": "EXPERT", "title": "#eta of Clusters; #eta; number of RoIs", "type": "TH1F", "weight": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 2.50, "xmin": -2.50, "xvar": "Eta", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "Phi", "allvars": ["Phi"], "convention": "", "opt": "", "path": "EXPERT", "title": "#phi of Clusters; #phi; number of RoIs", "type": "TH1F", "weight": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 3.15, "xmin": -3.15, "xvar": "Phi", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "Eta_vs_Phi", "allvars": ["Eta", "Phi"], "convention": "", "opt": "", "path": "EXPERT", "title": "#eta vs #phi of Clusters; #eta; #phi; number of RoIs", "type": "TH2F", "weight": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 2.5, "xmin": -2.5, "xvar": "Eta", "yarray": [], "ybins": 2, "ylabels": [], "ymax": 3.15, "ymin": -3.15, "yvar": "Phi", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "TIME_t1", "allvars": ["TIME_t1"], "convention": "", "opt": "", "path": "EXPERT", "title": "Timing of tool 1", "type": "TH1F", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1000.0, "xmin": 0.0, "xvar": "TIME_t1", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "TIME_t2", "allvars": ["TIME_t2"], "convention": "", "opt": "", "path": "EXPERT", "title": "Timing of tool 2", "type": "TH1F", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1000.0, "xmin": 0.0, "xvar": "TIME_t2", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "DetID", "allvars": ["DetID"], "convention": "", "opt": "", "path": "EXPERT", "title": "Test of text filling", "type": "TH1F", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "DetID", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "DetCalo_vs_DetID", "allvars": ["DetCalo", "DetID"], "convention": "", "opt": "", "path": "EXPERT", "title": "Fill 2D with strings", "type": "TH2I", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "DetCalo", "yarray": [], "ybins": 10, "ylabels": [], "ymax": 10.0, "ymin": 0.0, "yvar": "DetID", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "DetCalo_vs_y", "allvars": ["DetCalo", "y"], "convention": "", "opt": "", "path": "EXPERT", "title": "Fill 2D with string & double", "type": "TH2I", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "DetCalo", "yarray": [], "ybins": 10, "ylabels": [], "ymax": 10.0, "ymin": 0.0, "yvar": "y", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
-ToolSvc.MonTool.Histograms += {'{"alias": "x_vs_DetCalo", "allvars": ["x", "DetCalo"], "convention": "", "opt": "", "path": "EXPERT", "title": "Fill 2D with double & string", "type": "TH2I", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "x", "yarray": [], "ybins": 10, "ylabels": [], "ymax": 10.0, "ymin": 0.0, "yvar": "DetCalo", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+// '{"alias": "Eta", "allvars": ["Eta"], "convention": "", "opt": "", "path": "EXPERT", "title": "#eta of Clusters; #eta; number of RoIs", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 2.5, "xmin": -2.5, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+ToolSvc.MonTool.Histograms =  {'{"alias": "Eta", "allvars": ["Eta"], "convention": "", "opt": "", "path": "EXPERT", "title": "#eta of Clusters; #eta; number of RoIs", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 2.50, "xmin": -2.50, "xvar": "Eta", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "Eta_CutMask", "allvars": ["Eta"], "convention": "", "opt": "", "path": "EXPERT", "title": "#eta of Clusters, with cut; #eta; number of RoIs", "type": "TH1F", "weight": "", "cutMask": "CutMask", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 2.50, "xmin": -2.50, "xvar": "Eta", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "Phi", "allvars": ["Phi"], "convention": "", "opt": "", "path": "EXPERT", "title": "#phi of Clusters; #phi; number of RoIs", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 3.15, "xmin": -3.15, "xvar": "Phi", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "Eta_vs_Phi", "allvars": ["Eta", "Phi"], "convention": "", "opt": "", "path": "EXPERT", "title": "#eta vs #phi of Clusters; #eta; #phi; number of RoIs", "type": "TH2F", "weight": "", "cutMask": "", "xarray": [], "xbins": 2, "xlabels": [], "xmax": 2.5, "xmin": -2.5, "xvar": "Eta", "yarray": [], "ybins": 2, "ylabels": [], "ymax": 3.15, "ymin": -3.15, "yvar": "Phi", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "TIME_t1", "allvars": ["TIME_t1"], "convention": "", "opt": "", "path": "EXPERT", "title": "Timing of tool 1", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1000.0, "xmin": 0.0, "xvar": "TIME_t1", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "TIME_t2", "allvars": ["TIME_t2"], "convention": "", "opt": "", "path": "EXPERT", "title": "Timing of tool 2", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1000.0, "xmin": 0.0, "xvar": "TIME_t2", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "DetID", "allvars": ["DetID"], "convention": "", "opt": "", "path": "EXPERT", "title": "Test of text filling", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "DetID", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "DetCalo_vs_DetID", "allvars": ["DetCalo", "DetID"], "convention": "", "opt": "", "path": "EXPERT", "title": "Fill 2D with strings", "type": "TH2I", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "DetCalo", "yarray": [], "ybins": 10, "ylabels": [], "ymax": 10.0, "ymin": 0.0, "yvar": "DetID", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "DetCalo_vs_y", "allvars": ["DetCalo", "y"], "convention": "", "opt": "", "path": "EXPERT", "title": "Fill 2D with string & double", "type": "TH2I", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "DetCalo", "yarray": [], "ybins": 10, "ylabels": [], "ymax": 10.0, "ymin": 0.0, "yvar": "y", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
+ToolSvc.MonTool.Histograms += {'{"alias": "x_vs_DetCalo", "allvars": ["x", "DetCalo"], "convention": "", "opt": "", "path": "EXPERT", "title": "Fill 2D with double & string", "type": "TH2I", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "x", "yarray": [], "ybins": 10, "ylabels": [], "ymax": 10.0, "ymin": 0.0, "yvar": "DetCalo", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'};
diff --git a/Control/AthenaMonitoringKernel/src/GenericMonitoringTool.cxx b/Control/AthenaMonitoringKernel/src/GenericMonitoringTool.cxx
index 99063ff81b2148f845a2aacc20ce26e7b5ee38f3..e0b1eb04c400df06922f6ffba3a791bd032c14c7 100644
--- a/Control/AthenaMonitoringKernel/src/GenericMonitoringTool.cxx
+++ b/Control/AthenaMonitoringKernel/src/GenericMonitoringTool.cxx
@@ -98,10 +98,6 @@ StatusCode GenericMonitoringTool::book() {
     for (const auto& fillerVariable : fillerVariables) {
       m_fillerMap[fillerVariable].push_back(filler);
     }
-    const auto& fillerWeight = filler->histogramWeightName();
-    if (fillerWeight != "") {
-      m_fillerMap[fillerWeight].push_back(filler);
-    }
   }
 
   return StatusCode::SUCCESS;
@@ -114,26 +110,32 @@ namespace Monitored {
     }
 }
 
-std::vector<std::shared_ptr<HistogramFiller>> GenericMonitoringTool::getHistogramsFillers(std::vector<std::reference_wrapper<IMonitoredVariable>> monitoredVariables) const {
-
+std::vector<std::shared_ptr<HistogramFiller>> GenericMonitoringTool::getHistogramsFillers(const std::vector<std::reference_wrapper<IMonitoredVariable>>& monitoredVariables) const {
 
-  std::vector<std::shared_ptr<HistogramFiller>> result;
 
   // stage 1: get candidate fillers (assume generally we get only a few variables)
-  std::unordered_set<std::shared_ptr<HistogramFiller>> candidates;
+  std::vector<const HistogramFiller*> candidates;
   for (const auto& monValue : monitoredVariables) {
     const auto& match = m_fillerMap.find(monValue.get().name());
     if (match != m_fillerMap.end()) {
-      candidates.insert(match->second.begin(), match->second.end());
+      for (const auto& i : match->second) {
+        candidates.push_back(i.get());
+      }
     }
   } 
+  // dedup vector
+  std::sort(candidates.begin(), candidates.end());
+  candidates.erase(std::unique(candidates.begin(), candidates.end()), candidates.end());
 
   // stage 2: refine for fillers that have all variables set
+  std::vector<std::shared_ptr<HistogramFiller>> result;
+  result.reserve(candidates.size());
   for (const auto& filler : candidates) {
     // Find the associated monitored variable for each histogram's variable(s)
     const auto& fillerVariables = filler->histogramVariablesNames();
 
     std::vector<std::reference_wrapper<IMonitoredVariable>> variables;
+    variables.reserve(3); // enough for all current fillers
 
     for (const auto& fillerVariable : fillerVariables) {
       for (const auto& monValue : monitoredVariables) {
@@ -156,17 +158,32 @@ std::vector<std::shared_ptr<HistogramFiller>> GenericMonitoringTool::getHistogra
       }
     }
 
-    if (fillerVariables.size() != variables.size()) {
+    // Find the cutMask variable in the list of monitored variables
+    const auto& fillerCutMask = filler->histogramCutMaskName();
+    Monitored::IMonitoredVariable* cutmask = nullptr;
+    if ( fillerCutMask != "" ) {
+      for (const auto& monValue : monitoredVariables) {
+        if (fillerCutMask.compare(monValue.get().name()) == 0) {
+          cutmask = &monValue.get();
+          break;
+        }
+      }
+    }
+
+    if (ATH_UNLIKELY(fillerVariables.size() != variables.size()
+	                  || (fillerWeight != "" && !weight)
+	                  || (fillerCutMask != "" && !cutmask))) {
       ATH_MSG_DEBUG("Filler has different variables than monitoredVariables");
       ATH_MSG_DEBUG("Filler variables            : " << fillerVariables);
       ATH_MSG_DEBUG("Asked to fill from mon. vars: " << monitoredVariables);
       ATH_MSG_DEBUG("Selected monitored variables: " << variables);
       continue;
     }
-    std::shared_ptr<HistogramFiller> fillerCopy(filler->clone());
-    fillerCopy->setMonitoredVariables(variables);
+    HistogramFiller* fillerCopy(filler->clone());
+    fillerCopy->setMonitoredVariables(std::move(variables));
     fillerCopy->setMonitoredWeight(weight);
-    result.push_back(fillerCopy);
+    fillerCopy->setMonitoredCutMask(cutmask);
+    result.emplace_back(fillerCopy);
   }
 
   return result;
diff --git a/Control/AthenaMonitoringKernel/src/HistogramDef.cxx b/Control/AthenaMonitoringKernel/src/HistogramDef.cxx
index cf6cb46fbda4e3652dcb272fd5da18f5d5c9795e..5dc47585962078e013a9d80b8f52c6b37d3617dc 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramDef.cxx
+++ b/Control/AthenaMonitoringKernel/src/HistogramDef.cxx
@@ -20,6 +20,7 @@ const HistogramDef HistogramDef::parse(const std::string& histogramDefinition) {
   result.opt = setting["opt"];
   result.convention = setting["convention"];
   result.weight = setting["weight"];
+  result.cutMask = setting["cutMask"];
 
   result.xvar = setting["xvar"];
   result.xbins = setting["xbins"];
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/CumulativeHistogramFiller1D.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/CumulativeHistogramFiller1D.h
index daf5816ec2a76ff6ba7ef4c011ce231283ef0608..f26edca9ccc60d3f20ed90346b377455b04e7c82 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/CumulativeHistogramFiller1D.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/CumulativeHistogramFiller1D.h
@@ -16,7 +16,7 @@ namespace Monitored {
     CumulativeHistogramFiller1D(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller1D(definition, provider) {}
 
-    virtual CumulativeHistogramFiller1D* clone() override {
+    virtual CumulativeHistogramFiller1D* clone() const override {
       return new CumulativeHistogramFiller1D( *this );
     }
 
@@ -26,12 +26,25 @@ namespace Monitored {
         return 0;
       }
 
+      size_t varVecSize = m_monVariables.at(0).get().size();
+
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      if (ATH_UNLIKELY(cutMaskValuePair.first > 1 && cutMaskValuePair.first != varVecSize)) {
+        MsgStream log(Athena::getMessageSvc(), "CumulativeHistogramFiller1D");
+        log << MSG::ERROR << "CutMask does not match the size of plotted variable: " 
+            << cutMaskValuePair.first << " " << varVecSize << endmsg;
+      }
+      auto cutMaskValue = cutMaskValuePair.second;
+
       unsigned i(0);
       auto histogram = this->histogram<TH1>();
-      auto valuesVector = m_monVariables[0].get().getVectorRepresentation();
+      auto valuesVector{m_monVariables[0].get().getVectorRepresentation()};
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
-
+      size_t idx = 0;
       for (auto value : valuesVector) {
+        if (!cutMaskValue(idx++)) { continue; }
         unsigned bin = histogram->FindBin(value);
 
         for (unsigned j = bin; j > 0; --j) {
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller1D.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller1D.h
index 2fece6ef8a598e50c3344c44ca278e91cc7f0c97..3439b1f073927c57a66edd4fb63c047ffc5ca061 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller1D.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller1D.h
@@ -8,7 +8,8 @@
 #include "TH1.h"
 
 #include "AthenaMonitoringKernel/HistogramFiller.h"
-#include <boost/range/combine.hpp>
+#include "CxxUtils/AthUnlikelyMacros.h"
+#include "GaudiKernel/MsgStream.h"
 
 namespace Monitored {
   /**
@@ -20,40 +21,64 @@ namespace Monitored {
       : HistogramFiller(definition, provider) {
     }
 
-    virtual HistogramFiller1D* clone() override {
+    virtual HistogramFiller1D* clone() const override {
       return new HistogramFiller1D( *this );
     }
 
     virtual unsigned fill() override {
       if (m_monVariables.size() != 1) { return 0; }
+      size_t varVecSize = m_monVariables.at(0).get().size();
+
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      if (ATH_UNLIKELY(cutMaskValuePair.first > 1 && cutMaskValuePair.first != varVecSize)) {
+        MsgStream log(Athena::getMessageSvc(), "HistogramFiller1D");
+        log << MSG::ERROR << "CutMask does not match the size of plotted variable: " 
+            << cutMaskValuePair.first << " " << varVecSize << endmsg;
+      }
+      auto cutMaskAccessor = cutMaskValuePair.second;
 
       std::function<double(size_t)> weightValue = [] (size_t ){ return 1.0; };  // default is always 1.0
-      std::vector<double> weightVector;
+      const std::vector<double> weightVector{m_monWeight ? m_monWeight->getVectorRepresentation() : std::vector<double>{}};
       if ( m_monWeight != nullptr ) {
-        weightVector = m_monWeight->getVectorRepresentation();
-        weightValue = [&](size_t i){ return weightVector[i]; };
+        if (weightVector.size() == 1) {
+          weightValue = [=](size_t){ return weightVector[0]; };
+        } else {
+          weightValue = [&](size_t i){ return weightVector[i]; };
+          if (ATH_UNLIKELY(weightVector.size() != varVecSize)) {
+            MsgStream log(Athena::getMessageSvc(), "HistogramFiller1D");
+            log << MSG::ERROR << "Weight does not match the size of plotted variable: " 
+                << weightVector.size() << " " << varVecSize << endmsg;
+          }
+        }
       }
 
       if ( not m_monVariables.at(0).get().hasStringRepresentation() ) {
-        const auto valuesVector = m_monVariables.at(0).get().getVectorRepresentation();
-        fill( std::size( valuesVector), [&](size_t i){ return valuesVector[i]; }, weightValue );
+        const auto valuesVector{m_monVariables.at(0).get().getVectorRepresentation()};
+        fill( std::size( valuesVector), [&](size_t i){ return valuesVector[i]; }, weightValue, cutMaskAccessor );
         return std::size( valuesVector );
       } else {
-        const auto valuesVector = m_monVariables.at(0).get().getStringVectorRepresentation();
-        fill( std::size( valuesVector ), [&](size_t i){ return valuesVector[i].c_str(); }, weightValue );
+        const auto valuesVector{m_monVariables.at(0).get().getStringVectorRepresentation()};
+        fill( std::size( valuesVector ), [&](size_t i){ return valuesVector[i].c_str(); }, weightValue, cutMaskAccessor );
         return std::size( valuesVector );
       }
     }
 
   protected:
 
-    template<typename F1, typename F2>
-    void fill( size_t n, F1 f1, F2 f2 ) {
+    // The following method takes the length of the vector of values and three functions as arguments:
+    // a function that returns a value, one that returns a weight, and one that functions as a cut mask
+    // template allows us to support both floating point and string variable fill calls
+    template<typename F1, typename F2, typename F3>
+    void fill( size_t n, F1 f1, F2 f2, F3 f3 ) {
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
 
       auto histogram = this->histogram<TH1>();
       for ( size_t i = 0; i < n; ++i ) {
-        histogram->Fill( f1(i), f2(i) );
+        if (f3(i)) {
+          histogram->Fill( f1(i), f2(i) );
+        }
       }
     }
   };
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2D.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2D.h
index e2861e7961bbc78f8845b6f3b0caef866ba5c9bc..a2448f034b590cdb760400ffaa8069c3eddb3980 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2D.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2D.h
@@ -7,9 +7,9 @@
 
 #include "TH2.h"
 
-#include <boost/range/combine.hpp>
 #include "AthenaMonitoringKernel/HistogramFiller.h"
-
+#include "CxxUtils/AthUnlikelyMacros.h"
+#include "GaudiKernel/MsgStream.h"
 
 namespace Monitored {
   /**
@@ -20,26 +20,44 @@ namespace Monitored {
     HistogramFiller2D(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller(definition, provider) {}
 
-    virtual HistogramFiller2D* clone() override {
-      return new HistogramFiller2D( *this );
+    virtual HistogramFiller2D* clone() const override {
+      return new HistogramFiller2D( *this ); 
     }
-
-
+    
     virtual unsigned fill() override {
-      if (m_monVariables.size() != 2) {
+      if (ATH_UNLIKELY(m_monVariables.size() != 2)) {
+        return 0;
+      }
+      size_t size1 {m_monVariables[0].get().size()}, size2{m_monVariables[1].get().size()};
+      if (ATH_UNLIKELY(size1 == 0 || size2 == 0)) {
+        // nothing to do
         return 0;
       }
 
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      auto cutMaskAccessor = cutMaskValuePair.second;
+
       // handling of the weight
       std::function<double(size_t)> weightAccessor = [] (size_t ){ return 1.0; };  // default is always 1.0
-      std::vector<double> weightVector;
+      const std::vector<double> weightVector{m_monWeight ? m_monWeight->getVectorRepresentation() : std::vector<double>{}};
       if ( m_monWeight != nullptr ) {
-	weightVector = m_monWeight->getVectorRepresentation();
-	weightAccessor = [&](size_t i){
-	  if ( weightVector.size() == 1 )
-	    return weightVector[0];
-	  return weightVector[i];
-	};
+        if (weightVector.size() == 1) {
+          weightAccessor = [=](size_t){ return weightVector[0]; };
+        } else {
+        	weightAccessor = [&](size_t i){ return weightVector[i]; }; 
+        }
+      }
+
+      if (ATH_UNLIKELY(size1 > 1 && size2 > 1 
+          && (size1 != size2 
+              || (weightVector.size() > 1 && size1 != weightVector.size())
+              || (cutMaskValuePair.first > 1 && size1 != cutMaskValuePair.first)
+           ))) {
+        MsgStream log(Athena::getMessageSvc(), "HistogramFiller2D");
+        log << MSG::ERROR << "Mismatch of provided vector sizes for " << m_histDef->alias << endmsg;
+        return 0;
       }
 
       struct Extractor {
@@ -81,24 +99,26 @@ namespace Monitored {
       // double-double, string-double, double-string and string-string in calling the fill, we always pass the weigh
       const size_t maxsize = std::max( value1.size(), value2.size() );
       if ( value1.doublesAccessor and value2.doublesAccessor )
-	fill( maxsize, value1.doublesAccessor, value2.doublesAccessor, weightAccessor );
+	fill( maxsize, value1.doublesAccessor, value2.doublesAccessor, weightAccessor, cutMaskAccessor );
       else if ( value1.stringsAccessor and value2.doublesAccessor )
-	fill( maxsize, value1.stringsAccessor, value2.doublesAccessor, weightAccessor );
+	fill( maxsize, value1.stringsAccessor, value2.doublesAccessor, weightAccessor, cutMaskAccessor );
       else if ( value1.doublesAccessor and value2.stringsAccessor )
-	fill( maxsize, value1.doublesAccessor, value2.stringsAccessor, weightAccessor );
+	fill( maxsize, value1.doublesAccessor, value2.stringsAccessor, weightAccessor, cutMaskAccessor );
       else
-	fill( maxsize, value1.stringsAccessor, value2.stringsAccessor, weightAccessor );
+	fill( maxsize, value1.stringsAccessor, value2.stringsAccessor, weightAccessor, cutMaskAccessor );
       return maxsize;
     }
 
   protected:
-    template<typename F1, typename F2, typename F3>
-    void fill( size_t n, F1 f1, F2 f2, F3 f3 ) {
+    template<typename F1, typename F2, typename F3, typename F4>
+    void fill( size_t n, F1 f1, F2 f2, F3 f3, F4 f4 ) {
 
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
       auto histogram = this->histogram<TH2>();
       for ( size_t i = 0; i < n; ++i ) {
-	histogram->Fill( f1(i), f2(i), f3(i) );
+        if (f4(i)) {
+        	histogram->Fill( f1(i), f2(i), f3(i) );
+        }
       }
     }
 
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2DProfile.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2DProfile.h
index 8825afea79beb96e8d894ca7dbff47d20e32d764..60725582cadf1c3fec2f2dff8441252a20c51c01 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2DProfile.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFiller2DProfile.h
@@ -18,7 +18,7 @@ namespace Monitored {
     HistogramFiller2DProfile(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller(definition, provider) {}
 
-    virtual HistogramFiller2DProfile* clone() override {
+    virtual HistogramFiller2DProfile* clone() const override {
       return new HistogramFiller2DProfile( *this );
     }
 
@@ -28,10 +28,15 @@ namespace Monitored {
         return 0;
       }
 
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      auto cutMaskAccessor = cutMaskValuePair.second;
+
       auto histogram = this->histogram<TProfile2D>();
-      auto valuesVector1 = m_monVariables[0].get().getVectorRepresentation();
-      auto valuesVector2 = m_monVariables[1].get().getVectorRepresentation();
-      auto valuesVector3 = m_monVariables[2].get().getVectorRepresentation();
+      const auto valuesVector1{m_monVariables[0].get().getVectorRepresentation()};
+      const auto valuesVector2{m_monVariables[1].get().getVectorRepresentation()};
+      const auto valuesVector3{m_monVariables[2].get().getVectorRepresentation()};
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
       /*HERE NEED TO INCLUDE CASE IN WHICH SOME VARIABLES ARE SCALAR AND SOME VARIABLES ARE VECTORS
       unsigned i(0);
@@ -42,16 +47,21 @@ namespace Monitored {
       //For now lets just consider the case in which all variables are of the same length
       if ( m_monWeight && m_monWeight->getVectorRepresentation().size()==valuesVector1.size() ) {
         // Weighted fill
-        auto weightVector = m_monWeight->getVectorRepresentation();
+        const auto weightVector{m_monWeight->getVectorRepresentation()};
         double value1,value2,value3,weight;
+        size_t idx = 0;
         for (const auto& zipped : boost::combine(valuesVector1,valuesVector2,valuesVector3,weightVector)) {
-          boost::tie(value1,value2,value3,weight) = zipped;
-          histogram->Fill(value1,value2,value3,weight);
+          if (cutMaskAccessor(idx++)) { 
+            boost::tie(value1,value2,value3,weight) = zipped;
+            histogram->Fill(value1,value2,value3,weight);
+          }
         }
       } else {
         // Unweighted fill
         for (unsigned i = 0; i < std::size(valuesVector1); ++i) {
-          histogram->Fill(valuesVector1[i], valuesVector2[i], valuesVector3[i]);
+          if (cutMaskAccessor(i)) {
+            histogram->Fill(valuesVector1[i], valuesVector2[i], valuesVector3[i]);
+          }
         }
       }
       return std::size(valuesVector1);
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerEfficiency.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerEfficiency.h
index c0cec043768c18a505fe9fce7696b573d9af6b5f..5ae54389b214d726e3b346120320d943b075ccf5 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerEfficiency.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerEfficiency.h
@@ -19,37 +19,54 @@ namespace Monitored {
     HistogramFillerEfficiency(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller(definition, provider) {}
 
-    virtual HistogramFillerEfficiency* clone() override {
+    virtual HistogramFillerEfficiency* clone() const override {
       return new HistogramFillerEfficiency( *this );
     }
 
     virtual unsigned fill() override {
+      size_t varVecSize = m_monVariables.at(0).get().size();
+
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      if (ATH_UNLIKELY(cutMaskValuePair.first > 1 && cutMaskValuePair.first != varVecSize)) {
+        MsgStream log(Athena::getMessageSvc(), "HistogramFillerEfficiency");
+        log << MSG::ERROR << "CutMask does not match the size of plotted variable: " 
+            << cutMaskValuePair.first << " " << varVecSize << endmsg;
+      }
+      auto cutMaskAccessor = cutMaskValuePair.second;
+
       auto efficiency = this->histogram<TEfficiency>();
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
 
       int nMonVar = m_monVariables.size();
       if ( nMonVar==2 ) { // Single observable (1D TEfficiency)
-        auto valuesVector0 = m_monVariables[0].get().getVectorRepresentation();
-        auto valuesVector1 = retrieveVariable(efficiency, 1);
+        const auto valuesVector0 = m_monVariables[0].get().getVectorRepresentation();
+        const auto valuesVector1 = retrieveVariable(efficiency, 1);
         for (unsigned i = 0; i < std::size(valuesVector0); ++i) {
-          efficiency->Fill(valuesVector0[i], valuesVector1[i]);
+          if (cutMaskAccessor(i)) {
+            efficiency->Fill(valuesVector0[i], valuesVector1[i]);
+          }
         }
         return std::size(valuesVector0);
       } else if ( nMonVar==3 ) { // Two observables (2D TEfficiency)
-        auto valuesVector0 = m_monVariables[0].get().getVectorRepresentation();
-        auto valuesVector1 = retrieveVariable(efficiency, 1);
-        auto valuesVector2 = retrieveVariable(efficiency, 2);
+        const auto valuesVector0 = m_monVariables[0].get().getVectorRepresentation();
+        const auto valuesVector1 = retrieveVariable(efficiency, 1);
+        const auto valuesVector2 = retrieveVariable(efficiency, 2);
         for (unsigned i = 0; i < std::size(valuesVector0); ++i) {
-          efficiency->Fill(valuesVector0[i], valuesVector1[i], valuesVector2[i]);
+          if (cutMaskAccessor(i)) {
+            efficiency->Fill(valuesVector0[i], valuesVector1[i], valuesVector2[i]);
+          }
         }
         return std::size(valuesVector0);
       } else if ( nMonVar==4 ) { // Three observables (3D Efficiency)
-        auto valuesVector0 = m_monVariables[0].get().getVectorRepresentation();
-        auto valuesVector1 = retrieveVariable(efficiency, 1);
-        auto valuesVector2 = retrieveVariable(efficiency, 2);
-        auto valuesVector3 = retrieveVariable(efficiency, 3);
+        const auto valuesVector0 = m_monVariables[0].get().getVectorRepresentation();
+        const auto valuesVector1 = retrieveVariable(efficiency, 1);
+        const auto valuesVector2 = retrieveVariable(efficiency, 2);
+        const auto valuesVector3 = retrieveVariable(efficiency, 3);
         for (unsigned i = 0; i < std::size(valuesVector0); ++i) {
-          efficiency->Fill(valuesVector0[i], valuesVector1[i], valuesVector2[i], valuesVector3[i]);
+          if (cutMaskAccessor(i)) {
+            efficiency->Fill(valuesVector0[i], valuesVector1[i], valuesVector2[i], valuesVector3[i]);
+          }
         }
         return std::size(valuesVector0);
       } else {
@@ -59,9 +76,8 @@ namespace Monitored {
 
     const std::vector<double> retrieveVariable(TEfficiency* efficiency, int iVariable) {
       auto valueVariable = m_monVariables[iVariable];
-      auto valuesVector = valueVariable.get().getVectorRepresentation();
+      std::vector<double> valuesVector;
       if ( valueVariable.get().hasStringRepresentation() ) {
-        valuesVector.clear();
         TH1* tot ATLAS_THREAD_SAFE  = const_cast<TH1*>(efficiency->GetTotalHistogram());
         const TAxis* axis = getAxis(tot, iVariable);
         for ( const std::string& value : valueVariable.get().getStringVectorRepresentation() ) {
@@ -69,6 +85,8 @@ namespace Monitored {
           const double binCenter ATLAS_THREAD_SAFE = axis->GetBinCenter(binNumber);
           valuesVector.push_back(binCenter);
         }
+      } else {
+        valuesVector = valueVariable.get().getVectorRepresentation();
       }
       return valuesVector;
     }
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerProfile.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerProfile.h
index 66c47a5bd8a693890161562424e08b5ea5d679de..8e455ff4e6f5489b93ac1255cb8a9d9eddaf3549 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerProfile.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerProfile.h
@@ -8,6 +8,7 @@
 #include "TProfile.h"
 
 #include "AthenaMonitoringKernel/HistogramFiller.h"
+#include "boost/range/combine.hpp"
 
 namespace Monitored {
   /**
@@ -18,7 +19,7 @@ namespace Monitored {
     HistogramFillerProfile(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller(definition, provider) {}
 
-    virtual HistogramFillerProfile* clone() override {
+    virtual HistogramFillerProfile* clone() const override {
       return new HistogramFillerProfile( *this );
     }
 
@@ -27,17 +28,42 @@ namespace Monitored {
         return 0;
       }
 
-      unsigned i(0);
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      auto cutMaskAccessor = cutMaskValuePair.second;
+
+      // handling of the weight
+      std::function<double(size_t)> weightAccessor = [] (size_t ){ return 1.0; };  // default is always 1.0
+      const std::vector<double> weightVector{m_monWeight ? m_monWeight->getVectorRepresentation() : std::vector<double>{}};
+      if ( m_monWeight != nullptr ) {
+        if (weightVector.size() == 1) {
+          weightAccessor = [=](size_t){ return weightVector[0]; };
+        } else {
+        	weightAccessor = [&](size_t i){ return weightVector[i]; }; 
+        }
+      }
+
       auto histogram = this->histogram<TProfile>();
-      auto valuesVector1 = m_monVariables[0].get().getVectorRepresentation();
-      auto valuesVector2 = m_monVariables[1].get().getVectorRepresentation();
-      const unsigned size1 = std::size(valuesVector1);
-      const unsigned size2 = std::size(valuesVector2);
+      const auto valuesVector1{m_monVariables[0].get().getVectorRepresentation()};
+      const auto valuesVector2{m_monVariables[1].get().getVectorRepresentation()};
+      const size_t size1 = std::size(valuesVector1);
+      const size_t size2 = std::size(valuesVector2);
       const bool isAnyVectorEmpty = size1 == 0 || size2 == 0;
       const bool isAnyVectorScalar = size1 == 1 || size2 == 1;
       const bool areVectorsSameSize = size1 == size2;
       const bool areVectorsValid = !isAnyVectorEmpty && (areVectorsSameSize || isAnyVectorScalar);
       if (!areVectorsValid) return 0;
+      if (ATH_UNLIKELY(!isAnyVectorScalar 
+                        && ((weightVector.size() > 1 && size1 != weightVector.size())
+                            || (cutMaskValuePair.first > 1 && size1 != cutMaskValuePair.first)
+                          )
+                      )
+        ) {
+        MsgStream log(Athena::getMessageSvc(), "HistogramFillerProfile");
+        log << MSG::ERROR << "Mismatch of provided vector sizes for " << m_histDef->alias << endmsg;
+        return 0;
+      }
 
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
 
@@ -45,58 +71,28 @@ namespace Monitored {
 	const auto xmax = std::max_element(begin(valuesVector1), end(valuesVector1));
 	if (shouldRebinHistogram(*xmax)) { rebinHistogram(*xmax); }
       }
-      
-      if (areVectorsSameSize) { // Two equal-size vectors
-        if ( m_monWeight && m_monWeight->getVectorRepresentation().size()==valuesVector1.size() ) {
-          // Weighted fill
-          auto weightVector = m_monWeight->getVectorRepresentation();
-          double value1,value2,weight;
-          for (const auto& zipped : boost::combine(valuesVector1,valuesVector2,weightVector)) {
-            boost::tie(value1,value2,weight) = zipped;
-            histogram->Fill(value1,value2,weight);
-          }
-        } else {
-          // Unweighted fill
-          for (i = 0; i < std::size(valuesVector1); ++i) {
-            histogram->Fill(valuesVector1[i], valuesVector2[i]);
-          }
-        }
 
-      } else if (size1==1) { // first variable is scalar -- loop over second
-        if ( m_monWeight && m_monWeight->getVectorRepresentation().size()==valuesVector2.size() ) {
-          // Weighted fill
-          auto weightVector = m_monWeight->getVectorRepresentation();
-          double value2,weight;
-          for (const auto& zipped : boost::combine(valuesVector2,weightVector)) {
-            boost::tie(value2,weight) = zipped;
-            histogram->Fill(valuesVector1[0],value2,weight);
-          }
-        } else {
-          // Unweighted fill
-          for (auto value2 : valuesVector2) {
-            histogram->Fill(valuesVector1[0], value2);
-            ++i;
-          }
-        }
+      std::function<double(size_t)> fillFunc1, fillFunc2;
+      if (size1 == 1) {
+        fillFunc1 = [=](size_t){ return valuesVector1[0]; };
+      } else {
+        fillFunc1 = [&](size_t i){ return valuesVector1[i]; };
+      }
 
-      } else if (size2==1) { // second variable is scalar -- loop over first
-        if ( m_monWeight && m_monWeight->getVectorRepresentation().size()==valuesVector1.size() ) {
-          // Weighted fill
-          auto weightVector = m_monWeight->getVectorRepresentation();
-          double value1,weight;
-          for (const auto& zipped : boost::combine(valuesVector1,weightVector)) {
-            boost::tie(value1,weight) = zipped;
-            histogram->Fill(value1,valuesVector2[0],weight);
-          }
-        } else {
-          // Unweighted fill
-          for (auto value1 : valuesVector1) {
-            histogram->Fill(value1, valuesVector2[0]); 
-            ++i;
-          }
+      if (size2 == 1) {
+        fillFunc2 = [=](size_t){ return valuesVector2[0]; };
+      } else {
+        fillFunc2 = [&](size_t i){ return valuesVector2[i]; };
+      }
+                  
+      size_t itrSize = std::max(size1, size2);
+      
+      for (size_t idx = 0; idx < itrSize; ++idx) {
+        if (cutMaskAccessor(idx)) {
+          histogram->Fill(fillFunc1(idx), fillFunc2(idx), weightAccessor(idx));
         }
       }
-      return i;
+      return itrSize;
     }
     
   private:
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerRebinable1D.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerRebinable1D.h
index 6e882bc06361c9b95f96bb77f29a2dbb2c0a2c9a..73f6c2bf5f59748ce7aee8366bafab53455e071d 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerRebinable1D.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/HistogramFillerRebinable1D.h
@@ -24,7 +24,7 @@ namespace Monitored {
       }
     }
 
-    virtual HistogramFillerRebinable1D* clone() override {
+    virtual HistogramFillerRebinable1D* clone() const override {
       return new HistogramFillerRebinable1D( *this );
     }
 
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1D.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1D.h
index 0e918cc0e75c8e593550cbef5756152c8c3952ec..bf6a52eb90a111d8ea456123b28a9963ea1c16d6 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1D.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1D.h
@@ -13,7 +13,7 @@ namespace Monitored {
     VecHistogramFiller1D(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller1D(definition, provider) {}
 
-    virtual VecHistogramFiller1D* clone() override {
+    virtual VecHistogramFiller1D* clone() const override {
       return new VecHistogramFiller1D( *this );
     }
 
@@ -22,14 +22,26 @@ namespace Monitored {
         return 0;
       }
 
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      auto cutMaskAccessor = cutMaskValuePair.second;
+
       auto histogram = this->histogram<TH1>();
-      auto valuesVector = m_monVariables[0].get().getVectorRepresentation();
+      const auto valuesVector{m_monVariables[0].get().getVectorRepresentation()};
+      if (ATH_UNLIKELY(cutMaskValuePair.first > 1 && cutMaskValuePair.first != valuesVector.size())) {
+        MsgStream log(Athena::getMessageSvc(), "VecHistogramFiller1D");
+        log << MSG::ERROR << "CutMask does not match the size of plotted variable: " 
+            << cutMaskValuePair.first << " " << valuesVector.size() << endmsg;
+      }
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
 
       for (unsigned i = 0; i < std::size(valuesVector); ++i) {
-        auto value = valuesVector[i];
-        histogram->AddBinContent(i+1, value);
-        histogram->SetEntries(histogram->GetEntries() + value);
+        if (cutMaskAccessor(i)) {
+          auto value = valuesVector[i];
+          histogram->AddBinContent(i+1, value);
+          histogram->SetEntries(histogram->GetEntries() + value);
+        }
       }
 
       return std::size(valuesVector);  
diff --git a/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1DWithOverflows.h b/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1DWithOverflows.h
index 73ae3ecc7b44c97fd2b68116c1c4c1dea8e3be3b..7c78d17217a6c6532a47fe72a2e79a60ffbba28b 100644
--- a/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1DWithOverflows.h
+++ b/Control/AthenaMonitoringKernel/src/HistogramFiller/VecHistogramFiller1DWithOverflows.h
@@ -13,19 +13,35 @@ namespace Monitored {
     VecHistogramFiller1DWithOverflows(const HistogramDef& definition, std::shared_ptr<IHistogramProvider> provider)
       : HistogramFiller1D(definition, provider) {}
 
+    virtual VecHistogramFiller1DWithOverflows* clone() const override {
+      return new VecHistogramFiller1DWithOverflows( *this );
+    }
+
     virtual unsigned fill() override {
       if (m_monVariables.size() != 1) {
         return 0;
       }
 
+      // handling of the cutmask
+      auto cutMaskValuePair = getCutMaskFunc();
+      if (cutMaskValuePair.first == 0) { return 0; }
+      auto cutMaskAccessor = cutMaskValuePair.second;
+
       auto histogram = this->histogram<TH1>();
-      auto valuesVector = m_monVariables[0].get().getVectorRepresentation();
+      const auto valuesVector{m_monVariables[0].get().getVectorRepresentation()};
+      if (ATH_UNLIKELY(cutMaskValuePair.first > 1 && cutMaskValuePair.first != valuesVector.size())) {
+        MsgStream log(Athena::getMessageSvc(), "VecHistogramFiller1DWithOverflows");
+        log << MSG::ERROR << "CutMask does not match the size of plotted variable: " 
+            << cutMaskValuePair.first << " " << valuesVector.size() << endmsg;
+      }
       std::lock_guard<std::mutex> lock(*(this->m_mutex));
 
       for (unsigned i = 0; i < std::size(valuesVector); ++i) {
-        auto value = valuesVector[i];
-        histogram->AddBinContent(i, value);
-        histogram->SetEntries(histogram->GetEntries() + value);
+        if (cutMaskAccessor(i)) {
+          auto value = valuesVector[i];
+          histogram->AddBinContent(i, value);
+          histogram->SetEntries(histogram->GetEntries() + value);
+        }
       }
 
       return std::size(valuesVector);
diff --git a/Control/AthenaMonitoringKernel/test/GenericMonFilling_test.cxx b/Control/AthenaMonitoringKernel/test/GenericMonFilling_test.cxx
index 1d1ebb0b36d0b96d788a19d7e676344d8373b5ea..3be668b71361331ceb3beef1c9dff3f2855837d7 100644
--- a/Control/AthenaMonitoringKernel/test/GenericMonFilling_test.cxx
+++ b/Control/AthenaMonitoringKernel/test/GenericMonFilling_test.cxx
@@ -32,6 +32,7 @@ void resetHists( ITHistSvc* histSvc ) {
   resetHist( histSvc, "/EXPERT/TestGroup/Eta_vs_Phi" );
   resetHist( histSvc, "/EXPERT/TestGroup/Eta" );
   resetHist( histSvc, "/EXPERT/TestGroup/Phi" );
+  resetHist( histSvc, "/EXPERT/TestGroup/Eta_CutMask");
 }
 
 double contentInBin1DHist( ITHistSvc* histSvc, const std::string& histName, int bin ) {
@@ -153,7 +154,7 @@ bool fill2DWorked( ToolHandle<GenericMonitoringTool>& monTool, ITHistSvc* histSv
   return true;
 }
 
-bool fillExplcitelyWorked( ToolHandle<GenericMonitoringTool>& monTool, ITHistSvc* histSvc ) {
+bool fillExplicitlyWorked( ToolHandle<GenericMonitoringTool>& monTool, ITHistSvc* histSvc ) {
   resetHists( histSvc );
   auto roiPhi = Monitored::Scalar( "Phi", -99.0 );
   auto roiEta = Monitored::Scalar( "Eta", -99.0 );
@@ -191,6 +192,34 @@ bool fillExplcitelyWorked( ToolHandle<GenericMonitoringTool>& monTool, ITHistSvc
   return true;
 }
 
+bool fillWithCutMaskWorked( ToolHandle<GenericMonitoringTool>& monTool, ITHistSvc* histSvc ) {
+  resetHists( histSvc );
+  for (int ctr = 0; ctr < 10; ++ctr) {
+    auto roiEta = Monitored::Scalar<double>( "Eta", -99 ); //explicit double
+    auto cutMask = Monitored::Scalar<bool>( "CutMask", (ctr % 2) == 0);
+    auto monitorIt = Monitored::Group( monTool, roiEta, cutMask );
+    roiEta = -0.2;
+    monitorIt.fill();
+  }
+
+  VALUE( contentInBin1DHist( histSvc, "/EXPERT/TestGroup/Eta_CutMask", 1 ) ) EXPECTED( 5 );
+  VALUE( contentInBin1DHist( histSvc, "/EXPERT/TestGroup/Eta_CutMask", 2 ) ) EXPECTED( 0 );
+
+  resetHists( histSvc );
+  {
+    std::vector<float> etaVec{-0.2, 0.2, -0.4, 0.4, -0.6};
+    auto roiEta = Monitored::Collection( "Eta", etaVec );
+    std::vector<char> cutMaskVec =  { 0, 1, 1, 1, 0 };
+    auto cutMask = Monitored::Collection( "CutMask", cutMaskVec );
+    auto monitorIt = Monitored::Group( monTool, roiEta, cutMask );
+  }
+
+  VALUE( contentInBin1DHist( histSvc, "/EXPERT/TestGroup/Eta_CutMask", 1 ) ) EXPECTED( 1 );
+  VALUE( contentInBin1DHist( histSvc, "/EXPERT/TestGroup/Eta_CutMask", 2 ) ) EXPECTED( 2 );
+
+  return true;
+}
+
 class Scalar {
 public:
     Scalar() : m_value( 0 ) { }
@@ -424,16 +453,28 @@ int main() {
     return -1;
   }
 
+  log << MSG::DEBUG << "Histograms defined: " << histSvc->getHists() << endmsg;
+  log << MSG::DEBUG << "fillFromScalarWorked" << endmsg;
   assert( fillFromScalarWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "noToolBehaviourCorrect" << endmsg;
   assert( noToolBehaviourCorrect( emptyMon ) );
+  log << MSG::DEBUG << "fillFromScalarIndependentScopesWorked" << endmsg;
   assert( fillFromScalarIndependentScopesWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "fill2DWorked" << endmsg;
   assert( fill2DWorked( validMon, histSvc ) );
-  assert( fillExplcitelyWorked( validMon, histSvc ) );
-  assert( fillFromScalarIndependentScopesWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "fillExplicitlyWorked" << endmsg;
+  assert( fillExplicitlyWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "fillWithCutMaskWorked" << endmsg;
+  assert( fillWithCutMaskWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "assignWorked" << endmsg;
   assert( assignWorked() );
+  log << MSG::DEBUG << "operatorsWorked" << endmsg;
   assert( operatorsWorked() );
+  log << MSG::DEBUG << "timerFillingWorked" << endmsg;
   assert( timerFillingWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "stringFillingWorked" << endmsg;
   assert( stringFillingWorked( validMon, histSvc ) );
+  log << MSG::DEBUG << "string2DFillingWorked" << endmsg;
   assert( string2DFillingWorked( validMon, histSvc ) );
   log << MSG::DEBUG << "All OK"  << endmsg;
 
diff --git a/Control/AthenaMonitoringKernel/test/GenericMonParsing_test.cxx b/Control/AthenaMonitoringKernel/test/GenericMonParsing_test.cxx
index f509681bb7837723cdec5c48726c2d44cf87f727..8f6831a9ad82cb7c94b871e4bad5c0d360143f35 100644
--- a/Control/AthenaMonitoringKernel/test/GenericMonParsing_test.cxx
+++ b/Control/AthenaMonitoringKernel/test/GenericMonParsing_test.cxx
@@ -23,6 +23,7 @@ json defaultJson() {
   j["title"] = "var";
   j["type"] = "TH1F";
   j["weight"] = "";
+  j["cutMask"] = "";
   j["xarray"] = json::array();
   j["xbins"] = 100;
   j["xlabels"] = json::array();
@@ -69,6 +70,7 @@ bool parse1D_options() {
   check["path"] = "mypath/tohistograms";
   check["type"] = "TH1D";
   check["weight"] = "myweight";
+  check["cutMask"] = "mycutmask";
   auto def = HistogramDef::parse(check.dump());
 
   VALUE ( def.ok ) EXPECTED ( true );
@@ -80,6 +82,7 @@ bool parse1D_options() {
   VALUE ( def.path ) EXPECTED ( "mypath/tohistograms" );
   VALUE ( def.type ) EXPECTED ( "TH1D" );
   VALUE ( def.weight ) EXPECTED ( "myweight" );
+  VALUE ( def.cutMask ) EXPECTED ( "mycutmask" );
 
   return true;
 }
diff --git a/Control/AthenaMonitoringKernel/test/HistogramFillerFactoryTestSuite.cxx b/Control/AthenaMonitoringKernel/test/HistogramFillerFactoryTestSuite.cxx
index 2708d013222db8e4e7c17d2cd8d87c4e28eb5f65..9c60db5cdbf16c5dad068947ffbf345e4f744b78 100644
--- a/Control/AthenaMonitoringKernel/test/HistogramFillerFactoryTestSuite.cxx
+++ b/Control/AthenaMonitoringKernel/test/HistogramFillerFactoryTestSuite.cxx
@@ -48,7 +48,7 @@ class HistogramProviderGetter : public HistogramFiller {
       : HistogramFiller(hf) {}
 
     virtual unsigned fill() { return 0; }
-    virtual HistogramFiller* clone() { return nullptr; }
+    virtual HistogramFiller* clone() const { return nullptr; }
 
     std::shared_ptr<IHistogramProvider> histogramProvider() { return m_histogramProvider; }
 };
diff --git a/Control/AthenaMonitoringKernel/test/mocks/MockMonitoredVariable.h b/Control/AthenaMonitoringKernel/test/mocks/MockMonitoredVariable.h
index d170e7797162f713d57a65a7371338de06c8cfe6..0c1949d9e3bc9910367dd3f915de0f0122bf63a0 100644
--- a/Control/AthenaMonitoringKernel/test/mocks/MockMonitoredVariable.h
+++ b/Control/AthenaMonitoringKernel/test/mocks/MockMonitoredVariable.h
@@ -10,11 +10,12 @@ class MockMonitoredVariable : public Monitored::IMonitoredVariable {
     MockMonitoredVariable(const std::string& name) : IMonitoredVariable(name) {}
 
     std::function<std::vector<double>()> mock_getVectorRepresentation;
-    const std::vector<double> getVectorRepresentation() const override {
+    std::vector<double> getVectorRepresentation() const override {
       return mock_getVectorRepresentation ? mock_getVectorRepresentation() : std::vector<double>();
     }
     bool hasStringRepresentation() const override {  return false; }
-    std::vector<std::string> getStringVectorRepresentation() const override { return {}; } 
+    std::vector<std::string> getStringVectorRepresentation() const override { return {}; }
+    size_t size() const override { return getVectorRepresentation().size(); }
 };
 
 #endif /* AthenaMonitoringKernel_test_mocks_MockMonitoredVariable_h */
diff --git a/Control/AthenaMonitoringKernel/test/test_defineHistogram.py b/Control/AthenaMonitoringKernel/test/test_defineHistogram.py
index 60864e4468001afe97b04d61c84220345ff1bd26..318eade857e6298f10142b8b9def9f175256ac1d 100644
--- a/Control/AthenaMonitoringKernel/test/test_defineHistogram.py
+++ b/Control/AthenaMonitoringKernel/test/test_defineHistogram.py
@@ -11,68 +11,73 @@ from AthenaMonitoringKernel.GenericMonitoringTool import defineHistogram
 class Test( unittest.TestCase ):
    def test_1D( self ):
       check = defineHistogram('var', 'TH1F', 'EXPERT', 'title', '', '', 10, 0.0, 10.0)
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "EXPERT", "title": "title", "type": "TH1F", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "EXPERT", "title": "title", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_1D_opt( self ):
       check = defineHistogram('var', opt='myopt')
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "myopt", "path": "", "title": "var", "type": "TH1F", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "myopt", "path": "", "title": "var", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_1D_weight( self ):
       check = defineHistogram('var', weight='myweight')
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "myweight", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "myweight", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      self.assertEqual(json.loads(check), json.loads(true))
+
+   def test_1D_cutmask( self ):
+      check = defineHistogram('var', cutmask='mycutmask')
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "cutMask": "mycutmask", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_1D_array( self ):
       check = defineHistogram('var', xbins=[0, 1, 2, 4, 8])
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "xarray": [0, 1, 2, 4, 8], "xbins": 4, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [0, 1, 2, 4, 8], "xbins": 4, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_1D_title( self ):
       check = defineHistogram('var', title='mytitle')
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "mytitle", "type": "TH1F", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "mytitle", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_1D_labelsX( self ):
       check = defineHistogram('var', xlabels=["bin0", "bin1"])
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "xarray": [], "xbins": 2, "xlabels": ["bin0", "bin1"], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 2, "xlabels": ["bin0", "bin1"], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_1D_labelsY( self ):
       check = defineHistogram('var', ylabels=["bin0", "bin1"])
-      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 2, "ylabels": ["bin0", "bin1"], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "", "opt": "", "path": "", "title": "var", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 2, "ylabels": ["bin0", "bin1"], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_2D( self ):
       check = defineHistogram('varX,varY', type='TH2F', xbins=10, xmin=0.0, xmax=10.0, ybins=40, ymin=0.0, ymax=20.0)
-      true = '{"alias": "varX_vs_varY", "allvars": ["varX", "varY"], "convention": "", "opt": "", "path": "", "title": "varX,varY", "type": "TH2F", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "varX", "yarray": [], "ybins": 40, "ylabels": [], "ymax": 20.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "varX_vs_varY", "allvars": ["varX", "varY"], "convention": "", "opt": "", "path": "", "title": "varX,varY", "type": "TH2F", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "varX", "yarray": [], "ybins": 40, "ylabels": [], "ymax": 20.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_2D_array( self ):
       check = defineHistogram('varX,varY', 'TH2F', xbins=[0,1,2], ybins=[1,2,3,7])
-      true = '{"alias": "varX_vs_varY", "allvars": ["varX", "varY"], "convention": "", "opt": "", "path": "", "title": "varX,varY", "type": "TH2F", "weight": "", "xarray": [0, 1, 2], "xbins": 2, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "varX", "yarray": [1, 2, 3, 7], "ybins": 3, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "varX_vs_varY", "allvars": ["varX", "varY"], "convention": "", "opt": "", "path": "", "title": "varX,varY", "type": "TH2F", "weight": "", "cutMask": "", "xarray": [0, 1, 2], "xbins": 2, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "varX", "yarray": [1, 2, 3, 7], "ybins": 3, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_2D_labelsXY( self ):
       check = defineHistogram('varX,varY', 'TH2F', xlabels=["bin0", "bin1"], ylabels=["bin0", "bin1", "bin2"])
-      true = '{"alias": "varX_vs_varY", "allvars": ["varX", "varY"], "convention": "", "opt": "", "path": "", "title": "varX,varY", "type": "TH2F", "weight": "", "xarray": [], "xbins": 2, "xlabels": ["bin0", "bin1"], "xmax": 1, "xmin": 0, "xvar": "varX", "yarray": [], "ybins": 3, "ylabels": ["bin0", "bin1", "bin2"], "ymax": 0.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "varX_vs_varY", "allvars": ["varX", "varY"], "convention": "", "opt": "", "path": "", "title": "varX,varY", "type": "TH2F", "weight": "", "cutMask": "", "xarray": [], "xbins": 2, "xlabels": ["bin0", "bin1"], "xmax": 1, "xmin": 0, "xvar": "varX", "yarray": [], "ybins": 3, "ylabels": ["bin0", "bin1", "bin2"], "ymax": 0.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_3D( self ):
       check = defineHistogram('varX,varY,varZ', 'TProfile2D',
          xbins=10, xmin=0.0, xmax=10.0, ybins=40, ymin=0.0, ymax=20.0, zmin=-1.0, zmax=1.0)
-      true = '{"alias": "varX_vs_varY_vs_varZ", "allvars": ["varX", "varY", "varZ"], "convention": "", "opt": "", "path": "", "title": "varX,varY,varZ", "type": "TProfile2D", "weight": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "varX", "yarray": [], "ybins": 40, "ylabels": [], "ymax": 20.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 1.0, "zmin": -1.0, "zvar": "varZ"}'
+      true = '{"alias": "varX_vs_varY_vs_varZ", "allvars": ["varX", "varY", "varZ"], "convention": "", "opt": "", "path": "", "title": "varX,varY,varZ", "type": "TProfile2D", "weight": "", "cutMask": "", "xarray": [], "xbins": 10, "xlabels": [], "xmax": 10.0, "xmin": 0.0, "xvar": "varX", "yarray": [], "ybins": 40, "ylabels": [], "ymax": 20.0, "ymin": 0.0, "yvar": "varY", "zbins": 0, "zlabels": [], "zmax": 1.0, "zmin": -1.0, "zvar": "varZ"}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_efficiency( self ):
       check = defineHistogram('var,pass', type='TEfficiency')
-      true = '{"alias": "var_vs_pass", "allvars": ["var", "pass"], "convention": "", "opt": "", "path": "", "title": "var,pass", "type": "TEfficiency", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "pass", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var_vs_pass", "allvars": ["var", "pass"], "convention": "", "opt": "", "path": "", "title": "var,pass", "type": "TEfficiency", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "pass", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_offlineNamingConvention( self ):
       check = defineHistogram('var', path='EXPERT', convention='OFFLINE:lowStat')
-      true = '{"alias": "var", "allvars": ["var"], "convention": "OFFLINE:lowStat", "opt": "", "path": "EXPERT", "title": "var", "type": "TH1F", "weight": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
+      true = '{"alias": "var", "allvars": ["var"], "convention": "OFFLINE:lowStat", "opt": "", "path": "EXPERT", "title": "var", "type": "TH1F", "weight": "", "cutMask": "", "xarray": [], "xbins": 100, "xlabels": [], "xmax": 1, "xmin": 0, "xvar": "var", "yarray": [], "ybins": 0.0, "ylabels": [], "ymax": 0.0, "ymin": 0.0, "yvar": "", "zbins": 0, "zlabels": [], "zmax": 0.0, "zmin": 0.0, "zvar": ""}'
       self.assertEqual(json.loads(check), json.loads(true))
 
    def test_enforcePath( self ):
diff --git a/DataQuality/DataQualityTools/python/DQTLumiMonAlg.py b/DataQuality/DataQualityTools/python/DQTLumiMonAlg.py
index d6bfd47565458b54cacbcc1e03cbc7cf62b9a7c8..28df47023aa73c43a324a468d4a5b1e034e3e70a 100644
--- a/DataQuality/DataQualityTools/python/DQTLumiMonAlg.py
+++ b/DataQuality/DataQualityTools/python/DQTLumiMonAlg.py
@@ -20,7 +20,14 @@ def DQTLumiMonAlgConfig(flags, isOld=False):
                                     'CATEGORY_monitoring_muonIso','EF_muX')
     DQTLumiMonAlgConfigByTriggerChain(helper, DQTLumiMonAlg,
                                     'CATEGORY_primary_single_ele','EF_eX')
-    return helper.result()
+    if isOld:
+        return helper.result()
+    else:
+        result = helper.result()
+        from AtlasGeoModel.AtlasGeoModelConfig import AtlasGeometryCfg
+        result.merge(AtlasGeometryCfg(flags))
+        return result
+
 
 def DQTLumiMonAlgConfigByTriggerChain(helper, algConfObj, triggerChain='', triggerPath=''):
     monAlg = helper.addAlgorithm(algConfObj, 'DQTLumiMonAlg'+triggerPath)
diff --git a/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx b/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx
index e621ecf9b5d21ef3a2a8ec5172f9accd4e4a3357..a73005be38dedf3d38a189c5c84b15cf8fc8d5c6 100644
--- a/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx
+++ b/DataQuality/DataQualityTools/src/DQTDataFlowMonAlg.cxx
@@ -45,8 +45,8 @@ DQTDataFlowMonAlg::fillHistograms( const EventContext& ctx ) const
         fill(group, weight, lb);
       }
 
-      std::vector<int> detstatevec(EventInfo::nDets+1);
-      std::vector<int> detstatevec_idx(EventInfo::nDets+1);
+      std::vector<int> detstatevec(xAOD::EventInfo::nDets+1);
+      std::vector<int> detstatevec_idx(xAOD::EventInfo::nDets+1);
       std::iota(detstatevec_idx.begin(), detstatevec_idx.end(), 0);
 
       auto detstates = Collection("detstates", detstatevec);
diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3_Alg.h b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3_Alg.h
index 10e716285328d089979b90847044bd48a0bcaf22..40ef71a326280b309c83b5796f8050f16888b38b 100644
--- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3_Alg.h
+++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/TRTMonitoringRun3/TRTMonitoringRun3_Alg.h
@@ -7,7 +7,6 @@
 
 #include "AthenaMonitoring/AthMonitorAlgorithm.h"
 #include "AthenaMonitoringKernel/Monitored.h"
-#include "AthenaMonitoringKernel/HistogramDef.h"
 
 #include "TRandom3.h"
 
diff --git a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3_Alg.cxx b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3_Alg.cxx
index 586e50f4985802fb3c0e9271c15f1a5aca34daea..99a8ca3d73cdc55c5611859efe54fe24e147e305 100644
--- a/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3_Alg.cxx
+++ b/InnerDetector/InDetMonitoring/TRTMonitoringRun3/src/TRTMonitoringRun3_Alg.cxx
@@ -80,6 +80,8 @@ StatusCode TRTMonitoringRun3_Alg::initialize() {
     using namespace Monitored;
     
     ATH_MSG_VERBOSE("Initializing TRT Monitoring");
+    // initialize superclass
+    ATH_CHECK( AthMonitorAlgorithm::initialize() );
     
     // Retrieve detector manager.
     ATH_CHECK( detStore()->retrieve(m_mgr, "TRT") );
diff --git a/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/InDetExtensionProcessor/InDetExtensionProcessor.h b/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/InDetExtensionProcessor/InDetExtensionProcessor.h
index 761318ff318fb15c4b97469d35bda3cba1a9b0a9..3fb3c1a7b8767ebb7c7230411811ac97397aee75 100644
--- a/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/InDetExtensionProcessor/InDetExtensionProcessor.h
+++ b/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/InDetExtensionProcessor/InDetExtensionProcessor.h
@@ -43,6 +43,8 @@ namespace InDet {
     virtual StatusCode execute(const EventContext& ctx) const;
     virtual StatusCode finalize();
   private:
+    MsgStream &dumpStat(MsgStream &out) const;
+
     //! process events
     TrackCollection* createExtendedTracks(const TrackCollection* tracks_in,
                                           const TrackExtensionMap* track_extension_map) const;
diff --git a/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/src/InDetExtensionProcessor.cxx b/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/src/InDetExtensionProcessor.cxx
index 99e4ff6c5fa370aa3c35a8aedaed05118cdf6af2..019d08e5334f716fec9074d657da6dc85c6539bc 100644
--- a/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/src/InDetExtensionProcessor.cxx
+++ b/InnerDetector/InDetRecAlgs/InDetExtensionProcessor/src/InDetExtensionProcessor.cxx
@@ -483,20 +483,29 @@ InDet::InDetExtensionProcessor::trackPlusExtension(const Trk::Track* siTrack,
 
 // Finalize method:
 StatusCode InDet::InDetExtensionProcessor::finalize() {
-  ATH_MSG_INFO(name() << "::finalize() -- statistics:");
   if (msgLvl(MSG::INFO)) {
+     MsgStream &out = msg(MSG::INFO);
+     out << "::finalize() -- statistics:" << std::endl;
+     dumpStat(out);
+     out << endmsg;
+  }
+  return StatusCode::SUCCESS;
+}
+
+MsgStream &InDet::InDetExtensionProcessor::dumpStat(MsgStream &out) const
+{
     int iw = 9;
-    std::cout.width(9);
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of events processed      :   " << m_Nevents << std::endl;
-    std::cout << "  statistics by eta range          ------All---Barrel---Trans.-- Endcap-- " << std::endl;
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of tracks at input       :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out.width(9);
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of events processed      :   " << m_Nevents << std::endl;
+    out << "  statistics by eta range          ------All---Barrel---Trans.-- Endcap-- " << std::endl;
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of tracks at input       :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Ninput[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Ninput[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Ninput[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Ninput[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-    std::cout << "  Number of not extended tracks   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  Number of not extended tracks   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_NnotExtended[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
     std::setw(iw)
               << m_NnotExtended[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
@@ -504,28 +513,28 @@ StatusCode InDet::InDetExtensionProcessor::finalize() {
               << m_NnotExtended[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
     std::setw(iw)
               << m_NnotExtended[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-    std::cout << "  Number of proposed ext. roads   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  Number of proposed ext. roads   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nrecognised[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nrecognised[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(
       iw)
               << m_Nrecognised[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(
       iw)
               << m_Nrecognised[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of track fits            :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of track fits            :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfits[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfits[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfits[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfits[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
     if (m_tryBremFit) {
-      std::cout << "  + brem fits for electron tracks :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + brem fits for electron tracks :" << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NbremFits[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NbremFits[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(
         iw)
                 << m_NbremFits[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(
         iw)
                 << m_NbremFits[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-      std::cout << "  + brem fit to recover failed fit:" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + brem fit to recover failed fit:" << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NrecoveryBremFits[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
       std::setw(iw)
                 << m_NrecoveryBremFits[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
@@ -533,7 +542,7 @@ StatusCode InDet::InDetExtensionProcessor::finalize() {
                 << m_NrecoveryBremFits[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
       std::setw(iw)
                 << m_NrecoveryBremFits[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-      std::cout << "  + brem fit to recover low score :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + brem fit to recover low score :" << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NlowScoreBremFits[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
       std::setw(iw)
                 << m_NlowScoreBremFits[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
@@ -542,20 +551,20 @@ StatusCode InDet::InDetExtensionProcessor::finalize() {
       std::setw(iw)
                 << m_NlowScoreBremFits[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
     }
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of track fit failing     :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of track fit failing     :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfailed[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfailed[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfailed[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfailed[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-    std::cout << "  Number of rejected extensions   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  Number of rejected extensions   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nrejected[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nrejected[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
     std::setw(iw)
               << m_Nrejected[InDet::InDetExtensionProcessor::iTransi] << std::setiosflags(std::ios::dec) <<
     std::setw(iw)
               << m_Nrejected[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
-    std::cout << "  Number of successful extensions :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  Number of successful extensions :" << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nextended[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nextended[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
     std::setw(iw)
@@ -563,7 +572,7 @@ StatusCode InDet::InDetExtensionProcessor::finalize() {
     std::setw(iw)
               << m_Nextended[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
     if (m_tryBremFit) {
-      std::cout << "  including brem fitted tracks    :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  including brem fitted tracks    :" << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NextendedBrem[InDet::InDetExtensionProcessor::iAll] << std::setiosflags(std::ios::dec) <<
       std::setw(iw)
                 << m_NextendedBrem[InDet::InDetExtensionProcessor::iBarrel] << std::setiosflags(std::ios::dec) <<
@@ -572,12 +581,10 @@ StatusCode InDet::InDetExtensionProcessor::finalize() {
       std::setw(iw)
                 << m_NextendedBrem[InDet::InDetExtensionProcessor::iEndcap] << std::endl;
     }
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setprecision(2)
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setprecision(2)
               << "    definition: ( 0.0 < Barrel < " << m_etabounds[0] << " < Transition < " << m_etabounds[1]
               << " < Endcap < " << m_etabounds[2] << " )" << std::setprecision(-1) << std::endl;
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-  }
-
-  return StatusCode::SUCCESS;
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    return out;
 }
diff --git a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonLayerHashProviderTool.h b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonLayerHashProviderTool.h
index e333ed86467718ac9376313d6202fed1a03d8a73..92af56cdc733f293e1bf728948ef9a1dd441a7e5 100644
--- a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonLayerHashProviderTool.h
+++ b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonLayerHashProviderTool.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 MUON_MUONLAYERHASHPROVIDERTOOL_H
@@ -8,22 +8,14 @@
 #include <vector>
 
 #include "AthenaBaseComps/AthAlgTool.h"
-#include "GaudiKernel/ToolHandle.h"
+#include "GaudiKernel/ServiceHandle.h"
 
-#include "Identifier/Identifier.h"
-#include "Identifier/IdentifierHash.h"
-
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
 static const InterfaceID IID_MuonLayerHashProviderTool("Muon::MuonLayerHashProviderTool",1,0);
 
-class MuonIdHelper;
-
 namespace Muon {
 
-  class MuonIdHelperTool;
-
   class MuonLayerHashProviderTool :  public AthAlgTool {
   public:
     /** define data structure 
@@ -85,8 +77,7 @@ namespace Muon {
     /** cachaed hash data structure */
     RegionHashesPerSectorVec m_regionHashesPerSector;
 
-    /** tool handles */
-    ToolHandle<MuonIdHelperTool> m_idHelper; 
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     
   };
 
@@ -97,10 +88,10 @@ namespace Muon {
   }
 
   inline const std::vector<IdentifierHash>& MuonLayerHashProviderTool::getHashes( const Identifier& id ) const {
-    MuonStationIndex::DetectorRegionIndex regionIndex = m_idHelper->regionIndex(id);
-    MuonStationIndex::LayerIndex layerIndex = m_idHelper->layerIndex(id);
+    MuonStationIndex::DetectorRegionIndex regionIndex = m_idHelperSvc->regionIndex(id);
+    MuonStationIndex::LayerIndex layerIndex = m_idHelperSvc->layerIndex(id);
     unsigned int sectorLayerHash = MuonStationIndex::sectorLayerHash(regionIndex,layerIndex);
-    return getHashes(m_idHelper->sector(id),m_idHelper->technologyIndex(id),sectorLayerHash);
+    return getHashes(m_idHelperSvc->sector(id),m_idHelperSvc->technologyIndex(id),sectorLayerHash);
   }
 
 
diff --git a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonPrepRawDataCollectionProviderTool.h b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonPrepRawDataCollectionProviderTool.h
index 4ff8b7684fa91e641b2501093919740dae792eef..980ada480723dd9640ed507b892785f40f3aa9a7 100644
--- a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonPrepRawDataCollectionProviderTool.h
+++ b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/MuonPrepRawDataProviderTools/MuonPrepRawDataCollectionProviderTool.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 MUON_MUONPREPRAWDATACOLLECTIONPROVIDERTOOL_H
@@ -9,22 +9,19 @@
 #include <typeinfo>
 
 #include "AthenaBaseComps/AthAlgTool.h"
+#include "GaudiKernel/ServiceHandle.h"
 #include "GaudiKernel/ToolHandle.h"
 
-#include "Identifier/Identifier.h"
-#include "Identifier/IdentifierHash.h"
-
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonLayerHashProviderTool.h"
 
 #include "MuonLayerEvent/MuonLayerPrepRawData.h"
 #include "MuonPrepRawData/MuonPrepDataContainer.h"
 
-
 static const InterfaceID IID_MuonPrepRawDataCollectionProviderTool("Muon::MuonPrepRawDataCollectionProviderTool",1,0);
 
 namespace Muon {
 
-  class MuonIdHelperTool;
   class MuonLayerHashProviderTool;
 
   class MuonPrepRawDataCollectionProviderTool :  public AthAlgTool {
@@ -32,9 +29,8 @@ namespace Muon {
 
     /** Default AlgTool functions */
     MuonPrepRawDataCollectionProviderTool(const std::string& type, const std::string& name, const IInterface* parent);
-    virtual ~MuonPrepRawDataCollectionProviderTool();
+    virtual ~MuonPrepRawDataCollectionProviderTool() {};
     StatusCode initialize();
-    StatusCode finalize();
 
     /** @brief access to tool interface */
     static const InterfaceID& interfaceID() { return IID_MuonPrepRawDataCollectionProviderTool; }
@@ -75,11 +71,9 @@ namespace Muon {
         // skip if not found
         typename ContainerType::const_iterator colIt = container->indexFind(*it);
         if( colIt == container->end() ) {
-          //ATH_MSG_WARNING("Cannot find hash " << *it << " in container at " << location);
           continue;
         }
-        ATH_MSG_VERBOSE("  adding " << m_idHelper->toStringChamber((*colIt)->identify()) << " size " << (*colIt)->size());
-        // else add
+        ATH_MSG_VERBOSE("  adding " << m_idHelperSvc->toStringChamber((*colIt)->identify()) << " size " << (*colIt)->size());
         output.push_back(*colIt);
       }
       return true;
@@ -87,8 +81,7 @@ namespace Muon {
 
   private:
     
-    /** tool handles */
-    ToolHandle<MuonIdHelperTool> m_idHelper; 
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ToolHandle<MuonLayerHashProviderTool> m_layerHashProvider; 
     
     /** storegate keys of PRDs*/
diff --git a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonLayerHashProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonLayerHashProviderTool.cxx
index 96f9014932616a9fbc9404e9b9f00807535f678c..9009390679edff9335e1a0944ce74dc5b84fc441 100644
--- a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonLayerHashProviderTool.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonLayerHashProviderTool.cxx
@@ -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
 */
 
 #include "MuonPrepRawDataProviderTools/MuonLayerHashProviderTool.h"
@@ -14,8 +14,7 @@ namespace Muon {
 
   MuonLayerHashProviderTool::MuonLayerHashProviderTool(const std::string& type, const std::string& name, const IInterface* parent):
     AthAlgTool(type,name,parent),
-    m_ntechnologies(4),
-    m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool")
+    m_ntechnologies(4)
   {
     declareInterface<MuonLayerHashProviderTool>(this);
 
@@ -29,7 +28,7 @@ namespace Muon {
 
   StatusCode MuonLayerHashProviderTool::initialize() {
 
-    ATH_CHECK(m_idHelper.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
 
     if( !initializeSectorMapping() ){
       ATH_MSG_ERROR("Failed to initialize sector mapping");
@@ -41,12 +40,12 @@ namespace Muon {
 
 
   void MuonLayerHashProviderTool::insertHash( const IdentifierHash& hash, const Identifier& id ) {
-    insertHash(m_idHelper->sector(id),hash,id);
+    insertHash(m_idHelperSvc->sector(id),hash,id);
   }
 
   void MuonLayerHashProviderTool::insertHash( int sector, const IdentifierHash& hash, const Identifier& id ) {
-    MuonStationIndex::TechnologyIndex techIndex = m_idHelper->technologyIndex(id);
-    int sectorLayerHash = MuonStationIndex::sectorLayerHash(m_idHelper->regionIndex(id),m_idHelper->layerIndex(id));
+    MuonStationIndex::TechnologyIndex techIndex = m_idHelperSvc->technologyIndex(id);
+    int sectorLayerHash = MuonStationIndex::sectorLayerHash(m_idHelperSvc->regionIndex(id),m_idHelperSvc->layerIndex(id));
     m_regionHashesPerSector[sector-1].technologyRegionHashVecs[techIndex][sectorLayerHash].push_back(hash);
   }
 
@@ -75,16 +74,16 @@ namespace Muon {
     MuonSectorMapping sectorMapping;
 
     // loop over all available TGC collection identifiers and order them per sector
-    MuonIdHelper::const_id_iterator it = m_idHelper->tgcIdHelper().module_begin();
-    MuonIdHelper::const_id_iterator it_end = m_idHelper->tgcIdHelper().module_end();
+    MuonIdHelper::const_id_iterator it = m_idHelperSvc->tgcIdHelper().module_begin();
+    MuonIdHelper::const_id_iterator it_end = m_idHelperSvc->tgcIdHelper().module_end();
     for( ;it!=it_end; ++it ){
       const MuonGM::TgcReadoutElement* detEl = detMgr->getTgcReadoutElement(*it);
       if( !detEl ) {
-        ATH_MSG_DEBUG(" No detector element found for " << m_idHelper->toString(*it) );
+        ATH_MSG_DEBUG(" No detector element found for " << m_idHelperSvc->toString(*it) );
         continue;
       }
       IdentifierHash hash;
-      m_idHelper->tgcIdHelper().get_module_hash(*it,hash);
+      m_idHelperSvc->tgcIdHelper().get_module_hash(*it,hash);
       int nstrips = detEl->getNStrips(1);
       Amg::Vector3D p1 = detEl->channelPos(1,1,1);
       Amg::Vector3D p2 = detEl->channelPos(1,1,nstrips);
@@ -115,7 +114,7 @@ namespace Muon {
   // all chambers are mapped onto a layer and sector map
   bool MuonLayerHashProviderTool::initializeSectorMapping() {
 
-    m_ntechnologies = m_idHelper->mdtIdHelper().technologyNameIndexMax()+1;
+    m_ntechnologies = m_idHelperSvc->mdtIdHelper().technologyNameIndexMax()+1;
     m_regionHashesPerSector.resize(MuonStationIndex::numberOfSectors());
     // set sector numbers
     unsigned int nsectorHashMax = MuonStationIndex::sectorLayerHashMax();
@@ -130,11 +129,11 @@ namespace Muon {
                   << " technologies " << m_ntechnologies << " sectorLayers " << MuonStationIndex::sectorLayerHashMax() );
 
     // add technologies
-    if (m_idHelper->hasMdtIdHelper()) insertTechnology(m_idHelper->mdtIdHelper());
-    if (m_idHelper->hasRpcIdHelper()) insertTechnology(m_idHelper->rpcIdHelper());
-    if (m_idHelper->hasCscIdHelper()) insertTechnology(m_idHelper->cscIdHelper());
-    if (m_idHelper->hasMmIdHelper()) insertTechnology(m_idHelper->mmIdHelper());
-    if (m_idHelper->hasSTgcIdHelper()) insertTechnology(m_idHelper->stgcIdHelper());
+    if (m_idHelperSvc->hasMDT()) insertTechnology(m_idHelperSvc->mdtIdHelper());
+    if (m_idHelperSvc->hasRPC()) insertTechnology(m_idHelperSvc->rpcIdHelper());
+    if (m_idHelperSvc->hasCSC()) insertTechnology(m_idHelperSvc->cscIdHelper());
+    if (m_idHelperSvc->hasMM()) insertTechnology(m_idHelperSvc->mmIdHelper());
+    if (m_idHelperSvc->hasSTgc()) insertTechnology(m_idHelperSvc->stgcIdHelper());
 
     if( !insertTgcs() ) return false;
 
diff --git a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonPrepRawDataCollectionProviderTool.cxx b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonPrepRawDataCollectionProviderTool.cxx
index 48837dfbe390f09981e8d7f2f842015131cc1f71..590f7159f511e44f76297f93d7fcc55cf51ecddf 100644
--- a/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonPrepRawDataCollectionProviderTool.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonPrepRawDataProviderTools/src/MuonPrepRawDataCollectionProviderTool.cxx
@@ -1,17 +1,14 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonPrepRawDataProviderTools/MuonPrepRawDataCollectionProviderTool.h"
-
-#include "MuonIdHelpers/MuonIdHelperTool.h"
 #include "MuonIdHelpers/MuonStationIndexHelpers.h"
 
 namespace Muon {
 
   MuonPrepRawDataCollectionProviderTool::MuonPrepRawDataCollectionProviderTool(const std::string& type, const std::string& name, const IInterface* parent):
     AthAlgTool(type,name,parent),
-    m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"),
     m_layerHashProvider("Muon::MuonLayerHashProviderTool/MuonLayerHashProviderTool")
   {
     declareInterface<MuonPrepRawDataCollectionProviderTool>(this);
@@ -27,15 +24,9 @@ namespace Muon {
     }
   }
 
-  MuonPrepRawDataCollectionProviderTool::~MuonPrepRawDataCollectionProviderTool() { }
-
-  StatusCode MuonPrepRawDataCollectionProviderTool::finalize() {
-    return StatusCode::SUCCESS;
-  }
-
   StatusCode MuonPrepRawDataCollectionProviderTool::initialize() {
 
-    ATH_CHECK(m_idHelper.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
     ATH_CHECK(m_layerHashProvider.retrieve());
 
     return StatusCode::SUCCESS;
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/python/MuonTopCondAlgConfigRUN2.py b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/python/MuonTopCondAlgConfigRUN2.py
index 84ad91b676df882e4908309977b5b684435117f8..9e7c2f518e549bbf0b3622408e7376a3303e8a10 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/python/MuonTopCondAlgConfigRUN2.py
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondAlg/python/MuonTopCondAlgConfigRUN2.py
@@ -73,12 +73,12 @@ class CscCondDbAlg(CfgMgr.CscCondDbAlg):
         if athenaCommonFlags.isOnline:
             kwargs['isOnline'  ] = True  # COOL folders not available online
             kwargs['isData'    ] = True
-            kwargs['ReadKey_FT'] = '/CSC/FTHOLD' # 'ConditionsStore+' prefix not necessarily needed in ReadKey
-            kwargs['ReadKey_NO'] = '/CSC/NOISE'
-            kwargs['ReadKey_PD'] = '/CSC/PED'
-            kwargs['ReadKey_PS'] = '/CSC/PSLOPE'
-            kwargs['ReadKey_RM'] = '/CSC/RMS'
-            kwargs['ReadKey_ST'] = '/CSC/STAT'
+            kwargs['ReadKey_FT'] = '/CSC/ONL/FTHOLD' # 'ConditionsStore+' prefix not necessarily needed in ReadKey
+            kwargs['ReadKey_NO'] = '/CSC/ONL/NOISE'
+            kwargs['ReadKey_PD'] = '/CSC/ONL/PED'
+            kwargs['ReadKey_PS'] = '/CSC/ONL/PSLOPE'
+            kwargs['ReadKey_RM'] = '/CSC/ONL/RMS'
+            kwargs['ReadKey_ST'] = '/CSC/ONL/STAT'
         else:    
             kwargs['isOnline'] = False # COOL folders not available online
             if globalflags.DataSource != 'data':
diff --git a/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py b/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py
index efa9787fd56276ebfc253199b35aa1861ac6f295..c66da5f03b9ffebea711ce1a9b855011610a5b00 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py
@@ -41,323 +41,6 @@ def CscCalibToolCfg(flags, name="CscCalibTool", **kwargs):
     return acc
 
 
-def _setupCscCondDB( flags, name, key, dataType, cat, default, folder, database, useLocal, override="" ):
-
-    # The followng codes should be cleaned up by CSC experts, 
-    #   since they quate a few verses from the following two files
-    #   https://gitlab.cern.ch/atlas/athena/blob/master/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibConfig.py
-    #   https://gitlab.cern.ch/atlas/athena/blob/master/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/python/CscCondDB.py
-
-    acc = ComponentAccumulator()
-
-    # This need to adapt FolderSuffix variable
-    #fullSuffix = " <key>" + key + "</key> " + self.FolderSuffix
-    fullSuffix = " <key>" + key + "</key> "
-
-    oflFolderString = '/CSC/' + folder + fullSuffix
-    onlFolderString = '/CSC/ONL/' + folder + fullSuffix
-
-    if useLocal:
-        #assume when local, the folder will be in offline location. 
-        #Maybe add more options in future
-        acc.merge( addFolders( flags, oflFolderString, "LOCAL" ) )
-    elif database=='CSC':
-        acc.merge( addFoldersSplitOnline( flags, database, onlFolderString, oflFolderString ) )
-    elif database=='CSC_OFL':
-        acc.merge( addFolders( flags, oflFolderString, database ) )
-    else:
-        log.error("Failed to recognize database: " + database + " for parameter " + name)
-        return acc 
-
-    if override:
-        if useLocal:
-            #assume when local, the folder will be in offline location. 
-            #Maybe add more options in future
-            overfolder = oflFolderString.split()[0] #Get folder without suffix
-        elif database=='CSC':
-            if flags.Common.isOnline:
-                overfolder = onlFolderString.split()[0] #Get folder without suffix
-            else:
-                overfolder = oflFolderString.split()[0] #Get folder without suffix
-        elif database=='CSC_OFL':
-            overfolder = oflFolderString.split()[0] #Get folder without suffix
-        else:
-            log.error("Failed to recognize database: " + database + " for parameter " + name)
-            return acc
-        log.info("Overriding folder for " + name + "(" + overfolder + ") to " + override)
-        #acc.merge( addOverride( flags, overfolder, override ) )
-
-    return acc
-
-def CscCoolStrSvcCfg( flags ):
-
-    acc = ComponentAccumulator()
-
-    # used folders
-    pslopeFolder    = "PSLOPE"   # Pulser run gain
-    pedFolder       = "PED"      # Pedestals
-    noiseFolder     = "NOISE"    # Noise (Sigma from pedestal gaussian fit)
-    rmsFolder       = "RMS"      # Rms of pedestal histograms (not from fit)
-    f001Folder      = "FTHOLD"   # F001 threshold values
-    statusFolder    = "STAT"     # Status Bits
-    t0baseFolder    = "T0BASE"
-    t0phaseFolder   = "T0PHASE"
-
-    # unused folders
-    #gainFolder      = "GAIN"
-    #runSlopeFolder  = "RSLOPE"
-    #tholdFolder     = "THOLD"
-    #peaktFolder     = "PEAKT"
-    #widthFolder     = "WIDTH"
-    #sat1Folder      = "SAT1"
-    #sat2Folder      = "SAT2"
-
-    # Set CscCoolStr Svc to prepare condDB for pedestal, noise and so on
-    CscCoolStrSvc = MuonCalib__CscCoolStrSvc()
-    acc.addService( CscCoolStrSvc )
- 
-    # The followng codes should be cleaned up by CSC experts, 
-    #   since they quate a few verses from the following two files
-    #   https://gitlab.cern.ch/atlas/athena/blob/master/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibConfig.py
-    #   https://gitlab.cern.ch/atlas/athena/blob/master/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondSvc/python/CscCondDB.py
-
-    # Adds pedestal and noise folders
-    if flags.Muon.Calib.CscPedFromLocalFile:
-        acc.merge(  _setupCscCondDB( flags, name="ped", key="CSC_PED", dataType="float", cat="CHANNEL", 
-                                     default="2048", folder=pedFolder, database="CSC", useLocal=True, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "ped" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_PED" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "2048" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + pedFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + pedFolder)
-
-    else:
-        acc.merge(  _setupCscCondDB( flags, name="ped", key="CSC_PED", dataType="float", cat="CHANNEL", 
-                                     default="2048", folder=pedFolder, database="CSC", useLocal=False, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "ped" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_PED" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "2048" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + pedFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + pedFolder)
-
-    # Load Noise File
-    if flags.Muon.Calib.CscNoiseFromLocalFile:
-        acc.merge(  _setupCscCondDB( flags, name="noise", key="CSC_NOISE", dataType="float", cat="CHANNEL", 
-                                     default="3.5", folder=noiseFolder, database="CSC", useLocal=True, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "noise" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_NOISE" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "3.5" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + noiseFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + noiseFolder)
-
-    else:
-        acc.merge(  _setupCscCondDB( flags, name="noise", key="CSC_NOISE", dataType="float", cat="CHANNEL", 
-                                     default="3.5", folder=noiseFolder, database="CSC", useLocal=False, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "noise" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_NOISE" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "3.5" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + noiseFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + noiseFolder)
-
-    ### Load PSlope File
-    if flags.Muon.Calib.CscPSlopeFromLocalFile:
-        acc.merge(  _setupCscCondDB( flags, name="pslope", key="CSC_PSLOPE", dataType="float", cat="CHANNEL", 
-                                     default="0.189", folder=pslopeFolder, database="CSC", useLocal=True, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "pslope" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_PSLOPE" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "0.189" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + pslopeFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + pslopeFolder)
- 
-    else:
-        acc.merge(  _setupCscCondDB( flags, name="pslope", key="CSC_PSLOPE", dataType="float", cat="CHANNEL", 
-                                     default="0.189", folder=pslopeFolder, database="CSC", useLocal=False, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "pslope" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_PSLOPE" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "0.189" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + pslopeFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + pslopeFolder)
-
-    ## Load Status File
-    if flags.Muon.Calib.CscStatusFromLocalFile:
-        acc.merge(  _setupCscCondDB( flags, name="status", key="CSC_STAT", dataType="uint32_t", cat="CHANNEL", 
-                                     default="0", folder=statusFolder, database="CSC", useLocal=True, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "status" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_STAT" )
-        CscCoolStrSvc.ParDataTypes.append( "uint32_t" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "0" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + statusFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + statusFolder)
-
-    else:
-        acc.merge(  _setupCscCondDB( flags, name="status", key="CSC_STAT", dataType="uint32_t", cat="CHANNEL", 
-                                     default="0", folder=statusFolder, database="CSC", useLocal=False, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "status" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_STAT" )
-        CscCoolStrSvc.ParDataTypes.append( "uint32_t" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "0" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + statusFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + statusFolder)
-
-    ## Load Rms File
-    if flags.Muon.Calib.CscRmsFromLocalFile:
-        acc.merge(  _setupCscCondDB( flags, name="rms", key="CSC_RMS", dataType="float", cat="CHANNEL", 
-                                     default="2.56", folder=rmsFolder, database="CSC", useLocal=True, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "rms" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_RMS" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "2.56" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + rmsFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + rmsFolder)
-
-    else:
-        acc.merge(  _setupCscCondDB( flags, name="rms", key="CSC_RMS", dataType="float", cat="CHANNEL", 
-                                     default="2.56", folder=rmsFolder, database="CSC", useLocal=False, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "rms" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_RMS" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "2.56" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + rmsFolder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + rmsFolder)
-
-    ## Load F001 File
-    if flags.Muon.Calib.CscF001FromLocalFile:
-        acc.merge(  _setupCscCondDB( flags, name="f001", key="CSC_FTHOLD", dataType="float", cat="CHANNEL", 
-                                     default="0", folder=f001Folder, database="CSC", useLocal=True, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "f001" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_FTHOLD" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "0" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + f001Folder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + f001Folder)
-
-    else:
-        acc.merge(  _setupCscCondDB( flags, name="f001", key="CSC_FTHOLD", dataType="float", cat="CHANNEL", 
-                                     default="0", folder=f001Folder, database="CSC", useLocal=False, override="" ) )
-
-        CscCoolStrSvc.ParNames.append( "f001" )
-        CscCoolStrSvc.ParSGKeys.append( "CSC_FTHOLD" )
-        CscCoolStrSvc.ParDataTypes.append( "float" )
-        CscCoolStrSvc.ParCats.append( "CHANNEL" )
-        CscCoolStrSvc.ParDefaults.append( "0" )
-
-        if flags.Common.isOnline:
-            CscCoolStrSvc.ParFolders.append('/CSC/ONL/' + f001Folder)
-        else:
-            CscCoolStrSvc.ParFolders.append('/CSC/' + f001Folder)
-
-    # Offline only 
-    if not flags.Common.isOnline:
-
-        ## Load T0Base File
-        if flags.Muon.Calib.CscT0BaseFromLocalFile:
-            acc.merge(  _setupCscCondDB( flags, name="t0base", key="CSC_T0BASE", dataType="float", cat="CHANNEL", 
-                                         default="0", folder=t0baseFolder, database="CSC_OFL", useLocal=True, override="" ) )
-    
-            CscCoolStrSvc.ParNames.append( "t0base" )
-            CscCoolStrSvc.ParSGKeys.append( "CSC_T0BASE" )
-            CscCoolStrSvc.ParDataTypes.append( "float" )
-            CscCoolStrSvc.ParCats.append( "CHANNEL" )
-            CscCoolStrSvc.ParDefaults.append( "0" )
-            CscCoolStrSvc.ParFolders.append('/CSC/' + t0baseFolder)
-
-        else:
-            acc.merge(  _setupCscCondDB( flags, name="t0base", key="CSC_T0BASE", dataType="float", cat="CHANNEL", 
-                                         default="0", folder=t0baseFolder, database="CSC_OFL", useLocal=False, override="" ) )
-    
-            CscCoolStrSvc.ParNames.append( "t0base" )
-            CscCoolStrSvc.ParSGKeys.append( "CSC_T0BASE" )
-            CscCoolStrSvc.ParDataTypes.append( "float" )
-            CscCoolStrSvc.ParCats.append( "CHANNEL" )
-            CscCoolStrSvc.ParDefaults.append( "0" )
-            CscCoolStrSvc.ParFolders.append('/CSC/' + t0baseFolder)
-
-        ## Load T0Phase File
-        if flags.Muon.Calib.CscT0PhaseFromLocalFile:
-            acc.merge(  _setupCscCondDB( flags, name="t0phase", key="CSC_T0PHASE", dataType="float", cat="ASM", 
-                                         default="0", folder=t0phaseFolder, database="CSC_OFL", useLocal=True, override="" ) )
-    
-            CscCoolStrSvc.ParNames.append( "t0phase" )
-            CscCoolStrSvc.ParSGKeys.append( "CSC_T0PHASE" )
-            CscCoolStrSvc.ParDataTypes.append( "float" )
-            CscCoolStrSvc.ParCats.append( "ASM" )
-            CscCoolStrSvc.ParDefaults.append( "0" )
-            CscCoolStrSvc.ParFolders.append('/CSC/' + t0phaseFolder)
-
-        else:
-            acc.merge(  _setupCscCondDB( flags, name="t0phase", key="CSC_T0PHASE", dataType="float", cat="ASM", 
-                                         default="0", folder=t0phaseFolder, database="CSC_OFL", useLocal=False, override="" ) )
-    
-            CscCoolStrSvc.ParNames.append( "t0phase" )
-            CscCoolStrSvc.ParSGKeys.append( "CSC_T0PHASE" )
-            CscCoolStrSvc.ParDataTypes.append( "float" )
-            CscCoolStrSvc.ParCats.append( "ASM" )
-            CscCoolStrSvc.ParDefaults.append( "0" )
-            CscCoolStrSvc.ParFolders.append('/CSC/' + t0phaseFolder)
-
-
-    return acc
 
 ################################################################################
 # MDT calibration
diff --git a/MuonSpectrometer/MuonConfig/python/MuonCondAlgConfig.py b/MuonSpectrometer/MuonConfig/python/MuonCondAlgConfig.py
index 32e9c8bda2c37217a0d9ae27a33ae2c2e53f3658..4689a0b26d919e7fec189af9c73ae425cb6ad24e 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonCondAlgConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonCondAlgConfig.py
@@ -60,12 +60,12 @@ def CscCondDbAlgCfg(flags, **kwargs):
     if flags.Common.isOnline:
         kwargs["isOnline"  ] = True
         kwargs['isData'    ] = True
-        kwargs['ReadKey_FT'] = '/CSC/FTHOLD' # 'ConditionsStore+' prefix not necessarily needed in ReadKey
-        kwargs['ReadKey_NO'] = '/CSC/NOISE'
-        kwargs['ReadKey_PD'] = '/CSC/PED'
-        kwargs['ReadKey_PS'] = '/CSC/PSLOPE'
-        kwargs['ReadKey_RM'] = '/CSC/RMS'
-        kwargs['ReadKey_ST'] = '/CSC/STAT'
+        kwargs['ReadKey_FT'] = '/CSC/ONL/FTHOLD' # 'ConditionsStore+' prefix not necessarily needed in ReadKey
+        kwargs['ReadKey_NO'] = '/CSC/ONL/NOISE'
+        kwargs['ReadKey_PD'] = '/CSC/ONL/PED'
+        kwargs['ReadKey_PS'] = '/CSC/ONL/PSLOPE'
+        kwargs['ReadKey_RM'] = '/CSC/ONL/RMS'
+        kwargs['ReadKey_ST'] = '/CSC/ONL/STAT'
         folders = ["/CSC/ONL/FTHOLD", "/CSC/ONL/NOISE", "/CSC/ONL/PED", "/CSC/ONL/PSLOPE", "/CSC/ONL/RMS", "/CSC/ONL/STAT"]
         scheme  = "CSC_ONL"
     else:
diff --git a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py
index 8bd8a88ba6ef220671400c6146a1cac18fa3fb82..95546376d3fe458fe1986429259ad6098c9268ed 100644
--- a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py
+++ b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py
@@ -429,16 +429,11 @@ def CscClusterUtilToolCfg(flags, name='CscClusterUtilTool', **kwargs):
 def CscSegmentUtilToolCfg(flags, name='CscSegmentUtilTool', **kwargs):
     CscSegmentUtilTool=CompFactory.CscSegmentUtilTool
     from MuonConfig.MuonRIO_OnTrackCreatorConfig import CscClusterOnTrackCreatorCfg
-    from MuonConfig.MuonCalibConfig import CscCoolStrSvcCfg
     
     result=CscClusterOnTrackCreatorCfg(flags)
     csc_cluster_creator = result.getPrimary()
     kwargs.setdefault("rot_creator", csc_cluster_creator )
     
-    acc = CscCoolStrSvcCfg(flags)
-    # NB no property to configure right now.
-    result.merge(acc)
-    
     result.setPrivateTools(CscSegmentUtilTool( name=name, **kwargs))
     return result
 
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h
index 5a4d0ba0d2f8530e62e129fadd6a1d46df52f4c0..9f762a4de632d87fa7c64ce8973fd177e37bdeed 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperSvc.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
 */
 
 #ifndef MUON_MUONIDHELPERSVC_H
@@ -10,15 +10,6 @@
 
 #include <string>
 
-#include "MuonIdHelpers/MdtIdHelper.h"
-#include "MuonIdHelpers/RpcIdHelper.h"
-#include "MuonIdHelpers/CscIdHelper.h"
-#include "MuonIdHelpers/TgcIdHelper.h"
-#include "MuonIdHelpers/sTgcIdHelper.h"
-#include "MuonIdHelpers/MmIdHelper.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
-#include "Identifier/Identifier.h"
-
 #include "StoreGate/StoreGate.h"
 #include "StoreGate/StoreGateSvc.h"
 
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperTool.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperTool.h
index 0ab4f8f45003023ac3f6583fc5dca176aa73b4aa..a5c8dc9e974592df16e7b212a5309f43df26bb4c 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperTool.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonIdHelperTool.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
 */
 
 #ifndef MUON_MUONIDHELPERTOOL_H
@@ -11,17 +11,8 @@
 
 static const InterfaceID IID_MuonIdHelperTool("Muon::MuonIdHelperTool",1,0);
 
-#include "MuonIdHelpers/MdtIdHelper.h"
-#include "MuonIdHelpers/RpcIdHelper.h"
-#include "MuonIdHelpers/CscIdHelper.h"
-#include "MuonIdHelpers/TgcIdHelper.h"
-#include "MuonIdHelpers/sTgcIdHelper.h"
-#include "MuonIdHelpers/MmIdHelper.h"
 #include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
-#include "MuonIdHelpers/MuonStationIndex.h"
-
-#include "Identifier/Identifier.h"
 class MsgStream;
 
 namespace Muon {
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndex.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndex.h
index cc46ecd55cafb49b4c808a46447c76a1b3444baf..8e8237553b7b9f666bb0a9484fd15b4c6a11df4e 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndex.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndex.h
@@ -1,10 +1,7 @@
-// Dear emacs, this is -*- c++ -*-
-
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: MuonStationIndex.h 732860 2016-03-30 08:53:44Z mcorradi $
 #ifndef MUONIDHELPERS_MUONSTATIONINDEX_H
 #define MUONIDHELPERS_MUONSTATIONINDEX_H
 
diff --git a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndexHelpers.h b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndexHelpers.h
index f08bda03b08fecb8b7f290cef3a2432a6d4b0366..0df9353adcfa0364d3a73fdc088d69389fda54ea 100644
--- a/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndexHelpers.h
+++ b/MuonSpectrometer/MuonIdHelpers/MuonIdHelpers/MuonStationIndexHelpers.h
@@ -1,10 +1,7 @@
-// Dear emacs, this is -*- c++ -*-
-
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-// $Id: MuonStationIndex.h 594238 2014-04-25 09:00:53Z krasznaa $
 #ifndef MUONIDHELPERS_MUONSTATIONINDEXHELPERS_H
 #define MUONIDHELPERS_MUONSTATIONINDEXHELPERS_H
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool.h
index cb218d318e746107eecb5199900f6df29974528c..874da8929e96eb6f6699f562a9d3d07d5e17c5cd 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool.h
@@ -1,23 +1,20 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// MuonAmbiTrackSelectionTool.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef MUON_MUONAMBITRACKSELECTIONTOOL_H
 #define MUON_MUONAMBITRACKSELECTIONTOOL_H
 
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
+#include "GaudiKernel/ServiceHandle.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "TrkToolInterfaces/IAmbiTrackSelectionTool.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 
 #include <map>
 #include <vector>
 
-class Identifier;
-
 namespace Trk{
    class Track;
 }
@@ -26,9 +23,6 @@ namespace Trk{
 namespace Muon 
 {
 
-  class MuonEDMPrinterTool;
-  class MuonIdHelperTool;
-
   /** @class MuonAmbiTrackSelectionTool 
       This tool cross checks the hits on a track with the hits already stored in 
       a PRD_AssociationTool. Shared hits are allowed to some extent und under certain conditions
@@ -44,12 +38,10 @@ namespace Muon
     MuonAmbiTrackSelectionTool(const std::string&,const std::string&,const IInterface*);
       
     /** default destructor */
-    virtual ~MuonAmbiTrackSelectionTool ();
+    virtual ~MuonAmbiTrackSelectionTool () {};
       
     /** standard Athena-Algorithm method */
     virtual StatusCode initialize() override;
-    /** standard Athena-Algorithm method */
-    virtual StatusCode finalize  () override;
 
     virtual std::tuple<Trk::Track*,bool> getCleanedOutTrack(const Trk::Track *track,
                                                             const Trk::TrackScore score,
@@ -57,7 +49,7 @@ namespace Muon
   private:
 
     ToolHandle<Muon::MuonEDMPrinterTool>  m_printer;
-    ToolHandle<Muon::MuonIdHelperTool>    m_idHelperTool;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
 
     /** maximum hit overlap fraction between two track, if higher track will be rejected*/
     double m_maxOverlapFraction;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/src/MuonAmbiTrackSelectionTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/src/MuonAmbiTrackSelectionTool.cxx
index 6811a2a09301121dce21eb2e4322e84717f00c79..e0382aeaf8ab438523a09bf6f00d8597c47044f2 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/src/MuonAmbiTrackSelectionTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonAmbiTrackSelectionTool/src/MuonAmbiTrackSelectionTool.cxx
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// MuonAmbiTrackSelectionTool.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #include "MuonAmbiTrackSelectionTool/MuonAmbiTrackSelectionTool.h"
 #include "AthContainers/DataVector.h"
 #include "TrkTrack/Track.h"
@@ -13,9 +9,6 @@
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
 #include "TrkCompetingRIOsOnTrack/CompetingRIOsOnTrack.h"
 #include "TrkToolInterfaces/IPRD_AssociationTool.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
 
 #include "TrkEventUtils/PRDtoTrackMap.h"
 
@@ -30,51 +23,27 @@ Muon::MuonAmbiTrackSelectionTool::MuonAmbiTrackSelectionTool(const std::string&
     const IInterface*  p )
   :
   AthAlgTool(t, n, p),
-  m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-  m_idHelperTool("Muon::MuonIdHelperTool/MuonIdHelperTool")
+  m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool")
 {
   declareInterface<IAmbiTrackSelectionTool>(this);
 
-  //  template for property decalration
-
   declareProperty("MaxOverlapFraction"   , m_maxOverlapFraction = 0.1 );
   declareProperty("KeepPartialOverlaps"  , m_keepPartial = true );
   declareProperty("KeepMoreThanOneShare" , m_keepMoreThanOne = true );
 }
 
-//================ Destructor =================================================
-
-Muon::MuonAmbiTrackSelectionTool::~MuonAmbiTrackSelectionTool()
-{}
-
-
 //================ Initialisation =================================================
 
 StatusCode Muon::MuonAmbiTrackSelectionTool::initialize()
 {
+  ATH_CHECK(AthAlgTool::initialize());
 
-  StatusCode sc = AthAlgTool::initialize();
-  if (sc.isFailure()) return sc;
-
-  sc = m_printer.retrieve();
-  if (sc.isSuccess()) {
-    ATH_MSG_DEBUG("Retrieved " << m_printer);
-  } else {
-    ATH_MSG_ERROR("Could not get " << m_printer);
-    return sc;
-  }
+  ATH_CHECK(m_printer.retrieve());
+  ATH_CHECK(m_idHelperSvc.retrieve());
 
   return StatusCode::SUCCESS;
 }
 
-//================ Finalisation =================================================
-
-StatusCode Muon::MuonAmbiTrackSelectionTool::finalize()
-{
-  StatusCode sc = AthAlgTool::finalize();
-  return sc;
-}
-
 //============================================================================================
 std::tuple<Trk::Track*,bool> Muon::MuonAmbiTrackSelectionTool::getCleanedOutTrack(const Trk::Track *track,
                                                                                   const Trk::TrackScore score,
@@ -120,13 +89,13 @@ std::tuple<Trk::Track*,bool> Muon::MuonAmbiTrackSelectionTool::getCleanedOutTrac
         const unsigned int numROTs = competingROT->numberOfContainedROTs();
         for ( unsigned int i = 0; i < numROTs; ++i ) {
           const Trk::RIO_OnTrack* rot = &competingROT->rioOnTrack(i);
-          if ( !rot || !rot->prepRawData() || !m_idHelperTool->isMuon(rot->identify()) ) continue;
+          if ( !rot || !rot->prepRawData() || !m_idHelperSvc->isMuon(rot->identify()) ) continue;
           //only use precision hits for muon track overlap
-          if (!m_idHelperTool->isMdt(rot->identify()) && !(m_idHelperTool->isCsc(rot->identify()) && !m_idHelperTool->measuresPhi(rot->identify())) && !m_idHelperTool->isMM(rot->identify()) && !m_idHelperTool->issTgc(rot->identify())) continue;
-          Muon::MuonStationIndex::StIndex stIndex = m_idHelperTool->stationIndex(rot->identify());
+          if (!m_idHelperSvc->isMdt(rot->identify()) && !(m_idHelperSvc->isCsc(rot->identify()) && !m_idHelperSvc->measuresPhi(rot->identify())) && !m_idHelperSvc->isMM(rot->identify()) && !m_idHelperSvc->issTgc(rot->identify())) continue;
+          Muon::MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(rot->identify());
           ++precisionPerLayer[stIndex];
           if ( prd_to_track_map.isUsed(*(rot->prepRawData()))) {
-            ATH_MSG_VERBOSE("Track overlap found! " << m_idHelperTool->toString(rot->identify()));
+            ATH_MSG_VERBOSE("Track overlap found! " << m_idHelperSvc->toString(rot->identify()));
             ++numshared;
             ++sharedPrecisionPerLayer[stIndex];
           }
@@ -134,17 +103,17 @@ std::tuple<Trk::Track*,bool> Muon::MuonAmbiTrackSelectionTool::getCleanedOutTrac
       }
     } else {
 
-      if (!m_idHelperTool->isMuon(rot->identify())) continue;
-      if (!m_idHelperTool->isMdt(rot->identify()) && !(m_idHelperTool->isCsc(rot->identify()) && !m_idHelperTool->measuresPhi(rot->identify())) && !m_idHelperTool->isMM(rot->identify()) && !m_idHelperTool->issTgc(rot->identify())) continue; //only precision hits used for overlap
+      if (!m_idHelperSvc->isMuon(rot->identify())) continue;
+      if (!m_idHelperSvc->isMdt(rot->identify()) && !(m_idHelperSvc->isCsc(rot->identify()) && !m_idHelperSvc->measuresPhi(rot->identify())) && !m_idHelperSvc->isMM(rot->identify()) && !m_idHelperSvc->issTgc(rot->identify())) continue; //only precision hits used for overlap
 
       ++numhits;
 
 
-      Muon::MuonStationIndex::StIndex stIndex = m_idHelperTool->stationIndex(rot->identify());
+      Muon::MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(rot->identify());
       ++precisionPerLayer[stIndex];
       // allow no overlap
       if ( prd_to_track_map.isUsed(*(rot->prepRawData()))) {
-        ATH_MSG_VERBOSE("Track overlap found! " << m_idHelperTool->toString(rot->identify()));
+        ATH_MSG_VERBOSE("Track overlap found! " << m_idHelperSvc->toString(rot->identify()));
         ++numshared;
         ++sharedPrecisionPerLayer[stIndex];
       }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMHelperSvc.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMHelperSvc.h
index 052f75506d618de6a9b8a5b6a0195eb2556016be..7f44649ff5633f94c49fd734062bacbeaace5829 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMHelperSvc.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMHelperSvc.h
@@ -1,17 +1,16 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUON_MuonEDMHelperSvc_H
 #define MUON_MuonEDMHelperSvc_H
 
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
 #include "AthenaBaseComps/AthService.h"
 
-#include "Identifier/Identifier.h"
 #include "TrkParameters/TrackParameters.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
 #include <set>
 #include <string>
@@ -27,7 +26,6 @@ static const InterfaceID IID_MuonEDMHelperSvc("Muon::MuonEDMHelperSvc",1,0);
 namespace Muon {
  
   class MuonSegment;
-  class MuonIdHelperTool;
 
   /** 
       Helper tool containing functionality needed by multiple tools. 
@@ -38,14 +36,11 @@ namespace Muon {
     MuonEDMHelperSvc(const std::string& name, ISvcLocator* svc);
 
     /** @brief destructor */
-    virtual ~MuonEDMHelperSvc() override;
+    virtual ~MuonEDMHelperSvc() override {};
     
     /** @brief initialize method, method taken from bass-class AlgTool */
     virtual StatusCode initialize() override;
 
-    /** @brief finialize method, method taken from bass-class AlgTool */
-    virtual StatusCode finalize() override;
-    
     /** @brief tries to get Identifier for measurement, if not possible it will return Identifier() */
     virtual Identifier getIdentifier( const Trk::MeasurementBase& meas ) const override;
 
@@ -71,7 +66,7 @@ namespace Muon {
     virtual bool isSLTrack( const Trk::Track& track ) const override;
 
   private:
-    ToolHandle<Muon::MuonIdHelperTool>  m_idHelper;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
 
   };
   
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMPrinterTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMPrinterTool.h
index 9978da88d4e9be55f3d3ccf0e5e193f16740155d..4f07283be0f35ce92d201d0d49c3fc078527c881 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMPrinterTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/MuonRecHelperTools/MuonEDMPrinterTool.h
@@ -18,14 +18,14 @@
 #include "MuonPattern/MuonPatternCollection.h"
 #include "TrkToolInterfaces/IResidualPullCalculator.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
+#include "TrkToolInterfaces/ITrackSummaryHelperTool.h"
 
 #include <string>
 
 static const InterfaceID IID_MuonEDMPrinterTool("Muon::MuonEDMPrinterTool",1,0);
 
-class Identifier;
 class MsgStream;
 
 namespace Trk {
@@ -34,21 +34,14 @@ namespace Trk {
   class ResidualPull;
   class MeasurementBase;
   class PrepRawData;
-  class ITrackSummaryHelperTool;  
 }
 
 namespace Muon{
-  
-  class MuonIdHelperTool;
   class MuonSegment;
   class MuonSegmentCombination;
   class MuonPattern;
   class MuonPatternCombination;
   class MuonPatternChamberIntersect;
-}
-
-namespace Muon{
-
   /**
      @brief Helper tool to print EDM objects to string in a fix format
 
@@ -59,14 +52,11 @@ namespace Muon{
     MuonEDMPrinterTool(const std::string&,const std::string&,const IInterface*);
 
     /** @brief destructor */
-    ~MuonEDMPrinterTool ();
+    ~MuonEDMPrinterTool () {};
     
     /** @brief AlgTool initilize */
     StatusCode initialize();
     
-    /** @brief AlgTool finalize */
-    StatusCode finalize();
-    
     /** @brief access to tool interface */
     static const InterfaceID& interfaceID() { return IID_MuonEDMPrinterTool; }
       
@@ -139,7 +129,7 @@ namespace Muon{
 
   private:
     
-    ToolHandle<MuonIdHelperTool>  m_idHelper;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ServiceHandle<IMuonEDMHelperSvc> m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMHelperSvc.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMHelperSvc.cxx
index 20eced4acfa885e020912cc48c4d19cc5a9ea429..c5a30fa9cd9b19df03a6457cd831f287de822947 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMHelperSvc.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMHelperSvc.cxx
@@ -1,9 +1,8 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonRecHelperTools/MuonEDMHelperSvc.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
 
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
@@ -22,37 +21,14 @@
 
 namespace Muon {
 
-  MuonEDMHelperSvc::MuonEDMHelperSvc(const std::string& name, ISvcLocator* svc) 
-    : base_class(name, svc),
-      m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool")
-  {
-    declareProperty( "MuonIdHelperTool",    m_idHelper);
-  }
-    
-  MuonEDMHelperSvc::~MuonEDMHelperSvc() {
-    
-  }
+  MuonEDMHelperSvc::MuonEDMHelperSvc(const std::string& name, ISvcLocator* svc) : base_class(name, svc) {}
     
   StatusCode MuonEDMHelperSvc::initialize() {
-
-    if( AthService::initialize().isFailure() ) return StatusCode::FAILURE;
-    
-    if( !m_idHelper.empty() && m_idHelper.retrieve().isFailure()){
-      ATH_MSG_ERROR("Could not get " << m_idHelper);
-      return StatusCode::FAILURE;
-    }
-
+    ATH_CHECK(AthService::initialize());
+    ATH_CHECK(m_idHelperSvc.retrieve());
     return StatusCode::SUCCESS;
   }
 
-  StatusCode MuonEDMHelperSvc::finalize() {
-
-    if (AthService::finalize().isFailure()) return StatusCode::RECOVERABLE;
-
-    return StatusCode::SUCCESS;
-  }
-
-
   Identifier MuonEDMHelperSvc::getIdentifier( const Trk::MeasurementBase& meas ) const {
     const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(&meas);
     if( rot ) return rot->identify();
@@ -84,10 +60,10 @@ namespace Muon {
       if( !id.is_valid() ) continue;
 
       // create chamber ID
-      chid = m_idHelper->chamberId(id);
+      chid = m_idHelperSvc->chamberId(id);
       
       // stop at first none trigger hit
-      if( !m_idHelper->isTrigger(id) ) break;
+      if( !m_idHelperSvc->isTrigger(id) ) break;
     }
     
     if( !chid.is_valid() ){
@@ -111,10 +87,10 @@ namespace Muon {
       if( !id.is_valid() ) continue;
 
       // create chamber ID
-      chid = m_idHelper->chamberId(id);
+      chid = m_idHelperSvc->chamberId(id);
       
       // stop at first none trigger hit
-      if( !m_idHelper->isTrigger(id) ){
+      if( !m_idHelperSvc->isTrigger(id) ){
 	chIds.insert(chid);
       }else{
 	chidTrig = chid;
@@ -128,7 +104,7 @@ namespace Muon {
   }
 
   bool MuonEDMHelperSvc::isEndcap( const MuonSegment& seg ) const {
-    return m_idHelper->isEndcap( chamberId(seg) );
+    return m_idHelperSvc->isEndcap( chamberId(seg) );
   }
 
   bool MuonEDMHelperSvc::isEndcap( const Trk::Track& track ) const {
@@ -143,7 +119,7 @@ namespace Muon {
       Identifier id = getIdentifier(**rit);
       if( !id.is_valid() ) continue;
       
-      if( m_idHelper->isEndcap(id) ) return true;
+      if( m_idHelperSvc->isEndcap(id) ) return true;
     }
     return false;
   }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMPrinterTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMPrinterTool.cxx
index e0389715728dabe7337851cecc1d7d1141a108e4..0958d989025687b2c1c6df924d317716ca50103a 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMPrinterTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonEDMPrinterTool.cxx
@@ -1,13 +1,10 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-
 #include "MuonRecHelperTools/MuonEDMHelperSvc.h"
 
-#include "TrkToolInterfaces/ITrackSummaryHelperTool.h"
-
 #include "TrkTrack/Track.h"
 #include "TrkTrack/AlignmentEffectsOnTrack.h"
 #include "TrkTrackSummary/MuonTrackSummary.h"
@@ -33,9 +30,6 @@
 #include "MuonSegment/MuonSegment.h"
 #include "MuonSegment/MuonSegmentCombination.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
-#include "Identifier/Identifier.h"
-
-#include "MuonIdHelpers/MuonStationIndex.h"
 
 #include <algorithm>
 #include <iostream>
@@ -45,50 +39,26 @@ namespace Muon {
 
   MuonEDMPrinterTool::MuonEDMPrinterTool(const std::string& ty,const std::string& na,const IInterface* pa)
     : AthAlgTool(ty,na,pa), 
-      m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"),
       m_summaryHelper("Muon::MuonTrackSummaryHelperTool/MuonTrackSummaryHelperTool"),
       m_pullCalculator("Trk::ResidualPullCalculator/ResidualPullCalculator")
   {
     declareInterface<MuonEDMPrinterTool>(this);
-    declareProperty( "MuonIdHelperTool",    m_idHelper);
     declareProperty( "MuonTrackSummaryHelperTool", m_summaryHelper);
   }
 
-
-  MuonEDMPrinterTool::~MuonEDMPrinterTool(){}
-
-
   StatusCode MuonEDMPrinterTool::initialize()
   {
-    if ( AthAlgTool::initialize().isFailure() ) return StatusCode::FAILURE;
+    ATH_CHECK(AthAlgTool::initialize());
   
-    if (m_idHelper.retrieve().isFailure()){
-      ATH_MSG_WARNING("Could not get " << m_idHelper); 
-      return StatusCode::FAILURE;
-    }
+    ATH_CHECK(m_idHelperSvc.retrieve());
+    ATH_CHECK(m_edmHelperSvc.retrieve());
+    ATH_CHECK(m_summaryHelper.retrieve());
 
-    
-    if (m_edmHelperSvc.retrieve().isFailure()){
-      ATH_MSG_WARNING("Could not get " << m_edmHelperSvc); 
-      return StatusCode::FAILURE;
-    }
-
-    if (m_summaryHelper.retrieve().isFailure()){
-      ATH_MSG_WARNING("Could not get " << m_summaryHelper); 
-      return StatusCode::FAILURE;
-    }
- 
     ATH_CHECK(m_DetectorManagerKey.initialize());
   
     return StatusCode::SUCCESS;
   }
 
-  StatusCode MuonEDMPrinterTool::finalize()
-  {
-    if( AthAlgTool::finalize().isFailure() ) return StatusCode::FAILURE;
-    return StatusCode::SUCCESS;
-  }
-
   std::string MuonEDMPrinterTool::print( const Trk::MuonTrackSummary& summary ) const{
 
     std::ostringstream sout;
@@ -108,9 +78,9 @@ namespace Muon {
     std::vector<ChamberHitSummary>::const_iterator chit_last = chit_end - 1;
     for( ;chit!=chit_end;++chit ){
       const Identifier& chId = chit->chamberId();
-      bool isMdt = m_idHelper->isMdt(chId);
+      bool isMdt = m_idHelperSvc->isMdt(chId);
     
-      sout << "  " << std::setw(35) << m_idHelper->toStringChamber(chId);
+      sout << "  " << std::setw(35) << m_idHelperSvc->toStringChamber(chId);
     
       const ChamberHitSummary::Projection& first  = isMdt ? chit->mdtMl1() : chit->etaProjection();
       const ChamberHitSummary::Projection& second = isMdt ? chit->mdtMl2() : chit->phiProjection();
@@ -341,8 +311,8 @@ namespace Muon {
 	if( crot ) id = crot->containedROTs().front()->identify();
       }
       if( !id.is_valid() ) continue;
-      bool measuresPhi = m_idHelper->measuresPhi(id);
-      bool isTrigger   = m_idHelper->isTrigger(id);
+      bool measuresPhi = m_idHelperSvc->measuresPhi(id);
+      bool isTrigger   = m_idHelperSvc->isTrigger(id);
       if( measuresPhi )    ++nphi;
       else if( !isTrigger) ++neta;
 
@@ -361,7 +331,7 @@ namespace Muon {
       }
     }
 
-    sout << m_idHelper->toStringChamber(chid);
+    sout << m_idHelperSvc->toStringChamber(chid);
 
     const Trk::FitQuality* fq = segment.fitQuality();
     if( fq ) {
@@ -400,7 +370,7 @@ namespace Muon {
     std::ostringstream sout;
 
     Identifier id = prd.identify();
-    sout << m_idHelper->toString( id ) << "  ";
+    sout << m_idHelperSvc->toString( id ) << "  ";
 
     const Amg::Vector3D* pos = 0;
     const MuonCluster* cl = dynamic_cast<const MuonCluster*>(&prd);
@@ -667,13 +637,13 @@ namespace Muon {
     const Trk::PrepRawData* firstPrd = 0;
     if( !intersect.prepRawDataVec().empty() && intersect.prepRawDataVec().front() ){
       firstPrd = intersect.prepRawDataVec().front();
-      chIdString = m_idHelper->toStringChamber(firstPrd->identify());
+      chIdString = m_idHelperSvc->toStringChamber(firstPrd->identify());
       chTheta = firstPrd->detectorElement()->center().theta();
       chPhi = firstPrd->detectorElement()->center().phi();
     }else{
       return chIdString;
     }
-    Identifier chId = m_idHelper->chamberId(firstPrd->identify());
+    Identifier chId = m_idHelperSvc->chamberId(firstPrd->identify());
     int neta = 0;
     int nphi = 0;
     bool isMdt = false;
@@ -690,9 +660,9 @@ namespace Muon {
 	continue;
       }
       const Identifier& id = prd->identify();
-      if( m_idHelper->measuresPhi(id) ) ++nphi;
+      if( m_idHelperSvc->measuresPhi(id) ) ++nphi;
       else                              ++neta;
-      if( !isMdt && m_idHelper->isMdt(id) ) isMdt = true;
+      if( !isMdt && m_idHelperSvc->isMdt(id) ) isMdt = true;
 
       if( !detEls.count(prd->detectorElement()) ) {
 	detEls.insert(prd->detectorElement());
@@ -705,14 +675,14 @@ namespace Muon {
 	    ATH_MSG_DEBUG("Cannot retrieve DetectorManager ");
 	  } else {
 
-            Identifier idml1 = m_idHelper->mdtIdHelper().channelID(id,1,1,1);
-            Identifier idml2 = m_idHelper->mdtIdHelper().channelID(id,2,1,1);
+            Identifier idml1 = m_idHelperSvc->mdtIdHelper().channelID(id,1,1,1);
+            Identifier idml2 = m_idHelperSvc->mdtIdHelper().channelID(id,2,1,1);
             const MuonGM::MdtReadoutElement* detEl1 = MuonDetMgr->getMdtReadoutElement( idml1 );
             const MuonGM::MdtReadoutElement* detEl2 = 0;
-            if (m_idHelper->mdtIdHelper().numberOfMultilayers(id) == 2){
+            if (m_idHelperSvc->mdtIdHelper().numberOfMultilayers(id) == 2){
               detEl2 = MuonDetMgr->getMdtReadoutElement( idml2 );
             }else{
-              ATH_MSG_DEBUG("A single multilayer for this station " << m_idHelper->toString(id));
+              ATH_MSG_DEBUG("A single multilayer for this station " << m_idHelperSvc->toString(id));
             }	
             if( detEl1 /** && !detEls.count(detEl)**/ ){
               detEls.insert(detEl1);
@@ -725,7 +695,7 @@ namespace Muon {
               nchannelsEta += detEl2->getNLayers()*detEl2->getNtubesperlayer();
             }
           }
-	}else if( m_idHelper->isTgc(id) ){
+	}else if( m_idHelperSvc->isTgc(id) ){
 	  const MuonGM::TgcReadoutElement* detEl = dynamic_cast<const MuonGM::TgcReadoutElement*>(prd->detectorElement());
           if(detEl) {
 	    for( int i=1;i<=detEl->Ngasgaps();++i ) {
@@ -733,7 +703,7 @@ namespace Muon {
 	      nchannelsPhi += detEl->nStrips(i);
 	    }
           }
-	}else if( m_idHelper->isRpc(id) ){
+	}else if( m_idHelperSvc->isRpc(id) ){
 	  const MuonGM::RpcReadoutElement* detEl = dynamic_cast<const MuonGM::RpcReadoutElement*>(prd->detectorElement());
           if(detEl) {
 	    nchannelsPhi += detEl->Nphigasgaps()*detEl->NphiStripPanels()*detEl->NphiStrips();
@@ -754,43 +724,43 @@ namespace Muon {
         ATH_MSG_DEBUG("Cannot retrieve " << key);
       }else{
         IdentifierHash hash_id;
-        m_idHelper->mdtIdHelper().get_module_hash(chId,hash_id );
+        m_idHelperSvc->mdtIdHelper().get_module_hash(chId,hash_id );
         MdtPrepDataContainer::const_iterator colIt = mdtPrdContainer->indexFind(hash_id);
         if( colIt != mdtPrdContainer->end() ) nchHitsEta = (*colIt)->size();
         else 	  ATH_MSG_DEBUG("Collection not found: hash " << hash_id);
       }
-    }else if( m_idHelper->isRpc(chId) ){
+    }else if( m_idHelperSvc->isRpc(chId) ){
       const RpcPrepDataContainer* rpcPrdContainer = 0;
       std::string key = "RPC_Measurements";
       if(evtStore()->retrieve(rpcPrdContainer,key).isFailure()) {
         ATH_MSG_DEBUG("Cannot retrieve " << key);
       }else{
         IdentifierHash hash_id;
-        m_idHelper->rpcIdHelper().get_module_hash(chId,hash_id );
+        m_idHelperSvc->rpcIdHelper().get_module_hash(chId,hash_id );
         RpcPrepDataContainer::const_iterator colIt = rpcPrdContainer->indexFind(hash_id);
         if( colIt != rpcPrdContainer->end() ) {
           RpcPrepDataCollection::const_iterator rpcIt = (*colIt)->begin();
           RpcPrepDataCollection::const_iterator rpcIt_end = (*colIt)->end();
           for( ;rpcIt!=rpcIt_end;++rpcIt ){
-            if( m_idHelper->measuresPhi((*rpcIt)->identify()) ) ++nchHitsPhi;
+            if( m_idHelperSvc->measuresPhi((*rpcIt)->identify()) ) ++nchHitsPhi;
             else                                                ++nchHitsEta;
           }
         }else ATH_MSG_DEBUG("Collection not found: hash " << hash_id);
       }
-    }else if( m_idHelper->isTgc(chId) ){
+    }else if( m_idHelperSvc->isTgc(chId) ){
       const TgcPrepDataContainer* tgcPrdContainer = 0;
       std::string key = "TGC_Measurements";
       if(evtStore()->retrieve(tgcPrdContainer,key).isFailure()) {
         ATH_MSG_DEBUG("Cannot retrieve " << key);
       }else{
         IdentifierHash hash_id;
-        m_idHelper->tgcIdHelper().get_module_hash(chId,hash_id );
+        m_idHelperSvc->tgcIdHelper().get_module_hash(chId,hash_id );
         TgcPrepDataContainer::const_iterator colIt = tgcPrdContainer->indexFind(hash_id);
         if( colIt != tgcPrdContainer->end() ) {
           TgcPrepDataCollection::const_iterator tgcIt = (*colIt)->begin();
           TgcPrepDataCollection::const_iterator tgcIt_end = (*colIt)->end();
           for( ;tgcIt!=tgcIt_end;++tgcIt ){
-            if( m_idHelper->measuresPhi((*tgcIt)->identify()) ) ++nchHitsPhi;
+            if( m_idHelperSvc->measuresPhi((*tgcIt)->identify()) ) ++nchHitsPhi;
             else                                                ++nchHitsEta;
           }
         }else ATH_MSG_DEBUG("Collection not found: hash " << hash_id);
@@ -889,7 +859,7 @@ namespace Muon {
 	rpcTimes.reserve(nhits);
 	std::vector<const MuonClusterOnTrack*>::const_iterator itR = rots.begin(), itR_end = rots.end();
 	for ( ; itR != itR_end; ++itR ) {
-	  Identifier layerId = m_idHelper->layerId((*itR)->identify());
+	  Identifier layerId = m_idHelperSvc->layerId((*itR)->identify());
 	  layers.insert(layerId);
 	  const RpcClusterOnTrack* rpc = dynamic_cast<const RpcClusterOnTrack*>(*itR);
 	  const RpcPrepData* rpcPRD = rpc ? rpc->prepRawData() : 0;
@@ -917,10 +887,10 @@ namespace Muon {
       const Trk::PseudoMeasurementOnTrack* pseudo = dynamic_cast<const Trk::PseudoMeasurementOnTrack*>(&measurement);
       if( pseudo ) idStr = "pseudo measurement";
       else idStr = "no Identifier";
-    }else if( !m_idHelper->mdtIdHelper().is_muon(id) ) {
+    }else if( !m_idHelperSvc->isMuon(id) ) {
       idStr = "Id hit"; 
     }else{
-      idStr = m_idHelper->toString( id );
+      idStr = m_idHelperSvc->toString( id );
     }
 
     return idStr;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.cxx
index 9b4d25d365ecbb9a49f70baef5890134b4d1d7bd..e98e5e7285a4154d51a3ae3b13549897afab297f 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.cxx
@@ -1,10 +1,9 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonSegmentConverterTool.h"
 #include "TrkEventPrimitives/FitQuality.h"
-#include "Identifier/Identifier.h"
 #include "MuonRIO_OnTrack/MuonClusterOnTrack.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
 
@@ -13,30 +12,20 @@ namespace Muon {
   MuonSegmentConverterTool::MuonSegmentConverterTool(const std::string& t, const std::string& n, const IInterface* p) 
     : AthAlgTool(t,n,p),
       m_hitSummaryTool("Muon::MuonSegmentHitSummaryTool/MuonSegmentHitSummaryTool"),
-      m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"),
       m_hitTimingTool("Muon::MuonHitTimingTool/MuonHitTimingTool")
   {
     declareInterface<xAODMaker::IMuonSegmentConverterTool>(this);
   }
     
-  MuonSegmentConverterTool::~MuonSegmentConverterTool() {
-    
-  }
-    
   StatusCode MuonSegmentConverterTool::initialize() {
 
     ATH_CHECK(m_hitSummaryTool.retrieve());
-    ATH_CHECK(m_idHelper.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
     ATH_CHECK(m_edmHelper.retrieve());
     ATH_CHECK(m_hitSummaryTool.retrieve());
     return StatusCode::SUCCESS;
   }
 
-  StatusCode MuonSegmentConverterTool::finalize() {
-
-    return StatusCode::SUCCESS;
-  }
-
   xAOD::MuonSegment* MuonSegmentConverterTool::convert( const ElementLink< ::Trk::SegmentCollection >& segLink, xAOD::MuonSegmentContainer* container ) const {
     
     // sanity checks 
@@ -67,7 +56,7 @@ namespace Muon {
 
       // get Identifier and remove MDT hits
       Identifier id = m_edmHelper->getIdentifier(**mit);
-      if( !id.is_valid() || !m_idHelper->isTrigger(id) ) continue;
+      if( !id.is_valid() || !m_idHelperSvc->isTrigger(id) ) continue;
       
       // cast to  MuonClusterOnTrack
       const MuonClusterOnTrack* clus = dynamic_cast<const MuonClusterOnTrack*>(*mit);
@@ -112,10 +101,10 @@ namespace Muon {
 
     // identifier
     Identifier id = m_edmHelper->chamberId(seg);
-    int eta = m_idHelper->stationEta(id);
-    int sector = m_idHelper->sector(id);
-    MuonStationIndex::ChIndex chIndex = m_idHelper->chamberIndex(id);
-    MuonStationIndex::TechnologyIndex technology = m_idHelper->technologyIndex(id);
+    int eta = m_idHelperSvc->stationEta(id);
+    int sector = m_idHelperSvc->sector(id);
+    MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(id);
+    MuonStationIndex::TechnologyIndex technology = m_idHelperSvc->technologyIndex(id);
     xaodSeg->setIdentifier(sector,chIndex,eta,technology);
 
     // hit counts
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.h
index 712316e924809af8b9931c0c5b95adaacb5c4a70..2b68fb4f2494b78edc1a8f8aa35434051cad1530 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecHelperTools/src/MuonSegmentConverterTool.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
 */
 
 #ifndef MUON_MUONSEGMENTCONVERTERTOOL_H
@@ -15,7 +15,7 @@
 #include "xAODMuon/MuonSegmentContainer.h"
 #include "MuonSegment/MuonSegment.h"
 #include "MuonSegmentMakerToolInterfaces/IMuonSegmentHitSummaryTool.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
 #include "xAODMuonCnv/IMuonSegmentConverterTool.h"
 #include "MuonRecToolInterfaces/IMuonHitTimingTool.h"
@@ -30,13 +30,10 @@ namespace Muon {
     MuonSegmentConverterTool(const std::string&, const std::string&, const IInterface*);
     
     /** @brief destructor */
-    ~MuonSegmentConverterTool();
+    ~MuonSegmentConverterTool() {};
     
     /** @brief initialize method, method taken from bass-class AlgTool */
     StatusCode initialize();
-
-    /** @brief finialize method, method taken from bass-class AlgTool */
-    StatusCode finalize();
     
     /** @brief access to tool interface */
     static const InterfaceID& interfaceID() { return IID_MuonSegmentConverterTool; }
@@ -55,7 +52,7 @@ namespace Muon {
     void addClusterTiming( const MuonSegment& seg , xAOD::MuonSegment& xaodSeg) const;
 
     ToolHandle<IMuonSegmentHitSummaryTool> m_hitSummaryTool;
-    ToolHandle<MuonIdHelperTool>  m_idHelper;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ServiceHandle<IMuonEDMHelperSvc> m_edmHelper {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/MuonTGRecTools/MuonHolesOnTrackTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/MuonTGRecTools/MuonHolesOnTrackTool.h
index 2315792b0b7b35fabfb9ad4218f5deec50a0278b..28552606c013eadff25a82f5f8d61b0e0e0d0eec 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/MuonTGRecTools/MuonHolesOnTrackTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/MuonTGRecTools/MuonHolesOnTrackTool.h
@@ -1,16 +1,14 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// MuonHolesOnTrackTool.h, (c) ATLAS Detector Softwareop 
-///////////////////////////////////////////////////////////////////
-
 #ifndef MUONTGRECTOOLS_MUONHOLESONTRACKTOOL_H
 #define MUONTGRECTOOLS_MUONHOLESONTRACKTOOL_H
 
 // Base class
 #include "AthenaBaseComps/AthAlgTool.h"
+#include "GaudiKernel/ToolHandle.h"
+#include "GaudiKernel/ServiceHandle.h"
 #include "TrkTrack/Track.h"
 #include "TrkExInterfaces/IExtrapolator.h"
 #include "TrkToolInterfaces/ITrackHoleSearchTool.h"
@@ -25,7 +23,7 @@
 #include "MuonTrackMakerUtils/TrackStateOnSurfaceComparisonFunction.h"
 #include <fstream>
 
-#include "MuonIdHelpers/MuonIdHelperTool.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonPrepRawData/MdtPrepData.h"
 #include "MuonPrepRawData/RpcPrepData.h"
 #include "MuonTGRecTools/IMuonTGMeasTool.h"
@@ -88,8 +86,7 @@ private:
   std::vector<double>               m_sortingRefPoint;    //!< start point to detect min TP, only if ROTfit
   mutable Muon::TrackStateOnSurfaceComparisonFunction*   m_tSoSOrder;
   
-  ToolHandle<Muon::MuonIdHelperTool> m_muonIdHelperTool{this, "idHelper", 
-    "Muon::MuonIdHelperTool/MuonIdHelperTool", "Handle to the MuonIdHelperTool"};
+  ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
   
   mutable const  Trk::TrackingVolume*       m_msEntrance;
   
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonHolesOnTrackTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonHolesOnTrackTool.cxx
index 6d6330a1e3efaadb016774f5b9e4e347a19884bf..79aa75193ff6019d56ccf6a4413f50e9e343c12f 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonHolesOnTrackTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonHolesOnTrackTool.cxx
@@ -1,31 +1,17 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// MuonHolesOnTrackTool.cxx
-//   Implementation file for class MuonHolesOnTrackTool
-///////////////////////////////////////////////////////////////////
-// S.Todorova
-///////////////////////////////////////////////////////////////////
-
 #include "MuonTGRecTools/MuonHolesOnTrackTool.h"
 
 #include "TrkParameters/TrackParameters.h"
 #include "TrkEventPrimitives/ParamDefs.h"
-//#include "TrkEventPrimitives/LocalPosition.h"
 #include "TrkEventPrimitives/FitQualityOnSurface.h"
-//#include "TrkEventPrimitives/CovarianceMatrix.h"
-// #include "TrkParameters/MeasuredPerigee.h"
-// #include "TrkParameters/MeasuredTrackParameters.h"
-// #include "TrkParameters/Perigee.h"
 #include "TrkMeasurementBase/MeasurementBase.h"
 #include "TrkSurfaces/DistanceSolution.h"
 #include "TrkGeometry/Layer.h"
 #include "TrkGeometry/TrackingVolume.h"
 #include "TrkGeometry/TrackingGeometry.h"
-// #include "TrkParameters/AtaCylinder.h"
-// #include "TrkParameters/AtaDisc.h"
 #include "TrkRIO_OnTrack/RIO_OnTrack.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
 #include "MuonRIO_OnTrack/MuonClusterOnTrack.h"
@@ -34,7 +20,6 @@
 #include "TrackRecord/TrackRecord.h"
 #include <vector>
 
-//#include "MuonDigitContainer/MdtDigitContainer.h"
 #include "MuonPrepRawData/MuonPrepDataContainer.h"
 #include "MuonDigitContainer/RpcDigitContainer.h"
 #include "MuonReadoutGeometry/MdtReadoutElement.h"
@@ -76,40 +61,18 @@ Muon::MuonHolesOnTrackTool::MuonHolesOnTrackTool(const std::string &type, const
 // Initialize method:
 StatusCode Muon::MuonHolesOnTrackTool::initialize()
 {
+  ATH_CHECK(AthAlgTool::initialize());
 
   // Get the messaging service, print where you are
   ATH_MSG_INFO("MuonHolesOnTrackTool::initialize()");
  
-  ATH_CHECK( m_muonIdHelperTool.retrieve() );
-
-  // get measurement tool
-  StatusCode sc = m_measTool.retrieve();
-  if (sc.isFailure()) {
-    ATH_MSG_ERROR("Could not find TG measurement tool ");
-  } else {
-    ATH_MSG_INFO("TG measurement tool booked ");
-  }
-
-  // get extrapolator
-  sc = m_extrapolator.retrieve();
-  if (sc.isFailure()) {
-    ATH_MSG_FATAL("Could not find extrapolator tool. Exiting.");
-    return StatusCode::FAILURE;
-  } else {
-    ATH_MSG_INFO("Extrapolator tool booked ");
-  }
-
-  // get rotCreator tool
-  sc = m_rotCreator.retrieve();
-  if (sc.isFailure()) {
-    ATH_MSG_ERROR("Could not find RIO_OnTrackCreator tool ");
-  } else {
-    ATH_MSG_INFO(" RIO_OnTrackCreator tool booked ");
-  }
+  ATH_CHECK(m_idHelperSvc.retrieve());
+  ATH_CHECK(m_measTool.retrieve());
+  ATH_CHECK(m_extrapolator.retrieve());
+  ATH_CHECK(m_rotCreator.retrieve());
 
   return StatusCode::SUCCESS;
 }
-// 
 
 DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHolesOnTrack(const Trk::Track& input_track, const Trk::ParticleHypothesis particle)  const
 {
@@ -117,15 +80,14 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
   ATH_MSG_DEBUG("MuonHolesOnTrackTool::getHolesOnTrack");
 
   // get MSEntry and ordered TSoS 
-  DataVector<const Trk::TrackStateOnSurface>* tSoS=0;   
+  DataVector<const Trk::TrackStateOnSurface>* tSoS=nullptr;   
   const Trk::TrackParameters* msEntry = getMSEntry(&input_track,tSoS);
   // cancel if no msEntry found
   if (!msEntry) 
   	{
 	delete tSoS;
-	return 0;
+	return nullptr;
 	}
-  //
   DataVector<const Trk::TrackStateOnSurface>::const_iterator iter = tSoS->begin();
 
   bool isSoft = false;
@@ -144,10 +106,9 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
     ATH_MSG_DEBUG(" Track has Momentum lower than " << m_softLowerCut << " MeV/c:  " 
 	<< " abandoning the hole search ");
     delete msEntry; delete tSoS;
-    return 0;
+    return nullptr;
   }
 
-  //
   DataVector<const Trk::TrackStateOnSurface>*  holes= new DataVector<const Trk::TrackStateOnSurface>;
   std::vector<const Trk::TrackStateOnSurface*>*  temp_holes= new std::vector<const Trk::TrackStateOnSurface*>;
 
@@ -192,14 +153,12 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
     if(nAttempts > 30){
       ATH_MSG_INFO("getHolesOnTrack: too many attempts extrapolating; aborting extrapolation " 
 	  << " and returning NO holes !!");
-      //break;
       delete currPar; delete nextPar;
       for (unsigned int ih=0; ih < temp_holes->size(); ih++) delete ((*temp_holes)[ih]);   
       temp_holes->clear(); delete temp_holes;
-      //for (unsigned int ih=0; ih < holes->size(); ih++) delete ((*holes)[ih]);   
       holes->clear(); delete holes;
       delete tSoS;
-      return 0;
+      return nullptr;
     }
     
     const Trk::TrackParameters* updatePar = 0;
@@ -216,17 +175,14 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
       }
       if (failedExtr && refPars) {
 	// try to recover
-	//std::cout <<"extrapolate to missed surface:"<<nextLayer->surfaceRepresentation().center() << std::endl; 
 	const Trk::TrackParameters* repPar = m_extrapolator->extrapolate(*refPars,nextLayer->surfaceRepresentation(),
 									 Trk::alongMomentum,false,particle) ;
 	for (unsigned int ih=0; ih < temp_holes->size(); ih++) delete ((*temp_holes)[ih]);   
 	temp_holes->clear();
-	//std::cout << "trying to recover with parameters:"<< repPar->position() << std::endl;
 	if (repPar) {
 	  int assocMeas = 0;
 	  double res = -1.;
 	  updatePar = findAssociatedMeasurement(repPar,nextLayer,tSoS,assocMeas,res);
-	  //std::cout << "update?"<<updatePar <<","<<res<<","<<assocMeas <<std::endl;
 	  delete nextPar;
 	  nextPar = updatePar;
           if (updatePar) {delete refPars; refPars=updatePar->clone();}
@@ -241,13 +197,12 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
       ATH_MSG_WARNING("MuonHolesOnTrackTool::getHolesOnTrack: lost in extrapolation, abort");
       for (unsigned int ih=0; ih < temp_holes->size(); ih++) delete ((*temp_holes)[ih]);
       temp_holes->clear();
-      delete temp_holes; temp_holes=0;
-      //for (unsigned int ih=0; ih < holes->size(); ih++) delete ((*holes)[ih]);
+      delete temp_holes;
       delete holes;
       delete tSoS;
       delete currPar;
       delete nextPar;
-      return 0;
+      return nullptr;
     }
     if (!nextPar) break;
     
@@ -267,17 +222,16 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
        
       unsigned int lId = layer->layerType();
       Identifier layId(lId);
-      if ( assocMeas<1  &&  lId && m_muonIdHelperTool->mdtIdHelper().is_mdt(layId)  ) {
+      if ( assocMeas<1  &&  lId && m_idHelperSvc->isMdt(layId)  ) {
         bool measPhi = false;
 	const Trk::TrackStateOnSurface* hole = createHole(nextPar,layer,measPhi);
         if (hole) temp_holes->push_back(hole); 
       }
 
-      if ( assocMeas<3  &&  lId && !m_muonIdHelperTool->mdtIdHelper().is_mdt(layId) ) {
+      if ( assocMeas<3  &&  lId && !m_idHelperSvc->isMdt(layId) ) {
         // create a hole 
-        if ( m_muonIdHelperTool->tgcIdHelper().is_tgc(layId) && assocMeas<2) {
-          if (m_muonIdHelperTool->tgcIdHelper().gasGap(layId)==2 && m_muonIdHelperTool->tgcIdHelper().gasGapMax(layId)==3) assocMeas+=2;
-          //if (layId == 0) std::cout << "TGC layer not identified, this phi hole can be fake" << std::endl;
+        if ( m_idHelperSvc->isTgc(layId) && assocMeas<2) {
+          if (m_idHelperSvc->tgcIdHelper().gasGap(layId)==2 && m_idHelperSvc->tgcIdHelper().gasGapMax(layId)==3) assocMeas+=2;
         }
 	if (assocMeas<2){
 	  bool measPhi = true;
@@ -294,7 +248,6 @@ DataVector<const Trk::TrackStateOnSurface>* Muon::MuonHolesOnTrackTool::getHoles
       if (assocMeas>0 && res < 50. )  {
 	for (unsigned int ih=0; ih < temp_holes->size(); ih++) holes->push_back((*temp_holes)[ih]);   
 	temp_holes->clear();
-	//std::cout << "saving temp holes:" << holes->size() << std::endl;
       }
     }
     delete currPar;
@@ -317,7 +270,6 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHoles(const Trk::Track
   // Get the messaging service, print where you are
   ATH_MSG_DEBUG("MuonHolesOnTrackTool::getTrackWithHoles");
   
-  //
   DataVector<const Trk::TrackStateOnSurface>*  holes= getHolesOnTrack(input_track, particle);
 
   // get MSEntry and ordered TSoS 
@@ -343,19 +295,7 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHolesAndOutliers(const
   // get MSEntry and ordered TSoS 
   DataVector<const Trk::TrackStateOnSurface>* tSoS;   
   const Trk::TrackParameters* msEntry = getMSEntry(&input_track,tSoS);
-  /*
-  DataVector<const Trk::TrackStateOnSurface>::const_iterator iter = tSoS->begin();
-  for (;iter!=tSoS->end();iter++) {
-    if ( (*iter)->type(Trk::TrackStateOnSurface::Measurement) ) {
-      std::cout << "ordered measurements?" << iter-tSoS->begin() << "," 
-		<< (*iter)->measurementOnTrack()->associatedSurface().center() << std::endl;
-      if ((*iter)->trackParameters()) 
-      std::cout << "track parameters?" << iter-tSoS->begin() << "," 
-		<< (*iter)->trackParameters()->position() <<"," <<(*iter)->trackParameters()->momentum()  << std::endl;
-    }
-  }
-  */
-  //
+
   DataVector<const Trk::TrackStateOnSurface>*  holes= new DataVector<const Trk::TrackStateOnSurface>;
   std::vector<const Trk::TrackStateOnSurface*>*  temp_holes= new std::vector<const Trk::TrackStateOnSurface*>;
 
@@ -400,18 +340,14 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHolesAndOutliers(const
       }  
       if (failedExtr) {
 	// try to recover
-	//std::cout <<"extrapolate to missed surface:"<<nextLayer->surfaceRepresentation().center() << std::endl; 
 	const Trk::TrackParameters* repPar = m_extrapolator->extrapolate(*currPar,nextLayer->surfaceRepresentation(),
 									 Trk::alongMomentum,false,particle) ;
 	temp_holes->clear();
-	//std::cout << "trying to recover with parameters:"<< repPar->position() << std::endl;
 	if (repPar) {
 	  int assocMeas = 0;
 	  double res = -1.;
 	  updatePar = findAssociatedMeasurement(repPar,nextLayer,tSoS,assocMeas,res);
-	  //std::cout << "update?"<<updatePar <<","<<res<<","<<assocMeas <<std::endl;
 	  if (updatePar) { 
-	    //std::cout << "updated position:" << updatePar->position() << std::endl;
 	    nextPar = updatePar;
             layer = nextLayer;
 	    updatePar = 0;
@@ -448,7 +384,7 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHolesAndOutliers(const
        
       unsigned int lId = layer->layerType();  
       Identifier layId(lId);
-      if ( assocMeas<1  &&  lId && m_muonIdHelperTool->mdtIdHelper().is_mdt(layId)  ) {
+      if ( assocMeas<1  &&  lId && m_idHelperSvc->isMdt(layId)  ) {
         bool measPhi = false;
 	const Trk::TrackStateOnSurface* hole = createHole(nextPar,layer,measPhi);
         if (hole) temp_holes->push_back(hole); 
@@ -456,11 +392,10 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHolesAndOutliers(const
         if (outlier) temp_holes->push_back(outlier); 
       }
 
-      if ( assocMeas<3  &&  lId && !m_muonIdHelperTool->mdtIdHelper().is_mdt(layId) ) {
+      if ( assocMeas<3  &&  lId && !m_idHelperSvc->isMdt(layId) ) {
         // create a hole 
-        if ( m_muonIdHelperTool->tgcIdHelper().is_tgc(layId) && assocMeas<2) {
-          if (m_muonIdHelperTool->tgcIdHelper().gasGap(layId)==2 && m_muonIdHelperTool->tgcIdHelper().gasGapMax(layId)==3) assocMeas+=2;
-          //if (layId == 0) std::cout << "TGC layer not identified, this phi hole can be fake" << std::endl;
+        if ( m_idHelperSvc->isTgc(layId) && assocMeas<2) {
+          if (m_idHelperSvc->tgcIdHelper().gasGap(layId)==2 && m_idHelperSvc->tgcIdHelper().gasGapMax(layId)==3) assocMeas+=2;
         }
 	if (assocMeas<2){
 	  bool measPhi = true;
@@ -481,7 +416,6 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHolesAndOutliers(const
       if (assocMeas>0 && res < 50. )  {
 	for (unsigned int ih=0; ih < temp_holes->size(); ih++) holes->push_back((*temp_holes)[ih]);   
 	temp_holes->clear();
-	//std::cout << "saving temp holes:" << holes->size() << std::endl;
       }
     }
     currPar=nextPar;
@@ -497,7 +431,6 @@ const Trk::Track* Muon::MuonHolesOnTrackTool::getTrackWithHolesAndOutliers(const
  
   DataVector<const Trk::TrackStateOnSurface>::iterator hit  = holes->begin();
   DataVector<const Trk::TrackStateOnSurface>::iterator hend = holes->end();
-  // 
   sort( hit, hend, fOrd );
 
   // create track
@@ -509,9 +442,6 @@ StatusCode Muon::MuonHolesOnTrackTool::finalize()
 {
   // Get the messaging service, print where you are
   ATH_MSG_INFO("MuonHolesOnTrackTool::finalize()");
-  //delete m_tpMinFinder;
-  // clean up - crashing
-  //for (unsigned int i=0;i<m_garbage.size();i++) delete m_garbage[i]; 
 
   return StatusCode::SUCCESS;
 }
@@ -532,7 +462,6 @@ const Trk::TrackParameters* Muon::MuonHolesOnTrackTool::getMSEntry(const Track*
   DataVector<const Trk::TrackStateOnSurface>::const_iterator iter = tSoS->begin();
   // unpack competing muon clusters (RPC and TGC)
   for (;iter!=tSoS->end();iter++) {
-    //if ( (*iter)->type(Trk::TrackStateOnSurface::Measurement) ) {
     if ( (*iter)->type(Trk::TrackStateOnSurface::Measurement) || (*iter)->type(Trk::TrackStateOnSurface::Outlier) ){
       const Muon::CompetingMuonClustersOnTrack* muclust = dynamic_cast<const Muon::CompetingMuonClustersOnTrack*> ((*iter)->measurementOnTrack()); 
       if(muclust){
@@ -632,34 +561,30 @@ const Trk::TrackParameters* Muon::MuonHolesOnTrackTool::findAssociatedMeasuremen
 	Identifier hid = (*tit)->trackParameters()->associatedSurface().associatedDetectorElementIdentifier() ;
         if (hid.get_identifier32().get_compact()>0) {
           assoc = true;
-	  if (m_muonIdHelperTool->mdtIdHelper().is_rpc(hid)) {
-	    if ( m_muonIdHelperTool->rpcIdHelper().measuresPhi(hid) ) {assocMeasPhi = true;}
+	  if (m_idHelperSvc->isRpc(hid)) {
+	    if ( m_idHelperSvc->rpcIdHelper().measuresPhi(hid) ) {assocMeasPhi = true;}
 	    else { assocMeasEtaZ = true;}
 	  }
-	  if (m_muonIdHelperTool->mdtIdHelper().is_csc(hid)) {
-	    if ( m_muonIdHelperTool->cscIdHelper().measuresPhi(hid) ) {assocMeasPhi = true;}
+	  if (m_idHelperSvc->isCsc(hid)) {
+	    if ( m_idHelperSvc->cscIdHelper().measuresPhi(hid) ) {assocMeasPhi = true;}
 	    else { assocMeasEtaZ = true;}
 	  }
-	  if (m_muonIdHelperTool->mdtIdHelper().is_tgc(hid)) {
-	    if ( m_muonIdHelperTool->tgcIdHelper().isStrip(hid) ) {assocMeasPhi = true;}
+	  if (m_idHelperSvc->isTgc(hid)) {
+	    if ( m_idHelperSvc->tgcIdHelper().isStrip(hid) ) {assocMeasPhi = true;}
 	    else { assocMeasEtaZ = true;}
 	  }
 	}
       }
     }
-    //if ((*tit)->type(Trk::TrackStateOnSurface::Measurement) ) {
     if ((*tit)->type(Trk::TrackStateOnSurface::Measurement) || (*tit)->type(Trk::TrackStateOnSurface::Outlier)) {
       if   ( layer->isOnLayer((*tit)->measurementOnTrack()->associatedSurface().center())   ) {
-	//std::cout << "associated measurement found:" << tit-tbeg << std::endl;
         assoc = true; 
 	const Trk::TrackParameters* trUpdate = (*tit)->trackParameters();
         if (trUpdate) {
-	  //std::cout << "track record:" << trUpdate->position() <<"," << trUpdate->momentum() << std::endl; 
 	  // verify that surfaces are compatible
 	  Identifier id1 = (*tit)->measurementOnTrack()->associatedSurface().associatedDetectorElementIdentifier(); 
 	  Identifier id2 = trUpdate->associatedSurface().associatedDetectorElementIdentifier(); 
 	  if ( id1.get_identifier32().get_compact() && id2.get_identifier32().get_compact() && id1==id2 ) {   // information consistent 
-	    //std::cout << "residual:" << m_measTool->residual(layer,nextPar,id1);
 	    if (m_parUpdate ){
 	      // check the parameters for update
 	      double oa = nextPar->momentum().unit().dot(trUpdate->momentum().unit());
@@ -667,7 +592,6 @@ const Trk::TrackParameters* Muon::MuonHolesOnTrackTool::findAssociatedMeasuremen
 		delete updatePar;
 		updatePar = m_measTool->detElToLayer( layer, trUpdate, id1);
 	      }
-	      //if (updatePar) std::cout << "projected parameters for update:" << updatePar->position() << std::endl;
 	    }
 	  } else {
 	    ATH_MSG_WARNING( name() <<"track parameters in track record not compatible with hit surface ");          
@@ -681,16 +605,16 @@ const Trk::TrackParameters* Muon::MuonHolesOnTrackTool::findAssociatedMeasuremen
 	if (rio) {
 	  Identifier id = rio->identify();
           res = fabs(m_measTool->residual(nextPar,id));
-	  if (m_muonIdHelperTool->mdtIdHelper().is_rpc(id)) {
-	    if ( m_muonIdHelperTool->rpcIdHelper().measuresPhi(id) ) {assocMeasPhi = true;}
+	  if (m_idHelperSvc->isRpc(id)) {
+	    if ( m_idHelperSvc->rpcIdHelper().measuresPhi(id) ) {assocMeasPhi = true;}
 	    else { assocMeasEtaZ = true;}
 	  }
-	  if (m_muonIdHelperTool->mdtIdHelper().is_csc(id)) {
-	    if ( m_muonIdHelperTool->cscIdHelper().measuresPhi(id) ) {assocMeasPhi = true;}
+	  if (m_idHelperSvc->isCsc(id)) {
+	    if ( m_idHelperSvc->cscIdHelper().measuresPhi(id) ) {assocMeasPhi = true;}
 	    else { assocMeasEtaZ = true;}
 	  }
-	  if (m_muonIdHelperTool->mdtIdHelper().is_tgc(id)) {
-	    if ( m_muonIdHelperTool->tgcIdHelper().isStrip(id) ) {assocMeasPhi = true;}
+	  if (m_idHelperSvc->isTgc(id)) {
+	    if ( m_idHelperSvc->tgcIdHelper().isStrip(id) ) {assocMeasPhi = true;}
 	    else { assocMeasEtaZ = true;}
 	  }
 	}
@@ -724,22 +648,17 @@ const Trk::TrackStateOnSurface* Muon::MuonHolesOnTrackTool::createHole(const Trk
     Identifier refId = m_measTool->nearestDetEl(layer,nextPar,measPhi,pitch);
     if ( refId.get_identifier32().get_compact() > 0 ) {
       hPar = m_measTool->layerToDetEl(layer,nextPar,refId);
-      //if (!hPar) std::cout << "WARNING: projection of parameters failed" << std::endl;
     } else {
       inRange = false;  
     }
   } else {
     hPar = nextPar->clone();
   }
-  //std::cout << "check hole creation:"<< <<std::endl;
-  //if (hPar) std::cout << "check hole creation:"<<hPar->associatedSurface() <<std::endl;
   if (inRange && hPar) {
     std::bitset<Trk::TrackStateOnSurface::NumberOfTrackStateOnSurfaceTypes> typePattern;  
     typePattern.set(Trk::TrackStateOnSurface::Hole);       		
     hole=new Trk::TrackStateOnSurface(dummy_rio,hPar,dummy_fitQuality,dummy_sa,typePattern); 
   }
-  //if (hole) std::cout << "check hole par:"<<hole->trackParameters()<< std::endl;
-  //if (hole) std::cout << "check hole associated surface:"<<hole->trackParameters()->associatedSurface() << std::endl;
   return hole;
 }
 
@@ -759,9 +678,9 @@ const Trk::TrackStateOnSurface* Muon::MuonHolesOnTrackTool::createOutlier(const
       bool rioMeasPhi=false;   
       if (rio) {
 	Identifier id = rio->identify();
-	if ( m_muonIdHelperTool->mdtIdHelper().is_rpc(id) && m_muonIdHelperTool->rpcIdHelper().measuresPhi(id) ) rioMeasPhi = true;
-	if ( m_muonIdHelperTool->mdtIdHelper().is_csc(id) && m_muonIdHelperTool->cscIdHelper().measuresPhi(id) ) rioMeasPhi = true;
-	if ( m_muonIdHelperTool->mdtIdHelper().is_tgc(id) && m_muonIdHelperTool->tgcIdHelper().isStrip(id) )     rioMeasPhi = true;
+	if ( m_idHelperSvc->isRpc(id) && m_idHelperSvc->rpcIdHelper().measuresPhi(id) ) rioMeasPhi = true;
+	if ( m_idHelperSvc->isCsc(id) && m_idHelperSvc->cscIdHelper().measuresPhi(id) ) rioMeasPhi = true;
+	if ( m_idHelperSvc->isTgc(id) && m_idHelperSvc->tgcIdHelper().isStrip(id) )     rioMeasPhi = true;
       }
       if ( (!measPhi && !rioMeasPhi) || (measPhi && rioMeasPhi) ) {
 	if ( rio && m_measTool->residual(layer,nextPar,rio) < m_outlierLim ) {
@@ -825,7 +744,6 @@ void Muon::MuonHolesOnTrackTool::countHoles( const Trk::Track& input_track,  std
   // Get the messaging service, print where you are
   ATH_MSG_DEBUG("MuonHolesOnTrackTool::countHoles");
   
-  //
   DataVector<const Trk::TrackStateOnSurface>*  holes= getHolesOnTrack(input_track, particle);
  
   if (!holes)  return;
@@ -840,18 +758,18 @@ void Muon::MuonHolesOnTrackTool::countHoles( const Trk::Track& input_track,  std
 
     Identifier	hid = (*hit)->trackParameters()->associatedSurface().associatedDetectorElementIdentifier() ;
     if (hid.get_identifier32().get_compact()>0) {
-      if (m_muonIdHelperTool->mdtIdHelper().is_mdt(hid)) information[25]++;   
+      if (m_idHelperSvc->isMdt(hid)) information[25]++;   
 
-      else if (m_muonIdHelperTool->mdtIdHelper().is_rpc(hid)) {
-	if ( m_muonIdHelperTool->rpcIdHelper().measuresPhi(hid) ) information[24]++; 
+      else if (m_idHelperSvc->isRpc(hid)) {
+	if ( m_idHelperSvc->rpcIdHelper().measuresPhi(hid) ) information[24]++; 
 	else                                   information[23]++; 
       
-      } else if (m_muonIdHelperTool->mdtIdHelper().is_csc(hid)) {
-	if ( m_muonIdHelperTool->cscIdHelper().measuresPhi(hid) ) information[22]++; 
+      } else if (m_idHelperSvc->isCsc(hid)) {
+	if ( m_idHelperSvc->cscIdHelper().measuresPhi(hid) ) information[22]++; 
 	else                                   information[21]++; 
 	  
-      } else if (m_muonIdHelperTool->mdtIdHelper().is_tgc(hid)) {
-	if ( m_muonIdHelperTool->tgcIdHelper().isStrip(hid) )     information[27]++; 
+      } else if (m_idHelperSvc->isTgc(hid)) {
+	if ( m_idHelperSvc->tgcIdHelper().isStrip(hid) )     information[27]++; 
 	else                                   information[26]++; 
       }
     }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.cxx
index 93753d7a9faa25e48ea966959ea896e498f583a0..ea7fefe95a4c6d3f65fc07903b86269d23483d3b 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.cxx
@@ -1,30 +1,25 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonSystemExtensionTool.h"
 
-#include "TrkExInterfaces/IExtrapolator.h"
 #include "TrkSurfaces/PlaneSurface.h"
 #include "TrkSurfaces/DiscSurface.h"
 
 #include "EventPrimitives/EventPrimitivesHelpers.h"
 
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonIdHelpers/MuonStationIndexHelpers.h"
 #include "MuonDetDescrUtils/MuonChamberLayerDescription.h"
 
 #include "MuonLayerEvent/MuonSystemExtension.h"
 #include "MuonLayerEvent/MuonSystemExtensionCollection.h"
 
-#include "RecoToolInterfaces/IParticleCaloExtensionTool.h"
-
+#include "MuonIdHelpers/MuonStationIndexHelpers.h"
 
 namespace Muon {
 
   MuonSystemExtensionTool::MuonSystemExtensionTool(const std::string& type, const std::string& name, const IInterface* parent):
     AthAlgTool(type,name,parent),
-    m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"),
     m_caloExtensionTool("Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool", this),
     m_extrapolator("Trk::Extrapolator/AtlasExtrapolator", this)
   {
@@ -32,19 +27,10 @@ namespace Muon {
 
     declareProperty("Extrapolator",m_extrapolator );
     declareProperty("ParticleCaloExtensionTool",m_caloExtensionTool );    
-    declareProperty("MuonIdHelperTool",m_idHelper );    
-
-  }
-
-  MuonSystemExtensionTool::~MuonSystemExtensionTool() { }
-
-  StatusCode MuonSystemExtensionTool::finalize() {
-    return StatusCode::SUCCESS;
   }
 
   StatusCode MuonSystemExtensionTool::initialize() {
 
-    ATH_CHECK(m_idHelper.retrieve());
     ATH_CHECK(m_caloExtensionTool.retrieve());
     ATH_CHECK(m_extrapolator.retrieve());
 
@@ -73,9 +59,6 @@ namespace Muon {
 
     }
 
-//    if( !initializeGeometryEndcap( MuonStationIndex::EndcapA ) ) return false;
-//    if( !initializeGeometryEndcap( MuonStationIndex::EndcapC ) ) return false;
-    
     return true;
   }
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.h
index 1f5556660b46f3a23d8d1a31a42be5d10524e243..7f60d018f4e86bb92958ebdda1fb876ecfca1ead 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTGRecTools/src/MuonSystemExtensionTool.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 MUON_MUONSYSTEMEXTENSIONTOOL_H
@@ -14,34 +14,29 @@
 
 #include "TrkParameters/TrackParameters.h"
 
-#include "MuonIdHelpers/MuonStationIndex.h"
 #include "MuonLayerEvent/MuonLayerSurface.h"
 #include "MuonDetDescrUtils/MuonSectorMapping.h"
 #include "MuonRecToolInterfaces/IMuonSystemExtensionTool.h"
-
-
+#include "MuonIdHelpers/MuonStationIndex.h"
+#include "RecoToolInterfaces/IParticleCaloExtensionTool.h"
+#include "TrkExInterfaces/IExtrapolator.h"
 
 namespace Trk {
   class Surface;
-  class IExtrapolator;
-  class IParticleCaloExtensionTool;
 }
 
 namespace Muon {
 
-  class MuonIdHelperTool;
   class MuonSystemExtension;
 
-
   class MuonSystemExtensionTool :  virtual public IMuonSystemExtensionTool, public AthAlgTool {
   public:
     typedef std::vector< MuonLayerSurface > SurfaceVec;
 
     /** Default AlgTool functions */
     MuonSystemExtensionTool(const std::string& type, const std::string& name, const IInterface* parent);
-    virtual ~MuonSystemExtensionTool();
+    virtual ~MuonSystemExtensionTool() {};
     StatusCode initialize();
-    StatusCode finalize();
 
     /** get muon system extension */
     bool muonSystemExtension(  const xAOD::TrackParticle& indetTrackParticle, const MuonSystemExtension*& muonSystemExtention ) const;
@@ -56,9 +51,6 @@ namespace Muon {
     /** get surfaces to be intersected for a given start parameters */
     SurfaceVec getSurfacesForIntersection( const Trk::TrackParameters& muonEntryPars ) const;
 
-
-    /** tool handles */
-    ToolHandle<MuonIdHelperTool>   m_idHelper; 
     ToolHandle <Trk::IParticleCaloExtensionTool> m_caloExtensionTool; 
     ToolHandle<Trk::IExtrapolator> m_extrapolator; 
     
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.cxx
index 4f1c1ed16c658e32ab3d85d5237936dd59b01372..33db38dfba0f741acdb072eb17e6e9065e395d78 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.cxx
@@ -1,10 +1,8 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonHitTimingTool.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
 #include "MuonRIO_OnTrack/RpcClusterOnTrack.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
 
@@ -12,7 +10,7 @@
 namespace Muon {
 
   MuonHitTimingTool::MuonHitTimingTool(const std::string& t, const std::string& n, const IInterface* p):
-    AthAlgTool(t,n,p), m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool") {
+    AthAlgTool(t,n,p) {
     declareInterface<IMuonHitTimingTool>(this);
     
     for( unsigned int tech = 0;tech<MuonStationIndex::TechnologyIndexMax;++tech ){
@@ -22,11 +20,9 @@ namespace Muon {
     
   }
 
-  MuonHitTimingTool::~MuonHitTimingTool() {}
-
   StatusCode MuonHitTimingTool::initialize() {
 
-    ATH_CHECK(m_idHelper.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
 
     // ensure that the number of tool handles corresponds to the number of technologies
     if( m_hitTimingTools.size() != MuonStationIndex::TechnologyIndex::TechnologyIndexMax ){
@@ -62,7 +58,7 @@ namespace Muon {
 
     // for now assume that all hits are of the same technolgy
     Identifier id = hits.front()->identify();
-    MuonStationIndex::TechnologyIndex tech = m_idHelper->technologyIndex(id);
+    MuonStationIndex::TechnologyIndex tech = m_idHelperSvc->technologyIndex(id);
     if( !m_acceptedTechnologies.count(tech) ) return TimingResult();
     
     // get handle and use it if it is not empty
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.h
index 4ec82d74a58c42aaf35e06e859b6670fe569b2d3..c7acb6d56f41684aa9a6ac12965e2a000bb677d6 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTimingTools/src/MuonHitTimingTool.h
@@ -1,13 +1,15 @@
 /*
-  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 MUON_MUONHITTIMINGTOOL_H
 #define MUON_MUONHITTIMINGTOOL_H
 
 #include "GaudiKernel/ToolHandle.h"
+#include "GaudiKernel/ServiceHandle.h"
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "MuonRecToolInterfaces/IMuonHitTimingTool.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
 /** @class MuonHitTimingTool
     
@@ -21,14 +23,13 @@
 namespace Muon{
 
   class MuonClusterOnTrack;
-  class MuonIdHelperTool;
   
   class MuonHitTimingTool : virtual public Muon::IMuonHitTimingTool, public AthAlgTool{
   public:
     MuonHitTimingTool(const std::string&, const std::string&, const IInterface*);
 
     /** default destructor **/
-    virtual ~MuonHitTimingTool();
+    virtual ~MuonHitTimingTool() {};
 
     /** standard initialization method **/
     virtual StatusCode initialize();
@@ -43,7 +44,7 @@ namespace Muon{
     std::set<MuonStationIndex::TechnologyIndex> acceptedTechnologies() const { return m_acceptedTechnologies; }
 
   private:
-    ToolHandle<MuonIdHelperTool>                 m_idHelper;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     std::vector<ToolHandle<IMuonHitTimingTool> > m_hitTimingTools;
     std::set<MuonStationIndex::TechnologyIndex>  m_acceptedTechnologies;
   };
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.cxx
index cc3defd11daed7dca7430e670bc336ebc36347ed..d49a6f30dee71abd89fa533c91622912091cf2b8 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.cxx
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////
-// TruthTrackBuilder.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 // package include
 #include "MuonTruthTrackBuilder.h"
 // Trk includes
@@ -38,8 +34,6 @@
 #include "MuonSegment/MuonSegment.h"
 // HepMC
 #include "HepMC/GenParticle.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
 #include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h"
@@ -64,7 +58,6 @@ namespace Muon {
     m_mdtCreator("Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"),
     m_muonClusterCreator("Muon::MuonClusterOnTrackCreator/MuonClusterOnTrackCreator"),
     m_muonCompRotCreator("Muon::TriggerChamberClusterOnTrackCreator/TriggerChamberClusterOnTrackCreator"),
-    m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"),
     m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
     m_trackExtrapolationTool("Muon::MuonTrackExtrapolationTool/MuonTrackExtrapolationTool"),
     m_trackCleaner("Muon::MuonTrackCleaner/MuonTrackCleaner"),
@@ -100,7 +93,7 @@ namespace Muon {
     ATH_MSG_VERBOSE("Initializing ...");
     ATH_CHECK( m_mdtCreator.retrieve() );
     ATH_CHECK( m_muonClusterCreator.retrieve() );
-    ATH_CHECK( m_idHelper.retrieve() );
+    ATH_CHECK( m_idHelperSvc.retrieve() );
     ATH_CHECK( m_printer.retrieve() );
     ATH_CHECK( m_edmHelperSvc.retrieve() );
     ATH_CHECK( m_muonCompRotCreator.retrieve() );
@@ -281,8 +274,8 @@ namespace Muon {
     for ( ;pit!=pit_end;++pit ) {
       const Trk::PrepRawData& prd = **pit;
       const Identifier& id = prd.identify();
-      MuonStationIndex::StIndex stIndex = m_idHelper->stationIndex(id);
-      bool isEndcap = m_idHelper->isEndcap(id);
+      MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(id);
+      bool isEndcap = m_idHelperSvc->isEndcap(id);
 
       if( isEndcap ) ++nendcap;
       else           ++nbarrel;
@@ -292,22 +285,22 @@ namespace Muon {
       detLayer.stIndex = stIndex;
 
       // const Trk::MeasurementBase* meas = 0;
-      if( m_idHelper->isMdt(id) ){
+      if( m_idHelperSvc->isMdt(id) ){
 	const MdtPrepData* mprd = dynamic_cast<const MdtPrepData*>(&prd);
 	if( !mprd ) {
-	  ATH_MSG_WARNING(" MDT PRD not of type MdtPrepData " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" MDT PRD not of type MdtPrepData " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 	const MuonSimData::Deposit* deposit = getDeposit(*mdtSimDataMap,*genPart,id);
 	if( !deposit ){
-	  ATH_MSG_WARNING(" Deposit for GenParticle not found " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" Deposit for GenParticle not found " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 
 	Amg::Vector2D lp(deposit->second.firstEntry(),deposit->second.secondEntry());
 	const Amg::Vector3D* gpos = prd.detectorElement()->surface(id).localToGlobal(lp);
 	if( !gpos ) {
-	  ATH_MSG_WARNING(" LocalToGlobal failed " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" LocalToGlobal failed " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 
@@ -328,37 +321,37 @@ namespace Muon {
 	const MdtDriftCircleOnTrack* mdt = m_mdtCreator->createRIO_OnTrack(*mprd,*gpos);
 	delete gpos;
 	if( !mdt ) {
-	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 	Trk::DriftCircleSide side = deposit->second.firstEntry() < 0 ? Trk::LEFT : Trk::RIGHT;
 	m_mdtCreator->updateSign(*const_cast<MdtDriftCircleOnTrack*>(mdt),side);
 	double pull = (mdt->driftRadius()-deposit->second.firstEntry())/Amg::error(mdt->localCovariance(),Trk::locR) ;
-	ATH_MSG_VERBOSE(" new MDT    " << m_idHelper->toString(id) << " radius " << mdt->driftRadius() << " true radius " << deposit->second.firstEntry()
+	ATH_MSG_VERBOSE(" new MDT    " << m_idHelperSvc->toString(id) << " radius " << mdt->driftRadius() << " true radius " << deposit->second.firstEntry()
 			<< " pull " << pull );
 	if( fabs(pull)>3. ) ATH_MSG_VERBOSE(" hit with large pull ");
 	detLayer.meas.push_back(mdt);
-	if( m_idHelper->isSmallChamber(id) ) ++detLayer.nmdtS;
+	if( m_idHelperSvc->isSmallChamber(id) ) ++detLayer.nmdtS;
 	else                                 ++detLayer.nmdtL;
 	// meas = mdt;
-      }else if( m_idHelper->isMM(id) ){
+      }else if( m_idHelperSvc->isMM(id) ){
 
 	const MMPrepData* mm = dynamic_cast<const MMPrepData*>(&prd);
 	if( !mm ) {
-	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelperSvc->toString(id) );
 	  continue;	
 	}
 
 	const MuonSimData::Deposit* deposit = getDeposit(*mmSimDataMap,*genPart,id);
 	if( !deposit ){
-	  ATH_MSG_WARNING(" Deposit for GenParticle not found " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" Deposit for GenParticle not found " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 
 	Amg::Vector2D lp(deposit->second.firstEntry(),deposit->second.secondEntry());
 	const Amg::Vector3D* gpos = prd.detectorElement()->surface(id).localToGlobal(lp);
 	if( !gpos ) {
-	  ATH_MSG_WARNING(" LocalToGlobal failed " <<  m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" LocalToGlobal failed " <<  m_idHelperSvc->toString(id) );
 	  continue;
 	}
 
@@ -378,40 +371,40 @@ namespace Muon {
 	const MuonClusterOnTrack* rot = m_muonClusterCreator->createRIO_OnTrack(*mm,*gpos);
 	if( !rot ) {
 	  delete gpos;
-	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 	double residual = rot->localParameters().get(Trk::locX)-lp.x();
 	double pull = residual / Amg::error(rot->localCovariance(),Trk::locX);
-	ATH_MSG_DEBUG( "Adding r " << gpos->perp() << " z " << gpos->z() << "  " << m_idHelper->toString(id) << " " << residual << " pull " << pull  );
+	ATH_MSG_DEBUG( "Adding r " << gpos->perp() << " z " << gpos->z() << "  " << m_idHelperSvc->toString(id) << " " << residual << " pull " << pull  );
 	detLayer.meas.push_back(rot);
 	// meas = rot;
 	++detLayer.nnsw;
 	delete gpos;
 
-      }else if( m_idHelper->issTgc(id) ) {
+      }else if( m_idHelperSvc->issTgc(id) ) {
 
 	// skip pads in outer most two chambers as here the wires are more precise
-	if( m_idHelper->stgcIdHelper().channelType(id) == 0 && abs(m_idHelper->stationEta(id)) > 2 ) continue;
+	if( m_idHelperSvc->stgcIdHelper().channelType(id) == 0 && abs(m_idHelperSvc->stationEta(id)) > 2 ) continue;
 
 	if( !stgcSimDataMap ) continue;
 
 	const sTgcPrepData* stgc = dynamic_cast<const sTgcPrepData*>(&prd);
 	if( !stgc ) {
-	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelper->toString(id) );	  
+	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelperSvc->toString(id) );	  
 	  continue;
 	}
 	
 	const MuonSimData::Deposit* deposit = getDeposit(*stgcSimDataMap,*genPart,id);
 	if( !deposit ){
-	  ATH_MSG_WARNING(" Deposit for GenParticle not found " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" Deposit for GenParticle not found " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 
 	Amg::Vector2D lp(deposit->second.firstEntry(),deposit->second.secondEntry());
 	const Amg::Vector3D* gpos = prd.detectorElement()->surface(id).localToGlobal(lp);
 	if( !gpos ) {
-	  ATH_MSG_WARNING(" LocalToGlobal failed " <<  m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" LocalToGlobal failed " <<  m_idHelperSvc->toString(id) );
 	  continue;
 	}
 
@@ -432,12 +425,12 @@ namespace Muon {
 	const MuonClusterOnTrack* rot = m_muonClusterCreator->createRIO_OnTrack(*stgc,*gpos);
 	if( !rot ) {
 	  delete gpos;
-	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" ROT creation failed " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 	double residual = rot->localParameters().get(Trk::locX) - lp.x();
 	double pull = residual / Amg::error(rot->localCovariance(),Trk::locX);
-	ATH_MSG_DEBUG( "Adding r " << gpos->perp() << " z " << gpos->z() << "  " << m_idHelper->toString(id) << " " << residual << " pull " << pull  );
+	ATH_MSG_DEBUG( "Adding r " << gpos->perp() << " z " << gpos->z() << "  " << m_idHelperSvc->toString(id) << " " << residual << " pull " << pull  );
 	detLayer.meas.push_back(rot);
 	// meas = rot;
 	++detLayer.nnsw;
@@ -446,19 +439,19 @@ namespace Muon {
       }else{
 	const MuonCluster* cl = dynamic_cast<const MuonCluster*>(&prd);
 	if( !cl ) {
-	  ATH_MSG_WARNING(" cluster PRD not of type MuonCluster " << m_idHelper->toString(id) );
+	  ATH_MSG_WARNING(" cluster PRD not of type MuonCluster " << m_idHelperSvc->toString(id) );
 	  continue;
 	}
 	if( m_buildCompRots ){
-	  if( m_idHelper->measuresPhi(id) ) clustersPerDetEl[cl->detectorElement()].first.push_back(cl);
+	  if( m_idHelperSvc->measuresPhi(id) ) clustersPerDetEl[cl->detectorElement()].first.push_back(cl);
 	  else                              clustersPerDetEl[cl->detectorElement()].second.push_back(cl);
 	}else{
 	  const MuonClusterOnTrack* rot = m_muonClusterCreator->createRIO_OnTrack(*cl,prd.detectorElement()->surface(id).center());
 	  if( !rot ) {
-	    ATH_MSG_WARNING(" ROT creation failed " << m_idHelper->toString(id) );
+	    ATH_MSG_WARNING(" ROT creation failed " << m_idHelperSvc->toString(id) );
 	    continue;
 	  }
-	  ATH_MSG_VERBOSE(" new Clu    " << m_idHelper->toString(id) );
+	  ATH_MSG_VERBOSE(" new Clu    " << m_idHelperSvc->toString(id) );
 	  detLayer.meas.push_back(rot);
 	  // meas = rot;
 	}
@@ -473,11 +466,11 @@ namespace Muon {
       for( ;cit!=cit_end;++cit ){
 
 	const Identifier& id = cit->first->identify();
-	bool isEndcap = m_idHelper->isEndcap(id);
-	MuonStationIndex::StIndex stIndex = m_idHelper->stationIndex(id);
+	bool isEndcap = m_idHelperSvc->isEndcap(id);
+	MuonStationIndex::StIndex stIndex = m_idHelperSvc->stationIndex(id);
 	DetectorLayer& detLayer = hitsPerLayer[stIndex];
 	detLayer.isEndcap = isEndcap;
-	ATH_MSG_VERBOSE("  " << m_idHelper->toString(id) << " phi " << cit->second.first.size() << " eta " << cit->second.second.size() );
+	ATH_MSG_VERBOSE("  " << m_idHelperSvc->toString(id) << " phi " << cit->second.first.size() << " eta " << cit->second.second.size() );
 	const Trk::MeasurementBase* measPhi = 0;
 	if( !cit->second.first.empty() ){
 	  if( cit->second.first.size() == 1 ){
@@ -501,7 +494,7 @@ namespace Muon {
 	}
 	if( measEta ) detLayer.meas.push_back(measEta);
 
-	ATH_MSG_VERBOSE(" Adding compRot for  " << m_idHelper->toStringDetEl(id) << " phi " << cit->second.first.size() << " eta " << cit->second.second.size()  );
+	ATH_MSG_VERBOSE(" Adding compRot for  " << m_idHelperSvc->toStringDetEl(id) << " phi " << cit->second.first.size() << " eta " << cit->second.second.size()  );
       }
     }
 
@@ -656,7 +649,7 @@ namespace Muon {
       std::vector<const Trk::MeasurementBase*>::const_iterator it_end = layer.meas.end();
       for( ;it!=it_end;++it ){
 	msg(MSG::VERBOSE) << " r  " << (*it)->globalPosition().perp() <<  " z  " << (*it)->globalPosition().z() 
-			  << "   " <<  m_idHelper->toString( m_edmHelperSvc->getIdentifier(**it) ) << std::endl;
+			  << "   " <<  m_idHelperSvc->toString( m_edmHelperSvc->getIdentifier(**it) ) << std::endl;
       }
       msg(MSG::VERBOSE) << endmsg;
     }
@@ -792,7 +785,7 @@ namespace Muon {
   const MuonSimData::Deposit* MuonTruthTrackBuilder::getDeposit( const MuonSimDataCollection& simCol, const HepMC::GenParticle& genPart, const Identifier& id ) const {
     MuonSimDataCollection::const_iterator it = simCol.find(id);
     if( it == simCol.end() ) {
-      ATH_MSG_WARNING(" Truth PRD not found in simdata collection: " << m_idHelper->toString(id) );
+      ATH_MSG_WARNING(" Truth PRD not found in simdata collection: " << m_idHelperSvc->toString(id) );
       return 0;
     }
     
@@ -827,22 +820,22 @@ namespace Muon {
       // skip 
       Identifier id = m_edmHelperSvc->getIdentifier(**it);
       if( splitSL != -1 ){
-	bool isSmall = !m_idHelper->isSmallChamber(id);
-	bool isTgc = m_idHelper->isTgc(id);
+	bool isSmall = !m_idHelperSvc->isSmallChamber(id);
+	bool isTgc = m_idHelperSvc->isTgc(id);
 	if( isSmall != splitSL && !isTgc ) continue;
       }
 
       // for the first two trails build the NSW segments, for the second two the MDT ones
-      if( splitNSWEI == 0 && (m_idHelper->isMdt(id) || m_idHelper->isTgc(id) ) ) continue;
-      if( splitNSWEI == 1 && (m_idHelper->issTgc(id) || m_idHelper->isMM(id) ) ) continue;
+      if( splitNSWEI == 0 && (m_idHelperSvc->isMdt(id) || m_idHelperSvc->isTgc(id) ) ) continue;
+      if( splitNSWEI == 1 && (m_idHelperSvc->issTgc(id) || m_idHelperSvc->isMM(id) ) ) continue;
 
       hitsOut.push_back(*it);
 
-      bool isTrigger = m_idHelper->isTrigger(id);
-      bool measPhi =  m_idHelper->measuresPhi(id);
+      bool isTrigger = m_idHelperSvc->isTrigger(id);
+      bool measPhi =  m_idHelperSvc->measuresPhi(id);
       
       // for now exclude STGC pads as phi measurements
-      if( !m_usePadPhiHits && m_idHelper->issTgc(id) && m_idHelper->stgcIdHelper().channelType(id) == 0 ) measPhi = false;
+      if( !m_usePadPhiHits && m_idHelperSvc->issTgc(id) && m_idHelperSvc->stgcIdHelper().channelType(id) == 0 ) measPhi = false;
 
       if( !isTrigger && !measPhi ) ++nprec;
       if( measPhi ){ 
@@ -858,10 +851,10 @@ namespace Muon {
     
     if( !lastMeas ) return false;
     Identifier id = m_edmHelperSvc->getIdentifier(*firstMeas);
-    MuonStationIndex::StIndex stFirst = m_idHelper->stationIndex( id );
+    MuonStationIndex::StIndex stFirst = m_idHelperSvc->stationIndex( id );
     bool isEM = stFirst != MuonStationIndex::EM;
     if( (!isEM && nprec < 3 ) ||  ( isEM && (nprec < 2 || nprec + ntrigEta < 4 ) ) ) return false;
-    if( (m_idHelper->issTgc(id) || m_idHelper->isMM(id)) && nprec < 5 ) return false;
+    if( (m_idHelperSvc->issTgc(id) || m_idHelperSvc->isMM(id)) && nprec < 5 ) return false;
 
     ATH_MSG_DEBUG(" prec hits: " << nprec << " trigEta " << ntrigEta << " tot hits " << hitsOut.size() );
     double dist = 0.;
@@ -919,7 +912,7 @@ namespace Muon {
     // final check to ensure that we have a phi measurement or a pseudo at the start of the full track
     if( splitNSWEI == -1 && !addedFakePhiFirst ){
       // check if the is a phi measurement and it is in the same station layer
-      if( !firstPhi || stFirst != m_idHelper->stationIndex(  m_edmHelperSvc->getIdentifier(*firstPhi) ) ){
+      if( !firstPhi || stFirst != m_idHelperSvc->stationIndex(  m_edmHelperSvc->getIdentifier(*firstPhi) ) ){
 	Trk::PseudoMeasurementOnTrack* pseudo =  createPseudo( per, *firstMeas );
 	if( !pseudo ){
 	  ATH_MSG_WARNING("Failed to create pseudo measurement");
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.h b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.h
index d2e61664543a98fd5a8cc6ac84b52060f677badc..fe2e70613a8162be99360f462f11cf3601dfd0c2 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonTruthTools/src/MuonTruthTrackBuilder.h
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// TruthTrackBuilder.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef MUON_MUONTRUTHTOOLS_MUONTRUTHTRACKBUILDER_H
 #define MUON_MUONTRUTHTOOLS_MUONTRUTHTRACKBUILDER_H 
 
@@ -18,14 +14,14 @@
 #include "MuonSimData/MuonSimDataCollection.h"
 #include "MuonSimData/CscSimDataCollection.h"
 #include "TrackRecord/TrackRecord.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "TrkSegment/SegmentCollection.h"
 #include "TrkParameters/TrackParameters.h"
 #include <vector>
 #include "GeoPrimitives/GeoPrimitives.h"
 #include "TrkExInterfaces/IExtrapolator.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 #include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h"
 #include "MuonRecToolInterfaces/IMuonCompetingClustersOnTrackCreator.h"
@@ -35,20 +31,14 @@
 #include "TrkFitterInterfaces/ITrackFitter.h"
 
 namespace Trk {
- 
   class Track;
-  class IRIO_OnTrackCreator;
-  class RIO_OnTrack;
   class MeasurementBase;
   class PseudoMeasurementOnTrack;
 }
 
 namespace Muon {
   
-  class MuonIdHelperTool;
-  class MuonEDMPrinterTool;
   class MuonSegment;
-  class MuonClusterOnTrack;
   /**
      @class MuonTruthTrackBuilder
 
@@ -124,7 +114,7 @@ namespace Muon {
     ToolHandle<IMdtDriftCircleOnTrackCreator>   m_mdtCreator;
     ToolHandle<IMuonClusterOnTrackCreator>      m_muonClusterCreator;
     ToolHandle<IMuonCompetingClustersOnTrackCreator>  m_muonCompRotCreator;
-    ToolHandle<MuonIdHelperTool>                m_idHelper;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ServiceHandle<IMuonEDMHelperSvc>            m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/src/LayerAnalysis.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/src/LayerAnalysis.cxx
index c398283e35ee981403842c80567e3b89202825ae..b2ad5242f959d6e1847c9947f036c60637ede772 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/src/LayerAnalysis.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonLayerHough/src/LayerAnalysis.cxx
@@ -1,11 +1,10 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonLayerHough/LayerAnalysis.h"
 #include "MuonLayerHough/MuonLayerHough.h"
 #include "MuonLayerHough/MuonRegionHough.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
 #include "GeoPrimitives/GeoPrimitives.h"
 
 #include "TROOT.h"
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.cxx
index 2f24e359a7854816b7e961cc6c86b02a78dadb8b..487d75cab146a8c601d9e4e38eda6e3e26eafc4a 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.cxx
@@ -1,13 +1,8 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// MooSegmentCombinationFinder.cxx, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #include "MooSegmentCombinationFinder.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
 
 #include "MuonSegment/MuonSegment.h"
 #include "MuonSegment/MuonSegmentQuality.h"
@@ -21,17 +16,10 @@
 #include "TrkEventPrimitives/FitQuality.h" 
 
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
-#include "MuonIdHelpers/MdtIdHelper.h"
-
-
-#include "GaudiKernel/IAuditor.h"
 
-  //================ Constructor =================================================
+//================ Constructor =================================================
 
-Muon::MooSegmentCombinationFinder::MooSegmentCombinationFinder(const std::string& t,
-                       const std::string& n,
-                       const IInterface*  p )
-    :
+Muon::MooSegmentCombinationFinder::MooSegmentCombinationFinder(const std::string& t, const std::string& n, const IInterface* p) :
     AthAlgTool(t,n,p),
     m_houghPatternFinder("Muon::MuonHoughPatternFinderTool/MuonHoughPatternFinderTool")
   {
@@ -46,7 +34,7 @@ Muon::MooSegmentCombinationFinder::initialize()
 {    
   ATH_CHECK( m_edmPrinter.retrieve() );
   ATH_CHECK( m_edmHelperSvc.retrieve() );
-  ATH_CHECK( m_idHelperTool.retrieve() );
+  ATH_CHECK( m_idHelperSvc.retrieve() );
 
   if( m_doCscSegments ){
     ATH_CHECK( m_csc2dSegmentFinder.retrieve() );
@@ -345,7 +333,7 @@ Muon::MooSegmentCombinationFinder::extractSegmentCollection( const MuonSegmentCo
 
       // get chamber identifier, chamber index and station index
       Identifier chid = m_edmHelperSvc->chamberId( *segments->front() );
-      Muon::MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chid);
+      Muon::MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chid);
 
       // add segments to region segment map, remove ambigueties (missing at the moment)
       RSMapIt rsit = segMap.find( chIndex );
@@ -428,7 +416,7 @@ std::pair<int,int> Muon::MooSegmentCombinationFinder::hitsInMultilayer( const Mu
   for(;it!=itEnd;++it){
     const Muon::MdtDriftCircleOnTrack* mdt = dynamic_cast<const Muon::MdtDriftCircleOnTrack*>(*it);
     if( mdt ){
-      int ml = m_idHelperTool->mdtIdHelper().multilayer(mdt->identify());
+      int ml = m_idHelperSvc->mdtIdHelper().multilayer(mdt->identify());
       if( ml == 1 ) ++nMl1;
       if( ml == 2 ) ++nMl2;
     }
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.h
index c5f4fdf183e8b7b4de66bd6ac3b1e4780f5c0b50..bcc5ea026276b2693bd2ea930a96cdbf38e590a6 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MooSegmentCombinationFinder/src/MooSegmentCombinationFinder.h
@@ -1,11 +1,7 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
-///////////////////////////////////////////////////////////////////
-// MooSegmentCombinationFinder.h, (c) ATLAS Detector software
-///////////////////////////////////////////////////////////////////
-
 #ifndef MUONMOOSEGMENTFINDER_H
 #define MUONMOOSEGMENTFINDER_H
 
@@ -23,7 +19,7 @@
 #include "MuonSegmentMakerToolInterfaces/IMuonSegmentSelectionTool.h"
 #include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
 #include "MuonEDM_AssociationObjects/MuonSegmentCombPatternCombAssociationMap.h"
 #include "MuonSegment/MuonSegmentCombinationCollection.h"
@@ -36,7 +32,6 @@
 #include "MuonPrepRawData/MdtPrepDataCollection.h"
 #include "MuonPrepRawData/RpcPrepDataCollection.h"
 #include "MuonPrepRawData/TgcPrepDataCollection.h"
-#include "Identifier/Identifier.h"
 #include <map>
 
 
@@ -51,7 +46,6 @@ namespace Muon
     class IMuonSegmentCombinationCleanerTool;
     class IMuonSegmentSelectionTool;
     class MuonEDMPrinterTool;
-    class MuonIdHelperTool;
 
   /** @class MooSegmentCombinationFinder 
       
@@ -109,7 +103,7 @@ namespace Muon
       ServiceHandle<IMuonEDMHelperSvc>               m_edmHelperSvc {this, "edmHelper", 
         "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
         "Handle to the service providing the IMuonEDMHelperSvc interface" };
-      ToolHandle<MuonIdHelperTool>                   m_idHelperTool {"Muon::MuonIdHelperTool/MuonIdHelperTool"};
+      ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
       ToolHandle<ICscSegmentFinder>                  m_csc2dSegmentFinder{this, "Csc2dSegmentMaker", "Csc2dSegmentMaker/Csc2dSegmentMaker"}; 
       ToolHandle<ICscSegmentFinder>                  m_csc4dSegmentFinder{this, "Csc4dSegmentMaker", "Csc4dSegmentMaker/Csc4dSegmentMaker"};       
       ToolHandle<IMuonHoughPatternFinderTool>        m_houghPatternFinder; 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.cxx
index 5e090a0978bc2ffb2e13b5abbc182c0dd91015c4..a891a82cdb6fc86233f5af22a5954e22f45e2237 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.cxx
@@ -1,17 +1,10 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonSegmentInOverlapResolvingTool.h"
  
 #include "GaudiKernel/MsgStream.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-
-#include "TrkToolInterfaces/IResidualPullCalculator.h"
-
-#include "TrkExInterfaces/IPropagator.h"
 
 #include "MuonSegment/MuonSegment.h"
 #include "MuonRIO_OnTrack/MdtDriftCircleOnTrack.h"
@@ -29,61 +22,27 @@ namespace Muon {
 
   MuonSegmentInOverlapResolvingTool::MuonSegmentInOverlapResolvingTool(const std::string& ty,const std::string& na,const IInterface* pa)
     : AthAlgTool(ty,na,pa),
-      m_idHelperTool("Muon::MuonIdHelperTool/MuonIdHelperTool"), 
       m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
       m_propagator("Trk::RungeKuttaPropagator/AtlasRungeKuttaPropagator"),
       m_magFieldProperties(Trk::NoField),
       m_pullCalculator("Trk::ResidualPullCalculator/ResidualPullCalculator")
   {
     declareInterface<IMuonSegmentInOverlapResolvingTool>(this);
-
   }
 
-
-  MuonSegmentInOverlapResolvingTool::~MuonSegmentInOverlapResolvingTool(){}
-
-
   StatusCode MuonSegmentInOverlapResolvingTool::initialize()
   {
-    if ( AthAlgTool::initialize().isFailure() ) {
-      return StatusCode::FAILURE;
-    }
-
-    if( m_edmHelperSvc.retrieve().isFailure() ){
-      ATH_MSG_ERROR("Could not get " << m_edmHelperSvc);
-      return StatusCode::FAILURE;
-    }
-
-    if( m_printer.retrieve().isFailure() ){
-      ATH_MSG_ERROR("Could not get " << m_printer ); 
-      return StatusCode::FAILURE;
-    }
+    ATH_CHECK(AthAlgTool::initialize());
 
-    if( m_idHelperTool.retrieve().isFailure()){
-      ATH_MSG_ERROR("Could not get " << m_idHelperTool ); 
-      return StatusCode::FAILURE;
-    }
-
-    if( m_propagator.retrieve().isFailure()) {
-      ATH_MSG_ERROR("Could not find "<<m_propagator);
-      return StatusCode::FAILURE;
-    } 
-
-    if( m_pullCalculator.retrieve().isFailure() ){
-      ATH_MSG_ERROR("Could not get " << m_pullCalculator);
-      return StatusCode::FAILURE;
-    }
+    ATH_CHECK(m_edmHelperSvc.retrieve());
+    ATH_CHECK(m_printer.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
+    ATH_CHECK(m_propagator.retrieve());
+    ATH_CHECK(m_pullCalculator.retrieve());
 
     return StatusCode::SUCCESS;
   }
 
-  StatusCode MuonSegmentInOverlapResolvingTool::finalize()
-  {
-    if( AthAlgTool::finalize().isFailure() ) return StatusCode::FAILURE;
-    return StatusCode::SUCCESS;
-  }
-
-
   Amg::Vector3D MuonSegmentInOverlapResolvingTool::updateSegmentDirection( const MuonSegment& seg, double phi ) const {
     
     Amg::Transform3D gToStation = seg.associatedSurface().transform().inverse();
@@ -471,8 +430,8 @@ namespace Muon {
       if( mdt ){
 	hasMdt = true;
 	const Identifier& id = mdt->identify();
-	int layer = m_idHelperTool->mdtIdHelper().tubeLayer(id);
-	int tube  = m_idHelperTool->mdtIdHelper().tube(id);
+	int layer = m_idHelperSvc->mdtIdHelper().tubeLayer(id);
+	int tube  = m_idHelperSvc->mdtIdHelper().tube(id);
 	double tubelen    = mdt->prepRawData()->detectorElement()->getActiveTubeLength(layer,tube);
 	if( tubelen < shortestTubeLen ) {
 	  shortestTubeLen = tubelen;
@@ -552,7 +511,7 @@ namespace Muon {
     for( ;mit!=mit_end;++mit ){
       
       Identifier id = m_edmHelperSvc->getIdentifier(**mit);
-      if( !id.is_valid() || !m_idHelperTool->measuresPhi(id) ) continue;
+      if( !id.is_valid() || !m_idHelperSvc->measuresPhi(id) ) continue;
 
       // predict onto segment surface
       const Trk::Surface& measSurf = (**mit).associatedSurface();
@@ -573,21 +532,14 @@ namespace Muon {
       
 	// sanity check
 	if( resPull->pull().size() != 1 ){
-	  ATH_MSG_WARNING(" ResidualPull with empty pull vector for channel " << m_idHelperTool->toString(id));
+	  ATH_MSG_WARNING(" ResidualPull with empty pull vector for channel " << m_idHelperSvc->toString(id));
 	  delete resPull;
 	  delete exPars;
 	  continue;
 	}
       
-// 	double residual = resPull->residual().front(); 
 	double pull = resPull->pull().front();
-	// 	double locInSeg = (geometry.globalToSeg*(**mit).globalPosition()).x();
-	// 	ATH_MSG_VERBOSE(" " << m_idHelperTool->toString(id) 
-	// 	       << " res " << std::setw(5) << residual
-	// 	       << " pull " << std::setw(5) << pull
-	// 	       << " loc meas " << locInSeg  
-	// 	       << "  phi meas " << (**mit).globalPosition().phi());
-	//     }
+
 	averagePull += pull;
 	++nphiMeas;
 	delete resPull;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.h
index 6536c9238cdc60e96554645542d4148b0d18a406..e0cdc515120e1c4fba984ab012a0e6123471de37 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentInOverlapResolvingTool.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
 */
 
 #ifndef MUON_MUONSEGMENTSOVERLAPRESOLVINGTOOL_H
@@ -14,6 +14,10 @@
 #include "GeoPrimitives/GeoPrimitives.h"
 #include "TrkGeometry/MagneticFieldProperties.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
+#include "TrkToolInterfaces/IResidualPullCalculator.h"
+#include "TrkExInterfaces/IPropagator.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 
 #include <vector>
 #include <string>
@@ -21,27 +25,17 @@
 class MsgStream;
 
 namespace Trk {
-  class IPropagator;
-  class IMagneticFieldTool;
   class MagneticFieldProperties;
   class MeasurementBase;
-  class IResidualPullCalculator;
-}
-
-namespace Muon {
-  class MuonIdHelperTool;
-  class MuonEDMPrinterTool;
 }
 
 namespace MuonGM {
   class MdtReadoutElement;
 }
 
-
 namespace Muon {
   
   class MuonSegment;
-
   /**
      @brief tool to match segments
 
@@ -52,14 +46,11 @@ namespace Muon {
     MuonSegmentInOverlapResolvingTool(const std::string&,const std::string&,const IInterface*);
 
     /** @brief destructor */
-    virtual ~MuonSegmentInOverlapResolvingTool ();
+    virtual ~MuonSegmentInOverlapResolvingTool() {};
     
     /** @brief AlgTool initilize */
     StatusCode initialize();
     
-    /** @brief AlgTool finalize */
-    StatusCode finalize();
-    
     /** @brief performance match and return result */
     SegmentMatchResult matchResult( const MuonSegment& seg1, const MuonSegment& seg2 ) const; 
 
@@ -90,7 +81,7 @@ namespace Muon {
 
     Amg::Vector3D estimateSegmentDirection( const MuonSegment& seg1, const MuonSegment& seg2, double& phi, double& stereoangle ) const;
 
-    ToolHandle<MuonIdHelperTool>               m_idHelperTool;     //!< IdHelper tool
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ServiceHandle<IMuonEDMHelperSvc>           m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };       //!< EDM Helper tool
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.cxx
index a25dc9f6f9f39e01ebca8c18955fdaf6d9892bcd..90832608493e56f36938a3cff554f176e5bee573 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.cxx
@@ -1,23 +1,17 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonSegmentPairMatchingTool.h"
 
-#include "MuonIdHelpers/MuonIdHelperTool.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
 #include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
-
-
 #include "MuonSegment/MuonSegment.h"
-
 #include "MuonRIO_OnTrack/MdtDriftCircleOnTrack.h"
 #include "MuonReadoutGeometry/MdtReadoutElement.h"
 #include "MuonCompetingRIOsOnTrack/CompetingMuonClustersOnTrack.h"
 #include "TrkEventPrimitives/LocalDirection.h"
 
-
 namespace {
   // limit angle difference to -pi < x <= pi
   inline double limit_angle_2pi(double x) {
@@ -40,58 +34,32 @@ namespace Muon {
 
   MuonSegmentPairMatchingTool::MuonSegmentPairMatchingTool(const std::string& ty,const std::string& na,const IInterface* pa)
     : AthAlgTool(ty,na,pa),
-      m_idHelper("Muon::MuonIdHelperTool/MuonIdHelperTool"), 
       m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool")
   {
     declareInterface<IMuonSegmentPairMatchingTool>(this);
-
   }
 
-
-  MuonSegmentPairMatchingTool::~MuonSegmentPairMatchingTool(){}
-
-
   StatusCode MuonSegmentPairMatchingTool::initialize()
   {
-
-    if ( AthAlgTool::initialize().isFailure() ) {
-      return StatusCode::FAILURE;
-    }
+    ATH_CHECK(AthAlgTool::initialize());
     
-    if (m_edmHelperSvc.retrieve().isFailure()){
-      ATH_MSG_ERROR("Could not get " << m_edmHelperSvc); 
-      return StatusCode::FAILURE;
-    }
-
-    if (m_printer.retrieve().isFailure()){
-      ATH_MSG_ERROR("Could not get " << m_printer); 
-      return StatusCode::FAILURE;
-    }
-
-    if (m_idHelper.retrieve().isFailure()){
-      ATH_MSG_ERROR("Could not get " << m_idHelper); 
-      return StatusCode::FAILURE;
-    }
+    ATH_CHECK(m_edmHelperSvc.retrieve());
+    ATH_CHECK(m_printer.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
 
     return StatusCode::SUCCESS;
   }
 
-  StatusCode MuonSegmentPairMatchingTool::finalize()
-  {
-    if( AthAlgTool::finalize().isFailure() ) return StatusCode::FAILURE;
-    return StatusCode::SUCCESS;
-  }
-
   IMuonSegmentPairMatchingTool::SegmentMatchResult MuonSegmentPairMatchingTool::matchResult( const MuonSegment& seg1, const MuonSegment& seg2 ) const {
     IMuonSegmentPairMatchingTool::SegmentMatchResult result;
 
     // get identifiers
     // and the detector region from identifier
     Identifier chid1 = m_edmHelperSvc->chamberId(seg1);
-    MuonStationIndex::StIndex  station1    = m_idHelper->stationIndex( chid1 );
+    MuonStationIndex::StIndex  station1    = m_idHelperSvc->stationIndex( chid1 );
 
     Identifier chid2 = m_edmHelperSvc->chamberId(seg2);
-    MuonStationIndex::StIndex  station2    = m_idHelper->stationIndex( chid2 );
+    MuonStationIndex::StIndex  station2    = m_idHelperSvc->stationIndex( chid2 );
 
     // Don't deal with overlap/merge of segments here
     if ( chid1 == chid2 ) return result;
@@ -130,8 +98,8 @@ namespace Muon {
     Identifier chid_a = m_edmHelperSvc->chamberId(seg_a);
     Identifier chid_b = m_edmHelperSvc->chamberId(seg_b);
 
-    int phiSector_a = m_idHelper->sector( chid_a );
-    int phiSector_b = m_idHelper->sector( chid_b );
+    int phiSector_a = m_idHelperSvc->sector( chid_a );
+    int phiSector_b = m_idHelperSvc->sector( chid_b );
 
     result.chid_a = chid_a;
     result.chid_b = chid_b;
@@ -228,7 +196,7 @@ namespace Muon {
         if( crot ) id = crot->containedROTs().front()->identify();
       }
       if( !id.is_valid() ) continue;
-      if(m_idHelper->measuresPhi(id)) {
+      if(m_idHelperSvc->measuresPhi(id)) {
         ContainPhiHits = true;
         break;
       }
@@ -255,7 +223,7 @@ namespace Muon {
         if( crot ) id = crot->containedROTs().front()->identify();
       }
       if( !id.is_valid() ) continue;
-      if(m_idHelper->measuresPhi(id)) {
+      if(m_idHelperSvc->measuresPhi(id)) {
         ContainPhiHits = true;
         break;
       }
@@ -270,7 +238,7 @@ namespace Muon {
     }
 
     result.shorttube_a = 99999.;
-    if( m_idHelper->isMdt(chid_a) ){
+    if( m_idHelperSvc->isMdt(chid_a) ){
       //make shortest tube calculations
       std::pair<Amg::Vector3D, Amg::Vector3D> stseg1 = getShortestTubePos(seg_a);
       double shorttube_lx_a = stseg1.first.x();
@@ -292,7 +260,7 @@ namespace Muon {
     }
 
     result.shorttube_b = 99999.;
-    if( m_idHelper->isMdt(chid_b) ){
+    if( m_idHelperSvc->isMdt(chid_b) ){
       std::pair<Amg::Vector3D, Amg::Vector3D> stseg2 = getShortestTubePos(seg_b);
       double shorttube_lx_b = stseg2.first.x();
       double shorttube_ly_b = stseg2.first.y();
@@ -334,8 +302,8 @@ namespace Muon {
       if( !roe) continue;
       
       //sanity check with getActiveTubeLength
-      int layer = m_idHelper->mdtIdHelper().tubeLayer(mdt->identify());
-      int tube  = m_idHelper->mdtIdHelper().tube(mdt->identify());
+      int layer = m_idHelperSvc->mdtIdHelper().tubeLayer(mdt->identify());
+      int tube  = m_idHelperSvc->mdtIdHelper().tube(mdt->identify());
       double halfLength = 0.5*roe->getActiveTubeLength(layer,tube);
 
       if(2*halfLength > storedLength) continue;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.h
index ba724dc98b9b235988babef4bea8521856abdc90..b24c6203a62491f9368ad579a32e129fa6c2b36f 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMatchingTools/src/MuonSegmentPairMatchingTool.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
 */
 
 #ifndef MUON_MUONSEGMENTPAIRMATCHINGTOOL_H
@@ -11,24 +11,16 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "GaudiKernel/ServiceHandle.h"
 
-
 #include "TrkTrack/TrackCollection.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-
-class MdtIdHelper;
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
 namespace Muon {
+  
   class MuonSegment;
-  class MuonIdHelperTool;
   class MuonEDMPrinterTool;
-}
-
-namespace Muon {
-  
-
   /**
      @brief tool to match segments
-
   */
   class MuonSegmentPairMatchingTool : virtual public IMuonSegmentPairMatchingTool, public AthAlgTool {
   public:
@@ -36,21 +28,18 @@ namespace Muon {
     MuonSegmentPairMatchingTool(const std::string&,const std::string&,const IInterface*);
 
     /** @brief destructor */
-    virtual ~MuonSegmentPairMatchingTool ();
+    virtual ~MuonSegmentPairMatchingTool () {};
     
     /** @brief AlgTool initilize */
     StatusCode initialize();
-    
-    /** @brief AlgTool finalize */
-    StatusCode finalize();
-    
+
     /** @brief performance match and return result */
     SegmentMatchResult matchResult( const MuonSegment& seg1, const MuonSegment& seg2 ) const; 
     std::pair<Amg::Vector3D, Amg::Vector3D> getShortestTubePos(const Muon::MuonSegment& seg) const;
 
   private:
     
-    ToolHandle<MuonIdHelperTool>               m_idHelper;         //!< IdHelper tool
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ServiceHandle<IMuonEDMHelperSvc>           m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };       //!< EDM Helper tool
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.cxx
index 249b9dd112938361574a3350a07e7d096968c75f..a957cc4b190984e31bd4a00578acdc438d1e893b 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.cxx
@@ -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
 */
 
 #include "MuonSegmentCombinationCleanerTool.h"
@@ -9,20 +9,12 @@
 #include <vector>
 #include <algorithm>
 
-
 #include "MuonSegment/MuonSegment.h"
 #include "MuonSegment/MuonSegmentCombination.h"
 #include "MuonSegment/MuonSegmentCombinationCollection.h"
 
 #include "MuonPattern/MuonPatternCombination.h"
 
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonIdHelpers/MuonStationIndex.h"
-
-#include "MuonSegmentMakerToolInterfaces/IMuonSegmentOverlapRemovalTool.h"
-
 #include "MuonSegmentMakerUtils/MuonSegmentKey.h"
 #include "MuonSegmentMakerUtils/CompareMuonSegmentKeys.h"
 
@@ -33,7 +25,6 @@ namespace Muon {
   MuonSegmentCombinationCleanerTool::MuonSegmentCombinationCleanerTool(const std::string& t,const std::string& n,const IInterface* p)  :  
     AthAlgTool(t,n,p),
     m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"),
-    m_idHelperTool("Muon::MuonIdHelpers/MuonIdHelperTool"),
     m_overlapRemovalTool("Muon::MuonSegmentOverlapRemovalTool/MuonSegmentOverlapRemovalTool", this)
   {
     declareInterface<IMuonSegmentCombinationCleanerTool>(this);
@@ -43,47 +34,16 @@ namespace Muon {
 
   }
 
-  MuonSegmentCombinationCleanerTool::~MuonSegmentCombinationCleanerTool()
-  {
-  }
-
   StatusCode MuonSegmentCombinationCleanerTool::initialize()
   {
-  
-    StatusCode sc = AlgTool::initialize(); 
-    if (sc.isFailure()) return sc;
+    ATH_CHECK(AlgTool::initialize()); 
 
     ATH_MSG_VERBOSE(" MuonSegmentCombinationCleanerTool::Initializing ");
   
-    sc = m_printer.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_INFO("Retrieved " << m_printer );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_printer); 
-      return sc;
-    }
-    sc = m_edmHelperSvc.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_INFO("Retrieved " << m_edmHelperSvc );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_edmHelperSvc ); 
-      return sc;
-    }
-    sc = m_idHelperTool.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_INFO("Retrieved " << m_idHelperTool );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_idHelperTool ); 
-      return sc;
-    }
-    
-    sc = m_overlapRemovalTool.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_DEBUG("Retrieved " << m_overlapRemovalTool );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_overlapRemovalTool ); 
-      return sc;
-    }
+    ATH_CHECK(m_printer.retrieve());
+    ATH_CHECK(m_edmHelperSvc.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
+    ATH_CHECK(m_overlapRemovalTool.retrieve());
 
     ATH_MSG_VERBOSE("End of Initializing");
     return StatusCode::SUCCESS; 
@@ -99,13 +59,6 @@ namespace Muon {
     return combiCleanCol;
   }
 
-
-  StatusCode MuonSegmentCombinationCleanerTool::finalize()
-  {
-    ATH_MSG_VERBOSE("finalize()");
-    return StatusCode::SUCCESS;
-  }
-
   void MuonSegmentCombinationCleanerTool::cleanAndMergeCombis( const MuonSegmentCombinationCollection& combiCol,
 							       MuonSegmentCombinationCollection* combiCleanCol,
 							       MuonSegmentCombPatternCombAssociationMap* segPattMap) {
@@ -274,7 +227,7 @@ namespace Muon {
 	  if( addedSegments.count(bestSegment) ) continue;
 	  addedSegments.insert(bestSegment);
 	  Identifier chId = m_edmHelperSvc->chamberId( *bestSegment );
-	  MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chId);
+	  MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chId);
 	  segmentsPerChamberLayer[chIndex].push_back(bestSegment);
 	}
 	
@@ -288,7 +241,7 @@ namespace Muon {
 	  if( addedSegments.count(bestSegment) ) continue;
 	  addedSegments.insert(bestSegment);
 	  Identifier chId = m_edmHelperSvc->chamberId( *bestSegment );
-	  MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chId);
+	  MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chId);
 	  segmentsPerChamberLayer[chIndex].push_back(bestSegment);
 	}
 
@@ -302,7 +255,7 @@ namespace Muon {
 	  if( addedSegments.count(bestSegment) ) continue;
 	  addedSegments.insert(bestSegment);
 	  Identifier chId = m_edmHelperSvc->chamberId( *bestSegment );
-	  MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chId);
+	  MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chId);
 	  segmentsPerChamberLayer[chIndex].push_back(bestSegment);
 	}
     
@@ -316,7 +269,7 @@ namespace Muon {
 	  if( addedSegments.count(bestSegment) ) continue;
 	  addedSegments.insert(bestSegment);
 	  Identifier chId = m_edmHelperSvc->chamberId( *bestSegment );
-	  MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chId);
+	  MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chId);
 	  segmentsPerChamberLayer[chIndex].push_back(bestSegment);
 	}
 
@@ -330,7 +283,7 @@ namespace Muon {
 	  if( addedSegments.count(bestSegment) ) continue;
 	  addedSegments.insert(bestSegment);
 	  Identifier chId = m_edmHelperSvc->chamberId( *bestSegment );
-	  MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chId);
+	  MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chId);
 	  segmentsPerChamberLayer[chIndex].push_back(bestSegment);
 	}
 
@@ -534,7 +487,7 @@ namespace Muon {
 
       // get chamber identifier, chamber index and station index
       Identifier chid = m_edmHelperSvc->chamberId( *stationSegs->front().get() );
-      MuonStationIndex::ChIndex chIndex = m_idHelperTool->chamberIndex(chid);
+      MuonStationIndex::ChIndex chIndex = m_idHelperSvc->chamberIndex(chid);
       MuonStationIndex::StIndex stIndex = MuonStationIndex::toStationIndex( chIndex );
       summary.stations.insert(stIndex);
       // reserve space for the new segments
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.h
index 13f9bfff0ad61ff8383cba7cef925e93495372a6..59e6dd5fde669e3822c184fcd83e7236eb7f0d7e 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentCombinationCleanerTool.h
@@ -1,11 +1,10 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONSEGMENTCOMBINATIONCLEANERTOOL_H
 #define MUONSEGMENTCOMBINATIONCLEANERTOOL_H
 
-
 #include <string>
 #include <map>
 #include <vector>
@@ -19,13 +18,13 @@
 #include "MuonSegmentMakerUtils/MuonSegmentCombiSummary.h"
 #include "MuonSegmentMakerUtils/MuonSegmentCombiOverlapSummary.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
+#include "MuonSegmentMakerToolInterfaces/IMuonSegmentOverlapRemovalTool.h"
 
 namespace Muon {
 
   class MuonSegment;
-  class MuonEDMPrinterTool;
-  class MuonIdHelperTool;
-  class IMuonSegmentOverlapRemovalTool;
 
   class MuonSegmentCombinationCleanerTool : virtual public IMuonSegmentCombinationCleanerTool, public AthAlgTool
   {
@@ -35,14 +34,11 @@ namespace Muon {
     MuonSegmentCombinationCleanerTool(const std::string&, const std::string&, const IInterface*);
 
     /** destructor */
-    virtual ~MuonSegmentCombinationCleanerTool();
+    virtual ~MuonSegmentCombinationCleanerTool() {};
 
     /** initializes private members */
     virtual StatusCode initialize();
 
-    /** deletes private members */
-    virtual StatusCode finalize();
-
     /** clean segment combination collections */
     std::unique_ptr<MuonSegmentCombinationCollection> clean( const MuonSegmentCombinationCollection& combiCol, MuonSegmentCombPatternCombAssociationMap* segPattMap );
 
@@ -71,12 +67,11 @@ namespace Muon {
     std::string print( MuonSegmentCombiSummary& summary ) const;
     std::string print( MuonSegmentCombiOverlapSummary& summary ) const;
 
-    /** ToolHandle for EDM printing of segments */
     ToolHandle<Muon::MuonEDMPrinterTool> m_printer;
     ServiceHandle<Muon::IMuonEDMHelperSvc>  m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };
-    ToolHandle<Muon::MuonIdHelperTool>   m_idHelperTool;
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ToolHandle<IMuonSegmentOverlapRemovalTool> m_overlapRemovalTool;    
 
     /** If set to true, all combinaties will be merged into one big one */ 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.cxx
index a2d0cb83d13abacc4fe3e53f87c953c2f20753c0..14fcc8bc920017907e800e20652d043e1c85c879 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.cxx
@@ -1,13 +1,9 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonSegmentOverlapRemovalTool.h"
 
-#include "MuonIdHelpers/MuonIdHelperTool.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
-
 #include "MuonSegment/MuonSegment.h"
 
 #include "MuonSegmentMakerUtils/MuonSegmentKey.h"
@@ -20,7 +16,6 @@ namespace Muon {
 
   MuonSegmentOverlapRemovalTool::MuonSegmentOverlapRemovalTool(const std::string& ty,const std::string& na,const IInterface* pa)
     : AthAlgTool(ty,na,pa),
-      m_idHelperTool("Muon::MuonIdHelpers/MuonIdHelperTool"),
       m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool")
   {
     declareInterface<IMuonSegmentOverlapRemovalTool>(this);
@@ -29,50 +24,14 @@ namespace Muon {
     declareProperty("OverlapFractionCut",m_overlapFractionCut = 0.8,"Cut overlap fraction, if fraction is smaller than cut both segments are kept");
   }
 
-
-  MuonSegmentOverlapRemovalTool::~MuonSegmentOverlapRemovalTool(){}
-
-
   StatusCode MuonSegmentOverlapRemovalTool::initialize()
   {
-    StatusCode sc = AlgTool::initialize(); 
-    if ( sc.isFailure() ) {
-      return sc;
-    }
-
-    sc = m_edmHelperSvc.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_INFO("Retrieved " << m_edmHelperSvc );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_edmHelperSvc ); 
-      return sc;
-    }
-
-    sc = m_printer.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_INFO("Retrieved " << m_printer );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_printer ); 
-      return sc;
-    }
-
-    sc = m_idHelperTool.retrieve();
-    if (sc.isSuccess()){
-      ATH_MSG_INFO("Retrieved " << m_idHelperTool );
-    }else{
-      ATH_MSG_FATAL("Could not get " << m_idHelperTool ); 
-      return sc;
-    }
-
-    
+    ATH_CHECK(AlgTool::initialize()); 
+    ATH_CHECK(m_edmHelperSvc.retrieve());
+    ATH_CHECK(m_printer.retrieve());
+    ATH_CHECK(m_idHelperSvc.retrieve());
     return StatusCode::SUCCESS;
   }
-  StatusCode MuonSegmentOverlapRemovalTool::finalize()
-  {
-    StatusCode sc = AlgTool::finalize(); 
-    if( sc.isFailure() ) return StatusCode::FAILURE;
-    return sc;
-  }
 
   void MuonSegmentOverlapRemovalTool::removeDuplicates( Trk::SegmentCollection* segments ) const {
 
@@ -99,7 +58,7 @@ namespace Muon {
       }
       MuonSegmentKey sk(*seg);
       Identifier chId = m_edmHelperSvc->chamberId(*seg);
-      bool isCsc = m_idHelperTool->isCsc(chId);
+      bool isCsc = m_idHelperSvc->isCsc(chId);
 
       // should this segment be inserted?
       bool insertAsGood(true);
@@ -327,7 +286,7 @@ namespace Muon {
       MuonSegment* seg=(*sit).get();
       MuonSegmentKey sk(*seg);
       Identifier chId = m_edmHelperSvc->chamberId(*seg);
-      bool isCsc = m_idHelperTool->isCsc(chId);
+      bool isCsc = m_idHelperSvc->isCsc(chId);
 
       // should this segment be inserted?
       bool insertAsGood(true);
diff --git a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.h b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.h
index e626a76a1fa64789cbe76c8b45cb75c66b2203f8..807dd124b8c2f159ba42183bb7ca59675d499af7 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentOverlapRemovalTools/src/MuonSegmentOverlapRemovalTool.h
@@ -12,12 +12,12 @@
 #include "GaudiKernel/ToolHandle.h"
 #include "MuonSegment/MuonSegmentCombination.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 
 namespace Muon {
   
   class MuonSegment;
-  class MuonEDMPrinterTool;
-  class MuonIdHelperTool;
 
   /**
      @brief tool to remove overlaps between segments
@@ -29,13 +29,10 @@ namespace Muon {
     MuonSegmentOverlapRemovalTool(const std::string&,const std::string&,const IInterface*);
 
     /** @brief destructor */
-    virtual ~MuonSegmentOverlapRemovalTool ();
+    virtual ~MuonSegmentOverlapRemovalTool () {};
     
     /** @brief AlgTool initilize */
     StatusCode initialize();
-    
-    /** @brief AlgTool finalize */
-    StatusCode finalize();
  
      /** @brief remove duplicates from a vector of segments. The caller should take 
          ownership of the segments */
@@ -53,7 +50,7 @@ namespace Muon {
     //cleaning of MuonSegmentCombinations is turned off, so perhaps this can be removed entirely
     SegVec removeDuplicates( MuonSegmentCombination::SegmentVec& segments ) const;
 
-    ToolHandle<Muon::MuonIdHelperTool>               m_idHelperTool;     //!< IdHelper tool
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
     ServiceHandle<Muon::IMuonEDMHelperSvc>           m_edmHelperSvc {this, "edmHelper", 
       "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc", 
       "Handle to the service providing the IMuonEDMHelperSvc interface" };       //!< EDM Helper tool
diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx
index c66547a0885cfe6325f53f16774a150ab76d92f3..37813e68001082df1eaf2fdde71d2d65679ab715 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.cxx
@@ -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
 */
 
 #include "MuonChamberHoleRecoveryTool.h"
@@ -9,13 +9,8 @@
 #include "MuonTrackMakerUtils/MuonTSOSHelper.h"
 
 #include "GaudiKernel/MsgStream.h"
-#include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
-#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
 #include "MuonIdHelpers/MuonStationIndex.h"
 
-#include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
-#include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h"
-
 #include "MuonStationIntersectSvc/MuonStationIntersectSvc.h"
 #include "MuonStationIntersectSvc/MuonStationIntersect.h"
 
@@ -38,8 +33,6 @@
 #include "TrkPseudoMeasurementOnTrack/PseudoMeasurementOnTrack.h"
 #include "TrkGeometry/MagneticFieldProperties.h"
 #include "TrkSurfaces/StraightLineSurface.h"
-#include "TrkExInterfaces/IExtrapolator.h"
-#include "TrkToolInterfaces/IResidualPullCalculator.h"
 #include "TrkEventPrimitives/ResidualPull.h"
 #include "TrkParameters/TrackParameters.h"
 
diff --git a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.h b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.h
index 1c067f652868950d9b75e6168013a419344b7b1c..9c87104514eb8b15c52b2a1a50be885df2cbfe0c 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.h
+++ b/MuonSpectrometer/MuonReconstruction/MuonTrackMakers/MuonTrackMakerTools/MuonTrackFinderTools/src/MuonChamberHoleRecoveryTool.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
 */
 
 #ifndef MUON_MUONCHAMBERHOLERECOVERYTOOL_H
@@ -11,8 +11,15 @@
 #include "TrkParameters/TrackParameters.h"
 #include "TrkToolInterfaces/ITrackSelectorTool.h"
 #include "MuonRecHelperTools/IMuonEDMHelperSvc.h"
+
 #include "MuonIdHelpers/IMuonIdHelperSvc.h"
 #include "MuonRecToolInterfaces/IMuonHoleRecoveryTool.h"
+#include "TrkToolInterfaces/IResidualPullCalculator.h"
+#include "TrkExInterfaces/IExtrapolator.h"
+#include "MuonRecToolInterfaces/IMdtDriftCircleOnTrackCreator.h"
+#include "MuonRecToolInterfaces/IMuonClusterOnTrackCreator.h"
+#include "MuonRecHelperTools/MuonEDMPrinterTool.h"
+
 #include "MuonCondData/MdtCondDbData.h"
 #include "TrkTrack/Track.h"
 
@@ -31,17 +38,9 @@ class StoreGateSvc;
 class MdtCondDbData;
 class MuonStationIntersectSvc;
 
-namespace Muon {
-  class IMdtDriftCircleOnTrackCreator;
-  class IMuonClusterOnTrackCreator;
-  class MuonEDMPrinterTool;
-}
-
 namespace Trk {
   class Track;
   class MagneticFieldProperties;
-  class IExtrapolator;
-  class IResidualPullCalculator;
 }
 
 namespace Muon {
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/python/MuonDQAMonitoringConfig.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/python/MuonDQAMonitoringConfig.py
index 95b5580242b5df731ccc8d6151194ccc05fa980f..1d2d56d3f0c21f93009345b8b593678ca1df616c 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/python/MuonDQAMonitoringConfig.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonDQAMonitoring/python/MuonDQAMonitoringConfig.py
@@ -14,7 +14,9 @@ def MuonDQAMonitoringConfig(flags):
             result.merge(MdtMonitoringConfig(flags))
 
         from TgcRawDataMonitoring.TgcRawDataMonitorAlgorithm import TgcRawDataMonitoringConfig
+        from MdtRawDataMonitoring.MDTMonitorAlgorithm import MdtMonitoringConfig
     
         result.merge(TgcRawDataMonitoringConfig(flags))
+        result.merge(MdtMonitoringConfig(flags))
         
     return result
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h
index 23034db18bdb60a567537b4181e2797259d7116a..343fa3a7d61c3bb49cf855ec2a3f47da12ac9a21 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonitoring/MdtRawDataMonAlg.h
@@ -58,12 +58,9 @@ namespace Muon {
 #include <set>
 
 //root includes
-class TH1;
 class TH2;
-class TString;
-class TH1F_LW;
-class TH2F_LW;
-class TColor;
+class MDTOverviewHistogramStruct;
+class MDTSummaryHistogramStruct;
 
 namespace monAlg{
   enum {L1_UNKNOWN, L1_BARREL, L1_ENDCAP};
@@ -115,11 +112,7 @@ class MdtRawDataMonAlg: public AthMonitorAlgorithm {
  private: 
 
   TH2* m_mdthitspermultilayerLumi[4][4];
-  TH2* m_mdteffpermultilayer[4][4];
   TH2* m_mdthitsperchamber_InnerMiddleOuterLumi[2];
-  TH2* m_mdthitsperchamber_InnerMiddleOuter_HighOcc[2];
-  TH2* m_mdthitsperchamber_onSegm_InnerMiddleOuterLumi[2];
-  TH2* m_mdteffperchamber_InnerMiddleOuter[4];
   TH2* m_mdthitsperML_byLayer[3];//These are alternative Global hit coverage plots
 
   std::string m_title;
@@ -135,8 +128,10 @@ class MdtRawDataMonAlg: public AthMonitorAlgorithm {
       "MuonDetectorManager", 
       "Key of input MuonDetectorManager condition data"};    
 
-  virtual StatusCode  fillMDTOverviewHistograms(const Muon::MdtPrepData*, bool &isNoiseBurstCandidate) const;
-  virtual StatusCode  fillMDTSummaryHistograms( const Muon::MdtPrepData*, /*std::set<std::string>,*/ bool &isNoiseBurstCandidate, int lb, bool trig_barrel, bool trig_endcap ) const;
+  virtual void  fillMDTOverviewVects(const Muon::MdtPrepData*, bool &isNoiseBurstCandidate, MDTOverviewHistogramStruct& vects) const;
+  virtual void  fillMDTOverviewHistograms(const MDTOverviewHistogramStruct& vects) const;
+  virtual StatusCode  fillMDTSummaryVects( const Muon::MdtPrepData*, /*std::set<std::string>,*/ bool &isNoiseBurstCandidate, bool trig_barrel, bool trig_endcap, MDTSummaryHistogramStruct vects[4][4][36] ) const;
+  virtual StatusCode  fillMDTSummaryHistograms( const MDTSummaryHistogramStruct vects[4][4][36], int lb ) const;
   virtual StatusCode  fillMDTHistograms( const Muon::MdtPrepData* ) const;//fill chamber by chamber histos
 
 
@@ -168,9 +163,7 @@ class MdtRawDataMonAlg: public AthMonitorAlgorithm {
 
   ToolHandleArray<IDQFilterTool> m_DQFilterTools;
   bool m_atlas_ready;
-  //  uint32_t m_time;
   uint32_t m_firstTime;
-  //int m_time;
 
   SG::ReadHandleKey<Trk::SegmentCollection> m_segm_type{this,"Eff_segm_type","MuonSegments","muon segments"};
 
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MDTMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MDTMonitorAlgorithm.py
index 02b28909b8ab1c91b35edf0fe3e662eab96d17e6..3827c86f7cb4763037db95a5ed8b62a9e5aacf3b 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MDTMonitorAlgorithm.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MDTMonitorAlgorithm.py
@@ -126,17 +126,20 @@ def MdtMonitoringConfig(inputFlags):
                             path='Overview',   xbins=100, xmin=0., xmax=400.
                             )
 
-    mdtGroup.defineHistogram('adc_mon_noiseBurst;Overall_ADC_spectrum_NoiseBursts',  type='TH1F',
+    mdtGroup.defineHistogram('adc_mon_nosel;Overall_ADC_spectrum_NoiseBursts',  type='TH1F',
+                            cutmask='noiseBurst',
                             title='Overall_ADC_spectrum_NoiseBursts;[adc counts];Number of Entries',
                             path='Overview',   xbins=100, xmin=0., xmax=400.
                             )
     
-    mdtGroup.defineHistogram('tdc_mon_noiseBurst,adc_mon_noiseBurst;Overall_TDCADC_spectrum_NoiseBursts',    type='TH2F',
+    mdtGroup.defineHistogram('tdc_mon_nosel,adc_mon_nosel;Overall_TDCADC_spectrum_NoiseBursts',    type='TH2F',
+                            cutmask='noiseBurst',
                             title='Overall_TDCADC_spectrum_NoiseBursts;[nsec];[adc counts]',
                             path='Overview',   xbins=50, xmin=0., xmax=2000., ybins=20, ymin=0., ymax=400.
                             )
 
-    mdtGroup.defineHistogram('tdc_mon_noiseBurst;Overall_TDC_spectrum_NoiseBursts',  type='TH1F',
+    mdtGroup.defineHistogram('tdc_mon_nosel;Overall_TDC_spectrum_NoiseBursts',  type='TH1F',
+                            cutmask='noiseBurst',
                             title='Overall_TDC_spectrum_NoiseBursts;[nsec];Number of Entries',
                             path='Overview',   xbins=120, xmin=0., xmax=2000.
                             )
@@ -309,12 +312,14 @@ def MdtMonitoringConfig(inputFlags):
         mdtPerChamberBAGroup.defineHistogram(var, title=title_mdttdc+";[nsec];Number of Entries", 
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml1_adccut=ch+"_MDT_Station_TDC_ML1_ADCCut"
-        var="tdc_perch_ml1_adccut_"+ch+";"+title_mdttdc_ml1_adccut
-        mdtPerChamberBAGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml1_adccut
+        mdtPerChamberBAGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml1_adccut',
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml2_adccut=ch+"_MDT_Station_TDC_ML2_ADCCut"
-        var="tdc_perch_ml2_adccut_"+ch+";"+title_mdttdc_ml2_adccut
-        mdtPerChamberBAGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml2_adccut
+        mdtPerChamberBAGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml2_adccut',
                                            type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdtadc= ch+"_MDT_Station_ADC"
         var="adc_perch_"+ch+";"+title_mdtadc
@@ -332,6 +337,7 @@ def MdtMonitoringConfig(inputFlags):
         title_mdtlayer= ch+"_MDT_Station_LAYER_ADCCut"
         var="layer_perch_"+ch+";"+title_mdtlayer
         mdtPerChamberBAGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut_nonoise',
                                              title=title_mdtlayer+";layerID;Number of Entries",
                                              path=ch,   xbins=10, xmin=0., xmax=10.)
         
@@ -339,6 +345,7 @@ def MdtMonitoringConfig(inputFlags):
         var="tube_perch_"+ch+";"+title_mdttube
         binmax=tubeMax[ch]
         mdtPerChamberBAGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut',
                                              title=title_mdttube+";tubeID;Number of Entries",
                                              path=ch,   xbins=binmax, xmin=0., xmax=binmax)
         #to do
@@ -355,12 +362,14 @@ def MdtMonitoringConfig(inputFlags):
         mdtPerChamberBCGroup.defineHistogram(var, title=title_mdttdc+";[nsec];Number of Entries",
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml1_adccut=ch+"_MDT_Station_TDC_ML1_ADCCut"
-        var="tdc_perch_ml1_adccut_"+ch+";"+title_mdttdc_ml1_adccut
-        mdtPerChamberBCGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml1_adccut
+        mdtPerChamberBCGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml1_adccut',
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml2_adccut=ch+"_MDT_Station_TDC_ML2_ADCCut"
-        var="tdc_perch_ml2_adccut_"+ch+";"+title_mdttdc_ml2_adccut
-        mdtPerChamberBCGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml2_adccut
+        mdtPerChamberBCGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml2_adccut',
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdtadc= ch+"_MDT_Station_ADC"
         var="adc_perch_"+ch+";"+title_mdtadc
@@ -374,12 +383,14 @@ def MdtMonitoringConfig(inputFlags):
         title_mdtlayer= ch+"_MDT_Station_LAYER_DCCut"
         var="layer_perch_"+ch+";"+title_mdtlayer
         mdtPerChamberBCGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut_nonoise',
                                              title=title_mdtlayer+";layerID;Number of Entries",
                                              path=ch,   xbins=10, xmin=0., xmax=10.)
         title_mdttube= ch+"_MDT_Station_TUBE_ADCCut"
         var="tube_perch_"+ch+";"+title_mdttube
         binmax=tubeMax[ch]
         mdtPerChamberBCGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut',
                                              title=title_mdttube+";tubeID;Number of Entries",
                                              path=ch,   xbins=binmax, xmin=0., xmax=binmax)
 
@@ -397,12 +408,14 @@ def MdtMonitoringConfig(inputFlags):
         mdtPerChamberEAGroup.defineHistogram(var, title=title_mdttdc+";[nsec];Number of Entries", 
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml1_adccut=ch+"_MDT_Station_TDC_ML1_ADCCut"
-        var="tdc_perch_ml1_adccut_"+ch+";"+title_mdttdc_ml1_adccut
-        mdtPerChamberEAGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml1_adccut
+        mdtPerChamberEAGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml1_adccut',
                                             type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml2_adccut=ch+"_MDT_Station_TDC_ML2_ADCCut"
-        var="tdc_perch_ml2_adccut_"+ch+";"+title_mdttdc_ml2_adccut
-        mdtPerChamberEAGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml2_adccut
+        mdtPerChamberEAGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml2_adccut',
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdtadc= ch+"_MDT_Station_ADC"
         var="adc_perch_"+ch+";"+title_mdtadc
@@ -418,6 +431,7 @@ def MdtMonitoringConfig(inputFlags):
         title_mdtlayer= ch+"_MDT_Station_LAYER_DCCut"
         var="layer_perch_"+ch+";"+title_mdtlayer
         mdtPerChamberEAGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut_nonoise',
                                              title=title_mdtlayer+";layerID;Number of Entries",
                                              path=ch,   xbins=10, xmin=0., xmax=10.)
 
@@ -425,6 +439,7 @@ def MdtMonitoringConfig(inputFlags):
         var="tube_perch_"+ch+";"+title_mdttube
         binmax=tubeMax[ch]
         mdtPerChamberEAGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut',
                                              title=title_mdttube+";tubeID;Number of Entries",
                                              path=ch,   xbins=binmax, xmin=0., xmax=binmax)
 
@@ -443,12 +458,14 @@ def MdtMonitoringConfig(inputFlags):
         mdtPerChamberECGroup.defineHistogram(var, title=title_mdttdc+";[nsec];Number of Entries", 
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml1_adccut=ch+"_MDT_Station_TDC_ML1_ADCCut"
-        var="tdc_perch_ml1_adccut_"+ch+";"+title_mdttdc_ml1_adccut
-        mdtPerChamberECGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml1_adccut
+        mdtPerChamberECGroup.defineHistogram(var, title=title_mdttdc_ml1_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml1_adccut',
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdttdc_ml2_adccut=ch+"_MDT_Station_TDC_ML2_ADCCut"
-        var="tdc_perch_ml2_adccut_"+ch+";"+title_mdttdc_ml2_adccut
-        mdtPerChamberECGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries", 
+        var="tdc_perch_"+ch+";"+title_mdttdc_ml2_adccut
+        mdtPerChamberECGroup.defineHistogram(var, title=title_mdttdc_ml2_adccut+";[nsec];Number of Entries",
+                                             cutmask='ml2_adccut',
                                              type='TH1F', path=ch, xbins=100, xmin=0., xmax=2000.)
         title_mdtadc= ch+"_MDT_Station_ADC"
         var="adc_perch_"+ch+";"+title_mdtadc
@@ -464,12 +481,14 @@ def MdtMonitoringConfig(inputFlags):
         title_mdtlayer= ch+"_MDT_Station_LAYER_ADCCut"
         var="layer_perch_"+ch+";"+title_mdtlayer
         mdtPerChamberECGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut_nonoise',
                                              title=title_mdtlayer+";layerID;Number of Entries",
                                              path=ch,   xbins=10, xmin=0., xmax=10.)
         title_mdttube= ch+"_MDT_Station_TUBE_ADCCut"
         var="tube_perch_"+ch+";"+title_mdttube
         binmax=tubeMax[ch]
         mdtPerChamberECGroup.defineHistogram(var,  type='TH1F',
+                                             cutmask='adccut',
                                              title=title_mdttube+";tubeID;Number of Entries",
                                              path=ch,   xbins=binmax, xmin=0., xmax=binmax)
         #to-do
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MdtRawMonLabels.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MdtRawMonLabels.py
index 399ae2e35f85195cb8905e681b02572aa0415a48..7033805ff41cc004feac178e9a39656933f79b15 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MdtRawMonLabels.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/python/MdtRawMonLabels.py
@@ -3,56 +3,56 @@
 # 
 
 NumberOfHitsInBAInnerPerMultiLayer_ADCCut_labelx=['BIA1', 'BIA2', 'BIA3', 'BIA4', 'BIA5', 'BIA6', 'BIA7', 'BIA8']
-NumberOfHitsInBAInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2']
+NumberOfHitsInBAInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2']
 
 NumberOfHitsInBAMiddlePerMultiLayer_ADCCut_labelx=['BMA1', 'BMA2', 'BMA3', 'BMA4', 'BMA5', 'BMA6']
-NumberOfHitsInBAMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInBAMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInBAOuterPerMultiLayer_ADCCut_labelx=['BOB0', 'BOA1', 'BOA2', 'BOA3', 'BOA4', 'BOA5', 'BOA6', 'BOA7', 'BOA8']
-NumberOfHitsInBAOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInBAOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 
 NumberOfHitsInBAExtraPerMultiLayer_ADCCut_labelx=['BEA1', 'BEA2']
-NumberOfHitsInBAExtraPerMultiLayer_ADCCut_labely=['02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1', '02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1', '02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1']
+NumberOfHitsInBAExtraPerMultiLayer_ADCCut_labely=['02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1']
 
 
 NumberOfHitsInBCInnerPerMultiLayer_ADCCut_labelx=['BIC8', 'BIC7', 'BIC6', 'BIC5', 'BIC4', 'BIC3', 'BIC2', 'BIC1']
-NumberOfHitsInBCInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2']
+NumberOfHitsInBCInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2']
 
 NumberOfHitsInBCMiddlePerMultiLayer_ADCCut_labelx=['BMC6', 'BMC5', 'BMC4', 'BMC3', 'BMC2', 'BMC1']
-NumberOfHitsInBCMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInBCMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 
 NumberOfHitsInBCOuterPerMultiLayer_ADCCut_labelx=['BOC8', 'BOC7', 'BOC6', 'BOC5', 'BOC4', 'BOC3', 'BOC2', 'BOC1']
-NumberOfHitsInBCOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInBCOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInBCExtraPerMultiLayer_ADCCut_labelx=['BEC2', 'BEC1']
-NumberOfHitsInBCExtraPerMultiLayer_ADCCut_labely=['02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1', '02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1', '02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1']
+NumberOfHitsInBCExtraPerMultiLayer_ADCCut_labely=['02 1', '04 1', '06 1', '08 1', '10 1', '12 1', '14 1', '16 1']
 
 NumberOfHitsInEAInnerPerMultiLayer_ADCCut_labelx=['EIA1', 'EIA2', 'EIA3', 'EIA4', 'EIA5']
-NumberOfHitsInEAInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInEAInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 
 NumberOfHitsInEAMiddlePerMultiLayer_ADCCut_labelx=['EMA1', 'EMA2', 'EMA3', 'EMA4', 'EMA5']
-NumberOfHitsInEAMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInEAMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInEAOuterPerMultiLayer_ADCCut_labelx=['EOA1', 'EOA2', 'EOA3', 'EOA4', 'EOA5', 'EOA6']
-NumberOfHitsInEAOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInEAOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInEAExtraPerMultiLayer_ADCCut_labelx=['EEA1', 'EEA2']
-NumberOfHitsInEAExtraPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInEAExtraPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInECInnerPerMultiLayer_ADCCut_labelx=['EIC5', 'EIC4', 'EIC3', 'EIC2', 'EIC1']
-NumberOfHitsInECInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInECInnerPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInECMiddlePerMultiLayer_ADCCut_labelx=['EMC5', 'EMC4', 'EMC3', 'EMC2', 'EMC1']
-NumberOfHitsInECMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInECMiddlePerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInECOuterPerMultiLayer_ADCCut_labelx=['EOC6', 'EOC5', 'EOC4', 'EOC3', 'EOC2', 'EOC1']
-NumberOfHitsInECOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInECOuterPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInECExtraPerMultiLayer_ADCCut_labelx=['EEC2', 'EEC1']
-NumberOfHitsInECExtraPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInECExtraPerMultiLayer_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
 NumberOfHitsInBarrelPerChamber_ADCCut_labelx= ['BC8', 'BC7', 'BC6', 'BC5', 'BC4', 'BC3', 'BC2', 'BC1', 'BB0', 'BA1', 'BA2', 'BA3', 'BA4', 'BA5', 'BA6', 'BA7', 'BA8']
 NumberOfHitsInBarrelPerChamber_ADCCut_labely=['E 02', 'E 04', 'E 06', 'E 08', 'E 10', 'E 12', 'E 14', 'E 16', 'I 01', 'I 02', 'I 03', 'I 04', 'I 05', 'I 06', 'I 07', 'I 08', 'I 09', 'I 10', 'I 11 M', 'I 11 R', 'I 12', 'I 13', 'I 14', 'I 15 M', 'I 15 R', 'I 16', 'M 01', 'M 02', 'M 03', 'M 04', 'M 05', 'M 06', 'M 07', 'M 08', 'M 09', 'M 10', 'M 11', 'M 12', 'M 13', 'M 14', 'M 15', 'M 16', 'O 01', 'O 02', 'O 03', 'O 04', 'O 05', 'O 06', 'O 07', 'O 08', 'O 09', 'O 10', 'O 11', 'O 12', 'O 13', 'O 14', 'O 15', 'O 16']
@@ -62,12 +62,12 @@ NumberOfHitsInEndCapPerChamber_ADCCut_labely=['E 01', 'E 02', 'E 03', 'E 04', 'E
 
 
 
-NumberOfHitsInMDTInner_ADCCut_labelx=['EIC5', 'EIC4', 'EIC3', 'EIC2', 'EIC1', '', 'EEC2', 'EEC1', 'BEC2', 'BEC1', '  ', 'BIC8', 'BIC7', 'BIC6', 'BIC5', 'BIC4', 'BIC3', 'BIC2', 'BIC1', 'BIA1', 'BIA2', 'BIA3', 'BIA4', 'BIA5', 'BIA6', 'BIA7', 'BIA8', ' ', 'BEA1', 'BEA2', 'EEA1', 'EEA2', '   ', 'EIA1', 'EIA2', 'EIA3', 'EIA4', 'EIA5']
-NumberOfHitsInMDTInner_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2']
+NumberOfHitsInMDTInner_ADCCut_labelx=['EIC5', 'EIC4', 'EIC3', 'EIC2', 'EIC1', '', 'EEC2', 'EEC1', 'BEC2', 'BEC1', '', 'BIC8', 'BIC7', 'BIC6', 'BIC5', 'BIC4', 'BIC3', 'BIC2', 'BIC1', 'BIA1', 'BIA2', 'BIA3', 'BIA4', 'BIA5', 'BIA6', 'BIA7', 'BIA8', '', 'BEA1', 'BEA2', 'EEA1', 'EEA2', '', 'EIA1', 'EIA2', 'EIA3', 'EIA4', 'EIA5']
+NumberOfHitsInMDTInner_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1 R', '11 2 R', '11 1 M', '11 2 M', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1 R', '15 2 R', '15 1 M', '15 2 M', '16 1', '16 2']
 
 
-NumberOfHitsInMDTMiddle_ADCCut_labelx=['EMC5', 'EMC4', 'EMC3', 'EMC2', 'EMC1', '', 'BMC6', 'BMC5', 'BMC4', 'BMC3', 'BMC2', 'BMC1', 'BMA1', 'BMA2', 'BMA3', 'BMA4', 'BMA5', 'BMA6', ' ', 'EMA1', 'EMA2', 'EMA3', 'EMA4', 'EMA5']
-NumberOfHitsInMDTMiddle_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInMDTMiddle_ADCCut_labelx=['EMC5', 'EMC4', 'EMC3', 'EMC2', 'EMC1', '', 'BMC6', 'BMC5', 'BMC4', 'BMC3', 'BMC2', 'BMC1', 'BMA1', 'BMA2', 'BMA3', 'BMA4', 'BMA5', 'BMA6', '', 'EMA1', 'EMA2', 'EMA3', 'EMA4', 'EMA5']
+NumberOfHitsInMDTMiddle_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
 
-NumberOfHitsInMDTOuter_ADCCut_labelx=['EOC6', 'EOC5', 'EOC4', 'EOC3', 'EOC2', 'EOC1', '', 'BOC8', 'BOC7', 'BOC6', 'BOC5', 'BOC4', 'BOC3', 'BOC2', 'BOC1', 'BOB0', 'BOA1', 'BOA2', 'BOA3', 'BOA4', 'BOA5', 'BOA6', 'BOA7', 'BOA8', ' ', 'EOA1', 'EOA2', 'EOA3', 'EOA4', 'EOA5', 'EOA6']
-NumberOfHitsInMDTOuter_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2', '01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
+NumberOfHitsInMDTOuter_ADCCut_labelx=['EOC6', 'EOC5', 'EOC4', 'EOC3', 'EOC2', 'EOC1', '', 'BOC8', 'BOC7', 'BOC6', 'BOC5', 'BOC4', 'BOC3', 'BOC2', 'BOC1', 'BOB0', 'BOA1', 'BOA2', 'BOA3', 'BOA4', 'BOA5', 'BOA6', 'BOA7', 'BOA8', '', 'EOA1', 'EOA2', 'EOA3', 'EOA4', 'EOA5', 'EOA6']
+NumberOfHitsInMDTOuter_ADCCut_labely=['01 1', '01 2', '02 1', '02 2', '03 1', '03 2', '04 1', '04 2', '05 1', '05 2', '06 1', '06 2', '07 1', '07 2', '08 1', '08 2', '09 1', '09 2', '10 1', '10 2', '11 1', '11 2', '12 1', '12 2', '13 1', '13 2', '14 1', '14 2', '15 1', '15 2', '16 1', '16 2']
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx
index 0f0acb1c3e0262aa2aa791dc07088da8b05953f7..5a5b998d04b327f534442fed9a82a953b050852f 100755
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/MdtRawDataMonitoring/src/MdtRawDataMonAlg.cxx
@@ -71,6 +71,60 @@ using namespace std;
 //enum {enumBarrel, enumEndCap};
 enum {enumInner, enumMiddle, enumOuter, enumExtra};
 
+struct MDTOverviewHistogramStruct {
+  std::vector<float> mdt_tube_x_barrel;
+  std::vector<float> mdt_tube_y_barrel;
+  std::vector<float> mdt_tube_z_barrel;
+  std::vector<float> mdt_tube_perp_barrel;
+
+  std::vector<float> mdt_tube_x_ovl;
+  std::vector<float> mdt_tube_y_ovl;
+  std::vector<float> mdt_tube_z_ovl;
+  std::vector<float> mdt_tube_perp_ovl;
+
+  std::vector<float> mdt_tube_x_endcap;
+  std::vector<float> mdt_tube_y_endcap;
+  std::vector<float> mdt_tube_z_endcap;
+  std::vector<float> mdt_tube_perp_endcap;
+  
+  std::vector<float> adc_mon_nosel;
+  std::vector<float> tdc_mon_nosel;
+  std::vector<float> tdc_mon;
+  std::vector<float> adc_mon;
+  std::vector<int> noiseBurst;
+  
+  std::vector<float> tdc_mon_noiseBurst;
+  std::vector<float> adc_mon_noiseBurst;
+  std::vector<float> adc_mon_noiseBurst_notNoisy;
+  std::vector<float> tdc_mon_noiseBurst_adcCut;
+
+  std::vector<float> tdc_mon_adcCut;
+};
+
+struct MDTSummaryHistogramStruct {
+  std::vector<int> sector;
+  std::vector<int> stationEta;
+  std::vector<float> adc_mon;
+  std::vector<float> tdc_mon;
+  std::vector<float> tdc_mon_nb2;
+  std::vector<float> adc_mon_nb2;
+  std::vector<float> tdc_mon_nb1;
+  std::vector<float> adc_mon_nb1;
+  std::vector<float> adc_mon_adccut;
+  std::vector<float> tdc_mon_adccut;
+  std::vector<int> x_mon;
+  std::vector<int> y_mon;
+  std::vector<int> x_mon_noise;
+  std::vector<int> y_mon_noise;
+  std::vector<float> tdc_mon_nb3;
+  std::vector<int> x_bin_perML;
+  std::vector<int> y_bin_perML;
+  std::vector<int> bin_byLayer_x;
+  std::vector<int> bin_byLayer_y;
+  std::vector<float> tdc_mon_rpc;
+  std::vector<float> tdc_mon_tgc;
+};
+
 /////////////////////////////////////////////////////////////////////////////
 // *********************************************************************
 // Public Methods
@@ -82,8 +136,6 @@ MdtRawDataMonAlg::MdtRawDataMonAlg( const std::string& name, ISvcLocator* pSvcLo
  m_muonSelectionTool("CP::MuonSelectionTool/MuonSelectionTool"),
  m_DQFilterTools(this),
  m_atlas_ready(0),
-  // m_trig_BARREL(false),
-  // m_trig_ENDCAP(false),
  m_hist_hash_list(0),
  m_BMGpresent(false),
  m_BMGid(-1)
@@ -303,7 +355,7 @@ StatusCode MdtRawDataMonAlg::initialize()
    
     chamber->SetMDTHitsPerChamber_IMO_Bin(dynamic_cast<TH2F*> (m_mdthitsperchamber_InnerMiddleOuterLumi[chamber->GetBarrelEndcapEnum()]));
     chamber->SetMDTHitsPerML_byLayer_Bins(dynamic_cast<TH2F*> (m_mdthitspermultilayerLumi[chamber->GetRegionEnum()][chamber->GetLayerEnum()])
-					  ,dynamic_cast<TH2F*> (m_mdthitsperML_byLayer[ (chamber->GetLayerEnum() < 3 ? chamber->GetLayerEnum() : 0) ]));
+    					  ,dynamic_cast<TH2F*> (m_mdthitsperML_byLayer[ (chamber->GetLayerEnum() < 3 ? chamber->GetLayerEnum() : 0) ]));
     /*DEV this was in bookHistogramsRecurrent, need to be reimplemented in someway    
     // chamber->SetMDTHitsPerChamber_IMO_Bin(dynamic_cast<TH2F*> (m_mdthitsperchamber_InnerMiddleOuter_HighOcc[chamber->GetBarrelEndcapEnum()]));
     
@@ -369,22 +421,10 @@ StatusCode MdtRawDataMonAlg::fillHistograms(const EventContext& ctx) const
     //DEV still needed ? does not compile
     if(muonRoIs.isPresent() && muonRoIs.isValid()){
       ATH_MSG_VERBOSE( "Retrieved LVL1MuonRoIs object with key: " << m_l1RoiKey.key() ); 
-      xAOD::MuonRoIContainer::const_iterator mu_it = muonRoIs->begin(); 
-      xAOD::MuonRoIContainer::const_iterator mu_it_end= muonRoIs->end();
-      
-      for( ; mu_it != mu_it_end; mu_it++){
-	//ATH_MSG_ERROR( "(*mu_it)->getSource(): " << (*mu_it)->getSource() << ", is Muon_ROI::Endcap: " << ((*mu_it)->getSource()==(xAOD::MuonRoI::RoISource::Endcap)) << ", is Muon_ROI::Barrel: " << ((*mu_it)->getSource()==(xAOD::MuonRoI::RoISource::Barrel)) );
-	if( (*mu_it)->getSource() == xAOD::MuonRoI::RoISource::Barrel) {
-	  trig_BARREL =true;
-	  break;
-	}
-      }
-      for( ; mu_it != mu_it_end; mu_it++){
-	if( (*mu_it)->getSource() == xAOD::MuonRoI::RoISource::Endcap ) {
-	  trig_ENDCAP = true;
-	  break;
-	}
-      }
+      trig_BARREL = std::any_of(muonRoIs->begin(), muonRoIs->end(), 
+                                [](const auto& i){return i->getSource() == xAOD::MuonRoI::RoISource::Barrel;});
+      trig_ENDCAP = std::any_of(muonRoIs->begin(), muonRoIs->end(), 
+                                [](const auto& i){return i->getSource() == xAOD::MuonRoI::RoISource::Endcap;});
     }
   }     catch (SG::ExcNoAuxStore & excpt){
     ATH_MSG_INFO("SG::ExcNoAuxStore caught, "<<m_l1RoiKey.key()<<" not available.");
@@ -489,6 +529,8 @@ StatusCode MdtRawDataMonAlg::fillHistograms(const EventContext& ctx) const
 	}
       }
 
+      MDTOverviewHistogramStruct overviewPlots;
+      MDTSummaryHistogramStruct summaryPlots[4][4][36]; // [region][layer][phi]
       //loop in MdtPrepDataContainer
       for (Muon::MdtPrepDataContainer::const_iterator containerIt = mdt_container->begin(); containerIt != mdt_container->end(); ++containerIt) {
         if (containerIt == mdt_container->end() || (*containerIt)->size()==0) continue;  //check if there are counts  
@@ -508,19 +550,12 @@ StatusCode MdtRawDataMonAlg::fillHistograms(const EventContext& ctx) const
             isHit_above_ADCCut = true;
           }
 
-          sc = fillMDTOverviewHistograms(*mdtCollection, isNoiseBurstCandidate);
-          if(sc.isSuccess()) { 
-            ATH_MSG_DEBUG("Filled MDTOverviewHistograms" );
-          }
-          else {
-            ATH_MSG_ERROR("Failed to fill MDTOverviewHistograms" );
-            return sc;
-          }
+          fillMDTOverviewVects(*mdtCollection, isNoiseBurstCandidate, overviewPlots);
 	  //=======================================================================
 	  //=======================================================================
 	  //=======================================================================
 
-	  sc = fillMDTSummaryHistograms(*mdtCollection, /* chambers_from_tracks,*/ isNoiseBurstCandidate, lumiblock, trig_BARREL, trig_ENDCAP);
+	  sc = fillMDTSummaryVects(*mdtCollection, /* chambers_from_tracks,*/ isNoiseBurstCandidate, trig_BARREL, trig_ENDCAP, summaryPlots);
           if(sc.isSuccess()){
             ATH_MSG_DEBUG("Filled MDTSummaryHistograms " );
           }   else {
@@ -565,6 +600,10 @@ StatusCode MdtRawDataMonAlg::fillHistograms(const EventContext& ctx) const
         if( isHit_above_ADCCut ) 
           nColl_ADCCut++;
       } //loop in MdtPrepDataContainer
+      fillMDTOverviewHistograms(overviewPlots);
+      fillMDTSummaryHistograms(summaryPlots, lumiblock);
+      
+      
       int nHighOccChambers = 0;
       map<string,float>::iterator iterstat;
       std::map<std::string,float> tubesperchamber_map;
@@ -633,8 +672,7 @@ StatusCode MdtRawDataMonAlg::fillHistograms(const EventContext& ctx) const
 } 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 
-StatusCode MdtRawDataMonAlg::fillMDTOverviewHistograms( const Muon::MdtPrepData* mdtCollection, bool &isNoiseBurstCandidate ) const {
-  StatusCode sc = StatusCode::SUCCESS;
+void MdtRawDataMonAlg::fillMDTOverviewVects( const Muon::MdtPrepData* mdtCollection, bool &isNoiseBurstCandidate, MDTOverviewHistogramStruct& vects ) const {
   Identifier digcoll_id = (mdtCollection)->identify();
 
   std::string hardware_name = getChamberName( mdtCollection );
@@ -645,7 +683,8 @@ StatusCode MdtRawDataMonAlg::fillMDTOverviewHistograms( const Muon::MdtPrepData*
   const MuonGM::MuonDetectorManager* MuonDetMgr = DetectorManagerHandle.cptr(); 
   if(MuonDetMgr==nullptr){
     ATH_MSG_ERROR("Null pointer to the read MuonDetectorManager conditions object");
-    return StatusCode::FAILURE; 
+    return;
+    //return StatusCode::FAILURE; 
   } 
 
   const MuonGM::MdtReadoutElement* pReadoutElementMDT = MuonDetMgr->getMdtReadoutElement(digcoll_id);
@@ -663,63 +702,94 @@ StatusCode MdtRawDataMonAlg::fillMDTOverviewHistograms( const Muon::MdtPrepData*
   if( adc>m_ADCCut ) {
     //barrel
     if(fabs(mdt_tube_eta)>0. && fabs(mdt_tube_eta)<0.9) {
-      auto mdt_tube_x_barrel = Monitored::Scalar<float>("mdt_tube_x_barrel", mdtgPos.x());
-      auto mdt_tube_y_barrel = Monitored::Scalar<float>("mdt_tube_y_barrel", mdtgPos.y());
-      auto mdt_tube_z_barrel = Monitored::Scalar<float>("mdt_tube_z_barrel", mdtgPos.z());
-      auto mdt_tube_perp_barrel = Monitored::Scalar<float>("mdt_tube_perp_barrel", mdtgPos.perp());
-      fill("MdtMonitor",mdt_tube_z_barrel,mdt_tube_perp_barrel, mdt_tube_x_barrel,mdt_tube_y_barrel);
+      vects.mdt_tube_x_barrel.push_back(mdtgPos.x());
+      vects.mdt_tube_y_barrel.push_back(mdtgPos.y());
+      vects.mdt_tube_z_barrel.push_back(mdtgPos.z());
+      vects.mdt_tube_perp_barrel.push_back(mdtgPos.perp());
     }   
     //OverLap -->Fill MDT Global RZ and YX
     if(fabs(mdt_tube_eta)>0.9 && fabs(mdt_tube_eta)<1.2) {
-      auto mdt_tube_x_ovl = Monitored::Scalar<float>("mdt_tube_x_ovl", mdtgPos.x());
-      auto mdt_tube_y_ovl = Monitored::Scalar<float>("mdt_tube_y_ovl", mdtgPos.y());
-      auto mdt_tube_z_ovl = Monitored::Scalar<float>("mdt_tube_z_ovl", mdtgPos.z());
-      auto mdt_tube_perp_ovl = Monitored::Scalar<float>("mdt_tube_perp_ovl", mdtgPos.perp());
-      fill("MdtMonitor",mdt_tube_z_ovl,mdt_tube_perp_ovl, mdt_tube_x_ovl,mdt_tube_y_ovl);
+      vects.mdt_tube_x_ovl.push_back(mdtgPos.x());
+      vects.mdt_tube_y_ovl.push_back(mdtgPos.y());
+      vects.mdt_tube_z_ovl.push_back(mdtgPos.z());
+      vects.mdt_tube_perp_ovl.push_back(mdtgPos.perp());
     }
     //EndCap -->Fill MDT Global RZ and YX
     if(fabs(mdt_tube_eta)>1.2 && fabs(mdt_tube_eta)<2.7){
-      auto mdt_tube_x_endcap = Monitored::Scalar<float>("mdt_tube_x_endcap", mdtgPos.x());
-      auto mdt_tube_y_endcap = Monitored::Scalar<float>("mdt_tube_y_endcap", mdtgPos.y());
-      auto mdt_tube_z_endcap = Monitored::Scalar<float>("mdt_tube_z_endcap", mdtgPos.z());
-      auto mdt_tube_perp_endcap = Monitored::Scalar<float>("mdt_tube_perp_endcap", mdtgPos.perp());
-      fill("MdtMonitor",mdt_tube_z_endcap,mdt_tube_perp_endcap, mdt_tube_x_endcap,mdt_tube_y_endcap);
-
+      vects.mdt_tube_x_endcap.push_back(mdtgPos.x());
+      vects.mdt_tube_y_endcap.push_back(mdtgPos.y());
+      vects.mdt_tube_z_endcap.push_back(mdtgPos.z());
+      vects.mdt_tube_perp_endcap.push_back(mdtgPos.perp());
     }      
   }
 
-  auto adc_mon_nosel = Monitored::Scalar<float>("adc_mon_nosel", adc);
-  fill("MdtMonitor", adc_mon_nosel);
+  vects.adc_mon_nosel.push_back(adc);
+  vects.tdc_mon_nosel.push_back(tdc);
   if(!isNoisy && adc > 0){
-    auto tdc_mon = Monitored::Scalar<float>("tdc_mon", tdc);
-    auto adc_mon = Monitored::Scalar<float>("adc_mon", adc);
-    fill("MdtMonitor", tdc_mon, adc_mon);
+    vects.tdc_mon.push_back(tdc);
+    vects.adc_mon.push_back(adc);
   }
 
+  vects.noiseBurst.push_back((int) isNoiseBurstCandidate);
   if(isNoiseBurstCandidate){
-    auto tdc_mon_noiseBurst = Monitored::Scalar<float>("tdc_mon_noiseBurst", tdc);
-    auto adc_mon_noiseBurst = Monitored::Scalar<float>("adc_mon_noiseBurst", adc);
-    fill("MdtMonitor", tdc_mon_noiseBurst, adc_mon_noiseBurst);
+    vects.tdc_mon_noiseBurst.push_back(tdc);
+    vects.adc_mon_noiseBurst.push_back(adc);
     if(!isNoisy) {
-      auto adc_mon_noiseBurst_notNoisy = Monitored::Scalar<float>("adc_mon_noiseBurst_notNoisy", adc);
-      fill("MdtMonitor",adc_mon_noiseBurst_notNoisy);
+      vects.adc_mon_noiseBurst_notNoisy.push_back(adc);
     }
     if( adc > m_ADCCut) {
-      auto tdc_mon_noiseBurst_adcCut = Monitored::Scalar<float>("tdc_mon_noiseBurst_adcCut", tdc);
-      fill("MdtMonitor",tdc_mon_noiseBurst_adcCut);
+      vects.tdc_mon_noiseBurst_adcCut.push_back(tdc);
     }
   }
 
   if(adc > m_ADCCut){
-    auto tdc_mon_adcCut = Monitored::Scalar<float>("tdc_mon_adcCut", tdc);
-    fill("MdtMonitor",tdc_mon_adcCut);
+    vects.tdc_mon_adcCut.push_back(tdc);
   }
+}
 
-  return sc;
+void MdtRawDataMonAlg::fillMDTOverviewHistograms( const MDTOverviewHistogramStruct& vects ) const {
+  auto mdt_tube_x_barrel = Monitored::Collection("mdt_tube_x_barrel", vects.mdt_tube_x_barrel);
+  auto mdt_tube_y_barrel = Monitored::Collection("mdt_tube_y_barrel", vects.mdt_tube_y_barrel);
+  auto mdt_tube_z_barrel = Monitored::Collection("mdt_tube_z_barrel", vects.mdt_tube_z_barrel);
+  auto mdt_tube_perp_barrel = Monitored::Collection("mdt_tube_perp_barrel", vects.mdt_tube_perp_barrel);
+  fill("MdtMonitor",mdt_tube_z_barrel,mdt_tube_perp_barrel, mdt_tube_x_barrel,mdt_tube_y_barrel);
+
+  auto mdt_tube_x_ovl = Monitored::Collection("mdt_tube_x_ovl", vects.mdt_tube_x_ovl);
+  auto mdt_tube_y_ovl = Monitored::Collection("mdt_tube_y_ovl", vects.mdt_tube_y_ovl);
+  auto mdt_tube_z_ovl = Monitored::Collection("mdt_tube_z_ovl", vects.mdt_tube_z_ovl);
+  auto mdt_tube_perp_ovl = Monitored::Collection("mdt_tube_perp_ovl", vects.mdt_tube_perp_ovl);
+  fill("MdtMonitor",mdt_tube_z_ovl,mdt_tube_perp_ovl, mdt_tube_x_ovl,mdt_tube_y_ovl);
+
+  auto mdt_tube_x_endcap = Monitored::Collection("mdt_tube_x_endcap", vects.mdt_tube_x_endcap);
+  auto mdt_tube_y_endcap = Monitored::Collection("mdt_tube_y_endcap", vects.mdt_tube_y_endcap);
+  auto mdt_tube_z_endcap = Monitored::Collection("mdt_tube_z_endcap", vects.mdt_tube_z_endcap);
+  auto mdt_tube_perp_endcap = Monitored::Collection("mdt_tube_perp_endcap", vects.mdt_tube_perp_endcap);
+  fill("MdtMonitor",mdt_tube_z_endcap,mdt_tube_perp_endcap, mdt_tube_x_endcap,mdt_tube_y_endcap);
+
+  auto adc_mon_nosel = Monitored::Collection("adc_mon_nosel", vects.adc_mon_nosel);
+  auto tdc_mon_nosel = Monitored::Collection("tdc_mon_nosel", vects.tdc_mon_nosel);
+  auto noiseBurst = Monitored::Collection("noiseBurst", vects.noiseBurst);
+  fill("MdtMonitor", adc_mon_nosel, tdc_mon_nosel, noiseBurst);
+
+  auto tdc_mon = Monitored::Collection("tdc_mon", vects.tdc_mon);
+  auto adc_mon = Monitored::Collection("adc_mon", vects.adc_mon);
+  fill("MdtMonitor", tdc_mon, adc_mon);
+
+  //auto tdc_mon_noiseBurst = Monitored::Collection("tdc_mon_noiseBurst", vects.tdc_mon_noiseBurst);
+  //auto adc_mon_noiseBurst = Monitored::Collection("adc_mon_noiseBurst", vects.adc_mon_noiseBurst);
+  //fill("MdtMonitor", tdc_mon_noiseBurst, adc_mon_noiseBurst, noiseBurst);
+
+  auto adc_mon_noiseBurst_notNoisy = Monitored::Collection("adc_mon_noiseBurst_notNoisy", vects.adc_mon_noiseBurst_notNoisy);
+  fill("MdtMonitor",adc_mon_noiseBurst_notNoisy);
+  
+  auto tdc_mon_noiseBurst_adcCut = Monitored::Collection("tdc_mon_noiseBurst_adcCut", vects.tdc_mon_noiseBurst_adcCut);
+  fill("MdtMonitor",tdc_mon_noiseBurst_adcCut);
 
+  auto tdc_mon_adcCut = Monitored::Collection("tdc_mon_adcCut", vects.tdc_mon_adcCut);
+  fill("MdtMonitor",tdc_mon_adcCut);
 }
 
-StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData* mdtCollection, /*std::set<std::string>  chambers_from_tracks,*/ bool &isNoiseBurstCandidate, int lb, bool trig_barrel, bool trig_endcap ) const{
+StatusCode MdtRawDataMonAlg::fillMDTSummaryVects( const Muon::MdtPrepData* mdtCollection, /*std::set<std::string>  chambers_from_tracks,*/ bool &isNoiseBurstCandidate, bool trig_barrel, bool trig_endcap, MDTSummaryHistogramStruct vects[4][4][36] ) const{
 
   StatusCode sc = StatusCode::SUCCESS;
   Identifier digcoll_id = (mdtCollection)->identify();
@@ -743,6 +813,8 @@ StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData*
   //  int icrate = chamber->GetCrate();
   //
   int stationPhi = chamber->GetStationPhi();
+  auto& thisVects = vects[iregion][ilayer][stationPhi];
+  
   std::string chambername = chamber->getName();
   //  bool is_on_track = false;
   //  for(auto ch : chambers_from_tracks) {
@@ -755,11 +827,8 @@ StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData*
   float adc = mdtCollection->adc();
   if(chambername.substr(0,3) == "BMG") adc /= 4.;
   
-  auto lb_mon = Monitored::Scalar<int>("lb_mon", lb);
-  auto sector = Monitored::Scalar<int>("sector",stationPhi+iregion*16);
-  auto stationEta = Monitored::Scalar<int>("stEta_"+region[iregion]+"_"+layer[ilayer]+"_phi"+std::to_string(stationPhi+1), chamber->GetStationEta()); 
+  thisVects.sector.push_back(stationPhi+iregion*16);
 
-  fill("MdtMonitor",lb_mon, sector);
   //  mdtoccvslb_summaryPerSector->Fill(lumiblock,  stationPhi+iregion*16  );
   //MDTBA/Overview/Hits
   // iregion = BA/BC/EA/EC --> 4
@@ -767,44 +836,37 @@ StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData*
   // stationPhi --> 16  ====> 256
   //std::string mon="MDTHits_ADCCut_"+region[iregion]+"_Mon_"+layer[ilayer]+"_Phi_"+std::to_string(stationPhi+1);;
 
-  std::string MDT_regionGroup="MDT_regionGroup"+region[iregion] ;//MDTXX/Overview, 4 gruppi
-
   //  int mlayer_n = m_mdtIdHelper->multilayer(digcoll_id);
   int mlayer_n = m_muonIdHelperTool->mdtIdHelper().multilayer(digcoll_id);
 
   if(!isNoisy && adc > 0){
-    auto adc_mon =  Monitored::Scalar<float>("adc_mon", adc); 
-    auto tdc_mon =  Monitored::Scalar<float>("tdc_mon", tdc); 
-    fill(MDT_regionGroup, adc_mon, tdc_mon);
+    thisVects.adc_mon.push_back(adc); 
+    thisVects.tdc_mon.push_back(tdc); 
       if(isNoiseBurstCandidate) {
-	auto tdc_mon_nb2 =  Monitored::Scalar<float>("tdc_mon_nb2", tdc); 
-	auto adc_mon_nb2 =  Monitored::Scalar<float>("adc_mon_nb2", adc); 
-	fill(MDT_regionGroup, tdc_mon_nb2, adc_mon_nb2);
+	thisVects.tdc_mon_nb2.push_back(tdc); 
+	thisVects.adc_mon_nb2.push_back(adc); 
       }
   }
 
   if(!isNoisy){
     //    fill(MDT_regionGroup, adc_mon);
     if(isNoiseBurstCandidate){
-      auto tdc_mon_nb1 =  Monitored::Scalar<float>("tdc_mon_nb1", tdc); 
-      auto adc_mon_nb1 =  Monitored::Scalar<float>("adc_mon_nb1", adc); 
-      fill(MDT_regionGroup, tdc_mon_nb1, adc_mon_nb1);
+      thisVects.tdc_mon_nb1.push_back(tdc); 
+      thisVects.adc_mon_nb1.push_back(adc); 
     }
   }
   
   if( adc >m_ADCCut && !isNoisy) {
 
-    auto adc_mon_adccut =  Monitored::Scalar<float>("adc_mon_adccut", adc);
-    auto tdc_mon_adccut =  Monitored::Scalar<float>("tdc_mon_adccut", tdc); 
-    fill(MDT_regionGroup, stationEta, tdc_mon_adccut, adc_mon_adccut);
-
+    thisVects.adc_mon_adccut.push_back(adc);
+    thisVects.tdc_mon_adccut.push_back(tdc); 
+    thisVects.stationEta.push_back(chamber->GetStationEta()); 
     
     int binx=chamber->GetMDTHitsPerChamber_IMO_BinX();
     if(iregion<2) binx=binx-9;
     else binx=binx-7;
     int biny=chamber->GetMDTHitsPerChamber_IMO_BinY();
 
-    string group = "MdtMonitor";
     string varx = " ";
     string vary = " ";
     string varx_noise = " ";
@@ -821,47 +883,33 @@ StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData*
       vary_noise="y_mon_endcap_noise";
     }
 
-    auto x_mon =  Monitored::Scalar<int>(varx, binx);
-    auto y_mon =  Monitored::Scalar<int>(vary, biny-1);
-    fill(group,x_mon,y_mon);
+    thisVects.x_mon.push_back(binx);
+    thisVects.y_mon.push_back(biny-1);
     if(isNoiseBurstCandidate){
-      auto x_mon_noise =  Monitored::Scalar<int>(varx_noise, binx);
-      auto y_mon_noise =  Monitored::Scalar<int>(vary_noise, biny-1);
-      fill(group,x_mon_noise,y_mon_noise);
-      auto tdc_mon_nb3 =  Monitored::Scalar<float>("tdc_mon_nb3", tdc); 
-      fill(MDT_regionGroup, tdc_mon_nb3);
+      thisVects.x_mon_noise.push_back(binx);
+      thisVects.y_mon_noise.push_back(biny-1);
+      thisVects.tdc_mon_nb3.push_back(tdc); 
     }
-    
-
-    varx = "x_mon_"+region[iregion]+"_"+layer[ilayer];
-    vary = "y_mon_"+region[iregion]+"_"+layer[ilayer];
 
-    auto x_bin_perML =   Monitored::Scalar<int>(varx, chamber->GetMDTHitsPerML_Binx()-1);//get the right bin!!!! 
+    thisVects.x_bin_perML.push_back(chamber->GetMDTHitsPerML_Binx()-1);//get the right bin!!!! 
     int biny_ml=0;
     if(mlayer_n==1) biny_ml=chamber->GetMDTHitsPerML_m1_Biny();
     else if(mlayer_n==2) biny_ml=chamber->GetMDTHitsPerML_m2_Biny();
-    auto y_bin_perML =   Monitored::Scalar<int>(vary, biny_ml-1);
-    //    fill(group,x_bin_perML,y_bin_perML);
-    fill(MDT_regionGroup,x_bin_perML,y_bin_perML);
+    thisVects.y_bin_perML.push_back(biny_ml-1);
 
     if(layer[ilayer]!="Extra"){
-      varx="x_mon_"+layer[ilayer];
-      vary="y_mon_"+layer[ilayer];
-      auto bin_byLayer_x = Monitored::Scalar<int>(varx,chamber->GetMDTHitsPerML_byLayer_BinX()-1); 
-      auto bin_byLayer_y = Monitored::Scalar<int>(vary,chamber->GetMDTHitsPerML_byLayer_BinY(mlayer_n)-1); 
+      thisVects.bin_byLayer_x.push_back(chamber->GetMDTHitsPerML_byLayer_BinX()-1); 
+      thisVects.bin_byLayer_y.push_back(chamber->GetMDTHitsPerML_byLayer_BinY(mlayer_n)-1); 
       
-      fill("MdtMonitor",bin_byLayer_x,bin_byLayer_y);
       }
     //    if( HasTrigBARREL() ) m_overalltdccutPRLumi_RPCtrig[iregion]->Fill(tdc);
     //    if( HasTrigENDCAP() ) m_overalltdccutPRLumi_TGCtrig[iregion]->Fill(tdc);
 
     if( trig_barrel ) {
-      auto tdc_mon_rpc =  Monitored::Scalar<float>("tdc_mon_rpc", tdc);
-      fill(MDT_regionGroup,tdc_mon_rpc);
+      thisVects.tdc_mon_rpc.push_back(tdc);
     }
     if( trig_endcap ) {
-      auto tdc_mon_tgc =  Monitored::Scalar<float>("tdc_mon_tdc", tdc);
-      fill(MDT_regionGroup,tdc_mon_tgc);
+      thisVects.tdc_mon_tgc.push_back(tdc);
     }
 
     //DEV to DO
@@ -890,6 +938,111 @@ StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const Muon::MdtPrepData*
   return sc;
 }
 
+StatusCode MdtRawDataMonAlg::fillMDTSummaryHistograms( const MDTSummaryHistogramStruct vects[4][4][36], int lb ) const{
+
+  StatusCode sc = StatusCode::SUCCESS;
+
+  std::string region[4]={"BA","BC","EA","EC"};
+  std::string layer[4]={"Inner","Middle","Outer","Extra"};
+  //  std::string slayer[4]={"inner","middle","outer","extra"};
+
+  auto lb_mon = Monitored::Scalar<int>("lb_mon", lb);
+
+  for (int iregion = 0; iregion < 4; ++iregion) {
+    std::string MDT_regionGroup="MDT_regionGroup"+region[iregion] ;//MDTXX/Overview, 4 gruppi
+    for (int ilayer = 0; ilayer < 4; ++ilayer) {
+      for (int stationPhi = 0; stationPhi < 36; ++stationPhi) {
+	auto& thisVects = vects[iregion][ilayer][stationPhi];
+	auto sector = Monitored::Collection("sector",thisVects.sector);
+	auto stationEta = Monitored::Collection("stEta_"+region[iregion]+"_"+layer[ilayer]+"_phi"+std::to_string(stationPhi+1), thisVects.stationEta); 
+
+  const auto& tvec = std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>>{lb_mon, sector};
+	fill("MdtMonitor", lb_mon, sector);
+
+	auto adc_mon =  Monitored::Collection("adc_mon", thisVects.adc_mon); 
+	auto tdc_mon =  Monitored::Collection("tdc_mon", thisVects.tdc_mon); 
+	fill(MDT_regionGroup, adc_mon, tdc_mon);
+
+	auto tdc_mon_nb2 =  Monitored::Collection("tdc_mon_nb2", thisVects.tdc_mon_nb2); 
+	auto adc_mon_nb2 =  Monitored::Collection("adc_mon_nb2", thisVects.adc_mon_nb2); 
+	fill(MDT_regionGroup, tdc_mon_nb2, adc_mon_nb2);
+
+	auto tdc_mon_nb1 =  Monitored::Collection("tdc_mon_nb1", thisVects.tdc_mon_nb1); 
+	auto adc_mon_nb1 =  Monitored::Collection("adc_mon_nb1", thisVects.adc_mon_nb1); 
+	fill(MDT_regionGroup, tdc_mon_nb1, adc_mon_nb1);
+
+	auto adc_mon_adccut =  Monitored::Collection("adc_mon_adccut", thisVects.adc_mon_adccut);
+	auto tdc_mon_adccut =  Monitored::Collection("tdc_mon_adccut", thisVects.tdc_mon_adccut);
+	fill(MDT_regionGroup, stationEta, tdc_mon_adccut, adc_mon_adccut);
+    
+	string varx = iregion < 2 ? "x_mon_barrel" : "x_mon_endcap";
+	string vary = iregion < 2 ? "y_mon_barrel" : "y_mon_endcap";
+	string varx_noise = iregion < 2 ? "x_mon_barrel_noise" : "x_mon_endcap_noise";
+	string vary_noise = iregion < 2 ? "y_mon_barrel_noise" : "y_mon_endcap_noise";
+	
+	auto x_mon =  Monitored::Collection(varx, thisVects.x_mon);
+	auto y_mon =  Monitored::Collection(vary, thisVects.y_mon);
+	fill("MdtMonitor",x_mon,y_mon);
+	auto x_mon_noise =  Monitored::Collection(varx_noise, thisVects.x_mon_noise);
+	auto y_mon_noise =  Monitored::Collection(vary_noise, thisVects.y_mon_noise);
+	fill("MdtMonitor",x_mon_noise,y_mon_noise);
+	auto tdc_mon_nb3 =  Monitored::Collection("tdc_mon_nb3", thisVects.tdc_mon_nb3); 
+	fill(MDT_regionGroup, tdc_mon_nb3);
+
+	varx = "x_mon_"+region[iregion]+"_"+layer[ilayer];
+	vary = "y_mon_"+region[iregion]+"_"+layer[ilayer];
+	
+	auto x_bin_perML =   Monitored::Collection(varx, thisVects.x_bin_perML);//get the right bin!!!! 
+	auto y_bin_perML =   Monitored::Collection(vary, thisVects.y_bin_perML);
+	fill(MDT_regionGroup,x_bin_perML,y_bin_perML);
+
+	if(layer[ilayer]!="Extra"){
+	  varx="x_mon_"+layer[ilayer];
+	  vary="y_mon_"+layer[ilayer];
+	  auto bin_byLayer_x = Monitored::Collection(varx, thisVects.bin_byLayer_x); 
+	  auto bin_byLayer_y = Monitored::Collection(vary, thisVects.bin_byLayer_y); 
+	  
+	  fill("MdtMonitor",bin_byLayer_x,bin_byLayer_y);
+	}
+
+  if (thisVects.tdc_mon_rpc.size() > 0) {
+	  auto tdc_mon_rpc =  Monitored::Collection("tdc_mon_rpc", thisVects.tdc_mon_rpc);
+	  fill(MDT_regionGroup,tdc_mon_rpc);
+  }
+
+  if (thisVects.tdc_mon_tgc.size() > 0) {
+	  auto tdc_mon_tgc =  Monitored::Collection("tdc_mon_tgc", thisVects.tdc_mon_tgc);
+	  fill(MDT_regionGroup,tdc_mon_tgc);
+  }
+
+    //DEV to DO
+    // Fill occupancy vs. Lumiblock
+    //    if(ilayer != 3) m_mdtoccvslb[iregion][ilayer]->Fill(m_lumiblock,get_bin_for_LB_hist(iregion,ilayer,stationPhi,stationEta,isBIM));
+    //    else m_mdtoccvslb[iregion][2]->Fill(m_lumiblock,get_bin_for_LB_hist(iregion,ilayer,stationPhi,stationEta,isBIM)); // Put extras in with outer
+
+    //correct readout crate info for BEE,BIS7/8
+    /*
+    int crate_region = iregion;
+    if(chambername.substr(0,3)=="BEE" || (chambername.substr(0,3) == "BIS" && (stationEta == 7 || stationEta == 8) )){
+      if(iregion==0) crate_region=2;
+      if(iregion==1) crate_region=3;
+    }
+    */
+    //DEV to do
+    //use stationPhi+1 because that's the actual phi, not phi indexed from zero.
+    //    m_mdtoccvslb_by_crate[crate_region][icrate-1]->Fill(m_lumiblock,get_bin_for_LB_crate_hist(crate_region,icrate,stationPhi+1,stationEta,chambername));
+
+    //    if (is_on_track)    {
+      //      m_mdtoccvslb_ontrack_by_crate[crate_region][icrate-1]->Fill(m_lumiblock,get_bin_for_LB_crate_hist(crate_region,icrate,stationPhi+1,stationEta,chambername));
+    //    }
+
+      }
+    }
+  }
+
+  return sc;
+}
+
 
 StatusCode MdtRawDataMonAlg::fillMDTHistograms( const Muon::MdtPrepData* mdtCollection ) const{
   //fill chamber by chamber histos
@@ -939,40 +1092,19 @@ StatusCode MdtRawDataMonAlg::fillMDTHistograms( const Muon::MdtPrepData* mdtColl
   if(iregion==1) monPerCh+="BC";
   if(iregion==2) monPerCh+="EA";
   if(iregion==3) monPerCh+="EC";
-  
-  auto tdc_perch = Monitored::Scalar<float>("tdc_perch_"+hardware_name,tdc);
-  auto adc_perch = Monitored::Scalar<float>("adc_perch_"+hardware_name, adc);
-  fill(monPerCh, tdc_perch, adc_perch );
-  //  fill(monPerCh, tdc_perch);
-  
-  int mdtMultLayer = m_muonIdHelperTool->mdtIdHelper().multilayer(digcoll_id);
 
-  if (  adc >m_ADCCut && !isNoisy ) {
-    if (mdtMultLayer==1) {
-      auto tdc_perch_ml1 = Monitored::Scalar<float>("tdc_perch_ml1_adccut_"+hardware_name,tdc);
-      fill(monPerCh, tdc_perch_ml1);
-    }
-    if (mdtMultLayer==2) {
-      auto tdc_perch_ml2 = Monitored::Scalar<float>("tdc_perch_ml2_adccut_"+hardware_name,tdc);
-      fill(monPerCh, tdc_perch_ml2);
-    }
-    auto layer_perch = Monitored::Scalar<int>("layer_perch_"+hardware_name, mdtlayer);
-    fill(monPerCh, layer_perch );
-  }
-  
-
-  if(adc>0) {
-    //    fill(monPerCh,  Monitored::Scalar<float>("tdc_perch2d", tdc), Monitored::Scalar<float>("adc_perch2d", adc) );
-  }
+  int mdtMultLayer = m_muonIdHelperTool->mdtIdHelper().multilayer(digcoll_id);
 
-  //  int mezz = mezzmdt(digcoll_id);
-  if (  adc >m_ADCCut  )     {
-    auto tube_perch = Monitored::Scalar<int>("tube_perch_"+hardware_name, mdttube);
-    fill(monPerCh, tube_perch );
-    //    fill(monPerCh, Monitored::Scalar<int>("mezz_perch",mezz) );
-  }
+  auto tdc_perch = Monitored::Scalar<float>("tdc_perch_"+hardware_name,tdc);
+  auto adc_perch = Monitored::Scalar<float>("adc_perch_"+hardware_name, adc);
+  auto layer_perch = Monitored::Scalar<int>("layer_perch_"+hardware_name, mdtlayer);
+  auto tube_perch = Monitored::Scalar<int>("tube_perch_"+hardware_name, mdttube);
+  auto ml1_adccut = Monitored::Scalar<int>("ml1_adccut", (int) (adc >m_ADCCut && !isNoisy && mdtMultLayer==1));
+  auto ml2_adccut = Monitored::Scalar<int>("ml2_adccut", (int) (adc >m_ADCCut && !isNoisy && mdtMultLayer==2));
+  auto adccut_nonoise = Monitored::Scalar<int>("adccut_nonoise", (int) (adc >m_ADCCut && !isNoisy));
+  auto adccut = Monitored::Scalar<int>("adccut", (int) (adc >m_ADCCut));
 
-  //  if (chamber->mdtmezz) { if( adc > m_ADCCut) chamber->mdtmezz->Fill( mezzmdt( digcoll_id ) ); }
+  fill(monPerCh, tdc_perch, adc_perch, layer_perch, tube_perch, ml1_adccut, ml2_adccut, adccut_nonoise, adccut);
 
   return sc;
 }
@@ -985,11 +1117,7 @@ StatusCode MdtRawDataMonAlg::fillMDTHistograms( const Muon::MdtPrepData* mdtColl
 
    StatusCode MdtRawDataMonAlg::procHistograms(bool isEndOfEventsBlock, bool isEndOfLumiBlock, bool isEndOfRun ) {
 
-<<<<<<< HEAD
   if(endOfRunFlag()) {
-=======
-  int mlayer_n = m_muonIdHelperTool->mdtIdHelper().multilayer(digcoll_id);
->>>>>>> upstream/master
 
     ATH_MSG_DEBUG("********Reached Last Event in MdtRawDataValAlg !!!" );   
     ATH_MSG_DEBUG("MdtRawDataValAlg finalize()" );
@@ -1121,13 +1249,8 @@ StatusCode MdtRawDataMonAlg::handleEvent_effCalc(const Trk::SegmentCollection* s
               m_mdthitsperchamber_onSegm_InnerMiddleOuterLumi[ibarrel_endcap]->SetEntries(m_mdthitsperchamber_onSegm_InnerMiddleOuterLumi[ibarrel_endcap]->GetEntries()+1);
             }
           }
-<<<<<<< HEAD
           int mdtMultLayer = m_mdtIdHelper->multilayer(tmpid);
           
-=======
-          int mdtMultLayer = m_muonIdHelperTool->mdtIdHelper().multilayer(tmpid);
-          //chamber->mdtadc_onSegm->Fill(mrot->prepRawData()->adc());
->>>>>>> upstream/master
   	  if(chamber->mdtadc_onSegm_ML1 && mdtMultLayer == 1){
         	  chamber->mdtadc_onSegm_ML1->Fill(adc); 
 	  }
diff --git a/Reconstruction/Jet/JetRec/python/JetToolSupport.py b/Reconstruction/Jet/JetRec/python/JetToolSupport.py
index 06638906e540c2f27d5d5f27faf96ec8ac362754..45b155247ad0d03c7196c51472f77033b5e04f9e 100644
--- a/Reconstruction/Jet/JetRec/python/JetToolSupport.py
+++ b/Reconstruction/Jet/JetRec/python/JetToolSupport.py
@@ -50,7 +50,6 @@ from GaudiKernel.Constants import (VERBOSE,
 class JetToolManager:
   prefix = "JetToolManager: "
   debug = 0
-  usePublic = True
   m_jetBuilder = None
   jetBuilderWithArea = None
   jetBuilderWithoutArea = None
@@ -94,10 +93,14 @@ class JetToolManager:
       from AthenaCommon.AppMgr import ToolSvc
 
       # Hardcoded Public tools to support Public ToolHandles in other packages
-      if self.usePublic:
-        ToolSvc += mytool
-        mytool.lock()
-
+      publictools =( [
+        "triggerEnergyDensity",
+        "triggerPseudoJetGet",
+        #"TriggerJetGroomer",
+])
+      if any(t.lower() in  myname.lower() for t in publictools):
+          ToolSvc += mytool
+          mytool.lock()
       setattr(self, myname, mytool)
       return mytool
 
diff --git a/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py b/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
index 311439bd5cdb53644a422eb9ef9b0b2302f6debc..5eec0142a406c156541123bd87c100500ecc0e35 100644
--- a/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
+++ b/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
@@ -13,7 +13,6 @@
 from JetRec.JetRecStandard import jtm,jetlog
 myname = "JetRec_jobOptions.py: "
 jetlog.info( myname + "Begin." )
-jtm.usePublic = False
 from JetRec.JetRecFlags import jetFlags, JetContentDetail
 # jetFlags.separateJetAlgs.set_Value(True)
 # jetFlags.timeJetToolRunner.set_Value(2)
diff --git a/Reconstruction/tauRecTools/Root/CombinedP4FromRecoTaus.cxx b/Reconstruction/tauRecTools/Root/CombinedP4FromRecoTaus.cxx
index 57ac91e2cdc71f695451f7d1dd97e33f2b899d46..9eacf930559371ed2e65d827c485f08769f41367 100644
--- a/Reconstruction/tauRecTools/Root/CombinedP4FromRecoTaus.cxx
+++ b/Reconstruction/tauRecTools/Root/CombinedP4FromRecoTaus.cxx
@@ -1,16 +1,13 @@
 /*
-  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 // Framework include(s)
 #include "PathResolver/PathResolver.h"
 
-//#include "TauAnalysisTools/HelperFunctions.h"
-
 // local include(s)
 #include "tauRecTools/CombinedP4FromRecoTaus.h"
 
-
 //Root includes(s)
 #include "TH1F.h"
 #include "TH1.h"
diff --git a/Reconstruction/tauRecTools/Root/MvaTESEvaluator.cxx b/Reconstruction/tauRecTools/Root/MvaTESEvaluator.cxx
index fa5bd6011c3ae6a788680870e4fde310f4cb122c..72fb6214967463aea254e41a8e8c8f5c202f192e 100644
--- a/Reconstruction/tauRecTools/Root/MvaTESEvaluator.cxx
+++ b/Reconstruction/tauRecTools/Root/MvaTESEvaluator.cxx
@@ -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
 */
 
 // local include(s)
@@ -53,7 +53,7 @@ MvaTESEvaluator::~MvaTESEvaluator()
 StatusCode MvaTESEvaluator::initialize(){
   
   // Declare input variables to the reader
-  if(!inTrigger()) {
+  if(!m_in_trigger) {
     m_availableVars.insert( std::make_pair("TauJetsAuxDyn.mu", &m_mu) );
     m_availableVars.insert( std::make_pair("TauJetsAuxDyn.nVtxPU", &m_nVtxPU) );
     
@@ -130,7 +130,7 @@ StatusCode MvaTESEvaluator::execute(xAOD::TauJet& xTau){
   xTau.detail(xAOD::TauJetParameters::ClustersMeanSecondLambda, m_second_lambda);
   xTau.detail(xAOD::TauJetParameters::ClustersMeanPresamplerFrac, m_presampler_frac);
 
-  if(!inTrigger()) {
+  if(!m_in_trigger) {
 
     // Retrieve pantau and LC-precalib TES
     m_etaConstituent = xTau.etaPanTauCellBased();
diff --git a/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx b/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
index d56e4e47f43cf542c76d6fdbedfe2530592dc401..cf8f0d81ae32ca1414cf702c1df952e3a990a148 100644
--- a/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
@@ -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
 */
 
 // local include(s)
@@ -167,7 +167,7 @@ StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) {
   acc_LeadClusterFrac(xTau) = (float) lead_cluster_frac;
   acc_UpsilonCluster(xTau) = (float) upsilon_cluster;
 
-  if(inTrigger()) {
+  if(m_in_trigger) {
     return StatusCode::SUCCESS;
   }
 
diff --git a/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx b/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
index a9c1e4f0ecd71eff1ff5dd6e68edc60ba99a54eb..945cb86cc02d69600ea95d91e7de702844d23160 100644
--- a/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
+++ b/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //tau
@@ -216,10 +216,6 @@ StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau)
     double slopeNPV = m_slopeNPVHist[prongBin]->GetBinContent(etaBin + 1);
     double offset = slopeNPV * (nVertex - m_averageNPV);
 
-    // FF: March,2014
-    // no offset correction for trigger        
-    //if (inTrigger) offset = 0.;
-
     // energy response parameterized as a function of pileup-corrected E_LC
     double energyLC = pTau.p4(xAOD::TauJetParameters::DetectorAxis).E() / GeV;            //was sumClusterVector.e() / GeV;
     if(m_doPtResponse) energyLC = pTau.ptDetectorAxis() / GeV;
@@ -303,7 +299,7 @@ StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau)
     pTau.setP4(xAOD::TauJetParameters::TauEtaCalib, pTau.pt(), pTau.eta(), pTau.phi(), pTau.m());
   }
 
-  if (m_isCaloOnly == true && tauEventData()->inTrigger() == true){
+  if (m_isCaloOnly == true && m_in_trigger == true){
 
     pTau.setP4(xAOD::TauJetParameters::TrigCaloOnly, pTau.pt(), pTau.eta(), pTau.phi(), pTau.m());
       
diff --git a/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx b/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
index 925f70aede4dff4e3b335e3440a0cad62aa4b3ed..605ab3916567a46415363c732db2d590fd9b60e5 100644
--- a/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
+++ b/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //-----------------------------------------------------------------------------
@@ -175,7 +175,7 @@ StatusCode TauCommonCalcVars::execute(xAOD::TauJet& pTau) {
 
         for (const xAOD::TauTrack* tauTrk : tauTracks){
 
-          double deltaR = Tau1P3PKineUtils::deltaR( (inTrigger() ? pTau.eta() : pTau.etaIntermediateAxis()), pTau.phi(), tauTrk->eta(), tauTrk->phi() );     
+          double deltaR = Tau1P3PKineUtils::deltaR( ( m_in_trigger ? pTau.eta() : pTau.etaIntermediateAxis()), pTau.phi(), tauTrk->eta(), tauTrk->phi() );     
 	
 	  ptSum += tauTrk->pt();
 	  sumWeightedDR += deltaR * (tauTrk->pt());
diff --git a/Reconstruction/tauRecTools/Root/TauGenericPi0Cone.cxx b/Reconstruction/tauRecTools/Root/TauGenericPi0Cone.cxx
index 2614d156c0ad1fe5bea897f0d4cde81a3278a08b..2d8710fdccb6a534d58ed611ad862c371a99a316 100644
--- a/Reconstruction/tauRecTools/Root/TauGenericPi0Cone.cxx
+++ b/Reconstruction/tauRecTools/Root/TauGenericPi0Cone.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //-----------------------------------------------------------------------------
@@ -11,17 +11,8 @@
 //
 //-----------------------------------------------------------------------------
 
-//#include <GaudiKernel/IToolSvc.h>
-//#include <GaudiKernel/ListItem.h>
-
 #include "FourMomUtils/P4Helpers.h"
-//#include "FourMom/P4EEtaPhiM.h"
-//#include "Particle/TrackParticle.h"
-
 #include "tauRecTools/TauEventData.h"
-//#include "tauEvent/TauCommonDetails.h"
-//#include "tauEvent/TauJetParameters.h"
-
 #include "tauRecTools/TauGenericPi0Cone.h"
 #include "tauRecTools/TauTrackFilterUtils.h"
 
@@ -34,7 +25,6 @@
 
 TauGenericPi0Cone::TauGenericPi0Cone(const std::string &name) :
 TauRecToolBase(name) {
-    declareProperty("ConfigPath", m_configPath);
 }
 
 
@@ -51,8 +41,6 @@ TauGenericPi0Cone::~TauGenericPi0Cone() {
 //-----------------------------------------------------------------------------
 
 StatusCode TauGenericPi0Cone::initialize() {
-    ATH_MSG_VERBOSE("TauGenericPi0Cone Initialising");
-
     return StatusCode::SUCCESS;
 }
 
@@ -62,8 +50,6 @@ StatusCode TauGenericPi0Cone::initialize() {
 //-----------------------------------------------------------------------------
 
 StatusCode TauGenericPi0Cone::finalize() {
-    ATH_MSG_VERBOSE("TauGenericPi0Cone Finalizing");
-
     return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx b/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
index 0d82079a64551e807fe48438fff40b3dd9c738e0..32ae5ee855b387129da7e9b07d1197e74e4da841 100644
--- a/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
@@ -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
 */
 
 /**
@@ -29,7 +29,7 @@ StatusCode TauIDVarCalculator::eventInitialize()
   SG::ReadHandle<xAOD::EventInfo> xEventInfo(m_eventInfoKey);
   m_mu = xEventInfo->averageInteractionsPerCrossing();
 
-  if(!inTrigger()){
+  if(!m_in_trigger){
 
     m_nVtx = int(LOW_NUMBER);    
     // Get the primary vertex container from StoreGate
@@ -73,12 +73,12 @@ StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau)
   SG::AuxElement::Accessor<float> acc_mu("MU");
   acc_mu(tau) = m_mu;
 
-  if(!inTrigger()){
+  if(!m_in_trigger){
     SG::AuxElement::Accessor<int> acc_nVertex("NUMVERTICES");
     acc_nVertex(tau) = m_nVtx >= 0 ? m_nVtx : 0;
   }
   
-  if(inTrigger()){
+  if(m_in_trigger){
     //for old trigger BDT:
     SG::AuxElement::Accessor<int> acc_numWideTrk("NUMWIDETRACK");
     //the ID should train on nIsolatedTracks which is static!
@@ -92,7 +92,7 @@ StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau)
   acc_absipSigLeadTrk(tau) = fabs(ipSigLeadTrk);
   
   //don't calculate EleBDT variables if run from TrigTauDiscriminant:
-  if(inTrigger()) return StatusCode::SUCCESS;
+  if(m_in_trigger) return StatusCode::SUCCESS;
   
   //everything below is just for EleBDT!
   SG::AuxElement::Accessor<float> acc_absEtaLead("ABS_ETA_LEAD_TRACK"); 
diff --git a/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx b/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx
index 30fbd23945a036fcb7923484bcb4780275376b7e..a76d335bf651107c991e601d3c3a161ff85c925e 100644
--- a/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "tauRecTools/TauJetBDTEvaluator.h"
@@ -54,7 +54,7 @@ StatusCode TauJetBDTEvaluator::execute(xAOD::TauJet& xTau){
   if(nTracks<m_minNTracks) return StatusCode::SUCCESS;
   if(nTracks>m_maxNTracks) return StatusCode::SUCCESS;
 
-  if( !inTrigger() ){
+  if( !m_in_trigger ){
     float absTrackEta = acc_absTrackEta(xTau);
     if(m_minAbsTrackEta>=0. && absTrackEta < m_minAbsTrackEta) 
       return StatusCode::SUCCESS;
diff --git a/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx b/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx
index ec648fd2743f9a96f0e6098c39d02a92d810fc83..6d104e69951b70958e0e423fa98de0fa3803e14f 100644
--- a/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx
+++ b/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //-----------------------------------------------------------------------------
@@ -11,8 +11,6 @@
 //-----------------------------------------------------------------------------
 
 #include "tauRecTools/TauPi0Selector.h"
-//#include "FourMomUtils/P4Helpers.h"
-//#include "CaloUtils/CaloVertexedCluster.h"
 
 using std::string;
 
diff --git a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
index 0d620f4b9433be815b4951edd8e1ae7791fac932..32757cb46ae98dacee9be5450068b8cfb4d550ab 100644
--- a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
+++ b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //********************************************************************//
@@ -337,9 +337,7 @@ StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) {
 	float sumPtTrk(0.0);
 
 	// for tau trigger: JVF and sumPtTrack are not available
-	bool inTrigger = tauEventData()->inTrigger();
-
-	if (!inTrigger)
+	if (!m_in_trigger)
 	{
 		std::vector<float> sumPtTrkvec;
 		std::vector<float> jvfvec;
diff --git a/Reconstruction/tauRecTools/Root/TauTrackFilter.cxx b/Reconstruction/tauRecTools/Root/TauTrackFilter.cxx
index 05267409af047d11297ea24d893e509fc22351cd..405eaa623f3539f2bf0c48dd0823f0da5ddfd887 100644
--- a/Reconstruction/tauRecTools/Root/TauTrackFilter.cxx
+++ b/Reconstruction/tauRecTools/Root/TauTrackFilter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //-----------------------------------------------------------------------------
@@ -11,14 +11,9 @@
 //
 //-----------------------------------------------------------------------------
 
-//#include <GaudiKernel/IToolSvc.h>
-//#include <GaudiKernel/ListItem.h>
-
 #include "FourMomUtils/P4Helpers.h"
-//#include "FourMom/P4EEtaPhiM.h"
 
 #include "tauRecTools/TauEventData.h"
-
 #include "tauRecTools/TauTrackFilter.h"
 #include "tauRecTools/TauTrackFilterUtils.h"
 
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx b/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
index f46067c98ba94db88f203ccb69c352a193ceaa9f..4f9393eb7e4551a2fb5129084cdf9a2bba09bc38 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAOD_ANALYSIS
@@ -49,11 +49,6 @@ JetSeedBuilder::JetSeedBuilder(const std::string& name) :
 JetSeedBuilder::~JetSeedBuilder() {
 }
 
-
-void JetSeedBuilder::print() const {
-  
-}
-
 //-------------------------------------------------------------------------
 // initialize
 //-------------------------------------------------------------------------
@@ -86,16 +81,7 @@ StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) {
 
 	ATH_MSG_DEBUG("Starting execute");
 
-	bool inTrigger = tauEventData()->inTrigger();
-
-	if(inTrigger)
-		ATH_MSG_DEBUG("inTrigger read properly");
-
-	const xAOD::JetContainer *pJetColl = 0;
-
-	ATH_MSG_DEBUG("Pulling out the seed");
-
-	const xAOD::Jet* pJetSeed = 0;
+	const xAOD::Jet* pJetSeed = nullptr;
 	if (pTau.jetLink().isValid()) pJetSeed = * pTau.jetLink();
 	if (!pJetSeed) {
 		ATH_MSG_DEBUG("seed is not a jet -> tau will not be reconstructed");
@@ -121,17 +107,11 @@ StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) {
 	// // track seeded tau
 	// pTau.setAuthor(TauJetParameters::tau1P3P);
 	//***********************************************************************
-
-	//
 	// ATTENTION: direction will be overwritten later by TauAxis and TauEnergyCalibration
 	//
-	if (inTrigger && pJetSeed->e() < 0) {
+	if (m_in_trigger && pJetSeed->e() < 0) {
 		// SL/SX trigger mode with negative jet_seed - do not set TauJet eta and phi in JetSeedBuilder
 		ATH_MSG_DEBUG("TauJet eta/phi will be set in Level2 Trigger for negative energy jet");
-
-		// pTau.setDetail(xAOD::TauJetParameters::seedCalo_eta , static_cast<float>( pTau.eta() ) );
-		// pTau.setDetail(xAOD::TauJetParameters::seedCalo_phi , static_cast<float>( pTau.phi() ) );
-
 		pTau.setP4(pJetSeed->pt(),pTau.eta(),pTau.phi(),0.0);
 
 	} else {
@@ -142,8 +122,6 @@ StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) {
 			// sigstateH.controlObject(pJetSeed);
 		}
 
-		// pTau.setDetail(xAOD::TauJetParameters::seedCalo_eta , static_cast<float>( pJetSeed->eta() ) );
-		// pTau.setDetail(xAOD::TauJetParameters::seedCalo_phi , static_cast<float>( pJetSeed->phi() ) );
 		if ( pJetSeed->pt() > 1e-7)
 			pTau.setP4(static_cast<float>( pJetSeed->pt() ) ,static_cast<float>( pJetSeed->eta() ) ,static_cast<float>( pJetSeed->phi() ) ,0.0 );
 		else
@@ -153,18 +131,6 @@ StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) {
 		pTau.setP4( xAOD::TauJetParameters::JetSeed, pJetSeed->pt(), pJetSeed->eta(), pJetSeed->phi(), pJetSeed->m() );
 	}
 
-	// set now the link to the jet seed
-	// if not already set
-	if(!pTau.jetLink().isValid() || (*pTau.jetLink())!=pJetSeed ) pTau.setJet(pJetColl, pJetSeed);
-
-	if ( pTau.jetLink().isValid() ) {
-		ATH_MSG_DEBUG("seed associated with tau is Jet with"
-				<< " pt=" << (*pTau.jetLink())->pt()
-				<< " eta=" << (*pTau.jetLink())->eta()
-				<< " phi=" << (*pTau.jetLink())->phi()
-		);
-	}
-
 	return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.h b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
index 582e87960b398132e77e886688d3b317b4bf799a..254cbeb7d7366a49e4b41af159b0fd0fda4df149 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.h
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.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 TAUREC_JETSEEDBUILDER_H
@@ -34,17 +34,16 @@ public:
     //-------------------------------------------------------------
     virtual ~JetSeedBuilder();
 
-    virtual StatusCode initialize();
+    virtual StatusCode initialize() override;
 
-    virtual StatusCode finalize();
+    virtual StatusCode finalize() override;
 
-    virtual void print() const ;
 
-    virtual StatusCode execute(xAOD::TauJet& pTau);
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
     
-    virtual StatusCode eventFinalize();
+    virtual StatusCode eventFinalize() override;
 
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
 
 private:
     std::string m_jetCollectionName;
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
index 44e59e486ad4dfad3e4292793f9c13e832c59ed3..076ab62d2b83c4d20758186dcf28614f60db1d8e 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAOD_ANALYSIS
@@ -29,7 +29,6 @@ m_doCellCorrection(false),
 m_doAxisCorrection(true)
 {
     declareProperty("ClusterCone", m_clusterCone);
-    declareProperty("tauContainerKey", m_tauContainerKey = "TauJets");
     declareProperty("CellCorrection", m_doCellCorrection);
     declareProperty("AxisCorrection", m_doAxisCorrection = true);
 }
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.h b/Reconstruction/tauRecTools/src/TauAxisSetter.h
index 1d7c930b92e984377eba611c52431122167f2df7..e450cdd7e3e46ff6bfacae24a85f77e65fbe6cd9 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.h
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.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 TAUREC_TAUAXISSETTER_H
@@ -28,19 +28,16 @@ public:
     ASG_TOOL_CLASS2(TauAxisSetter, TauRecToolBase, ITauToolBase);
     ~TauAxisSetter();
 
-    virtual StatusCode initialize();
-    virtual StatusCode eventInitialize();
-    virtual StatusCode finalize();
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
-    virtual StatusCode execute(xAOD::TauJet& pTau);
+    virtual StatusCode initialize() override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
 
-    virtual void print() const { }
 
 
 
 private:
-    std::string m_tauContainerKey;
-    
     double m_clusterCone;
     /** 
      * enable cell origin correction 
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.cxx b/Reconstruction/tauRecTools/src/TauCellVariables.cxx
index 7ecf764c2a3143d563b70c95f4adfa40ae6013bb..8aab0ede2bdf11ce5f55c62a9c712b6484b8b813 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.cxx
@@ -42,20 +42,8 @@ Jan 2012   - (FF) add cellEnergyRing variables
 #include <vector>
 #include <sstream>
 
-//#include "GaudiKernel/Property.h"
 #include "GaudiKernel/SystemOfUnits.h"
-
-//#include "AtlasDetDescr/AtlasDetectorID.h"
-//#include "CaloUtils/CaloCellList.h"
-//#include "CaloEvent/CaloCluster.h"
-//#include "CaloEvent/CaloCell.h"
-//#include "CaloEvent/CaloSamplingHelper.h"
 #include "CaloUtils/CaloVertexedCell.h"
-//#include "CaloIdentifier/CaloID.h"
-//#include "CaloIdentifier/CaloCell_ID.h"
-//#include "CaloGeoHelpers/CaloSampling.h"
-//#include "Particle/TrackParticle.h"
-//#include "FourMom/P4EEtaPhiM.h"
 
 #include "xAODTau/TauJet.h"
 #include "xAODJet/Jet.h"
@@ -71,11 +59,8 @@ m_stripEthr(0.2 * GeV),
 m_EMSumThr(0.5 * GeV),
 m_EMSumR(0.2),
 m_cellCone(0.2),
-m_emid(0),
-m_tileid(0),
 m_doCellCorrection(false) //FF: don't do cell correction by default
 {
-
     declareProperty("CellEthreshold", m_cellEthr);
     declareProperty("StripEthreshold", m_stripEthr);
     declareProperty("EMSumThreshold", m_EMSumThr);
@@ -92,26 +77,6 @@ StatusCode TauCellVariables::finalize() {
 }
 
 StatusCode TauCellVariables::initialize() {
-    
-    ATH_MSG_VERBOSE("TauCellVariables::initialize"); // DEBUG
-    
-    StatusCode sc;
-
-    // retrieve all helpers from det store
-    sc = detStore()->retrieve(m_emid);
-    if (sc.isFailure()) {
-        ATH_MSG_ERROR("Unable to retrieve LArEM_ID helper from DetectorStore");
-        return sc;
-    }
-    ATH_MSG_VERBOSE("Storegate retrieved"); // DEBUG
-
-    sc = detStore()->retrieve(m_tileid);
-    if (sc.isFailure()) {
-        ATH_MSG_ERROR("Unable to retrieve TileID helper from DetectorStore");
-        return sc;
-    }
-    ATH_MSG_VERBOSE("TileID from DetectorStore"); // DEBUG
-
     return StatusCode::SUCCESS;
 }
 
@@ -121,9 +86,7 @@ StatusCode TauCellVariables::eventInitialize() {
 
 StatusCode TauCellVariables::execute(xAOD::TauJet& pTau) {
 
-    ATH_MSG_VERBOSE("execute"); // DEBUG
-
-    AtlasDetectorID AtlasID;
+    ATH_MSG_DEBUG("execute"); 
 
     int numStripCell = 0;
     int numEMCell = 0;
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.h b/Reconstruction/tauRecTools/src/TauCellVariables.h
index a42ce34fac2c4aa360261792726354c679d9688f..6e4ace7e6b893e6aae50b647ae84b03a117ca6ed 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.h
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.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 TAUREC_TAUCELLVARIABLES_H
@@ -23,13 +23,12 @@ public:
     ASG_TOOL_CLASS2(TauCellVariables, TauRecToolBase, ITauToolBase);
     ~TauCellVariables();
 
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode eventInitialize();
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
-    virtual StatusCode execute(xAOD::TauJet& pTau);
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
 
-    virtual void print() const { }
 
 
 private:
@@ -39,9 +38,6 @@ private:
     double m_EMSumR;    //!< radius for 4-vector EM sum
     double m_cellCone;  //!< outer cone for cells used in calculations
 
-    const LArEM_ID* m_emid;
-    const TileID* m_tileid;
-
     /** 
      * enable cell origin correction 
      * eta and phi of the cells are corrected wrt to the origin of the tau vertex
diff --git a/Reconstruction/tauRecTools/src/TauConversionTagger.cxx b/Reconstruction/tauRecTools/src/TauConversionTagger.cxx
index a2f65273957ee6f27d5d5f1fca833defd7ea52e4..253ba945f14d1e1cefd976dfbfc41918f0c28fc8 100644
--- a/Reconstruction/tauRecTools/src/TauConversionTagger.cxx
+++ b/Reconstruction/tauRecTools/src/TauConversionTagger.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAOD_ANALYSIS
@@ -11,22 +11,6 @@
 //
 //
 //-----------------------------------------------------------------------------
-//TODO:
-
-//#include <GaudiKernel/IToolSvc.h>
-//#include <GaudiKernel/ListItem.h>
-
-//#include "FourMomUtils/P4Helpers.h"
-//#include "FourMom/P4EEtaPhiM.h"
-//#include "CLHEP/Vector/LorentzVector.h"
-//#include "Particle/TrackParticle.h"
-
-//#include "TrkParameters/TrackParameters.h"
-
-#include "tauRecTools/TauEventData.h"
-//#include "tauEvent/TauCommonDetails.h"
-//#include "tauEvent/TauJetParameters.h"
-
 #include "TauConversionTagger.h"
 
 //-----------------------------------------------------------------------------
@@ -40,7 +24,6 @@ TauConversionTagger::TauConversionTagger(const std::string &name) :
   m_trackToVertexTool("Reco::TrackToVertex")
 {
     declareProperty("ConversionTaggerVersion", m_ConvTaggerVer = 1);
-    declareProperty("TrackContainerName", m_trackContainerName = "InDetTrackParticles");
     declareProperty("TrackToVertexTool", m_trackToVertexTool);
     declareProperty ("TRTRatio", m_doTRTRatio = true);
     declareProperty ("FullInfo", m_storeFullSummary = false);
diff --git a/Reconstruction/tauRecTools/src/TauConversionTagger.h b/Reconstruction/tauRecTools/src/TauConversionTagger.h
index 398fd1f1cb0f810289c688fe0becd8a805b8e340..652de997a570fb93a1e1bd605cc154dabecab366 100644
--- a/Reconstruction/tauRecTools/src/TauConversionTagger.h
+++ b/Reconstruction/tauRecTools/src/TauConversionTagger.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 XAOD_ANALYSIS
@@ -30,18 +30,14 @@ public:
     //-------------------------------------------------------------
     ~TauConversionTagger();
 
-    virtual StatusCode initialize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode finalize();
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+    virtual StatusCode initialize() override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
-    virtual void print() const { }
 
 private:
-    
-    std::string m_trackContainerName;
-
     int m_ConvTaggerVer; 
     bool m_TrkIsConv;
     bool m_storeFullSummary;
@@ -49,7 +45,6 @@ private:
     float m_a_cut[2][2], m_b_cut[2][2];	    
     float m_TRTHighTOutliersRatio;
     ToolHandle<Reco::ITrackToVertex> m_trackToVertexTool;
-
 };
 
 #endif //TAUREC_TAUCONVERSIONTAGGER_H
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
index 12c201c63f34e2aa1a90455f4fd53237da9190b6..ea7d52cf9289150d29e0097bc3aac401fc0f51fe 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
@@ -31,18 +31,8 @@
 #include <math.h>
 #include <sstream>
 
-//#include "GaudiKernel/ListItem.h"
-//#include "GaudiKernel/IToolSvc.h"
 #include "GaudiKernel/SystemOfUnits.h"
-
-//#include "CaloUtils/CaloCellList.h"
-//#include "CaloEvent/CaloCluster.h"
-//#include "CaloEvent/CaloCell.h"
 #include "CaloUtils/CaloVertexedCell.h"
-//#include "AtlasDetDescr/AtlasDetectorID.h"
-//#include "CaloIdentifier/CaloID.h"
-//#include "CaloIdentifier/CaloCell_ID.h"
-//#include "CaloGeoHelpers/CaloSampling.h"
 
 #include "xAODTau/TauJet.h"
 #include "xAODJet/Jet.h"
@@ -64,7 +54,6 @@ m_caloExtensionTool("Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool")
 {
     declareProperty("CellCorrection", m_doCellCorrection);
     declareProperty("ParticleCaloExtensionTool",   m_caloExtensionTool );
-    // declareProperty("tauEVParticleCache", m_ParticleCacheKey);
 }
 
 //-------------------------------------------------------------------------
@@ -114,7 +103,7 @@ StatusCode TauElectronVetoVariables::execute(xAOD::TauJet& pTau)
         return StatusCode::SUCCESS;
     }
 
-    ATH_MSG_VERBOSE(name() << " in execute() ...");
+    ATH_MSG_DEBUG(name() << " in execute() ...");
 
     float detPhiTrk = 0.;
     float detEtaTrk = 0.;
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
index 38e1124f096a44aaa79087b84936f4bc9cf89a40..4ab99836ffbb4caac6978f483b7e1e57e87bc8da 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.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 TAUREC_TAU1P3PELEVETO_H
@@ -29,13 +29,12 @@ public:
     ASG_TOOL_CLASS2(TauElectronVetoVariables, TauRecToolBase, ITauToolBase);
 
     virtual ~TauElectronVetoVariables();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode eventInitialize();
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode eventFinalize() override{ return StatusCode::SUCCESS; }
 
-    virtual void print() const { }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
 
     bool m_doCellCorrection; //!< enable cell origin correction
     ToolHandle< Trk::IParticleCaloExtensionTool >  m_caloExtensionTool;
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx
index 0b8e2e561a8d99e7bb542f25f88803a4c0cbcea4..21a75fc800908de400d3f1670323bf68c221c6f6 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAOD_ANALYSIS
@@ -12,7 +12,6 @@
 //-----------------------------------------------------------------------------
 
 #include "CaloUtils/CaloClusterStoreHelper.h"
-//#include "CaloGeoHelpers/CaloSampling.h"
 #include "FourMomUtils/P4Helpers.h"
 #include "xAODJet/Jet.h"
 
@@ -237,17 +236,6 @@ StatusCode TauPi0ClusterCreator::executePi0ClusterCreator(xAOD::TauJet& pTau, xA
 
 StatusCode TauPi0ClusterCreator::eventFinalize() 
 {
-    // pt sort container at the end of the event
-    // if(m_pOutputPi0CaloClusterContainer->size()) AnalysisUtils::Sort::pT(m_pOutputPi0CaloClusterContainer);
-
-    //----------------------------------------------------------------------
-    // Register cluster container in StoreGate
-    //----------------------------------------------------------------------
-  //CHECK( CaloClusterStoreHelper::finalizeClusters(&(*evtStore()),
-  //m_pOutputPi0CaloClusterContainer,
-  //                                                m_outputPi0ClusterContainerName,
-  //                                                msg()));
-  
     return StatusCode::SUCCESS;
 }
 
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
index 34caeab0672501d33394550db68564d9092d552c..109321142a90ed2bde9eafc118c889ac3462ff3b 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.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 TAUREC_TAUPI0CLUSTERCREATOR_H
@@ -26,16 +26,15 @@ public:
     ASG_TOOL_CLASS2(TauPi0ClusterCreator, TauRecToolBase, ITauToolBase);
     virtual ~TauPi0ClusterCreator();
 
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode eventInitialize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventInitialize() override;
     virtual StatusCode executePi0ClusterCreator(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, 
 						xAOD::PFOContainer& hadronicClusterPFOContainer,
 						xAOD::CaloClusterContainer& pi0CaloClusContainer,
-						const xAOD::CaloClusterContainer& pPi0CaloClusContainer);
-    virtual StatusCode eventFinalize();
+						const xAOD::CaloClusterContainer& pPi0CaloClusContainer) override;
+    virtual StatusCode eventFinalize() override;
 
-    virtual void print() const { }
 
     
 private:
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
index c57b7aa43c13b51236cabf29bb45f55117a272db..f3bac5c86b97663fa44480a310e69d41cac69820 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
@@ -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
 */
 
 #ifndef XAOD_ANALYSIS
@@ -10,17 +10,7 @@
 // date:        2012-10-09
 //-----------------------------------------------------------------------------
 
-#include <TString.h>
-
-//#include "GaudiKernel/IToolSvc.h"
-
-//#include "CaloEvent/CaloCellContainer.h"
-//#include "CaloIdentifier/CaloCell_ID.h"
 #include "CaloUtils/CaloCellList.h"
-
-//#include "AthContainers/OwnershipPolicy.h"
-#include "NavFourMom/INavigable4MomentumCollection.h"
-
 #include "TauPi0CreateROI.h"
 
 #include <boost/scoped_ptr.hpp>
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
index 13671d80996cfcea4d591542cb460127c77da7bc..5046610eadc719f5a0afe50212d498a28b30b578 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.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
 */
 
 #ifndef TAUREC_TAUPI0CREATEROI_H
@@ -30,14 +30,11 @@ public:
     ASG_TOOL_CLASS2(TauPi0CreateROI, TauRecToolBase, ITauToolBase);
     virtual ~TauPi0CreateROI();
 
-    virtual StatusCode initialize();
-    virtual StatusCode eventInitialize();
-    virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& Pi0CellContainer);
-    virtual StatusCode eventFinalize();
-    virtual StatusCode finalize();
-
-    virtual void cleanup(xAOD::TauJet* ) { }
-    virtual void print() const { }
+    virtual StatusCode initialize() override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& Pi0CellContainer) override;
+    virtual StatusCode eventFinalize() override;
+    virtual StatusCode finalize() override;
 
 private:
 
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.cxx b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
index acd951339b63401a237519fc9d7cd0ed7dd6ed67..d80250a2521bc4f7959e572c58c7fe16bb738017 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
@@ -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
 */
 
 #ifndef XAOD_ANALYSIS
@@ -111,13 +111,12 @@ StatusCode TauShotFinder::initialize() {
 
 StatusCode TauShotFinder::finalize()
 {
-  StatusCode sc = AlgTool::finalize();
   /*
   delete m_tmvaReader_barrel;
   delete m_tmvaReader_endcap1;
   delete m_tmvaReader_endcap2;
   */
-  return sc;
+  return StatusCode::SUCCESS;
 }
 
 StatusCode TauShotFinder::eventInitialize() {
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.h b/Reconstruction/tauRecTools/src/TauShotFinder.h
index c6d236620afd8ba775295fca9421b3dc1a0b0ca0..56f845745429681925a65031d1e0265b23a60e43 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.h
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.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
 */
 
 #ifndef TAUREC_TAUSHOTFINDER_H
@@ -46,7 +46,6 @@ public:
     virtual StatusCode eventFinalize();
     virtual StatusCode finalize();
 
-    virtual void print() const { }
 
 
 private:
diff --git a/Reconstruction/tauRecTools/src/TauTrackFinder.cxx b/Reconstruction/tauRecTools/src/TauTrackFinder.cxx
index dd8e6a315d48e06069bfb123bfd9012a7715a0e6..ca49de3685b63f7caabaa9727a1bc8cd5a61f6e0 100644
--- a/Reconstruction/tauRecTools/src/TauTrackFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauTrackFinder.cxx
@@ -38,7 +38,6 @@ TauTrackFinder::TauTrackFinder(const std::string& name ) :
     declareProperty("removeDuplicateCoreTracks", m_removeDuplicateCoreTracks = true);
     declareProperty("BypassSelector", m_bypassSelector = false);
     declareProperty("BypassExtrapolator", m_bypassExtrapolator = false);
-    // declareProperty("tauParticleCache", m_ParticleCacheKey);
 
     // initialize samplings
     m_EMSamplings = {CaloSampling::EME1, CaloSampling::EMB1};
diff --git a/Reconstruction/tauRecTools/src/TauTrackFinder.h b/Reconstruction/tauRecTools/src/TauTrackFinder.h
index 6d812c67c05d6e622bb1687e03508f09b5194505..e165266b57bad697dad604fd77b669a25a8a4138 100644
--- a/Reconstruction/tauRecTools/src/TauTrackFinder.h
+++ b/Reconstruction/tauRecTools/src/TauTrackFinder.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 XAOD_ANALYSIS
@@ -61,13 +61,12 @@ public:
     //-------------------------------------------------------------
     //! Algorithm functions
     //-------------------------------------------------------------
-    virtual StatusCode initialize();
-    virtual StatusCode eventInitialize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode eventFinalize();
-    virtual StatusCode finalize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode eventFinalize() override;
+    virtual StatusCode finalize() override;
     
-    virtual void print() const { }
     
     //-------------------------------------------------------------
     //! Extrapolate track eta and phi to the calorimeter middle surface
diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.cxx b/Reconstruction/tauRecTools/src/TauVertexFinder.cxx
index e4e19abd57b183bf8f09ae50c1046ed5752e32ff..7c7409536c9cf10c2212c534eccabf53eb6d0b62 100644
--- a/Reconstruction/tauRecTools/src/TauVertexFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauVertexFinder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef XAOD_ANALYSIS
@@ -63,10 +63,6 @@ StatusCode TauVertexFinder::eventFinalize() {
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 StatusCode TauVertexFinder::execute(xAOD::TauJet& pTau) {
-
-  // for tau trigger
-  bool inTrigger = tauEventData()->inTrigger();
-
   const xAOD::VertexContainer * vxContainer = 0;
   const xAOD::Vertex* primaryVertex = 0;
 
@@ -74,7 +70,7 @@ StatusCode TauVertexFinder::execute(xAOD::TauJet& pTau) {
   // see: https://twiki.cern.ch/twiki/bin/viewauth/AtlasProtected/VertexReselectionOnAOD
   // code adapted from 
   // https://svnweb.cern.ch/trac/atlasoff/browser/Tracking/TrkEvent/VxVertex/trunk/VxVertex/PrimaryVertexSelector.h
-  if ( !inTrigger ){
+  if ( !m_in_trigger ){
     // get the primary vertex container from StoreGate
     // do it here because of tau trigger
     SG::ReadHandle<xAOD::VertexContainer> vertexInHandle( m_vertexInputContainer );
@@ -150,12 +146,10 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
   m_matchedVertexOnline.clear(); 
   // the implementation follows closely the example given in modifyJet(...) in https://svnweb.cern.ch/trac/atlasoff/browser/Reconstruction/Jet/JetMomentTools/trunk/Root/JetVertexFractionTool.cxx#15
   
-  //for tau trigger (ATR-15665)
-  bool inTrigger = tauEventData()->inTrigger();
   const xAOD::TrackParticleContainer* trackParticleCont = 0;
   std::vector<const xAOD::TrackParticle*> assocTracks;
   
-  if (inTrigger)   {
+  if (m_in_trigger)   {
     StatusCode sc = tauEventData()->getObject( "TrackContainer", trackParticleCont ); // to be replaced by full FTK collection?
     if (sc.isFailure() || !trackParticleCont){
       ATH_MSG_WARNING("No TrackContainer for TJVA in trigger found");
@@ -188,7 +182,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
   const jet::TrackVertexAssociation* tva = NULL;
  
   // ATR-15665 for trigger: reimplementation of TrackVertexAssociationTool::buildTrackVertexAssociation_custom
-  if(inTrigger){ 
+  if(m_in_trigger){ 
       if(tracksForTJVA.size()==0){ATH_MSG_DEBUG("No tracks survived selection"); return ElementLink<xAOD::VertexContainer>();}
       else ATH_MSG_DEBUG("Selected tracks with size " << tracksForTJVA.size());
 
@@ -258,7 +252,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
   size_t maxIndex = 0;
   for (const xAOD::Vertex* vert : vertices) {
     float jvf = 0;
-    if(!inTrigger) jvf = getJetVertexFraction(vert,tracksForTJVA,tva);
+    if(!m_in_trigger) jvf = getJetVertexFraction(vert,tracksForTJVA,tva);
     else jvf = getJetVertexFraction(vert,tracksForTJVA);
     if (jvf > maxJVF) {
       maxJVF = jvf;
diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.h b/Reconstruction/tauRecTools/src/TauVertexFinder.h
index e03836ea728e33d9cf879c1cd5f030012500df39..d6683244b78d05236caf9d6a87aca3910f85a018 100644
--- a/Reconstruction/tauRecTools/src/TauVertexFinder.h
+++ b/Reconstruction/tauRecTools/src/TauVertexFinder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TAUREC_TAUVERTEXFINDER_H
@@ -39,14 +39,13 @@ public:
   //-------------------------------------------------------------
   //! Algorithm functions
   //-------------------------------------------------------------
-  virtual StatusCode initialize();
-  virtual StatusCode eventInitialize();
-  virtual StatusCode execute(xAOD::TauJet& pTau);
-  virtual StatusCode eventFinalize();
-  virtual StatusCode finalize();
+  virtual StatusCode initialize() override;
+  virtual StatusCode eventInitialize() override;
+  virtual StatusCode execute(xAOD::TauJet& pTau) override;
+  virtual StatusCode eventFinalize() override;
+  virtual StatusCode finalize() override;
 
   virtual void cleanup(xAOD::TauJet* ) { }
-  virtual void print() const { }
 
 
 private:
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.cxx b/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
index bdcdf91ab679d225e509a352794fc665b702fe43..542b51fef5133143d4c6855acfe830b355983aa7 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
@@ -1,13 +1,10 @@
 /*
-  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 XAOD_ANALYSIS
 
-//#include "Particle/TrackParticle.h"
 #include "Particle/TrackParticleContainer.h"
-//#include "TrkParameters/TrackParameters.h"
-
 #include "xAODTracking/TrackParticleContainer.h"
 
 #include "TrkVertexFitterInterfaces/ITrackToVertexIPEstimator.h"
@@ -19,7 +16,6 @@
 #include "tauRecTools/TauEventData.h"
 #include "TauVertexVariables.h"
 
-
 //-----------------------------------------------------------------------------
 // Constructor
 //-----------------------------------------------------------------------------
@@ -83,10 +79,6 @@ StatusCode TauVertexVariables::finalize() {
 StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& pSecVtxContainer) {
 
   ATH_MSG_DEBUG("executing TauVertexVariables");
-
-  // for tau trigger
-  bool inTrigger = tauEventData()->inTrigger();
-  if (inTrigger) ATH_MSG_DEBUG("We're in the Trigger");
 	
   // impact parameter variables for standard tracks
   if (pTau.nTracks() > 0) {
@@ -94,7 +86,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
     const Trk::ImpactParametersAndSigma* myIPandSigma(0);
     const xAOD::Vertex* vxcand = nullptr;
 	  
-    if (inTrigger) {
+    if (m_in_trigger) {
 	  
       StatusCode scBeam = StatusCode::FAILURE;
 	  
@@ -213,7 +205,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
   // fitting the vertex itself
   xAOD::Vertex* xAODvertex(0);
     xAODvertex = m_fitTool->fit(xaodTracks, seedPoint);
-    if (xAODvertex && !inTrigger) {
+    if (xAODvertex && !m_in_trigger) {
       ATH_MSG_VERBOSE("using new xAOD API: Secondary Vertex found and recorded! x="<<xAODvertex->position().x()<< ", y="<<xAODvertex->position().y()<<", perp="<<xAODvertex->position().perp());
       pSecVtxContainer.push_back(xAODvertex);
       xAODvertex->setVertexType(xAOD::VxType::NotSpecified);
@@ -230,7 +222,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
   ATH_MSG_VERBOSE("transverse flight path significance="<<trFlightPS);
 
   // Note, we only attach the 2nd vertex if at offline, otherwise, break the trigger persistency
-  if  (!inTrigger) {
+  if  (!m_in_trigger) {
     pTau.setSecondaryVertex(&pSecVtxContainer, xAODvertex); 		// set the link to the vertex
   }
   else {
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.h b/Reconstruction/tauRecTools/src/TauVertexVariables.h
index 527196e861eaabab4c3aa41c1c6b30d9427d3f9d..5bab5c121e4a87a1de37377f6459b76d8af46e20 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.h
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.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 TAUREC_TAUVERTEXVARIABLES_H
@@ -34,13 +34,12 @@ public:
     ASG_TOOL_CLASS2(TauVertexVariables, TauRecToolBase, ITauToolBase);
     ~TauVertexVariables();
     
-    virtual StatusCode initialize();
-    virtual StatusCode executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& pVertexContainer); 
-    virtual StatusCode eventInitialize();
-    virtual StatusCode finalize();
-    virtual StatusCode eventFinalize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& pVertexContainer) override; 
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventFinalize() override;
 
-    virtual void print() const { }
     
     //-------------------------------------------------------------
     //! determines the transverse flight path significance from
diff --git a/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h b/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h
index abb6895e7681e4d5f18b7682a40782c47e33faaa..afcf07c65f8f03f4b5bad33e839b1d09422f0c06 100644
--- a/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.h
+++ b/Reconstruction/tauRecTools/tauRecTools/CaloClusterVariables.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 CALOCLUSTERVARIABLES_H
@@ -13,7 +13,6 @@ typedef xAOD::CaloVertexedCluster CaloVertexedClusterType;
 #else
 typedef xAOD::CaloVertexedTopoCluster CaloVertexedClusterType;
 #endif
-//#include "CaloEvent/CaloVertexedCluster.h"
 #include "CxxUtils/fpcompare.h"
 #include "xAODTau/TauJet.h"
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
index f19bf3ae8d581412647cfcbdfc1728ef0a1143b5..e1c4484ac9299c913717c800c889416629ae786d 100644
--- a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
+++ b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.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 TAURECTOOLS_COMBINEDP4FROMRECOTAUS_H
@@ -31,7 +31,7 @@ class CombinedP4FromRecoTaus
     CombinedP4FromRecoTaus(const std::string& name="CombinedP4FromRecoTaus");  
     
   //function where variables are computed and decorated
-  StatusCode initialize();
+  StatusCode initialize() override;
         
   // Get correlation coefficient for the given decay mode
   double GetCorrelationCoefficient(int etaIndex, const xAOD::TauJetParameters::DecayMode decayMode);
@@ -71,7 +71,7 @@ class CombinedP4FromRecoTaus
   double GetCaloResolution(const xAOD::TauJet* tau);
   bool GetUseCaloPtFlag(const xAOD::TauJet* tau);
 
-  StatusCode execute(xAOD::TauJet& xTau); 
+  StatusCode execute(xAOD::TauJet& xTau) override; 
 
  private:
   /*std::vector< std::vector<TH1F*> >  m_resHists_tauRec;
diff --git a/Reconstruction/tauRecTools/tauRecTools/KineUtils.h b/Reconstruction/tauRecTools/tauRecTools/KineUtils.h
index 28d5e0bf25734cf82cbdb1f5d5c1e94bc585fd6f..11d91a6aa6ab8e1c6bd9146c4726e08b0a4a7cdb 100644
--- a/Reconstruction/tauRecTools/tauRecTools/KineUtils.h
+++ b/Reconstruction/tauRecTools/tauRecTools/KineUtils.h
@@ -1,17 +1,13 @@
 /*
-  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 TAUREC_KINEUTILS_H
 #define TAUREC_KINEUTILS_H
 
-
 #include <string>
 #include "TVector2.h"
 
-//static const double kPI  = 3.1415927;
-//static const double k2PI = 2*3.1415927;
-
 //!
 //! @class Tau1P3PKineUtils
 //! @brief Provides methods for simple kinematical calculations
@@ -39,16 +35,7 @@ class Tau1P3PKineUtils
         //! @param x phi  position of object 1
         //! @param y phi  position of object 2
         //!
-
-        /*
-        static double deltaPhi(double phi1, double phi2)
-        {
-
-            double dphi = std :: fabs( phi1 - phi2 );
-            if( dphi  >  kPI ) dphi -= k2PI;
-            return std :: fabs( dphi );
-        }
-        */
+        
         static double deltaPhi(double phi1, double phi2)
         {
             return TVector2::Phi_mpi_pi(phi1-phi2);
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
index 4bf8a92fcf3bea92ea8d24f0e58158f79c3c4e0b..ae8fc6020f328dec4b6c8a3a44556114ae5530d8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.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
 */
 
 #ifndef TAURECTOOLSDEV_MVATESEVALUATOR_H
@@ -21,10 +21,10 @@ class MvaTESEvaluator
   MvaTESEvaluator(const std::string& name="MvaTESEvaluator");
   virtual ~MvaTESEvaluator();
     
-  StatusCode initialize();
-  StatusCode eventInitialize();
-  StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode finalize() { return StatusCode::SUCCESS; }
+  StatusCode initialize() override;
+  StatusCode eventInitialize() override;
+  StatusCode execute(xAOD::TauJet& xTau) override;
+  StatusCode finalize() override { return StatusCode::SUCCESS; }
   
  private:
    
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
index de7b1f9b07a8bc0e4cedba4c989c5bd186b46ab7..a06a7c71b00904ef40dded721f0ec3a781cbf896 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.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
 */
 
 #ifndef TAURECTOOLSDEV_MVATESVARIABLEDECORATOR_H
@@ -21,10 +21,10 @@ class MvaTESVariableDecorator
   MvaTESVariableDecorator(const std::string& name="MvaTESVariableDecorator");
   virtual ~MvaTESVariableDecorator();
     
-  StatusCode initialize();
-  StatusCode eventInitialize();
-  StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode eventFinalize();
+  StatusCode initialize() override;
+  StatusCode eventInitialize() override;
+  StatusCode execute(xAOD::TauJet& xTau) override;
+  StatusCode eventFinalize() override;
   
  private:
   int m_mu; //!
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
index d0160b4cca52dc7b479296b7dc6d1cec15347168..4c3a08839886a650b32ab9b161fcf05fa03b8fd8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TAUREC_TAUCALIBRATELC_H
@@ -28,10 +28,9 @@ public:
   TauCalibrateLC(const std::string& name="TauCalibrateLC");
     ~TauCalibrateLC();
 
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual void print() const { }
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
 
 
 private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
index 57d3a6fc13a1f2d56a6df59c843f9f478f5aab2e..be1d30bbc17e325096556823a310464cd6dadda4 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.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 TAUREC_TAUCOMMONCALCVARS_H
@@ -26,14 +26,12 @@ public:
     ASG_TOOL_CLASS2(TauCommonCalcVars, TauRecToolBase, ITauToolBase)
     ~TauCommonCalcVars();
     
-    virtual StatusCode initialize();                 
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode finalize();  
+    virtual StatusCode initialize() override;   
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode finalize() override;  
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
-
-    virtual void print() const { }
 
 private:
     std::string m_configPath;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
index 3eacb5ed3532449e0256f6102015831a3a4a6a35..167637d03baf1096d2df51288e10f7f08c4952e2 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.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
 */
 
 //! This class implements a tool to decorate the tau with a link to the matched electron as well as its llh score and OLR decision(s)
@@ -29,13 +29,10 @@ class TauEleOLRDecorator: virtual public TauRecToolBase
   
   virtual ~TauEleOLRDecorator();
 
-  virtual StatusCode eventInitialize();
-  
-  virtual StatusCode initialize();
-
-  virtual StatusCode execute(xAOD::TauJet&);
-
-  virtual StatusCode finalize();
+  virtual StatusCode eventInitialize() override;
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute(xAOD::TauJet&) override;
+  virtual StatusCode finalize() override;
 
  private:
   std::unique_ptr<AsgElectronLikelihoodTool> m_tEMLHTool;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h b/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
index 7d3eac7b28256482313ba745f1481a467aa3c9a5..185b4de1331897b1a15bb281fcf0e40b96fc45bf 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauGenericPi0Cone.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
 */
 
 //-----------------------------------------------------------------------------
@@ -29,16 +29,13 @@ public:
     //-------------------------------------------------------------
     ~TauGenericPi0Cone();
 
-    virtual StatusCode initialize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode finalize();
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
-
-    virtual void print() const { }
+    virtual StatusCode initialize() override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
 private:
-    std::string m_configPath;
 
 };
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
index 26738ae47e13943567ec5fee477d8a2d3e58dc18..399b99ad641607239559ede256d47529a617e661 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.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
 */
 
 //! This class implements a tool to calculate ID input variables and add them to the tau aux store
@@ -27,13 +27,10 @@ class TauIDVarCalculator: public TauRecToolBase
   
   virtual ~TauIDVarCalculator() {}
 
-  virtual StatusCode eventInitialize();
-  
-  virtual StatusCode initialize();
-
-  virtual StatusCode execute(xAOD::TauJet&);
-
-  virtual StatusCode finalize();
+  virtual StatusCode eventInitialize() override;
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute(xAOD::TauJet&) override;
+  virtual StatusCode finalize() override;
 
   static const float LOW_NUMBER;
   
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
index b8c9a62dac4f39448bb3e003f1df818ea28aed70..d6ca8cd9aa635679307037154e44214f6cd490a4 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.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 TAURECTOOLS_TAUJETBDTEVALUATOR_H
@@ -27,9 +27,9 @@ class TauJetBDTEvaluator
   TauJetBDTEvaluator(const std::string& name="TauJetBDTEvaluator");
   virtual ~TauJetBDTEvaluator() { }
     
-  StatusCode initialize();
-  StatusCode execute(xAOD::TauJet& xTau);
-  StatusCode finalize();// { delete myBdt; delete m_outputVar; return StatusCode::SUCCESS;}
+  StatusCode initialize() override;
+  StatusCode execute(xAOD::TauJet& xTau) override;
+  StatusCode finalize() override;
   
  private:
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
index cdc20fd030baecc243198848648e93dc1e937b77..40b56ab13e4e3424609b2773016341f65f73c009 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.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
 */
 
 #ifndef TAUREC_TAUJETRNNEVALUATOR_H
@@ -32,8 +32,8 @@ public:
     TauJetRNNEvaluator(const std::string &name = "TauJetRNNEvaluator");
     virtual ~TauJetRNNEvaluator();
 
-    StatusCode initialize();
-    StatusCode execute(xAOD::TauJet &tau);
+    StatusCode initialize() override;
+    StatusCode execute(xAOD::TauJet &tau) override;
     // Getter for the underlying RNN implementation
     TauJetRNN *get_rnn_0p();
     TauJetRNN *get_rnn_1p();
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
index eb7b0424197ae81a1688b9fb82474d9d2b7ae099..34602a8476b924d5c9880398914bf3cba2745605 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ClusterScaler.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 TAUREC_TAUPI0CLUSTERSCALER_H
@@ -28,13 +28,12 @@ public:
     ASG_TOOL_CLASS2(TauPi0ClusterScaler, TauRecToolBase, ITauToolBase)
     virtual ~TauPi0ClusterScaler();
 
-    virtual StatusCode initialize();
-    virtual StatusCode eventInitialize();
-    virtual StatusCode finalize();
-    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer, xAOD::PFOContainer& pChargedPFOContainer); 
-    virtual StatusCode eventFinalize();
+    virtual StatusCode initialize() override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer, xAOD::PFOContainer& pChargedPFOContainer) override; 
+    virtual StatusCode eventFinalize() override;
 
-    virtual void print() const { }
 
 private:
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
index d9f04c6bf2a2b37ad0353c1f33f501c974804f32..0d0df81b09c49fbd59d1dfc66a7d7330fc2df8e5 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.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 TAUREC_TAUPI0SCORECALCULATOR_H
@@ -27,13 +27,12 @@ public:
     ASG_TOOL_CLASS2(TauPi0ScoreCalculator, TauRecToolBase, ITauToolBase)
     virtual ~TauPi0ScoreCalculator();
 
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer);
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer) override;
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
-    virtual void print() const { }
 
 private:
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
index aecfb075fc846fbc00107ea20462c94eedf9075e..2f5fb133a6f56eda88ace145fff3f54b99122b6d 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.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 TAUREC_TAUPI0SELECTOR_H
@@ -21,13 +21,12 @@ public:
     TauPi0Selector(const std::string& name);
     ASG_TOOL_CLASS2(TauPi0Selector, TauRecToolBase, ITauToolBase)
     virtual ~TauPi0Selector();
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer);
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer) override;
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
-    virtual void print() const { }
 
 private:
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
index 179f52aca6b16e2dd9a5611e42580ab44f5c5213..df76aa0d154130abe056223fdd03d5141c5f5f29 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.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 TAUREC_TAUSUBSTRUCTUREBUILDER_H
@@ -18,28 +18,26 @@
 class TauSubstructureVariables : public TauRecToolBase
 {
     public: 
+	    ASG_TOOL_CLASS2(TauSubstructureVariables, TauRecToolBase, ITauToolBase)
         
         static const double DEFAULT;
 
         TauSubstructureVariables(const std::string& name="TauSubstructureVariables");
-	ASG_TOOL_CLASS2(TauSubstructureVariables, TauRecToolBase, ITauToolBase)
 
         ~TauSubstructureVariables();
 
-        virtual StatusCode execute(xAOD::TauJet& pTau);
-        virtual StatusCode initialize();
-        virtual StatusCode finalize();
-        virtual StatusCode eventInitialize();
+        virtual StatusCode execute(xAOD::TauJet& pTau) override;
+        virtual StatusCode initialize() override;
+        virtual StatusCode finalize() override;
+        virtual StatusCode eventInitialize() override;
+	    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
-	virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
-
-	virtual void print() const { }
 
     private:
         /** Maximal pile up correction in GeV for a tau candidate.
          *  Used for the caloIso corrected variable.
          */
-	std::string m_configPath;
+	    std::string m_configPath;
         double m_maxPileUpCorrection; 
         double m_pileUpAlpha;         //!< slope of the pileup correction
         
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
index b4f324b5d5199a4b6bb78ff773da9acdfac33a21..fdebc582ac8fdf90dc27d091d520be1cb80e5e0e 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.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 TAUREC_TAUTRACKCLASSIFIER_H
@@ -41,10 +41,8 @@ public:
   TauTrackClassifier(const std::string& sName="TauTrackClassifier");
   ~TauTrackClassifier();
 
-  // retrieve all track classifier sub tools
-  virtual StatusCode initialize();
-  // pass all tracks in the tau cone to all track classifier sub tools
-  virtual StatusCode execute(xAOD::TauJet& pTau);
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute(xAOD::TauJet& pTau) override;
 
 private:
   ToolHandleArray<TrackMVABDT> m_vClassifier;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
index a8e2df401e0379363954e767387bbf4acd0298fa..16bd39892625803f231364ab12d4cf95cefed120 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackFilter.h
@@ -29,13 +29,12 @@ public:
     //-------------------------------------------------------------
     ~TauTrackFilter();
 
-    virtual StatusCode initialize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
-    virtual StatusCode finalize();
-    virtual StatusCode eventInitialize() { return StatusCode::SUCCESS; }
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
+    virtual StatusCode initialize() override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode eventInitialize() override { return StatusCode::SUCCESS; }
+    virtual StatusCode eventFinalize() override { return StatusCode::SUCCESS; }
 
-    virtual void print() const { }
 
 private:
     std::string m_configPath;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
index f96c38062e9936643afbdd54df91f1a3765291a0..5c0925cb4e8ac0e931fa0b33651000953f875a87 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.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
 */
 
 #ifndef TAUREC_TAUWPDECORATOR_H
@@ -32,19 +32,18 @@ public:
     ASG_TOOL_CLASS2(TauWPDecorator, TauRecToolBase, ITauToolBase)
     ~TauWPDecorator();
 
-    virtual StatusCode initialize();
-    virtual StatusCode finalize();
-    virtual StatusCode execute(xAOD::TauJet& pTau);
+    virtual StatusCode initialize() override;
+    virtual StatusCode finalize() override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode eventInitialize() override;
+    virtual StatusCode eventFinalize() override{ return StatusCode::SUCCESS; }
     
+    virtual void cleanup(xAOD::TauJet* ) { }
+
     virtual StatusCode retrieveHistos(int nProng);
     virtual StatusCode storeLimits(int nProng);
     virtual double transformScore(double score, double cut_lo, double eff_lo, double cut_hi, double eff_hi);
 
-    virtual void print() const { }
-    virtual StatusCode eventInitialize();
-    virtual StatusCode eventFinalize() { return StatusCode::SUCCESS; }
-    virtual void cleanup(xAOD::TauJet* ) { }
-
 
 private:
     std::string m_file0P;
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CompressedLayerMaterial.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CompressedLayerMaterial.h
index f17cd8dbcd20cebfcd2835e7c79911abcdcb296c..28e9a87f3227805c3f4ef988842f95547efb6c57 100644
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CompressedLayerMaterial.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CompressedLayerMaterial.h
@@ -96,7 +96,7 @@ namespace Trk {
       std::ostream& dump(std::ostream& sl) const override;      
 
     private:
-      mutable BinUtility*                             m_binUtility; //!< the helper for the bin finding 
+      BinUtility*                             m_binUtility; //!< the helper for the bin finding 
 
       /** The five different MaterialProperties */
       MaterialPropertiesVector                        m_fullMaterial;
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h
index cd2a4406054a6fc953530ffefeac15dd3331274d..bd28f0eef66be4ef96edf71af66525e4aa44b0d7 100644
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/ConeLayer.h
@@ -100,7 +100,7 @@ namespace Trk {
       virtual void moveLayer(Amg::Transform3D& shift) override;
 
       /** move the Layer */
-      virtual void moveLayer ATLAS_NOT_THREAD_SAFE (Amg::Transform3D& shift) const override{
+      virtual void moveLayer ATLAS_NOT_CONST_THREAD_SAFE (Amg::Transform3D& shift) const override{
        const_cast<ConeLayer*>(this)->moveLayer(shift); 
       };
 
@@ -113,8 +113,8 @@ namespace Trk {
 
       
     /** Resize the layer to the tracking volume - not supported since this an entry layer method*/ 
-    virtual void resizeAndRepositionLayer ATLAS_NOT_THREAD_SAFE(const VolumeBounds&,
-                                                                const Amg::Vector3D&, double) const override {}       
+    virtual void resizeAndRepositionLayer ATLAS_NOT_CONST_THREAD_SAFE(const VolumeBounds&,
+                                                                      const Amg::Vector3D&, double) const override {}       
       
   };
  
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h
index f8ccfac916a728ccc16b821fc772a940fbc49d9a..7941de3f2486a249a68c535b339c74e29b7fb78b 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/CylinderLayer.h
@@ -170,7 +170,7 @@ class IApproachDescriptor;
        }
 
        /** build approach surfaces */
-       void buildApproachDescriptor() const;
+       void buildApproachDescriptor();
        
        /** Surface seen on approach - if not defined differently, it is the surfaceRepresentation() */
        const Surface& approachSurface(const Amg::Vector3D& pos,
@@ -179,7 +179,7 @@ class IApproachDescriptor;
 
      protected:
        /** surfaces on approach to the layer */
-       mutable IApproachDescriptor*  m_approachDescriptor;
+       IApproachDescriptor*  m_approachDescriptor;
        
        
   };
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h
index 60e416cd19fc41927ca86eb25a26f2b3fac7f44d..f6e1839004c2b0e96ae94b1e265e358c9c360dc8 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/DiscLayer.h
@@ -144,14 +144,14 @@ namespace Trk {
 
 
        /** build approach surfaces */
-       void buildApproachDescriptor() const;
+       void buildApproachDescriptor();
     
        /** Surface seen on approach - if not defined differently, it is the surfaceRepresentation() */
        const Surface& approachSurface(const Amg::Vector3D& pos,
                                       const Amg::Vector3D& dir,
                                       const BoundaryCheck& bcheck) const;    
      protected:
-       mutable IApproachDescriptor*  m_approachDescriptor;      //!< surface for approaching
+       IApproachDescriptor*  m_approachDescriptor;      //!< surface for approaching
     
   };
 
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/GlueVolumesDescriptor.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/GlueVolumesDescriptor.h
index 723bccb66a93613db4e8a42475484e115fd16088..460cfb959b6860d5e45bc6d8d51b7cfbc637cdbd 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/GlueVolumesDescriptor.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/GlueVolumesDescriptor.h
@@ -16,12 +16,14 @@
 // STL
 #include <map>
 #include <vector>
+#include "CxxUtils/checker_macros.h"
 
 namespace Trk {
 
     class TrackingVolume;
 
     typedef std::map<BoundarySurfaceFace, std::vector<const TrackingVolume*> >::iterator GlueVolumeIterator;
+    typedef std::map<BoundarySurfaceFace, std::vector<const TrackingVolume*> >::const_iterator GlueVolumeConstIterator;
     /** @class GlueVolumesDescriptor 
   
        Descriptor class to hold GlueVolumes of a TrackingGeometry object.
@@ -44,7 +46,8 @@ namespace Trk {
         ~GlueVolumesDescriptor(){}
  
         /** register the volumes */
-        void registerGlueVolumes(BoundarySurfaceFace, std::vector<const TrackingVolume*>&) const;
+        void registerGlueVolumes(BoundarySurfaceFace, std::vector<const TrackingVolume*>&);
+        void registerGlueVolumes ATLAS_NOT_CONST_THREAD_SAFE (BoundarySurfaceFace, std::vector<const TrackingVolume*>&) const;
      
         /** retrieve them again */
         const std::vector<const TrackingVolume*>& glueVolumes(BoundarySurfaceFace) const;
@@ -54,11 +57,17 @@ namespace Trk {
 
 
      private:
-        mutable std::map<BoundarySurfaceFace, std::vector<const TrackingVolume*> > m_glueVolumes;
-        mutable std::vector<BoundarySurfaceFace>                                   m_glueFaces;
+        std::map<BoundarySurfaceFace, std::vector<const TrackingVolume*> > m_glueVolumes;
+        std::vector<BoundarySurfaceFace>                                   m_glueFaces;
         static  const std::vector<const TrackingVolume*>                           s_emptyVector;
    };
 
+  inline void GlueVolumesDescriptor::registerGlueVolumes ATLAS_NOT_CONST_THREAD_SAFE (BoundarySurfaceFace bSurf, 
+                                                                                       std::vector<const TrackingVolume*>& vols) const{
+
+    const_cast<GlueVolumesDescriptor*>(this)->registerGlueVolumes(bSurf,vols);
+  }
+
   inline const std::vector<BoundarySurfaceFace>& GlueVolumesDescriptor::glueFaces() const
   { return m_glueFaces; }
 
diff --git a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialMap.h b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialMap.h
index 7eb9f670a5be111ad7d2ed368c67c8d5465282fc..5e26e32a2c3784a2d00d35e54534b583d36b888e 100644
--- a/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialMap.h
+++ b/Tracking/TrkDetDescr/TrkGeometry/TrkGeometry/LayerMaterialMap.h
@@ -62,14 +62,14 @@ namespace Trk {
 		const ElementTable* elementTable() const { return m_elementTable.get(); }
 	
 		/** update method*/
-		void updateElementTable(const SharedObject<const ElementTable>& eTable) const 
+		void updateElementTable(const SharedObject<const ElementTable>& eTable) 
             {  m_elementTable = eTable; synchronizeElementTable(); }
 
-        /** synchronize the ElementTable */
-        void synchronizeElementTable() const;
+    /** synchronize the ElementTable */
+    void synchronizeElementTable();
         
 	private:
-		mutable SharedObject<const ElementTable>   m_elementTable;
+		SharedObject<const ElementTable>   m_elementTable;
 
 
   };
@@ -80,7 +80,7 @@ namespace Trk {
           delete (it.second);
   }
   
-  inline void LayerMaterialMap::synchronizeElementTable() const {
+  inline void LayerMaterialMap::synchronizeElementTable(){
      // loop 1 - add up all the ElementTable
      Trk::ElementTable* eTable = new Trk::ElementTable();
      if (elementTable()) (*eTable) += (*elementTable());
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/CylinderLayer.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/CylinderLayer.cxx
index 44c0e2fa529d85e471b2d3cdebc09bd6847e0e9f..a41903c8bad7921f5a3e24947f7713157329f059 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/src/CylinderLayer.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/CylinderLayer.cxx
@@ -284,38 +284,38 @@ const Trk::Surface& Trk::CylinderLayer::surfaceOnApproach(const Amg::Vector3D& p
 
 
 
-/** build approach surfaces */
-void Trk::CylinderLayer::buildApproachDescriptor() const {
+/** build approach surfaces */
+void Trk::CylinderLayer::buildApproachDescriptor(){
     // delete it
-    delete m_approachDescriptor;
-    // delete the surfaces    
-    Trk::ApproachSurfaces* aSurfaces = new Trk::ApproachSurfaces;
-    // create new surfaces
-    Amg::Transform3D* asTransform = m_transform ? new Amg::Transform3D(*m_transform) : 0;
-    // create the new surfaces
-    aSurfaces->push_back(new Trk::CylinderSurface(asTransform, m_bounds->r()-0.5*thickness(), m_bounds->halflengthZ() ));
-    aSurfaces->push_back(new Trk::CylinderSurface(asTransform, m_bounds->r()+0.5*thickness(), m_bounds->halflengthZ() ));
-    // set the layer and make TGOwn
-    for (auto& sIter : (*aSurfaces)){
-        sIter->associateLayer(*this);
-        sIter->setOwner(Trk::TGOwn);
-    }
-    m_approachDescriptor = new Trk::ApproachDescriptor(aSurfaces);
-    
-}
-
-void Trk::CylinderLayer::resizeAndRepositionLayer(const VolumeBounds& vBounds, const Amg::Vector3D& vCenter, double envelope) {
-    // resize first of all
-    resizeLayer(vBounds,envelope);
-    // now reposition to the potentially center if necessary, do not change layers with no transform
-    if ( Trk::CylinderSurface::m_transform || center().isApprox(vCenter) ) return;
+    delete m_approachDescriptor;
+    // delete the surfaces    
+    Trk::ApproachSurfaces* aSurfaces = new Trk::ApproachSurfaces;
+    // create new surfaces
+    Amg::Transform3D* asTransform = m_transform ? new Amg::Transform3D(*m_transform) : 0;
+    // create the new surfaces
+    aSurfaces->push_back(new Trk::CylinderSurface(asTransform, m_bounds->r()-0.5*thickness(), m_bounds->halflengthZ() ));
+    aSurfaces->push_back(new Trk::CylinderSurface(asTransform, m_bounds->r()+0.5*thickness(), m_bounds->halflengthZ() ));
+    // set the layer and make TGOwn
+    for (auto& sIter : (*aSurfaces)){
+        sIter->associateLayer(*this);
+        sIter->setOwner(Trk::TGOwn);
+    }
+    m_approachDescriptor = new Trk::ApproachDescriptor(aSurfaces);
+    
+}
+
+void Trk::CylinderLayer::resizeAndRepositionLayer(const VolumeBounds& vBounds, const Amg::Vector3D& vCenter, double envelope) {
+    // resize first of all
+    resizeLayer(vBounds,envelope);
+    // now reposition to the potentially center if necessary, do not change layers with no transform
+    if ( Trk::CylinderSurface::m_transform || center().isApprox(vCenter) ) return;
     
     Trk::CylinderSurface::m_transform=std::make_unique<Amg::Transform3D>(vCenter);
-    // delete derived and the cache
-    Trk::CylinderSurface::m_center.store(std::make_unique<Amg::Vector3D>(vCenter));
-    Trk::CylinderSurface::m_normal.store(nullptr);
-    // rebuild approaching layers if needed
-    if (m_approachDescriptor &&  m_approachDescriptor->rebuild()) 
-        buildApproachDescriptor();
-}
-
+    // delete derived and the cache
+    Trk::CylinderSurface::m_center.store(std::make_unique<Amg::Vector3D>(vCenter));
+    Trk::CylinderSurface::m_normal.store(nullptr);
+    // rebuild approaching layers if needed
+    if (m_approachDescriptor &&  m_approachDescriptor->rebuild()) 
+        buildApproachDescriptor();
+}
+
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/DiscLayer.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/DiscLayer.cxx
index 49fcc111bc540006ee6291e52d9dbf68d1387d12..0d2247c2f34534855055716489b8617681ce33a5 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/src/DiscLayer.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/DiscLayer.cxx
@@ -231,51 +231,51 @@ const Trk::Surface& Trk::DiscLayer::surfaceOnApproach(const Amg::Vector3D& pos,
     return surfaceRepresentation();
 }
 
-/** build approach surfaces */
-void Trk::DiscLayer::buildApproachDescriptor() const {
-    // delete the current approach descriptor
-    delete m_approachDescriptor;
-    // create the surface container   
-    Trk::ApproachSurfaces* aSurfaces = new Trk::ApproachSurfaces;
-    // get the center
-    const auto halfThickness=0.5*thickness()*normal();
-    const Amg::Vector3D aspPosition(center()+halfThickness);
-    const Amg::Vector3D asnPosition(center()-halfThickness);
-    // create the new surfaces
-    const Trk::DiscBounds* db = dynamic_cast<const Trk::DiscBounds*>(m_bounds.get());
-    if (db){ 
-        // create new surfaces
-        Amg::Transform3D* asnTransform = new Amg::Transform3D(Amg::Translation3D(asnPosition));   
-        Amg::Transform3D* aspTransform = new Amg::Transform3D(Amg::Translation3D(aspPosition));   
-        aSurfaces->push_back( new Trk::DiscSurface(aspTransform, db->clone()) );
-        aSurfaces->push_back( new Trk::DiscSurface(asnTransform, db->clone()) );
-        // set the layer and make TGOwn
-        for (auto& sIter : (*aSurfaces)){
-            sIter->associateLayer(*this);
-            sIter->setOwner(Trk::TGOwn);
-        }
-    }
+/** build approach surfaces */
+void Trk::DiscLayer::buildApproachDescriptor(){
+    // delete the current approach descriptor
+    delete m_approachDescriptor;
+    // create the surface container   
+    Trk::ApproachSurfaces* aSurfaces = new Trk::ApproachSurfaces;
+    // get the center
+    const auto halfThickness=0.5*thickness()*normal();
+    const Amg::Vector3D aspPosition(center()+halfThickness);
+    const Amg::Vector3D asnPosition(center()-halfThickness);
+    // create the new surfaces
+    const Trk::DiscBounds* db = dynamic_cast<const Trk::DiscBounds*>(m_bounds.get());
+    if (db){ 
+        // create new surfaces
+        Amg::Transform3D* asnTransform = new Amg::Transform3D(Amg::Translation3D(asnPosition)); 
+        Amg::Transform3D* aspTransform = new Amg::Transform3D(Amg::Translation3D(aspPosition));   
+        aSurfaces->push_back( new Trk::DiscSurface(aspTransform, db->clone()) );
+        aSurfaces->push_back( new Trk::DiscSurface(asnTransform, db->clone()) );
+        // set the layer and make TGOwn
+        for (auto& sIter : (*aSurfaces)){
+            sIter->associateLayer(*this);
+            sIter->setOwner(Trk::TGOwn);
+        }
+    }
     m_approachDescriptor = new Trk::ApproachDescriptor(aSurfaces);
-}
-
-void Trk::DiscLayer::resizeAndRepositionLayer(const VolumeBounds& vBounds, const Amg::Vector3D& vCenter, double envelope)  {
-    // resize first of all
-    resizeLayer(vBounds,envelope);
-    // now reposition to the potentially center if necessary, do not change layers with no transform
-    const Trk::CylinderVolumeBounds* cvb = dynamic_cast<const Trk::CylinderVolumeBounds*>(&vBounds);
-    if (cvb){
-        // get the halflength
-        double hLengthZ = cvb->halflengthZ();
-        Amg::Vector3D nDiscCenter = center().z() < 0. ?  Amg::Vector3D( vCenter - Amg::Vector3D(0.,0.,hLengthZ-0.5*thickness()) ) :
-                                                         Amg::Vector3D( vCenter + Amg::Vector3D(0.,0.,hLengthZ-0.5*thickness()) );
-        if (center().isApprox(nDiscCenter)) return;
-        // else set to the new volume center
-        Trk::DiscSurface::m_transform=std::make_unique<Amg::Transform3D> (Amg::Translation3D(nDiscCenter));
-        // delete derived and the cache
-        Trk::DiscSurface::m_center.store(std::make_unique<Amg::Vector3D>(nDiscCenter));
-        Trk::DiscSurface::m_normal.store(nullptr);
-    }
-    // rebuild the approaching layer 
-    if (m_approachDescriptor &&  m_approachDescriptor->rebuild()) 
-        buildApproachDescriptor();        
-}
+}
+
+void Trk::DiscLayer::resizeAndRepositionLayer(const VolumeBounds& vBounds, const Amg::Vector3D& vCenter, double envelope)  {
+    // resize first of all
+    resizeLayer(vBounds,envelope);
+    // now reposition to the potentially center if necessary, do not change layers with no transform
+    const Trk::CylinderVolumeBounds* cvb = dynamic_cast<const Trk::CylinderVolumeBounds*>(&vBounds);
+    if (cvb){
+        // get the halflength
+        double hLengthZ = cvb->halflengthZ();
+        Amg::Vector3D nDiscCenter = center().z() < 0. ?  Amg::Vector3D( vCenter - Amg::Vector3D(0.,0.,hLengthZ-0.5*thickness()) ) :
+                                                         Amg::Vector3D( vCenter + Amg::Vector3D(0.,0.,hLengthZ-0.5*thickness()) );
+        if (center().isApprox(nDiscCenter)) return;
+        // else set to the new volume center
+        Trk::DiscSurface::m_transform=std::make_unique<Amg::Transform3D> (Amg::Translation3D(nDiscCenter));
+        // delete derived and the cache
+        Trk::DiscSurface::m_center.store(std::make_unique<Amg::Vector3D>(nDiscCenter));
+        Trk::DiscSurface::m_normal.store(nullptr);
+    }
+    // rebuild the approaching layer 
+    if (m_approachDescriptor &&  m_approachDescriptor->rebuild()) 
+        buildApproachDescriptor();    
+}
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/GlueVolumesDescriptor.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/GlueVolumesDescriptor.cxx
index 47b92b615c0a1e75650cc851e4780dc080838d9c..ffc8af6580a0f778e984e5570c9aefb579769ccd 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/src/GlueVolumesDescriptor.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/GlueVolumesDescriptor.cxx
@@ -22,7 +22,7 @@ Trk::GlueVolumesDescriptor::GlueVolumesDescriptor(const std::map<Trk::BoundarySu
        m_glueFaces.push_back(searchIter->first);
 }
 
-void Trk::GlueVolumesDescriptor::registerGlueVolumes(Trk::BoundarySurfaceFace bsf, std::vector<const Trk::TrackingVolume*>&gvs) const
+void Trk::GlueVolumesDescriptor::registerGlueVolumes(Trk::BoundarySurfaceFace bsf, std::vector<const Trk::TrackingVolume*>&gvs)
 {
   // register the face
   Trk::GlueVolumeIterator searchIter = m_glueVolumes.begin();
@@ -36,8 +36,8 @@ void Trk::GlueVolumesDescriptor::registerGlueVolumes(Trk::BoundarySurfaceFace bs
 const std::vector<const Trk::TrackingVolume*>& Trk::GlueVolumesDescriptor::glueVolumes(Trk::BoundarySurfaceFace bsf) const
 {
 
-  Trk::GlueVolumeIterator searchIter = m_glueVolumes.begin();
-  Trk::GlueVolumeIterator endIter    = m_glueVolumes.end(); 
+  Trk::GlueVolumeConstIterator searchIter = m_glueVolumes.begin();
+  Trk::GlueVolumeConstIterator endIter    = m_glueVolumes.end(); 
 
   searchIter = m_glueVolumes.find(bsf);
   if (searchIter != endIter) return searchIter->second;
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx
index 04254b68b445dc6b3eb9efc3f29e86316a6344b2..14c0d79d8192da11982750cabf4ba84ccfadbfdc 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolume.cxx
@@ -384,7 +384,7 @@ Trk::TrackingVolume::TrackingVolume(const Trk::TrackingVolume& trVol,
   const Trk::TrackingVolume* in  = 0;
   const Trk::TrackingVolume* out = 0;
   for (unsigned int ib = 0; ib < trVol.boundarySurfaces().size() ; ib++) {
-    in = trVol.boundarySurfaces()[ib].get()->m_insideVolume == &trVol ? this : 0;
+    in = trVol.boundarySurfaces()[ib].get()->insideVolume() == &trVol ? this : 0;
     out = in == 0 ? this : 0;
     const Trk::CylinderSurface* cyl = dynamic_cast<const Trk::CylinderSurface*> (trVol.boundarySurfaces()[ib].get());
     const Trk::DiscSurface*     dis = dynamic_cast<const Trk::DiscSurface*> (trVol.boundarySurfaces()[ib].get());
diff --git a/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolumeManipulator.cxx b/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolumeManipulator.cxx
index 3fbaf40b3e928799a6f32c96b60f85834fbf72c1..a1e0aeeadb6ff01c706c5743990c51fdac7500ac 100755
--- a/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolumeManipulator.cxx
+++ b/Tracking/TrkDetDescr/TrkGeometry/src/TrackingVolumeManipulator.cxx
@@ -25,9 +25,9 @@ void Trk::TrackingVolumeManipulator::glueVolumes(const Trk::TrackingVolume& firs
    ((*secondVol.m_boundarySurfaces))[secondFace] = (*(firstVol.m_boundarySurfaces))[firstFace];
    // the face of the first volume has been an inner tube
    if (cylBounds && firstFace==Trk::tubeInnerCover && secondFace==Trk::tubeOuterCover)
-      ((*secondVol.m_boundarySurfaces))[secondFace]->m_insideVolume = (&secondVol);
+      ((*secondVol.m_boundarySurfaces))[secondFace]->setInsideVolume(&secondVol);
    else 
-      ((*secondVol.m_boundarySurfaces))[secondFace]->m_outsideVolume = (&secondVol);
+      ((*secondVol.m_boundarySurfaces))[secondFace]->setOutsideVolume(&secondVol);
 }
 
 void Trk::TrackingVolumeManipulator::setBoundarySurface(const Trk::TrackingVolume& tvol,
@@ -40,33 +40,33 @@ void Trk::TrackingVolumeManipulator::setBoundarySurface(const Trk::TrackingVolum
 void Trk::TrackingVolumeManipulator::setInsideVolume(const Trk::TrackingVolume& tvol,
                                                      Trk::BoundarySurfaceFace face,
                                                      const Trk::TrackingVolume* insidevol) const
-{ ((*tvol.m_boundarySurfaces)[face])->m_insideVolume = insidevol; }
+{ ((*tvol.m_boundarySurfaces)[face])->setInsideVolume(insidevol); }
 
 void Trk::TrackingVolumeManipulator::setInsideVolumeArray(const Trk::TrackingVolume& tvol,
                                                           Trk::BoundarySurfaceFace face,
                                                           Trk::BinnedArray<Trk::TrackingVolume>* insidevolarray) const
-{   ((*tvol.m_boundarySurfaces)[face])->m_insideVolumeArray = Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(insidevolarray); }
+{   ((*tvol.m_boundarySurfaces)[face])->setInsideVolumeArray(Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(insidevolarray)); }
       
 void Trk::TrackingVolumeManipulator::setInsideVolumeArray(const Trk::TrackingVolume& tvol,
                                                           Trk::BoundarySurfaceFace face,
                                                           Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >insidevolarray) const
-{   ((*tvol.m_boundarySurfaces)[face])->m_insideVolumeArray = Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(insidevolarray);
+{   ((*tvol.m_boundarySurfaces)[face])->setInsideVolumeArray(Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(insidevolarray));
 }
       
 void Trk::TrackingVolumeManipulator::setOutsideVolume(const Trk::TrackingVolume& tvol,
                                                       Trk::BoundarySurfaceFace face,
                                                       const Trk::TrackingVolume* outsidevol) const
-{ ((*tvol.m_boundarySurfaces)[face])->m_outsideVolume = outsidevol; }
+{ ((*tvol.m_boundarySurfaces)[face])->setOutsideVolume(outsidevol); }
 
 void Trk::TrackingVolumeManipulator::setOutsideVolumeArray(const Trk::TrackingVolume& tvol,
                                                            Trk::BoundarySurfaceFace face,
                                                            Trk::BinnedArray<Trk::TrackingVolume>* outsidevolarray) const         
-{  ((*tvol.m_boundarySurfaces)[face])->m_outsideVolumeArray = Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(outsidevolarray); } 
+{  ((*tvol.m_boundarySurfaces)[face])->setOutsideVolumeArray(Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(outsidevolarray)); } 
 
 void Trk::TrackingVolumeManipulator::setOutsideVolumeArray(const Trk::TrackingVolume& tvol,
                                                            Trk::BoundarySurfaceFace face,
                                                            Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >outsidevolarray) const         
-{  ((*tvol.m_boundarySurfaces)[face])->m_outsideVolumeArray = Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(outsidevolarray); } 
+{  ((*tvol.m_boundarySurfaces)[face])->setOutsideVolumeArray(Trk::SharedObject<Trk::BinnedArray<Trk::TrackingVolume> >(outsidevolarray)); } 
 
 
 void Trk::TrackingVolumeManipulator::confineVolume(const TrackingVolume& tvol,
@@ -74,7 +74,7 @@ void Trk::TrackingVolumeManipulator::confineVolume(const TrackingVolume& tvol,
 {
   const std::vector< SharedObject<const BoundarySurface<TrackingVolume> > > bounds = tvol.boundarySurfaces();
   for (unsigned int ib = 0; ib < bounds.size(); ib++) {
-    if ( bounds[ib].get()->m_outsideVolume == 0 )  bounds[ib].get()->m_outsideVolume = outsideVol; 
-    if ( bounds[ib].get()->m_insideVolume == 0 )  bounds[ib].get()->m_insideVolume = outsideVol; 
+    if ( bounds[ib].get()->outsideVolume() == 0 )  bounds[ib].get()->setOutsideVolume(outsideVol); 
+    if ( bounds[ib].get()->insideVolume() == 0 )   bounds[ib].get()->setInsideVolume(outsideVol); 
   }
 }
diff --git a/Tracking/TrkDetDescr/TrkVolumes/TrkVolumes/BoundarySurface.h b/Tracking/TrkDetDescr/TrkVolumes/TrkVolumes/BoundarySurface.h
index 3a11d55c461705208caa4289fb0eac5f48410da8..35e3115ab97b1a46a321bc4f5f5fe926b2f17878 100755
--- a/Tracking/TrkDetDescr/TrkVolumes/TrkVolumes/BoundarySurface.h
+++ b/Tracking/TrkDetDescr/TrkVolumes/TrkVolumes/BoundarySurface.h
@@ -19,6 +19,7 @@
 #include "GaudiKernel/MsgStream.h"
 
 #include "GeoPrimitives/GeoPrimitives.h"
+#include "CxxUtils/checker_macros.h"
 
 namespace Trk {
  
@@ -49,11 +50,6 @@ class Surface;
 
     /** typedef the BinnedArray */
     typedef BinnedArray<Tvol> VolumeArray; 
-    
-    /** delcare the TrackingVolume Manipulator as friend */
-    friend class TrackingVolumeManipulator;
-    /** delcare the TrackingVolume as friend */
-    friend class TrackingVolume;
 
     public:
      /** Default Constructor - needed for pool and inherited classes */
@@ -106,24 +102,79 @@ class Surface;
      
      /** output debug information */
      void debugInfo(MsgStream& msg) const;
-         
-   protected:         
-     mutable const Tvol*                 m_insideVolume;
-     mutable const Tvol*                 m_outsideVolume;
-     mutable SharedObject<VolumeArray>   m_insideVolumeArray;
-     mutable SharedObject<VolumeArray>   m_outsideVolumeArray;
+   
+
+     /** getters/setters for inside/outside Volume*/
+     Tvol const* insideVolume() const;
+     void setInsideVolume(const Tvol*);
+     void setInsideVolume ATLAS_NOT_CONST_THREAD_SAFE(const Tvol*) const ;
+     
+     Tvol const* outsideVolume() const;
+     void setOutsideVolume(const Tvol*);
+     void setOutsideVolume ATLAS_NOT_CONST_THREAD_SAFE (const Tvol*) const ;
+
+     
+     /** getters/setters for inside/outside Volume arrays */
+     const SharedObject<VolumeArray>& insideVolumeArray() const;
+     void setInsideVolumeArray(const SharedObject<VolumeArray>&);
+     void setInsideVolumeArray ATLAS_NOT_CONST_THREAD_SAFE (const SharedObject<VolumeArray>&) const ;
+     const SharedObject<VolumeArray>& outsideVolumeArray() const;
+     void setOutsideVolumeArray(const SharedObject<VolumeArray>&);
+     void setOutsideVolumeArray ATLAS_NOT_CONST_THREAD_SAFE (const SharedObject<VolumeArray>&) const;
+
+    protected:         
+     const Tvol*                 m_insideVolume;
+     const Tvol*                 m_outsideVolume;
+     SharedObject<VolumeArray>   m_insideVolumeArray;
+     SharedObject<VolumeArray>   m_outsideVolumeArray;
                              
   };
-  
-  template <class Tvol> inline void BoundarySurface<Tvol>::debugInfo(MsgStream& msg) const
-  {
-  msg << "BoundarySurface debug information: " << std::endl;
-  msg << "     -> pointer to insideVolume         = " << m_insideVolume       << std::endl;
-  msg << "     -> pointer to insideVolumeArray    = " << m_insideVolumeArray.get()  << std::endl;
-  msg << "     -> pointer to outsideVolume        = " << m_outsideVolume      << std::endl;
-  msg << "     -> pointer to outsideVolumeArray   = " << m_outsideVolumeArray.get() << endmsg;
-  
-  
+
+  template <class Tvol> Tvol const* BoundarySurface<Tvol>::insideVolume() const { return m_insideVolume; }
+  template <class Tvol> void BoundarySurface<Tvol>::setInsideVolume(const Tvol *vol) { m_insideVolume = vol; }
+  template <class Tvol> void BoundarySurface<Tvol>::setInsideVolume ATLAS_NOT_CONST_THREAD_SAFE(const Tvol *vol) const {
+    const_cast<BoundarySurface<Tvol> *>(this)->setInsideVolume(vol);
+  }
+
+  template <class Tvol> Tvol const* BoundarySurface<Tvol>::outsideVolume() const { return m_outsideVolume; }
+  template <class Tvol> void BoundarySurface<Tvol>::setOutsideVolume(const Tvol *vol) { m_outsideVolume = vol; }
+  template <class Tvol> void BoundarySurface<Tvol>::setOutsideVolume ATLAS_NOT_CONST_THREAD_SAFE(const Tvol *vol) const {
+    const_cast<BoundarySurface<Tvol> *>(this)->setOutsideVolume(vol);
+  }
+
+  template <class Tvol> const SharedObject<BinnedArray<Tvol>>& BoundarySurface<Tvol>::insideVolumeArray() const {
+    return m_insideVolumeArray;
+  }
+  template <class Tvol>
+  void BoundarySurface<Tvol>::setInsideVolumeArray(const SharedObject<BinnedArray<Tvol>> &volArray) {
+    m_insideVolumeArray = volArray;
+  }
+  template <class Tvol>
+  void BoundarySurface<Tvol>::setInsideVolumeArray
+  ATLAS_NOT_CONST_THREAD_SAFE(const SharedObject<BinnedArray<Tvol>> &volArray) const {
+    const_cast<BoundarySurface<Tvol> *>(this)->setInsideVolumeArray(volArray);
+  }
+
+  template <class Tvol> const SharedObject<BinnedArray<Tvol>>& BoundarySurface<Tvol>::outsideVolumeArray() const {
+    return m_outsideVolumeArray;
+  }
+  template <class Tvol>
+  void BoundarySurface<Tvol>::setOutsideVolumeArray(const SharedObject<BinnedArray<Tvol>> &volArray) {
+    m_outsideVolumeArray = volArray;
+  }
+  template <class Tvol>
+  void BoundarySurface<Tvol>::setOutsideVolumeArray
+  ATLAS_NOT_CONST_THREAD_SAFE(const SharedObject<BinnedArray<Tvol>> &volArray) const {
+    const_cast<BoundarySurface<Tvol> *>(this)->setOutsideVolumeArray(volArray);
+  }
+
+  template <class Tvol>
+  inline void BoundarySurface<Tvol>::debugInfo(MsgStream &msg) const {
+    msg << "BoundarySurface debug information: " << std::endl;
+    msg << "     -> pointer to insideVolume         = " << m_insideVolume << std::endl;
+    msg << "     -> pointer to insideVolumeArray    = " << m_insideVolumeArray.get() << std::endl;
+    msg << "     -> pointer to outsideVolume        = " << m_outsideVolume << std::endl;
+    msg << "     -> pointer to outsideVolumeArray   = " << m_outsideVolumeArray.get() << endmsg; 
   }
   
                          
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx
index 244c5159501d39f6f0cd647a71efc7e4a86fa874..1811dad05bc90c64e67f756d2dce424eac8dd1d5 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx
@@ -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
 */
 
 #include "DenseEnvironmentsAmbiguityProcessorTool.h"
@@ -162,14 +162,16 @@ StatusCode Trk::DenseEnvironmentsAmbiguityProcessorTool::finalize()
 void Trk::DenseEnvironmentsAmbiguityProcessorTool::statistics()
 {
   if (msgLvl(MSG::INFO)) {
-     std::cout << name() << " -- statistics " << std::endl;
+     MsgStream &out=msg(MSG::INFO);
+     out << " -- statistics " << std::endl;
      std::lock_guard<std::mutex> lock( m_statMutex );
-     m_stat.dump(std::cout, m_tryBremFit);
+     m_stat.dump(out, m_tryBremFit);
+     out << endmsg;
   }
   return;
 }
 
-void Trk::DenseEnvironmentsAmbiguityProcessorTool::TrackStat::dump(std::ostream &out, bool try_brem_fit) const
+void Trk::DenseEnvironmentsAmbiguityProcessorTool::TrackStat::dump(MsgStream &out, bool try_brem_fit) const
 {
    // @TODO restore ios
    std::streamsize ss = std::cout.precision();
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.h b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.h
index 6243cba516445580fa109816c0f95aa6bd72dc50..c092f5410337661b1f5b0c9454760f98cd3a3347 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.h
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.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
 */
 
 #ifndef DenseEnvironmentsAmbiguityProcessorTool_H
@@ -138,8 +138,8 @@ namespace Trk {
 
          /** helper for monitoring and validation: does success/failure counting */
          void increment_by_eta(EStatType type, const Track* track, bool updateAll=true);
-         void dumpStatType(std::ostream &out, const std::string &head, EStatType type, unsigned short iw=9) const;
-         void dump(std::ostream &out, bool try_brem_fit) const;
+         void dumpStatType(MsgStream &out, const std::string &head, EStatType type, unsigned short iw=9) const;
+         void dump(MsgStream &out, bool try_brem_fit) const;
 
          const std::vector<float>  &etaBounds() const { return *m_etabounds; }  //!< eta intervals for internal monitoring
 
@@ -374,7 +374,7 @@ void Trk::DenseEnvironmentsAmbiguityProcessorTool::TrackStat::increment_by_eta(E
    }
 }
 
-void Trk::DenseEnvironmentsAmbiguityProcessorTool::TrackStat::dumpStatType(std::ostream &out,
+void Trk::DenseEnvironmentsAmbiguityProcessorTool::TrackStat::dumpStatType(MsgStream &out,
                                                                            const std::string &head,
                                                                            EStatType type,
                                                                            unsigned short iw) const {
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.cxx b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.cxx
index 3f98778410d8ae6e4aa0dbb5e5a78fc398c8b311..73403a01711423afa9e08da3999740de9551b0ad 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.cxx
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.cxx
@@ -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
 */
 
 #include "DenseEnvironmentsAmbiguityScoreProcessorTool.h"
@@ -87,16 +87,18 @@ StatusCode Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::finalize()
 
 void Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::statistics() {
    if (msgLvl(MSG::INFO)) {
-      std::cout << name() << " -- statistics " << std::endl;
+      MsgStream &out=msg(MSG::INFO);
+      out << " -- statistics " << std::endl;
       std::lock_guard<std::mutex> lock( m_statMutex );
-      m_stat.dump(std::cout);
+      m_stat.dump(out);
+      out << endmsg;
    }
 }
 
-void Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::TrackStat::dump(std::ostream &out) const
+void Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::TrackStat::dump(MsgStream &out) const
 {
    // @TODO restore ios
-   std::streamsize ss = std::cout.precision();
+   std::streamsize ss = out.precision();
    int iw=9;
    out << "------------------------------------------------------------------------------------" << std::endl;
    out << "  Number of events processed      :   "<< m_globalCounter[kNevents].value() << std::endl;
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.h b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.h
index f3068cb244f1cf3542fd2131f40427ce5fab79f7..73e016ce01a3b0cdd1702b6992a191263efa36c1 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.h
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityScoreProcessorTool.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
 */
 
 #ifndef DenseEnvironmentsAmbiguityScoreProcessorTool_H
@@ -112,8 +112,8 @@ namespace Trk {
 
          /** helper for monitoring and validation: does success/failure counting */
          void increment_by_eta(EStatType type, const Track* track, bool updateAll=true);
-         void dumpStatType(std::ostream &out, const std::string &head, EStatType type, unsigned short iw=9) const;
-         void dump(std::ostream &out) const;
+         void dumpStatType(MsgStream &out, const std::string &head, EStatType type, unsigned short iw=9) const;
+         void dump(MsgStream &out) const;
 
          const std::vector<float>  &etaBounds() const { return *m_etabounds; }  //!< eta intervals for internal monitoring
 
@@ -207,7 +207,7 @@ void Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::TrackStat::increment_by_
    }
 }
 
-void Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::TrackStat::dumpStatType(std::ostream &out,
+void Trk::DenseEnvironmentsAmbiguityScoreProcessorTool::TrackStat::dumpStatType(MsgStream &out,
                                                                            const std::string &head,
                                                                            EStatType type,
                                                                            unsigned short iw) const {
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.cxx b/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.cxx
index 200823daf9dc105b2d319675150e1a53d504a5fc..026b318a2d2866ce432a250092e763e4bb33a4bc 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.cxx
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.cxx
@@ -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
 */
 
 #include "SimpleAmbiguityProcessorTool.h"
@@ -162,134 +162,139 @@ void Trk::SimpleAmbiguityProcessorTool::statistics()
 {
 
   if (msgLvl(MSG::INFO)) {
+     MsgStream &out=msg(MSG::INFO);
+     out << " -- statistics:" << std::endl;
+     dumpStat(out);
+     out << endmsg;
+  }
+}
+
+void Trk::SimpleAmbiguityProcessorTool::dumpStat(MsgStream &out) const {
     std::lock_guard<std::mutex> lock( m_statMutex );
-    ATH_MSG_INFO (name() << " -- statistics:");
-    std::streamsize ss = std::cout.precision();
+    std::streamsize ss = out.precision();
     int iw=9;
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of events processed      :   "<< m_Nevents << std::endl;
-    std::cout << "  statistics by eta range          ------All---Barrel---Trans.--- Endcap---DBM--- " << std::endl;
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of candidates at input   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of events processed      :   "<< m_Nevents << std::endl;
+    out << "  statistics by eta range          ------All---Barrel---Trans.--- Endcap---DBM--- " << std::endl;
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of candidates at input   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Ncandidates[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Ncandidates[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Ncandidates[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Ncandidates[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Ncandidates[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-    std::cout << "  - candidates rejected score 0   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  - candidates rejected score 0   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandScoreZero[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandScoreZero[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandScoreZero[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandScoreZero[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_NcandScoreZero[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-    std::cout << "  - candidates rejected as double :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  - candidates rejected as double :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandDouble[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandDouble[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandDouble[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NcandDouble[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_NcandDouble[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  candidates with good score      :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << "  candidates with good score      :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreOk[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreOk[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreOk[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreOk[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreOk[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     if (m_tryBremFit) {
-      std::cout << "  + recovered after brem refit    :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + recovered after brem refit    :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefit[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefit[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefit[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefit[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NscoreZeroBremRefit[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     }
-    std::cout << "  candidates rejected score 0     :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  candidates rejected score 0     :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreZero[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreZero[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreZero[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NscoreZero[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_NscoreZero[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     if (m_tryBremFit) {
-      std::cout << "  + rejected failed brem refit    :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + rejected failed brem refit    :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitFailed[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitFailed[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitFailed[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitFailed[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NscoreZeroBremRefitFailed[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-      std::cout << "  + rejected brem refit score 0   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + rejected brem refit score 0   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitScoreZero[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitScoreZero[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitScoreZero[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NscoreZeroBremRefitScoreZero[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NscoreZeroBremRefitScoreZero[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     }
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  number of normal fits           :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << "  number of normal fits           :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Nfits[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Nfits[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Nfits[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Nfits[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Nfits[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     if (m_tryBremFit) {
-      std::cout << "  + 2nd brem fit for failed fit   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  + 2nd brem fit for failed fit   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NrecoveryBremFits[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NrecoveryBremFits[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NrecoveryBremFits[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NrecoveryBremFits[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NrecoveryBremFits[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-      std::cout << "  normal brem fits for electrons  :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  normal brem fits for electrons  :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NbremFits[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NbremFits[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NbremFits[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NbremFits[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
                 << m_NbremFits[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     }
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  sum of succesful fits           :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << "  sum of succesful fits           :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NgoodFits[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NgoodFits[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NgoodFits[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NgoodFits[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_NgoodFits[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-    std::cout << "  sum of failed fits              :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  sum of failed fits              :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NfailedFits[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NfailedFits[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NfailedFits[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NfailedFits[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_NfailedFits[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of subtracks created     :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of subtracks created     :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NsubTrack[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NsubTrack[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NsubTrack[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NsubTrack[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::endl;
-    std::cout << "  Number of candidates excluded   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "  Number of candidates excluded   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NnoSubTrack[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NnoSubTrack[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NnoSubTrack[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_NnoSubTrack[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::endl;
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << "  Number of tracks accepted       :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << "  Number of tracks accepted       :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Naccepted[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Naccepted[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Naccepted[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 	      << m_Naccepted[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::setiosflags(std::ios::dec) << std::setw(iw)
               << m_Naccepted[Trk::SimpleAmbiguityProcessorTool::iDBM] << std::endl;
     if (m_tryBremFit) {
-      std::cout << "  including number of brem fits   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
+      out << "  including number of brem fits   :" << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NacceptedBrem[Trk::SimpleAmbiguityProcessorTool::iAll] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NacceptedBrem[Trk::SimpleAmbiguityProcessorTool::iBarrel] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NacceptedBrem[Trk::SimpleAmbiguityProcessorTool::iTransi] << std::setiosflags(std::ios::dec) << std::setw(iw)
 		<< m_NacceptedBrem[Trk::SimpleAmbiguityProcessorTool::iEndcap] << std::endl;
     }
-    std::cout << "---------------------------------------------------------------------------------" << std::endl;
-    std::cout << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setprecision(2)
+    out << "---------------------------------------------------------------------------------" << std::endl;
+    out << std::setiosflags(std::ios::fixed | std::ios::showpoint) << std::setprecision(2)
 	      << "    definition: ( 0.0 < Barrel < " << m_etabounds[iBarrel-1] << " < Transition < " << m_etabounds[iTransi-1]
 	      << " < Endcap < " << m_etabounds[iEndcap-1] << " DBM )" << std::endl;
-    std::cout << "-------------------------------------------------------------------------------" << std::endl;
-    std::cout.precision (ss);
-  }
-  return;
+    out << "-------------------------------------------------------------------------------" << std::endl;
+    out.precision (ss);
 }
 
 //==================================================================================================
diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.h b/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.h
index c3b3cecf393f55c258d3b8a2ce45e6ac9cb0fbe4..faf092044cbf7bf6a16dc9e6eee8c1f3f86f4288 100644
--- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.h
+++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/SimpleAmbiguityProcessorTool.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
 */
 
 #ifndef SIMPLEAMBIGUITYPROCESSORTOOL_H
@@ -116,7 +116,10 @@ namespace Trk {
 
       /** print out tracks and their scores for debugging*/
       void dumpTracks(const TrackCollection& tracks) const;
-	
+
+      /** dump the accumulated statistics */
+      void dumpStat(MsgStream &out) const;
+
       // private data members
 
       /** brem recovery mode with brem fit ? */
diff --git a/Trigger/TrigAlgorithms/TrigHLTJetRec/TrigHLTJetRec/TrigHLTJetRecBase_tpl.h b/Trigger/TrigAlgorithms/TrigHLTJetRec/TrigHLTJetRec/TrigHLTJetRecBase_tpl.h
index 1c100a4baa0a103ace940580241e792cb47aa7b2..0be5e5346dd6569056dbc8a558ddf6aa52e015a2 100644
--- a/Trigger/TrigAlgorithms/TrigHLTJetRec/TrigHLTJetRec/TrigHLTJetRecBase_tpl.h
+++ b/Trigger/TrigAlgorithms/TrigHLTJetRec/TrigHLTJetRec/TrigHLTJetRecBase_tpl.h
@@ -24,7 +24,9 @@
 template<typename InputContainer>
 TrigHLTJetRecBase<InputContainer>::TrigHLTJetRecBase(const std::string& name, 
                                                      ISvcLocator* pSvcLocator):
-HLT::FexAlgo( name, pSvcLocator ) {
+HLT::FexAlgo( name, pSvcLocator ),
+m_jetBuildTool("",this)
+{
   declareProperty( "jetBuildTool", m_jetBuildTool);
   // declareProperty( "pseudoJetGetter", m_pseudoJetGetter);
   declareProperty( "cluster_calib", m_clusterCalib);
diff --git a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTEnergyDensity.cxx b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTEnergyDensity.cxx
index 55ec4e4ef0450ca76fef44d2993a6a707b203c3b..abe9bb4f1cbb9dbacd5d6a75f424305e8b34e600 100644
--- a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTEnergyDensity.cxx
+++ b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTEnergyDensity.cxx
@@ -18,16 +18,17 @@
 
 TrigHLTEnergyDensity::TrigHLTEnergyDensity(const std::string& name, 
                                            ISvcLocator* pSvcLocator):
-  HLT::FexAlgo(name, pSvcLocator) {
+  HLT::FexAlgo(name, pSvcLocator)//,
+  //     m_energyDensityTool("",this),
+  //   m_pseudoJetGetter("",this)
+{  
   declareProperty("energyDensityTool", m_energyDensityTool);
   declareProperty("pseudoJetGetter", m_pseudoJetGetter);
   declareProperty("eventShapeSGKey", m_eventShapeSGKey);
   declareProperty("caloClusterContainerSGKey", m_caloClusterContainerSGKey="");
   declareProperty( "cluster_calib", m_clusterCalib);
 
-
   declareMonitoredVariable("energyDensity", m_energyDensity);
-
 }
 
 
diff --git a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTJetRecGroomer.cxx b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTJetRecGroomer.cxx
index 6b8018cbe53fd52256e851de9995232ea283ec6e..39063cdef0d8945261c93c756d3a6d46b45e2812 100644
--- a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTJetRecGroomer.cxx
+++ b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTJetRecGroomer.cxx
@@ -13,7 +13,7 @@
 
 TrigHLTJetRecGroomer::TrigHLTJetRecGroomer(const std::string& name,
                                            ISvcLocator* pSvcLocator)
-    : TrigHLTJetRecFromCluster(name,pSvcLocator)
+  : TrigHLTJetRecFromCluster(name,pSvcLocator),m_jetTrimTool("",this)
 {
     declareProperty("jetTrimTool",m_jetTrimTool);
 }
diff --git a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTTrackMomentHelpers.cxx b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTTrackMomentHelpers.cxx
index 38ff14451d86265440cf6e5cf42c13f6b3526a23..e776e75b73ad45bd3fe9e1d9bd9e9699d59ed7b8 100644
--- a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTTrackMomentHelpers.cxx
+++ b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TrigHLTTrackMomentHelpers.cxx
@@ -16,7 +16,9 @@
 
 TrigHLTTrackMomentHelpers::TrigHLTTrackMomentHelpers(const std::string& name, 
                                            ISvcLocator* pSvcLocator):
-  HLT::FexAlgo(name, pSvcLocator) {
+  HLT::FexAlgo(name, pSvcLocator),
+  m_tvassocTool("",this) 
+{
   declareProperty("tvassocTool", m_tvassocTool);
   declareProperty("trackSGkey", m_trackSGKey);
   declareProperty("primVtxSGkey", m_primVtxSGKey);
diff --git a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetBuildTool.cxx b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetBuildTool.cxx
index 593b99c764c55f6618864f77e67844bf19be6de9..14e591edb494cd13d48f22d522e2c1fa2164aa61 100644
--- a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetBuildTool.cxx
+++ b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetBuildTool.cxx
@@ -21,7 +21,11 @@ using xAOD::JetContainer;
 
 //**********************************************************************
 TriggerJetBuildTool::TriggerJetBuildTool(const std::string& name): 
-  AsgTool(name), m_finder("") {
+  AsgTool(name),
+  m_finder("",this), 
+  m_modifiers(this),
+  m_iParticleRejecter("",this)
+{
   declareProperty("JetFinder", m_finder);
   declareProperty("JetModifiers", m_modifiers);
   declareProperty("NoNegE", m_noNegE);
diff --git a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetGroomerTool.cxx b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetGroomerTool.cxx
index 49c9f4e5b4a0172d7eb1fb5135a0c28a35b1dc65..8a6017e22f610978759c66a50286419ebbf6ce53 100644
--- a/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetGroomerTool.cxx
+++ b/Trigger/TrigAlgorithms/TrigHLTJetRec/src/TriggerJetGroomerTool.cxx
@@ -8,7 +8,7 @@ using xAOD::JetContainer;
 
 //**********************************************************************
 TriggerJetGroomerTool::TriggerJetGroomerTool(const std::string& name): 
-  AsgTool(name), m_groomer("") {
+  AsgTool(name), m_groomer("",this),m_modifiers(this),m_jetPseudoJetRetriever("",this) {
   declareProperty("JetGroomer", m_groomer);
   declareProperty("JetModifiers", m_modifiers);
   declareProperty("JetPseudojetRetriever", m_jetPseudoJetRetriever);
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py b/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py
deleted file mode 100644
index a1daadf68defce88744c3b5b58e69347ae5316b0..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py
+++ /dev/null
@@ -1,118 +0,0 @@
-#
-#  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
-#
-doWriteRDOTrigger = False
-doWriteBS = False
-include("TriggerJobOpts/runHLT_standalone.py")
-
-from AthenaCommon.AlgSequence import AlgSequence
-topSequence = AlgSequence()
-
-# ----------------------------------------------------------------
-# Setup Views
-# ----------------------------------------------------------------
-from AthenaCommon.AlgSequence import AthSequencer
-
-if TriggerFlags.doCalo:
-
-  if ( True ) :
-
-     from AthenaCommon.CFElements import parOR, seqAND, seqOR, stepSeq
-
-     testChains = ["HLT_j85_L1J20", "HLT_j45_L1J20"]
-     from TrigUpgradeTest.TestUtils import makeChain
-     for c in  testChains:
-       makeChain(  name=c, L1Thresholds=["J20"], ChainSteps=[])
-
-     from TriggerMenuMT.HLTMenuConfig.Menu.HLTMenuJSON import generateJSON
-     generateJSON()
-
-     from TrigConfigSvc.TrigConfigSvcCfg import getHLTConfigSvc
-     svcMgr += getHLTConfigSvc()
-
-     # get L1 decisins
-     for unpack in topSequence.L1Decoder.roiUnpackers:
-         if unpack.name() is "JRoIsUnpackingTool":
-             L1JetDecisions=unpack.Decisions
-
-     from L1Decoder.L1DecoderConfig import mapThresholdToL1RoICollection
-     inputRoIs=mapThresholdToL1RoICollection("FS")
-     hypoDecisions=L1JetDecisions
-
-     addFiltering=True
-
-     if addFiltering:
-         #filter
-         from DecisionHandling.DecisionHandlingConf import RoRSeqFilter
-         filterL1RoIsAlg = RoRSeqFilter("filterL1RoIsAlg")
-         filterL1RoIsAlg.Input = [hypoDecisions]
-         filterL1RoIsAlg.Output = ["FilteredL1JET"]
-         filterL1RoIsAlg.Chains = testChains
-
-
-     from TrigUpgradeTest.jetMenuHelper import jetCFSequenceFromString
-     (recoSequence, InputMakerAlg, sequenceOut) = jetCFSequenceFromString("a4_tc_em_subjes")
-     InputMakerAlg.InputMakerInputDecisions = filterL1RoIsAlg.Output
-     InputMakerAlg.InputMakerOutputDecisions = [ x+"Out" for x in InputMakerAlg.InputMakerInputDecisions ]
-     inputRoIs= InputMakerAlg.RoIs
-     hypoDecisions= InputMakerAlg.InputMakerOutputDecisions[0]
-
-
-     from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetHypoAlgMT
-     from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromDict
-     hypo = TrigJetHypoAlgMT("jethypo")
-     hypo.Jets = sequenceOut
-     hypo.HypoInputDecisions = hypoDecisions
-     hypo.HypoOutputDecisions = "jetDecisions"
-
-     from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT
-     hypo.HypoTools = [trigJetHypoToolFromDict(c)
-                       for c in TriggerConfigHLT.dicts().values()]
-     print hypo
-     for tool in hypo.HypoTools:
-         print tool
-
-
-
-
-     ### CF construction ###
-     def summarySteps ( name, decisions ):
-        from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg
-        summarySteps = TriggerSummaryAlg( "TriggerSummary"+name )
-        summarySteps.InputDecision = "L1DecoderSummary"
-        summarySteps.FinalDecisions = decisions
-        return summarySteps
-
-
-     # finalize tree
-     if addFiltering:
-        jetSequence = parOR("jetSequence", [ InputMakerAlg, recoSequence, hypo ])
-        jetStep = seqAND("jetStep", [filterL1RoIsAlg, jetSequence ] )
-
-     else:
-       jetStep = seqAND("jetSequence", [ recoSequence, hypo ])
-
-
-     summary0 = summarySteps("Step1", [hypo.HypoOutputDecisions] )
-     step0 = seqOR("step0", [ jetStep, summary0 ] )
-     if addFiltering:
-        step0filter = parOR("step0filter", [ filterL1RoIsAlg ] )
-        HLTsteps = seqAND("HLTsteps", [ step0filter, step0 ]  )
-     else:
-        HLTsteps = seqAND("HLTsteps", [ step0 ]  )
-
-     ### final monitor algorithm
-     from TrigSteerMonitor.TrigSteerMonitorConf import TrigSignatureMoniMT, DecisionCollectorTool
-     from TrigOutputHandling.TrigOutputHandlingConf import DecisionSummaryMakerAlg
-     summMaker = DecisionSummaryMakerAlg()
-     summMaker.FinalDecisionKeys = [ hypo.HypoOutputDecisions ]
-     summMaker.FinalStepDecisions = dict.fromkeys( testChains, hypo.HypoOutputDecisions )
-
-
-     mon = TrigSignatureMoniMT()
-
-     hltTop = seqOR( "hltTop", [ HLTsteps, summMaker, mon ] )
-     topSequence += hltTop
-
-     from AthenaCommon.AlgSequence import dumpMasterSequence
-     dumpMasterSequence()
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_jet_build.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_jet_build.sh
deleted file mode 100755
index ec73b07b3b26c2ed640f2c79f02372b8bcb59726..0000000000000000000000000000000000000000
--- a/Trigger/TrigValidation/TrigUpgradeTest/test/test_trigUpgr_jet_build.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/bash
-# art-description: athenaMT trigger test using simpleJetJob job options
-# art-type: build
-# art-include: master/Athena
-# Skipping art-output which has no effect for build tests.
-# If you create a grid version, check art-output in existing grid tests.
-
-export EVENTS=20
-export THREADS=1
-export SLOTS=1
-export JOBOPTION="TrigUpgradeTest/simpleJetJob.py"
-export EXTRA="createHLTMenuExternally=True"
-
-# This test doesn't produce any output useful for RegTest, so do a dummy reference comparison
-export REGTESTEXP="leaving with code"
-export REGTESTREF=`find_data.py TrigUpgradeTest/dummy_regtest.ref`
-
-# Skip dumping chain counts because this test doesn't produce the histogram including them
-export SKIP_CHAIN_DUMP=1
-
-source exec_TrigUpgradeTest_art_athenaMT.sh
-source exec_TrigUpgradeTest_art_post.sh
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_run2.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_run2.py
index 21e2ac7a8de8136a61a817566ff7f93383d316ca..7caea9664c04b830ded41e4a310c2e79b309691e 100755
--- a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_run2.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone_run2.py
@@ -263,7 +263,6 @@ else:           # More data modifiers
                                 #'disablePixels',
                                 #'disableSCTBarrel',
                                 'useDynamicAlignFolders',
-                                'enableALFAMon',
     ]
 
 #make some more common trig cost operations easier to setup
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py
index 0d2d170260a5666b96bc561406ac27266d57792e..4f90032169883f4e94ea4add67e51643507af65b 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetSequenceSetup.py
@@ -87,9 +87,6 @@ def bJetStep2Sequence():
     InputMakerAlg.InViewRoIs = "InViewRoIs"
     InputMakerAlg.InViewJets = "InViewJets"
         
-    # View Test Algorithm
-    import AthenaCommon.CfgMgr as CfgMgr
-    viewTestAlg = CfgMgr.AthViews__ViewTestAlg( "view_testBjet2" )
 
     # Second stage of Fast Tracking and Precision Tracking
     from TriggerMenuMT.HLTMenuConfig.Bjet.BjetTrackingConfiguration import getSecondStageBjetTracking
@@ -99,8 +96,7 @@ def bJetStep2Sequence():
     from TriggerMenuMT.HLTMenuConfig.Bjet.BjetFlavourTaggingConfiguration import getFlavourTagging
     flavourTaggingAlgs = getFlavourTagging( inputJets=InputMakerAlg.InViewJets, inputVertex=prmVtxKey, inputTracks=PTTrackParticles[0] )
 
-
-    preAlgs = [ viewTestAlg ]
+    preAlgs = []
 
     bJetBtagSequence = seqAND( "bJetBtagSequence", preAlgs + secondStageAlgs + flavourTaggingAlgs )
     InputMakerAlg.ViewNodeName = "bJetBtagSequence"