diff --git a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py index 80b32b8e25ed33b206d382cf4d32b6e776a1c002..e15f2c30603eb8bf36c0a06cb4971e8dba704aae 100644 --- a/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py +++ b/InnerDetector/InDetMonitoring/SCT_Monitoring/python/SCTLorentzMonAlg.py @@ -1,5 +1,5 @@ # -# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration # '''@file SCTLorentzMonAlg.py @@ -7,6 +7,7 @@ @date 2019-04-02 @brief Based on AthenaMonitoring/ExampleMonitorAlgorithm.py ''' +from InDetConfig import TrackingCommonConfig def SCTLorentzMonAlgConfig(inputFlags): @@ -29,7 +30,9 @@ def SCTLorentzMonAlgConfig(inputFlags): # base class configuration following the inputFlags. The returned object # is the algorithm. from AthenaConfiguration.ComponentFactory import CompFactory - myMonAlg = helper.addAlgorithm(CompFactory.SCTLorentzMonAlg, 'SCTLorentzMonAlg') + myMonAlg = helper.addAlgorithm(CompFactory.SCTLorentzMonAlg, + 'SCTLorentzMonAlg', + AssociationTool = result.popToolsAndMerge(TrackingCommonConfig.InDetPRDtoTrackMapToolGangedPixelsCfg(inputFlags)) ) # # If for some really obscure reason you need to instantiate an algorithm # # yourself, the AddAlgorithm method will still configure the base diff --git a/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.cxx b/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.cxx index 305d9e7a5a5296b2ceb6bd07498e3547af1fa0d4..39b69ef465fb8eb89c95d47314142357db5f8ce6 100644 --- a/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.cxx +++ b/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #include "SCTLorentzMonAlg.h" @@ -10,6 +10,7 @@ #include "InDetPrepRawData/SiCluster.h" #include "InDetRIO_OnTrack/SiClusterOnTrack.h" #include "TrkTrackSummary/TrackSummary.h" +#include "TrkEventUtils/PRDtoTrackMap.h" #include <cmath> #include <memory> @@ -24,12 +25,7 @@ StatusCode SCTLorentzMonAlg::initialize() { ATH_CHECK(m_trackSummaryTool.retrieve()); ATH_CHECK(m_tracksName.initialize()); ATH_CHECK(m_SCTDetEleCollKey.initialize()); - - if (m_rejectSharedHits) { - ATH_CHECK(m_assoTool.retrieve()); - } else { - m_assoTool.disable(); - } + ATH_CHECK(m_assoTool.retrieve(DisableTool{!m_rejectSharedHits} )); return AthMonitorAlgorithm::initialize(); } @@ -72,9 +68,12 @@ StatusCode SCTLorentzMonAlg::fillHistograms(const EventContext& ctx) const { } // Prepare AssociationTool - Trk::IPRD_AssociationTool::Maps maps; - for (const Trk::Track* track : *tracks) { - ATH_CHECK(m_assoTool->addPRDs(maps, *track)); + std::unique_ptr<Trk::PRDtoTrackMap> prd_to_track_map; + if (m_rejectSharedHits) { + prd_to_track_map = m_assoTool->createPRDtoTrackMap(); + for (const Trk::Track* track : *tracks) { + ATH_CHECK( m_assoTool->addPRDs(*prd_to_track_map,*track) ); + } } for (const Trk::Track* track: *tracks) { @@ -106,7 +105,7 @@ StatusCode SCTLorentzMonAlg::fillHistograms(const EventContext& ctx) const { const InDet::SiClusterOnTrack* clus{dynamic_cast<const InDet::SiClusterOnTrack*>(tsos->measurementOnTrack())}; if (clus) { // Is it a SiCluster? If yes... // Reject shared hits if you want - if (m_rejectSharedHits and m_assoTool->isShared(maps, *(clus->prepRawData()))) { + if (prd_to_track_map and prd_to_track_map->isShared(*(clus->prepRawData())) ) { continue; } diff --git a/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.h b/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.h index 3957f57b0985427791cfc4f3a3137ea1bed5c64f..4b4f1c110dc37f0752ad15fdddc99fe21c162422 100644 --- a/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.h +++ b/InnerDetector/InDetMonitoring/SCT_Monitoring/src/SCTLorentzMonAlg.h @@ -1,7 +1,7 @@ // -*- C++ -*- /* - Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration */ #ifndef SCTLORENTZMONALG_H @@ -14,7 +14,8 @@ #include "StoreGate/ReadHandleKey.h" #include "TrkTrack/TrackCollection.h" #include "TrkToolInterfaces/ITrackSummaryTool.h" -#include "TrkToolInterfaces/IPRD_AssociationTool.h" +#include "TrkToolInterfaces/IPRDtoTrackMapTool.h" + class SCT_ID; @@ -32,7 +33,7 @@ class SCTLorentzMonAlg : public AthMonitorAlgorithm { const SCT_ID* m_pSCTHelper{nullptr}; ToolHandle<Trk::ITrackSummaryTool> m_trackSummaryTool{this, "TrackSummaryTool", "InDetTrackSummaryTool"}; - ToolHandle<Trk::IPRD_AssociationTool> m_assoTool{this, "AssociationTool", "InDet::InDetPRD_AssociationToolGangedPixels"}; + ToolHandle<Trk::IPRDtoTrackMapTool> m_assoTool{this, "AssociationTool", "InDet::InDetPRDtoTrackMapToolGangedPixels" }; /// Name of the Track collection to use SG::ReadHandleKey<TrackCollection> m_tracksName{this, "tracksName", "CombinedInDetTracks"};