diff --git a/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx b/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
index 313dd1d9e1285bb4082c85b27e5c2c9b9275ce62..f9f839c0c392b8c0cee64cef8a95b5de827495dd 100644
--- a/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
@@ -33,7 +33,7 @@ StatusCode MvaTESVariableDecorator::finalize() {
 }
 
 //_____________________________________________________________________________
-StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) {
+StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
   
   // Decorate event info
   // need to check mu can be retrieved via EventInfo for Run3 trigger
diff --git a/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx b/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
index ad9a55c15b9cea9fff16cee48c17fe263d2394b6..6e41e948f5a4426573ad6f9462a4593eb4d65135 100644
--- a/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
+++ b/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
@@ -132,7 +132,7 @@ StatusCode TauCalibrateLC::initialize() {
 }
 
 /********************************************************************/
-StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau) 
+StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau) const
 { 
   // energy calibration depends on number of tracks - 1p or Mp
   int prongBin = 1; //Mp
diff --git a/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx b/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
index 423f7dc08ed3899b4395d89f8200ad42f1615a38..a69c9f87a354ff8a843f08afeab2c883754d7737 100644
--- a/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
+++ b/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
@@ -56,7 +56,7 @@ StatusCode TauCommonCalcVars::finalize() {
 //-----------------------------------------------------------------------------
 // Execution
 //-----------------------------------------------------------------------------
-StatusCode TauCommonCalcVars::execute(xAOD::TauJet& pTau) {
+StatusCode TauCommonCalcVars::execute(xAOD::TauJet& pTau) const {
 
     /////////////////////////////////////////////////
     // Calculate variables that are always valid   
diff --git a/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx b/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx
index 8add49ef121c27474f47814ec9dd483c61fd1549..c3f01225741f45880bc9a585ca98f3a47ee91ad2 100644
--- a/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx
@@ -47,7 +47,7 @@ StatusCode TauEleOLRDecorator::initialize()
   return StatusCode::SUCCESS;
 }
 
-StatusCode TauEleOLRDecorator::execute(xAOD::TauJet& tau)
+StatusCode TauEleOLRDecorator::execute(xAOD::TauJet& tau) const
 {
   // get electron container                                                                                                                               
   SG::ReadHandle<xAOD::ElectronContainer> electronInHandle( m_electronInputContainer );
@@ -102,7 +102,7 @@ StatusCode TauEleOLRDecorator::finalize()
   return StatusCode::SUCCESS;
 }
 
-float TauEleOLRDecorator::getCutVal(float fEta, float fPt)
+float TauEleOLRDecorator::getCutVal(float fEta, float fPt) const
 {
   if(fPt>1900) fPt=1900;
   if(std::abs(fEta)>2.465) fEta=2.465;
diff --git a/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx b/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
index de9c8deaabf552a4c0b43f02e608d1da7b356451..d005725d7004b89136b81518046ba7fd711b8434 100644
--- a/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
@@ -31,7 +31,7 @@ StatusCode TauIDVarCalculator::initialize()
   return StatusCode::SUCCESS;
 }
 
-StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau)
+StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau) const
 {
   int nVtx = 0;
   if(!inTrigger()){
diff --git a/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx b/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
index 069a006b53ccb0dbe434b86c745b52c4a6cc3529..3c26d243719529bc3c37806ab09eeba6b169e80e 100644
--- a/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
@@ -112,7 +112,7 @@ StatusCode TauJetRNNEvaluator::initialize() {
     return StatusCode::SUCCESS;
 }
 
-StatusCode TauJetRNNEvaluator::execute(xAOD::TauJet &tau) {
+StatusCode TauJetRNNEvaluator::execute(xAOD::TauJet &tau) const {
     // Output variable accessor
     const SG::AuxElement::Accessor<float> output(m_output_varname);
 
@@ -156,7 +156,7 @@ TauJetRNN *TauJetRNNEvaluator::get_rnn_3p() {
 }
 
 StatusCode TauJetRNNEvaluator::get_tracks(
-    const xAOD::TauJet &tau, std::vector<const xAOD::TauTrack *> &out) {
+    const xAOD::TauJet &tau, std::vector<const xAOD::TauTrack *> &out) const {
     auto tracks = tau.allTracks();
 
     // Sort by descending pt
@@ -175,7 +175,7 @@ StatusCode TauJetRNNEvaluator::get_tracks(
 }
 
 StatusCode TauJetRNNEvaluator::get_clusters(
-    const xAOD::TauJet &tau, std::vector<const xAOD::CaloCluster *> &out) {
+    const xAOD::TauJet &tau, std::vector<const xAOD::CaloCluster *> &out) const {
 
     const xAOD::Jet *jet_seed = *tau.jetLink();
     if (!jet_seed) {
diff --git a/Reconstruction/tauRecTools/Root/TauRecToolBase.cxx b/Reconstruction/tauRecTools/Root/TauRecToolBase.cxx
index e7017156772b598e98b57d3bc4a2b2c657fdc1d0..bb42ed93834101d2ea4bf72432c09d651f88554b 100644
--- a/Reconstruction/tauRecTools/Root/TauRecToolBase.cxx
+++ b/Reconstruction/tauRecTools/Root/TauRecToolBase.cxx
@@ -9,6 +9,12 @@
 #include "TEnv.h"
 #include "THashList.h"
 
+#include <sys/types.h>
+#include <unistd.h>
+#include <string>
+#include <sstream>
+#include <cstdlib>
+
 //________________________________________
 std::string TauRecToolBase::find_file(const std::string& fname) const {
   std::string full_path;
@@ -138,7 +144,7 @@ StatusCode TauRecToolBase::eventInitialize(){
 }
 
 //________________________________________
-StatusCode TauRecToolBase::execute(xAOD::TauJet&){
+StatusCode TauRecToolBase::execute(xAOD::TauJet&) const {
   ATH_MSG_ERROR("function not implemented");
   return StatusCode::FAILURE;
 }
diff --git a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
index 9973557f3cf508069daff3ac11e63cc0846b48bf..1d5fdd5d5edbd88f79fc76c6f8ff3ea657d9d2d9 100644
--- a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
+++ b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
@@ -67,7 +67,7 @@ StatusCode TauSubstructureVariables::finalize() {
 // Execute method
 //************************************
 
-StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) {
+StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) const {
 
 	const xAOD::Jet* taujetseed = (*pTau.jetLink());
     if (!taujetseed) {
diff --git a/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx b/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx
index cc04d313f44dea2eefaf2e54f1f803e33e7d8854..04fd8719b09beabaacaed80e73be60f0466a8768 100644
--- a/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx
+++ b/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx
@@ -63,7 +63,7 @@ StatusCode TauTrackClassifier::finalize()
 
     
 //______________________________________________________________________________
-StatusCode TauTrackClassifier::execute(xAOD::TauJet& xTau)
+StatusCode TauTrackClassifier::execute(xAOD::TauJet& xTau) const
 {
   // Get track container via link from tau - instead of using read handle (not written to store yet) 
   // Check that size > 0
diff --git a/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx b/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx
index e47b3855e7c6f35761a4934835b0a5f472f570a5..7845aec15cbc45b568b2f91b6d6e898536011cef 100644
--- a/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx
+++ b/Reconstruction/tauRecTools/Root/TauTrackRNNClassifier.cxx
@@ -46,7 +46,7 @@ StatusCode TauTrackRNNClassifier::initialize()
 }
 
 //______________________________________________________________________________
-StatusCode TauTrackRNNClassifier::execute(xAOD::TauJet& xTau)
+StatusCode TauTrackRNNClassifier::execute(xAOD::TauJet& xTau) const
 {
   // Get track container via link from tau - instead of using read handle (not written to store yet) 
   // Check that size > 0
diff --git a/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx b/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx
index 138ecbac632dbf568508d28b7eaa6e6a061d0293..c5a3c6ff842de5a2b53b97461c078d8c56f8c6e6 100644
--- a/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx
@@ -114,7 +114,7 @@ StatusCode TauWPDecorator::storeLimits(int nProng) {
   return StatusCode::SUCCESS;
 }
 
-double TauWPDecorator::transformScore(double score, double cut_lo, double eff_lo, double cut_hi, double eff_hi) {
+double TauWPDecorator::transformScore(double score, double cut_lo, double eff_lo, double cut_hi, double eff_hi) const {
   double newscore = 1. - eff_lo - (score - cut_lo)/(cut_hi - cut_lo) * (eff_hi - eff_lo);
   return newscore;
 }
@@ -143,7 +143,7 @@ StatusCode TauWPDecorator::initialize() {
 }
 
 /********************************************************************/
-StatusCode TauWPDecorator::execute(xAOD::TauJet& pTau) 
+StatusCode TauWPDecorator::execute(xAOD::TauJet& pTau) const
 { 
 
   float mu = 0;
@@ -189,8 +189,8 @@ StatusCode TauWPDecorator::execute(xAOD::TauJet& pTau)
   ATH_MSG_VERBOSE("mu before " << y_var);
 
   // Implement limits
-  pt = TMath::Min(m_xmax[nProng], TMath::Max(m_xmin[nProng], pt));
-  y_var = TMath::Min(m_ymax[nProng], TMath::Max(m_ymin[nProng], y_var));
+  pt = TMath::Min(m_xmax.at(nProng), TMath::Max(m_xmin.at(nProng), pt));
+  y_var = TMath::Min(m_ymax.at(nProng), TMath::Max(m_ymin.at(nProng), y_var));
   
   ATH_MSG_VERBOSE("pT after " << pt);
   ATH_MSG_VERBOSE("mu after " << y_var);
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx b/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
index e62e972e8db4350e0ea551d17751519f08dc5dfc..2514b2d0dcebee56ca0c36e80d8f9c285bbb67ba 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
@@ -58,7 +58,7 @@ StatusCode JetSeedBuilder::finalize() {
 // execute
 //-------------------------------------------------------------------------
 
-StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) {
+StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) const {
 
 	ATH_MSG_DEBUG("Starting execute");
 
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.h b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
index 97ac8dbfcf500fa391ffb05bada741ec37c44a56..9cf545e85c666762fec2d995f47cbb17550030e3 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.h
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
@@ -28,7 +28,7 @@ public:
     virtual ~JetSeedBuilder();
 
     virtual StatusCode initialize() override;
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
     virtual StatusCode finalize() override;
 
 };
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
index e288b4e6faba4e154d004969bec88e6ac9394dcf..4ed82d2f0d16ae17547f4e66e86cdd9f1d1a0098 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
@@ -27,7 +27,7 @@ StatusCode TauAxisSetter::initialize()
 }
 
 /********************************************************************/
-StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau)
+StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau) const
 {
 
     const xAOD::Jet* pJetSeed = (*pTau.jetLink());
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.h b/Reconstruction/tauRecTools/src/TauAxisSetter.h
index 93ef0de502493c4cfe22257196ab07b9c80763e1..836aaed929c99e7d4962af20cb3a784d6461058a 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.h
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.h
@@ -29,7 +29,7 @@ public:
     ~TauAxisSetter();
 
     virtual StatusCode initialize() override;
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
     virtual StatusCode finalize() override;
 
 private:
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.cxx b/Reconstruction/tauRecTools/src/TauCellVariables.cxx
index c9419af81a0ab7f479bd9f8581092a0713af1ddf..f43b65e91fd8a67107e5e363de34eae07e4c28cd 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.cxx
@@ -40,7 +40,7 @@ StatusCode TauCellVariables::initialize() {
 
 
 
-StatusCode TauCellVariables::execute(xAOD::TauJet& pTau) {
+StatusCode TauCellVariables::execute(xAOD::TauJet& pTau) const {
 
   const xAOD::Jet* pJetSeed = (*pTau.jetLink());
   if (!pJetSeed) {
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.h b/Reconstruction/tauRecTools/src/TauCellVariables.h
index fe87194280e39f6e54cfe5a86bbfb3cf3158a7a7..13119d343b6a79ee91afac4f6783d5b62baab14b 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.h
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.h
@@ -32,7 +32,7 @@ class TauCellVariables : public TauRecToolBase {
     virtual StatusCode finalize() override;
 
     /** @brief Perform the calculation of cell variables for each tau candidate */
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
 
   private:
     
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
index ae3218fce8596e2d36d861f52aa6f060d31356e1..6f2eccd2cd574e6f8818c20cabb0106fe802b158 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
@@ -76,7 +76,7 @@ StatusCode TauElectronVetoVariables::initialize()
 //-------------------------------------------------------------------------
 // Execution
 //-------------------------------------------------------------------------
-StatusCode TauElectronVetoVariables::execute(xAOD::TauJet& pTau)
+StatusCode TauElectronVetoVariables::execute(xAOD::TauJet& pTau) const
 {
     if (pTau.nTracks() < 1) {
         return StatusCode::SUCCESS;
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
index d002a49e04037a8625cb0dcc8853302ae6641fa1..d239719254f93975e1b5353826ac117ed7ff4899 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
@@ -29,7 +29,7 @@ public:
     ASG_TOOL_CLASS2(TauElectronVetoVariables, TauRecToolBase, ITauToolBase);
 
     virtual ~TauElectronVetoVariables();
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
     virtual StatusCode initialize() override;
     virtual StatusCode finalize() override;
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
index 8ae83f9fa25a4432b7f425df966704000e8fc742..74b37635195e2faa21b9b940db79310c24832548 100644
--- a/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
+++ b/Reconstruction/tauRecTools/tauRecTools/CombinedP4FromRecoTaus.h
@@ -27,13 +27,9 @@ public:
   CombinedP4FromRecoTaus(const std::string& name="CombinedP4FromRecoTaus");  
     
   //function where variables are computed and decorated
-  StatusCode initialize() override;
+  virtual StatusCode initialize() override;
         
-  StatusCode execute(xAOD::TauJet& xTau) override
-  {
-    return static_cast<const CombinedP4FromRecoTaus*>(this)->execute(xTau);
-  } 
-  StatusCode execute(xAOD::TauJet& xTau) const;
+  virtual StatusCode execute(xAOD::TauJet& xTau) const override;
 
   bool getUseCaloPtFlag(const xAOD::TauJet* tau) const;
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h b/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
index 410e566330773aa300b72e9d4a5769e4850bfbb1..3ff40cd127951d44b9a1941a6f794b69b8455d0e 100644
--- a/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
+++ b/Reconstruction/tauRecTools/tauRecTools/ITauToolBase.h
@@ -42,7 +42,7 @@ class ITauToolBase : virtual public asg::IAsgTool
   //-----------------------------------------------------------------
   //! Execute - called for each tau candidate
   //-----------------------------------------------------------------
-  virtual StatusCode execute(xAOD::TauJet& pTau) = 0;
+  virtual StatusCode execute(xAOD::TauJet& pTau) const = 0;
   virtual StatusCode executeVertexFinder(xAOD::TauJet& pTau, 
                                          const xAOD::VertexContainer* vertexContainer = nullptr, 
                                          const xAOD::TrackParticleContainer* trackContainer = nullptr) = 0;
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
index 53b1f570d2a52b001e1b70741d66e9fe3a610872..9278fce1243eb80a241db5742d52beb12a4429c8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESEvaluator.h
@@ -21,13 +21,9 @@ class MvaTESEvaluator
   MvaTESEvaluator(const std::string& name="MvaTESEvaluator");
   virtual ~MvaTESEvaluator();
     
-  StatusCode initialize() override;
-  StatusCode execute(xAOD::TauJet& xTau) override
-  {
-    return static_cast<const MvaTESEvaluator*>(this)->execute(xTau);
-  }
-  StatusCode execute(xAOD::TauJet& xTau) const;
-  StatusCode finalize() override { return StatusCode::SUCCESS; }
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute(xAOD::TauJet& xTau) const override;
+  virtual StatusCode finalize() override { return StatusCode::SUCCESS; }
   
  private:
   // MVA input variables (provide all variables in float)
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
index dbc8ac68a3148961ceb84f0b562091722b67c1bc..e9da780ce01fb0ffb78f162e9eeea52ebdbd341b 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
@@ -22,9 +22,9 @@ class MvaTESVariableDecorator
   MvaTESVariableDecorator(const std::string& name="MvaTESVariableDecorator");
   virtual ~MvaTESVariableDecorator();
     
-  StatusCode initialize() override;
-  StatusCode execute(xAOD::TauJet& xTau) override;
-  StatusCode finalize() override;
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute(xAOD::TauJet& xTau) const override;
+  virtual StatusCode finalize() override;
 
  private:
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
index 27f761daed835ed60264521c35d7cfec05df94ef..70af47185a207b942b8ee0f35d934ac6305218b0 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
@@ -32,7 +32,7 @@ public:
 
     virtual StatusCode initialize() override;
     virtual StatusCode finalize() override;
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
 
 
 private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
index ce0f24bfc4f170bdcbb413a3c2fdaa23a620bb6a..78080de6cb94ab3a6dd6bed3597814a6df2e3c37 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
@@ -27,7 +27,7 @@ public:
     ~TauCommonCalcVars();
     
     virtual StatusCode initialize() override;   
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
     virtual StatusCode finalize() override;  
 
 private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
index 0ee9de03dfbcc3dd9abd883b6bf6fa30473770e3..ed65691fe12b40e87d4148e2508e4bd59cdf2532 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
@@ -30,11 +30,11 @@ class TauEleOLRDecorator: virtual public TauRecToolBase
   virtual ~TauEleOLRDecorator();
 
   virtual StatusCode initialize() override;
-  virtual StatusCode execute(xAOD::TauJet&) override;
+  virtual StatusCode execute(xAOD::TauJet&) const override;
   virtual StatusCode finalize() override;
 
  private:
-  float getCutVal(float fEta, float fPt);
+  float getCutVal(float fEta, float fPt) const;
 
   std::string m_sEleOLRFilePath;  
   SG::ReadHandleKey<xAOD::ElectronContainer> m_electronInputContainer{this,"Key_electronInputContainer", "Electrons", "input electron container key"};
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
index c4624608a57ae10dbfcb38e72aa942bf15d77583..d92c9183b6efbff5466c37f354eee287e63ffe4c 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
@@ -28,7 +28,7 @@ class TauIDVarCalculator: public TauRecToolBase
   virtual ~TauIDVarCalculator() {}
 
   virtual StatusCode initialize() override;
-  virtual StatusCode execute(xAOD::TauJet&) override;
+  virtual StatusCode execute(xAOD::TauJet&) const override;
   virtual StatusCode finalize() override;
 
   static const float LOW_NUMBER;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
index 2dfd4c945a15ee341547532e1ba4ef1889d8439b..60498a34e217b2fc3b0ae57bfebf086579239bc1 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
@@ -27,13 +27,9 @@ class TauJetBDTEvaluator
   TauJetBDTEvaluator(const std::string& name="TauJetBDTEvaluator");
   virtual ~TauJetBDTEvaluator() { }
     
-  StatusCode initialize() override;
-  StatusCode execute(xAOD::TauJet& xTau) override
-  {
-    return static_cast<const TauJetBDTEvaluator*>(this)->execute(xTau);
-  }
-  StatusCode execute(xAOD::TauJet& xTau) const;
-  StatusCode finalize() override;
+  virtual StatusCode initialize() override;
+  virtual StatusCode execute(xAOD::TauJet& xTau) const override;
+  virtual StatusCode finalize() override;
   
  private:
   std::unique_ptr<tauRecTools::BDTHelper> m_mvaBDT;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h b/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
index 66125f8f0b523fc58a3db185ebc987adb368f9ff..a75615f5bd43c0ae64bbeaa096f8882b84843f58 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetRNNEvaluator.h
@@ -32,8 +32,8 @@ public:
     TauJetRNNEvaluator(const std::string &name = "TauJetRNNEvaluator");
     virtual ~TauJetRNNEvaluator();
 
-    StatusCode initialize() override;
-    StatusCode execute(xAOD::TauJet &tau) override;
+    virtual StatusCode initialize() override;
+    virtual StatusCode execute(xAOD::TauJet &tau) const override;
     // Getter for the underlying RNN implementation
     TauJetRNN *get_rnn_0p();
     TauJetRNN *get_rnn_1p();
@@ -42,11 +42,11 @@ public:
 private:
     // Selects tracks to be used as input to the network
     StatusCode get_tracks(const xAOD::TauJet &tau,
-                          std::vector<const xAOD::TauTrack *> &out);
+                          std::vector<const xAOD::TauTrack *> &out) const;
 
     // Selects clusters to be used as input to the network
     StatusCode get_clusters(const xAOD::TauJet &tau,
-                            std::vector<const xAOD::CaloCluster *> &out);
+                            std::vector<const xAOD::CaloCluster *> &out) const;
 
 private:
     std::string m_output_varname;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h b/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
index 0e7657c42d2985c318b8eb068a2f9811239ea4c0..58a8b232ed77addec60a1467e594656d779a7f6e 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauRecToolBase.h
@@ -39,7 +39,7 @@ class TauRecToolBase : public asg::AsgTool, virtual public ITauToolBase {
   //-----------------------------------------------------------------
   //! Execute - called for each tau candidate
   //-----------------------------------------------------------------
-  virtual StatusCode execute(xAOD::TauJet& pTau) override;
+  virtual StatusCode execute(xAOD::TauJet& pTau) const override;
   virtual StatusCode executeVertexFinder(xAOD::TauJet& pTau, 
                                          const xAOD::VertexContainer* vertexContainer = nullptr, 
                                          const xAOD::TrackParticleContainer* trackContainer = nullptr) override;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
index 6a24ca76db09bbdd4825694da0c6447044ca87ef..5e2a31aaacc0b9e1ffdae84a219080471ba1f1d8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
@@ -26,7 +26,7 @@ class TauSubstructureVariables : public TauRecToolBase
 
         ~TauSubstructureVariables();
 
-        virtual StatusCode execute(xAOD::TauJet& pTau) override;
+        virtual StatusCode execute(xAOD::TauJet& pTau) const override;
         virtual StatusCode initialize() override;
         virtual StatusCode finalize() override;
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
index 89124def597809035224ff641a8ead38414bb2df..5d37f45e3230d507997d8fad191161eb118abe10 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
@@ -42,7 +42,7 @@ public:
   ~TauTrackClassifier();
 
   virtual StatusCode initialize() override;
-  virtual StatusCode execute(xAOD::TauJet& pTau) override;
+  virtual StatusCode execute(xAOD::TauJet& pTau) const override;
   virtual StatusCode finalize() override;
 
 private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h
index 267b64ccb85c1d8b7f1a6272d3a7d1dcff12f07f..18bfa0c59cccf3d76f802dc407799298fa836234 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackRNNClassifier.h
@@ -53,7 +53,7 @@ public:
   // retrieve all track classifier sub tools
   virtual StatusCode initialize() override;
  // pass all tracks in the tau cone to all track classifier sub tools
-  virtual StatusCode execute(xAOD::TauJet& pTau) override;
+  virtual StatusCode execute(xAOD::TauJet& pTau) const override;
 
 private:
   ToolHandleArray<TrackRNN> m_vClassifier {this, "Classifiers", {}};
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
index b8524ccfc0a29e372d0efa496efded0bebe43ee5..476458a2eb898e1c1f34c788f2fd340e84531817 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
@@ -34,11 +34,11 @@ public:
 
     virtual StatusCode initialize() override;
     virtual StatusCode finalize() override;
-    virtual StatusCode execute(xAOD::TauJet& pTau) override;
+    virtual StatusCode execute(xAOD::TauJet& pTau) const override;
 
     virtual StatusCode retrieveHistos(int nProng);
     virtual StatusCode storeLimits(int nProng);
-    virtual double transformScore(double score, double cut_lo, double eff_lo, double cut_hi, double eff_hi);
+    virtual double transformScore(double score, double cut_lo, double eff_lo, double cut_hi, double eff_hi) const;
 
 private:
     std::string m_file0P;