diff --git a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
index 55ce81b9aabb8d145366cc306a13ef928b8e9262..9e3316a7fac354c584f94c193680f452cb767e0c 100644
--- a/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
+++ b/Reconstruction/tauRec/python/TauAlgorithmsHolder.py
@@ -309,9 +309,6 @@ def getTauSubstructure():
     
     from tauRecTools.tauRecToolsConf import TauSubstructureVariables
     TauSubstructureVariables = TauSubstructureVariables(  name = _name,
-                                                          # parameters for CaloIsoCorrected variable
-                                                          maxPileUpCorrection = 4000., #MeV
-                                                          pileUpAlpha = 1.0,
                                                           VertexCorrection = True,
                                                           IncShowerSubtr = tauFlags.useShowerSubClusters()
                                                        )
diff --git a/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx b/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx
index c78183810d0b34f07005840b4875236b530151fa..2f3f5e5a07d0e2262f72fb977150753ffc8561a8 100644
--- a/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx
+++ b/Reconstruction/tauRecTools/Root/CaloClusterVariables.cxx
@@ -32,7 +32,7 @@ m_incShowerSubtr(true){
 
 bool CaloClusterVariables::update(const xAOD::TauJet& pTau) {
 
-    const xAOD::Jet* pSeed = *pTau.jetLink();
+    const xAOD::Jet* pSeed = pTau.jet();
     if(!pSeed) return false;
 
     // Loop through jets, get links to clusters
@@ -43,7 +43,7 @@ bool CaloClusterVariables::update(const xAOD::TauJet& pTau) {
     for (auto pCluster : clusterList){
       // correct cluster
       if (pTau.vertexLink() && m_doVertexCorrection)
-	constituents.emplace_back (*pCluster, (*pTau.vertexLink())->position());
+	constituents.emplace_back (*pCluster, pTau.vertex()->position());
       else
         constituents.emplace_back (*pCluster);
     }
@@ -95,7 +95,7 @@ bool CaloClusterVariables::update(const xAOD::TauJet& pTau) {
     if (this->m_numConstit < 2) this->m_totMass = DEFAULT;
     else {
         double mass2 = sum_e * sum_e - (sum_px * sum_px + sum_py * sum_py + sum_pz * sum_pz);
-        this->m_totMass = mass2 > 0 ? sqrt(mass2) : -sqrt(-mass2);
+        this->m_totMass = mass2 > 0 ? std::sqrt(mass2) : -std::sqrt(-mass2);
     }
 
     // Calculate the average radius of the constituents wrt the tau centroid
@@ -149,7 +149,7 @@ bool CaloClusterVariables::update(const xAOD::TauJet& pTau) {
     if (this->m_effNumConstit_int < 2) this->m_effMass = DEFAULT;
     else {
         double mass2 = sum_e * sum_e - (sum_px * sum_px + sum_py * sum_py + sum_pz * sum_pz);
-        this->m_effMass = mass2 > 0 ? sqrt(mass2) : -sqrt(-mass2);
+        this->m_effMass = mass2 > 0 ? std::sqrt(mass2) : -std::sqrt(-mass2);
     }
 
     // Calculate the average radius of the constituents wrt the tau centroid
@@ -175,7 +175,7 @@ TLorentzVector CaloClusterVariables::calculateTauCentroid(int nConst, const std:
         current_px = c.p4().Px();
         current_py = c.p4().Py();
         current_pz = c.p4().Pz();
-        modulus = sqrt(current_px * current_px + current_py * current_py + current_pz * current_pz);
+        modulus = std::sqrt(current_px * current_px + current_py * current_py + current_pz * current_pz);
         px += current_px / modulus;
         py += current_py / modulus;
         pz += current_pz / modulus;
diff --git a/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx b/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
index 486a8c32090486001e7295b6819fa74e7a3a2915..e109b2cac42cb4852fc95532360fa66701ab7fdf 100644
--- a/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/MvaTESVariableDecorator.cxx
@@ -31,10 +31,6 @@ StatusCode MvaTESVariableDecorator::initialize() {
   return StatusCode::SUCCESS;
 }
 
-StatusCode MvaTESVariableDecorator::finalize() {
-  return StatusCode::SUCCESS;
-}
-
 //_____________________________________________________________________________
 StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
   
@@ -85,8 +81,7 @@ StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
   TLorentzVector clusters_had_P4;
   clusters_had_P4.SetPtEtaPhiM(0,0,0,0);
 
-  TLorentzVector LC_P4;
-  LC_P4.SetPtEtaPhiM(xTau.ptDetectorAxis(), xTau.etaDetectorAxis(), xTau.phiDetectorAxis(), xTau.m());
+  const TLorentzVector& LC_P4 = xTau.p4(xAOD::TauJetParameters::DetectorAxis);
 
   // Loop through jets, get links to clusters
   std::vector<const xAOD::CaloCluster*> clusterList;
@@ -111,8 +106,8 @@ StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
     if(cl->retrieveMoment(xAOD::CaloCluster::MomentType::EM_PROBABILITY,em_probability)) {
       mean_em_probability += clE*em_probability;
 
-      if(em_probability>0.5) clusters_EM_P4 += (TLorentzVector) cl->p4(xAOD::CaloCluster::State::CALIBRATED);      
-      else clusters_had_P4 += (TLorentzVector) cl->p4(xAOD::CaloCluster::State::CALIBRATED);
+      if(em_probability>0.5) clusters_EM_P4 += cl->p4(xAOD::CaloCluster::State::CALIBRATED);      
+      else clusters_had_P4 += cl->p4(xAOD::CaloCluster::State::CALIBRATED);
     }
     else ATH_MSG_WARNING("Failed to retrieve moment: EM_PROBABILITY");
 
@@ -167,8 +162,8 @@ StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
   Pi0_totalP4.SetPtEtaPhiM(0,0,0,0);
   
   for(size_t i=0; i<xTau.nPi0PFOs(); i++){
-    Pi0_totalP4 += (TLorentzVector)xTau.pi0PFO(i)->p4();
-  };
+    Pi0_totalP4 += xTau.pi0PFO(i)->p4();
+  }
   
   double Pi0_totalE = Pi0_totalP4.E();
   
@@ -177,8 +172,8 @@ StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
   charged_totalP4.SetPtEtaPhiM(0,0,0,0);
   
   for(size_t i=0; i<xTau.nChargedPFOs(); i++){
-    charged_totalP4 += (TLorentzVector)xTau.chargedPFO(i)->p4();
-  };
+    charged_totalP4 += xTau.chargedPFO(i)->p4();
+  }
   
   double charged_totalE = charged_totalP4.E();
   
@@ -189,13 +184,5 @@ StatusCode MvaTESVariableDecorator::execute(xAOD::TauJet& xTau) const {
   }
   xTau.setDetail(xAOD::TauJetParameters::PFOEngRelDiff, (float) relDiff);
   
-  // calculate interpolated pT
-  double pt_pantau  = xTau.ptPanTauCellBased();
-  double pt_LC      = xTau.ptDetectorAxis();  
-  double interpolWeight = 0.5 * ( 1. + TMath::TanH( ( pt_LC/GeV - 250. ) / 20. ) );
-  double LC_pantau_interpolPt = interpolWeight*pt_LC + (1.-interpolWeight)*pt_pantau;
-  
-  xTau.setDetail(xAOD::TauJetParameters::LC_pantau_interpolPt, (float) LC_pantau_interpolPt);
-
   return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx b/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
index 4f0ce6b99e77c9aeb7b6421bfe3fa129fc69564c..6f281362bd8876533487736d4a1a319180bb272d 100644
--- a/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
+++ b/Reconstruction/tauRecTools/Root/TauCalibrateLC.cxx
@@ -63,9 +63,9 @@ StatusCode TauCalibrateLC::initialize() {
   //retrieve number of eta bins from file
   m_nEtaBins = m_etaBinHist->GetNbinsX(); //member var
   if (m_nEtaBins==6)
-    ATH_MSG_INFO("using 2011 tau energy calibration");
+    ATH_MSG_INFO("using tau energy calibration with 6 eta bins");
   else if (m_nEtaBins==5)
-    ATH_MSG_INFO("using 2012 tau energy calibration");
+    ATH_MSG_INFO("using tau energy calibration with 5 eta bins");
   else {
     ATH_MSG_FATAL("Wrong or broken tau energy calibration file");
     return StatusCode::FAILURE;
@@ -142,13 +142,11 @@ StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau) const
   if (m_doEnergyCorr) {
 
     // get detector axis values
-    double eta = pTau.etaDetectorAxis();
-    double absEta = std::abs(eta);
+    double absEta = std::abs( pTau.etaDetectorAxis() );
     int etaBin = m_etaBinHist->GetXaxis()->FindBin(absEta) - 1;
         
     if (etaBin>=m_nEtaBins) etaBin = m_nEtaBins-1; // correction from last bin should be applied on all taus outside stored eta range
 
-
     int nVertex = 0;
     
     // Obtain pileup
@@ -220,7 +218,7 @@ StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau) const
       
     double energyFinal = energyPileupCorr / calibConst;
       
-    if (not m_doPtResponse) energyFinal /= cosh(pTau.eta()) ; 
+    if (not m_doPtResponse) energyFinal /= std::cosh(pTau.eta()) ; 
     pTau.setP4( energyFinal * GeV, pTau.eta(), pTau.phi(), pTau.m());
 
     ATH_MSG_DEBUG("Energy at LC scale = " << energyLC << " pile-up offset " << offset << " calib. const. = " << calibConst << " final energy = " << energyFinal);
@@ -252,7 +250,7 @@ StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau) const
     }      
 
     ATH_MSG_DEBUG("eta " << eta << "; corrected eta = " << etaCorr << " ; phi " << phi << "; corrected phi " << phiCorr );
-    pTau.setP4( pTau.e() / cosh( etaCorr ), etaCorr, phiCorr, pTau.m());
+    pTau.setP4( pTau.e() / std::cosh( etaCorr ), etaCorr, phiCorr, pTau.m());
     pTau.setP4(xAOD::TauJetParameters::TauEtaCalib, pTau.pt(), pTau.eta(), pTau.phi(), pTau.m());
   }
 
@@ -262,11 +260,3 @@ StatusCode TauCalibrateLC::execute(xAOD::TauJet& pTau) const
 
   return StatusCode::SUCCESS;
 }
-
-//-----------------------------------------------------------------------------
-// Finalize
-//-----------------------------------------------------------------------------
-
-StatusCode TauCalibrateLC::finalize() {
-  return StatusCode::SUCCESS;
-}
diff --git a/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx b/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
index a69c9f87a354ff8a843f08afeab2c883754d7737..d41d276f0df466bda0c31f0ca6012461f0431a7d 100644
--- a/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
+++ b/Reconstruction/tauRecTools/Root/TauCommonCalcVars.cxx
@@ -9,22 +9,19 @@
 // date:        2008-05-18
 // 
 // This class calculates tau variables after core seed reconstruction           
-//
-// 17/03/2010: (AK) change to P4Helpers
-// 16/05/2011: (FF) fix if primaryVertexContainer==NULL (coverity 21734)
-//   Dez 2011: (FF) switch to full LC calibrated tau 4-vector for some variables
 //-----------------------------------------------------------------------------
 #include "tauRecTools/TauCommonCalcVars.h"
 #include "tauRecTools/KineUtils.h"
 #include <vector>
+
 //-----------------------------------------------------------------------------
 // Constructor
 //-----------------------------------------------------------------------------
 
 TauCommonCalcVars::TauCommonCalcVars(const std::string &name) :
-TauRecToolBase(name) {
-    //if TauTrackClassifier is not run, wide&passTrkSelector==classifiedIsolation==modifiedIsolationTrack
-    declareProperty("isolationTrackType", m_isolationTrackType=xAOD::TauJetParameters::modifiedIsolationTrack);
+  TauRecToolBase(name) {
+  //if TauTrackClassifier is not run, wide&passTrkSelector==classifiedIsolation==modifiedIsolationTrack
+  declareProperty("isolationTrackType", m_isolationTrackType=xAOD::TauJetParameters::modifiedIsolationTrack);
 }
 
 //-----------------------------------------------------------------------------
@@ -34,180 +31,134 @@ TauRecToolBase(name) {
 TauCommonCalcVars::~TauCommonCalcVars() {
 }
 
-
-//-----------------------------------------------------------------------------
-// Initializer
-//-----------------------------------------------------------------------------
-
-StatusCode TauCommonCalcVars::initialize() {
-    return StatusCode::SUCCESS;
-}
-
-
-//-----------------------------------------------------------------------------
-// Finalizer
-//-----------------------------------------------------------------------------
-
-StatusCode TauCommonCalcVars::finalize() {
-    return StatusCode::SUCCESS;
-}
-
-
 //-----------------------------------------------------------------------------
 // Execution
 //-----------------------------------------------------------------------------
 StatusCode TauCommonCalcVars::execute(xAOD::TauJet& pTau) const {
 
-    /////////////////////////////////////////////////
-    // Calculate variables that are always valid   
-    ////////////////////////////////////////////////
+  /////////////////////////////////////////////////
+  // Calculate variables that are always valid   
+  ////////////////////////////////////////////////
 
-    //init some vars
-    pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, static_cast<float>( 0 ) );
+  //init some vars
+  pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, (float) 0. );
 
-    // Leading track pT and et/pt(lead track)
-    if (pTau.nTracks() > 0) {
-      pTau.setDetail( xAOD::TauJetParameters::leadTrkPt, static_cast<float>( pTau.track(0)->pt() ) );
+  // Leading track pT and et/pt(lead track)
+  if (pTau.nTracks() > 0) {
+    pTau.setDetail( xAOD::TauJetParameters::leadTrkPt, static_cast<float>( pTau.track(0)->pt() ) );
       
-      float emscale_ptEM = 0;
-      float emscale_ptHad = 0;
+    float emscale_ptEM = 0.;
+    float emscale_ptHad = 0.;
       
-      if ( !pTau.detail( xAOD::TauJetParameters::etEMAtEMScale, emscale_ptEM ) ) 
-	{
-	  ATH_MSG_DEBUG("retrieval of tau detail failed. stopping calculation of further variables");
-	  return StatusCode::SUCCESS;
-	}
-
-      if ( !pTau.detail( xAOD::TauJetParameters::etHadAtEMScale, emscale_ptHad ) )
-	{
-	  ATH_MSG_DEBUG("retrieval of tau detail failed. stopping calculation of further variables");
-	  return StatusCode::SUCCESS;
-	}
+    if ( !pTau.detail( xAOD::TauJetParameters::etEMAtEMScale, emscale_ptEM ) ) 
+      {
+	ATH_MSG_DEBUG("retrieval of tau detail failed. stopping calculation of further variables");
+	return StatusCode::SUCCESS;
+      }
+
+    if ( !pTau.detail( xAOD::TauJetParameters::etHadAtEMScale, emscale_ptHad ) )
+      {
+	ATH_MSG_DEBUG("retrieval of tau detail failed. stopping calculation of further variables");
+	return StatusCode::SUCCESS;
+      }
       
-      pTau.setDetail( xAOD::TauJetParameters::etOverPtLeadTrk, static_cast<float>( (emscale_ptEM + emscale_ptHad) / pTau.track(0)->pt() ) );
-    }
+    pTau.setDetail( xAOD::TauJetParameters::etOverPtLeadTrk, static_cast<float>( (emscale_ptEM + emscale_ptHad) / pTau.track(0)->pt() ) );
+  }
 
-    // invariant mass of track system
-    std::vector<const xAOD::TauTrack*> tauTracks = pTau.tracks(xAOD::TauJetParameters::TauTrackFlag::classifiedCharged);
-    for( const xAOD::TauTrack* trk : pTau.tracks((xAOD::TauJetParameters::TauTrackFlag) m_isolationTrackType) ) tauTracks.push_back(trk);
-    if (tauTracks.size()> 0) {
-
-        TLorentzVector sumOfTrackVector;
-	TLorentzVector tempTrackVector;
-
-        for (const xAOD::TauTrack* tauTrk : tauTracks)
-	  {
-	    tempTrackVector=tauTrk->p4();
-            sumOfTrackVector += tempTrackVector;
-	  }
-	pTau.setDetail( xAOD::TauJetParameters::massTrkSys, static_cast<float>( sumOfTrackVector.M() ) );
-	float tempfloat = 0;
-	if ( pTau.detail( xAOD::TauJetParameters::massTrkSys, tempfloat ) )
-	  ATH_MSG_VERBOSE("set massTrkSys " << tempfloat);
-    }
+  // invariant mass of track system
+  std::vector<const xAOD::TauTrack*> tauTracks = pTau.tracks(xAOD::TauJetParameters::TauTrackFlag::classifiedCharged);
+  for( const xAOD::TauTrack* trk : pTau.tracks((xAOD::TauJetParameters::TauTrackFlag) m_isolationTrackType) ) tauTracks.push_back(trk);
+  if (tauTracks.size()> 0) {
 
-    if (tauTracks.size()> 0 && pTau.nTracks()>1) {
+    TLorentzVector sumOfTrackVector;
 
-      double leadTrkPhi = pTau.track(0)->phi();//fix this depending on how we choose to define this
-      double leadTrkEta = pTau.track(0)->eta();//dito. new TauJet_v3 track sorting doesn't guarantee this will be the same track
+    for (const xAOD::TauTrack* tauTrk : tauTracks)
+      {
+	sumOfTrackVector += tauTrk->p4();
+      }
+    pTau.setDetail( xAOD::TauJetParameters::massTrkSys, static_cast<float>( sumOfTrackVector.M() ) );
+  }
 
-        double ptSum = 0;
-        double sumWeightedDR = 0;
-        double sumWeightedDR2 = 0;
+  if (tauTracks.size()> 0 && pTau.nTracks()>1) {
+    // BUG?
+    // this is equivalent to: if (pTau.nTracks()>1)
+    // shouldn't it be: if (tauTracks.size()> 1 && pTau.nTracks()>0) ?
+    // currently, 1-prong taus are skipped
 
+    double ptSum = 0.;
+    double sumWeightedDR = 0.;
+    double sumWeightedDR2 = 0.;
 
-        for (const xAOD::TauTrack* tauTrk : tauTracks){
+    for (const xAOD::TauTrack* tauTrk : tauTracks) {
 
-	  double deltaR = Tau1P3PKineUtils::deltaR(leadTrkEta, leadTrkPhi, tauTrk->eta(), tauTrk->phi() );     
+      double deltaR = pTau.track(0)->p4().DeltaR(tauTrk->p4());
 
-	  ptSum += tauTrk->pt();
-	  sumWeightedDR += deltaR * (tauTrk->pt());
-	  sumWeightedDR2 += deltaR * deltaR * (tauTrk->pt());
+      ptSum += tauTrk->pt();
+      sumWeightedDR += deltaR * tauTrk->pt();
+      sumWeightedDR2 += deltaR * deltaR * tauTrk->pt();
+    }
 
-        }
+    double trkWidth2 = (ptSum!=0.) ? (sumWeightedDR2/ptSum - std::pow(sumWeightedDR/ptSum, 2.)) : 0.;
 
-        double trkWidth2 = sumWeightedDR2 / ptSum - sumWeightedDR * sumWeightedDR / ptSum / ptSum;
+    if (trkWidth2 > 0.) pTau.setDetail( xAOD::TauJetParameters::trkWidth2, static_cast<float>( trkWidth2 ) );
+    else pTau.setDetail( xAOD::TauJetParameters::trkWidth2, (float) 0. );
+  }
 
-        if (trkWidth2 > 0.) pTau.setDetail( xAOD::TauJetParameters::trkWidth2, static_cast<float>( trkWidth2 ) );
-        else pTau.setDetail( xAOD::TauJetParameters::trkWidth2, static_cast<float>( 0. ) );
-    }
+  if (tauTracks.size()> 0) {
+
+    double ptSum = 0;
+    double innerPtSum = 0;
+    double sumWeightedDR = 0;
+    double innerSumWeightedDR = 0;
+    double sumWeightedDR2 = 0;
 
-    if (tauTracks.size()> 0) {
-
-        double ptSum = 0;
-        double innerPtSum = 0;
-        double sumWeightedDR = 0;
-        double innerSumWeightedDR = 0;
-        double sumWeightedDR2 = 0;
-
-
-        for (const xAOD::TauTrack* tauTrk : tauTracks){
-
-          double deltaR = Tau1P3PKineUtils::deltaR( ( inTrigger() ? pTau.eta() : pTau.etaIntermediateAxis()), pTau.phi(), tauTrk->eta(), tauTrk->phi() );     
-	
-	  ptSum += tauTrk->pt();
-	  sumWeightedDR += deltaR * (tauTrk->pt());
-	  sumWeightedDR2 += deltaR * deltaR * (tauTrk->pt());
-
-	  //add calculation of innerTrkAvgDist
-	  if(tauTrk->flag(xAOD::TauJetParameters::TauTrackFlag::classifiedCharged)){
-	    innerPtSum += tauTrk->pt();
-	    innerSumWeightedDR += deltaR * (tauTrk->pt());
-	  }
-        }
-
-        if (ptSum > 0.0001) {
-	  // seedCalo_trkAvgDist
-	  pTau.setDetail( xAOD::TauJetParameters::trkAvgDist, static_cast<float>( sumWeightedDR / ptSum ) );
-
-	  float tempfloat;
-	  if ( pTau.detail( xAOD::TauJetParameters::trkAvgDist, tempfloat ) )
-	    ATH_MSG_VERBOSE("set seedCalo_trkAvgDist " << tempfloat );
-
-	  // seedCalo_trkRmsDist
-	  double trkRmsDist2 = sumWeightedDR2 / ptSum - sumWeightedDR * sumWeightedDR / ptSum / ptSum;
-	  if (trkRmsDist2 > 0) {
-	    pTau.setDetail( xAOD::TauJetParameters::trkRmsDist, static_cast<float>( sqrt(trkRmsDist2) ) );
-	  } else {
-	    pTau.setDetail( xAOD::TauJetParameters::trkRmsDist, static_cast<float>( 0. ) );
-	  }
-	  if ( pTau.detail( xAOD::TauJetParameters::trkRmsDist, tempfloat ) )
-	    ATH_MSG_VERBOSE("set seedCalo_trkRmsDist " << tempfloat );
-        }
-
-         if (ptSum > 0.0) {
-	   
-     	  // SumPtTrkFrac
-     	  pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, static_cast<float>( 1. - innerPtSum/ptSum ) );
-     	  // FIXME!!! put pileup correction here once availabe
-     	  // FIXME!!! for now set corrected version same as uncorrected
-     	  pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFracCorrected, static_cast<float>( 1. - innerPtSum/ptSum ) );
+    for (const xAOD::TauTrack* tauTrk : tauTracks){
+      // BUG! should consistently use phiIntermediateAxis - will be fixed in a separate MR
+      double deltaR = Tau1P3PKineUtils::deltaR( ( inTrigger() ? pTau.eta() : pTau.etaIntermediateAxis()), pTau.phi(), tauTrk->eta(), tauTrk->phi() );     
+      // will become:
+      // double deltaR = inTrigger() ? pTau.p4().DeltaR(tauTrk->p4()) : pTau.p4(xAOD::TauJetParameters::IntermediateAxis).DeltaR(tauTrk->p4()); 
       
-       	 } else {
-
-	   pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, static_cast<float>( 0.0 ) );
-	   pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFracCorrected, static_cast<float>( 0.0 ) );
-
-	 }
-
-	 if (ptSum > 0.00 && innerPtSum > 0.0) {
-	   
-	   ATH_MSG_DEBUG("innerSumWeightedDR = " << innerSumWeightedDR << " innerPtSum = " << innerPtSum << " ptSum = " << ptSum );
-	   
-     	   // InnerTrkAvgDist
-     	   pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDist, static_cast<float>( innerSumWeightedDR / innerPtSum ) );
-     	   // FIXME!!! put pileup correction here once availabe
-     	   // FIXME!!! for now set corrected version same as uncorrected
-     	   pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDistCorrected, static_cast<float>( innerSumWeightedDR / innerPtSum ) );
-	   
-	 } else {
-     	   pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDist, static_cast<float>( 0.0 ));
-     	   pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDistCorrected, static_cast<float>( 0.0 ));
-	 }
+      ptSum += tauTrk->pt();
+      sumWeightedDR += deltaR * tauTrk->pt();
+      sumWeightedDR2 += deltaR * deltaR * tauTrk->pt();
+
+      //add calculation of innerTrkAvgDist
+      if(tauTrk->flag(xAOD::TauJetParameters::TauTrackFlag::classifiedCharged)){
+	innerPtSum += tauTrk->pt();
+	innerSumWeightedDR += deltaR * tauTrk->pt();
+      }
+    }
 
