diff --git a/Reconstruction/DiTauRec/DiTauRec/CellFinder.h b/Reconstruction/DiTauRec/DiTauRec/CellFinder.h
index 5422f0837f15ee42aa7806fddc804bead86b4efc..0c4e5834269d41d21170865ad04806e4d610f167 100644
--- a/Reconstruction/DiTauRec/DiTauRec/CellFinder.h
+++ b/Reconstruction/DiTauRec/DiTauRec/CellFinder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef DITAUREC_CELLFINDER_H
diff --git a/Reconstruction/DiTauRec/DiTauRec/DiTauTrackFinder.h b/Reconstruction/DiTauRec/DiTauRec/DiTauTrackFinder.h
index d7a4df235aed0c7f11e0e7a1fd43780a2299ca9d..bac1539f8ac0e3d5019426ae5d873b9dba2bb9a8 100644
--- a/Reconstruction/DiTauRec/DiTauRec/DiTauTrackFinder.h
+++ b/Reconstruction/DiTauRec/DiTauRec/DiTauTrackFinder.h
@@ -67,7 +67,6 @@ class DiTauTrackFinder : public DiTauToolBase {
   SG::ReadHandleKey<xAOD::TrackParticleContainer> m_TrackParticleContainerName
     { this, "TrackParticleContainer", "InDetTrackParticles", "" };
   ToolHandle<Trk::ITrackSelectorTool> m_TrackSelectorTool;
-  // ToolHandle< Trk::IParticleCaloExtensionTool > m_ParticleCaloExtensionTool;
 
 };
 
diff --git a/Reconstruction/DiTauRec/DiTauRec/SubjetBuilder.h b/Reconstruction/DiTauRec/DiTauRec/SubjetBuilder.h
index 643bc1c0cbf80badfd2243a187da3f43979c7c7b..bf5fd6818014f6a34337b2e8f8f1350e68b18ce0 100644
--- a/Reconstruction/DiTauRec/DiTauRec/SubjetBuilder.h
+++ b/Reconstruction/DiTauRec/DiTauRec/SubjetBuilder.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef DITAUREC_SUBJETBUILDER_H
@@ -33,11 +33,8 @@ class SubjetBuilder : public DiTauToolBase {
  private:
 
   float m_Rsubjet;
-  int m_Nsubjet;
   float m_ptmin;
 
-  // fastjet::Filter m_SubjetFilter;
-
 };
 
 #endif  // DITAUREC_SUBJETBUILDER_H
diff --git a/Reconstruction/DiTauRec/python/DiTauAlgorithmsHolder.py b/Reconstruction/DiTauRec/python/DiTauAlgorithmsHolder.py
index 914480beeed2d0f3eedcb73582ae34746d5ccb8b..00bef1bb361616354a311a3d6ed13ed8a7ed28b5 100644
--- a/Reconstruction/DiTauRec/python/DiTauAlgorithmsHolder.py
+++ b/Reconstruction/DiTauRec/python/DiTauAlgorithmsHolder.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 
 cached_instances = {}
 
@@ -41,7 +41,6 @@ def getSubjetBuilder():
     from DiTauRec.DiTauRecConf import SubjetBuilder
     SubjetBuilder = SubjetBuilder(name=_name,
                                   Rsubjet=0.2,
-                                  Nsubjet=4,
                                   ptminsubjet=10000)
 
     cached_instances[_name] = SubjetBuilder
diff --git a/Reconstruction/DiTauRec/python/DiTauToolsConfig.py b/Reconstruction/DiTauRec/python/DiTauToolsConfig.py
index 573e8023b32cffa936cf54f26e9a2c4e3236cbe5..91bad90ed3c85852c2158a1e68ea7aa433e90da0 100644
--- a/Reconstruction/DiTauRec/python/DiTauToolsConfig.py
+++ b/Reconstruction/DiTauRec/python/DiTauToolsConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -15,7 +15,6 @@ def SubjetBuilderCfg(ConfigFlags, name="DiTauRec_SubjetBuilder", **kwargs):
     acc = ComponentAccumulator()
 
     kwargs.setdefault("Rsubjet", 0.2)
