diff --git a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx index 2815d4a3cbf421569e4942fb63be005211488031..971dc6536cde0d60d934ffa9205e4abb64dff852 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedAlgs/src/MuonCombinedAlg.cxx @@ -63,6 +63,8 @@ StatusCode MuonCombinedAlg::execute() //note that STACO does not create new Trk::Tracks so it doesn't need collections here m_muonCombinedTool->combine(*muonCandidateCollection,*inDetCandidateCollection,maps,muidCombTracks.ptr(),muidMETracks.ptr()); + m_muonCombinedTool->cleanUp(); + return StatusCode::SUCCESS; } diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx index c9b468236d84bcce0a2c680536366f5f9d97f7c2..f32a1bfcb7d6d79bc9e39a2dcd53b5103fda6e36 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.cxx @@ -790,6 +790,10 @@ namespace MuonCombined { return false; } } + + void MuonCombinedFitTagTool::cleanUp() const { + m_trackBuilder->cleanUp(); + } } // end of namespace diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h index 17cb7d85fd74bf5454564d01171e30b96316fdb6..06f8e31120a000e422753c9fc9927afa3481d677 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedFitTagTool.h @@ -47,6 +47,8 @@ namespace MuonCombined { void combine( const MuonCandidate& muonCandidate, const std::vector<const InDetCandidate*>& indetCandidates, InDetCandidateToTagMap& tagMap, TrackCollection* combTracks, TrackCollection* METracks) const override; + void cleanUp() const override; + private: Trk::Track* buildCombinedTrack(const Trk::Track& indetTrack, diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx index 33496cb470accda040a79030b356d42385c340c2..825344385060eb7c901ed81596674c6babdd90a1 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.cxx @@ -171,4 +171,10 @@ namespace MuonCombined { covCB ) ); } + + void MuonCombinedStacoTagTool::cleanUp() const { + //Nothing to clean up here .. hopefully + return; + } + } // end of namespace diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h index 4ad43e4796ec1fa73e4ae6114fc4df36b9b2b35f..b8737f738a3cb6da98946cb456010276ff8ff745 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedStacoTagTool.h @@ -39,6 +39,8 @@ namespace MuonCombined { void combine( const MuonCandidate& muonCandidate, const std::vector<const InDetCandidate*>& indetCandidates, InDetCandidateToTagMap& tagMap, TrackCollection* combTracks, TrackCollection* METracks) const override; + void cleanUp() const override; + private: std::unique_ptr<const Trk::Perigee> theCombIdMu( const Trk::Perigee& indetPerigee, const Trk::Perigee& extrPerigee, double& chi2 ) const; diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx index 64ea1e1a46df4fae3f880539a9637da5043d02b1..fe0554923c3c4391418d7824ed01f47638b54cfc 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.cxx @@ -111,4 +111,10 @@ namespace MuonCombined { } } + void MuonCombinedTool::cleanUp() const { + for(auto& tool : m_muonCombinedTagTools){ + tool->cleanUp(); + } + } + } // end of namespace diff --git a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h index b9a189a20e7c0abe2574c520690ecb33469836e1..848754504049281078c163bfe77bd90ab8f28a82 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h +++ b/Reconstruction/MuonIdentification/MuonCombinedBaseTools/src/MuonCombinedTool.h @@ -30,6 +30,8 @@ namespace MuonCombined { void combine(const MuonCandidateCollection& muonCandidates,const InDetCandidateCollection& inDetCandidates, std::vector<InDetCandidateToTagMap*> tagMaps, TrackCollection* combinedTracks, TrackCollection* METracks) const; + void cleanUp() const override; + private: void associate( const MuonCandidate& muonCandidate, const InDetCandidateCollection& inDetCandidates, diff --git a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h index bdb76be9f9b607de8327eca2f60004422c2e6cf3..9e4cf30fb777fc142dc180edb3a4897baa911bae 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h +++ b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTagTool.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ /////////////////////////////////////////////////////////////////// @@ -35,6 +35,8 @@ namespace MuonCombined { virtual void combine( const MuonCandidate& muonCandidate, const std::vector<const InDetCandidate*>& indetCandidates, InDetCandidateToTagMap& tagMap, TrackCollection* combTracks, TrackCollection* METracks) const = 0; + + virtual void cleanUp() const = 0; }; inline const InterfaceID& IMuonCombinedTagTool::interfaceID() diff --git a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h index 23b1fcd5313acd58e87c125205f058de65e3a3a9..0672d5d477864bf7759240a174a034fe2fb3ad55 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h +++ b/Reconstruction/MuonIdentification/MuonCombinedToolInterfaces/MuonCombinedToolInterfaces/IMuonCombinedTool.h @@ -34,6 +34,8 @@ namespace MuonCombined { virtual void combine( const MuonCandidateCollection& muonCandidates, const InDetCandidateCollection& inDetCandidates, std::vector<InDetCandidateToTagMap*> tagMaps, TrackCollection* combTracks, TrackCollection* METracks) const = 0; + virtual void cleanUp() const = 0; + }; inline const InterfaceID& IMuonCombinedTool::interfaceID()