From ade94a7874bb46b0fe678b7d8110f9cc44648d72 Mon Sep 17 00:00:00 2001 From: Marcin Wandas <marcin.piotr.wandas@cern.ch> Date: Mon, 27 Apr 2020 23:59:53 +0200 Subject: [PATCH] Make executeVertexFinder() const in TauVertexFinder --- .../tauRecTools/src/TauVertexFinder.cxx | 18 +++++++------ .../tauRecTools/src/TauVertexFinder.h | 27 ++++++++++++------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.cxx b/Reconstruction/tauRecTools/src/TauVertexFinder.cxx index d3869a9dc67c..e50ff0a9793e 100644 --- a/Reconstruction/tauRecTools/src/TauVertexFinder.cxx +++ b/Reconstruction/tauRecTools/src/TauVertexFinder.cxx @@ -43,7 +43,7 @@ StatusCode TauVertexFinder::finalize() { // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * StatusCode TauVertexFinder::executeVertexFinder(xAOD::TauJet& pTau, const xAOD::VertexContainer* vertexContainer, - const xAOD::TrackParticleContainer* trackContainer) { + const xAOD::TrackParticleContainer* trackContainer) const { const xAOD::VertexContainer * vxContainer = 0; @@ -117,13 +117,13 @@ ElementLink<xAOD::VertexContainer> TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau, const xAOD::VertexContainer& vertices, const xAOD::TrackParticleContainer * trackContainer, - float& maxJVF) + float& maxJVF) const { const xAOD::Jet* pJetSeed = (*pTau.jetLink()); std::vector<const xAOD::TrackParticle*> tracksForTJVA; const double dDeltaRMax(0.2); - m_matchedVertexOnline.clear(); + 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; @@ -180,7 +180,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau, ATH_MSG_DEBUG("Creating online TJVA"); ATH_MSG_DEBUG("Building online track-vertex association trk size="<< tracksForTJVA.size() << " vtx size="<< vertices.size()); - m_matchedVertexOnline.resize(tracksForTJVA.size(), 0 ); + matchedVertexOnline.resize(tracksForTJVA.size(), 0 ); for (size_t iTrack = 0; iTrack < tracksForTJVA.size(); ++iTrack) { @@ -221,7 +221,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau, // If we matched a vertex, then associate that vertex to the track if (foundMatch) - m_matchedVertexOnline[ iTrack ] = vertices.at(matchedIndex); + matchedVertexOnline[ iTrack ] = vertices.at(matchedIndex); } } else { @@ -243,7 +243,7 @@ TauVertexFinder::getPV_TJVA(const xAOD::TauJet& pTau, for (const xAOD::Vertex* vert : vertices) { float jvf = 0; if(!inTrigger()) jvf = getJetVertexFraction(vert,tracksForTJVA,tva); - else jvf = getJetVertexFraction(vert,tracksForTJVA); + else jvf = getJetVertexFraction(vert,tracksForTJVA,matchedVertexOnline); if (jvf > maxJVF) { maxJVF = jvf; max_vert = vert; @@ -278,13 +278,15 @@ 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) const +float TauVertexFinder::getJetVertexFraction(const xAOD::Vertex* vertex, + const std::vector<const xAOD::TrackParticle*>& tracks, + const std::vector<const xAOD::Vertex*>& matchedVertexOnline) const { float sumTrackPV = 0; float sumTrackAll = 0; for (size_t iTrack = 0; iTrack < tracks.size(); ++iTrack) { - const xAOD::Vertex* ptvtx = m_matchedVertexOnline[iTrack]; + const xAOD::Vertex* ptvtx = matchedVertexOnline[iTrack]; if (ptvtx != nullptr) { // C++11 feature if (ptvtx->index() == vertex->index()) sumTrackPV += tracks.at(iTrack)->pt(); } diff --git a/Reconstruction/tauRecTools/src/TauVertexFinder.h b/Reconstruction/tauRecTools/src/TauVertexFinder.h index 2e773c2fcd20..3243fece37aa 100644 --- a/Reconstruction/tauRecTools/src/TauVertexFinder.h +++ b/Reconstruction/tauRecTools/src/TauVertexFinder.h @@ -39,22 +39,32 @@ public: //------------------------------------------------------------- //! Algorithm functions //------------------------------------------------------------- - virtual StatusCode initialize() override; - virtual StatusCode executeVertexFinder(xAOD::TauJet& pTau, - const xAOD::VertexContainer* vertexContainer = nullptr, - const xAOD::TrackParticleContainer* trackContainer = nullptr) override; - virtual StatusCode finalize() override; + StatusCode initialize() override; + StatusCode executeVertexFinder(xAOD::TauJet& pTau, + const xAOD::VertexContainer* vertexContainer = nullptr, + const xAOD::TrackParticleContainer* trackContainer = nullptr) override + { + return static_cast<const TauVertexFinder*>(this)->executeVertexFinder(pTau, vertexContainer, trackContainer); + } + + StatusCode executeVertexFinder(xAOD::TauJet& pTau, + const xAOD::VertexContainer* vertexContainer = nullptr, + const xAOD::TrackParticleContainer* trackContainer = nullptr) const; + + StatusCode finalize() override; private: ElementLink<xAOD::VertexContainer> getPV_TJVA(const xAOD::TauJet& tauJet, const xAOD::VertexContainer& vertices, const xAOD::TrackParticleContainer* trackContainer, - float& maxJVF); + float& maxJVF) const; float getJetVertexFraction(const xAOD::Vertex* vertex, const std::vector<const xAOD::TrackParticle*>& tracks, const jet::TrackVertexAssociation* tva) const; // for online ATR-15665 - float getJetVertexFraction(const xAOD::Vertex* vertex, const std::vector<const xAOD::TrackParticle*>& tracks) const; + float getJetVertexFraction(const xAOD::Vertex* vertex, + const std::vector<const xAOD::TrackParticle*>& tracks, + const std::vector<const xAOD::Vertex*>& matchedVertexOnline) const; private: @@ -69,9 +79,6 @@ private: SG::ReadHandleKey<xAOD::VertexContainer> m_vertexInputContainer{this,"Key_vertexInputContainer", "PrimaryVertices", "input vertex container key"}; SG::ReadHandleKey<xAOD::TrackParticleContainer> m_trackPartInputContainer{this,"Key_trackPartInputContainer", "InDetTrackParticles", "input track particle container key"}; SG::ReadHandleKey<jet::TrackVertexAssociation> m_jetTrackVtxAssoc{this, "Key_JetTrackVtxAssoc_forTaus", "JetTrackVtxAssoc_forTaus", "input TVA for taus"}; - - std::vector<const xAOD::Vertex*> m_matchedVertexOnline; - }; #endif // not TAUREC_TAUVERTEXFINDER_H -- GitLab