-    kwargs.setdefault("Nsubjet", 4)
     kwargs.setdefault("ptminsubjet", 10000)
 
     acc.setPrivateTools(CompFactory.SubjetBuilder(name, **kwargs))
diff --git a/Reconstruction/DiTauRec/src/CellFinder.cxx b/Reconstruction/DiTauRec/src/CellFinder.cxx
index d89d0bb90f7149c4ac6e35579cfde25b80a33ca7..e49d959b0892cae106b60382806d9a9d6d9e086d 100644
--- a/Reconstruction/DiTauRec/src/CellFinder.cxx
+++ b/Reconstruction/DiTauRec/src/CellFinder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 
@@ -88,11 +88,14 @@ StatusCode CellFinder::execute(DiTauCandidateData * data,
       // register cell hash as already seen
       cellSeen.set(cc->caloDDE()->calo_hash());            
 
+      TLorentzVector temp_cc_p4;
+      temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m());
+
       // check if cell is in one of the subjets cones
-      double dR;
       for (const auto& subjet : vSubjets) {
-	dR = Tau1P3PKineUtils::deltaR(subjet.eta(), subjet.phi_std(), cc->eta(), cc->phi());
-	if (dR < m_Rsubjet) {
+        TLorentzVector temp_sub_p4;
+        temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());        
+	if (temp_cc_p4.DeltaR(temp_sub_p4) < m_Rsubjet) {
 	  subjetCells.push_back(cc);
 	}
       }
