From 2ff189840f0cce51a98b6eb2c5d567f46f4d54ff Mon Sep 17 00:00:00 2001
From: scott snyder <sss@karma>
Date: Fri, 16 Sep 2022 13:23:57 -0400
Subject: [PATCH] InDetTrackSelectionTool: Fix thread-safety checker warnings.

Fix some new thread-safety checker warnings.
Const fixes.
---
 .../InDetTrackSelectionTool.h                 |  10 +-
 .../Root/InDetAccessor.cxx                    |   4 +-
 .../Root/InDetAccessor.h                      |  88 +++++++-------
 .../Root/InDetTrackSelectionTool.cxx          | 110 +++++++++---------
 4 files changed, 106 insertions(+), 106 deletions(-)

diff --git a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/InDetTrackSelectionTool/InDetTrackSelectionTool.h b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/InDetTrackSelectionTool/InDetTrackSelectionTool.h
index 715fca6bf78c..f4964e151872 100644
--- a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/InDetTrackSelectionTool/InDetTrackSelectionTool.h
+++ b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/InDetTrackSelectionTool/InDetTrackSelectionTool.h
@@ -1,7 +1,7 @@
 // -*- c++ -*-
 
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef INDETTRACKSELECTIONTOOL_INDETTRACKSELECTIONTOOL_H
@@ -108,18 +108,18 @@ namespace InDet {
 
     // helper method to setup the cut functions for TrackParticles and Trk::Tracks
     template <int VERBOSE, class Trk_Helper>
-    StatusCode setupCuts(std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, asg::AsgMessaging &msgHelper)> > > &trackCuts);
+    StatusCode setupCuts(std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts);
 
     template <class Trk_Helper>
-    asg::AcceptData accept(Trk_Helper helper, const std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, asg::AsgMessaging &msgHelper)> > > &trackCuts) const;
+    asg::AcceptData accept(Trk_Helper helper, const std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts) const;
 
     std::unordered_map< std::string, std::shared_ptr<TrackAccessor> > m_trackAccessors; //!< list of the accessors that need to be run for each track
 
     std::unique_ptr<asg::AsgMessaging> m_msgHelper;
-    std::map< std::string, std::vector< std::function<bool(InDetAccessor::TrackParticleHelper helper, asg::AsgMessaging &msgHelper)> > >
+    std::map< std::string, std::vector< std::function<bool(InDetAccessor::TrackParticleHelper helper, const asg::AsgMessaging &msgHelper)> > >
            m_trackParticleCuts; //!< First element is the name of the cut family, second element is the set of cuts
 #ifndef XAOD_ANALYSIS
-    std::map< std::string, std::vector< std::function<bool(InDetAccessor::TrkTrackHelper helper, asg::AsgMessaging &msgHelper)> > >
+    std::map< std::string, std::vector< std::function<bool(InDetAccessor::TrkTrackHelper helper, const asg::AsgMessaging &msgHelper)> > >
            m_trkTrackCuts; //!< First element is the name of the cut family, second element is the set of cuts
 #endif
 
diff --git a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.cxx b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.cxx
index 75bf31a92343..a138e438c169 100644
--- a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.cxx
+++ b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 */
 #include "InDetAccessor.h"
 #ifndef XAOD_ANALYSIS
