From a1f9621fb1dea8dbb74149eb8d3639edb21baf6a Mon Sep 17 00:00:00 2001 From: Maximilian Emanuel Goblirsch-Kolb <maximilian.goblirsch-kolb@cern.ch> Date: Tue, 25 Aug 2020 15:52:48 +0000 Subject: [PATCH] update ID tracking cut level 18 to be more efficient in dense b-jets --- .../python/ConfiguredNewTrackingCuts.py | 30 ++++++++++++------- .../share/ConfiguredNewTrackingSiPattern.py | 11 ++++--- .../SiSpacePointsSeedMakerEventData.h | 2 ++ .../SiSpacePointsSeedMaker_ATLxk.h | 6 ++-- .../src/SiSpacePointsSeedMaker_ATLxk.cxx | 18 +++++++---- .../PROCTools/data/master_q221_AOD_digest.ref | 2 +- .../PROCTools/data/master_q431_AOD_digest.ref | 18 +++++------ 7 files changed, 55 insertions(+), 32 deletions(-) diff --git a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py index 1f2f6c6d287..574be9df2b4 100755 --- a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py @@ -76,8 +76,10 @@ class ConfiguredNewTrackingCuts : self.__seedFilterLevel = 1 self.__maxdImpactPPSSeeds = 1.7 self.__maxdImpactSSSSeeds = 1000.0 - self.__maxSeedsPerSP = 5 - self.__keepAllConfirmedSeeds = False + self.__maxSeedsPerSP_Pixels = 5 + self.__maxSeedsPerSP_Strips = 5 + self.__keepAllConfirmedPixelSeeds = False + self.__keepAllConfirmedStripSeeds = False # --- min pt cut for brem self.__minPTBrem = 1. * Units.GeV # off @@ -232,9 +234,9 @@ class ConfiguredNewTrackingCuts : # impact. Kept as separate level pending cross-check of # seed confirmation robustness with end-of-run-3 radiation # damage. - self.__keepAllConfirmedSeeds = True - self.__maxSeedsPerSP = 1 - + self.__keepAllConfirmedPixelSeeds = True + self.__maxSeedsPerSP_Pixels = 1 + self.__maxSeedsPerSP_Strips = 5 if self.__indetflags.cutLevel() >= 19: # Calo cluster Et for RoI seeded backtracking for TRT segment finding @@ -400,8 +402,8 @@ class ConfiguredNewTrackingCuts : self.__nWeightedClustersMin = 8 self.__maxdImpactSSSSeeds = 300.0 self.__doZBoundary = True - self.__keepAllConfirmedSeeds = True - self.__maxSeedsPerSP = 1 + self.__keepAllConfirmedStripSeeds = True + self.__maxSeedsPerSP_Strips = 1 # --- mode for high-d0 tracks down to 100 MeV (minPT, minClusters, minSecondaryPt cuts loosened to MinBias level) @@ -1018,11 +1020,17 @@ class ConfiguredNewTrackingCuts : def RoadWidth( self ) : return self.__roadWidth - def MaxSeedsPerSP( self ) : - return self.__maxSeedsPerSP + def MaxSeedsPerSP_Strips( self ) : + return self.__maxSeedsPerSP_Strips + + def MaxSeedsPerSP_Pixels( self ) : + return self.__maxSeedsPerSP_Pixels + + def KeepAllConfirmedPixelSeeds( self ) : + return self.__keepAllConfirmedPixelSeeds - def KeepAllConfirmedSeeds( self ) : - return self.__keepAllConfirmedSeeds + def KeepAllConfirmedStripSeeds( self ) : + return self.__keepAllConfirmedStripSeeds def seedFilterLevel( self ) : return self.__seedFilterLevel diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py index a214edabc05..732e79c0f03 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py @@ -92,14 +92,17 @@ class ConfiguredNewTrackingSiPattern: if NewTrackingCuts.mode() == "Offline" or InDetFlags.doHeavyIon() or NewTrackingCuts.mode() == "ForwardTracks": InDetSiSpacePointsSeedMaker.maxdImpactPPS = NewTrackingCuts.maxdImpactPPSSeeds() InDetSiSpacePointsSeedMaker.maxdImpactSSS = NewTrackingCuts.maxdImpactSSSSeeds() - InDetSiSpacePointsSeedMaker.maxSeedsForSpacePoint = NewTrackingCuts.MaxSeedsPerSP() - InDetSiSpacePointsSeedMaker.alwaysKeepConfirmedSeeds = NewTrackingCuts.KeepAllConfirmedSeeds() + if not InDetFlags.doHeavyIon(): + InDetSiSpacePointsSeedMaker.maxSeedsForSpacePointStrips = NewTrackingCuts.MaxSeedsPerSP_Strips() + InDetSiSpacePointsSeedMaker.maxSeedsForSpacePointPixels = NewTrackingCuts.MaxSeedsPerSP_Pixels() + InDetSiSpacePointsSeedMaker.alwaysKeepConfirmedStripSeeds = NewTrackingCuts.KeepAllConfirmedStripSeeds() + InDetSiSpacePointsSeedMaker.alwaysKeepConfirmedPixelSeeds = NewTrackingCuts.KeepAllConfirmedPixelSeeds() if NewTrackingCuts.mode() == "R3LargeD0": InDetSiSpacePointsSeedMaker.usePixel = False InDetSiSpacePointsSeedMaker.etaMax = NewTrackingCuts.maxEta() - InDetSiSpacePointsSeedMaker.maxSeedsForSpacePoint = NewTrackingCuts.MaxSeedsPerSP() - InDetSiSpacePointsSeedMaker.alwaysKeepConfirmedSeeds = NewTrackingCuts.KeepAllConfirmedSeeds() + InDetSiSpacePointsSeedMaker.maxSeedsForSpacePointStrips = NewTrackingCuts.MaxSeedsPerSP_Strips() + InDetSiSpacePointsSeedMaker.alwaysKeepConfirmedStripSeeds = NewTrackingCuts.KeepAllConfirmedStripSeeds() InDetSiSpacePointsSeedMaker.maxdRadius = 150 InDetSiSpacePointsSeedMaker.seedScoreBonusConfirmationSeed = -2000 #let's be generous diff --git a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsSeedMakerEventData.h b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsSeedMakerEventData.h index 0d2eff9a4e2..9c089b2d4cc 100644 --- a/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsSeedMakerEventData.h +++ b/InnerDetector/InDetRecEvent/SiSPSeededTrackFinderData/SiSPSeededTrackFinderData/SiSpacePointsSeedMakerEventData.h @@ -58,6 +58,8 @@ namespace InDet { bool isvertex{false}; ///< whether or not we contain a non-empty vertex list bool checketa{false}; ///< whether to apply eta cuts + int maxSeedsPerSP{0}; ///<Number of Seeds allowed to be built per central Seed + bool keepAllConfirmedSeeds{false}; ///<Do we keep an unlimited number of confirmed seeds per central SP? int iteration{0}; ///< iteration currently being run int iteration0{0}; int r_first{0}; ///< points to the index of the highest occupied radius bin diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h index 3d0568fcb15..8facf3b4f97 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/SiSpacePointsSeedTool_xk/SiSpacePointsSeedMaker_ATLxk.h @@ -167,11 +167,13 @@ namespace InDet { /// maximum number of seeds to keep per central space point. /// the top N seeds sorted by quality are preserved if more candidates /// than the limit exist - IntegerProperty m_maxOneSize{this, "maxSeedsForSpacePoint", 5}; + IntegerProperty m_maxOneSizeSSS{this, "maxSeedsForSpacePointStrips", 5}; + IntegerProperty m_maxOneSizePPP{this, "maxSeedsForSpacePointPixels", 5}; /// This flag will lead to all confirmed seeds (seeds where a second compatible seed /// with a different top spacepoint is found) being kept, even in excess of /// maxSeedsForSpacePoint above - BooleanProperty m_alwaysKeepConfirmedSeeds{this, "alwaysKeepConfirmedSeeds", false}; + BooleanProperty m_alwaysKeepConfirmedPixelSeeds{this, "alwaysKeepConfirmedPixelSeeds", false}; + BooleanProperty m_alwaysKeepConfirmedStripSeeds{this, "alwaysKeepConfirmedStripSeeds", false}; FloatProperty m_etamax{this, "etaMax", 2.7}; FloatProperty m_r1minv{this, "minVRadius1", 0.}; FloatProperty m_r1maxv{this, "maxVRadius1", 60.}; diff --git a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx index 49a59e4c69a..8a34c4c4343 100644 --- a/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx +++ b/InnerDetector/InDetRecTools/SiSpacePointsSeedTool_xk/src/SiSpacePointsSeedMaker_ATLxk.cxx @@ -143,9 +143,17 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::newEvent(const EventContext& ctx, Even /// set the spacepoint iterator to the beginning of the space-point list data.i_spforseed = data.l_spforseed.begin(); + // Set the seed multiplicity strategy of the event data to the one configured + // by the user for strip seeds + data.maxSeedsPerSP = m_maxOneSizeSSS; + data.keepAllConfirmedSeeds = m_alwaysKeepConfirmedStripSeeds; } ///< end if-statement for iteration 0 else { /// for the second iteration (PPP pass), don't redo the full init required the first time data.r_first = 0; ///< reset the first radial bin + // Set the seed multiplicity strategy of the event data to the one configured + // by the user for pixel seeds + data.maxSeedsPerSP = m_maxOneSizePPP; + data.keepAllConfirmedSeeds = m_alwaysKeepConfirmedPixelSeeds; /// call fillLists to repopulate the candidate space points and exit fillLists(data); return; @@ -2096,13 +2104,13 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::newOneSeed } /// There are three cases where we simply add our new seed to the list and push it into the map: /// a) we have not yet reached our max number of seeds - if (data.nOneSeeds < m_maxOneSize + if (data.nOneSeeds < data.maxSeedsPerSP /// b) we have reached the max number but always want to keep confirmed seeds /// and the new seed is a confirmed one, with worse quality than the worst one so far - || (m_alwaysKeepConfirmedSeeds && worstQualityInMap <= seedCandidateQuality && isConfirmedSeed(p1,p3,seedCandidateQuality) && data.nOneSeeds < data.seedPerSpCapacity) + || (data.keepAllConfirmedSeeds && worstQualityInMap <= seedCandidateQuality && isConfirmedSeed(p1,p3,seedCandidateQuality) && data.nOneSeeds < data.seedPerSpCapacity) /// c) we have reached the max number but always want to keep confirmed seeds ///and the new seed of higher quality than the worst one so far, with the latter however being confirmed - || (m_alwaysKeepConfirmedSeeds && worstQualityInMap > seedCandidateQuality && isConfirmedSeed(worstSeedSoFar->spacepoint0(),worstSeedSoFar->spacepoint2(),worstQualityInMap) && data.nOneSeeds < data.seedPerSpCapacity) + || (data.keepAllConfirmedSeeds && worstQualityInMap > seedCandidateQuality && isConfirmedSeed(worstSeedSoFar->spacepoint0(),worstSeedSoFar->spacepoint2(),worstQualityInMap) && data.nOneSeeds < data.seedPerSpCapacity) ){ data.OneSeeds_Pro[data.nOneSeeds].set(p1,p2,p3,z); data.mapOneSeeds_Pro.insert(std::make_pair(seedCandidateQuality, &data.OneSeeds_Pro[data.nOneSeeds])); @@ -2400,8 +2408,8 @@ void InDet::SiSpacePointsSeedMaker_ATLxk::newSeed } void InDet::SiSpacePointsSeedMaker_ATLxk::initializeEventData(EventData& data) const { - int seedArrayPerSPSize = m_maxOneSize; - if (m_alwaysKeepConfirmedSeeds) seedArrayPerSPSize = 50; + int seedArrayPerSPSize = (m_maxOneSizePPP>m_maxOneSizeSSS ? m_maxOneSizePPP : m_maxOneSizeSSS); + if (m_alwaysKeepConfirmedStripSeeds || m_alwaysKeepConfirmedPixelSeeds) seedArrayPerSPSize = 50; data.initialize(EventData::ATLxk, m_maxsizeSP, seedArrayPerSPSize, diff --git a/Tools/PROCTools/data/master_q221_AOD_digest.ref b/Tools/PROCTools/data/master_q221_AOD_digest.ref index ed26ed9ad94..ab14ef762cf 100644 --- a/Tools/PROCTools/data/master_q221_AOD_digest.ref +++ b/Tools/PROCTools/data/master_q221_AOD_digest.ref @@ -12,7 +12,7 @@ 284500 87473084 83 86 7 2 15 1 14 10 4 6 284500 87473091 43 49 3 0 2 1 1 5 2 3 284500 87473096 72 76 3 2 2 0 2 3 2 1 - 284500 87473104 61 63 6 0 6 1 5 5 4 1 + 284500 87473104 61 64 6 0 6 2 4 6 5 1 284500 87473114 93 80 7 2 13 1 12 8 5 3 284500 87473121 93 100 6 3 16 4 12 6 5 1 284500 87473132 81 58 9 1 11 0 11 4 4 0 diff --git a/Tools/PROCTools/data/master_q431_AOD_digest.ref b/Tools/PROCTools/data/master_q431_AOD_digest.ref index 1eab7e7717b..909cf5efc36 100644 --- a/Tools/PROCTools/data/master_q431_AOD_digest.ref +++ b/Tools/PROCTools/data/master_q431_AOD_digest.ref @@ -1,25 +1,25 @@ run event nTopo nIdTracks nJets nMuons 330470 1183722158 1 0 0 0 330470 1183722342 394 415 18 0 - 330470 1183727953 532 570 13 4 - 330470 1183732647 467 453 12 1 + 330470 1183727953 532 574 11 4 + 330470 1183732647 467 454 12 1 330470 1183733040 381 286 6 1 330470 1183734651 361 363 14 3 330470 1183735332 406 372 10 1 - 330470 1183736475 741 654 15 3 + 330470 1183736475 741 657 15 3 330470 1183738728 1 0 0 0 - 330470 1183738949 368 421 9 1 + 330470 1183738949 368 423 9 1 330470 1183742489 152 125 2 1 - 330470 1183743040 285 305 5 0 - 330470 1183746343 492 465 12 0 + 330470 1183743040 285 307 5 0 + 330470 1183746343 492 466 12 0 330470 1183746710 6 0 0 0 330470 1183751782 239 235 5 0 - 330470 1183752624 347 342 8 2 + 330470 1183752624 347 345 8 2 330470 1183753006 357 377 11 3 330470 1183754806 470 406 14 0 330470 1183769295 342 318 8 2 - 330470 1183769939 348 340 11 3 - 330470 1183773832 307 198 7 0 + 330470 1183769939 348 341 11 3 + 330470 1183773832 307 199 7 0 330470 1183775209 57 0 0 0 330470 1183787124 431 361 11 2 330470 1183787946 321 310 5 1 -- GitLab