+    if (ptSum > 0.) {
+      // seedCalo_trkAvgDist
+      pTau.setDetail( xAOD::TauJetParameters::trkAvgDist, static_cast<float>( sumWeightedDR / ptSum ) );
+
+      // seedCalo_trkRmsDist
+      double trkRmsDist2 = sumWeightedDR2 / ptSum - pow(sumWeightedDR/ptSum, 2.);
+      if (trkRmsDist2 > 0.) {
+	pTau.setDetail( xAOD::TauJetParameters::trkRmsDist, static_cast<float>( std::sqrt(trkRmsDist2) ) );
+      } 
+      else {
+	pTau.setDetail( xAOD::TauJetParameters::trkRmsDist, (float) 0. );
+      }
+
+      // SumPtTrkFrac
+      pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, static_cast<float>( 1. - innerPtSum/ptSum ) );
+    }
+    else {
+      pTau.setDetail( xAOD::TauJetParameters::trkAvgDist, (float) 0. );
+      pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, (float) 0. );
     }
 
-    return StatusCode::SUCCESS;
-}
+    if (innerPtSum > 0.) {	   	   
+      // InnerTrkAvgDist
+      pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDist, static_cast<float>( innerSumWeightedDR / innerPtSum ) );
+    }
+    else {
+      pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDist, (float) 0. );
+    }
 
+  }
 
+  return StatusCode::SUCCESS;
+}
diff --git a/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx b/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx
index 028b99cd08634f595941ff19778ff76c9a7fafeb..e21dacbdddb7daf33ee1a8b17e0997ffa69271c0 100644
--- a/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauEleOLRDecorator.cxx
@@ -99,11 +99,6 @@ StatusCode TauEleOLRDecorator::execute(xAOD::TauJet& tau) const
   return StatusCode::SUCCESS;
 }
 
-StatusCode TauEleOLRDecorator::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
 float TauEleOLRDecorator::getCutVal(float fEta, float fPt) const
 {
   if(fPt>1900) fPt=1900;
diff --git a/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx b/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
index 4fb22ecafd8be8b58ce2ba0f2fd7df2a939079b1..b5bd887590eb22bf2f9352da4d017b1fdb608d27 100644
--- a/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauIDVarCalculator.cxx
@@ -114,13 +114,13 @@ StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau) const
         CaloSampling::HEC0, CaloSampling::TileBar0, CaloSampling::TileGap1, CaloSampling::TileExt0};
 
   // Get Clusters via Jet Seed 
-  const xAOD::Jet *jetSeed = (*tau.jetLink());
+  const xAOD::Jet *jetSeed = tau.jet();
   if (!jetSeed) {
     ATH_MSG_ERROR("Tau jet link is invalid.");
     return StatusCode::FAILURE;
   } 
 
-  auto p4IntAxis = tau.p4(xAOD::TauJetParameters::IntermediateAxis);
+  const TLorentzVector& p4IntAxis = tau.p4(xAOD::TauJetParameters::IntermediateAxis);
   float eEMAtEMScaleFixed = 0;
   float eHadAtEMScaleFixed = 0;
   float eHad1AtEMScaleFixed = 0;
@@ -145,8 +145,7 @@ StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau) const
       eEMAtEMScaleFixed / ( eEMAtEMScaleFixed + eHadAtEMScaleFixed ) : LOW_NUMBER;
  
   if(tau.nTracks() > 0){
-    const xAOD::TrackParticle* track = 0;
-    track = tau.track(0)->track();
+    const xAOD::TrackParticle* track = tau.track(0)->track();
     acc_absEtaLead(tau) = std::abs( track->eta() );
     acc_leadTrackEta(tau) = std::abs( track->eta() );
     acc_absDeltaEta(tau) = std::abs( track->eta() - tau.eta() );
@@ -229,8 +228,3 @@ StatusCode TauIDVarCalculator::execute(xAOD::TauJet& tau) const
  
   return StatusCode::SUCCESS;
 }
-
-StatusCode TauIDVarCalculator::finalize()
-{
-  return StatusCode::SUCCESS;
-}
diff --git a/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx b/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx
index d1bf07dc4a10eb3234e7713e4052fbaef2d3a9ce..99eabc40800227b2721c20b6cc6f5801bc3e3cd0 100644
--- a/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauJetBDTEvaluator.cxx
@@ -64,8 +64,3 @@ StatusCode TauJetBDTEvaluator::execute(xAOD::TauJet& xTau) const {
   
   return StatusCode::SUCCESS;
 }