@@ -8,7 +8,7 @@
 #include "InDetRIO_OnTrack/SCT_ClusterOnTrack.h"
 
 namespace InDetAccessor {
-   std::tuple<uint8_t,uint8_t> getSiHitsTopBottom( const Trk::Track& track, asg::AsgMessaging &msgHelper) {
+   std::tuple<uint8_t,uint8_t> getSiHitsTopBottom( const Trk::Track& track, const asg::AsgMessaging &msgHelper) {
       std::tuple<uint8_t, uint8_t> top_bottom {0,0};
 
       const DataVector<const Trk::MeasurementBase>* trkMeasurements = track.measurementsOnTrack();
diff --git a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h
index d6eb3d71d7db..6dce571e1564 100644
--- a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h
+++ b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetAccessor.h
@@ -39,12 +39,12 @@ namespace InDetAccessor {
    // so define functsion for TrackParticles, and TrkTracks
    class TrackParticleHelper;
    template <short index>
-   double getDefiningParameters(TrackParticleHelper helper, asg::AsgMessaging &msgHelper);
+   double getDefiningParameters(TrackParticleHelper helper, const asg::AsgMessaging &msgHelper);
 
 #ifndef XAOD_ANALYSIS
    class TrkTrackHelper;
    template <short index>
-   double getDefiningParameters(TrkTrackHelper helper, asg::AsgMessaging &msgHelper);
+   double getDefiningParameters(TrkTrackHelper helper, const asg::AsgMessaging &msgHelper);
 #endif
 
    class TrackParticleHelper {
@@ -55,12 +55,12 @@ namespace InDetAccessor {
       const xAOD::TrackParticle &track()     const { return *m_track;}
       const xAOD::Vertex *vertex()           const { return  m_vtx; }
 
-      double pt(asg::AsgMessaging &)            const { return track().pt(); }
-      double eta(asg::AsgMessaging &)           const { return track().eta(); }
-      double theta(asg::AsgMessaging &msgHelper)const { return getDefiningParameters<InDetAccessor::theta>(*this,msgHelper); }
-      double qOverP(asg::AsgMessaging &)        const { return track().qOverP(); }
-      double d0(asg::AsgMessaging &msgHelper)   const { return getDefiningParameters<InDetAccessor::d0>(*this,msgHelper);}
-      double z0(asg::AsgMessaging &msgHelper)   const { return getDefiningParameters<InDetAccessor::z0>(*this,msgHelper);}
+      double pt(const asg::AsgMessaging &)            const { return track().pt(); }
+      double eta(const asg::AsgMessaging &)           const { return track().eta(); }
+      double theta(const asg::AsgMessaging &msgHelper)const { return getDefiningParameters<InDetAccessor::theta>(*this,msgHelper); }
+      double qOverP(const asg::AsgMessaging &)        const { return track().qOverP(); }
+      double d0(const asg::AsgMessaging &msgHelper)   const { return getDefiningParameters<InDetAccessor::d0>(*this,msgHelper);}
+      double z0(const asg::AsgMessaging &msgHelper)   const { return getDefiningParameters<InDetAccessor::z0>(*this,msgHelper);}
 
    private:
       const xAOD::TrackParticle *m_track;
@@ -77,27 +77,27 @@ namespace InDetAccessor {
       const Trk::TrackSummary &summary()       const { return *m_summary;}
       const Trk::TrackParameters *perigee()    const { return m_perigee; }
 
-      double pt(asg::AsgMessaging &msgHelper)     const {
+      double pt(const asg::AsgMessaging &msgHelper)     const {
          return hasPerigeeOrError(msgHelper)  ? perigee()->momentum().perp()   : std::nan("");
       }
-      double eta(asg::AsgMessaging &msgHelper)    const {
+      double eta(const asg::AsgMessaging &msgHelper)    const {
          return hasPerigeeOrError(msgHelper)  ? perigee()->momentum().eta()     : std::nan("");
       }
-      double theta(asg::AsgMessaging &msgHelper)  const { return getDefiningParameters<InDetAccessor::theta>(*this,msgHelper);}
-      double qOverP(asg::AsgMessaging &msgHelper) const {
+      double theta(const asg::AsgMessaging &msgHelper)  const { return getDefiningParameters<InDetAccessor::theta>(*this,msgHelper);}
+      double qOverP(const asg::AsgMessaging &msgHelper) const {
          return hasPerigeeOrError(msgHelper)  ?  1./perigee()->momentum().mag() : std::nan("");
       }
-      double d0(asg::AsgMessaging &msgHelper)     const { return getDefiningParameters<InDetAccessor::d0>(*this,msgHelper);}
-      double z0(asg::AsgMessaging &msgHelper)     const { return getDefiningParameters<InDetAccessor::z0>(*this,msgHelper);}
+      double d0(const asg::AsgMessaging &msgHelper)     const { return getDefiningParameters<InDetAccessor::d0>(*this,msgHelper);}
+      double z0(const asg::AsgMessaging &msgHelper)     const { return getDefiningParameters<InDetAccessor::z0>(*this,msgHelper);}
 
-      bool hasPerigeeOrError(asg::AsgMessaging &msgHelper) const {
+      bool hasPerigeeOrError(const asg::AsgMessaging &msgHelper) const {
          bool ret = perigee();
          if (!ret) {
             IDTRKSEL_MSG_ERROR( "Received zero pointer to perigee." );
          }
          return ret;
       }
-      bool hasSummaryOrError(asg::AsgMessaging &msgHelper) const {
+      bool hasSummaryOrError(const asg::AsgMessaging &msgHelper) const {
          bool ret = perigee();
          if (!ret) {
             IDTRKSEL_MSG_ERROR( "Received null pointer to track summary." );
@@ -115,10 +115,10 @@ namespace InDetAccessor {
 
    // summary accessor
    template <typename T_TrkHelper>
-   uint8_t getSummary(const T_TrkHelper & helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType sumType);
+   uint8_t getSummary(const T_TrkHelper & helper, const asg::AsgMessaging &msgHelper, xAOD::SummaryType sumType);
 
    template <>
-   inline uint8_t getSummary(const TrackParticleHelper & helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) {
+   inline uint8_t getSummary(const TrackParticleHelper & helper, const asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) {
       uint8_t summaryValue = 0;
       if (!helper.track().summaryValue(summaryValue, summaryType)) {
          IDTRKSEL_MSG_DEBUG( "Failed to get SummaryType " << std::to_string(summaryType) << " from xAOD::TrackParticle summary. A value of zero will be used instead." );
@@ -129,7 +129,7 @@ namespace InDetAccessor {
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline uint8_t getSummary(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) {
+   inline uint8_t getSummary(const TrkTrackHelper & helper, const asg::AsgMessaging &msgHelper, xAOD::SummaryType summaryType) {
       Int_t summaryTypeInt = static_cast<Int_t>(summaryType);
       Int_t checkSummaryValue = helper.summary().get( static_cast<Trk::SummaryType>(summaryTypeInt) );
       if (checkSummaryValue < 0) {
@@ -142,7 +142,7 @@ namespace InDetAccessor {
 #endif
 
    template <std::size_t n_summary_types, typename T_TrkHelper>
-   inline uint8_t getSummarySum(const T_TrkHelper helper, asg::AsgMessaging &msgHelper, std::array<xAOD::SummaryType,n_summary_types> sumTypes) {
+   inline uint8_t getSummarySum(const T_TrkHelper helper, const asg::AsgMessaging &msgHelper, std::array<xAOD::SummaryType,n_summary_types> sumTypes) {
       uint8_t sum=0;
       for (xAOD::SummaryType sum_type: sumTypes) {
          sum += getSummary(helper, msgHelper, sum_type);
@@ -153,16 +153,16 @@ namespace InDetAccessor {
 
    // fit quality accessor
    template <typename Trk_Helper>
-   double getFitChiSquare(const Trk_Helper & helper, asg::AsgMessaging &msgHelper);
+   double getFitChiSquare(const Trk_Helper & helper, const asg::AsgMessaging &msgHelper);
 
    template <>
-   inline double getFitChiSquare(const TrackParticleHelper & helper, asg::AsgMessaging &) {
+   inline double getFitChiSquare(const TrackParticleHelper & helper, const asg::AsgMessaging &) {
       return helper.track().chiSquared();
    }
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline double getFitChiSquare(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) {
+   inline double getFitChiSquare(const TrkTrackHelper & helper, const asg::AsgMessaging &msgHelper) {
       if (!helper.track().fitQuality()) {
          IDTRKSEL_MSG_WARNING( "Zero pointer to fit quality received." );
          return std::nan("");
@@ -172,16 +172,16 @@ namespace InDetAccessor {
 #endif
 
    template <typename TrkHelper>
-   double getFitNDoF(const TrkHelper & helper, asg::AsgMessaging &msgHelper);
+   double getFitNDoF(const TrkHelper & helper, const asg::AsgMessaging &msgHelper);
 
    template <>
-   inline double getFitNDoF(const TrackParticleHelper & helper, asg::AsgMessaging &) {
+   inline double getFitNDoF(const TrackParticleHelper & helper, const asg::AsgMessaging &) {
       return helper.track().numberDoF();
    }
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline double getFitNDoF(const TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) {
+   inline double getFitNDoF(const TrkTrackHelper & helper, const asg::AsgMessaging &msgHelper) {
       if (!helper.track().fitQuality()) {
          IDTRKSEL_MSG_WARNING( "Zero pointer to fit quality received." );
          return std::nan("");
@@ -193,10 +193,10 @@ namespace InDetAccessor {
 
    // eProbabilityHT accessor
    template <typename Trk_Helper>
-   float getEProbabilityHT(const Trk_Helper & helper, asg::AsgMessaging &msgHelper);
+   float getEProbabilityHT(const Trk_Helper & helper, const asg::AsgMessaging &msgHelper);
 
    template <>
-   inline float getEProbabilityHT(const TrackParticleHelper & helper, asg::AsgMessaging &msgHelper) {
+   inline float getEProbabilityHT(const TrackParticleHelper & helper, const asg::AsgMessaging &msgHelper) {
       float eProbHT =0.f;
       if (!helper.track().summaryValue(eProbHT, xAOD::SummaryType::eProbabilityHT)) {
          IDTRKSEL_MSG_DEBUG( "Failed to get eProbabilityHT from xAOD::TrackParticle summary. A value of zero will be used instead." );
@@ -207,7 +207,7 @@ namespace InDetAccessor {
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline float getEProbabilityHT(const TrkTrackHelper &, asg::AsgMessaging &) {
+   inline float getEProbabilityHT(const TrkTrackHelper &, const asg::AsgMessaging &) {
       throw std::runtime_error("eProbabilityHT only available in xAOD::TrackParticle not for Trk::Track.");
       return 0.f;
    }
@@ -216,7 +216,7 @@ namespace InDetAccessor {
    //defining parameters accessor
 
    template <short index>
-   inline double getDefiningParameters(TrackParticleHelper  helper, asg::AsgMessaging &) {
+   inline double getDefiningParameters(TrackParticleHelper  helper, const asg::AsgMessaging &) {
       static_assert(index<5);
       double param = helper.track().definingParameters()[index];
       if (index==1) {
@@ -230,7 +230,7 @@ namespace InDetAccessor {
 #ifndef XAOD_ANALYSIS
    template <short index>
    //cppcheck-suppress passedByValue
-   inline double getDefiningParameters(TrkTrackHelper  helper, asg::AsgMessaging &msgHelper) {
+   inline double getDefiningParameters(TrkTrackHelper  helper, const asg::AsgMessaging &msgHelper) {
       assert(index<5);
       return helper.hasPerigeeOrError(msgHelper) ? helper.perigee()->parameters()[index] : std::nan("");
    }
@@ -238,62 +238,62 @@ namespace InDetAccessor {
 
    // defining parameters covariance accessor
    template <typename Trk_Helper>
-   inline double getDefiningParametersCov(Trk_Helper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j);
+   inline double getDefiningParametersCov(Trk_Helper & helper, [[maybe_unused]] const asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j);
 
    template <>
-   inline double getDefiningParametersCov(TrackParticleHelper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) {
+   inline double getDefiningParametersCov(TrackParticleHelper & helper, [[maybe_unused]] const asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) {
       assert( index_i<5 && index_j<5);
       return helper.track().definingParametersCovMatrix()(index_i, index_j);
    }
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline double getDefiningParametersCov(TrkTrackHelper & helper, asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) {
+   inline double getDefiningParametersCov(TrkTrackHelper & helper, const asg::AsgMessaging &msgHelper, unsigned int index_i, unsigned int index_j) {
       assert( index_i<5 && index_j<5);
       return helper.hasPerigeeOrError(msgHelper) ? (*helper.perigee()->covariance())(index_i, index_j) : std::nan("");
    }
 #endif
 
    template <typename Trk_Helper>
-   inline Int_t getNumberOfUsedHitsdEdx(Trk_Helper & helper, asg::AsgMessaging &msgHelper);
+   inline Int_t getNumberOfUsedHitsdEdx(Trk_Helper & helper, const asg::AsgMessaging &msgHelper);
 
    template <>
-   inline Int_t getNumberOfUsedHitsdEdx(TrackParticleHelper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper) {
+   inline Int_t getNumberOfUsedHitsdEdx(TrackParticleHelper & helper, [[maybe_unused]] const asg::AsgMessaging &msgHelper) {
       return helper.track().numberOfUsedHitsdEdx();
    }
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline Int_t getNumberOfUsedHitsdEdx(TrkTrackHelper &, asg::AsgMessaging &) {
+   inline Int_t getNumberOfUsedHitsdEdx(TrkTrackHelper &, const asg::AsgMessaging &) {
       throw std::runtime_error("umberOfUsedHitsdEdx only available in xAOD::TrackParticle not for Trk::Track.");
       return 0;
    }
 #endif
 
    template <typename Trk_Helper>
-   inline Int_t getNumberOfIBLOverflowsdEdx(Trk_Helper & helper, asg::AsgMessaging &msgHelper);
+   inline Int_t getNumberOfIBLOverflowsdEdx(Trk_Helper & helper, const asg::AsgMessaging &msgHelper);
 
    template <>
-   inline Int_t getNumberOfIBLOverflowsdEdx(TrackParticleHelper & helper, [[maybe_unused]] asg::AsgMessaging &msgHelper) {
+   inline Int_t getNumberOfIBLOverflowsdEdx(TrackParticleHelper & helper, [[maybe_unused]] const asg::AsgMessaging &msgHelper) {
       return helper.track().numberOfUsedHitsdEdx();
    }
 
 #ifndef XAOD_ANALYSIS
    template <>
-   inline Int_t getNumberOfIBLOverflowsdEdx(TrkTrackHelper & , asg::AsgMessaging &) {
+   inline Int_t getNumberOfIBLOverflowsdEdx(TrkTrackHelper & , const asg::AsgMessaging &) {
       throw std::runtime_error("NumberOfIBLOverflowsdEdx only available in xAOD::TrackParticle not for Trk::Track.");
       return 0;
    }
 #endif
 
 #ifndef XAOD_ANALYSIS
-   std::tuple<uint8_t,uint8_t> getSiHitsTopBottom( const Trk::Track& track, asg::AsgMessaging &msgHelper);
+   std::tuple<uint8_t,uint8_t> getSiHitsTopBottom( const Trk::Track& track, const asg::AsgMessaging &msgHelper);
 
    template <typename Trk_Helper>
-   inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(Trk_Helper & helper, asg::AsgMessaging &msgHelper);
+   inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(Trk_Helper & helper, const asg::AsgMessaging &msgHelper);
 
    template <>
-   inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrackParticleHelper & helper, asg::AsgMessaging &msgHelper) {
+   inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrackParticleHelper & helper, const asg::AsgMessaging &msgHelper) {
       const Trk::Track* trkTrack = helper.track().track();
       if (!trkTrack) {
          IDTRKSEL_MSG_WARNING( "xAOD::TrackParticle has a null pointer to a Trk::Track." );
@@ -306,7 +306,7 @@ namespace InDetAccessor {
    }
 
    template <>
-   inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrkTrackHelper & helper, asg::AsgMessaging &msgHelper) {
+   inline std::tuple<uint8_t,uint8_t> getSiHitsTopBottom(TrkTrackHelper & helper, const asg::AsgMessaging &msgHelper) {
       return getSiHitsTopBottom(helper.track(),msgHelper);
    }
 #endif
diff --git a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetTrackSelectionTool.cxx b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetTrackSelectionTool.cxx
index 78a38c157067..0edd263e3c8d 100644
--- a/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetTrackSelectionTool.cxx
+++ b/InnerDetector/InDetRecTools/InDetTrackSelectionTool/Root/InDetTrackSelectionTool.cxx
@@ -38,10 +38,10 @@ namespace {
            m_summaryTypes(summary_types)
       {}
 
-      uint8_t nHits(Trk_Helper helper, asg::AsgMessaging &msgHelper) const {
+      uint8_t nHits(Trk_Helper helper, const asg::AsgMessaging &msgHelper) const {
          return getSummarySum(helper,msgHelper,m_summaryTypes);
       }
-      bool operator()(Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+      bool operator()(Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
          double absEta = std::abs( helper.eta( msgHelper) );
          return      (absEta <= m_maxTrtEtaAcceptance || absEta > m_maxEtaForTrtHitCuts) || nHits(helper,msgHelper) >=m_minNHits;
       }
@@ -290,50 +290,50 @@ namespace {
   inline T sqr(T a) { return a *a;}
 }
 template <int VERBOSE, class Trk_Helper>
-StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, asg::AsgMessaging &msgHelper)> > > &trackCuts) {
+StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts) {
    // track parameter cuts
   if (m_minPt > 0.) {
      if (VERBOSE>0) ATH_MSG_INFO( "  Minimum Pt: " << m_minPt << " MeV" );
-     trackCuts["Pt"].push_back( [minPt = m_minPt](Trk_Helper helper, asg::AsgMessaging &msgHelper) -> bool { return helper.pt(msgHelper) >= minPt; } );
+     trackCuts["Pt"].push_back( [minPt = m_minPt](Trk_Helper helper, const asg::AsgMessaging &msgHelper) -> bool { return helper.pt(msgHelper) >= minPt; } );
   }
   if (maxDoubleIsSet(m_maxAbsEta)) {
      if (VERBOSE>0) ATH_MSG_INFO( "  Maximum |Eta|: " << m_maxAbsEta );
-     trackCuts["Eta"].push_back( [maxAbsEta = m_maxAbsEta](Trk_Helper helper, asg::AsgMessaging &msgHelper) { return std::abs(helper.eta(msgHelper)) <= maxAbsEta; } );
+     trackCuts["Eta"].push_back( [maxAbsEta = m_maxAbsEta](Trk_Helper helper, const asg::AsgMessaging &msgHelper) { return std::abs(helper.eta(msgHelper)) <= maxAbsEta; } );
   }
   if (m_minP > 0.) {
      if (VERBOSE>0) ATH_MSG_INFO( "  Minimum P: " << m_minP << " MeV" );
-     trackCuts["P"].push_back( [maxInvP = 1./m_minP](Trk_Helper helper, asg::AsgMessaging &msgHelper) { return std::abs(helper.qOverP(msgHelper)) <= maxInvP; } );
+     trackCuts["P"].push_back( [maxInvP = 1./m_minP](Trk_Helper helper, const asg::AsgMessaging &msgHelper) { return std::abs(helper.qOverP(msgHelper)) <= maxInvP; } );
   }
   if (maxDoubleIsSet(m_maxD0)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum d0: " << m_maxD0 << " mm" );
-    trackCuts["D0"].push_back( [maxD0 = m_maxD0](Trk_Helper helper, asg::AsgMessaging &msgHelper) { return std::abs(helper.d0(msgHelper)) <= maxD0; } );
+    trackCuts["D0"].push_back( [maxD0 = m_maxD0](Trk_Helper helper, const asg::AsgMessaging &msgHelper) { return std::abs(helper.d0(msgHelper)) <= maxD0; } );
   }
   if (maxDoubleIsSet(m_maxZ0)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum z0: " << m_maxZ0 << " mm");
-    trackCuts["Z0"].push_back( [maxZ0 = m_maxZ0](Trk_Helper helper, asg::AsgMessaging &msgHelper) { return std::abs(helper.z0(msgHelper)) <= maxZ0; } );
+    trackCuts["Z0"].push_back( [maxZ0 = m_maxZ0](Trk_Helper helper, const asg::AsgMessaging &msgHelper) { return std::abs(helper.z0(msgHelper)) <= maxZ0; } );
   }
   if (maxDoubleIsSet(m_maxZ0SinTheta)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum z0*sin(theta): " << m_maxZ0SinTheta << " mm" );
-    trackCuts["Z0SinTheta"].push_back([maxZ0SinTheta = m_maxZ0SinTheta](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["Z0SinTheta"].push_back([maxZ0SinTheta = m_maxZ0SinTheta](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return std::abs( helper.z0(msgHelper) * std::sin(helper.theta(msgHelper))) <= maxZ0SinTheta;
     });
   }
   if (maxDoubleIsSet(m_maxSigmaD0)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum uncertainty on d0: " << m_maxSigmaD0 << " mm" );
-    trackCuts["D0"].push_back([maxSigmaD0Squared = sqr(m_maxSigmaD0)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["D0"].push_back([maxSigmaD0Squared = sqr(m_maxSigmaD0)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getDefiningParametersCov(helper,msgHelper, InDetAccessor::d0,InDetAccessor::d0) <= maxSigmaD0Squared;
     });
   }
   if (maxDoubleIsSet(m_maxSigmaZ0)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum uncertainty on z0: " << m_maxSigmaZ0 << " mm" );
-    trackCuts["Z0"].push_back([maxSigmaZ0Squared = sqr(m_maxSigmaZ0)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["Z0"].push_back([maxSigmaZ0Squared = sqr(m_maxSigmaZ0)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getDefiningParametersCov(helper,msgHelper, InDetAccessor::z0,InDetAccessor::z0) <= maxSigmaZ0Squared;
     });
   }
   if (maxDoubleIsSet(m_maxSigmaZ0SinTheta)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum uncertainty on z0*sin(theta): "
                                  << m_maxSigmaZ0SinTheta << " mm" );
-    trackCuts["Z0SinTheta"].push_back([maxSigmaZ0SinThetaSquared = sqr(m_maxSigmaZ0SinTheta)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["Z0SinTheta"].push_back([maxSigmaZ0SinThetaSquared = sqr(m_maxSigmaZ0SinTheta)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        double theta =    helper.theta(msgHelper);
        double sinTheta = std::sin(theta);
        double cosTheta = std::cos(theta);
@@ -346,20 +346,20 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   }
   if (maxDoubleIsSet(m_maxD0overSigmaD0)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum significance on d0: " << m_maxD0overSigmaD0 );
-    trackCuts["D0"].push_back([maxD0overSigmaD0Squared = sqr(m_maxD0overSigmaD0)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["D0"].push_back([maxD0overSigmaD0Squared = sqr(m_maxD0overSigmaD0)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return sqr(helper.d0(msgHelper)) <= maxD0overSigmaD0Squared * getDefiningParametersCov(helper,msgHelper, InDetAccessor::d0,InDetAccessor::d0);
     });
   }
   if (maxDoubleIsSet(m_maxZ0overSigmaZ0)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum significance on z0: " << m_maxZ0overSigmaZ0 );
-    trackCuts["Z0"].push_back([maxZ0overSigmaZ0Squared = sqr(m_maxZ0overSigmaZ0)](Trk_Helper helper, asg::AsgMessaging &msgHelper) -> bool {
+    trackCuts["Z0"].push_back([maxZ0overSigmaZ0Squared = sqr(m_maxZ0overSigmaZ0)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) -> bool {
        return sqr(helper.z0(msgHelper)) <= maxZ0overSigmaZ0Squared * getDefiningParametersCov(helper,msgHelper, InDetAccessor::z0,InDetAccessor::z0);
     });
   }
   if (maxDoubleIsSet(m_maxZ0SinThetaoverSigmaZ0SinTheta)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum significance on z0*sin(theta): "
                                  << m_maxZ0SinThetaoverSigmaZ0SinTheta );
-    trackCuts["Z0SinTheta"].push_back([maxZ0SinThetaoverSigmaZ0SinThetaSquared = sqr(m_maxZ0SinThetaoverSigmaZ0SinTheta)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["Z0SinTheta"].push_back([maxZ0SinThetaoverSigmaZ0SinThetaSquared = sqr(m_maxZ0SinThetaoverSigmaZ0SinTheta)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
 
        double theta =    helper.theta(msgHelper);
        double sinTheta = std::sin(theta);
@@ -377,7 +377,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   if (m_minNInnermostLayerHits > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum hits from innermost pixel layer: " << m_minNInnermostLayerHits );
     if (VERBOSE>0) ATH_MSG_INFO( "    (Track will pass if no hit is expected.)" );
-    trackCuts["InnermostLayersHits"].push_back([minNInnermostLayerHits = m_minNInnermostLayerHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["InnermostLayersHits"].push_back([minNInnermostLayerHits = m_minNInnermostLayerHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return (   getSummary(helper, msgHelper, xAOD::numberOfInnermostPixelLayerHits) >= minNInnermostLayerHits
                || getSummary(helper, msgHelper, xAOD::expectInnermostPixelLayerHit)    == 0);
     });
@@ -385,7 +385,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   if (m_minNNextToInnermostLayerHits > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum hits from next to innermost pixel layer: " << m_minNNextToInnermostLayerHits );
     if (VERBOSE>0) ATH_MSG_INFO( "    (Track will pass if no hit is expected.)" );
-    trackCuts["InnermostLayersHits"].push_back([minNNextToInnermostLayerHits = m_minNNextToInnermostLayerHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["InnermostLayersHits"].push_back([minNNextToInnermostLayerHits = m_minNNextToInnermostLayerHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return (   getSummary(helper, msgHelper, xAOD::numberOfNextToInnermostPixelLayerHits) >= minNNextToInnermostLayerHits
                || getSummary(helper, msgHelper, xAOD::expectNextToInnermostPixelLayerHit)    == 0);
     });
@@ -398,7 +398,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
       if (VERBOSE>0) ATH_MSG_WARNING( "A value of minNBothInnermostLayersHits above 2 does not make sense." );
       if (VERBOSE>0) ATH_MSG_WARNING( "  Use 1 for \"or\" or 2 for \"and\"." );
     }
-    trackCuts["InnermostLayersHits"].push_back([minNBothInnermostLayersHits = m_minNBothInnermostLayersHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["InnermostLayersHits"].push_back([minNBothInnermostLayersHits = m_minNBothInnermostLayersHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return (   std::max(  getSummary(helper, msgHelper, xAOD::numberOfInnermostPixelLayerHits),
                              static_cast<uint8_t>( !getSummary(helper, msgHelper, xAOD::expectInnermostPixelLayerHit) ))
                  +std::max(  getSummary(helper, msgHelper, xAOD::numberOfNextToInnermostPixelLayerHits),
@@ -409,7 +409,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   if (m_useMinBiasInnermostLayersCut > 0 ) { // less than zero indicates this cut is manually turned off
     if (VERBOSE>0) ATH_MSG_INFO( "  An innermost layer hit is required if expected, otherwise" );
     if (VERBOSE>0) ATH_MSG_INFO( "    a next-to-innermost layer hit is required if it is expected." );
-    trackCuts["InnermostLayersHits"].push_back([](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["InnermostLayersHits"].push_back([](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        uint8_t expected_innermost_pixel_layer_hit = getSummary(helper, msgHelper, xAOD::expectInnermostPixelLayerHit);
        return    (expected_innermost_pixel_layer_hit >  0  && getSummary(helper, msgHelper, xAOD::numberOfInnermostPixelLayerHits)>=1)
               || (expected_innermost_pixel_layer_hit == 0  && (   getSummary(helper, msgHelper, xAOD::expectNextToInnermostPixelLayerHit)==0
@@ -418,69 +418,69 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   }
   if (maxIntIsSet(m_maxNInnermostLayerSharedHits)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum shared hits in innermost pixel layer: " << m_maxNInnermostLayerSharedHits );
-    trackCuts["InnermostLayersHits"].push_back([maxNInnermostLayerSharedHits = m_maxNInnermostLayerSharedHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["InnermostLayersHits"].push_back([maxNInnermostLayerSharedHits = m_maxNInnermostLayerSharedHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getSummary(helper, msgHelper, xAOD::numberOfInnermostPixelLayerSharedHits) <= maxNInnermostLayerSharedHits;
     });
   }
   if (m_minNPixelHits > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum pixel hits: " << m_minNPixelHits );
-    trackCuts["PixelHits"].push_back( [minNPixelHits = m_minNPixelHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["PixelHits"].push_back( [minNPixelHits = m_minNPixelHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummarySum<2,Trk_Helper>(helper, msgHelper, {xAOD::numberOfPixelHits,xAOD::numberOfPixelDeadSensors}) >= minNPixelHits;
     });
   }
   if (m_minNPixelHitsPhysical > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum physical pixel hits (i.e. dead sensors do not count): "
                                  << m_minNPixelHitsPhysical );
-    trackCuts["PixelHits"].push_back([minNPixelHitsPhysical = m_minNPixelHitsPhysical](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["PixelHits"].push_back([minNPixelHitsPhysical = m_minNPixelHitsPhysical](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfPixelHits) >= minNPixelHitsPhysical;
     });
   }
   if (maxIntIsSet(m_maxNPixelHoles)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum pixel holes: " << m_maxNPixelHoles );
-    trackCuts["PixelHits"].push_back([maxNPixelHoles = m_maxNPixelHoles](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["PixelHits"].push_back([maxNPixelHoles = m_maxNPixelHoles](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfPixelHoles) <= maxNPixelHoles;
     });
   }
   if (maxIntIsSet(m_maxNPixelSharedHits)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum pixel shared hits: " << m_maxNPixelSharedHits );
-    trackCuts["PixelHits"].push_back([maxNPixelSharedHits = m_maxNPixelSharedHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["PixelHits"].push_back([maxNPixelSharedHits = m_maxNPixelSharedHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfPixelSharedHits) <= maxNPixelSharedHits;
     });
   }
   if (m_minNSctHits > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum SCT hits: " << m_minNSctHits );
-    trackCuts["SctHits"].push_back( [minNSctHits = m_minNSctHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SctHits"].push_back( [minNSctHits = m_minNSctHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummarySum<2,Trk_Helper>(helper, msgHelper, {xAOD::numberOfSCTHits, xAOD::numberOfSCTDeadSensors}) >= minNSctHits;
     });
   }
   if (m_minNSctHitsPhysical > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum physical SCT hits (i.e. dead sensors do not count): "
                                  << m_minNSctHitsPhysical );
-    trackCuts["SctHits"].push_back([minNSctHitsPhysical = m_minNSctHitsPhysical](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SctHits"].push_back([minNSctHitsPhysical = m_minNSctHitsPhysical](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfSCTHits) >= minNSctHitsPhysical;
     });
   }
   if (maxIntIsSet(m_maxNSctHoles)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum SCT holes: " << m_maxNSctHoles );
-    trackCuts["SctHits"].push_back([maxNSctHoles = m_maxNSctHoles](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SctHits"].push_back([maxNSctHoles = m_maxNSctHoles](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfSCTHoles) <= maxNSctHoles;
     });
   }
   if (maxIntIsSet(m_maxNSctSharedHits)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum SCT shared hits: " << m_maxNSctSharedHits );
-    trackCuts["SctHits"].push_back([maxNSctSharedHits = m_maxNSctSharedHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SctHits"].push_back([maxNSctSharedHits = m_maxNSctSharedHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfSCTSharedHits) <= maxNSctSharedHits;
     });
   }
   if (maxIntIsSet(m_maxNSctDoubleHoles)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum SCT double holes: " << m_maxNSctDoubleHoles );
-    trackCuts["SctHits"].push_back([maxNSctDoubleHoles = m_maxNSctDoubleHoles](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SctHits"].push_back([maxNSctDoubleHoles = m_maxNSctDoubleHoles](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper, xAOD::numberOfSCTDoubleHoles) <= maxNSctDoubleHoles ;
     });
   }
   if (m_minNSiHits > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum silicon (pixel + SCT) hits: " << m_minNSiHits );
-    trackCuts["SiHits"].push_back([minNSiHits = m_minNSiHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([minNSiHits = m_minNSiHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getSummarySum<4,Trk_Helper>(helper, msgHelper, {xAOD::numberOfPixelHits,
                                                               xAOD::numberOfSCTHits,
                                                               xAOD::numberOfPixelDeadSensors,
@@ -490,19 +490,19 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   if (m_minNSiHitsPhysical > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum physical silicon hits (i.e. dead sensors do not count): "
                                  << m_minNSiHitsPhysical );
-    trackCuts["SiHits"].push_back([minNSiHitsPhysical = m_minNSiHitsPhysical](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([minNSiHitsPhysical = m_minNSiHitsPhysical](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummarySum<2,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelHits, xAOD::numberOfSCTHits} )   >= minNSiHitsPhysical ;
     });
   }
   if (maxIntIsSet(m_maxNSiHoles)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum silicon holes: " << m_maxNSiHoles );
-    trackCuts["SiHits"].push_back([maxNSiHoles = m_maxNSiHoles](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([maxNSiHoles = m_maxNSiHoles](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummarySum<2,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelHoles, xAOD::numberOfSCTHoles} )   <= maxNSiHoles ;
     });
   }
   if (maxIntIsSet(m_maxNSiSharedHits)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum silicon shared hits: " << m_maxNSiSharedHits );
-    trackCuts["SiHits"].push_back([maxNSiSharedHits = m_maxNSiSharedHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([maxNSiSharedHits = m_maxNSiSharedHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummarySum<2,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelSharedHits, xAOD::numberOfSCTSharedHits} )   <= maxNSiSharedHits ;
     });
   }
@@ -510,7 +510,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  No more than one shared module:" );
     if (VERBOSE>0) ATH_MSG_INFO( "    i.e. max 1 shared pixel hit or" );
     if (VERBOSE>0) ATH_MSG_INFO( "    2 shared SCT hits, and not both." );
-    trackCuts["SiHits"].push_back([](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummary(helper, msgHelper,xAOD::numberOfPixelSharedHits )
               + getSummary(helper, msgHelper,xAOD::numberOfSCTSharedHits )/2  <= 1  ;
     });
@@ -518,7 +518,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   if (m_minNSiHitsIfSiSharedHits > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum silicon hits if the track has shared hits: "
                                  << m_minNSiHitsIfSiSharedHits );
-    trackCuts["SiHits"].push_back([minNSiHitsIfSiSharedHits = m_minNSiHitsIfSiSharedHits](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([minNSiHitsIfSiSharedHits = m_minNSiHitsIfSiSharedHits](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return    getSummarySum<2,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelSharedHits, xAOD::numberOfSCTSharedHits} ) == 0
               || getSummarySum<4,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelHits,
                                                                 xAOD::numberOfSCTHits,
@@ -531,7 +531,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  Require " << m_minNSiHitsAboveEtaCutoff
                                  << " silicon hits above eta = " << m_minEtaForStrictNSiHitsCut );
     trackCuts["SiHits"].push_back([minEtaForStrictNSiHitsCut = m_minEtaForStrictNSiHitsCut,
-                                   minNSiHitsAboveEtaCutoff  = m_minNSiHitsAboveEtaCutoff](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                   minNSiHitsAboveEtaCutoff  = m_minNSiHitsAboveEtaCutoff](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return    std::abs(helper.eta(msgHelper)) <= minEtaForStrictNSiHitsCut
               || getSummarySum<4,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelHits,
                                                                 xAOD::numberOfSCTHits,
@@ -541,7 +541,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   }
   if (m_useExperimentalInnermostLayersCut) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Zero pixel holes allowed, except one pix hole is allowed if there is a physical IBL hit and a BLayer hit is expected but there is no BLayer hit." );
-    trackCuts["PixHits"].push_back([](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["PixHits"].push_back([](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        uint8_t pixel_holes = getSummary(helper, msgHelper,xAOD::numberOfPixelHoles);
        return  pixel_holes == 0 || ( pixel_holes<=1 && getSummary(helper, msgHelper,xAOD::numberOfInnermostPixelLayerHits)       >= 1
                                                     && getSummary(helper, msgHelper,xAOD::expectNextToInnermostPixelLayerHit)    > 0
@@ -552,7 +552,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   if (m_minNSiHitsMod > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum modified Si hits (2*pix + sct) (does not include dead sensors)= "
                                  << m_minNSiHitsMod );
-    trackCuts["SiHits"].push_back([minNSiHitsMod = m_minNSiHitsMod](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["SiHits"].push_back([minNSiHitsMod = m_minNSiHitsMod](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return   getSummarySum<3,Trk_Helper>(helper, msgHelper,{xAOD::numberOfPixelHits,
                                                                xAOD::numberOfPixelHits, // pixel hits count twice in this definition
                                                                xAOD::numberOfSCTHits})   >= minNSiHitsMod;
@@ -564,7 +564,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum modified Si hits in bottom half = "
                                  << m_minNSiHitsModBottom );
     trackCuts["SiHits"].push_back([minNSiHitsModTop    = m_minNSiHitsModTop,
-                                   minNSiHitsModBottom = m_minNSiHitsModBottom](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                   minNSiHitsModBottom = m_minNSiHitsModBottom](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        auto [top,bottom] = getSiHitsTopBottom(helper, msgHelper);
        return top  >= minNSiHitsModTop && bottom >= minNSiHitsModBottom;
     });
@@ -600,7 +600,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
 		    << m_maxTrtHighEFraction);
       trackCuts["TrtHits"].push_back([maxTrtEtaAcceptance = m_maxTrtEtaAcceptance,
                                       maxEtaForTrtHitCuts = m_maxEtaForTrtHitCuts,
-                                      maxTrtHighEFraction = m_maxTrtHighEFraction](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                      maxTrtHighEFraction = m_maxTrtHighEFraction](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
          double absEta = std::abs( helper.eta( msgHelper) );
          return      (absEta <= maxTrtEtaAcceptance || absEta > maxEtaForTrtHitCuts)
                 ||                            getSummary(helper, msgHelper,xAOD::numberOfTRTHighThresholdHits )
@@ -612,7 +612,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
 		    << m_maxTrtHighEFractionWithOutliers);
       trackCuts["TrtHits"].push_back([maxTrtEtaAcceptance             = m_maxTrtEtaAcceptance,
                                       maxEtaForTrtHitCuts             = m_maxEtaForTrtHitCuts,
-                                      maxTrtHighEFractionWithOutliers = m_maxTrtHighEFractionWithOutliers](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                      maxTrtHighEFractionWithOutliers = m_maxTrtHighEFractionWithOutliers](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
          double absEta = std::abs( helper.eta( msgHelper) );
          return      (absEta <= maxTrtEtaAcceptance || absEta > maxEtaForTrtHitCuts)
             ||                                      (  getSummarySum<2,Trk_Helper>(helper, msgHelper,{xAOD::numberOfTRTHighThresholdHits, xAOD::numberOfTRTHighThresholdOutliers} ))
@@ -623,7 +623,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
       ATH_MSG_INFO( "    Maximum fraction of TRT hits that are outliers: " << m_maxTrtOutlierFraction );
       trackCuts["TrtHits"].push_back([maxTrtEtaAcceptance   = m_maxTrtEtaAcceptance,
                                       maxEtaForTrtHitCuts   = m_maxEtaForTrtHitCuts,
-                                      maxTrtOutlierFraction = m_maxTrtOutlierFraction](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                      maxTrtOutlierFraction = m_maxTrtOutlierFraction](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
          double absEta = std::abs( helper.eta( msgHelper) );
          uint8_t trt_outliers = getSummary(helper, msgHelper,xAOD::numberOfTRTOutliers );
          return     ( absEta <= maxTrtEtaAcceptance || absEta > maxEtaForTrtHitCuts)
@@ -635,7 +635,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   // fit quality cuts
   if (m_useEtaDependentMaxChiSq) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Using pre-defined eta-dependent maximum chi squared (no longer recommended)." );
-    trackCuts["FitQuality"].push_back([](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["FitQuality"].push_back([](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        double eta = helper.eta(msgHelper);
        double fit_chi_square = getFitChiSquare(helper,msgHelper);
        double fit_ndof = getFitNDoF(helper,msgHelper);
@@ -649,19 +649,19 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   }
   if (maxDoubleIsSet(m_maxChiSq)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum chi squared: " << m_maxChiSq );
-    trackCuts["FitQuality"].push_back([maxChiSq = m_maxChiSq](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["FitQuality"].push_back([maxChiSq = m_maxChiSq](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getFitChiSquare(helper,msgHelper) <= maxChiSq;
     });
   }
   if (maxDoubleIsSet(m_maxChiSqperNdf)) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Maximum chi squared per degree of freedom: " << m_maxChiSqperNdf );
-    trackCuts["FitQuality"].push_back([maxChiSqperNdf = m_maxChiSqperNdf](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["FitQuality"].push_back([maxChiSqperNdf = m_maxChiSqperNdf](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getFitChiSquare(helper,msgHelper)  <= maxChiSqperNdf * getFitNDoF(helper,msgHelper);
     });
   }
   if (m_minProb > 0.) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum chi squared probability: " << m_minProb );
-    trackCuts["FitQuality"].push_back([minProb = m_minProb](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["FitQuality"].push_back([minProb = m_minProb](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return TMath::Prob( getFitChiSquare(helper,msgHelper),getFitNDoF(helper,msgHelper))  >= minProb;
     });
   }
@@ -669,7 +669,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum chi-sq probability of " << m_minProbAbovePtCutoff
                                  << " above pt of " << m_minPtForProbCut*1e-3 << " GeV." );
     trackCuts["FitQuality"].push_back([minPtForProbCut      = m_minPtForProbCut,
-                                       minProbAbovePtCutoff = m_minProbAbovePtCutoff](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                       minProbAbovePtCutoff = m_minProbAbovePtCutoff](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return    helper.pt(msgHelper) <= minPtForProbCut
               || TMath::Prob( getFitChiSquare(helper,msgHelper),getFitNDoF(helper,msgHelper))  >= minProbAbovePtCutoff;
     });
@@ -678,13 +678,13 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
   // dE/dx cuts
   if (m_minNUsedHitsdEdx > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum used hits for dEdx: " << m_minNUsedHitsdEdx );
-    trackCuts["dEdxHits"].push_back([minNUsedHitsdEdx = m_minNUsedHitsdEdx](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["dEdxHits"].push_back([minNUsedHitsdEdx = m_minNUsedHitsdEdx](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getNumberOfUsedHitsdEdx(helper,msgHelper) >= minNUsedHitsdEdx;
     });
   }
   if (m_minNOverflowHitsdEdx > 0) {
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum IBL overflow hits for dEdx: " << m_minNOverflowHitsdEdx );
-    trackCuts["dEdxHits"].push_back([minNOverflowHitsdEdx = m_minNOverflowHitsdEdx](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+    trackCuts["dEdxHits"].push_back([minNOverflowHitsdEdx = m_minNOverflowHitsdEdx](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        return getNumberOfIBLOverflowsdEdx(helper,msgHelper) >= minNOverflowHitsdEdx;
     });
   }
@@ -692,13 +692,13 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  Minimum high threshold electron probability: " << m_minEProbabilityHT );
     if (m_eProbHTonlyForXe) {
       if (VERBOSE>0) ATH_MSG_INFO( "    (only applied on tracks where all TRT hits are Xenon)" );
-      trackCuts["eProbHT"].push_back([minEProbabilityHT = m_minEProbabilityHT](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+      trackCuts["eProbHT"].push_back([minEProbabilityHT = m_minEProbabilityHT](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
          return     getSummarySum<2,Trk_Helper>(helper, msgHelper, {xAOD::numberOfTRTHits, xAOD::numberOfTRTOutliers})
                   > getSummary(helper, msgHelper, xAOD::numberOfTRTXenonHits)
                || getEProbabilityHT(helper,msgHelper) >= minEProbabilityHT;
       });
     } else {
-       trackCuts["eProbHT"].push_back([minEProbabilityHT = m_minEProbabilityHT](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+       trackCuts["eProbHT"].push_back([minEProbabilityHT = m_minEProbabilityHT](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
           return  getEProbabilityHT(helper,msgHelper) >= minEProbabilityHT;
        });
     }
@@ -725,7 +725,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
                                << " ,Silicon hits >= " << m_vecMinNSiHitsAboveEta.at(cutSize-1) );
 
     trackCuts["SiHits"].push_back([p_vecEtaCutoffsForSiHitsCut = &std::as_const(m_vecEtaCutoffsForSiHitsCut),
-                                   p_vecMinNSiHitsAboveEta     = &std::as_const(m_vecMinNSiHitsAboveEta)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                   p_vecMinNSiHitsAboveEta     = &std::as_const(m_vecMinNSiHitsAboveEta)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        double abs_eta = std::abs(helper.eta(msgHelper));
        unsigned int bin_i = findBin(*p_vecEtaCutoffsForSiHitsCut, abs_eta);
        return    bin_i >= p_vecMinNSiHitsAboveEta->size()
@@ -757,7 +757,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  for eta > " << m_vecEtaCutoffsForPtCut.at(cutSize-1)
                                << " ,transverse momentum >= " << m_vecMinPtAboveEta.at(cutSize-1) );
     trackCuts["Pt"].push_back([p_vecEtaCutoffsForPtCut = &std::as_const(m_vecEtaCutoffsForPtCut),
-                               p_vecMinPtAboveEta = &std::as_const(m_vecMinPtAboveEta)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                               p_vecMinPtAboveEta = &std::as_const(m_vecMinPtAboveEta)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        double abs_eta = std::abs(helper.eta(msgHelper));
        unsigned int bin_i = findBin(*p_vecEtaCutoffsForPtCut, abs_eta);
        return  bin_i >= p_vecMinPtAboveEta->size() || abs_eta > 5.0 || helper.pt(msgHelper)  >= (*p_vecMinPtAboveEta)[bin_i];
@@ -786,7 +786,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
     if (VERBOSE>0) ATH_MSG_INFO( "  for pt > " << m_vecPtCutoffsForSctHitsCut.at(cutSize-1)
                                << " MeV,\t\tSCT hits >= " << m_vecMinNSctHitsAbovePt.at(cutSize-1) );
     trackCuts["SctHits"].push_back([p_vecPtCutoffsForSctHitsCut = &std::as_const(m_vecPtCutoffsForSctHitsCut),
-                                    p_vecMinNSctHitsAbovePt     = &std::as_const(m_vecMinNSctHitsAbovePt)](Trk_Helper helper, asg::AsgMessaging &msgHelper) {
+                                    p_vecMinNSctHitsAbovePt     = &std::as_const(m_vecMinNSctHitsAbovePt)](Trk_Helper helper, const asg::AsgMessaging &msgHelper) {
        double pt = helper.pt(msgHelper);
        unsigned int bin_i = findBin(*p_vecPtCutoffsForSctHitsCut, pt);
        return     bin_i >= p_vecPtCutoffsForSctHitsCut->size()
@@ -799,7 +799,7 @@ StatusCode InDet::InDetTrackSelectionTool::setupCuts(std::map< std::string, std:
 
 template <class Trk_Helper>
 asg::AcceptData InDet::InDetTrackSelectionTool::accept(Trk_Helper helper,
-                                                       const std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, asg::AsgMessaging &msgHelper)> > > &trackCuts) const {
+                                                       const std::map< std::string, std::vector< std::function<bool(Trk_Helper helper, const asg::AsgMessaging &msgHelper)> > > &trackCuts) const {
   if (!m_isInitialized) {
     if (!m_warnInit) {
       ATH_MSG_WARNING( "Tool is not initialized! Calling accept() will not be very helpful." );
-- 
GitLab