From bec720ed798cc56bfbfb54ebb986a12db04d88f1 Mon Sep 17 00:00:00 2001 From: Nick Styles <nicholas.styles@cern.ch> Date: Fri, 2 Nov 2018 17:24:02 +0100 Subject: [PATCH] Add flag to toggle use of digital ROT creation (and include other changes from egamma fix in 21.0). Using this will save some CPU, but currently does not give optimal egamma performance - see ATLASRECTS-3949, ATLASRECTS-4573. Set false by default for egamma tuning until GXF changes can be made to fully support use of PRDs properly. Update update --- .../python/InDetJobProperties.py | 9 +++- .../share/InDetRecLoadTools.py | 43 ++++++++++++------- .../InDetDenseEnvAmbiTrackSelectionTool.cxx | 4 +- ...enseEnvironmentsAmbiguityProcessorTool.cxx | 11 ++++- 4 files changed, 47 insertions(+), 20 deletions(-) diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py index 34446ffa078..9b1cc0da380 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py @@ -1168,6 +1168,12 @@ class checkDeadElementsOnTrack(InDetFlagsJobProperty): allowedTypes = ['bool'] StoredValue = True +class doDigitalROTCreation(InDetFlagsJobProperty): + """use PixelClusterOnTrackToolDigital during ROT creation to save CPU""" + statusOn = True + allowedTypes = ['bool'] + StoredValue = False + ##----------------------------------------------------------------------------- ## 2nd step @@ -2778,7 +2784,8 @@ _list_InDetJobProperties = [Enabled, doParticleConversion, doStoreTrackSeeds, doHIP300, - checkDeadElementsOnTrack + checkDeadElementsOnTrack, + doDigitalROTCreation ] for j in _list_InDetJobProperties: jobproperties.InDetJobProperties.add_JobProperty(j) diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py index c3869db5a60..591e38058d8 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py @@ -175,18 +175,23 @@ if InDetFlags.loadRotCreator(): if InDetFlags.doDBM(): print PixelClusterOnTrackToolDBM - PixelClusterOnTrackToolDigital = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackToolDigital", - LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, - DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), - applyNNcorrection = False, - NNIBLcorrection = False, - SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap(), - RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi(), - ErrorStrategy = 2, - PositionStrategy = 1 - ) + if InDetFlags.doDigitalROTCreation(): - ToolSvc += PixelClusterOnTrackToolDigital + PixelClusterOnTrackToolDigital = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackToolDigital", + LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, + DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), + applyNNcorrection = False, + NNIBLcorrection = False, + SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap(), + RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi(), + ErrorStrategy = 2, + PositionStrategy = 1 + ) + + ToolSvc += PixelClusterOnTrackToolDigital + + else : + PixelClusterOnTrackToolDigital = None else: PixelClusterOnTrackTool = None PixelClusterOnTrackToolDigital = None @@ -236,11 +241,17 @@ if InDetFlags.loadRotCreator(): InDet_SeedToTrackConversion = InDet__SeedToTrackConversionTool( name = "InDet_SeedToTrackConversion") ToolSvc += InDet_SeedToTrackConversion - InDetRotCreatorDigital = Trk__RIO_OnTrackCreator(name = 'InDetRotCreatorDigital', - ToolPixelCluster = PixelClusterOnTrackToolDigital, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - Mode = 'indet') - ToolSvc += InDetRotCreatorDigital + if PixelClusterOnTrackToolDigital != None : + InDetRotCreatorDigital = Trk__RIO_OnTrackCreator(name = 'InDetRotCreatorDigital', + ToolPixelCluster = PixelClusterOnTrackToolDigital, + ToolSCT_Cluster = SCT_ClusterOnTrackTool, + Mode = 'indet') + ToolSvc += InDetRotCreatorDigital + + else: + + InDetRotCreatorDigital=InDetRotCreator + # # --- configure broad cluster ROT creator diff --git a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx index ecf35181ca0..b18ffbb1488 100755 --- a/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx +++ b/InnerDetector/InDetRecTools/InDetAmbiTrackSelectionTool/src/InDetDenseEnvAmbiTrackSelectionTool.cxx @@ -1080,7 +1080,9 @@ bool InDet::InDetDenseEnvAmbiTrackSelectionTool::decideWhichHitsToKeep(const Trk lastbutonerot = lastrot; lastrot = tsosDetails.RIO[index]; lastrotindex = index; - continue; + continue; + } else if (tsosDetails.type[index] == Outlier && tsosDetails.hitIsShared[index] <= 0){ + continue; } else{ if (m_monitorTracks) m_observerTool->rejectTrack(*ptrTrack, 106); // rejection location 106: "Too many hits shared - we have to remove at least one PRD" diff --git a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx index 5885b4d530d..900859b0b5b 100644 --- a/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx +++ b/Tracking/TrkTools/TrkAmbiguityProcessor/src/DenseEnvironmentsAmbiguityProcessorTool.cxx @@ -1286,7 +1286,10 @@ const Trk::Track* Trk::DenseEnvironmentsAmbiguityProcessorTool::refitPrds( const increment_by_eta(m_NbremFits,track); ATH_MSG_VERBOSE ("Brem track, refit with electron brem fit"); - newTrack = fit(prds, *par, true, Trk::electron); + // TODO revert once GlobalChi2Fitter properly handles brem fits when + // starting from prds + // newTrack = fit(prds, *par, true, Trk::electron); + newTrack = fit(*track, true, Trk::electron); } else @@ -1304,7 +1307,11 @@ const Trk::Track* Trk::DenseEnvironmentsAmbiguityProcessorTool::refitPrds( const increment_by_eta(m_NrecoveryBremFits,track); ATH_MSG_VERBOSE ("Normal fit failed, try brem recovery"); - newTrack = fit(prds, *par, true, Trk::electron); + // TODO revert once GlobalChi2Fitter properly handles brem fits when + // starting from prds + // newTrack = fit(prds, *par, true, Trk::electron); + newTrack = fit(*track, true, Trk::electron); + } } -- GitLab