diff --git a/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx b/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx
index d999b7b8b468331a1c2a06bba868d048eac8f615..691ffd41f8c87fa290d19beebad680687eaed176 100644
--- a/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx
+++ b/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "DiTauRec/DiTauTrackFinder.h"
@@ -26,13 +26,11 @@ DiTauTrackFinder::DiTauTrackFinder(const std::string& type,
   m_MaxDrJet(1.0),
   m_MaxDrSubjet(0.2),
   m_TrackSelectorTool("")
-  // m_ParticleCaloExtensionTool("")
 {
   declareInterface<DiTauToolBase > (this);
   declareProperty("MaxDrJet", m_MaxDrJet);
   declareProperty("MaxDrSubjet", m_MaxDrSubjet);
   declareProperty("TrackSelectorTool", m_TrackSelectorTool);
-  // declareProperty("ParticleCaloExtensionTool", m_ParticleCaloExtensionTool);
 }
 
 
@@ -86,15 +84,19 @@ StatusCode DiTauTrackFinder::execute(DiTauCandidateData * data,
 
   // drop subjets without good tracks
   std::vector<fastjet::PseudoJet> vSubjets = data->subjets;
-  double nTracks;
-  double dR;
+  int nTracks;
   for (auto subjet_itr = vSubjets.begin(); subjet_itr != vSubjets.end(); ) {
     nTracks = 0;
+
+    TLorentzVector temp_p4;
+    temp_p4.SetPtEtaPhiM(subjet_itr->pt(), subjet_itr->eta(), subjet_itr->phi_std(), subjet_itr->m()); 
+
     for (const auto& track : tauTracks) {
-      dR = Tau1P3PKineUtils::deltaR(subjet_itr->eta(), subjet_itr->phi_std(), track->eta(), track->phi());
-      if (dR < m_MaxDrSubjet) nTracks++;
+      if ( temp_p4.DeltaR(track->p4()) < m_MaxDrSubjet) nTracks++;
     }
+
     ATH_MSG_DEBUG("number of tracks in subjet: "<< nTracks);
+
     if (nTracks == 0) {
       ATH_MSG_DEBUG("number of tracks is zero. Drop subjet");
       subjet_itr = vSubjets.erase(subjet_itr); //point subjet_itr to the next element/end of the vector
@@ -173,21 +175,21 @@ DiTauTrackFinder::DiTauTrackType DiTauTrackFinder::diTauTrackType(const DiTauCan
 
   xAOD::DiTauJet *pDiTau = data->xAODDiTau;
 
-  double dRJet = Tau1P3PKineUtils::deltaR(pDiTau->eta(), pDiTau->phi(), track->eta(), track->phi());
-
   // check if track is outside the jet ditau cone
-  if (dRJet > m_MaxDrJet) return OutsideTrack;
+  if ( pDiTau->p4().DeltaR(track->p4()) > m_MaxDrJet) return OutsideTrack;
     
   // check quality criteria
   bool goodTrack = m_TrackSelectorTool->decision(*track, pVertex);
   if (!goodTrack) return DiTauOtherTrack;
 
   // check if track is inside a subjet
-  double dR = 100;
   std::vector<fastjet::PseudoJet> vSubjets = data->subjets;
   for (const auto &subjet : vSubjets) {
-    dR = Tau1P3PKineUtils::deltaR(subjet.eta(), subjet.phi_std(), track->eta(), track->phi());
-    if (dR < m_MaxDrSubjet)
+
+    TLorentzVector temp_p4;
+    temp_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
+
+    if (temp_p4.DeltaR(track->p4()) < m_MaxDrSubjet)
       return DiTauSubjetTrack;
   }
 
diff --git a/Reconstruction/DiTauRec/src/ElMuFinder.cxx b/Reconstruction/DiTauRec/src/ElMuFinder.cxx
index 62736518873d53bdbc57d7b5a335948093babc29..12b0f11ab83b3181265be77792e21ca79aadb98d 100644
--- a/Reconstruction/DiTauRec/src/ElMuFinder.cxx
+++ b/Reconstruction/DiTauRec/src/ElMuFinder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "DiTauRec/ElMuFinder.h"
@@ -62,7 +62,6 @@ StatusCode ElMuFinder::execute(DiTauCandidateData * data,
   SG::ReadHandle<xAOD::MuonContainer> pMuCont (m_muContName, ctx);
 
   // select electrons
-  float dR;
   data->electrons.clear();
   if (pElCont.isValid()) {
     for (const auto *const el : *pElCont ) {
@@ -77,8 +76,7 @@ StatusCode ElMuFinder::execute(DiTauCandidateData * data,
       ATH_MSG_DEBUG("Electron passes basic kinematic selection");
     
       // electron inside seed jet area?
-      dR = Tau1P3PKineUtils::deltaR(data->seed->eta(), data->seed->phi(), el->eta(), el->phi());
-      if (dR > data->Rjet)
+      if (data->seed->p4().DeltaR(el->p4()) > data->Rjet)
 	continue;
     
       data->electrons.push_back(el);
@@ -99,9 +97,9 @@ StatusCode ElMuFinder::execute(DiTauCandidateData * data,
       if (muonQuality >= m_muQual && std::abs(mu->eta()) >= m_muMaxEta) continue;
     
       // muon inside seed jet area?
-      dR = Tau1P3PKineUtils::deltaR(data->seed->eta(), data->seed->phi(), mu->eta(), mu->phi());
-      if (dR > data->Rjet)
+      if (data->seed->p4().DeltaR(mu->p4())  > data->Rjet)
 	continue;
+
       data->muons.push_back(mu);
     }
     ATH_MSG_DEBUG("Number of good muons found: " << data->muons.size() );
diff --git a/Reconstruction/DiTauRec/src/IDvarCalculator.cxx b/Reconstruction/DiTauRec/src/IDvarCalculator.cxx
index 28292099135f5a45cf9bf0ff1d72f9be9eb0158d..c6e15a414b2ac4c3f8a5964d9e40b00e995dbf9a 100644
--- a/Reconstruction/DiTauRec/src/IDvarCalculator.cxx
+++ b/Reconstruction/DiTauRec/src/IDvarCalculator.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "DiTauRec/IDVarCalculator.h"
@@ -79,22 +79,25 @@ StatusCode IDVarCalculator::execute(DiTauCandidateData * data,
     return StatusCode::SUCCESS;
   }
 
-  float Rcore = data->Rcore;
-  float Rsubjet = data->Rsubjet;
   float f_core;
-  float dR;
   for (unsigned int i = 0; i < vSubjets.size(); i++) {
     const fastjet::PseudoJet& subjet = vSubjets.at(i);
     float ptAll = 0.;
     float ptCore = 0.;
 
+    TLorentzVector temp_sub_p4;
+    temp_sub_p4.SetPtEtaPhiM(subjet.pt(), subjet.eta(), subjet.phi_std(), subjet.m());
+
     for (const auto& cc : vSubjetCells) {
-      dR = Tau1P3PKineUtils::deltaR(subjet.eta(), subjet.phi_std(), cc->eta(), cc->phi());
+     
+      TLorentzVector temp_cc_p4;
+      temp_cc_p4.SetPtEtaPhiM(cc->pt(), cc->eta(), cc->phi(), cc->m()); 
 
-      if (dR < Rsubjet) {
+      if (temp_cc_p4.DeltaR(temp_sub_p4) < data->Rsubjet) {
 	ptAll += cc->pt();
       }
-      if (dR < Rcore) {
+
+      if (temp_cc_p4.DeltaR(temp_sub_p4) < data->Rcore) {
 	ptCore += cc->pt();
       }
     }
@@ -104,6 +107,7 @@ StatusCode IDVarCalculator::execute(DiTauCandidateData * data,
       f_core = ptCore/ptAll;
     else 
       f_core = -999.;
+
     ATH_MSG_DEBUG("subjet "<< i << ": f_core=" << f_core);
     pDiTau->setfCore(i, f_core);
   }
diff --git a/Reconstruction/DiTauRec/src/SubjetBuilder.cxx b/Reconstruction/DiTauRec/src/SubjetBuilder.cxx
index 69de4de440018307fa9faccbcf4b3c2317a36ea4..ac86a1e94bd5bbc1210537f2a672bc5286084d39 100644
--- a/Reconstruction/DiTauRec/src/SubjetBuilder.cxx
+++ b/Reconstruction/DiTauRec/src/SubjetBuilder.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "DiTauRec/SubjetBuilder.h"
@@ -25,12 +25,10 @@ SubjetBuilder::SubjetBuilder(const std::string& type,
 			     const IInterface * parent) :
   DiTauToolBase(type, name, parent),
   m_Rsubjet(0.2),
-  m_Nsubjet(4),
   m_ptmin(10000)
 {
   declareInterface<DiTauToolBase > (this);
   declareProperty("Rsubjet", m_Rsubjet);
-  declareProperty("Nsubjet", m_Nsubjet);
   declareProperty("ptminsubjet", m_ptmin);
 }
 
@@ -40,8 +38,6 @@ SubjetBuilder::~SubjetBuilder() = default;
 
 StatusCode SubjetBuilder::initialize() {
 
-  // m_SubjetFilter = fastjet::Filter(m_Rsubjet, fastjet::SelectorNHardest(m_Nsubjet));
-
   return StatusCode::SUCCESS;
 }
 
@@ -78,12 +74,10 @@ StatusCode SubjetBuilder::execute(DiTauCandidateData * data,
   std::vector<PseudoJet> vpjClusters;
 
   for (const auto *cl: vConst) {
-    double pt = cl->pt();
-    double px = pt*std::cos(cl->phi());  
-    double py = pt*std::sin(cl->phi());  
-    double pz = pt*std::sinh(cl->eta()); 
-    double e  = std::sqrt(px*px + py*py + pz*pz);
-    PseudoJet c( px, py, pz, e);
+
+    TLorentzVector temp_p4;
+    temp_p4.SetPtEtaPhiM(cl->pt(), cl->eta(), cl->phi(), cl->m());
+    PseudoJet c( temp_p4.Px(), temp_p4.Py(), temp_p4.Pz(), temp_p4.E());
 
     vpjClusters.push_back(c);
   }