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);