diff --git a/Reconstruction/RecoTools/CaloClusterMatching/CMakeLists.txt b/Reconstruction/RecoTools/CaloClusterMatching/CMakeLists.txt
index 62e999e1202d8946b5ac5de07f44675a25deccfa..1a03fad370a90ba29995f3be4cc1d2beec7352bd 100644
--- a/Reconstruction/RecoTools/CaloClusterMatching/CMakeLists.txt
+++ b/Reconstruction/RecoTools/CaloClusterMatching/CMakeLists.txt
@@ -12,6 +12,7 @@ atlas_depends_on_subdirs( PUBLIC
                           GaudiKernel
                           PRIVATE
                           Control/AthenaBaseComps
+                          Control/CxxUtils
                           Event/xAOD/xAODCore )
 
 # Component(s) in the package:
diff --git a/Reconstruction/RecoTools/CaloClusterMatching/cmt/requirements b/Reconstruction/RecoTools/CaloClusterMatching/cmt/requirements
index 19db3eb80df69bdc0ff2156bca2499816483f384..4e39f6cf34459f254572880fb3bfeed55b689562 100644
--- a/Reconstruction/RecoTools/CaloClusterMatching/cmt/requirements
+++ b/Reconstruction/RecoTools/CaloClusterMatching/cmt/requirements
@@ -16,6 +16,7 @@ use AsgTools		AsgTools-*		Control/AthToolSupport
 private
 use xAODCore		xAODCore-*		Event/xAOD
 use AthenaBaseComps	AthenaBaseComps-*	Control
+use CxxUtils            CxxUtils-*              Control
 
 end_private
 
diff --git a/Reconstruction/RecoTools/CaloClusterMatching/src/CaloClusterMatchingTool.cxx b/Reconstruction/RecoTools/CaloClusterMatching/src/CaloClusterMatchingTool.cxx
index 19c297e019a70f9afb47ca0d2b63618d3e0d8f91..7e6af17009c93b1701d4aade52c0bd307b0eec0e 100644
--- a/Reconstruction/RecoTools/CaloClusterMatching/src/CaloClusterMatchingTool.cxx
+++ b/Reconstruction/RecoTools/CaloClusterMatching/src/CaloClusterMatchingTool.cxx
@@ -17,6 +17,7 @@
 // FrameWork includes
 #include "GaudiKernel/IToolSvc.h"
 #include "TopoClusterMap.h"
+#include "CxxUtils/make_unique.h"
 #include <algorithm>
 #include <utility>
 
@@ -81,10 +82,10 @@ namespace ClusterMatching {
 
     const CaloClusterContainer* topoclusters(nullptr);
     ATH_CHECK( evtStore()->retrieve(topoclusters,m_clustersIn) );
-    TopoClusterMap* tcmap = new TopoClusterMap;
+    auto tcmap = CxxUtils::make_unique<TopoClusterMap>();
     ATH_CHECK( tcmap->SetTopoClusters(topoclusters) );
 
-    ATH_CHECK( evtStore()->record(tcmap,m_mapName) );
+    ATH_CHECK( evtStore()->record(std::move(tcmap),m_mapName) );
     return StatusCode::SUCCESS;
   }
 
diff --git a/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.cxx b/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.cxx
index 737a7168000cc44f3cd7163f28d6f056b72e7701..16b154abcd5e7b678b724beb6bcb8175dd69282d 100644
--- a/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.cxx
+++ b/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.cxx
@@ -23,12 +23,12 @@ bool CompareClusterET (const xAOD::CaloCluster* c1, const xAOD::CaloCluster* c2)
 TopoClusterMap::TopoClusterMap(float minEta, float minPhi, float maxEta, float maxPhi,
 			       float dEta, float dPhi)
 {
-  _minEta = minEta;
-  _minPhi = minPhi;
-  _maxEta = maxEta;
-  _maxPhi = maxPhi;
-  _dEta = dEta;
-  _dPhi = dPhi;
+  m_minEta = minEta;
+  m_minPhi = minPhi;
+  m_maxEta = maxEta;
+  m_maxPhi = maxPhi;
+  m_dEta = dEta;
+  m_dPhi = dPhi;
 }
 
 //Destructor.
@@ -53,7 +53,7 @@ StatusCode TopoClusterMap::SetTopoClusters(const xAOD::CaloClusterContainer *inp
     phi = cc->phi();
 
     //Put it in appropriate vector.
-    _map[GetEtaPhiKeys(eta,phi).first][GetEtaPhiKeys(eta,phi).second].push_back(cc);
+    m_map[GetEtaPhiKeys(eta,phi).first][GetEtaPhiKeys(eta,phi).second].push_back(cc);
   }
 
   SortGridVectors();
