diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/CMakeLists.txt b/Trigger/TrigAlgorithms/TrigMuonEF/CMakeLists.txt index cece37f6e51360d916e0c84e45cc2cd166e4b097..ce28ad69385ca20e5c75a007c4ebc20f13fd074a 100644 --- a/Trigger/TrigAlgorithms/TrigMuonEF/CMakeLists.txt +++ b/Trigger/TrigAlgorithms/TrigMuonEF/CMakeLists.txt @@ -33,7 +33,8 @@ atlas_depends_on_subdirs( PUBLIC MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonRIO_OnTrack MuonSpectrometer/MuonReconstruction/MuonRecEvent/MuonSegment MuonSpectrometer/MuonReconstruction/MuonRecTools/MuonRecToolInterfaces - MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MuonSegmentCombinerToolInterfaces + MuonSpectrometer/MuonReconstruction/MuonSegmentCombiners/MuonSegmentCombinerTools/MuonSegmentCombinerToolInterfaces + MuonSpectrometer/MuonReconstruction/MuonSegmentMakers/MuonSegmentMakerTools/MuonSegmentMakerToolInterfaces PhysicsAnalysis/AnalysisCommon/PATCore Reconstruction/MuonIdentification/MuidInterfaces Reconstruction/MuonIdentification/MuonCombinedEvent diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py index e5aff6a9125d6cbe00a0007a8535e6eb46c36701..afc3d2bf378b114a56f9c86928019f2f07180e62 100755 --- a/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py +++ b/Trigger/TrigAlgorithms/TrigMuonEF/python/TrigMuonEFConfig.py @@ -520,7 +520,7 @@ class TrigMuonEFStandaloneTrackToolConfig (TrigMuonEFStandaloneTrackTool): RpcRdoToRpcPrepDataTool = Muon__RpcRdoToPrepDataTool(name = "TrigEFRpcRdoToPrepDataTool") if not rec.doRDOTrigger and rec.doESD: MdtRdoToMdtPrepDataTool.OutputCollection = "TrigMDT_DriftCircles" - CscRdoToCscPrepDataTool.OutputCollection = "TrigCSC_Clusters" + CscRdoToCscPrepDataTool.OutputCollection = "TrigCSC_Measurements" TgcRdoToTgcPrepDataTool.OutputCollection = "TrigTGC_Measurements" TgcRdoToTgcPrepDataTool.OutputCoinCollection = "TrigerT1CoinDataCollection" RpcRdoToRpcPrepDataTool.TriggerOutputCollection="TrigRPC_Measurements" @@ -528,7 +528,7 @@ class TrigMuonEFStandaloneTrackToolConfig (TrigMuonEFStandaloneTrackTool): RpcRdoToRpcPrepDataTool.InputCollection="TrigRPC_triggerHits" else: MdtRdoToMdtPrepDataTool.OutputCollection = "MDT_DriftCircles" - CscRdoToCscPrepDataTool.OutputCollection = "CSC_Clusters" + CscRdoToCscPrepDataTool.OutputCollection = "CSC_Measurements" TgcRdoToTgcPrepDataTool.OutputCollection = "TGC_Measurements" TgcRdoToTgcPrepDataTool.OutputCoinCollection = "TrigT1CoinDataCollection" RpcRdoToRpcPrepDataTool.TriggerOutputCollection="RPC_Measurements" @@ -540,7 +540,8 @@ class TrigMuonEFStandaloneTrackToolConfig (TrigMuonEFStandaloneTrackTool): #CSC ToolSvc += CscRdoToCscPrepDataTool self.CscPrepDataProvider=CscRdoToCscPrepDataTool - self.CscPrepDataContainer=CscRdoToCscPrepDataTool.OutputCollection + #We use the clusters not the PRD hits directly for CSCs + self.CscPrepDataContainer="CSC_Clusters" #TGC ToolSvc += TgcRdoToTgcPrepDataTool self.TgcPrepDataProvider=TgcRdoToTgcPrepDataTool diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.cxx b/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.cxx index bbcfff28451bb0d6ee2783b25619fedd16919439..dc07c067007e7c0d3a8d50392f78aaa43fdfd7da 100644 --- a/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.cxx +++ b/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration */ #include <algorithm> // for find @@ -141,7 +141,8 @@ TrigMuonEFStandaloneTrackTool::TrigMuonEFStandaloneTrackTool(const std::string& m_tgcKeyNextBC("TGC_MeasurementsNextBC"), m_cscKey("CSC_Clusters"), m_mdtKey("MDT_DriftCircles"), - m_ignoreCSC(true) + m_ignoreCSC(true), + m_segmentOverlapRemovalTool("Muon::MuonSegmentOverlapRemovalTool/MuonSegmentOverlapRemovalTool") { m_hashlist.reserve(4); @@ -196,6 +197,8 @@ TrigMuonEFStandaloneTrackTool::TrigMuonEFStandaloneTrackTool(const std::string& declareProperty("CscPrepDataContainer", m_cscKey); declareProperty("IgnoreMisalginedCSCs", m_ignoreCSC); + declareProperty("SegmentOverlapRemovalTool", m_segmentOverlapRemovalTool, "tool to removal overlaps in segment combinations" ); + clearRoiCache(); } @@ -492,6 +495,9 @@ StatusCode TrigMuonEFStandaloneTrackTool::initialize() return StatusCode::FAILURE; } + //segment overlap removal + ATH_CHECK( m_segmentOverlapRemovalTool.retrieve() ); + return StatusCode::SUCCESS; } @@ -1601,6 +1607,9 @@ if (m_useMdtData>0) { ATH_MSG_DEBUG("Segment finder return nothing: stop here to process the RoI"); return HLT::MISSING_FEATURE; } + + //remove overlapping segments + m_segmentOverlapRemovalTool->removeDuplicates(segColl.get()); /// SegmentCache object takes pointers to be given to m_patternCombiColl and segments ATH_MSG_DEBUG("SegmentCache object taking pointers"); diff --git a/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.h b/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.h index fc1145e7793ce37baf55290369fe35ae8507b142..3d51cf88e3b8daeaae41991a4298a766d5f0bc3a 100644 --- a/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.h +++ b/Trigger/TrigAlgorithms/TrigMuonEF/src/TrigMuonEFStandaloneTrackTool.h @@ -37,6 +37,7 @@ #include "MuonIdHelpers/MuonIdHelperTool.h" #include <fstream> +#include "MuonSegmentMakerToolInterfaces/IMuonSegmentOverlapRemovalTool.h" #include "CxxUtils/checker_macros.h" ATLAS_NO_CHECK_FILE_THREAD_SAFETY; // legacy trigger code @@ -380,7 +381,7 @@ class TrigMuonEFStandaloneTrackTool : public AthAlgTool, SG::ReadHandleKey <Muon::MdtPrepDataContainer> m_mdtKey; bool m_ignoreCSC; - + ToolHandle<Muon::IMuonSegmentOverlapRemovalTool> m_segmentOverlapRemovalTool; };