diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py index 34446ffa078e94d911d1bc2c1ab09b6f50012a4c..9b1cc0da3800610ae192f8f0b643ba7b0f10030f 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 c3869db5a601e14d7fc8961cbf49acf9d84e17a8..591e38058d82130212940c34d2d64aa1ef5d5a2c 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 ecf35181ca0a38fc9bcfb37a006f6663a40f0184..b18ffbb14887cacb08c73aae73eabf4385c549c3 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 5885b4d530d6ab46a4c04b3c33cda786176ee1c4..900859b0b5b314bd96247de432c689d675550045 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); + } }