diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h
index 1d2e6b2eab4245c603ef9e0200d539a52dec65a8..86f91a9623ac0fcc7c95240e4c4b4ee4e610c6de 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h
@@ -79,7 +79,7 @@ private:
     InDetPhysValMonitoringTool();
     // Private utility methods
     void fillTrackCutFlow(const asg::AcceptData& accept);
-    void fillCutFlow(const asg::AcceptData& accept, std::vector<std::string> & names, std::vector<int> & cutFlow);
+    static void fillCutFlow(const asg::AcceptData& accept, std::vector<std::string> & names, std::vector<int> & cutFlow);
     // Get truth particles into a vector, possibly using the pileup from the event
     const std::vector<const xAOD::TruthParticle *> getTruthParticles() const;
     std::pair<const std::vector<const xAOD::TruthVertex*>, const std::vector<const xAOD::TruthVertex*>> getTruthVertices() const;
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h
index 1175c1e92976895deba3cda00723309e3a68fd43..feb8150e57e2b1cd576d3c8f5fa08df232dc1f68 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/ResolutionHelper.h
@@ -96,7 +96,7 @@ namespace IDPVM {
     /** helper to report bin and fraction of under-/over- flow events,
      * as accumulated by top-level pull or resolution histogram 
      **/
-    std::string reportUOBinVal(std::string p_histName, std::vector< std::pair<unsigned int,double> > p_vecBinVal);
+    static std::string reportUOBinVal(const std::string& p_histName, const std::vector< std::pair<unsigned int,double> >& p_vecBinVal);
     ///return accumulated messages
     //@{
     std::vector<std::string> getDebugs() { return m_debugs; };
@@ -132,7 +132,7 @@ namespace IDPVM {
     std::vector<std::string> m_infos;
     std::vector<std::string> m_warnings;
     std::vector<std::string> m_errors;
-    void cloneHistogram(TH1D* h, TH1* hcopy);
+    static void cloneHistogram(TH1D* h, TH1* hcopy);
     //@}
     
     //helpers 
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx
index 983215b45b11c89c4c4086d79cbb99142ad98efd..4197c6ca5d19d086405d37300c1745b95a64d86c 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx
@@ -69,8 +69,8 @@ AthTruthSelectionTool::AthTruthSelectionTool(const std::string& type, const std:
 StatusCode
 AthTruthSelectionTool::initialize() {
   // can set cut properties now
-  typedef xAOD::TruthParticle P_t;
-  typedef Accept<P_t> Accept_t;
+  using P_t = xAOD::TruthParticle;
+  using Accept_t = Accept<P_t>;
   //
   const std::vector<Accept_t> filters = {
     // if p.pt=0, TVector3 generates an error when querying p.eta(); a limit of 1e-7 was not found to be enough to
@@ -146,7 +146,7 @@ AthTruthSelectionTool::initialize() {
           ATH_MSG_VERBOSE("Checking particle for intersection with cylinder of radius " << m_radiusCylinder);
           //create surface we extrapolate to and cache it
           const xAOD::TruthVertex* ptruthVertex = p.prodVtx();
-          if (ptruthVertex == 0) {
+          if (ptruthVertex == nullptr) {
             //cannot derive production vertex, reject track
             ATH_MSG_VERBOSE("Rejecting particle without production vertex.");
             return false;
@@ -185,7 +185,7 @@ AthTruthSelectionTool::initialize() {
           ATH_MSG_VERBOSE("Checking particle for intersection with discs of |z| " << m_zDisc);
           //create surface we extrapolate to and cache it
           const xAOD::TruthVertex* ptruthVertex = p.prodVtx();
-          if (ptruthVertex == 0) {
+          if (ptruthVertex == nullptr) {
             //cannot derive production vertex, reject track
             ATH_MSG_VERBOSE("Rejecting particle without production vertex.");
             return false;
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.cxx
index f4f77ac6979c379d5f8648af24792507f95b82c6..53024a02912628973c3b7dd3a9416a82b525fcac 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.cxx
@@ -44,7 +44,7 @@ namespace IDPVM {
       #endif
       return pCache->second;
     }
-    typedef ElementLink<xAOD::TruthParticleContainer> ElementTruthLink_t;
+    using ElementTruthLink_t = ElementLink<xAOD::TruthParticleContainer>;
     const xAOD::TruthParticle* result(nullptr);
     // 0. is there any truth?
     if (trackParticle->isAvailable<ElementTruthLink_t>("truthParticleLink")) {
@@ -64,7 +64,7 @@ namespace IDPVM {
   }
 
   std::string
-  CachedGetAssocTruth::report() const {
+  CachedGetAssocTruth::report() {
     std::string op("No cache report from 'CachedGetAssocTruth' is available in OPT builds.");
     #ifndef NDEBUG
     op = "\nCache report\nNum. calls = " + std::to_string(m_nCalls);
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.h
index d69c64230ea05291293733c37445e635832a9e9a..6e832f28b7aed2ba38abcaa4cb2fe1d923b832d8 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/CachedGetAssocTruth.h
@@ -31,7 +31,7 @@ namespace IDPVM {
     const xAOD::TruthParticle* operator () (const xAOD::TrackParticle* trackParticle);
     const xAOD::TruthParticle* getTruth(const xAOD::TrackParticle* const trackParticle);
     ///Report statistics
-    std::string report() const;
+    static std::string report() ;
   private:
     ///private cache container; map or unordered_map could be used
     std::unordered_map<const xAOD::TrackParticle*, const xAOD::TruthParticle*> m_cache;
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/HistogramDefinitionSvc.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/HistogramDefinitionSvc.cxx
index 793a3a05045d9397d84f3ef674f830df7ac792da..d5bf5710faab99ef95ec5cc7804b42072dfc6996 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/HistogramDefinitionSvc.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/HistogramDefinitionSvc.cxx
@@ -9,6 +9,8 @@
 //  Created by sroe on 07/07/2015.
 //
 
+#include <memory>
+
 #include "InDetPhysValMonitoring/HistogramDefinitionSvc.h"
 #include "ReadFromXmlDom.h"
 #include "IReadHistoDef.h"
@@ -49,7 +51,7 @@ HistogramDefinitionSvc::initialize() {
     return StatusCode::FAILURE;
   }
   if (m_format == TEXT_XML) {
-    m_reader.reset(new ReadFromXmlDom(m_source.value()));
+    m_reader = std::make_unique<ReadFromXmlDom>(m_source.value());
   }
   ATH_MSG_INFO("Reader initialising from " << m_reader->source() << " in " << m_reader->format() << " format.");
   bool ok = m_reader->initialize();
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx
index 316bc34ac46e5f222f8c6bf4bf016b53be73f814..1a078f1efeadf3d4391cca15344ac84b9f0ba33e 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.cxx
@@ -359,7 +359,7 @@ void InDetPerfPlot_VertexTruthMatching::initializePlots() {
     }
 
 }
-const xAOD::Vertex* InDetPerfPlot_VertexTruthMatching::getHSRecoVertexSumPt2(const xAOD::VertexContainer& recoVertices) const {
+const xAOD::Vertex* InDetPerfPlot_VertexTruthMatching::getHSRecoVertexSumPt2(const xAOD::VertexContainer& recoVertices) {
     const xAOD::Vertex* recoHSVertex = nullptr;
     float sumPtMax = -1.;
     const xAOD::TrackParticle* trackTmp = nullptr;
@@ -413,11 +413,11 @@ float InDetPerfPlot_VertexTruthMatching::getLocalPUDensity(const xAOD::TruthVert
     return localPUDensity;
 }
 
-float InDetPerfPlot_VertexTruthMatching::getRecoLongitudinalReso(const xAOD::Vertex* recoVtx) const {
+float InDetPerfPlot_VertexTruthMatching::getRecoLongitudinalReso(const xAOD::Vertex* recoVtx) {
     return std::sqrt(recoVtx->covariancePosition()(2, 2));
 }
 
-float InDetPerfPlot_VertexTruthMatching::getRecoTransverseReso(const xAOD::Vertex* recoVtx) const {
+float InDetPerfPlot_VertexTruthMatching::getRecoTransverseReso(const xAOD::Vertex* recoVtx) {
     float x = recoVtx->x();
     float y = recoVtx->y();
     float xErr2 = recoVtx->covariancePosition()(0, 0);
@@ -481,7 +481,6 @@ void InDetPerfPlot_VertexTruthMatching::fillResoHist(TH1* resoHist, const TH2* r
             safety_counter++;
             mean = fitResult->Parameter(1);
             rms  = itr_rms;
-            continue;
 
         }
 
@@ -603,7 +602,7 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::Vertex* recoHardScatter
         float truthRecoRadialDiff2 = -1.;
         const xAOD::TruthVertex* truthHSVtx = nullptr;
         // Check that we have *exactly* 1 truth HS vertex
-        if (truthHSVertices.size() != 0) {
+        if (!truthHSVertices.empty()) {
             if (truthHSVertices.size() != 1) {
                 ATH_MSG_WARNING("Size of truth HS vertex vector is >1 -- only using the first one in the vector.");
             }
@@ -1033,7 +1032,7 @@ void InDetPerfPlot_VertexTruthMatching::fill(const xAOD::Vertex* recoHardScatter
         fillHisto(m_vx_nVertices_split, number_split_PU,weight);
 
         // Now fill plots relating to the reconstruction of our truth HS vertex (efficiency and resolutions)
-        if (truthHSVertices.size() != 0) {
+        if (!truthHSVertices.empty()) {
             localPUDensity = getLocalPUDensity(truthHSVtx, truthHSVertices, truthPUVertices);
             if (truthHSVtxRecoed) {
                 float residual_z = truthHSVtx->z() - bestRecoHSVtx_truth->z();
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h
index 29373cf17fcc089400e22b794b4ad8a5f104c3f0..b2ad531e1dea9bc3dbd703f9e5df7f29208dc0c9 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_VertexTruthMatching.h
@@ -227,14 +227,14 @@ private:
 private:
     // plot base has no default implementation of this; we use it to book the histos
     void initializePlots();
-    const xAOD::Vertex* getHSRecoVertexSumPt2(const xAOD::VertexContainer& recoVertices) const;
+    static const xAOD::Vertex* getHSRecoVertexSumPt2(const xAOD::VertexContainer& recoVertices) ;
     template<typename U, typename V>
     float getRadialDiff2(const U* vtx1, const V* vtx2) const;
     float getLocalPUDensity(const xAOD::TruthVertex* vtxOfInterest, const std::vector<const xAOD::TruthVertex*>& truthHSVertices, const std::vector<const xAOD::TruthVertex*>& truthPUVertices, const float radialWindow = 2.0) const;
-    float getRecoLongitudinalReso(const xAOD::Vertex* recoVtx) const;
-    float getRecoTransverseReso(const xAOD::Vertex* recoVtx) const;
+    static float getRecoLongitudinalReso(const xAOD::Vertex* recoVtx) ;
+    static float getRecoTransverseReso(const xAOD::Vertex* recoVtx) ;
     const xAOD::TruthVertex* getTruthVertex(const xAOD::Vertex* recoVtx) const;
-    void fillResoHist(TH1* resoHist, const TH2* resoHist2D);
+    static void fillResoHist(TH1* resoHist, const TH2* resoHist2D);
     void finalizePlots();
 };
 
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx
index c7e3a4f9af3db03fd34d3c9b46a6d9bb3711483b..50a66f566b1eb129a94f48a02b2f2140f75eb008 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_nTracks.cxx
@@ -12,7 +12,7 @@
 
 InDetPerfPlot_nTracks::InDetPerfPlot_nTracks(InDetPlotBase* pParent, const std::string& sDir) : InDetPlotBase(pParent,
                                                                                                               sDir),
-  m_counters{0} {
+  m_counters{nullptr} {
   // nop
 }
 
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorAlg.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorAlg.cxx
index 3b50e0c0afcc05c3e57987f7bd216ab3d80d8103..183194a8db850078a9cb60d6bd7cb0ed8a4f2bf8 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorAlg.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysHitDecoratorAlg.cxx
@@ -137,8 +137,8 @@ InDetPhysHitDecoratorAlg::decorateTrack(const xAOD::TrackParticle &particle,
 {
   int trackNumber(0);
 
-  typedef std::tuple<int, int, int, float, float, float, float, int, int, int> SingleResult_t;
-  typedef std::vector<SingleResult_t> TrackResult_t;
+  using SingleResult_t = std::tuple<int, int, int, float, float, float, float, int, int, int>;
+  using TrackResult_t = std::vector<SingleResult_t>;
   const float invalidFloat(-1);
   // const float invalidDouble(std::numeric_limits<double>::quiet_NaN());
   const float invalidRes(invalidFloat), invalidPull(invalidFloat);
@@ -174,7 +174,7 @@ InDetPhysHitDecoratorAlg::decorateTrack(const xAOD::TrackParticle &particle,
       }
       ATH_MSG_DEBUG("Num. track states in track " << ++trackNumber << ": " << allTrackStates.size());
 
-      for (const auto thisTrackState: allTrackStates) {
+      for (const auto *const thisTrackState: allTrackStates) {
         // Copy logic from InDetRttPerformance to get hits/outliers/holes
         // Variable specifying measurement type filled
         SingleResult_t thisResult(invalidResult);
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx
index 5ccba269f47d745d03acd3d44d5ead131a37286d..b7930eeb7c966c7f7753a46aa7bd6926826dd19d 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx
@@ -365,7 +365,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
     //Get the HS vertex position from the truthVertexContainer
     //FIXME: Add plots w.r.t truth HS positions (vertexing plots)
     //
-    const xAOD::TruthVertex* truthVertex = 0;
+    const xAOD::TruthVertex* truthVertex = nullptr;
     if (truthVrt.isValid()) {
       const auto& stdVertexContainer = truthVrt->stdcont();
       //First truth particle vertex?
@@ -393,7 +393,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
   std::vector<const xAOD::TrackParticle*> selectedTracks {};
   selectedTracks.reserve(tracks->size());
   unsigned int nTrackBAT = 0, nTrackSTD = 0, nTrackANT = 0, nTrackTOT = 0;
-  for (const auto thisTrack: *tracks) {
+  for (const auto *const thisTrack: *tracks) {
     //FIXME: Why is this w.r.t the primary vertex?
     const asg::AcceptData& accept = m_trackSelectionTool->accept(*thisTrack, primaryvertex);
     if (m_useTrackSelection and not accept) continue;
@@ -438,7 +438,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
       }
     }
 
-    const bool isAssociatedTruth = associatedTruth ? true : false;
+    const bool isAssociatedTruth = associatedTruth != nullptr;
     const bool isFake = not std::isnan(prob) ? (prob < m_lowProb) : true;
 
     if(isFake) nFakeTracks++;
@@ -590,7 +590,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
       "Cannot open " << m_jetContainerName <<
         " jet container or TruthParticles truth particle container. Skipping jet plots.");
   } else {
-    for (const auto thisJet: *jets) {         // The big jets loop
+    for (const auto *const thisJet: *jets) {         // The big jets loop
       if (not passJetCuts(*thisJet)) {
         continue;
       }
@@ -616,7 +616,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
             if(!accept) continue;
             bool isEfficient(false);
 
-            for (auto thisTrack: *tracks) {
+            for (const auto *thisTrack: *tracks) {
               if (m_useTrackSelection and not (m_trackSelectionTool->accept(*thisTrack, primaryvertex))) {
                 continue;
               }
@@ -640,7 +640,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
         }
       }
 
-      for (auto thisTrack: *tracks) {    // The beginning of the track loop
+      for (const auto *thisTrack: *tracks) {    // The beginning of the track loop
         if (m_useTrackSelection and not (m_trackSelectionTool->accept(*thisTrack, primaryvertex))) {
           continue;
         }
@@ -708,7 +708,7 @@ InDetPhysValMonitoringTool::bookHistograms() {
   ATH_MSG_INFO("Booking hists " << name() << "with detailed level: " << m_detailLevel);
   m_monPlots->initialize();
   std::vector<HistData> hists = m_monPlots->retrieveBookedHistograms();
-  for (auto hist : hists) {
+  for (const auto& hist : hists) {
     ATH_CHECK(regHist(hist.first, hist.second, all)); // ??
   }
   // do the same for Efficiencies, but there's a twist:
@@ -793,7 +793,7 @@ InDetPhysValMonitoringTool::getTruthParticles() const {
         const unsigned int nPileup = truthPileupEventContainer->size();
         tempVec.reserve(nPileup * 200); // quick initial guess, will still save some time
         for (unsigned int i(0); i != nPileup; ++i) {
-          auto eventPileup = truthPileupEventContainer->at(i);
+          const auto *eventPileup = truthPileupEventContainer->at(i);
           // get truth particles from each pileup event
           int ntruth = eventPileup->nTruthParticles();
           ATH_MSG_VERBOSE("Adding " << ntruth << " truth particles from TruthPileupEvents container");
@@ -843,7 +843,7 @@ InDetPhysValMonitoringTool::getTruthVertices() const {
       ATH_MSG_VERBOSE("Getting TruthEvents container.");
       SG::ReadHandle<xAOD::TruthEventContainer> truthEventContainer(m_truthEventName);
       if (truthEventContainer.isValid()) {
-        for (const auto evt : *truthEventContainer) {
+        for (const auto *const evt : *truthEventContainer) {
           truthVtx = evt->truthVertex(0);
           if (truthVtx) {
             truthHSVertices.push_back(truthVtx);
@@ -861,7 +861,7 @@ InDetPhysValMonitoringTool::getTruthVertices() const {
       ATH_MSG_VERBOSE("Getting TruthEvents container.");
       SG::ReadHandle<xAOD::TruthPileupEventContainer> truthPileupEventContainer(m_truthPileUpEventName);
       if (truthPileupEventContainer.isValid()) {
-        for (const auto evt : *truthPileupEventContainer) {
+        for (const auto *const evt : *truthPileupEventContainer) {
           truthVtx = evt->truthVertex(0);
           if (truthVtx) {
             truthPUVertices.push_back(truthVtx);
@@ -881,7 +881,6 @@ InDetPhysValMonitoringTool::getTruthVertices() const {
 void
 InDetPhysValMonitoringTool::fillTrackCutFlow(const asg::AcceptData& accept) {
   fillCutFlow(accept, m_trackCutflowNames, m_trackCutflow);
-  return;
 }
 
 void
@@ -889,7 +888,7 @@ InDetPhysValMonitoringTool::fillCutFlow(const asg::AcceptData& accept, std::vect
                                         std::vector<int>& cutFlow) {
   // initialise cutflows
   if (cutFlow.empty()) {
-    names.push_back("preCut");
+    names.emplace_back("preCut");
     cutFlow.push_back(0);
     for (unsigned int i = 0; i != accept.getNCuts(); ++i) {
       cutFlow.push_back(0);
@@ -909,5 +908,4 @@ InDetPhysValMonitoringTool::fillCutFlow(const asg::AcceptData& accept, std::vect
       cutPositive = false;
     }
   }
-  return;
-}
+  }
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValTruthDecoratorAlg.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValTruthDecoratorAlg.cxx
index 40cc12d5834bdb3ba5b9ab3d1ac68107675647d3..7ab2539ce4f3f0567da7f9402a141a1366284e6b 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValTruthDecoratorAlg.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValTruthDecoratorAlg.cxx
@@ -123,7 +123,7 @@ InDetPhysValTruthDecoratorAlg::decorateTruth(const xAOD::TruthParticle& particle
     return false;
   }
 
-  const xAOD::TruthVertex* ptruthVertex(0);
+  const xAOD::TruthVertex* ptruthVertex(nullptr);
   try{
     ptruthVertex = particle.prodVtx();
   } catch (const std::exception& e) {
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.cxx
index c3269eef1434dfe0e8eb59f992c922a33796b46f..69b3697f18a4f1a761e0056219c971c638ada341 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.cxx
@@ -47,40 +47,35 @@ InDetPlotBase::book(TH1*& pHisto, const SingleHistogramDefinition& hd) {
   if (hd.isValid()) {
     pHisto = Book1D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, false);
   }
-  return;
-}
+  }
 void
 InDetPlotBase::book(TProfile*& pHisto, const SingleHistogramDefinition& hd) {
   if (hd.isValid()) {
     pHisto = BookTProfile(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.yAxis.first,
                           hd.yAxis.second, false);
   }
-  return;
-}
+  }
 void
 InDetPlotBase::book(TProfile2D*& pHisto, const SingleHistogramDefinition& hd) {
   if (hd.isValid()) {
     pHisto = BookTProfile2D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.nBinsY, hd.yAxis.first,
                           hd.yAxis.second, false);
   }
-  return;
-}
+  }
 void
 InDetPlotBase::book(TH2*& pHisto, const SingleHistogramDefinition& hd) {
   if (hd.isValid()) {
     pHisto = Book2D(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, hd.nBinsY, hd.yAxis.first,
                     hd.yAxis.second, false);
   }
-  return;
-}
+  }
 /**/
 void
 InDetPlotBase::book(TEfficiency*& pHisto, const SingleHistogramDefinition& hd) {
   if (hd.isValid()) {
     pHisto = BookTEfficiency(hd.name, hd.allTitles, hd.nBinsX, hd.xAxis.first, hd.xAxis.second, false);
   }
-  return;
-}
+  }
 
 void
 InDetPlotBase::fillHisto(TProfile* pTprofile, const float bin, const float weight, const float weight2) {
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.h
index 12f1f52616af7d68f0b90201b93a2099e16e1438..5686b2f8517e64584a6b8855332adb14571fc3c8 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPlotBase.h
@@ -62,18 +62,18 @@ public:
   void book(TEfficiency*& pHisto, const SingleHistogramDefinition& hd);
 
   // weight2 allows us to weight averaging in the profile
-  void fillHisto(TProfile* pTprofile, const float bin, const float weight, const float weight2=1.0);
-  void fillHisto(TProfile2D* pTprofile, const float xval, const float yval, const float weight, const float weight2=1.0);
+  static void fillHisto(TProfile* pTprofile, const float bin, const float weight, const float weight2=1.0);
+  static void fillHisto(TProfile2D* pTprofile, const float xval, const float yval, const float weight, const float weight2=1.0);
   //
-  void fillHisto(TH1* pTh1, const float value);
-  void fillHisto(TH1* pTh1, const float value, const float weight);
+  static void fillHisto(TH1* pTh1, const float value);
+  static void fillHisto(TH1* pTh1, const float value, const float weight);
   //
-  void fillHisto(TH2* pTh2, const float xval, const float yval);
-  void fillHisto(TH2* pTh2, const float xval, const float yval, const float weight);
+  static void fillHisto(TH2* pTh2, const float xval, const float yval);
+  static void fillHisto(TH2* pTh2, const float xval, const float yval, const float weight);
   //
-  void fillHisto(TH3* pTh3, const float xval, const float yval, const float zval);
+  static void fillHisto(TH3* pTh3, const float xval, const float yval, const float zval);
   //
-  void fillHisto(TEfficiency* pTeff,  const float value, const bool accepted, float weight);
+  static void fillHisto(TEfficiency* pTeff,  const float value, const bool accepted, float weight);
   //
 protected:
   /// book, for use by macro
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx
index 52fd96e3a2a4fc6e9dafdd7493a6a90feb534da9..10602661a506a73cea74b23729f259a857061654 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetRttPlots.cxx
@@ -296,7 +296,7 @@ InDetRttPlots::fill(const xAOD::VertexContainer& vertexContainer, const xAOD::Ve
   if (recoHardScatter) {
     if (m_hardScatterVertexPlots) m_hardScatterVertexPlots->fill(*recoHardScatter, weight);
     if (m_hardScatterVertexTruthMatchingPlots){ 
-      if(truthHSVertices.size()>0 ) m_hardScatterVertexTruthMatchingPlots->fill(*recoHardScatter,truthHSVertices[0],weight);
+      if(!truthHSVertices.empty() ) m_hardScatterVertexTruthMatchingPlots->fill(*recoHardScatter,truthHSVertices[0],weight);
       else m_hardScatterVertexTruthMatchingPlots->fill(*recoHardScatter,nullptr,weight); 
     }
     ATH_MSG_DEBUG("IN InDetRttPlots::fill, filling for all HS vertex");
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.cxx
index 0ebd81227bd1e700f47edf955630e073e09fde2f..5fd472bbc063d0f20ee866a0afbbbb10e107bcfb 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.cxx
@@ -61,7 +61,7 @@ bool
 ReadFromXmlDom::histoDefinitionMap(std::map<std::string, SingleHistogramDefinition>& usersmap) const {
   bool ok(true);
 
-  for (auto i:m_vectorOfDefinitions) {
+  for (const auto& i:m_vectorOfDefinitions) {
     if (i.empty()) {
       continue;
     }
@@ -100,20 +100,20 @@ ReadFromXmlDom::initialize() {
   };
   xercesc::DOMImplementation* impl = xercesc::DOMImplementationRegistry::getDOMImplementation(gLS);
   xercesc::DOMLSParser* parser = ((xercesc::DOMImplementationLS*) impl)->createLSParser(
-    xercesc::DOMImplementationLS::MODE_SYNCHRONOUS, 0);
+    xercesc::DOMImplementationLS::MODE_SYNCHRONOUS, nullptr);
   xercesc::DOMConfiguration* config = parser->getDomConfig();
   if (config->canSetParameter(xercesc::XMLUni::fgXercesDoXInclude, true)) {
     config->setParameter(xercesc::XMLUni::fgXercesDoXInclude, true);
   }
   XIncludeErrHandler errorHandler;
   config->setParameter(xercesc::XMLUni::fgDOMErrorHandler, &errorHandler);
-  auto doc = parser->parseURI(m_source.c_str());
+  auto *doc = parser->parseURI(m_source.c_str());
   const XercesString temp = fromNative("h");
   xercesc::DOMNodeList* list = doc->getElementsByTagName(temp.c_str());
   const auto nElements = list->getLength();
   for (unsigned long i(0); i != nElements; ++i) {
     xercesc::DOMNode const* thisNode = list->item(i);
-    auto thisElement = dynamic_cast<xercesc::DOMElement const*> (thisNode);
+    const auto *thisElement = dynamic_cast<xercesc::DOMElement const*> (thisNode);
     if (thisElement) {
       insertDefinition(parseXmlElement(thisElement));
     }
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.h
index 3e281c1af00e45b63f42938b271f461ff9c097b1..a625aa26baebb0726d3477132175b30f84e85318 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ReadFromXmlDom.h
@@ -42,8 +42,8 @@ private:
   std::vector <SingleHistogramDefinition> m_vectorOfDefinitions;
   std::string m_source;
   const std::string m_format;
-  SingleHistogramDefinition parseTextLine(const std::string& line);
-  SingleHistogramDefinition parseTProfileText(const std::string& line);
-  SingleHistogramDefinition parseXmlElement(const xercesc::DOMElement* element);
+  static SingleHistogramDefinition parseTextLine(const std::string& line);
+  static SingleHistogramDefinition parseTProfileText(const std::string& line);
+  static SingleHistogramDefinition parseXmlElement(const xercesc::DOMElement* element);
 };
 #endif /* ReadFromXmlDom_h */
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx
index 11669036061e2e84c729c02a583cf50f6e70896e..62bb3aaac109bff77fa921ad251ae387ff9d641e 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/ResolutionHelper.cxx
@@ -37,7 +37,7 @@ namespace IDPVM {
       m_errors.clear();
        
     if (!p_input_hist) {
-      m_errors.push_back("ResolutionHelper::initialize: empty input histogram passed: ");
+      m_errors.emplace_back("ResolutionHelper::initialize: empty input histogram passed: ");
        m_mean=m_meanError=m_RMS=m_RMSError=m_FracOut=m_FracOutUnc=0.;
       return false;
     }
@@ -73,7 +73,7 @@ namespace IDPVM {
     m_RMSError*=m_largeErrorFact;
   }
 
-  std::string ResolutionHelper::reportUOBinVal(std::string p_histName, std::vector< std::pair<unsigned int,double> > p_vecBinVal) {
+  std::string ResolutionHelper::reportUOBinVal(const std::string& p_histName, const std::vector< std::pair<unsigned int,double> >& p_vecBinVal) {
     std::ostringstream reportl;
     if (!p_vecBinVal.empty())  {
       reportl << "Errors scaled up for resol. hist. with large % of events in over- and under-flow: "
@@ -97,8 +97,7 @@ namespace IDPVM {
 	m_FracOutUnc=(nout / p_ntot) * std::sqrt(1. / nout + 1. / p_ntot);
       }
     }
-    return;
-  }
+     }
   
   int ResolutionHelper::setGaussFit(TH1* p_input_hist){
 
@@ -232,9 +231,7 @@ namespace IDPVM {
     // reset range metadata to state prior to iteration
     // this gets changed in iterative or fusion)
     p_input_hist->GetXaxis()->SetRange(1,p_input_hist->GetNbinsX());
-    
-    return;
-  }
+ }
 
 ResolutionHelper::resolutionResultInBin
 ResolutionHelper::ResolutionHelperResultsModUnits(TH1D* p_input_hist, IDPVM::ResolutionHelper::methods theMethod) {
@@ -277,7 +274,7 @@ ResolutionHelper::makeResolutions(const TH2* h_input2D, TH1* hwidth, TH1* hmean,
     hmean->SetBinContent(ibin + 1, result.mean);
     hmean->SetBinError(ibin + 1, result.meanError);
     if (result.outlierFrac > m_maxUOflowFrac) {
-      warnUOBinFrac.push_back(std::make_pair(ibin + 1,result.outlierFrac));
+      warnUOBinFrac.emplace_back(ibin + 1,result.outlierFrac);
     }
   }    
   if (!warnUOBinFrac.empty()) {
@@ -312,7 +309,7 @@ ResolutionHelper::makeResolutions(const TH2* h_input2D, TH1* hwidth, TH1* hmean,
     hmean->SetBinContent(ibin + 1, result.mean);
     hmean->SetBinError(ibin + 1, result.meanError);
     if (result.outlierFrac>m_maxUOflowFrac){
-      warnUOBinFrac.push_back(std::make_pair(ibin + 1,result.outlierFrac));
+      warnUOBinFrac.emplace_back(ibin + 1,result.outlierFrac);
     }      
   }
   if (!warnUOBinFrac.empty()) {
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/SingleHistogramDefinition.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/SingleHistogramDefinition.cxx
index 20c7dab9d9876a4c92af9179e885524e1150625e..1175695956f338d480e3d756cb6e2ba671b9b742 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/SingleHistogramDefinition.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/SingleHistogramDefinition.cxx
@@ -37,12 +37,12 @@ SingleHistogramDefinition::SingleHistogramDefinition(Titles_t thename, Titles_t
   name(thename), histoType(thehistoType), title(thetitle), 
   nBinsX(nbinsX), nBinsY(0), nBinsZ(0), 
   xTitle(xName), yTitle(yName), zTitle(""), 
-  folder(thefolder) {
+  folder(thefolder), m_empty(false) {
   // should do sanity checks here
   xAxis = std::make_pair(xLo, xHi);
   yAxis = std::make_pair(std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN());
   zAxis = std::make_pair(std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN());
-  m_empty = false;
+  
   allTitles = titleDigest();
 }
 
@@ -53,12 +53,12 @@ SingleHistogramDefinition::SingleHistogramDefinition(Titles_t thename, Titles_t
   name(thename), histoType(thehistoType), title(thetitle), 
   nBinsX(nbinsX), nBinsY(nbinsY), nBinsZ(0),
   xTitle(xName), yTitle(yName), zTitle(""),
-  folder(thefolder) {
+  folder(thefolder), m_empty(false) {
   // should do sanity checks here
   xAxis = std::make_pair(xLo, xHi);
   yAxis = std::make_pair(yLo, yHi);
   zAxis = std::make_pair(std::numeric_limits<float>::quiet_NaN(), std::numeric_limits<float>::quiet_NaN());
-  m_empty = false;
+  
   allTitles = titleDigest();
 }
 
@@ -69,12 +69,12 @@ SingleHistogramDefinition::SingleHistogramDefinition(Titles_t thename, Titles_t
   name(thename), histoType(thehistoType), title(thetitle), 
   nBinsX(nbinsX), nBinsY(nbinsY), nBinsZ(nbinsZ),
   xTitle(xName), yTitle(yName), zTitle(zName), 
-  folder(thefolder) {
+  folder(thefolder), m_empty(false) {
   // should do sanity checks here
   xAxis = std::make_pair(xLo, xHi);
   yAxis = std::make_pair(yLo, yHi);
   zAxis = std::make_pair(zLo, zHi);
-  m_empty = false;
+  
   allTitles = titleDigest();
 }
 
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackSelectionTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackSelectionTool.cxx
index 82dd205c199099c372ee12b24e471561eae327e3..928234a6fe2d7c4094a3b9aa19ceb1d26ccac353 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackSelectionTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackSelectionTool.cxx
@@ -54,7 +54,7 @@ TrackSelectionTool::~TrackSelectionTool() {
 StatusCode
 TrackSelectionTool::initialize() {
 
-  if (AlgTool::initialize().isFailure()) {
+  if (asg::AsgTool::initialize().isFailure()) {
     return StatusCode::FAILURE;
   }
 
@@ -64,94 +64,94 @@ TrackSelectionTool::initialize() {
   m_cuts.clear();
 
   if (m_maxPt > -1) {
-    m_cuts.push_back(std::make_pair("maxPt", "descr."));
+    m_cuts.emplace_back("maxPt", "descr.");
   }
   if (m_minPt > -1) {
-    m_cuts.push_back(std::make_pair("minPt", "descr."));
+    m_cuts.emplace_back("minPt", "descr.");
   }
   if (m_maxEta > -1) {
-    m_cuts.push_back(std::make_pair("maxEta", "descr."));
+    m_cuts.emplace_back("maxEta", "descr.");
   }
   if (m_minEta > -1) {
-    m_cuts.push_back(std::make_pair("minEta", "descr."));
+    m_cuts.emplace_back("minEta", "descr.");
   }
   if (m_maxPrimaryImpact > -1) {
-    m_cuts.push_back(std::make_pair("maxPrimaryImpact", "descr."));
+    m_cuts.emplace_back("maxPrimaryImpact", "descr.");
   }
   if (m_maxZImpact > -1) {
-    m_cuts.push_back(std::make_pair("maxZImpact", "descr."));
+    m_cuts.emplace_back("maxZImpact", "descr.");
   }
   if (m_minPrimaryImpact > -1) {
-    m_cuts.push_back(std::make_pair("minPrimaryImpact", "descr."));
+    m_cuts.emplace_back("minPrimaryImpact", "descr.");
   }
   if (m_minZImpact > -1) {
-    m_cuts.push_back(std::make_pair("minZImpact", "descr."));
+    m_cuts.emplace_back("minZImpact", "descr.");
   }
   if (m_maxSecondaryImpact > -1) {
-    m_cuts.push_back(std::make_pair("maxSecondaryImpact", "descr."));
+    m_cuts.emplace_back("maxSecondaryImpact", "descr.");
   }
   if (m_minSecondaryPt > -1) {
-    m_cuts.push_back(std::make_pair("minSecondaryPt", "descr."));
+    m_cuts.emplace_back("minSecondaryPt", "descr.");
   }
   if (m_minClusters > -1) {
-    m_cuts.push_back(std::make_pair("minClusters", "descr."));
+    m_cuts.emplace_back("minClusters", "descr.");
   }
   if (m_minSiNotShared > -1) {
-    m_cuts.push_back(std::make_pair("minSiNotShared", "descr."));
+    m_cuts.emplace_back("minSiNotShared", "descr.");
   }
   if (m_maxShared > -1) {
-    m_cuts.push_back(std::make_pair("maxShared", "descr."));
+    m_cuts.emplace_back("maxShared", "descr.");
   }
   if (m_minPixelHits > -1) {
-    m_cuts.push_back(std::make_pair("minPixelHits", "descr."));
+    m_cuts.emplace_back("minPixelHits", "descr.");
   }
   if (m_maxHoles > -1) {
-    m_cuts.push_back(std::make_pair("maxHoles", "descr."));
+    m_cuts.emplace_back("maxHoles", "descr.");
   }
   if (m_maxPixelHoles > -1) {
-    m_cuts.push_back(std::make_pair("maxPixelHoles", "descr."));
+    m_cuts.emplace_back("maxPixelHoles", "descr.");
   }
   if (m_maxSctHoles > -1) {
-    m_cuts.push_back(std::make_pair("maxSctHoles", "descr."));
+    m_cuts.emplace_back("maxSctHoles", "descr.");
   }
   if (m_maxDoubleHoles > -1) {
-    m_cuts.push_back(std::make_pair("maxDoubleHoles", "descr."));
+    m_cuts.emplace_back("maxDoubleHoles", "descr.");
   }
   if (m_radMax > -1) {
-    m_cuts.push_back(std::make_pair("radMax", "descr."));
+    m_cuts.emplace_back("radMax", "descr.");
   }
   if (m_nHolesMax > -1) {
-    m_cuts.push_back(std::make_pair("nHolesMax", "descr."));
+    m_cuts.emplace_back("nHolesMax", "descr.");
   }
   if (m_nHolesGapMax > -1) {
-    m_cuts.push_back(std::make_pair("nHolesGapMax", "descr."));
+    m_cuts.emplace_back("nHolesGapMax", "descr.");
   }
   if (m_seedFilterLevel > -1) {
-    m_cuts.push_back(std::make_pair("seedFilterLevel", "descr."));
+    m_cuts.emplace_back("seedFilterLevel", "descr.");
   }
   if (m_maxTRTHighThresholdHits > -1) {
-    m_cuts.push_back(std::make_pair("maxTRTHighThresholdHits", "descr."));
+    m_cuts.emplace_back("maxTRTHighThresholdHits", "descr.");
   }
   if (m_minTRTHighThresholdHits > -1) {
-    m_cuts.push_back(std::make_pair("minTRTHighThresholdHits", "descr."));
+    m_cuts.emplace_back("minTRTHighThresholdHits", "descr.");
   }
   if (m_maxTRTHighThresholdOutliers > -1) {
-    m_cuts.push_back(std::make_pair("maxTRTHighThresholdOutliers", "descr."));
+    m_cuts.emplace_back("maxTRTHighThresholdOutliers", "descr.");
   }
   if (m_maxSCTHits > -1) {
-    m_cuts.push_back(std::make_pair("maxSCTHits", "descr."));
+    m_cuts.emplace_back("maxSCTHits", "descr.");
   }
   if (m_minSCTHits > -1) {
-    m_cuts.push_back(std::make_pair("minSCTHits", "descr."));
+    m_cuts.emplace_back("minSCTHits", "descr.");
   }
   if (m_maxTRTOutliers > -1) {
-    m_cuts.push_back(std::make_pair("maxTRTOutliers", "descr."));
+    m_cuts.emplace_back("maxTRTOutliers", "descr.");
   }
   if (m_maxBLayerSplitHits > -1) {
-    m_cuts.push_back(std::make_pair("maxBLayerSplitHits", "descr."));
+    m_cuts.emplace_back("maxBLayerSplitHits", "descr.");
   }
   if (m_maxPixelOutliers > -1) {
-    m_cuts.push_back(std::make_pair("maxPixelOutliers", "descr."));
+    m_cuts.emplace_back("maxPixelOutliers", "descr.");
   }
 
   // Example.
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthLookup.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthLookup.cxx
index cb9d5bd49b40c7a9d61dea84d50e7332670157f3..76e7e2d7b566ac042da2db7acba690977651ed3a 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthLookup.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthLookup.cxx
@@ -9,7 +9,7 @@ namespace IDPVM {
 // Taken directly from InDetPhysValLargeD0Tool.cxx
   const xAOD::TruthParticle*
   getTruthPointer(const xAOD::TrackParticle& track) {
-    typedef ElementLink<xAOD::TruthParticleContainer> ElementTruthLink_t;
+    using ElementTruthLink_t = ElementLink<xAOD::TruthParticleContainer>;
     const xAOD::TruthParticle* result(nullptr);
 
     // Check whether truthParticleLink exists.
@@ -70,8 +70,7 @@ namespace IDPVM {
         }
       }
     }
-    return;
-  }
+     }
 
   void
   TrackTruthLookup::cacheTruth(const xAOD::TruthParticleContainer* truthParticles) {
@@ -81,8 +80,7 @@ namespace IDPVM {
         m_mapTruth[truth] = {};
       }
     }
-    return;
-  }
+     }
 
   void
   TrackTruthLookup::cacheTruth(const std::vector<const xAOD::TruthParticle*>* truthParticlesVec) {
@@ -92,8 +90,7 @@ namespace IDPVM {
         m_mapTruth[truth] = {};
       }
     }
-    return;
-  }
+     }
 
   void
   TrackTruthLookup::cache(const xAOD::TrackParticleContainer* trackParticles,
@@ -102,8 +99,7 @@ namespace IDPVM {
     clear();
     cacheTracks(trackParticles);
     cacheTruth(truthParticles);
-    return;
-  }
+ }
 
   void
   TrackTruthLookup::cache(const xAOD::TrackParticleContainer* trackParticles,
@@ -112,6 +108,5 @@ namespace IDPVM {
     clear();
     cacheTracks(trackParticles);
     cacheTruth(truthParticlesVec);
-    return;
-  }
+ }
 } // namespace
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx
index 2caf893d1afbfe749ec9c6316c7a37b028327070..eb23d3760c7cd1b91464c57ba96113d5ccc6bb4f 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/TrackTruthSelectionTool.cxx
@@ -31,7 +31,7 @@ TrackTruthSelectionTool::~TrackTruthSelectionTool() {
 
 StatusCode
 TrackTruthSelectionTool::initialize() {
-  if (AlgTool::initialize().isFailure()) {
+  if (asg::AsgTool::initialize().isFailure()) {
     return StatusCode::FAILURE;
   }
   ATH_MSG_DEBUG("Initializing " << name() << "...");
@@ -39,32 +39,32 @@ TrackTruthSelectionTool::initialize() {
   // Define cut names and descriptions
   m_cuts.clear();
   if (m_maxEta > -1) {
-    m_cuts.push_back(std::make_pair("eta", "Cut on (absolute) particle eta"));
+    m_cuts.emplace_back("eta", "Cut on (absolute) particle eta");
   }
   if (m_minPt > -1) {
-    m_cuts.push_back(std::make_pair("min_pt", "Cut on minimum particle pT"));
+    m_cuts.emplace_back("min_pt", "Cut on minimum particle pT");
   }
   if (m_maxPt > -1) {
-    m_cuts.push_back(std::make_pair("max_pt", "Cut on maximum particle pT"));
+    m_cuts.emplace_back("max_pt", "Cut on maximum particle pT");
   }
 
   if (m_maxBarcode > -1) {
-    m_cuts.push_back(std::make_pair("barcode", "Cut on maximum particle barcode"));
+    m_cuts.emplace_back("barcode", "Cut on maximum particle barcode");
   }
 
   if (m_requireCharged) {
-    m_cuts.push_back(std::make_pair("charged", "Require charged particle"));
+    m_cuts.emplace_back("charged", "Require charged particle");
   }
   if (m_requireStatus1) {
-    m_cuts.push_back(std::make_pair("status_1", "Particle status=1"));
+    m_cuts.emplace_back("status_1", "Particle status=1");
   }
 
   if (m_maxProdVertRadius > 0.) {
-    m_cuts.push_back(std::make_pair("decay_before_pixel", "Decays before first pixel layer"));
+    m_cuts.emplace_back("decay_before_pixel", "Decays before first pixel layer");
   }
 
   if (m_pdgId > -1) {
-    m_cuts.push_back(std::make_pair("pdgId", "Pdg Id cut")); // 3-18-16 normally enabled, disabled for testing
+    m_cuts.emplace_back("pdgId", "Pdg Id cut"); // 3-18-16 normally enabled, disabled for testing
   }
   // Add cuts to the AcceptInfo
   for (const auto& cut : m_cuts) {
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/dRMatchingTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/dRMatchingTool.cxx
index ce3e5662fdd5ff7b63f0e1ae93437bbb73d02765..d8cbca472cc9dce6a248421f457acafa65d9df03 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/dRMatchingTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/dRMatchingTool.cxx
@@ -107,7 +107,7 @@ dRMatchingTool::~dRMatchingTool() {
 
 StatusCode
 dRMatchingTool::initialize() {
-  if (AlgTool::initialize().isFailure()) {
+  if (asg::AsgTool::initialize().isFailure()) {
     return StatusCode::FAILURE;
   }
 
@@ -118,11 +118,11 @@ dRMatchingTool::initialize() {
 
   // Define cut names and descriptions.
   if (m_dRmax > -1) {
-    m_cuts.push_back(std::make_pair("dRmax", "Cut on maximal dR between track and truth particle."));
+    m_cuts.emplace_back("dRmax", "Cut on maximal dR between track and truth particle.");
   }
   if (m_pTResMax > -1) {
-    m_cuts.push_back(std::make_pair("pTResMax",
-                                    "Cut on maximal, relativ pT difference between track and truth particle."));
+    m_cuts.emplace_back("pTResMax",
+                                    "Cut on maximal, relativ pT difference between track and truth particle.");
   }
 
   // Add cuts to the AcceptOmfp.
@@ -186,8 +186,6 @@ dRMatchingTool::sortVectors(const T* container,
   std::sort(vec_pt.begin(), vec_pt.end(), sort_pt <U>);
   std::sort(vec_eta.begin(), vec_eta.end(), sort_eta<U>);
   std::sort(vec_phi.begin(), vec_phi.end(), sort_phi<U>);
-
-  return;
 }
 
 void
@@ -212,8 +210,6 @@ dRMatchingTool::checkCacheTrackParticles(const xAOD::TrackParticleContainer* tra
 
   // Store copy of base track container.
   ent->m_baseTrackContainer = *trackParticles;
-
-  return;
 }
 
 void
@@ -238,8 +234,6 @@ dRMatchingTool::checkCacheTruthParticles(const xAOD::TruthParticleContainer* tru
 
   // Store copy of base truth container.
   ent->m_baseTruthContainer = *truthParticles;
-
-  return;
 }
 
 template<class U, class V>
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/util/postProcessIDPVMHistos.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/util/postProcessIDPVMHistos.cxx
index 3bede129e1f2aafc4225c99c7e5bbdb08afd2f8d..22543cb01c51c6935aea24231bee9a94e419920a 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/util/postProcessIDPVMHistos.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/util/postProcessIDPVMHistos.cxx
@@ -27,8 +27,7 @@ using namespace std;
 
 
 bool file_exists(const string & p_name) {
-  return (gSystem->AccessPathName(p_name.c_str(), kFileExists))?
-    false : true;    
+  return !gSystem->AccessPathName(p_name.c_str(), kFileExists);    
 }
 
 // check if the name of an object matches what we expect from a resolution helper 
@@ -57,12 +56,12 @@ std::string getResoType(const TObject* resHelper){
 
 // clone an existing histogram of a known name 
 TH1* cloneExisting(const std::string & name){
-    auto h = gDirectory->Get(name.c_str()); 
+    auto *h = gDirectory->Get(name.c_str()); 
     if (!h){ 
         std::cerr << "Could not find existing histogram "<<name<<" - will not postprocess "<<std::endl; 
         return nullptr;
     }
-    auto ret = dynamic_cast<TH1*>(h->Clone(name.c_str()));
+    auto *ret = dynamic_cast<TH1*>(h->Clone(name.c_str()));
     if (!ret){ 
         std::cerr << "Found an existing object "<<name<<", but it is not a histogram ("<<h->IsA()->GetName()<<") - will not postprocess "<<std::endl; 
     }
@@ -113,8 +112,8 @@ int postProcessDir(TDirectory* dir, IDPVM::ResolutionHelper & theHelper){
   auto theCWD = gDirectory; 
   // walk through all keys in this directory 
   dir->cd();
-  auto keys = dir->GetListOfKeys();
-  for (const auto key : *keys){
+  auto *keys = dir->GetListOfKeys();
+  for (auto *const key : *keys){
     TObject* gotIt = dir->Get(key->GetName()); 
     
     // if we encounter a directory, descend into it and repeat the process