diff --git a/Reconstruction/tauRecTools/Root/HelperFunctions.cxx b/Reconstruction/tauRecTools/Root/HelperFunctions.cxx
index b77abacca7598aca734a4b9ec6bd91a5ba596e53..d364dd756bda011e81b046b86ff38845fd308c2e 100644
--- a/Reconstruction/tauRecTools/Root/HelperFunctions.cxx
+++ b/Reconstruction/tauRecTools/Root/HelperFunctions.cxx
@@ -148,6 +148,29 @@ std::unique_ptr<MVAUtils::BDT> tauRecTools::configureMVABDT(std::vector<TString>
 
 
 
+TLorentzVector tauRecTools::GetConstituentP4(const xAOD::JetConstituent& constituent) {
+  using namespace tauRecTools::msgHelperFunction;
+
+  TLorentzVector constituentP4;
+
+  if( constituent->type() == xAOD::Type::CaloCluster ) {
+    const xAOD::CaloCluster* cluster = static_cast<const xAOD::CaloCluster*>( constituent->rawConstituent() );
+    constituentP4 = cluster->p4();
+  }
+  else if ( constituent->type() == xAOD::Type::ParticleFlow ) {
+    const xAOD::PFO* pfo = static_cast<const xAOD::PFO*>( constituent->rawConstituent() );
+    constituentP4 = pfo->p4();
+  }
+  else {
+    ANA_MSG_ERROR("GetJetConstCluster: Seed jet constituent type not supported!");
+    constituentP4.SetPtEtaPhiE(constituent.pt(), constituent.eta(), constituent.phi(), constituent.e());
+  }
+
+  return constituentP4;
+}
+
+
+
 const StatusCode tauRecTools::GetJetClusterList(const xAOD::Jet* jet, std::vector<const xAOD::CaloCluster*> &clusterList, bool useSubtractedCluster) {
   using namespace tauRecTools::msgHelperFunction;
 
diff --git a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
index 582a0ab44e5fba1285db9ca7a9d68ee8c2c00e3d..ad87dbd4f4fd27d337ee6a469733f50ffae35fea 100644
--- a/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
+++ b/Reconstruction/tauRecTools/src/TauAxisSetter.cxx
@@ -41,8 +41,7 @@ StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau) const {
   
   xAOD::JetConstituentVector constituents = jetSeed->getConstituents();
   for (const xAOD::JetConstituent* constituent : constituents) {
-    TLorentzVector constituentP4;
-    constituentP4.SetPtEtaPhiE(constituent->pt(), constituent->eta(), constituent->phi(), constituent->e());
+    TLorentzVector constituentP4 = tauRecTools::GetConstituentP4(*constituent);
     baryCenter += constituentP4;
   }
   
@@ -53,8 +52,7 @@ StatusCode TauAxisSetter::execute(xAOD::TauJet& pTau) const {
   int nConstituents = 0;
 
   for (const xAOD::JetConstituent* constituent : constituents) {
-    TLorentzVector constituentP4;
-    constituentP4.SetPtEtaPhiE(constituent->pt(), constituent->eta(), constituent->phi(), constituent->e());
+    TLorentzVector constituentP4 = tauRecTools::GetConstituentP4(*constituent);
     
     double dR = baryCenter.DeltaR(constituentP4);
     if (dR > m_clusterCone) continue;
diff --git a/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h b/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h
index 67abf144f3896d46299a44c4101349e732915d8f..2812210037140d55a8fefd513055d71576211da8 100644
--- a/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h
+++ b/Reconstruction/tauRecTools/tauRecTools/HelperFunctions.h
@@ -24,6 +24,8 @@ namespace tauRecTools
 {
   ANA_MSG_HEADER(msgHelperFunction)
 
+  TLorentzVector GetConstituentP4(const xAOD::JetConstituent& constituent);
+
   const StatusCode GetJetClusterList(const xAOD::Jet* jet, std::vector<const xAOD::CaloCluster*> &clusterList, bool useSubtractedCluster);
 
   xAOD::TauTrack::TrackFlagType isolateClassifiedBits(xAOD::TauTrack::TrackFlagType flag);