-
-//________________________________________
-StatusCode TauJetBDTEvaluator::finalize(){ 
-  return StatusCode::SUCCESS;
-}
diff --git a/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx b/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
index a46f5e6c6e75f397c5599c1061c7b45d39222324..bfa52f0a8e0308628854b135ec6d26b4356828d7 100644
--- a/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauJetRNNEvaluator.cxx
@@ -177,7 +177,7 @@ StatusCode TauJetRNNEvaluator::get_tracks(
 StatusCode TauJetRNNEvaluator::get_clusters(
     const xAOD::TauJet &tau, std::vector<const xAOD::CaloCluster *> &out) const {
 
-    const xAOD::Jet *jet_seed = *tau.jetLink();
+    const xAOD::Jet *jet_seed = tau.jet();
     if (!jet_seed) {
         ATH_MSG_ERROR("Tau jet link is invalid.");
         return StatusCode::FAILURE;
diff --git a/Reconstruction/tauRecTools/Root/TauPi0ScoreCalculator.cxx b/Reconstruction/tauRecTools/Root/TauPi0ScoreCalculator.cxx
index 2f77020605c5c44fa06abfbce0a2be6dac36a460..1adadc66ea3637a3f1e7d51944c462132c4e110f 100644
--- a/Reconstruction/tauRecTools/Root/TauPi0ScoreCalculator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauPi0ScoreCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 */
 
 //-----------------------------------------------------------------------------
@@ -7,27 +7,21 @@
 // package:     Reconstruction/tauRec
 // authors:     Benedict Winter, Will Davey
 // date:        2012-10-09
-//
 //-----------------------------------------------------------------------------
 
-#include <vector>
-
 #include "tauRecTools/TauPi0ScoreCalculator.h"
 #include "tauRecTools/HelperFunctions.h"
 #include "xAODPFlow/PFO.h"
 
-using std::vector;
-using std::string;
-
 //-------------------------------------------------------------------------
 // Constructor
 //-------------------------------------------------------------------------
 
-TauPi0ScoreCalculator::TauPi0ScoreCalculator( const string& name ) :
+TauPi0ScoreCalculator::TauPi0ScoreCalculator(const std::string& name) :
   TauRecToolBase(name),
   m_mvaBDT(nullptr)
 {
-    declareProperty("BDTWeightFile",           m_weightfile);
+    declareProperty("BDTWeightFile", m_weightfile);
 }
 
 //-------------------------------------------------------------------------
@@ -38,7 +32,6 @@ TauPi0ScoreCalculator::~TauPi0ScoreCalculator()
 {
 }
 
-
 StatusCode TauPi0ScoreCalculator::initialize() 
 {
   std::string weightFile = find_file(m_weightfile);
@@ -49,12 +42,6 @@ StatusCode TauPi0ScoreCalculator::initialize()
   return StatusCode::SUCCESS;
 }
 
-StatusCode TauPi0ScoreCalculator::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-
 StatusCode TauPi0ScoreCalculator::executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer) const
 {
     //---------------------------------------------------------------------
@@ -79,7 +66,6 @@ StatusCode TauPi0ScoreCalculator::executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOCo
     return StatusCode::SUCCESS;
 }
 
-
 float TauPi0ScoreCalculator::calculateScore(const xAOD::PFO* neutralPFO) const
 {
     std::map<TString, float> availableVariables; // map of the variable name to its value
diff --git a/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx b/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx
index 1fe30b074506cebb1fe7128e97c6b0b5c82ac188..6c80984f9de6337c9e235fa280909587a2196c83 100644
--- a/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx
+++ b/Reconstruction/tauRecTools/Root/TauPi0Selector.cxx
@@ -7,18 +7,15 @@
 // package:     Reconstruction/tauRec
 // authors:     Benedict Winter, Will Davey
 // date:        2012-10-09
-//
 //-----------------------------------------------------------------------------
 
 #include "tauRecTools/TauPi0Selector.h"
 
-using std::string;
-
 //-------------------------------------------------------------------------
 // Constructor
 //-------------------------------------------------------------------------
 
-TauPi0Selector::TauPi0Selector( const string& name ) :
+TauPi0Selector::TauPi0Selector(const std::string& name) :
     TauRecToolBase(name)
 {
     declareProperty("ClusterEtCut",             m_clusterEtCut);
@@ -34,29 +31,19 @@ TauPi0Selector::~TauPi0Selector()
 {
 }
 
-StatusCode TauPi0Selector::initialize()
-{
-  return StatusCode::SUCCESS;
-}
-
-StatusCode TauPi0Selector::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
 StatusCode TauPi0Selector::executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer) const
 {
     // decay mode enum
     auto kDecayModeProto = xAOD::TauJetParameters::PanTau_DecayModeProto;
     // Clear vector of cell-based pi0 PFO Links. Required when rerunning on xAOD level.
     pTau.clearProtoPi0PFOLinks();
-    // Set proto decay mode to "not set". Will be overwritten for taus with 1-5 tracks
-    pTau.setPanTauDetail(kDecayModeProto, xAOD::TauJetParameters::DecayMode::Mode_NotSet);
 
     //---------------------------------------------------------------------
     // only run on 1-5 prong taus 
     //---------------------------------------------------------------------
     if (pTau.nTracks() == 0 || pTau.nTracks() >5 ) {
+        // Set proto decay mode to "not set". Will be overwritten for taus with 1-5 tracks
+        pTau.setPanTauDetail(kDecayModeProto, xAOD::TauJetParameters::DecayMode::Mode_NotSet);
         return StatusCode::SUCCESS;
     }
 
@@ -153,8 +140,8 @@ TLorentzVector TauPi0Selector::getP4(const xAOD::TauJet& pTau) const
         const xAOD::PFO* pi0PFO = (*pi0PFOLink);
         // assign neutral pion mass
         double mass = 134.9766;
-        double p  = std::sqrt(pow(pi0PFO->e(),2) - pow(mass,2));
-        double pt = p/cosh(pi0PFO->eta());
+        double p  = std::sqrt(std::pow(pi0PFO->e(),2) - std::pow(mass,2));
+        double pt = p/std::cosh(pi0PFO->eta());
         TLorentzVector pi0_corrP4;
         pi0_corrP4.SetPtEtaPhiM(pt,pi0PFO->eta(),pi0PFO->phi(),mass);
         p4+=pi0_corrP4;
diff --git a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
index 1d5fdd5d5edbd88f79fc76c6f8ff3ea657d9d2d9..05437d8655be4ff3cc9e0e3669772a55ef34ffb3 100644
--- a/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
+++ b/Reconstruction/tauRecTools/Root/TauSubstructureVariables.cxx
@@ -18,26 +18,21 @@
 
 #include "tauRecTools/CaloClusterVariables.h"
 #include "tauRecTools/TauSubstructureVariables.h"
-
-#include "tauRecTools/KineUtils.h"
 #include "tauRecTools/HelperFunctions.h"
 
 #define GeV 1000
-const double TauSubstructureVariables::DEFAULT = -1111.;
+const float TauSubstructureVariables::DEFAULT = -1111.;
 
 //**********************************
 // Constructor
 //**********************************
 
 TauSubstructureVariables::TauSubstructureVariables( const std::string& name )
-    : TauRecToolBase(name) {
-	declareProperty("maxPileUpCorrection", m_maxPileUpCorrection = 4 * GeV);
-	declareProperty("pileUpAlpha", m_pileUpAlpha = 1.0);
-	declareProperty("VertexCorrection", m_doVertexCorrection = false);
-	declareProperty("IncShowerSubtr", m_incShowerSubtr = true);
+  : TauRecToolBase(name) {
+  declareProperty("VertexCorrection", m_doVertexCorrection = false);
+  declareProperty("IncShowerSubtr", m_incShowerSubtr = true);
 }
 
-
 //**********************************
 // Destructor
 //**********************************
@@ -45,301 +40,190 @@ TauSubstructureVariables::TauSubstructureVariables( const std::string& name )
 TauSubstructureVariables::~TauSubstructureVariables() {
 }
 
-
-//***********************************
-// Initialize method
-//***********************************
-
-StatusCode TauSubstructureVariables::initialize() {
-	return StatusCode::SUCCESS;
-}
-
-//***********************************
-// Finalize method
-//***********************************
-
-StatusCode TauSubstructureVariables::finalize() {
-	return StatusCode::SUCCESS;
-}
-
-
 //************************************
 // Execute method
 //************************************
 
 StatusCode TauSubstructureVariables::execute(xAOD::TauJet& pTau) const {
 
-	const xAOD::Jet* taujetseed = (*pTau.jetLink());
-    if (!taujetseed) {
-        ATH_MSG_ERROR("Tau jet link is invalid.");
-        return StatusCode::FAILURE;
-    } 
-
-	//*****************************************************
-	// calculate some tau substructure variables
-	//*****************************************************
-
-	CaloClusterVariables CaloClusterVariablesTool;
-	CaloClusterVariablesTool.setVertexCorrection(m_doVertexCorrection);
-	CaloClusterVariablesTool.setIncSub(m_incShowerSubtr);
-
-	bool isFilled = CaloClusterVariablesTool.update(pTau);
-
-	if (!isFilled) {
-		ATH_MSG_DEBUG("problem in calculating calo cluster variables -> will be set to -1111");
-
-		pTau.setDetail(xAOD::TauJetParameters::numTopoClusters , static_cast<int>(DEFAULT) );
-		pTau.setDetail(xAOD::TauJetParameters::numEffTopoClusters , static_cast<float>(DEFAULT) );
-		pTau.setDetail(xAOD::TauJetParameters::topoInvMass,  static_cast<float>(DEFAULT) );
-		pTau.setDetail(xAOD::TauJetParameters::effTopoInvMass,  static_cast<float>(DEFAULT) );
-		pTau.setDetail(xAOD::TauJetParameters::topoMeanDeltaR,  static_cast<float>(DEFAULT) );
-		pTau.setDetail(xAOD::TauJetParameters::effTopoMeanDeltaR,  static_cast<float>(DEFAULT) );
-
-	} else {
-		// Getting the variables
-		//-----------------------
-		double TopoInvMass = CaloClusterVariablesTool.totalMass();
-		double EffTopoInvMass = CaloClusterVariablesTool.effectiveMass();
-		unsigned int NumTopoClusters = CaloClusterVariablesTool.numConstituents();
-		double NumEffTopoClusters = CaloClusterVariablesTool.effectiveNumConstituents();
-		double TopoMeanDeltaR = CaloClusterVariablesTool.averageRadius();
-		double EffTopoMeanDeltaR = CaloClusterVariablesTool.averageEffectiveRadius();
-
-		ATH_MSG_VERBOSE(" Substructure variables: ");
-		ATH_MSG_VERBOSE("-------------------------");
-		ATH_MSG_VERBOSE("       TopoInvMass: " << TopoInvMass);
-		ATH_MSG_VERBOSE("    EffTopoInvMass: " << EffTopoInvMass);
-		ATH_MSG_VERBOSE("   NumTopoClusters: " << NumTopoClusters);
-		ATH_MSG_VERBOSE("NumEffTopoClusters: " << NumEffTopoClusters);
-		ATH_MSG_VERBOSE("    TopoMeanDeltaR: " << TopoMeanDeltaR);
-		ATH_MSG_VERBOSE(" EffTopoMeanDeltaR: " << EffTopoMeanDeltaR);
-
-		//Record the variables
-		//---------------------
-
-		pTau.setDetail(xAOD::TauJetParameters::numTopoClusters            ,  static_cast<int>  (NumTopoClusters)    );
-		pTau.setDetail(xAOD::TauJetParameters::numEffTopoClusters         ,  static_cast<float>(NumEffTopoClusters) );
-		pTau.setDetail(xAOD::TauJetParameters::topoInvMass                ,  static_cast<float>(TopoInvMass)	     );
-		pTau.setDetail(xAOD::TauJetParameters::effTopoInvMass             ,  static_cast<float>(EffTopoInvMass)     );
-		pTau.setDetail(xAOD::TauJetParameters::topoMeanDeltaR             ,  static_cast<float>(TopoMeanDeltaR)     );
-		pTau.setDetail(xAOD::TauJetParameters::effTopoMeanDeltaR          ,  static_cast<float>(EffTopoMeanDeltaR)  );
-
-	}
-
-	//*****************************************************
-	// calculate some new cluster based ID variables
-	//*****************************************************
-	// New cluster-based variables
-	float totalEnergy(0.);
-	float calo_iso(0.);
-	float dr(0.);
-
-	unsigned int num_clusters(0);
-
-	TLorentzVector leadClusVec;
-	TLorentzVector subLeadClusVec;
-	TLorentzVector approxSubstructure4Vec;
-	double clusELead = -1111.0;
-	double clusESubLead = -1111.0;
-
-	// Loop through jets, get links to clusters
-	std::vector<const xAOD::CaloCluster*> vClusters;
-	ATH_CHECK(tauRecTools::GetJetClusterList(taujetseed, vClusters, m_incShowerSubtr));
-
-	for (auto incluster : vClusters){
-	        ++num_clusters;
-
-		// calc total energy
-		totalEnergy += incluster->e();
+  const xAOD::Jet* taujetseed = pTau.jet();
+  if (!taujetseed) {
+    ATH_MSG_ERROR("Tau jet link is invalid.");
+    return StatusCode::FAILURE;
+  } 
+
+  //*****************************************************
+  // calculate some tau substructure variables
+  //*****************************************************
+
+  CaloClusterVariables CaloClusterVariablesTool;
+  CaloClusterVariablesTool.setVertexCorrection(m_doVertexCorrection);
+  CaloClusterVariablesTool.setIncSub(m_incShowerSubtr);
+
+  bool isFilled = CaloClusterVariablesTool.update(pTau);
+
+  if (!isFilled) {
+    ATH_MSG_DEBUG("problem in calculating calo cluster variables -> will be set to -1111");
+
+    pTau.setDetail(xAOD::TauJetParameters::numTopoClusters, static_cast<int>(DEFAULT));
+    pTau.setDetail(xAOD::TauJetParameters::numEffTopoClusters, DEFAULT);
+    pTau.setDetail(xAOD::TauJetParameters::topoInvMass, DEFAULT);
+    pTau.setDetail(xAOD::TauJetParameters::effTopoInvMass, DEFAULT);
+    pTau.setDetail(xAOD::TauJetParameters::topoMeanDeltaR, DEFAULT);
+    pTau.setDetail(xAOD::TauJetParameters::effTopoMeanDeltaR, DEFAULT);
+  } 
+  else {
+    pTau.setDetail(xAOD::TauJetParameters::numTopoClusters, static_cast<int>(CaloClusterVariablesTool.numConstituents()));
+    pTau.setDetail(xAOD::TauJetParameters::numEffTopoClusters, static_cast<float>(CaloClusterVariablesTool.effectiveNumConstituents()));
+    pTau.setDetail(xAOD::TauJetParameters::topoInvMass, static_cast<float>(CaloClusterVariablesTool.totalMass()));
+    pTau.setDetail(xAOD::TauJetParameters::effTopoInvMass, static_cast<float>(CaloClusterVariablesTool.effectiveMass()));
+    pTau.setDetail(xAOD::TauJetParameters::topoMeanDeltaR, static_cast<float>(CaloClusterVariablesTool.averageRadius()));
+    pTau.setDetail(xAOD::TauJetParameters::effTopoMeanDeltaR, static_cast<float>(CaloClusterVariablesTool.averageEffectiveRadius()));
+  }
+
+  //*****************************************************
+  // calculate some new cluster based ID variables
+  //*****************************************************
+  // New cluster-based variables
+  float totalEnergy(0.);
+  float calo_iso(0.);
+  float dr(0.);
+
+  TLorentzVector leadClusVec;
+  TLorentzVector subLeadClusVec;
+  TLorentzVector approxSubstructure4Vec;
+  double clusELead = DEFAULT;
+  double clusESubLead = DEFAULT;
+
+  // Loop through jets, get links to clusters
+  std::vector<const xAOD::CaloCluster*> vClusters;
+  ATH_CHECK(tauRecTools::GetJetClusterList(taujetseed, vClusters, m_incShowerSubtr));
+
+  for (auto incluster : vClusters){
+
+    // calc total energy
+    totalEnergy += incluster->e();
 		
-		//apply Vertex correction on a temporary
-		TLorentzVector tempclusvec;
-		if (m_doVertexCorrection && pTau.vertexLink())
-			tempclusvec = CaloVertexedClusterType(*incluster, (*pTau.vertexLink())->position()).p4();
-		else
-			tempclusvec = CaloVertexedClusterType(*incluster).p4();
-
-		dr = Tau1P3PKineUtils::deltaR(pTau.eta(),pTau.phi(), tempclusvec.Eta(), tempclusvec.Phi());
-		if (0.2 <= dr && dr < 0.4) 
-		  {
-		    calo_iso += tempclusvec.Et();
-		  }
-		else if (dr < 0.2)
-		  {
-		    double clusEnergyBE = ( incluster->energyBE(0) + incluster->energyBE(1) + incluster->energyBE(2) );
+    //apply Vertex correction on a temporary
+    TLorentzVector tempclusvec;
+    if (m_doVertexCorrection && pTau.vertexLink())
+      tempclusvec = CaloVertexedClusterType(*incluster, pTau.vertex()->position()).p4();
+    else
+      tempclusvec = CaloVertexedClusterType(*incluster).p4();
+
+    dr = pTau.p4().DeltaR(tempclusvec);
+    if (0.2 <= dr && dr < 0.4) 
+      {
+	calo_iso += tempclusvec.Et();
+      }
+    else if (dr < 0.2)
+      {
+	double clusEnergyBE = ( incluster->energyBE(0) + incluster->energyBE(1) + incluster->energyBE(2) );
 		    
-		    if (clusEnergyBE > clusELead) 
-		      {
-			//change current leading cluster to subleading
-			clusESubLead = clusELead;
-			subLeadClusVec = leadClusVec;
-
-			//set energy and 4-vector of leading cluster
-			clusELead = clusEnergyBE;
-			leadClusVec.SetPtEtaPhiM(clusELead/cosh(tempclusvec.Eta()), tempclusvec.Eta(), tempclusvec.Phi(), 0);
-		      }
-		    else if (clusEnergyBE > clusESubLead) 
-		      {
-			//set energy and 4-vector of subleading cluster only
-			clusESubLead = clusEnergyBE;
-			subLeadClusVec.SetPtEtaPhiM(clusESubLead/cosh(tempclusvec.Eta()), tempclusvec.Eta(), tempclusvec.Phi(), 0);
-		      }
-
-		  }
-		
-	}
-
-	if (clusELead > 0.) {
-	  approxSubstructure4Vec += leadClusVec;
-	}
-	if (clusESubLead > 0.) {
-	  approxSubstructure4Vec += subLeadClusVec;
+	if (clusEnergyBE > clusELead) 
+	  {
+	    //change current leading cluster to subleading
+	    clusESubLead = clusELead;
+	    subLeadClusVec = leadClusVec;
+
+	    //set energy and 4-vector of leading cluster
+	    clusELead = clusEnergyBE;
+	    leadClusVec.SetPtEtaPhiM(clusELead/std::cosh(tempclusvec.Eta()), tempclusvec.Eta(), tempclusvec.Phi(), 0.);
+	  }
+	else if (clusEnergyBE > clusESubLead) 
+	  {
+	    //set energy and 4-vector of subleading cluster only
+	    clusESubLead = clusEnergyBE;
+	    subLeadClusVec.SetPtEtaPhiM(clusESubLead/std::cosh(tempclusvec.Eta()), tempclusvec.Eta(), tempclusvec.Phi(), 0.);
 	  }
 
-	// now sort cluster by energy
-	std::sort(vClusters.begin(), vClusters.end(), DefCaloClusterCompare());
-
-	// determine energy sum of leading 2 and leading 3 clusters
-	float sum2LeadClusterE(0.);
-	float sum3LeadClusterE(0.);
-	std::vector<const xAOD::CaloCluster*>::const_iterator icluster(vClusters.begin());
-	std::vector<const xAOD::CaloCluster*>::const_iterator icluster_end(vClusters.end());
-
-	for (; icluster != icluster_end && icluster != vClusters.begin() + 3; ++icluster) {
-		if (icluster < vClusters.begin() + 2) {
-			sum2LeadClusterE += (*icluster)->e();
-		}
-		sum3LeadClusterE += (*icluster)->e();
-	}
-
-	//record variables
-	if (totalEnergy != 0) {
-		ATH_MSG_VERBOSE(" lead2ClusterEOverAllClusterE: " << sum2LeadClusterE / totalEnergy);
-		ATH_MSG_VERBOSE(" lead3ClusterEOverAllClusterE: " << sum3LeadClusterE / totalEnergy);
-
-		pTau.setDetail(xAOD::TauJetParameters::lead2ClusterEOverAllClusterE, static_cast<float>(sum2LeadClusterE / totalEnergy)  );
-		pTau.setDetail(xAOD::TauJetParameters::lead3ClusterEOverAllClusterE, static_cast<float>(sum3LeadClusterE / totalEnergy)  );
-	}
-
-	ATH_MSG_VERBOSE(" caloIso: " << calo_iso);
-	pTau.setDetail(xAOD::TauJetParameters::caloIso, static_cast<float>(calo_iso)  );
-
-	// calculate calorimeter energies in different layers
-	float PSSEnergy(0.);
-	float EMEnergy(0.);
-	float HADEnergy(0.);
-	icluster = vClusters.begin();
-	for (; icluster != icluster_end; ++icluster) {
-		float clEnergy = (*icluster)->e();
-
-		//Calculate the fractions of energy in different calorimeter layers
-		const xAOD::CaloCluster *cl = *icluster;
-		float PreSampler = cl->eSample(CaloSampling::PreSamplerB) + cl->eSample(CaloSampling::PreSamplerE);
-		float EMLayer1   = cl->eSample(CaloSampling::EMB1) + cl->eSample(CaloSampling::EME1);
-		float EMLayer2   = cl->eSample(CaloSampling::EMB2) + cl->eSample(CaloSampling::EME2);
-
-		float Energy = cl->rawE();
-		float PSSF = Energy != 0 ? (PreSampler + EMLayer1) / Energy : 0;
-		float EM2F = Energy != 0 ? EMLayer2 / Energy : 0;
-		float EMF = PSSF + EM2F;
-
-		PSSEnergy += PSSF * clEnergy;
-		EMEnergy  += EMF * clEnergy;
-		HADEnergy += (Energy != 0) ? (1 - EMF) * clEnergy : 0;
-	}
-
-	// calculate trk momentum
-	float trkSysMomentum(0.);
-	for (unsigned int i(0); i < pTau.nTracks(); ++i) {
-		trkSysMomentum += pTau.track(i)->pt()	* cosh(pTau.track(i)->eta());
-
-		//adding the core tracks to the approximate substructure 4 vector
-		approxSubstructure4Vec += pTau.track(i)->p4();
-	}
-
-	// set new approximate energy flow variables for tau ID
-	pTau.setDetail(xAOD::TauJetParameters::ptRatioEflowApprox, static_cast<float>(approxSubstructure4Vec.Pt()/ pTau.ptDetectorAxis()) );
-	pTau.setDetail(xAOD::TauJetParameters::mEflowApprox, static_cast<float>(approxSubstructure4Vec.M()) );
-
-
-	float fPSSFraction 			= (totalEnergy != 0) ? PSSEnergy / totalEnergy : DEFAULT;
-	float fChPIEMEOverCaloEME 	= (EMEnergy != 0) ? (trkSysMomentum - HADEnergy) / EMEnergy : DEFAULT;
-	float fEMPOverTrkSysP 		= DEFAULT;
-	if (pTau.nTracks() > 0) fEMPOverTrkSysP = (trkSysMomentum != 0) ? EMEnergy / trkSysMomentum : DEFAULT;
-
-	pTau.setDetail(xAOD::TauJetParameters::PSSFraction,		static_cast<float>(fPSSFraction));
-	pTau.setDetail(xAOD::TauJetParameters::ChPiEMEOverCaloEME,	static_cast<float>(fChPIEMEOverCaloEME));
-	pTau.setDetail(xAOD::TauJetParameters::EMPOverTrkSysP,		static_cast<float>(fEMPOverTrkSysP));
-
-	// jvf and sumPtTrk are now a vector and the old run1-type jvf value is stored in the 0-th element
-	// sumPtTrk is calculated wrt Vertices
-
-	float jvf(0.0);
-	float sumPtTrk(0.0);
-
-	// for tau trigger: JVF and sumPtTrack are not available
-	if (!inTrigger())
-	{
-		std::vector<float> sumPtTrkvec;
-		std::vector<float> jvfvec;
-
-		// ToDo still need to check if the 500MeV threshold is correct
-		taujetseed->getAttribute(xAOD::JetAttribute::SumPtTrkPt500, sumPtTrkvec);
-		taujetseed->getAttribute(xAOD::JetAttribute::JVF, jvfvec);
-
-		if (!jvfvec.empty() && !sumPtTrkvec.empty()) {
-			// ToDo need to check if first vertex is the vertex we want to use here!
-			jvf = jvfvec[0];
-			sumPtTrk = sumPtTrkvec[0];
-		}
-		else {
-			ATH_MSG_WARNING("jvf value vector and/or sumPtTrk vector returned from seed jet is empty!");
-		}
-	}
-
-	float pt_pileup = (1.0 - jvf) * sumPtTrk;
-
-	const float max_pileup_correction = m_maxPileUpCorrection;
-	const float alpha = m_pileUpAlpha;
-	float pileup_correction = alpha * pt_pileup;
-
-	ATH_MSG_VERBOSE("   --------------------------------------");
-	ATH_MSG_VERBOSE("   Pile-up correction parameter");
-	ATH_MSG_VERBOSE("   -> sumPtTrk:        " << sumPtTrk);
-	ATH_MSG_VERBOSE("   -> jvf:             " << jvf);
-	ATH_MSG_VERBOSE("   -> pt_pileup:       " << pt_pileup);
-	ATH_MSG_VERBOSE("   -> alpha:           " << alpha);
-	ATH_MSG_VERBOSE("   -> max pileup corr: " << max_pileup_correction);
-
-	if (pileup_correction > max_pileup_correction) {
-		pileup_correction = max_pileup_correction;
-	}
-	const float calo_iso_corrected = calo_iso - pileup_correction;
-
-	ATH_MSG_VERBOSE("   -> pileup corr:     " << pileup_correction);
-	ATH_MSG_VERBOSE("   --------------------------------------");
-
-	//record variable
-	ATH_MSG_VERBOSE(" caloIsoCorrected: " << calo_iso_corrected);
-	pTau.setDetail(xAOD::TauJetParameters::caloIsoCorrected, static_cast<float>(calo_iso_corrected)  );
-
-	// calculate dRMax
-	unsigned int numTrack(pTau.nTracks());
-	if (numTrack > 0) {
-		float dRmin = -1 * -1111;
-		float dRmax = -1111;
-		float dR;
-
-		for (unsigned int i(0); i < numTrack; ++i) {
-			if (pTau.track(i) == 0) continue;
-			dR = Tau1P3PKineUtils::deltaR( pTau.track(i)->eta(), pTau.track(i)->phi(), pTau.eta(), pTau.phi() );
-			if (dRmin > dR) dRmin = dR;
-			if (dRmax < dR) dRmax = dR;
-		}
-		//record variable
-		ATH_MSG_VERBOSE(" dRmax: " << dRmax);
-		pTau.setDetail(xAOD::TauJetParameters::dRmax, static_cast<float>(dRmax)  );
-	}
-
-	return StatusCode::SUCCESS;
+      }
+		
+  }
+
+  if (clusELead > 0.) {
+    approxSubstructure4Vec += leadClusVec;
+  }
+  if (clusESubLead > 0.) {
+    approxSubstructure4Vec += subLeadClusVec;
+  }
+
+  // now sort cluster by energy
+  std::sort(vClusters.begin(), vClusters.end(), DefCaloClusterCompare());
+
+  // determine energy sum of leading 2 and leading 3 clusters
+  float sum2LeadClusterE = 0.;
+  if(vClusters.size()>0) {
+    sum2LeadClusterE = vClusters.at(0)->e();
+    if(vClusters.size()>1) sum2LeadClusterE += vClusters.at(1)->e();
+  }
+  float sum3LeadClusterE = sum2LeadClusterE;
+  if(vClusters.size()>2) sum3LeadClusterE += vClusters.at(2)->e();
+
+  if (totalEnergy != 0.) {
+    pTau.setDetail(xAOD::TauJetParameters::lead2ClusterEOverAllClusterE, (sum2LeadClusterE / totalEnergy) );
+    pTau.setDetail(xAOD::TauJetParameters::lead3ClusterEOverAllClusterE, (sum3LeadClusterE / totalEnergy) );
+  }
+
+  pTau.setDetail(xAOD::TauJetParameters::caloIso, calo_iso);
+
+  // calculate calorimeter energies in different layers
+  float PSSEnergy(0.);
+  float EMEnergy(0.);
+  float HADEnergy(0.);
+
+  for (auto cl : vClusters) {
+    float clEnergy = cl->e();
+
+    //Calculate the fractions of energy in different calorimeter layers
+    float PreSampler = cl->eSample(CaloSampling::PreSamplerB) + cl->eSample(CaloSampling::PreSamplerE);
+    float EMLayer1   = cl->eSample(CaloSampling::EMB1) + cl->eSample(CaloSampling::EME1);
+    float EMLayer2   = cl->eSample(CaloSampling::EMB2) + cl->eSample(CaloSampling::EME2);
+
+    float Energy = cl->rawE();
+    float PSSF = Energy != 0 ? (PreSampler + EMLayer1) / Energy : 0;
+    float EM2F = Energy != 0 ? EMLayer2 / Energy : 0;
+    float EMF = PSSF + EM2F;
+
+    PSSEnergy += PSSF * clEnergy;
+    EMEnergy  += EMF * clEnergy;
+    HADEnergy += (Energy != 0) ? (1 - EMF) * clEnergy : 0;
+  }
+
+  // calculate trk momentum
+  float trkSysMomentum(0.);
+  for (size_t i=0; i < pTau.nTracks(); ++i) {
+    trkSysMomentum += pTau.track(i)->pt() * std::cosh(pTau.track(i)->eta());
+
+    //adding the core tracks to the approximate substructure 4 vector
+    approxSubstructure4Vec += pTau.track(i)->p4();
+  }
+
+  // set new approximate energy flow variables for tau ID
+  pTau.setDetail(xAOD::TauJetParameters::ptRatioEflowApprox, static_cast<float>(approxSubstructure4Vec.Pt()/ pTau.ptDetectorAxis()) );
+  pTau.setDetail(xAOD::TauJetParameters::mEflowApprox, static_cast<float>(approxSubstructure4Vec.M()) );
+
+  float fPSSFraction = (totalEnergy != 0.) ? PSSEnergy / totalEnergy : DEFAULT;
+  float fChPIEMEOverCaloEME = (EMEnergy != 0.) ? (trkSysMomentum - HADEnergy) / EMEnergy : DEFAULT;
+  float fEMPOverTrkSysP = DEFAULT;
+  if (pTau.nTracks() > 0) fEMPOverTrkSysP = (trkSysMomentum != 0.) ? EMEnergy / trkSysMomentum : DEFAULT;
+
+  pTau.setDetail(xAOD::TauJetParameters::PSSFraction, fPSSFraction);
+  pTau.setDetail(xAOD::TauJetParameters::ChPiEMEOverCaloEME, fChPIEMEOverCaloEME);
+  pTau.setDetail(xAOD::TauJetParameters::EMPOverTrkSysP, fEMPOverTrkSysP);
+
+  // calculate dRMax
+  size_t numTrack = pTau.nTracks();
+  if (numTrack > 0) {
+    float dRmax = 0.;
+    float dR = 0.;
+
+    for (size_t i=0; i < numTrack; ++i) {
+      dR = pTau.track(i)->p4().DeltaR(pTau.p4());
+      if (dR > dRmax) dRmax = dR;
+    }
+    pTau.setDetail(xAOD::TauJetParameters::dRmax, dRmax);
+  }
+
+  return StatusCode::SUCCESS;
 }
diff --git a/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx b/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx
index 5150e1ca4ffc76d2e6461baf29144d7792f7c3be..7268663e5c9158c18b1288c4fabde082dc4cb0d3 100644
--- a/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx
+++ b/Reconstruction/tauRecTools/Root/TauTrackClassifier.cxx
@@ -45,13 +45,6 @@ StatusCode TauTrackClassifier::initialize()
   return StatusCode::SUCCESS;
 }
 
-
-StatusCode TauTrackClassifier::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-
 //______________________________________________________________________________
 StatusCode TauTrackClassifier::executeTrackClassifier(xAOD::TauJet& xTau, xAOD::TauTrackContainer& tauTrackCon) const
 {
@@ -130,66 +123,67 @@ StatusCode TrackMVABDT::finalize()
 //______________________________________________________________________________
 StatusCode TrackMVABDT::initialize()
 {
-  m_mAvailableVars={{"TracksAuxDyn.tauPt", new float(0)}
-                    , {"TracksAuxDyn.jetSeedPt", new float(0)}
-                    , {"TracksAuxDyn.tauEta", new float(0)}
-                    , {"TracksAuxDyn.trackEta", new float(0)}
-                    , {"TracksAuxDyn.z0sinThetaTJVA", new float(0)}
-                    , {"TracksAuxDyn.rConv", new float(0)}
-                    , {"TracksAuxDyn.rConvII", new float(0)}
-                    , {"TauTracksAuxDyn.rConv/TauTracksAuxDyn.rConvII", new float(0)}
-                    , {"TracksAuxDyn.DRJetSeedAxis", new float(0)}
-                    , {"TracksAuxDyn.dRJetSeedAxis", new float(0)}
-                    , {"TracksAux.d0", new float(0)}
-                    , {"TracksAux.qOverP", new float(0)}
-                    , {"TracksAux.theta", new float(0)}
-                    , {"TracksAux.eProbabilityHT", new float(0)}
-                    , {"TracksAux.numberOfInnermostPixelLayerHits", new float(0)}
-                    , {"TracksAux.numberOfPixelHits", new float(0)}
-                    , {"TracksAux.numberOfPixelDeadSensors", new float(0)}
-                    , {"TracksAux.numberOfPixelSharedHits", new float(0)}
-                    , {"TracksAux.numberOfSCTHits", new float(0)}
-                    , {"TracksAux.numberOfSCTDeadSensors", new float(0)}
-                    , {"TracksAux.numberOfSCTSharedHits", new float(0)}
-                    , {"TracksAux.numberOfTRTHighThresholdHits", new float(0)}
-                    , {"TracksAux.numberOfTRTHits", new float(0)}
-                    , {"TracksAux.numberOfPixelHits+TracksAux.numberOfPixelDeadSensors", new float(0)}
-                    , {"TracksAux.numberOfPixelHits+TracksAux.numberOfPixelDeadSensors+TracksAux.numberOfSCTHits+TracksAux.numberOfSCTDeadSensors", new float(0)}
-
-                    , {"TauTracksAuxDyn.tauPt", new float(0)}
-                    , {"TauTracksAuxDyn.jetSeedPt", new float(0)}
-                    , {"TauTracksAuxDyn.tauEta", new float(0)}
-                    , {"TauTracksAuxDyn.trackEta", new float(0)}
-                    , {"TauTracksAuxDyn.z0sinThetaTJVA", new float(0)}
-                    , {"TauTracksAuxDyn.rConv", new float(0)}
-                    , {"TauTracksAuxDyn.rConvII", new float(0)}
-                    , {"TauTracksAuxDyn.dRJetSeedAxis", new float(0)}
-                    , {"TauTracksAuxDyn.d0", new float(0)}
-                    , {"TauTracksAuxDyn.qOverP", new float(0)}
-                    , {"TauTracksAuxDyn.theta", new float(0)}
-                    , {"TauTracksAuxDyn.eProbabilityHT", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfInnermostPixelLayerHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelDeadSensors", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelSharedHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfSCTHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfSCTDeadSensors", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfSCTSharedHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfTRTHighThresholdHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfTRTHits", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors+TauTracksAuxDyn.numberOfSCTHits+TauTracksAuxDyn.numberOfSCTDeadSensors", new float(0)}
-
-
-                    , {"1/(TauTracksAuxDyn.trackPt)", new float(0)}
-                    , {"fabs(TauTracksAuxDyn.qOverP)", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfContribPixelLayers", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors+TauTracksAuxDyn.numberOfPixelHoles", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors+TauTracksAuxDyn.numberOfPixelHoles+TauTracksAuxDyn.numberOfSCTHits+TauTracksAuxDyn.numberOfSCTDeadSensors+TauTracksAuxDyn.numberOfSCTHoles", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHoles", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfPixelHoles+TauTracksAuxDyn.numberOfSCTHoles", new float(0)}
-                    , {"TauTracksAuxDyn.numberOfSCTHoles", new float(0)}
-                    , {"TauTracksAux.pt", new float(0)}
+  m_mAvailableVars={
+    {"TracksAuxDyn.tauPt", new float(0)}
+    , {"TracksAuxDyn.jetSeedPt", new float(0)}
+    , {"TracksAuxDyn.tauEta", new float(0)}
+    , {"TracksAuxDyn.trackEta", new float(0)}
+    , {"TracksAuxDyn.z0sinThetaTJVA", new float(0)}
+    , {"TracksAuxDyn.rConv", new float(0)}
+    , {"TracksAuxDyn.rConvII", new float(0)}
+    , {"TauTracksAuxDyn.rConv/TauTracksAuxDyn.rConvII", new float(0)}
+    , {"TracksAuxDyn.DRJetSeedAxis", new float(0)}
+    , {"TracksAuxDyn.dRJetSeedAxis", new float(0)}
+    , {"TracksAux.d0", new float(0)}
+    , {"TracksAux.qOverP", new float(0)}
+    , {"TracksAux.theta", new float(0)}
+    , {"TracksAux.eProbabilityHT", new float(0)}
+    , {"TracksAux.numberOfInnermostPixelLayerHits", new float(0)}
+    , {"TracksAux.numberOfPixelHits", new float(0)}
+    , {"TracksAux.numberOfPixelDeadSensors", new float(0)}
+    , {"TracksAux.numberOfPixelSharedHits", new float(0)}
+    , {"TracksAux.numberOfSCTHits", new float(0)}
+    , {"TracksAux.numberOfSCTDeadSensors", new float(0)}
+    , {"TracksAux.numberOfSCTSharedHits", new float(0)}
+    , {"TracksAux.numberOfTRTHighThresholdHits", new float(0)}
+    , {"TracksAux.numberOfTRTHits", new float(0)}
+    , {"TracksAux.numberOfPixelHits+TracksAux.numberOfPixelDeadSensors", new float(0)}
+    , {"TracksAux.numberOfPixelHits+TracksAux.numberOfPixelDeadSensors+TracksAux.numberOfSCTHits+TracksAux.numberOfSCTDeadSensors", new float(0)}
+    
+    , {"TauTracksAuxDyn.tauPt", new float(0)}
+    , {"TauTracksAuxDyn.jetSeedPt", new float(0)}
+    , {"TauTracksAuxDyn.tauEta", new float(0)}
+    , {"TauTracksAuxDyn.trackEta", new float(0)}
+    , {"TauTracksAuxDyn.z0sinThetaTJVA", new float(0)}
+    , {"TauTracksAuxDyn.rConv", new float(0)}
+    , {"TauTracksAuxDyn.rConvII", new float(0)}
+    , {"TauTracksAuxDyn.dRJetSeedAxis", new float(0)}
+    , {"TauTracksAuxDyn.d0", new float(0)}
+    , {"TauTracksAuxDyn.qOverP", new float(0)}
+    , {"TauTracksAuxDyn.theta", new float(0)}
+    , {"TauTracksAuxDyn.eProbabilityHT", new float(0)}
+    , {"TauTracksAuxDyn.numberOfInnermostPixelLayerHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelDeadSensors", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelSharedHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfSCTHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfSCTDeadSensors", new float(0)}
+    , {"TauTracksAuxDyn.numberOfSCTSharedHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfTRTHighThresholdHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfTRTHits", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors+TauTracksAuxDyn.numberOfSCTHits+TauTracksAuxDyn.numberOfSCTDeadSensors", new float(0)}
+    
+    
+    , {"1/(TauTracksAuxDyn.trackPt)", new float(0)}
+    , {"fabs(TauTracksAuxDyn.qOverP)", new float(0)}
+    , {"TauTracksAuxDyn.numberOfContribPixelLayers", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors+TauTracksAuxDyn.numberOfPixelHoles", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHits+TauTracksAuxDyn.numberOfPixelDeadSensors+TauTracksAuxDyn.numberOfPixelHoles+TauTracksAuxDyn.numberOfSCTHits+TauTracksAuxDyn.numberOfSCTDeadSensors+TauTracksAuxDyn.numberOfSCTHoles", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHoles", new float(0)}
+    , {"TauTracksAuxDyn.numberOfPixelHoles+TauTracksAuxDyn.numberOfSCTHoles", new float(0)}
+    , {"TauTracksAuxDyn.numberOfSCTHoles", new float(0)}
+    , {"TauTracksAux.pt", new float(0)}
   };
     
   ATH_CHECK(addWeightsFile());
@@ -331,6 +325,5 @@ StatusCode TrackMVABDT::setVars(const xAOD::TauTrack& xTrack, const xAOD::TauJet
   setVar("TauTracksAuxDyn.numberOfSCTHoles") = fNumberOfSCTHoles;
   setVar("TauTracksAux.pt") = xTrackParticle->pt();
 
-  return StatusCode::SUCCESS;
-  
+  return StatusCode::SUCCESS;  
 }
diff --git a/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx b/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx
index cab8bec41f24d8a3f4f69420f1897349fd3a562c..94e7daaf6ef7ac89d8063483c35f53bb89172d30 100644
--- a/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx
+++ b/Reconstruction/tauRecTools/Root/TauWPDecorator.cxx
@@ -10,8 +10,7 @@
 #include "TFile.h"
 #include "TH2.h"
 
-
-
+//______________________________________________________________________________
 TauWPDecorator::TauWPDecorator(const std::string& name) :
   TauRecToolBase(name) {
   declareProperty("UseEleBDT", m_electronMode = false);
@@ -34,13 +33,11 @@ TauWPDecorator::TauWPDecorator(const std::string& name) :
   declareProperty("DecorWPCutEffs3P", m_decorWPEffs3p);
 }
 
-
-
+//______________________________________________________________________________
 TauWPDecorator::~TauWPDecorator() {
 }
 
-
-
+//______________________________________________________________________________
 StatusCode TauWPDecorator::retrieveHistos(int nProng) {
   // Find and open file
   std::string fileName;
@@ -91,8 +88,7 @@ StatusCode TauWPDecorator::retrieveHistos(int nProng) {
   return StatusCode::SUCCESS;  
 }
 
-
-
+//______________________________________________________________________________
 StatusCode TauWPDecorator::storeLimits(int nProng) {
   std::shared_ptr<std::vector<m_pair_t>> histArray = nullptr;
   if (nProng == 0) {
@@ -131,14 +127,14 @@ StatusCode TauWPDecorator::storeLimits(int nProng) {
   return StatusCode::SUCCESS;
 }
 
+//______________________________________________________________________________
 double TauWPDecorator::transformScore(double score, double cutLow, double effLow, double cutHigh, double effHigh) const {
   double efficiency = effLow + (score - cutLow)/(cutHigh - cutLow) * (effHigh - effLow);
   double scoreTrans = 1.0 - efficiency;
   return scoreTrans;
 }
 
-
-
+//______________________________________________________________________________
 StatusCode TauWPDecorator::initialize() {
 
   ATH_CHECK( m_aveIntPerXKey.initialize() );
@@ -172,8 +168,7 @@ StatusCode TauWPDecorator::initialize() {
   return StatusCode::SUCCESS;
 }
 
-
-
+//______________________________________________________________________________
 StatusCode TauWPDecorator::execute(xAOD::TauJet& pTau) const { 
   // obtain the dependent variables of the efficiency 
   // -- x variable is tau pt
@@ -305,9 +300,3 @@ StatusCode TauWPDecorator::execute(xAOD::TauJet& pTau) const {
   
   return StatusCode::SUCCESS;
 }
-
-
-
-StatusCode TauWPDecorator::finalize() {
-  return StatusCode::SUCCESS;
-}
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx b/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
index cf349446aa11f0dae3b0b2cac4b9da378a55feb4..17950599553cb8cc64ff9831b5bfac38aba15e62 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.cxx
@@ -12,38 +12,23 @@
 #include "xAODTau/TauJetAuxContainer.h"
 #include "xAODTau/TauJet.h"
 
-
-
+//______________________________________________________________________________
 JetSeedBuilder::JetSeedBuilder(const std::string& name) :
   TauRecToolBase(name) {
 }
 
-
-
+//______________________________________________________________________________
 JetSeedBuilder::~JetSeedBuilder() {
 }
 
-
-
-StatusCode JetSeedBuilder::initialize() {
-  return StatusCode::SUCCESS;
-}
-
-
-
-StatusCode JetSeedBuilder::finalize() {
-  return StatusCode::SUCCESS;
-}
-
-
-
+//______________________________________________________________________________
 StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) const {
 
   ATH_MSG_DEBUG("Starting execute");
 
   const xAOD::Jet* jetSeed = nullptr;
   if (pTau.jetLink().isValid()) {
-    jetSeed = * pTau.jetLink();
+    jetSeed = pTau.jet();
   }
   else { 
     ATH_MSG_ERROR("seed is not a jet -> tau will not be reconstructed");
@@ -76,4 +61,3 @@ StatusCode JetSeedBuilder::execute(xAOD::TauJet& pTau) const {
 }
 
 #endif
-
diff --git a/Reconstruction/tauRecTools/src/JetSeedBuilder.h b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
index ea014e431d1246640c93ee81c3ef6539714ea955..f52c5f533eff6999ce76f890810212d7c00701db 100644
--- a/Reconstruction/tauRecTools/src/JetSeedBuilder.h
+++ b/Reconstruction/tauRecTools/src/JetSeedBuilder.h
@@ -26,14 +26,8 @@ class JetSeedBuilder : public TauRecToolBase {
     /** @brief Destructor */
     virtual ~JetSeedBuilder();
 
-    /** @brief Initialization of this tool */
-    virtual StatusCode initialize() override;
-   
     /** @brief Executation of this tool */ 
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
-    
-    /** @brief Finalization of this tool */
-    virtual StatusCode finalize() override;
 };
 
 #endif	/* JETSEEDBUILDER_H */
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
index 7713d7b53bfb6e6035229435832646acd427a4a1..281811a695e9593fd0dde1870d755904d3ca3dcf 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
@@ -12,28 +12,19 @@
 #include "xAODTau/TauJet.h"
 #include "CaloUtils/CaloVertexedCluster.h"
 
-
-
+//______________________________________________________________________________
 TauAxisSetter::TauAxisSetter(const std::string& name) :
 TauRecToolBase(name) {
 }
 
-
-
+//______________________________________________________________________________
 TauAxisSetter::~TauAxisSetter() { 
 }
 
-
-
-StatusCode TauAxisSetter::initialize() {
-  return StatusCode::SUCCESS;
-}
-
-
-
+//______________________________________________________________________________
 StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau) const {
 
-  const xAOD::Jet* pJetSeed = (*pTau.jetLink());
+  const xAOD::Jet* pJetSeed = pTau.jet();
   if (!pJetSeed) {
     ATH_MSG_ERROR("Tau jet link is invalid.");
     return StatusCode::FAILURE;
@@ -91,7 +82,7 @@ StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau) const {
     ATH_CHECK(tauRecTools::GetJetClusterList(pJetSeed, clusterList, m_incShowerSubtr, baryCenter, m_clusterCone));
     for (auto cluster : clusterList){
       if (pTau.vertexLink()) {
-        tauInterAxis += xAOD::CaloVertexedCluster(*cluster, (*pTau.vertexLink())->position()).p4();
+        tauInterAxis += xAOD::CaloVertexedCluster(*cluster, pTau.vertex()->position()).p4();
       }
       else {
         tauInterAxis += xAOD::CaloVertexedCluster(*cluster).p4();
@@ -106,10 +97,4 @@ StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau) const {
   return StatusCode::SUCCESS;
 }
 
-
-
-StatusCode TauAxisSetter::finalize() {
-    return StatusCode::SUCCESS;
-}
-
 #endif
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.h b/Reconstruction/tauRecTools/src/TauAxisSetter.h
index 2f239a426f25900dbc5f2397a3bac3b39a0a774d..09095467f33a74abe6e8c59c9f0d20d0482f9aea 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.h
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.h
@@ -33,14 +33,8 @@ class TauAxisSetter : public TauRecToolBase {
     /** @brief Destructor */
     ~TauAxisSetter();
 
-    /** @brief Initialization of this tool */
-    virtual StatusCode initialize() override;
-   
     /** @brief Execution of this tool */ 
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
-    
-    /** @brief Finalization of this tool */
-    virtual StatusCode finalize() override;
 
   private:
 
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.cxx b/Reconstruction/tauRecTools/src/TauCellVariables.cxx
index f43b65e91fd8a67107e5e363de34eae07e4c28cd..ddceb6ffbfb6e4589382325c22fb66094f1f970b 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.cxx
@@ -15,34 +15,19 @@
 #include <cmath>
 #include <vector>
 
-
-
+//______________________________________________________________________________
 TauCellVariables::TauCellVariables(const std::string& name) :
   TauRecToolBase(name) {
 }
 
-
-
+//______________________________________________________________________________
 TauCellVariables::~TauCellVariables() {
 }
 
-
-
-StatusCode TauCellVariables::finalize() {
-  return StatusCode::SUCCESS;
-}
-
-
-
-StatusCode TauCellVariables::initialize() {
-  return StatusCode::SUCCESS;
-}
-
-
-
+//______________________________________________________________________________
 StatusCode TauCellVariables::execute(xAOD::TauJet& pTau) const {
 
-  const xAOD::Jet* pJetSeed = (*pTau.jetLink());
+  const xAOD::Jet* pJetSeed = pTau.jet();
   if (!pJetSeed) {
     ATH_MSG_ERROR("tau does not have jet seed for cell variable calculation");
     return StatusCode::FAILURE;
@@ -94,7 +79,7 @@ StatusCode TauCellVariables::execute(xAOD::TauJet& pTau) const {
 
       // correct cell four momentum based on tau vertex
       if (m_doVertexCorrection && pTau.vertexLink()) {
-        CaloVertexedCell vxCell (*cell, (*pTau.vertexLink())->position());
+        CaloVertexedCell vxCell (*cell, pTau.vertex()->position());
         cellPhi = vxCell.phi();
         cellEta = vxCell.eta();
         cellET = vxCell.et();
@@ -202,4 +187,3 @@ StatusCode TauCellVariables::execute(xAOD::TauJet& pTau) const {
 }
 
 #endif
-                
diff --git a/Reconstruction/tauRecTools/src/TauCellVariables.h b/Reconstruction/tauRecTools/src/TauCellVariables.h
index 13119d343b6a79ee91afac4f6783d5b62baab14b..0d2c2336a454a3f6a76dcfd8a38f344ec8d77193 100644
--- a/Reconstruction/tauRecTools/src/TauCellVariables.h
+++ b/Reconstruction/tauRecTools/src/TauCellVariables.h
@@ -25,12 +25,6 @@ class TauCellVariables : public TauRecToolBase {
     /** @brief Destructor */
     ~TauCellVariables();
     
-    /** @brief Initialization of this tool */
-    virtual StatusCode initialize() override;
-
-    /** @brief Finalization of this tool */
-    virtual StatusCode finalize() override;
-
     /** @brief Perform the calculation of cell variables for each tau candidate */
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
 
@@ -49,8 +43,7 @@ class TauCellVariables : public TauRecToolBase {
     Gaudi::Property<bool> m_incShowerSubtr {this, "IncShowerSubtr", true, "use shower subtracted clusters in calo calculations"};
 };
 
-
-
+//______________________________________________________________________________
 inline bool TauCellVariables::isEMLayer(const CaloSampling::CaloSample& calo) const {
   if ((calo == CaloSampling::PreSamplerB) ||
       (calo == CaloSampling::PreSamplerE) ||
@@ -65,8 +58,7 @@ inline bool TauCellVariables::isEMLayer(const CaloSampling::CaloSample& calo) co
   }
 }
 
-
-
+//______________________________________________________________________________
 inline bool TauCellVariables::isStripLayer(const CaloSampling::CaloSample& calo) const {
   if ((calo == CaloSampling::EMB1) ||
       (calo == CaloSampling::EME1)) {
@@ -78,4 +70,3 @@ inline bool TauCellVariables::isStripLayer(const CaloSampling::CaloSample& calo)
 }
 
 #endif	/* TAUREC_TAUCELLVARIABLES_H */
-
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
index 6f2eccd2cd574e6f8818c20cabb0106fe802b158..a47162cb0ab48d388adf8de3023aad79eb59a0d7 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.cxx
@@ -3,24 +3,6 @@
 */
 
 #ifndef XAOD_ANALYSIS
-//-----------------------------------------------------------------------------
-// file:        tau1p3pEleVeto.cxx
-// package:     Reconstruction/tauRec
-// authors:     Zofia Czyczula
-// date:        2006-09-27
-//
-// 
-// This tool veto electrons.
-//
-// MODIFIED:
-// 02-04-2007 - (AK) protection against missing egamma Collection
-// 25-03-2008 - (AK for ZC) upgade of the code
-// 28-03-1008 - (AK) fix for protection against missing egamma Collection 
-//               ERROR->WARNING
-// 15/04/2008 - (AK) fixing compilation warning bug #35463
-// 03-10-2008 - (ZC) upgarade of the code 
-// 16/03/2010 - (AK) use the cell id instead of the pointer 
-//-----------------------------------------------------------------------------
 
 #include <algorithm>
 #include <cmath>
@@ -52,14 +34,6 @@ TauRecToolBase(name) {
 //-------------------------------------------------------------------------
 TauElectronVetoVariables::~TauElectronVetoVariables() { }
 
-//-------------------------------------------------------------------------
-// Finalizer
-//-------------------------------------------------------------------------
-StatusCode TauElectronVetoVariables::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
 //-------------------------------------------------------------------------
 // Initializer
 //-------------------------------------------------------------------------
@@ -194,7 +168,7 @@ StatusCode TauElectronVetoVariables::execute(xAOD::TauJet& pTau) const
       }
     }
 
-    const xAOD::Jet* pJetSeed = (*pTau.jetLink());
+    const xAOD::Jet* pJetSeed = pTau.jet();
     if (!pJetSeed) {
       ATH_MSG_ERROR("tau does not have jet seed for electron veto cell variable calculation");
       return StatusCode::FAILURE;
@@ -220,7 +194,7 @@ StatusCode TauElectronVetoVariables::execute(xAOD::TauJet& pTau) const
 	    else cellSeen.set(pCell->caloDDE()->calo_hash());
 
         if (m_doVertexCorrection && pTau.vertexLink()) {
-          CaloVertexedCell vxCell (*pCell, (*pTau.vertexLink())->position());
+          CaloVertexedCell vxCell (*pCell, pTau.vertex()->position());
           cellPhi = vxCell.phi();
           cellEta = vxCell.eta();
           cellET = vxCell.et();
diff --git a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
index d239719254f93975e1b5353826ac117ed7ff4899..975c731e44038d589252291598133738cfe5b376 100644
--- a/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
+++ b/Reconstruction/tauRecTools/src/TauElectronVetoVariables.h
@@ -31,7 +31,6 @@ public:
     virtual ~TauElectronVetoVariables();
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
     virtual StatusCode initialize() override;
-    virtual StatusCode finalize() override;
 
 private:
     Gaudi::Property<bool> m_doVertexCorrection {this, "VertexCorrection", false, "switch of vertex correction"}; 
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx
index 3cf2711b00d2f34fb39cc47a34495bda68391628..eed20fb0e6a3d2aa44d5b79837eb43b6f4c49223 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.cxx
@@ -8,7 +8,6 @@
 // package:     Reconstruction/tauEvent
 // authors:     Benedict Winter, Will Davey, Stephanie Yuen
 // date:        2012-10-09
-//
 //-----------------------------------------------------------------------------
 
 #include "CaloUtils/CaloClusterStoreHelper.h"
@@ -18,14 +17,11 @@
 #include "TauPi0ClusterCreator.h"
 #include "tauRecTools/HelperFunctions.h"
 
-using std::vector;
-using std::string;
-
 //-------------------------------------------------------------------------
 // Constructor
 //-------------------------------------------------------------------------
 
-TauPi0ClusterCreator::TauPi0ClusterCreator( const string& name) :
+TauPi0ClusterCreator::TauPi0ClusterCreator(const std::string& name) :
     TauRecToolBase(name) {
 }
 
@@ -37,24 +33,14 @@ TauPi0ClusterCreator::~TauPi0ClusterCreator()
 {
 }
 
-
-StatusCode TauPi0ClusterCreator::initialize() 
-{
-  return StatusCode::SUCCESS;
-}
-
-StatusCode TauPi0ClusterCreator::finalize() 
-{
-    return StatusCode::SUCCESS;
-}
-
+//______________________________________________________________________________
 StatusCode TauPi0ClusterCreator::executePi0ClusterCreator(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer,
 							  xAOD::PFOContainer& hadronicClusterPFOContainer,
 							  xAOD::CaloClusterContainer& pi0CaloClusterContainer,
 							  const xAOD::CaloClusterContainer& pPi0ClusterContainer) const
 {
     // Any tau needs to have PFO vectors. Set empty vectors before nTrack cut
-    vector<ElementLink<xAOD::PFOContainer> > empty;
+    std::vector<ElementLink<xAOD::PFOContainer> > empty;
     pTau.setProtoChargedPFOLinks(empty);
     pTau.setProtoNeutralPFOLinks(empty);
     pTau.setProtoPi0PFOLinks(empty);
@@ -100,9 +86,9 @@ StatusCode TauPi0ClusterCreator::executePi0ClusterCreator(xAOD::TauJet& pTau, xA
         // calorimeter is required.
         float EM1CoreFrac = getEM1CoreFrac(pPi0Cluster);
         int NHitsInEM1 = getNPhotons(shotVector, shotsInCluster);
-        vector<int> NPosECellsInLayer = getNPosECells(pPi0Cluster);
-        vector<float> firstEtaWRTClusterPositionInLayer = get1stEtaMomWRTCluster(pPi0Cluster);
-        vector<float> secondEtaWRTClusterPositionInLayer = get2ndEtaMomWRTCluster(pPi0Cluster);
+	std::vector<int> NPosECellsInLayer = getNPosECells(pPi0Cluster);
+	std::vector<float> firstEtaWRTClusterPositionInLayer = get1stEtaMomWRTCluster(pPi0Cluster);
+	std::vector<float> secondEtaWRTClusterPositionInLayer = get2ndEtaMomWRTCluster(pPi0Cluster);
 
         // Retrieve cluster moments that are used for fake supression and that are not stored in AOD
         // for every cluster. Do this after applying the vertex correction, since the moments 
@@ -209,6 +195,7 @@ StatusCode TauPi0ClusterCreator::executePi0ClusterCreator(xAOD::TauJet& pTau, xA
     return StatusCode::SUCCESS;
 }
 
+//______________________________________________________________________________
 // Functions used to calculate BDT variables other than those provided by the CaloClusterMomentsMaker
 float TauPi0ClusterCreator::getEM1CoreFrac(const xAOD::CaloCluster* pi0Candidate) const
 {
@@ -234,6 +221,7 @@ float TauPi0ClusterCreator::getEM1CoreFrac(const xAOD::CaloCluster* pi0Candidate
     return coreEnergy/sumEPosCellsEM1;
 }
 
+//______________________________________________________________________________
 // Do cluster to shot matching. 
 // A cluster is matched to a shot if the seed cell of the shot is in the cluster
 std::map<unsigned, xAOD::CaloCluster*> TauPi0ClusterCreator::getClusterToShotMap(const std::vector<const xAOD::PFO*>& shotVector,
@@ -292,6 +280,7 @@ std::map<unsigned, xAOD::CaloCluster*> TauPi0ClusterCreator::getClusterToShotMap
     return clusterToShotMap;
 }
 
+//______________________________________________________________________________
 std::vector<unsigned> TauPi0ClusterCreator::getShotsMatchedToCluster(const std::vector<const xAOD::PFO*>& shotVector,
 								     const std::map<unsigned, xAOD::CaloCluster*>& clusterToShotMap, 
 								     const xAOD::CaloCluster* pPi0Cluster) const
@@ -306,6 +295,7 @@ std::vector<unsigned> TauPi0ClusterCreator::getShotsMatchedToCluster(const std::
     return shotsMatchedToCluster;
 }
 
+//______________________________________________________________________________
 int TauPi0ClusterCreator::getNPhotons(const std::vector<const xAOD::PFO*>& shotVector,
 				      const std::vector<unsigned>& shotsInCluster ) const
 {
@@ -319,9 +309,10 @@ int TauPi0ClusterCreator::getNPhotons(const std::vector<const xAOD::PFO*>& shotV
     return nPhotons;
 }
 
-vector<int> TauPi0ClusterCreator::getNPosECells(const xAOD::CaloCluster* pi0Candidate) const
+//______________________________________________________________________________
+std::vector<int> TauPi0ClusterCreator::getNPosECells(const xAOD::CaloCluster* pi0Candidate) const
 {
-    vector<int> nPosECellsInLayer(3,0); // 3 layers initialised with 0 +ve cells
+    std::vector<int> nPosECellsInLayer(3,0); // 3 layers initialised with 0 +ve cells
 
     const CaloClusterCellLink* theCellLink = pi0Candidate->getCellLinks();
     CaloClusterCellLink::const_iterator cellInClusterItr  = theCellLink->begin();
@@ -338,11 +329,11 @@ vector<int> TauPi0ClusterCreator::getNPosECells(const xAOD::CaloCluster* pi0Cand
     return nPosECellsInLayer;
 }
 
-
-vector<float> TauPi0ClusterCreator::get1stEtaMomWRTCluster(const xAOD::CaloCluster* pi0Candidate) const
+//______________________________________________________________________________
+std::vector<float> TauPi0ClusterCreator::get1stEtaMomWRTCluster(const xAOD::CaloCluster* pi0Candidate) const
 {
-    vector<float> firstEtaWRTClusterPositionInLayer (4, 0.);  //init with 0. for 0-3 layers
-    vector<float> sumEInLayer (4, 0.); //init with 0. for 0-3 layers
+    std::vector<float> firstEtaWRTClusterPositionInLayer (4, 0.);  //init with 0. for 0-3 layers
+    std::vector<float> sumEInLayer (4, 0.); //init with 0. for 0-3 layers
 
     const CaloClusterCellLink* theCellLink = pi0Candidate->getCellLinks();
     CaloClusterCellLink::const_iterator cellInClusterItr  = theCellLink->begin();
@@ -370,10 +361,11 @@ vector<float> TauPi0ClusterCreator::get1stEtaMomWRTCluster(const xAOD::CaloClust
     return firstEtaWRTClusterPositionInLayer;
 }
 
-vector<float> TauPi0ClusterCreator::get2ndEtaMomWRTCluster( const xAOD::CaloCluster* pi0Candidate) const
+//______________________________________________________________________________
+std::vector<float> TauPi0ClusterCreator::get2ndEtaMomWRTCluster( const xAOD::CaloCluster* pi0Candidate) const
 {
-      vector<float> secondEtaWRTClusterPositionInLayer (4, 0.); //init with 0. for 0-3 layers
-      vector<float> sumEInLayer (4, 0.); //init with 0. for 0-3 layers
+      std::vector<float> secondEtaWRTClusterPositionInLayer (4, 0.); //init with 0. for 0-3 layers
+      std::vector<float> sumEInLayer (4, 0.); //init with 0. for 0-3 layers
 
       const CaloClusterCellLink* theCellLinks = pi0Candidate->getCellLinks();
 
@@ -398,9 +390,10 @@ vector<float> TauPi0ClusterCreator::get2ndEtaMomWRTCluster( const xAOD::CaloClus
       return secondEtaWRTClusterPositionInLayer;
 }
 
+//______________________________________________________________________________
 bool TauPi0ClusterCreator::setHadronicClusterPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& pHadronPFOContainer) const
 {
-    const xAOD::Jet* tauJetSeed = (*pTau.jetLink());
+    const xAOD::Jet* tauJetSeed = pTau.jet();
     if (!tauJetSeed) {
         ATH_MSG_ERROR("Could not retrieve tau jet seed");
         return false;
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
index ef90efafbb2a1fd4a6445c106f2234eccdfa08a3..6185d81cb347e34cf20499c4311132618e1b9cd1 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterCreator.h
@@ -26,8 +26,6 @@ public:
     ASG_TOOL_CLASS2(TauPi0ClusterCreator, TauRecToolBase, ITauToolBase);
     virtual ~TauPi0ClusterCreator();
 
-    virtual StatusCode initialize() override;
-    virtual StatusCode finalize() override;
     virtual StatusCode executePi0ClusterCreator(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, 
 						xAOD::PFOContainer& hadronicClusterPFOContainer,
 						xAOD::CaloClusterContainer& pi0CaloClusContainer,
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.cxx b/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.cxx
index e20747d4892432a2ad095d6add4ef07c3f32bf93..ff5fa8094347dcae034adf5f07fd43c74d0ba5d9 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.cxx
@@ -7,7 +7,6 @@
 // package:     Reconstruction/tauRec
 // authors:     Stephanie Yuen, Benedict Winter, Will Davey
 // date:        2014-08-04
-//
 //-----------------------------------------------------------------------------
 
 #include <vector>
@@ -19,14 +18,11 @@
 #include "FourMomUtils/xAODP4Helpers.h"
 #include "xAODCaloEvent/CaloVertexedTopoCluster.h"
 
-using std::vector;
-using std::string;
-
 //-------------------------------------------------------------------------
 // Constructor
 //-------------------------------------------------------------------------
 
-TauPi0ClusterScaler::TauPi0ClusterScaler( const string& name ) :
+TauPi0ClusterScaler::TauPi0ClusterScaler(const std::string& name) :
     TauRecToolBase(name)
 {
 }
@@ -39,18 +35,7 @@ TauPi0ClusterScaler::~TauPi0ClusterScaler()
 {
 }
 
-
-StatusCode TauPi0ClusterScaler::initialize()
-{
-  return StatusCode::SUCCESS;
-}
-
-StatusCode TauPi0ClusterScaler::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
-
+//______________________________________________________________________________
 StatusCode TauPi0ClusterScaler::executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer, xAOD::PFOContainer& chargedPFOContainer) const
 {
     // Clear vector of cell-based charged PFO Links. 
@@ -82,6 +67,7 @@ StatusCode TauPi0ClusterScaler::executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD
     return StatusCode::SUCCESS;
 }
 
+//______________________________________________________________________________
 void TauPi0ClusterScaler::resetNeutralPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer) const
 {
     // Set neutral PFO kinematics to vertex corrected cluster
@@ -92,7 +78,7 @@ void TauPi0ClusterScaler::resetNeutralPFOs(xAOD::TauJet& pTau, xAOD::PFOContaine
 
         // apply cluster vertex correction 
         if(pTau.vertexLink()){
-            auto clcorr = xAOD::CaloVertexedTopoCluster(*cl, (*pTau.vertexLink())->position());
+            auto clcorr = xAOD::CaloVertexedTopoCluster(*cl, pTau.vertex()->position());
             pfo->setP4(clcorr.pt(), clcorr.eta(), clcorr.phi(), 0.0);
         }
         else{
@@ -107,8 +93,7 @@ void TauPi0ClusterScaler::resetNeutralPFOs(xAOD::TauJet& pTau, xAOD::PFOContaine
     }
 }
 
-
-
+//______________________________________________________________________________
 void TauPi0ClusterScaler::createChargedPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& cPFOContainer) const
 {
     ATH_MSG_DEBUG("Creating charged PFOs");
@@ -137,6 +122,7 @@ void TauPi0ClusterScaler::createChargedPFOs(xAOD::TauJet& pTau, xAOD::PFOContain
     }
 }
 
+//______________________________________________________________________________
 void TauPi0ClusterScaler::associateHadronicToChargedPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& chargedPFOContainer) const
 {
     ATH_MSG_DEBUG("Associating hadronic PFOs to charged PFOs");
@@ -215,6 +201,7 @@ void TauPi0ClusterScaler::associateHadronicToChargedPFOs(xAOD::TauJet& pTau, xAO
     }
 }
 
+//______________________________________________________________________________
 void TauPi0ClusterScaler::associateChargedToNeutralPFOs(xAOD::TauJet& pTau, xAOD::PFOContainer& neutralPFOContainer) const
 {
     ATH_MSG_DEBUG("Associating charged PFOs to neutral PFOs");
@@ -293,7 +280,7 @@ void TauPi0ClusterScaler::associateChargedToNeutralPFOs(xAOD::TauJet& pTau, xAOD
     }
 }
 
-
+//______________________________________________________________________________
 void TauPi0ClusterScaler::subtractChargedEnergyFromNeutralPFOs(xAOD::PFOContainer& neutralPFOContainer) const
 {
     ATH_MSG_DEBUG("Subtracting charged energy from neutral PFOs");
@@ -328,11 +315,10 @@ void TauPi0ClusterScaler::subtractChargedEnergyFromNeutralPFOs(xAOD::PFOContaine
             neutralEnergy -= chargedEMEnergy;
             ATH_MSG_DEBUG("Subtracting charged energy: " << chargedEMEnergy );
         } 
-        float neutralPt = neutralEnergy / cosh(neutralPFO->eta());
+        float neutralPt = neutralEnergy / std::cosh(neutralPFO->eta());
         if(neutralPt <= 100.) neutralPt = 100.0;
         
         ATH_MSG_DEBUG("Neutral PFO pt, orig: " << neutralPFO->pt() << "  new: " << neutralPt); 
         neutralPFO->setP4(neutralPt , neutralPFO->eta(), neutralPFO->phi(), neutralPFO->m());
     }
 }
-
diff --git a/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.h b/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.h
index 9bfe5c51c5b7f6aec079a542688c67d3b4c1b52b..bb05d81d099398cdb304e1982152bafd45383e1c 100644
--- a/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.h
+++ b/Reconstruction/tauRecTools/src/TauPi0ClusterScaler.h
@@ -28,8 +28,6 @@ public:
     ASG_TOOL_CLASS2(TauPi0ClusterScaler, TauRecToolBase, ITauToolBase)
     virtual ~TauPi0ClusterScaler();
 
-    virtual StatusCode initialize() override;
-    virtual StatusCode finalize() override;
     virtual StatusCode executePi0ClusterScaler(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer, xAOD::PFOContainer& pChargedPFOContainer) const override; 
 
 private:
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
index f96b1d173c2b7eee80c3199f2f74f70e45ab9e45..b372dffc1ae1ae3efbcbd7b148ff6ba9640d1169 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.cxx
@@ -15,14 +15,11 @@
 
 #include <boost/scoped_ptr.hpp>
 
-using std::vector;
-using std::string;
-
 //-------------------------------------------------------------------------
 // Constructor
 //-------------------------------------------------------------------------
 
-TauPi0CreateROI::TauPi0CreateROI(   const string& name ) :
+TauPi0CreateROI::TauPi0CreateROI(const std::string& name) :
      TauRecToolBase(name)
 {
 }
@@ -44,6 +41,7 @@ StatusCode TauPi0CreateROI::initialize() {
     return StatusCode::SUCCESS;
 }
 
+//______________________________________________________________________________
 StatusCode TauPi0CreateROI::executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& pPi0CellContainer, std::vector<CaloCell*>& addedCellsMap) {
 
     //---------------------------------------------------------------------
@@ -67,7 +65,7 @@ StatusCode TauPi0CreateROI::executePi0CreateROI(xAOD::TauJet& pTau, CaloCellCont
     pCellContainer = caloCellInHandle.cptr();
     
     // get only EM cells within dR<0.4
-    vector<CaloCell_ID::SUBCALO> emSubCaloBlocks;
+    std::vector<CaloCell_ID::SUBCALO> emSubCaloBlocks;
     emSubCaloBlocks.push_back(CaloCell_ID::LAREM);
     boost::scoped_ptr<CaloCellList> pCells(new CaloCellList(pCellContainer,emSubCaloBlocks)); 
     pCells->select(pTau.eta(), pTau.phi(), 0.4); // TODO: change hardcoded 0.4 to tau cone variable, (or func. from TauJet)?
@@ -98,8 +96,4 @@ StatusCode TauPi0CreateROI::executePi0CreateROI(xAOD::TauJet& pTau, CaloCellCont
     return StatusCode::SUCCESS;
 }
 
-StatusCode TauPi0CreateROI::finalize() {
-    return StatusCode::SUCCESS;
-}
-
 #endif
diff --git a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
index cc30fd6204aa74f61289351148f4e38e1ca52ee9..b5b7a1fe055f115607037062b0b28ea7d9e66309 100644
--- a/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
+++ b/Reconstruction/tauRecTools/src/TauPi0CreateROI.h
@@ -32,7 +32,6 @@ public:
 
     virtual StatusCode initialize() override;
     virtual StatusCode executePi0CreateROI(xAOD::TauJet& pTau, CaloCellContainer& Pi0CellContainer, std::vector<CaloCell*>& map) override;
-    virtual StatusCode finalize() override;
 
 private:
     SG::ReadHandleKey<CaloCellContainer> m_caloCellInputContainer{this,"Key_caloCellInputContainer", "AllCalo", "input vertex container key"};
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.cxx b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
index 86bcd2660353fce4fb1ec567c7ec39d982f2414e..1ebb673a60f559186064b3904bd4600e691c6f5b 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.cxx
@@ -8,7 +8,6 @@
 // package:     Reconstruction/tauRec
 // authors:     Will Davey, Benedict Winter, Stephanie Yuen
 // date:        2013-05-22
-//
 //-----------------------------------------------------------------------------
 
 #include <boost/scoped_ptr.hpp>
@@ -23,14 +22,11 @@
 #include "xAODPFlow/PFOAuxContainer.h"
 #include "xAODPFlow/PFO.h"
 
-using std::vector;
-using std::string;
-
 //-------------------------------------------------------------------------
 // Constructor
 //-------------------------------------------------------------------------
 
-TauShotFinder::TauShotFinder(   const string& name ) :
+TauShotFinder::TauShotFinder(const std::string& name) :
     TauRecToolBase(name) {
 }
 
@@ -41,6 +37,7 @@ TauShotFinder::TauShotFinder(   const string& name ) :
 TauShotFinder::~TauShotFinder() {
 }
 
+//______________________________________________________________________________
 StatusCode TauShotFinder::initialize() {
     
     // retrieve tools
@@ -55,17 +52,13 @@ StatusCode TauShotFinder::initialize() {
     return StatusCode::SUCCESS;
 }
 
-StatusCode TauShotFinder::finalize()
-{
-  return StatusCode::SUCCESS;
-}
-
+//______________________________________________________________________________
 StatusCode TauShotFinder::executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotClusterContainer,
 					    xAOD::PFOContainer& tauShotPFOContainer) const {
 
     ATH_MSG_DEBUG("execute");
     // Any tau needs to have shot PFO vectors. Set empty vectors before nTrack cut
-    vector<ElementLink<xAOD::PFOContainer> > empty;
+    std::vector<ElementLink<xAOD::PFOContainer> > empty;
     pTau.setShotPFOLinks(empty);
     
     //---------------------------------------------------------------------
@@ -86,7 +79,7 @@ StatusCode TauShotFinder::executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloCluste
     const CaloCellContainer *pCellContainer = caloCellInHandle.cptr();;
     
     // get only EM cells within dR<0.4
-    vector<CaloCell_ID::SUBCALO> emSubCaloBlocks;
+    std::vector<CaloCell_ID::SUBCALO> emSubCaloBlocks;
     emSubCaloBlocks.push_back(CaloCell_ID::LAREM);
     boost::scoped_ptr<CaloCellList> pCells(new CaloCellList(pCellContainer,emSubCaloBlocks)); 
     pCells->select(pTau.eta(), pTau.phi(), 0.4); 
@@ -254,7 +247,7 @@ StatusCode TauShotFinder::executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloCluste
         shot->setAttribute<int>(xAOD::PFODetails::PFOAttributes::tauShots_nPhotons, nPhotons);
 
         // remove shot(s) from list
-        vector<const CaloCell*>::iterator cellItrNonConst;
+	std::vector<const CaloCell*>::iterator cellItrNonConst;
         cellItrNonConst = std::find(seedCells.begin(),seedCells.end(),cell);
         seedCells.erase(cellItrNonConst);
         if( mergePhi ){
@@ -267,6 +260,7 @@ StatusCode TauShotFinder::executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloCluste
     return StatusCode::SUCCESS;
 }
 
+//______________________________________________________________________________
 std::vector<const CaloCell*> TauShotFinder::getNeighbours(const CaloCellContainer* pCellContainer, 
 							  const CaloCell* cell, 
 							  int maxDepth) const
@@ -277,6 +271,7 @@ std::vector<const CaloCell*> TauShotFinder::getNeighbours(const CaloCellContaine
     return cells; 
 }
 
+//______________________________________________________________________________
 void TauShotFinder::addNeighbours(const CaloCellContainer* pCellContainer,
                                   const CaloCell* cell, 
                                   std::vector<const CaloCell*>& cells,
@@ -306,6 +301,7 @@ void TauShotFinder::addNeighbours(const CaloCellContainer* pCellContainer,
     } 
 }
 
+//______________________________________________________________________________
 bool TauShotFinder::isPhiNeighbour(IdentifierHash cell1Hash, IdentifierHash cell2Hash, bool next) const{
     std::vector<IdentifierHash> neigHashes;
     if( next ) m_calo_id->get_neighbours(cell1Hash,LArNeighbours::nextInPhi,neigHashes);
@@ -317,6 +313,7 @@ bool TauShotFinder::isPhiNeighbour(IdentifierHash cell1Hash, IdentifierHash cell
     return false;
 }
 
+//______________________________________________________________________________
 float TauShotFinder::getEtaBin(float seedEta) const {
     float absSeedEta=std::abs(seedEta);
     if(absSeedEta < 0.80)      return 0; // Central Barrel
@@ -326,6 +323,7 @@ float TauShotFinder::getEtaBin(float seedEta) const {
     else return 4;                           // endcap, coarse granularity
 }
 
+//______________________________________________________________________________
 float TauShotFinder::getNPhotons(int etaBin, float seedEnergy) const {
     // no photon counting in crack region, e.g. [1.39, 1.51]
     if(etaBin==2) return 0;
@@ -340,6 +338,7 @@ float TauShotFinder::getNPhotons(int etaBin, float seedEnergy) const {
     return 1;
 }
 
+//______________________________________________________________________________
 // some really slick c++ way of doing sort (since we need to use the member m_caloWeightTool)
 TauShotFinder::ptSort::ptSort( const TauShotFinder& info ) : m_info(info) { } 
 bool TauShotFinder::ptSort::operator()( const CaloCell* c1, const CaloCell* c2 ){
diff --git a/Reconstruction/tauRecTools/src/TauShotFinder.h b/Reconstruction/tauRecTools/src/TauShotFinder.h
index b0a70569b20ecbfefd917d990a0389bfa7b8733f..6273fc619692164dbf2885e079f0f6b2b258ac24 100644
--- a/Reconstruction/tauRecTools/src/TauShotFinder.h
+++ b/Reconstruction/tauRecTools/src/TauShotFinder.h
@@ -22,7 +22,6 @@ public:
 
     virtual StatusCode initialize() override;
     virtual StatusCode executeShotFinder(xAOD::TauJet& pTau, xAOD::CaloClusterContainer& tauShotCaloClusContainer, xAOD::PFOContainer& tauShotPFOContainer) const override;
-    virtual StatusCode finalize() override;
 
 private:
 
diff --git a/Reconstruction/tauRecTools/src/TauTrackFinder.cxx b/Reconstruction/tauRecTools/src/TauTrackFinder.cxx
index 2ab38a0bae2b2909fe74894ff1b0d5c7974a071a..996718a98892b9aa059143981d187fb63b6f2820 100644
--- a/Reconstruction/tauRecTools/src/TauTrackFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauTrackFinder.cxx
@@ -11,12 +11,11 @@
 #include "xAODTau/TauTrackContainer.h"
 
 #include "TauTrackFinder.h"
-#include "tauRecTools/KineUtils.h"
 #include "tauRecTools/TrackSort.h"
 
 
-TauTrackFinder::TauTrackFinder(const std::string& name ) :
-        TauRecToolBase(name) {
+TauTrackFinder::TauTrackFinder(const std::string& name) :
+  TauRecToolBase(name) {
     m_EMSamplings = {CaloSampling::EME1, CaloSampling::EMB1};
     m_HadSamplings = {CaloSampling::TileBar1, CaloSampling::HEC1, CaloSampling::TileExt1};
 }
@@ -41,11 +40,6 @@ StatusCode TauTrackFinder::initialize() {
     return StatusCode::SUCCESS;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-StatusCode TauTrackFinder::finalize() {
-    return StatusCode::SUCCESS;
-}
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 StatusCode TauTrackFinder::executeTrackFinder(xAOD::TauJet& pTau, xAOD::TauTrackContainer& tauTrackCon, const xAOD::TrackParticleContainer* trackContainer) const {
   
@@ -74,7 +68,7 @@ StatusCode TauTrackFinder::executeTrackFinder(xAOD::TauJet& pTau, xAOD::TauTrack
   }
 
   // get the primary vertex
-  const xAOD::Vertex* pVertex = pTau.vertexLink()!=0 ? (*pTau.vertexLink()) : NULL;
+  const xAOD::Vertex* pVertex = pTau.vertexLink() ? pTau.vertex() : nullptr;
 
   // retrieve tracks wrt a vertex                                                                                                                              
   // as a vertex is used: tau origin / PV / beamspot / 0,0,0 (in this order, depending on availability)                                                        
@@ -224,7 +218,7 @@ TauTrackFinder::TauTrackType TauTrackFinder::tauTrackType( const xAOD::TauJet& p
         const xAOD::TrackParticle& trackParticle,
         const xAOD::Vertex* primaryVertex) const
 {
-    double dR = Tau1P3PKineUtils::deltaR(pTau.eta(),pTau.phi(),trackParticle.eta(),trackParticle.phi());
+    double dR = pTau.p4().DeltaR(trackParticle.p4());
 
     if (dR > m_maxJetDr_wide) return NotTauTrack;
 
diff --git a/Reconstruction/tauRecTools/src/TauTrackFinder.h b/Reconstruction/tauRecTools/src/TauTrackFinder.h
index 23e0d0f223425707b9c845623fc7cac6a2d8757f..42888b9073833d5985a4689dedb7aa273e40fade 100644
--- a/Reconstruction/tauRecTools/src/TauTrackFinder.h
+++ b/Reconstruction/tauRecTools/src/TauTrackFinder.h
@@ -59,7 +59,6 @@ public:
     //-------------------------------------------------------------
     virtual StatusCode initialize() override;
     virtual StatusCode executeTrackFinder(xAOD::TauJet& pTau, xAOD::TauTrackContainer& tauTrackCon, const xAOD::TrackParticleContainer* trackContainer = nullptr) const override;
-    virtual StatusCode finalize() override;
     
 private:
     //-------------------------------------------------------------
diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.cxx b/Reconstruction/tauRecTools/src/TauVertexFinder.cxx
index e50ff0a9793e261afd29a5cdf94dc0b986d1c08b..a40c2bb93fec6e9a3c20178bc7b99293d7421280 100644
--- a/Reconstruction/tauRecTools/src/TauVertexFinder.cxx
+++ b/Reconstruction/tauRecTools/src/TauVertexFinder.cxx
@@ -35,17 +35,12 @@ StatusCode TauVertexFinder::initialize() {
   return StatusCode::SUCCESS;
 }
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-StatusCode TauVertexFinder::finalize() {
-  return StatusCode::SUCCESS;
-}
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 StatusCode TauVertexFinder::executeVertexFinder(xAOD::TauJet& pTau, 
                                                 const xAOD::VertexContainer* vertexContainer, 
                                                 const xAOD::TrackParticleContainer* trackContainer) const {
   
-  const xAOD::VertexContainer * vxContainer = 0;
+  const xAOD::VertexContainer * vxContainer = nullptr;
     
   if (!m_vertexInputContainer.empty()) {
     SG::ReadHandle<xAOD::VertexContainer> vertexInHandle( m_vertexInputContainer );
@@ -119,14 +114,14 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
                             const xAOD::TrackParticleContainer * trackContainer,
                             float& maxJVF) const
 {
-  const xAOD::Jet* pJetSeed = (*pTau.jetLink());
+  const xAOD::Jet* pJetSeed = pTau.jet();
   std::vector<const xAOD::TrackParticle*> tracksForTJVA;
   const double dDeltaRMax(0.2);
 
   std::vector<const xAOD::Vertex*> matchedVertexOnline;
   // the implementation follows closely the example given in modifyJet(...) in https://svnweb.cern.ch/trac/atlasoff/browser/Reconstruction/Jet/JetMomentTools/trunk/Root/JetVertexFractionTool.cxx#15
   
-  const xAOD::TrackParticleContainer* trackParticleCont = 0;
+  const xAOD::TrackParticleContainer* trackParticleCont = nullptr;
   std::vector<const xAOD::TrackParticle*> assocTracks;
   
   if (inTrigger()) {
@@ -170,7 +165,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau,
   }
 
   // Get the TVA object
-  const jet::TrackVertexAssociation* tva = NULL;
+  const jet::TrackVertexAssociation* tva = nullptr;
  
   // ATR-15665 for trigger: reimplementation of TrackVertexAssociationTool::buildTrackVertexAssociation_custom
   if(inTrigger()){ 
@@ -277,6 +272,7 @@ float TauVertexFinder::getJetVertexFraction(const xAOD::Vertex* vertex, const st
     }
   return sumTrackAll!=0 ? sumTrackPV/sumTrackAll : 0;
 }
+
 // for online ATR-15665: reimplementation needed for online because the tva doesn't work. The size of the track collection from TE is not the same as the max track index
 float TauVertexFinder::getJetVertexFraction(const xAOD::Vertex* vertex,
                                             const std::vector<const xAOD::TrackParticle*>& tracks,
diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.h b/Reconstruction/tauRecTools/src/TauVertexFinder.h
index 2ba24f28d96ee0834bdc4da828cc82235076f0d7..0896967c6d07cf0ca5b5ec9e80e2660c4f7b09b3 100644
--- a/Reconstruction/tauRecTools/src/TauVertexFinder.h
+++ b/Reconstruction/tauRecTools/src/TauVertexFinder.h
@@ -12,8 +12,6 @@
 #include "JetEDM/TrackVertexAssociation.h"
 #include "InDetTrackSelectionTool/IInDetTrackSelectionTool.h"
 
-
-
 /////////////////////////////////////////////////////////////////////////////
 
 /** 
@@ -44,8 +42,6 @@ public:
                                 const xAOD::VertexContainer* vertexContainer = nullptr,
                                 const xAOD::TrackParticleContainer* trackContainer = nullptr) const override;
 
-  StatusCode finalize() override;
-
 private:
   ElementLink<xAOD::VertexContainer>
   getPV_TJVA(const xAOD::TauJet& tauJet,
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.cxx b/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
index a5df906bd86ea44ce083a4c61ca8293fc8c62a29..19586dc894c945b4c23de7e65233b543b36d778d 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.cxx
@@ -46,13 +46,6 @@ StatusCode TauVertexVariables::initialize() {
   return StatusCode::SUCCESS;
 }
 
-//-----------------------------------------------------------------------------
-// Finalizer
-//-----------------------------------------------------------------------------
-StatusCode TauVertexVariables::finalize() {
-  return StatusCode::SUCCESS;
-}
-
 //-----------------------------------------------------------------------------
 // Execution
 //-----------------------------------------------------------------------------
@@ -82,7 +75,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
       }
     }
     else if (pTau.vertexLink()) { // offline: obtain tau vertex by link
-      vxcand = *(pTau.vertexLink()) ;
+      vxcand = pTau.vertex() ;
       //check if vertex has a valid type (skip if vertex has type NoVtx)
       if (vxcand->vertexType() != xAOD::VxType::NoVtx) {
 	myIPandSigma = std::unique_ptr<const Trk::ImpactParametersAndSigma>(m_trackToVertexIPEstimator->estimate(pTau.track(0)->track(), vxcand));
@@ -152,7 +145,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
   }
 
   // get the starting point for the fit using Trk::Tracks
-  Amg::Vector3D seedPoint = m_SeedFinder->findSeed(origTracks);
+  const Amg::Vector3D& seedPoint = m_SeedFinder->findSeed(origTracks);
   ATH_MSG_VERBOSE("seedPoint x/y/perp=" << seedPoint.x() <<  " " << seedPoint.y() << " "<< seedPoint.z() << " " << TMath::Sqrt(seedPoint.x()*seedPoint.x()+seedPoint.y()+seedPoint.y()));
 
   // fitting the vertex itself
@@ -163,7 +156,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
   }
 
   // get the transverse flight path significance
-  float trFlightPS = trFlightPathSig(pTau, *xAODvertex);
+  double trFlightPS = trFlightPathSig(pTau, *xAODvertex);
   pTau.setDetail(xAOD::TauJetParameters::trFlightPathSig, (float)(trFlightPS));
   ATH_MSG_VERBOSE("transverse flight path significance="<<trFlightPS);
 
@@ -187,7 +180,7 @@ StatusCode TauVertexVariables::executeVertexVariables(xAOD::TauJet& pTau, xAOD::
 double TauVertexVariables::trFlightPathSig(const xAOD::TauJet& pTau, const xAOD::Vertex& secVertex) const {
 
   const xAOD::Vertex* pVertex = nullptr;
-  if (pTau.vertexLink()) pVertex = *pTau.vertexLink();
+  if (pTau.vertexLink()) pVertex = pTau.vertex();
   if (!pVertex) {
     ATH_MSG_WARNING("No primary vertex information for calculation of transverse flight path significance");
     return -11111.;
diff --git a/Reconstruction/tauRecTools/src/TauVertexVariables.h b/Reconstruction/tauRecTools/src/TauVertexVariables.h
index a426c446073ce832b209f69508759ed3ce47babb..a54aadb3ad39dbc09b47520b8099d5bb1a7e97c7 100644
--- a/Reconstruction/tauRecTools/src/TauVertexVariables.h
+++ b/Reconstruction/tauRecTools/src/TauVertexVariables.h
@@ -15,7 +15,6 @@
 #include "TrkVertexFitterInterfaces/IVertexFitter.h"
 #include "TrkVertexFitterInterfaces/IVertexSeedFinder.h"
 
-
 /**
  *  
  * @brief Class for calculating vertex variables.
@@ -34,7 +33,7 @@ public:
     
     virtual StatusCode initialize() override;
     virtual StatusCode executeVertexVariables(xAOD::TauJet& pTau, xAOD::VertexContainer& pVertexContainer) const override; 
-    virtual StatusCode finalize() override;
+
     //-------------------------------------------------------------
     //! determines the transverse flight path significance from
     //! the primary vertex and the secondary vertex of tau candidate
diff --git a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
index 93d7d8edb817ad2eeffaab719c54cd65149ffb69..d59716827b4b296ce4cf69b92bf21013949aa0cd 100644
--- a/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/MvaTESVariableDecorator.h
@@ -24,7 +24,6 @@ class MvaTESVariableDecorator
     
   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 b7f4766733dc1be54f8cca73db72d2d64d468ea1..3c28f8472a3678ac97a990c4fbf3b2793de31d93 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCalibrateLC.h
@@ -33,7 +33,6 @@ class TauCalibrateLC : public TauRecToolBase {
     ~TauCalibrateLC();
 
     virtual StatusCode initialize() override;
-    virtual StatusCode finalize() override;
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
 
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
index 78080de6cb94ab3a6dd6bed3597814a6df2e3c37..ab075be1b33adfe6fafb784925dd19ba5da86a34 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauCommonCalcVars.h
@@ -26,9 +26,7 @@ public:
     ASG_TOOL_CLASS2(TauCommonCalcVars, TauRecToolBase, ITauToolBase)
     ~TauCommonCalcVars();
     
-    virtual StatusCode initialize() override;   
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
-    virtual StatusCode finalize() override;  
 
 private:
     int m_isolationTrackType;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
index ed65691fe12b40e87d4148e2508e4bd59cdf2532..465ec125de7c4de667231675870fb0c9e85b8571 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauEleOLRDecorator.h
@@ -31,7 +31,6 @@ class TauEleOLRDecorator: virtual public TauRecToolBase
 
   virtual StatusCode initialize() override;
   virtual StatusCode execute(xAOD::TauJet&) const override;
-  virtual StatusCode finalize() override;
 
  private:
   float getCutVal(float fEta, float fPt) const;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
index 854b58f9f428b1963aeec93f6be46eee68041842..a4618e291a15d60c5f5e37ef865d5348a02efdc2 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauIDVarCalculator.h
@@ -27,7 +27,6 @@ class TauIDVarCalculator: public TauRecToolBase
 
   virtual StatusCode initialize() 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 60498a34e217b2fc3b0ae57bfebf086579239bc1..f7854ea3c9ba8b7d5fc9ff0809bd1bebdd9b0b02 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauJetBDTEvaluator.h
@@ -29,7 +29,6 @@ class TauJetBDTEvaluator
     
   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/TauPi0ScoreCalculator.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
index fe9732e26f1eae2452517108855b0d00691e26e3..ba8b377e9a6fba52417b92dfe37cc0160df8533f 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0ScoreCalculator.h
@@ -27,7 +27,6 @@ public:
     virtual ~TauPi0ScoreCalculator();
 
     virtual StatusCode initialize() override;
-    virtual StatusCode finalize() override;
     virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer) const override;
 
 private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
index 954b67647253af6843c8c7fcec4235ea17903ac0..16506a71f5ff79b3a3ddd5793e51e152b648b367 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauPi0Selector.h
@@ -21,8 +21,6 @@ public:
     TauPi0Selector(const std::string& name);
     ASG_TOOL_CLASS2(TauPi0Selector, TauRecToolBase, ITauToolBase)
     virtual ~TauPi0Selector();
-    virtual StatusCode initialize() override;
-    virtual StatusCode finalize() override;
     virtual StatusCode executePi0nPFO(xAOD::TauJet& pTau, xAOD::PFOContainer& pNeutralPFOContainer) const override;
 
 private:
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
index 5e2a31aaacc0b9e1ffdae84a219080471ba1f1d8..3530a60331afc8e7515e683ad080a1f6adf94138 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauSubstructureVariables.h
@@ -20,22 +20,15 @@ class TauSubstructureVariables : public TauRecToolBase
     public: 
 	    ASG_TOOL_CLASS2(TauSubstructureVariables, TauRecToolBase, ITauToolBase)
         
-        static const double DEFAULT;
+        static const float DEFAULT;
 
         TauSubstructureVariables(const std::string& name="TauSubstructureVariables");
 
         ~TauSubstructureVariables();
 
         virtual StatusCode execute(xAOD::TauJet& pTau) const override;
-        virtual StatusCode initialize() override;
-        virtual StatusCode finalize() override;
 
     private:
-        // Maximal pile up correction in GeV for a tau candidate.
-        // Used for the caloIso corrected variable.
-	double m_maxPileUpCorrection;
-        double m_pileUpAlpha;         //!< slope of the pileup correction
-        
         // enable cell origin correction
         // eta and phi of the cells are corrected wrt to the origin of the tau vertex
 	bool m_doVertexCorrection;
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
index 3c296e293165fcb5ce376b7e1803386166956476..219c1a34a6b1e410d1528919c816b60526791c40 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauTrackClassifier.h
@@ -43,12 +43,11 @@ public:
 
   virtual StatusCode initialize() override;
   virtual StatusCode executeTrackClassifier(xAOD::TauJet& pTau, xAOD::TauTrackContainer& tauTrackContainer ) const override;
-  virtual StatusCode finalize() override;
 
 private:
   ToolHandleArray<TrackMVABDT> m_vClassifier;
   std::vector<std::string> m_vClassifierNames;//optional
-
+  
 }; // class TauTrackClassifier
   
 //______________________________________________________________________________
@@ -91,10 +90,8 @@ private:
   
   std::unique_ptr<MVAUtils::BDT> m_rReader; //!
   
-  //  std::map<int, std::string> m_mParsedVarsBDT; //!
   std::map<TString, float*> m_mAvailableVars; //!
   inline float& setVar(const TString& var) { return *(m_mAvailableVars[var]); } //!< not-stateless, many such examples need to be fixed for r22
-  std::vector<float*> m_vars; //!< points to floats in m_mAvailableVars that are used in BDT
 
 }; // class TrackMVABDT
 
diff --git a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
index 290230663bc9c6d2fcb5314086b38eb0804ccdb9..edd7691ba2b9c6f90d7f977c10a426b45d0a4886 100644
--- a/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
+++ b/Reconstruction/tauRecTools/tauRecTools/TauWPDecorator.h
@@ -48,9 +48,6 @@ class TauWPDecorator : public TauRecToolBase {
     /** @brief Executation of this tool */
     virtual StatusCode execute(xAOD::TauJet& pTau) const override;
     
-    /** @brief Finalization of this tool */
-    virtual StatusCode finalize() override;
-
   private:
 
     /** 
diff --git a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py
index 7f8a260eb7572bea85ae45f0acf07a47bafff314..027f7c4515e4d1465e8e5de05e46cf9256bdc7ea 100644
--- a/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py
+++ b/Trigger/TrigAlgorithms/TrigTauRec/python/TrigTauAlgorithmsHolder.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 ################################################################################
 ##
@@ -357,9 +357,6 @@ def getTauSubstructure():
     
     from tauRecTools.tauRecToolsConf import TauSubstructureVariables
     TauSubstructureVariables = TauSubstructureVariables(  name = _name,
-                                                          # parameters for CaloIsoCorrected variable
-                                                          maxPileUpCorrection = 4000., #MeV
-                                                          pileUpAlpha = 1.0,
                                                           VertexCorrection = doVertexCorrection
                                                         )