@@ -67,7 +67,7 @@ void TopoClusterMap::InsertTopoCluster(xAOD::CaloCluster* topo) {
   double eta(topo->phi()), phi(topo->phi());
 
   //Put it in appropriate vector.
-  _map.at(GetEtaPhiKeys(eta,phi).first).at(GetEtaPhiKeys(eta,phi).second).push_back(topo);
+  m_map.at(GetEtaPhiKeys(eta,phi).first).at(GetEtaPhiKeys(eta,phi).second).push_back(topo);
 
   //Re-sort the vector according to Et.
   SortGridVector(GetEtaPhiKeys(eta,phi).first, GetEtaPhiKeys(eta,phi).second);
@@ -77,38 +77,38 @@ void TopoClusterMap::InsertTopoCluster(xAOD::CaloCluster* topo) {
 //Boolean comparison somewhere here that sorts vectors in grid by Et.
 void TopoClusterMap::SortGridVectors() {
   
-  for (int i = 0; i <= (GetEtaPhiKeys(_maxEta, _maxPhi).first); i++)
-    for (int j = 0; j <= (GetEtaPhiKeys(_maxEta, _maxPhi).second); j++)
+  for (int i = 0; i <= (GetEtaPhiKeys(m_maxEta, m_maxPhi).first); i++)
+    for (int j = 0; j <= (GetEtaPhiKeys(m_maxEta, m_maxPhi).second); j++)
       SortGridVector(i,j);
 
 }
 
 void TopoClusterMap::SortGridVector(int eta_key, int phi_key) {
 
-  if (_map[eta_key][phi_key].size()>0) 
-    sort( _map[eta_key][phi_key].begin(), _map[eta_key][phi_key].end(), CompareClusterET );
+  if (m_map[eta_key][phi_key].size()>0) 
+    sort( m_map[eta_key][phi_key].begin(), m_map[eta_key][phi_key].end(), CompareClusterET );
 }
 
 void TopoClusterMap::ClearMap() {
 
-  for (int i = 0; i <= (GetEtaPhiKeys(_maxEta, _maxPhi).first); i++)
-    for (int j = 0; j <= (GetEtaPhiKeys(_maxEta, _maxPhi).second); j++)
-      _map[i][j].clear();
+  for (int i = 0; i <= (GetEtaPhiKeys(m_maxEta, m_maxPhi).first); i++)
+    for (int j = 0; j <= (GetEtaPhiKeys(m_maxEta, m_maxPhi).second); j++)
+      m_map[i][j].clear();
 }
 
 // void TopoClusterMap::DumpMapContents() {
 
-//   for (int i = 0; i <= (GetEtaPhiKeys(_maxEta, _maxPhi).first); i++)
-//     for (int j = 0; j <= (GetEtaPhiKeys(_maxEta, _maxPhi).second); j++) {
-//       ATH_MSG_DEBUG("Size of topocluster vector at (" << i << "," << j << "): " << _map[i][j].size());
-//       if (_map[i][j].size()) {
+//   for (int i = 0; i <= (GetEtaPhiKeys(m_maxEta, m_maxPhi).first); i++)
+//     for (int j = 0; j <= (GetEtaPhiKeys(m_maxEta, m_maxPhi).second); j++) {
+//       ATH_MSG_DEBUG("Size of topocluster vector at (" << i << "," << j << "): " << m_map[i][j].size());
+//       if (m_map[i][j].size()) {
 // 	ATH_MSG_DEBUG("Contents of vector:");
-// 	for (unsigned int k = 0; k < _map[i][j].size(); k++) {
-// 	  //ATH_MSG_DEBUG("E: %f, eta: %f, phi: %f, Pt: %f \n",(_map[i][j])[k]->e(), (_map[i][j])[k]->eta(), (_map[i][j])[k]->phi(), (_map[i][j])[k]->pt());
-// 	  ATH_MSG_DEBUG("E: " << (_map[i][j])[k]->e()
-// 			<< ", eta: "     << (_map[i][j])[k]->eta()
-// 			<< ", phi: "     << (_map[i][j])[k]->phi()
-// 			<< ", Pt:  "     << (_map[i][j])[k]->pt());
+// 	for (unsigned int k = 0; k < m_map[i][j].size(); k++) {
+// 	  //ATH_MSG_DEBUG("E: %f, eta: %f, phi: %f, Pt: %f \n",(m_map[i][j])[k]->e(), (m_map[i][j])[k]->eta(), (m_map[i][j])[k]->phi(), (m_map[i][j])[k]->pt());
+// 	  ATH_MSG_DEBUG("E: " << (m_map[i][j])[k]->e()
+// 			<< ", eta: "     << (m_map[i][j])[k]->eta()
+// 			<< ", phi: "     << (m_map[i][j])[k]->phi()
+// 			<< ", Pt:  "     << (m_map[i][j])[k]->pt());
 // 	}
 //       }
 //     }
@@ -152,14 +152,14 @@ std::vector<const xAOD::CaloCluster*> TopoClusterMap::RetrieveTopoClusters(doubl
 
     for (int ieta = lower_keys.first; ieta <= upper_keys.first; ieta++)
       for (int iphi = lower_keys.second; iphi <= upper_keys.second; iphi++)
-	clusters.insert(clusters.end(), _map.at(ieta).at(iphi).begin(), _map.at(ieta).at(iphi).end());
+	clusters.insert(clusters.end(), m_map.at(ieta).at(iphi).begin(), m_map.at(ieta).at(iphi).end());
 
 
     //Re-sort vector according to Et and return it.
     sort( clusters.begin(), clusters.end(), CompareClusterET );
 
   } else {
-    clusters = _map.at(GetEtaPhiKeys(eta,phi).first).at(GetEtaPhiKeys(eta,phi).second);
+    clusters = m_map.at(GetEtaPhiKeys(eta,phi).first).at(GetEtaPhiKeys(eta,phi).second);
   }
 
   return clusters;
diff --git a/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.h b/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.h
index efcdfd4e8176e477f9598356161b1adf47e806cc..3c280f68f34f1bc7f174a657d05e6bfd56c2c58c 100644
--- a/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.h
+++ b/Reconstruction/RecoTools/CaloClusterMatching/src/TopoClusterMap.h
@@ -36,7 +36,7 @@ class TopoClusterMap {
   //Function to set TopoClusters.
   StatusCode SetTopoClusters(const xAOD::CaloClusterContainer*);
 
-  TopoCluster2DMap& RetrieveMap() {return _map;}
+  TopoCluster2DMap& RetrieveMap() {return m_map;}
 
   //Routine to retrieve vector of TopoClusters for a given Pt region.
   std::vector<const xAOD::CaloCluster*> RetrieveTopoClusters(double eta, double phi,
@@ -50,23 +50,23 @@ class TopoClusterMap {
   //Routine to retrieve vector of TopoClusters for a given (eta, phi) region.
   inline std::vector<const xAOD::CaloCluster*> RetrieveTopoClusters(int eta_key, int phi_key) const
   {
-    return _map.at(eta_key).at(phi_key);
+    return m_map.at(eta_key).at(phi_key);
   }
 
   //Private routine to translate an input eta, phi into integer keys for map.
   inline std::pair<int,int> GetEtaPhiKeys(double eta, double phi) const {
 
     //Some checks on eta, phi values.
-    if (eta > _maxEta) eta = _maxEta;
-    if (eta < _minEta) eta = _minEta;
-    if (phi > _maxPhi) phi = _maxPhi;
-    if (phi < _minPhi) phi = _minPhi;
+    if (eta > m_maxEta) eta = m_maxEta;
+    if (eta < m_minEta) eta = m_minEta;
+    if (phi > m_maxPhi) phi = m_maxPhi;
+    if (phi < m_minPhi) phi = m_minPhi;
 
     //Need some warnings against max/min eta, phi here, I think.
-    int eta_key = (int)((eta-_minEta)/_dEta);
+    int eta_key = (int)((eta-m_minEta)/m_dEta);
 
     //NOTE: May have to account for phi wraparound here.
-    int phi_key = (int)((phi-_minPhi)/_dPhi);
+    int phi_key = (int)((phi-m_minPhi)/m_dPhi);
 
     return std::pair<int,int>(eta_key,phi_key);
 
@@ -76,11 +76,11 @@ class TopoClusterMap {
 
  private:
 
-  TopoCluster2DMap _map;
+  TopoCluster2DMap m_map;
 
   //Map granularity and range.
-  double _minEta, _minPhi, _maxEta, _maxPhi;
-  double _dEta, _dPhi;
+  double m_minEta, m_minPhi, m_maxEta, m_maxPhi;
+  double m_dEta, m_dPhi;
 
   //Routine to sort topocluster grid elements by Pt.
   void SortGridVectors();