From 4757563b96081e7c0eac955cb70d2948b05ecd02 Mon Sep 17 00:00:00 2001 From: abarton <Adam.Edward.Barton@cern.ch> Date: Fri, 11 Sep 2020 17:08:11 +0100 Subject: [PATCH] Use vector moving in BPhysHelper --- Event/xAOD/xAODBPhys/Root/BPhysHelper.cxx | 35 +++++++++++-------- Event/xAOD/xAODBPhys/Root/BPhysHypoHelper.cxx | 4 +-- Event/xAOD/xAODBPhys/xAODBPhys/BPhysHelper.h | 8 ++--- .../xAODBPhys/xAODBPhys/BPhysHypoHelper.h | 10 ++---- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/Event/xAOD/xAODBPhys/Root/BPhysHelper.cxx b/Event/xAOD/xAODBPhys/Root/BPhysHelper.cxx index 68ea9f2a5bfb..819060d7ed7e 100644 --- a/Event/xAOD/xAODBPhys/Root/BPhysHelper.cxx +++ b/Event/xAOD/xAODBPhys/Root/BPhysHelper.cxx @@ -283,9 +283,9 @@ float xAOD::BPhysHelper::refTrkCharge(const size_t index) const } /*****************************************************************************/ -bool xAOD::BPhysHelper::setRefTrks(const std::vector<float>& px, - const std::vector<float>& py, - const std::vector<float>& pz) +bool xAOD::BPhysHelper::setRefTrks(std::vector<float> px, + std::vector<float> py, + std::vector<float> pz) { // sanity check: if(px.size()!=py.size() || px.size()!=pz.size()) @@ -301,9 +301,9 @@ bool xAOD::BPhysHelper::setRefTrks(const std::vector<float>& px, static const SG::AuxElement::Decorator< std::vector<float> > refTrackPzDeco("RefTrackPz"); // store the elements: - refTrackPxDeco(*m_b) = px; - refTrackPyDeco(*m_b) = py; - refTrackPzDeco(*m_b) = pz; + refTrackPxDeco(*m_b) = std::move(px); + refTrackPyDeco(*m_b) = std::move(py); + refTrackPzDeco(*m_b) = std::move(pz); return true; } @@ -319,7 +319,9 @@ bool xAOD::BPhysHelper::setRefTrks(const std::vector<TVector3>& refTrks) std::vector<float> px; std::vector<float> py; std::vector<float> pz; - + px.reserve(refTrks.size()); + py.reserve(refTrks.size()); + pz.reserve(refTrks.size()); // loop over refitted track momenta and store the components std::vector<TVector3>::const_iterator refTrksItr = refTrks.begin(); for(; refTrksItr!=refTrks.end(); ++refTrksItr) { @@ -329,7 +331,7 @@ bool xAOD::BPhysHelper::setRefTrks(const std::vector<TVector3>& refTrks) } // call overloaded method: - return setRefTrks(px,py,pz); + return setRefTrks(std::move(px),std::move(py),std::move(pz)); } @@ -342,9 +344,12 @@ bool xAOD::BPhysHelper::setRefTrks() std::vector<float> px; std::vector<float> py; std::vector<float> pz; - + const auto N = vtx()->vxTrackAtVertex().size(); + px.reserve(N); + py.reserve(N); + pz.reserve(N); // loop over refitted tracks at vertex - for(uint i=0; i<vtx()->vxTrackAtVertex().size(); ++i) { + for(uint i=0; i<N; ++i) { const Trk::TrackParameters* aPerigee = vtx()->vxTrackAtVertex()[i].perigeeAtVertex(); //sanity check if(!aPerigee) @@ -357,7 +362,7 @@ bool xAOD::BPhysHelper::setRefTrks() } // store as augmentation: - setRefTrks(px, py, pz); + setRefTrks(std::move(px), std::move(py), std::move(pz)); // all OK return true; @@ -506,7 +511,7 @@ bool xAOD::BPhysHelper::setMuons(const std::vector<const xAOD::Muon*>& muons, } // end of loop over muons // all OK: store muon links in the aux store - muonLinksDecor(*m_b) = muonLinks; + muonLinksDecor(*m_b) = std::move(muonLinks); return true; @@ -586,7 +591,7 @@ bool xAOD::BPhysHelper::setElectrons(const std::vector<const xAOD::Electron*>& e } // end of loop over electrons // all OK: store electron links in the aux store - electronLinksDecor(*m_b) = electronLinks; + electronLinksDecor(*m_b) = std::move(electronLinks); return true; @@ -668,7 +673,7 @@ bool xAOD::BPhysHelper::setPrecedingVertices(const std::vector<const xAOD::Verte } // end of loop over preceding vertices // all OK: store preceding vertex links in the aux store - precedingVertexLinksDecor(*m_b) = precedingVertexLinks; + precedingVertexLinksDecor(*m_b) = std::move(precedingVertexLinks); return true; @@ -749,7 +754,7 @@ bool xAOD::BPhysHelper::setCascadeVertices(const std::vector<const xAOD::Vertex* } // end of loop over cascade vertices // all OK: store cascade vertex links in the aux store - cascadeVertexLinksDecor(*m_b) = cascadeVertexLinks; + cascadeVertexLinksDecor(*m_b) = std::move(cascadeVertexLinks); return true; diff --git a/Event/xAOD/xAODBPhys/Root/BPhysHypoHelper.cxx b/Event/xAOD/xAODBPhys/Root/BPhysHypoHelper.cxx index 932a9739f2ed..717fefd6e284 100644 --- a/Event/xAOD/xAODBPhys/Root/BPhysHypoHelper.cxx +++ b/Event/xAOD/xAODBPhys/Root/BPhysHypoHelper.cxx @@ -36,12 +36,12 @@ /** @} */ /*****************************************************************************/ -float xAOD::BPhysHypoHelper::mass() +float xAOD::BPhysHypoHelper::mass() const { GET_FLOAT( m_hypo+"_mass" ); } /*****************************************************************************/ -float xAOD::BPhysHypoHelper::massErr() +float xAOD::BPhysHypoHelper::massErr() const { GET_FLOAT( m_hypo+"_massErr" ); } diff --git a/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHelper.h b/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHelper.h index a301c6a5818b..d568e3e552b2 100644 --- a/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHelper.h +++ b/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHelper.h @@ -68,9 +68,9 @@ /** Base class for the B-physcis xAOD helpers */ namespace xAOD { - class BPhysHelper { + public: /************************************************************************/ @@ -232,9 +232,9 @@ namespace xAOD { * @returns: true on success */ - bool setRefTrks(const std::vector<float>& px, - const std::vector<float>& py, - const std::vector<float>& pz); + bool setRefTrks(std::vector<float> px, + std::vector<float> py, + std::vector<float> pz); /** Sets refitted track momenta * @param[in] refTrks std::vector of refitted momenta as TVector3 diff --git a/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHypoHelper.h b/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHypoHelper.h index 87a8dc1d9537..b6d120ce6401 100644 --- a/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHypoHelper.h +++ b/Event/xAOD/xAODBPhys/xAODBPhys/BPhysHypoHelper.h @@ -64,10 +64,6 @@ #include "BPhysHelper.h" -#include "TVector3.h" -#include "TLorentzVector.h" -#include "TMatrixTSym.h" - #include <assert.h> @@ -87,7 +83,7 @@ namespace xAOD { * @param[in] hypo Name of the hypothesis * @param[in] b Pointer to the xAOD::Vertex */ - BPhysHypoHelper(const std::string hypo, const xAOD::Vertex* b) : + BPhysHypoHelper(const std::string &hypo, const xAOD::Vertex* b) : BPhysHelper(b), m_hypo(hypo) { @@ -104,8 +100,8 @@ namespace xAOD { * @returns: mass or error, -9999999. in case the augmentation doesn't exist */ - float mass(); //!< invariant mass - float massErr(); //!< invariant mass error + float mass() const; //!< invariant mass + float massErr() const; //!< invariant mass error /** Set given invariant mass and its error * -- GitLab