From e44aeb5476f40ff7b9d48cc188326e736fe3f47d Mon Sep 17 00:00:00 2001 From: Benjamin Philip Kerridge <benjamin.kerridge@cern.ch> Date: Fri, 4 Dec 2020 10:37:29 +0000 Subject: [PATCH] FTF Config migration to ConfigSettings. Began to use ConfigSettings in place of InDetTrigSliceSettings --- .../python/ConfiguredNewTrackingTrigCuts.py | 3 +- .../python/InDetTrigSliceSettings.py | 75 +- .../python/InDetTrigTrackingCuts.py | 135 ++-- .../python/TrigFastTrackFinder_Config.py | 87 ++- .../TrigInDetConfig/python/ConfigSettings.py | 734 ++++++++++++++---- .../TrigInDetConfig/python/InDetSetup.py | 24 +- .../python/TrigTrackingCutFlags.py | 32 +- .../TrigEDMConfig/python/TriggerEDMRun3.py | 9 +- .../Bjet/BjetTrackingConfiguration.py | 8 - 9 files changed, 803 insertions(+), 304 deletions(-) diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/ConfiguredNewTrackingTrigCuts.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/ConfiguredNewTrackingTrigCuts.py index 1835a9e49e0..a34eca6206c 100644 --- a/InnerDetector/InDetExample/InDetTrigRecExample/python/ConfiguredNewTrackingTrigCuts.py +++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/ConfiguredNewTrackingTrigCuts.py @@ -17,7 +17,7 @@ del _sharedcuts class ConfiguredNewTrackingTrigCuts(InDetTrigTrackingCuts): pass - + if not 'EFIDTrackingCuts' in globals(): EFIDTrackingCuts = ConfiguredNewTrackingTrigCuts("Offline") EFIDTrackingCutsCosmics = ConfiguredNewTrackingTrigCuts("Cosmics") @@ -25,4 +25,5 @@ if not 'EFIDTrackingCuts' in globals(): EFIDTrackingCutsLowPt = ConfiguredNewTrackingTrigCuts("LowPt") EFIDTrackingCutsTRT = ConfiguredNewTrackingTrigCuts("TRT") EFIDTrackingCutsHeavyIon = ConfiguredNewTrackingTrigCuts("HeavyIon") + EFIDTrackingCutLRT = ConfiguredNewTrackingTrigCuts("LRT") L2IDTrackingCuts = EFIDTrackingCuts diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigSliceSettings.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigSliceSettings.py index 34dda093fdb..8ba1625c9fe 100644 --- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigSliceSettings.py +++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigSliceSettings.py @@ -22,13 +22,13 @@ class InDetTrigSliceSettingsDB: other InDetTrigRecExample files are included) for example a preExec line from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings; InDetTrigSliceSettings[('pTmin','bjetVtx')] = 5000. - allows testing the bjetVtx instance with as different reconstruction threshold, as in the Run 2 configureation + allows testing the bjetVtx instance with as different reconstruction threshold, as in the Run 2 configureation """ def __init__(self): from AthenaCommon.SystemOfUnits import GeV _slices = ['electron','photon', 'muon', 'muonFS', 'muonCore', 'muonLate', 'muonIso', - 'tau', 'tauCore', 'tauIso', + 'tau', 'tauCore', 'tauIso', # nonsense duplicated tau instances # "tauId", "tauEF", "tauTrk", "tauTrkTwo", 'bjet', 'bjetVtx', @@ -42,11 +42,12 @@ class InDetTrigSliceSettingsDB: 'hadCalib', 'fullScan500', #hadCalib instances 'heavyIon', 'heavyIonFS', #RoI and FS instances for the heavy ion 'beamSpot', 'cosmics', - 'bphysHighPt' + 'bphysHighPt', + 'electronLRT', 'muonLRT', 'tauLRT', 'fullScanLRT', 'bjetLRT' ] self.db = {} - + ptmin = {} etahalf = {} phihalf = {} @@ -101,18 +102,21 @@ class InDetTrigSliceSettingsDB: d0seedmax['cosmics'] = 1000.0 d0seedppsmax['cosmics'] = 1000.0 + for i in ["fullScanLRT", "electronLRT", "muonLRT", "tauLRT", "bjetLRT"]: + d0seedmax[i] = 300. + self.db['d0SeedMax']=d0seedmax self.db['d0SeedPPSMax']=d0seedppsmax for i in _slices: - dozfinder[i] = False - dotrigindettrack[i] = False + dozfinder[i] = False + dotrigindettrack[i] = False dozfinder['beamSpot'] = True self.db['doZFinder']=dozfinder self.db['doTrigInDetTrack']=dotrigindettrack for i in _slices: - doresmon[i] = False + doresmon[i] = False doresmon['muon'] = True self.db['doResMon']=doresmon @@ -133,7 +137,7 @@ class InDetTrigSliceSettingsDB: docloneremoval[i] = True docloneremoval['electron'] = False self.db['doCloneRemoval'] = docloneremoval - + for i in _slices: @@ -144,12 +148,14 @@ class InDetTrigSliceSettingsDB: checkseedredundancy['muonLate'] = True checkseedredundancy['muonCore'] = True # muonIso instance has default seed redundency of False - + checkseedredundancy['bphysics'] = True checkseedredundancy['beamSpot'] = True + checkseedredundancy["fullScanLRT"] = True + self.db['checkRedundantSeeds'] = checkseedredundancy - + for i in _slices: drdoubletmax[i] = 270 seedradbinwidth[i] = 2 @@ -195,6 +201,11 @@ class InDetTrigSliceSettingsDB: 'tauIso' : 0.4, 'beamSpot' : 3.0, 'bjetVtx' : 0.2, + 'electronLRT': 0.1, + 'muonLRT': 0.1, + 'tauLRT': 0.4, + 'fullScanLRT': 3, + 'bjetLRT': 0.2 } self.db['etaHalfWidth']=etahalf @@ -228,6 +239,11 @@ class InDetTrigSliceSettingsDB: 'tauIso' : 0.4, 'beamSpot' : 3.14159, 'bjetVtx' : 0.201, + 'electronLRT': 0.1, + 'muonLRT': 0.1, + 'tauLRT': 0.4, + 'fullScanLRT': 3.14159, + 'bjetLRT': 0.201 } self.db['phiHalfWidth']=phihalf @@ -246,6 +262,7 @@ class InDetTrigSliceSettingsDB: fullscan['heavyIonFS']=True fullscan['minBias400']=True fullscan['beamSpot'] =True + fullscan['fullScanLRT'] = True self.db['doFullScan']=fullscan @@ -262,6 +279,44 @@ class InDetTrigSliceSettingsDB: monptmin['muon'] = 12 * GeV self.db['monPtMin']=monptmin + #TRT extension + dotrt = {} + for i in _slices: + dotrt[i] = False + + dotrt["tauIso"] = True + dotrt["tauCore"] = True + dotrt["tau"] = True + dotrt["electron"] = True + dotrt["tauLRT"] = True + + self.db['doTRT'] = dotrt + + + #d0 track max, z0 track max and usepixelsp + d0trackmax = {} + z0trackmax = {} + usepixelsp = {} + + for i in _slices: + d0trackmax[i] = 20. + z0trackmax[i] = 300. + usepixelsp[i] = True + + d0trackmax["cosmics"] = 1000. + z0trackmax["cosmics"] = 1000. + + for i in ["fullScanLRT", "electronLRT", "muonLRT", "tauLRT", "bjetLRT"]: + d0trackmax[i] = 300. + z0trackmax[i] = 500. + usepixelsp[i] = False + + + + self.db["d0TrackMax"] = d0trackmax + self.db["z0TrackMax"] = z0trackmax + self.db["usePixelSP"] = usepixelsp + def __getitem__(self, p): (quantity, slice) = p v = None diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigTrackingCuts.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigTrackingCuts.py index 3eb6db3aa4d..23ae108fec5 100755 --- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigTrackingCuts.py +++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigTrackingCuts.py @@ -5,7 +5,6 @@ from __future__ import print_function class InDetTrigTrackingCuts : """ A copy of ConfiguredNewtrackingCuts from InDetRecExample used by the trigger. - """ @@ -22,13 +21,13 @@ class InDetTrigTrackingCuts : from AthenaCommon.DetFlags import DetFlags from AthenaCommon.BeamFlags import jobproperties from RecExConfig.RecFlags import rec - + # --- put defaults to run Pixel/SCT/TRT self.__usePixel = DetFlags.haveRIO.pixel_on() self.__useSCT = DetFlags.haveRIO.SCT_on() self.__useTRT = DetFlags.haveRIO.TRT_on() - # --- first set kinematic defaults + # --- first set kinematic defaults self.__minPT = 0.500 * Units.GeV self.__maxPT = None # off ! self.__maxEta = 2.7 @@ -37,13 +36,13 @@ class InDetTrigTrackingCuts : self.__minClusters = 7 # Igor 6, was 7 self.__minSiNotShared = 5 self.__maxShared = 2 - self.__minPixel = 0 + self.__minPixel = 0 self.__maxHoles = 3 # was 5 self.__maxPixelHoles = 2 # was 5 self.__maxSctHoles = 3 # was 5 self.__maxDoubleHoles = 1 # was 2 self.__maxPrimaryImpact = 10.0 * Units.mm # low lumi - self.__maxZImpact = 320. * Units.mm + self.__maxZImpact = 320. * Units.mm if self.__indetflags.doRobustReco(): self.__minClusters = 7 # Igor 6, was 7 self.__maxHoles = 5 # was 5 @@ -52,7 +51,7 @@ class InDetTrigTrackingCuts : self.__maxDoubleHoles = 4 # was 2 self.__maxZImpact = 500.0 * Units.mm - # --- seeding + # --- seeding self.__seedFilterLevel = 1 self.__maxdImpactPPSSeeds = 1.7 self.__maxdImpactSSSSeeds = 1000.0 @@ -61,11 +60,11 @@ class InDetTrigTrackingCuts : self.__minPTBrem = 1. * Units.GeV # off self.__phiWidthBrem = 0.3 # default is 0.3 self.__etaWidthBrem = 0.2 # default is 0.3 - + # --- this is for the TRT-extension + segements and backtracking self.__minTRTonTrk = 9 self.__useParameterizedTRTCuts = False - self.__useNewParameterizationTRT = False + self.__useNewParameterizationTRT = False # --- general pattern cuts for NewTracking self.__radMax = 600. * Units.mm # default R cut for SP in SiSpacePointsSeedMaker @@ -82,7 +81,7 @@ class InDetTrigTrackingCuts : else: self.__SecondarynHolesMax = 1 self.__SecondarynHolesGapMax = 1 - + # --- defaults for secondary tracking self.__maxSecondaryImpact = 100.0 * Units.mm # low lumi self.__minSecondaryClusters = 4 @@ -107,15 +106,15 @@ class InDetTrigTrackingCuts : self.__SecondaryXi2max = 15.0 self.__SecondaryXi2maxNoAdd = 50.0 if rec.Commissioning(): - self.__SecondaryXi2max = 50.0 - self.__SecondaryXi2maxNoAdd = 100.0 + self.__SecondaryXi2max = 50.0 + self.__SecondaryXi2maxNoAdd = 100.0 - # --- settings for segment finder + # --- settings for segment finder self.__TRTSegFinderPtBins = 70 self.__maxSegTRTShared = 0.3 self.__excludeUsedTRToutliers = False - + # --- TRT only self.__minTRTonlyMinPt = 0.5 * Units.GeV self.__minTRTonly = 15 @@ -167,10 +166,10 @@ class InDetTrigTrackingCuts : if self.__indetflags.cutLevel() >= 7: # --- more BackTracking cuts self.__minSecondaryTRTonTrk = 15 # let's not allow for short overlap tracks - self.__maxSecondaryHoles = 1 # tighten hole cuts - self.__maxSecondaryPixelHoles = 1 # tighten hole cuts - self.__maxSecondarySCTHoles = 1 # tighten hole cuts - self.__maxSecondaryDoubleHoles = 0 # tighten hole cuts + self.__maxSecondaryHoles = 1 # tighten hole cuts + self.__maxSecondaryPixelHoles = 1 # tighten hole cuts + self.__maxSecondarySCTHoles = 1 # tighten hole cuts + self.__maxSecondaryDoubleHoles = 0 # tighten hole cuts self.__minSecondaryTRTPrecFrac = 0.5 # default for all tracking now, as well for BackTracking self.__rejectShortExtensions = True # fall back onto segment if TRT extension is short self.__SiExtensionCuts = True # use cuts from ambi scoring already early @@ -210,21 +209,21 @@ class InDetTrigTrackingCuts : if self.__indetflags.cutLevel() >= 17: # Tuning of the search road and strip seed IP in the track finder. - # Designed to speed up reconstruction at minimal performance impact. + # Designed to speed up reconstruction at minimal performance impact. self.__roadWidth = 12 self.__maxdImpactSSSSeeds = 5.0 * Units.mm self.__maxZImpact = 200 if self.__indetflags.cutLevel() >= 18: - # Further tuning of the pattern recognition designed to - # speed up reconstruction compared to 17 with minimal additional - # impact. Kept as separate level pending cross-check of + # Further tuning of the pattern recognition designed to + # speed up reconstruction compared to 17 with minimal additional + # impact. Kept as separate level pending cross-check of # seed confirmation robustness with end-of-run-3 radiation - # damage. + # damage. 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 # and for TRT-si extensions @@ -239,7 +238,7 @@ class InDetTrigTrackingCuts : if mode == "SLHC": self.__extension = "SLHC" # --- higher pt cut and impact parameter cut - self.__minPT = 1.0 * Units.GeV + self.__minPT = 1.0 * Units.GeV self.__maxPrimaryImpact = 2.0 * Units.mm # highlumi # --- cluster cuts self.__minClusters = 9 @@ -249,7 +248,7 @@ class InDetTrigTrackingCuts : self.__maxPixelHoles = self.__maxHoles self.__maxSctHoles = self.__maxHoles self.__maxDoubleHoles = 2 - # --- also tighten patter cuts + # --- also tighten patter cuts self.__radMax = 1000. * Units.mm self.__seedFilterLevel = 1 self.__nHolesMax = self.__maxHoles @@ -264,25 +263,25 @@ class InDetTrigTrackingCuts : self.__minClusters = 3 elif ( DetFlags.haveRIO.SCT_on() and not DetFlags.haveRIO.pixel_on() ): self.__minClusters = 6 - - # --- change defaults for low pt tracking - if mode == "LowPt": + + # --- change defaults for low pt tracking + if mode == "LowPt": self.__extension = "LowPt" # this runs parallel to NewTracking self.__maxPT = self.__minPT + 0.3 * Units.GeV # some overlap self.__minPT = 0.100 * Units.GeV self.__minClusters = 5 - self.__minPixel = 1 # At least one pixel hit for low-pt (ass seeded on pixels!) + self.__minPixel = 1 # At least one pixel hit for low-pt (ass seeded on pixels!) self.__maxHoles = 4 self.__maxPixelHoles = self.__maxHoles # --> no effect self.__maxSctHoles = self.__maxHoles # --> no effect self.__maxDoubleHoles = 2 self.__radMax = 600. * Units.mm # restrivt to pixels - # --- change defauls for beam gas tracking + # --- change defauls for beam gas tracking if mode == "BeamGas": self.__extension = "BeamGas" # this runs parallel to NewTracking self.__minPT = 0.500 * Units.GeV - self.__maxPrimaryImpact = 300. * Units.mm - self.__maxZImpact = 2000. * Units.mm + self.__maxPrimaryImpact = 300. * Units.mm + self.__maxZImpact = 2000. * Units.mm self.__minClusters = 6 self.__maxHoles = 3 self.__maxPixelHoles = self.__maxHoles # --> no effect @@ -291,8 +290,8 @@ class InDetTrigTrackingCuts : # --- changes for cosmics if mode == "Cosmics": self.__minPT = 0.500 * Units.GeV - self.__maxPrimaryImpact = 1000. * Units.mm - self.__maxZImpact = 10000. * Units.mm + self.__maxPrimaryImpact = 1000. * Units.mm + self.__maxZImpact = 10000. * Units.mm self.__minClusters = 4 self.__maxHoles = 3 self.__maxPixelHoles = self.__maxHoles # --> no effect @@ -317,11 +316,11 @@ class InDetTrigTrackingCuts : self.__maxDoubleHoles = 0 self.__nHolesMax = self.__maxHoles self.__nHolesGapMax = self.__maxHoles - self.__Xi2max = 6. + self.__Xi2max = 6. self.__Xi2maxNoAdd = 10. self.__seedFilterLevel = 1 self.__radMax = 600. * Units.mm # restrict to pixels + first SCT layer - self.__useTRT = False + self.__useTRT = False # --- changes for Pixel segments if mode == "Pixel": self.__extension = "Pixel" # this runs parallel to NewTracking @@ -335,13 +334,13 @@ class InDetTrigTrackingCuts : self.__maxShared = 0 self.__seedFilterLevel = 2 self.__nHolesMax = self.__maxHoles - self.__nHolesGapMax = 2*self.__maxDoubleHoles + self.__nHolesGapMax = 2*self.__maxDoubleHoles self.__useSCT = False - self.__useTRT = False + self.__useTRT = False if self.__indetflags.doCosmics(): self.__minPT = 0.500 * Units.GeV - self.__maxPrimaryImpact = 1000. * Units.mm - self.__maxZImpact = 10000. * Units.mm + self.__maxPrimaryImpact = 1000. * Units.mm + self.__maxZImpact = 10000. * Units.mm self.__maxHoles = 3 self.__maxPixelHoles = self.__maxHoles # --> no effect self.__maxSctHoles = self.__maxHoles # --> no effect @@ -349,7 +348,7 @@ class InDetTrigTrackingCuts : self.__roadWidth = 60. self.__seedFilterLevel = 3 # 2 ? self.__nHolesMax = self.__maxHoles - self.__nHolesGapMax = 2*self.__maxDoubleHoles + self.__nHolesGapMax = 2*self.__maxDoubleHoles self.__Xi2max = 60.0 self.__Xi2maxNoAdd = 100.0 self.__nWeightedClustersMin = 6 @@ -370,13 +369,13 @@ class InDetTrigTrackingCuts : self.__maxShared = 0 self.__seedFilterLevel = 2 self.__nHolesMax = self.__maxHoles - self.__nHolesGapMax = 2*self.__maxDoubleHoles + self.__nHolesGapMax = 2*self.__maxDoubleHoles self.__usePixel = False - self.__useTRT = False + self.__useTRT = False if self.__indetflags.doCosmics(): self.__minPT = 0.500 * Units.GeV - self.__maxPrimaryImpact = 1000. * Units.mm - self.__maxZImpact = 10000. * Units.mm + self.__maxPrimaryImpact = 1000. * Units.mm + self.__maxZImpact = 10000. * Units.mm self.__maxHoles = 3 self.__maxPixelHoles = self.__maxHoles # --> no effect self.__maxSctHoles = self.__maxHoles # --> no effect @@ -384,11 +383,11 @@ class InDetTrigTrackingCuts : self.__roadWidth = 60. self.__seedFilterLevel = 3 # 2 ? self.__nHolesMax = self.__maxHoles - self.__nHolesGapMax = 2*self.__maxDoubleHoles + self.__nHolesGapMax = 2*self.__maxDoubleHoles self.__Xi2max = 60.0 self.__Xi2maxNoAdd = 100.0 self.__nWeightedClustersMin = 6 - # --- mode for SCT and TRT + # --- mode for SCT and TRT if mode == "SCTandTRT": self.__extension = "SCTandTRT" # this runs parallel to NewTracking self.__minPT = 0.5 * Units.GeV @@ -401,13 +400,13 @@ class InDetTrigTrackingCuts : self.__maxShared = 0 self.__seedFilterLevel = 2 self.__nHolesMax = self.__maxHoles - self.__nHolesGapMax = 2*self.__maxDoubleHoles + self.__nHolesGapMax = 2*self.__maxDoubleHoles self.__usePixel = False - self.__useTRT = True + self.__useTRT = True if self.__indetflags.doCosmics(): self.__minPT = 0.500 * Units.GeV - self.__maxPrimaryImpact = 1000. * Units.mm - self.__maxZImpact = 10000. * Units.mm + self.__maxPrimaryImpact = 1000. * Units.mm + self.__maxZImpact = 10000. * Units.mm self.__maxHoles = 3 self.__maxPixelHoles = self.__maxHoles # --> no effect self.__maxSctHoles = self.__maxHoles # --> no effect @@ -415,7 +414,7 @@ class InDetTrigTrackingCuts : self.__roadWidth = 60. self.__seedFilterLevel = 3 # 2 ? self.__nHolesMax = self.__maxHoles - self.__nHolesGapMax = 2*self.__maxDoubleHoles + self.__nHolesGapMax = 2*self.__maxDoubleHoles self.__Xi2max = 60.0 self.__Xi2maxNoAdd = 100.0 self.__nWeightedClustersMin = 6 @@ -426,6 +425,25 @@ class InDetTrigTrackingCuts : # self.__maxDoubleHoles = 4 # was 2 # self.__maxPrimaryImpact = 50.0 * Units.mm # low lumi # self.__maxZImpact = 500.0 * Units.mm + if mode == "LRT": + self.__minClusters = 8 + self.__minSiNotShared = 6 + self.__maxShared = 1 + self.__maxHoles = 2 + self.__maxPixelHoles = 1 + self.__maxSctHoles = 1 + self.__maxDoubleHoles = 0 + self.__maxPrimaryImpact = 300.0 * Units.mm + self.__maxZImpact = 500. * Units.mm + self.__roadWidth = 5. + self.__seedFilterLevel = 1 + self.__nHolesMax = self.__maxHoles + self.__nHolesGapMax = 1 + self.__Xi2max = 9. + self.__Xi2maxNoAdd = 25.0 + self.__nWeightedClustersMin = 8 + self.__doZBoundary = True + self.__maxdImpactSSSSeeds = 300.0 # ---------------------------------------------------------------------------- @@ -469,7 +487,7 @@ class InDetTrigTrackingCuts : return self.__minClusters def minPixel( self ) : - return self.__minPixel + return self.__minPixel def minSecondaryClusters( self ) : return self.__minSecondaryClusters @@ -506,7 +524,7 @@ class InDetTrigTrackingCuts : def maxDoubleHoles( self ) : return self.__maxDoubleHoles - + def maxSecondaryDoubleHoles( self ) : return self.__maxSecondaryDoubleHoles @@ -548,7 +566,7 @@ class InDetTrigTrackingCuts : def Xi2max( self ) : return self.__Xi2max - + def Xi2maxNoAdd( self ) : return self.__Xi2maxNoAdd @@ -560,12 +578,12 @@ class InDetTrigTrackingCuts : def SecondaryXi2max( self ) : return self.__SecondaryXi2max - + def SecondaryXi2maxNoAdd( self ) : return self.__SecondaryXi2maxNoAdd def nWeightedClustersMin( self ) : - return self.__nWeightedClustersMin + return self.__nWeightedClustersMin def maxdImpactPPSSeeds( self ) : return self.__maxdImpactPPSSeeds @@ -575,7 +593,7 @@ class InDetTrigTrackingCuts : def usePixel( self ) : return self.__usePixel - + def useSCT( self ) : return self.__useSCT @@ -655,4 +673,3 @@ class InDetTrigTrackingCuts : print ('* min TRT only min pt : ', self.__minTRTonlyMinPt, ' MeV') print ('*') print ('************************************************************************************') - diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py index 189943c2024..05c345cf653 100755 --- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py +++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py @@ -39,7 +39,7 @@ class TrigFastTrackFinderMonitoring(GenericMonitoringTool): def addDataErrorHistograms(self): self.defineHistogram('roi_lastStageExecuted',path='EXPERT',type='TH1F',title="Last Step Successfully Executed", xbins = 8 , xmin=-0.5, xmax=7.5, xlabels=["Start","GetRoI","GetSPs","ZFinder","Triplets","TrackMaker","TrackFitter","TrackConverter"]) - + def addTimingHistograms(self, type): if type=='FS' or type=='JetFS' or type=='FullScan' or type=='fullScan': self.defineHistogram('roi_nSPs, TIME_PattReco', path='EXPERT',type='TH2F',title="PattReco time; nSPs", xbins = 200, xmin=0.0, xmax=200000.0, ybins = 100, ymin=0.0, ymax=40000.0) @@ -168,55 +168,62 @@ remap = { "minBias" : "minBias400" } +lrtSliceNames = ["electronLRT", "muonLRT", "tauLRT", "bjetLRT", "fullScanLRT"] + class TrigFastTrackFinderBase(TrigFastTrackFinder): __slots__ = [] - def __init__(self, name, type): + def __init__(self, name, slice_name): TrigFastTrackFinder.__init__(self,name) #Remapping should be now covered by SliceConfigurationSetting - remapped_type = type + remapped_type = slice_name - #There are still some places which relies on this remapping such as: + #There are still some places which relies on this remapping such as: #https://gitlab.cern.ch/atlas/athena/-/blob/master/Trigger/TrigTools/TrigInDetConf/python/TrigInDetSequence.py #I guess eventually this should be removed - if type in remap: - remapped_type = remap[type] - + if slice_name in remap: + remapped_type = remap[slice_name] + + isLRT = False - #Global keys/names for collections + if remapped_type in lrtSliceNames: + isLRT = True + + + #Global keys/names for collections from TrigInDetConfig.InDetTrigCollectionKeys import TrigPixelKeys, TrigSCTKeys self.useNewLayerNumberScheme = True - - self.OutputCollectionSuffix = type + + self.OutputCollectionSuffix = slice_name from AthenaCommon.AppMgr import ToolSvc numberingTool = TrigL2LayerNumberTool(name = "TrigL2LayerNumberTool_FTF") numberingTool.UseNewLayerScheme = self.useNewLayerNumberScheme ToolSvc += numberingTool self.LayerNumberTool = numberingTool - + from InDetTrigRecExample.InDetTrigSliceSettings import InDetTrigSliceSettings - # GPU offloading config begins - + # GPU offloading config begins + self.useGPU = False - + #if type == "FS" : self.useGPU = True - + if self.useGPU : from TrigInDetAccelerationTool.TrigInDetAccelerationToolConf import TrigInDetAccelerationTool accelTool = TrigInDetAccelerationTool(name = "TrigInDetAccelerationTool_FTF") ToolSvc += accelTool - - + + # GPU offloading config ends self.doResMon = InDetTrigSliceSettings[('doResMon',remapped_type)] # switch between Run-2/3 monitoring - self.MonTool = TrigFastTrackFinderMonitoring(type, self.doResMon) + self.MonTool = TrigFastTrackFinderMonitoring(slice_name, self.doResMon) from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool self.TrackSummaryTool = InDetTrigFastTrackSummaryTool @@ -233,30 +240,33 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder): spTool.PixelSP_ContainerName = TrigPixelKeys.SpacePoints spTool.SCT_SP_ContainerName = TrigSCTKeys.SpacePoints spTool.layerNumberTool = numberingTool + spTool.UsePixelSpacePoints = InDetTrigSliceSettings[('usePixelSP',remapped_type)] from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel from RegionSelector.RegSelToolConfig import makeRegSelTool_SCT - + spTool.RegSelTool_Pixel = makeRegSelTool_Pixel() spTool.RegSelTool_SCT = makeRegSelTool_SCT() + spTool.UsePixelSpacePoints=InDetTrigSliceSettings[('usePixelSP',remapped_type)] + ToolSvc += spTool self.SpacePointProviderTool=spTool self.MinHits = 5 #Only process RoI with more than 5 spacepoints - + self.Triplet_MinPtFrac = 1 self.Triplet_nMaxPhiSlice = 53 if remapped_type=="cosmics": self.Triplet_nMaxPhiSlice = 2 #Divide detector in 2 halves for cosmics - + + self.LRT_Mode = isLRT + self.Triplet_MaxBufferLength = 3 self.doSeedRedundancyCheck = InDetTrigSliceSettings[('checkRedundantSeeds',remapped_type)] self.Triplet_D0Max = InDetTrigSliceSettings[('d0SeedMax',remapped_type)] - self.Triplet_D0_PPS_Max = InDetTrigSliceSettings[('d0SeedPPSMax',remapped_type)] - self.TrackInitialD0Max = 20. - if remapped_type=='cosmics': - self.TrackInitialD0Max = 1000. - self.TrackZ0Max = 1000. + self.Triplet_D0_PPS_Max = InDetTrigSliceSettings[('d0SeedPPSMax',remapped_type)] + self.TrackInitialD0Max = InDetTrigSliceSettings[('d0TrackMax',remapped_type)] + self.TrackZ0Max = InDetTrigSliceSettings[('z0TrackMax',remapped_type)] self.TripletDoPSS = False self.pTmin = InDetTrigSliceSettings[('pTmin',remapped_type)] @@ -281,17 +291,20 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder): from SCT_ConditionsTools.SCT_ConditionsToolsConf import SCT_ConditionsSummaryTool InDetTrigSiComTrackFinder_FTF.SctSummaryTool = SCT_ConditionsSummaryTool(SCT_ConditionsSetup.instanceName('InDetSCT_ConditionsSummaryToolWithoutFlagged')) ToolSvc += InDetTrigSiComTrackFinder_FTF - - + + from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCuts TrackingCuts = EFIDTrackingCuts if remapped_type=="cosmics": from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCutsCosmics TrackingCuts = EFIDTrackingCutsCosmics + if isLRT: + from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCutLRT + TrackingCuts = EFIDTrackingCutLRT from SiTrackMakerTool_xk.SiTrackMakerTool_xkConf import InDet__SiTrackMaker_xk - TrackMaker_FTF = InDet__SiTrackMaker_xk(name = 'InDetTrigSiTrackMaker_FTF_'+type, + TrackMaker_FTF = InDet__SiTrackMaker_xk(name = 'InDetTrigSiTrackMaker_FTF_'+slice_name, RoadTool = InDetTrigSiDetElementsRoadMaker_FTF, CombinatorialTrackFinder = InDetTrigSiComTrackFinder_FTF, pTmin = InDetTrigSliceSettings[('pTmin',remapped_type)], @@ -306,9 +319,9 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder): UseAssociationTool = False) from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags - if type=='eGamma' and InDetTrigFlags.doBremRecovery(): + if slice_name=='eGamma' and InDetTrigFlags.doBremRecovery(): TrackMaker_FTF.useBremModel = True - + if remapped_type=="cosmics": TrackMaker_FTF.CosmicTrack=True @@ -320,14 +333,14 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder): #theTrigInDetTrackFitter.correctClusterPos = False #Flag to control whether to correct cluster position theTrigInDetTrackFitter.correctClusterPos = True #temporarily to true to improve err(z0) estimates - + from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigRotCreator theTrigInDetTrackFitter.ROTcreator = InDetTrigRotCreator ToolSvc += theTrigInDetTrackFitter self.trigInDetTrackFitter = theTrigInDetTrackFitter from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags - if type=='eGamma' and InDetTrigFlags.doBremRecovery(): + if slice_name=='eGamma' and InDetTrigFlags.doBremRecovery(): theTrigInDetTrackFitterBrem = TrigInDetTrackFitter(name='theTrigInDetTrackFitterBrem', doBremmCorrection = True) ToolSvc += theTrigInDetTrackFitterBrem @@ -339,8 +352,8 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder): theTrigZFinder = TrigZFinder( name="TrigZFinder_"+remapped_type ) theTrigZFinder.NumberOfPeaks = 3 theTrigZFinder.LayerNumberTool=numberingTool - - if remapped_type == "beamSpot" : + + if remapped_type == "beamSpot" : theTrigZFinder.TripletMode = 1 theTrigZFinder.TripletDZ = 1 theTrigZFinder.PhiBinSize = 0.1 @@ -355,8 +368,8 @@ class TrigFastTrackFinderBase(TrigFastTrackFinder): TrackMaker_FTF.InputClusterContainerName = "" TrackMaker_FTF.InputHadClusterContainerName = "" - - + + from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool self.TrackSummaryTool = InDetTrigFastTrackSummaryTool diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py index cebb1da4659..2b7f52f1bdf 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration from __future__ import print_function - + __author__ = "Mark Sutton, Matous Vozak" __doc__ = "ConfigSettings" __all__ = [ "getInDetTrigConfig" ] @@ -16,7 +16,7 @@ from AthenaCommon.SystemOfUnits import GeV def makeRecordable(getName): def recordCollection(*args, **kwargs): #Retrieve record decision - record=kwargs.pop("doRecord",False) + record=kwargs.pop("doRecord",False) #Get the name of the collection collectionName = getName(*args, **kwargs) @@ -33,11 +33,11 @@ def makeRecordable(getName): # Configuration of Tracking parameters for different signatures #----------------------------------------------------------------------------- -class _Settings : +class _Settings : def __init__(self, name = "Settings") : self._name = name - - # default values + + # default values self._pTmin = 1.*GeV self._d0SeedMax = 4.0 self._d0SeedPPSMax = 1.7 @@ -46,7 +46,7 @@ class _Settings : self._doSpPhiFiltering = True self._doCloneRemoval = True self._checkRedundantSeeds = False - self._dRdoubletMax = 270 + self._dRdoubletMax = 270 self._seedRadBinWidth = 2 self._etaHalfWidth = 0.1 self._phiHalfWidth = 0.1 @@ -55,132 +55,155 @@ class _Settings : self._monPtMin = 1*GeV self._doTRT = False #Apply TRT extension sequence after ambiguity solving self._keepTrackParameters = False #Keep track parameters in conversion to TrackParticles + self._usePixelSP = True + self._d0TrackMax = 20. + self._z0TrackMax = 300. + self._isLRT = False #Previous version in: #https://gitlab.cern.ch/atlas/athena/-/blob/master/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigSliceSettings.py#L70 - @property + @property def name(self): return self._name - + @property def pTmin(self): return self._pTmin - + @property def d0SeedMax(self): return self._d0SeedMax - + @property def d0SeedPPSMax(self): return self._d0SeedPPSMax - + @property def doZFinder(self): return self._doZFinder - + @property def doResMon(self): return self._doResMon - + @property def doSpPhiFiltering(self): return self._doSpPhiFiltering - + @property def doCloneRemoval(self): return self._doCloneRemoval - + @property def checkRedundantSeeds(self): return self._checkRedundantSeeds - + @property def dRdoubletMax(self): - return self._dRdoubletMax - + return self._dRdoubletMax + @property def seedRadBinWidth(self): return self._seedRadBinWidth - + @property def etaHalfWidth(self): return self._etaHalfWidth - + @property def phiHalfWidth(self): return self._phiHalfWidth - + @property def doFullScan(self): return self._doFullScan - + @property def monPS(self): return self._monPS - + @property def monPtMin(self): return self._monPtMin - + @property def doTRT(self): return self._doTRT + @property + def usePixelSP(self): + return self._usePixelSP + @property + def d0TrackMax(self): + return self._d0TrackMax + + @property + def z0TrackMax(self): + return self._z0TrackMax + @property def keepTrackParameters(self): return self._keepTrackParameters - - def printout(self): + + @property + def isLRT(self): + return self._isLRT + + def printout(self): print( self._name, " :") print( " pTmin : ", self._pTmin ) print( " d0SeedMax : ", self._d0SeedMax ) - print( " d0SeedPPSMax : ", self._d0SeedPPSMax ) + print( " d0SeedPPSMax : ", self._d0SeedPPSMax ) print( " doZFinder : ", self._doZFinder ) print( " doResMon : ", self._doResMon ) - print( " doSpPhiFiltering : ", self._doSpPhiFiltering ) + print( " doSpPhiFiltering : ", self._doSpPhiFiltering ) print( " doCloneRemoval : ", self._doCloneRemoval ) print( " checkRedundantSeeds : ", self._checkRedundantSeeds ) print( " dRdoubletMax : ", self._dRdoubletMax ) print( " seedRadBinWidth : ", self._seedRadBinWidth ) print( " etaHalfWidth : ", self._etaHalfWidth ) - print( " phiHalfWidth : ", self._phiHalfWidth ) + print( " phiHalfWidth : ", self._phiHalfWidth ) print( " doFullScan : ", self._doFullScan ) print( " monPS : ", self._monPS ) print( " monPtMin : ", self._monPtMin ) - + #Tracking configuration for different signatures -class _Tracking_electron( _Settings ): - def __init__( self ): +class _Tracking_electron( _Settings ): + def __init__( self ): _Settings.__init__(self) self._doCloneRemoval = True #Previously False in Run2! self._checkRedundantSeeds = True self._doTRT = True self._keepTrackParameters = True -class _Tracking_tauCore( _Settings ): - def __init__( self ): +class _Tracking_photon(_Settings): + def __init__(self): + _Settings.__init__(self) + +class _Tracking_tauCore( _Settings ): + def __init__( self ): _Settings.__init__(self) self._doTRT = True -class _Tracking_tauIso( _Settings ): - def __init__( self ): +class _Tracking_tauIso( _Settings ): + def __init__( self ): _Settings.__init__(self) self._etaHalfWidth = 0.4 self._phiHalfWidth = 0.4 self._doTRT = True -class _Tracking_tau( _Settings ): - def __init__( self ): +class _Tracking_tau( _Settings ): + def __init__( self ): _Settings.__init__(self) - self._pTmin = 0.8*GeV + self._pTmin = 0.8*GeV self._etaHalfWidth = 0.4 self._phiHalfWidth = 0.4 self._doTRT = True -class _Tracking_muon( _Settings ): - def __init__( self ): +class _Tracking_muon( _Settings ): + def __init__( self ): _Settings.__init__(self) self._d0SeedMax = 10.0 self._doResMon = True @@ -189,59 +212,100 @@ class _Tracking_muon( _Settings ): self._monPtMin = 12*GeV self._doTRT = False -class _Tracking_muonCore( _Settings ): - def __init__( self ): +class _Tracking_muonCore( _Settings ): + def __init__( self ): _Settings.__init__(self) self._d0SeedMax = 10.0 self._doSpPhiFiltering = False self._checkRedundantSeeds = True self._doTRT = False -class _Tracking_muonIso( _Settings ): - def __init__( self ): +class _Tracking_muonIso( _Settings ): + def __init__( self ): _Settings.__init__(self) self._etaHalfWidth = 0.35 self._phiHalfWidth = 0.35 self._doTRT = False -class _Tracking_bjet( _Settings ): - def __init__( self ): +class _Tracking_bjet( _Settings ): + def __init__( self ): _Settings.__init__(self) - self._etaHalfWidth = 0.4 - self._phiHalfWidth = 0.4 + self._etaHalfWidth = 0.2 + self._phiHalfWidth = 0.201 self._doTRT = False -class _Tracking_fullScan( _Settings ): - def __init__( self ): +class _Tracking_bjetVtx(_Settings): + def __init__(self): + _Settings.__init__(self) + self._phiHalfWidth = 0.201 + self._etaHalfWidth = 0.2 + self._pTmin = 5.*GeV + self._doTRT = False + +class _Tracking_fullScan( _Settings ): + def __init__( self ): _Settings.__init__(self) self._etaHalfWidth = 3. self._phiHalfWidth = 3.14159 self._doTRT = False - self._dRdoubletMax = 200 + self._dRdoubletMax = 200 self._seedRadBinWidth = 10 -class _Tracking_minBias( _Settings ): - def __init__( self ): +class _Tracking_fullScan2(_Settings): + def __init__(self): + self._pTmin = 2. * GeV + self._etaHalfWidth = 3.0 + self._phiHalfWidth = 3.14159 + self._doFullScan = True + +class _Tracking_fullScan500(_Settings): + def __init__(self): + self._pTmin = 0.5 * GeV + self._etaHalfWidth = 3.0 + self._phiHalfWidth = 3.14159 + self._doFullScan = True + +class _Tracking_minBias400( _Settings ): + def __init__( self ): + _Settings.__init__(self) + self._doFullScan = True + self._pTmin = 0.39*GeV + self._etaHalfWidth = 3 + self._phiHalfWidth = 3.14159 + self._doTRT = False + +class _Tracking_minBias( _Settings ): + def __init__( self ): _Settings.__init__(self) self._doFullScan = True - self._pTmin = 0.2*GeV # TODO: double check + self._pTmin = 0.2*GeV self._etaHalfWidth = 3 self._phiHalfWidth = 3.14159 self._doTRT = False -class _Tracking_beamSpot( _Settings ): - def __init__( self ): +class _Tracking_minBias2( _Settings ): + def __init__( self ): + _Settings.__init__(self) + self._doFullScan = True + self._pTmin = 0.5*GeV + self._etaHalfWidth = 3 + self._phiHalfWidth = 3.14159 + self._doTRT = False + +class _Tracking_beamSpot( _Settings ): + def __init__( self ): _Settings.__init__(self) self._doFullScan = True self._doZFinder = True - self._dRdoubletMax = 200 + self._dRdoubletMax = 200 self._seedRadBinWidth = 10 self._etaHalfWidth = 3 self._phiHalfWidth = 3.14159 self._doTRT = False + self._checkRedundantSeeds = True -class _Tracking_cosmic( _Settings ): - def __init__( self ): +class _Tracking_cosmic( _Settings ): + def __init__( self ): _Settings.__init__(self) self._doFullScan = True self._d0SeedMax = 1000.0 @@ -249,38 +313,178 @@ class _Tracking_cosmic( _Settings ): self._etaHalfWidth = 3 self._phiHalfWidth = 3.14159 self._doTRT = False - -class _Tracking_bphysics( _Settings ): - def __init__( self ): + #do these settings still apply, were defined in TrigFastTrackFinder_Config.py but not in slicesettings + self._d0TrackMax = 1000. + self._z0TrackMax = 1000. + +class _Tracking_cosmicsN(_Settings): + def __init__(self): + _Settings.__init__(self) + self._etaHalfWidth = 3.0 + self._phiHalfWidth = 3.14159 + self._doFullScan = True + self._pTmin = 0.5*GeV + +class _Tracking_beamgas(_Settings): + def __init__(self): + _Settings.__init__(self) + self._pTmin = 0.1 * GeV + self._etaHalfWidth = 3.0 + self._phiHalfWidth = 3.14159 + self._doFullScan = True + +class _Tracking_hadCalib(_Settings): + def __init__(self): + _Settings.__init__(self) + self._pTmin = 0.5*GeV + self._etaHalfWidth = 0.4 + self._phiHalfWidth = 0.4 + +class _Tracking_bphysics( _Settings ): + def __init__( self ): _Settings.__init__(self) - self._d0SeedMax = 10. + self._d0SeedMax = 10. self._doSpPhiFiltering = False self._etaHalfWidth = 0.75 self._phiHalfWidth = 0.75 self._checkRedundantSeeds = True self._doTRT = False +class _Tracking_bphysicsHighPt( _Settings ): + def __init__( self ): + _Settings.__init__(self) + self._d0SeedMax = 10. + self._doSpPhiFiltering = False + self._etaHalfWidth = 0.75 + self._phiHalfWidth = 0.75 + self._doTRT = False + self._pTmin = 2. * GeV + +class _Tracking_heavyIon(_Settings): + def __init__( self ): + _Settings.__init__(self) + +class _Tracking_heavyIonFS(_Settings): + def __init__( self ): + _Settings.__init__(self) + self._etaHalfWidth=3.0 + self._phiHalfWidth=3.14159 + self._doFullScan=True + +class _Tracking_lowPt(_Settings): + def __init__( self ): + _Settings.__init__(self) + self._pTmin = 0.1 * GeV + self._etaHalfWidth = 3.0 + self._phiHalfWidth = 3.14159 + self._doFullScan = True + + +class _Tracking_electronLRT(_Settings): + def __init__(self): + _Settings.__init__(self) + self._usePixelSP = False + self._d0SeedMax = 300. + self._d0TrackMax = 300. + self._z0TrackMax = 500. + self._isLRT = True + +class _Tracking_muonLRT(_Settings): + def __init__(self): + _Settings.__init__(self) + self._usePixelSP = False + self._d0SeedMax = 300. + self._d0TrackMax = 300. + self._z0TrackMax = 500. + self._isLRT = True + +class _Tracking_tauLRT( _Settings ): + def __init__( self ): + _Settings.__init__(self) + self._pTmin = 0.8*GeV + self._etaHalfWidth = 0.4 + self._phiHalfWidth = 0.4 + self._doTRT = True + self._usePixelSP = False + self._d0SeedMax = 300. + self._d0TrackMax = 300. + self._z0TrackMax = 500. + self._isLRT = True + + +class _Tracking_fullScanLRT( _Settings ): + def __init__( self ): + _Settings.__init__(self) + self._etaHalfWidth = 3. + self._phiHalfWidth = 3.14159 + self._doTRT = False + self._checkRedundantSeeds = True + self._usePixelSP = False + self._d0SeedMax = 300. + self._d0TrackMax = 300. + self._z0TrackMax = 500. + self._d0SeedPPSMax = 300. + self._doFullScan = True + self._isLRT = True + +class _Tracking_bjetLRT(_Settings): + def __init__(self): + _Settings.__init__(self) + self._etaHalfWidth = 0.4 + self._phiHalfWidth = 0.4 + self._doTRT = False + self._usePixelSP = False + self._d0SeedMax = 300. + self._d0TrackMax = 300. + self._z0TrackMax = 500. + self._isLRT = True + #Map to retrieve available configurations of Tracking -_TrackingConfigSettings = { +_TrackingConfigSettings = { "electron" : _Tracking_electron(), + "electronLRT" : _Tracking_electronLRT(), + + "photon" : _Tracking_photon(), #Muon signatures "muon" : _Tracking_muon(), "muonIso" : _Tracking_muonIso(), "muonCore" : _Tracking_muonCore(), + "muonLRT" : _Tracking_muonLRT(), - "tau" : _Tracking_tau(), + "tau" : _Tracking_tau(), "tauCore" : _Tracking_tauCore(), "tauIso" : _Tracking_tauIso(), + "tauLRT" : _Tracking_tauLRT(), "bjet" : _Tracking_bjet(), + "bjetVtx" : _Tracking_bjetVtx(), + "bjetLRT" : _Tracking_bjetLRT(), + "fullScan" : _Tracking_fullScan(), + "fullScanLRT" : _Tracking_fullScanLRT(), + "fullScan2" : _Tracking_fullScan2(), + "fullScan500" : _Tracking_fullScan500(), + + "minBias" : _Tracking_minBias(), + "minBias2" : _Tracking_minBias2(), + "minBias400" : _Tracking_minBias400(), - "minBias400" : _Tracking_minBias(), "beamSpot" : _Tracking_beamSpot(), "cosmics" : _Tracking_cosmic(), - "bphysics" : _Tracking_bphysics(), + "cosmicsN" : _Tracking_cosmicsN(), + "beamgas" : _Tracking_beamgas(), + + "bphysics" : _Tracking_bphysics(), + "bphysHighPt" : _Tracking_bphysicsHighPt(), + + "lowPt" : _Tracking_lowPt(), + + "hadCalib" : _Tracking_hadCalib(), + + "heavyIon" : _Tracking_heavyIon(), + "heavyIonFS" : _Tracking_heavyIonFS() } @@ -289,144 +493,152 @@ _TrackingConfigSettings = { def getInDetTrigTrackingConfig( name ) : if name in _TrackingConfigSettings : return _TrackingConfigSettings[name] - else : - # don't just return None, and do nothing as this - # will just hide the error until people try to use + else : + # don't just return None, and do nothing as this + # will just hide the error until people try to use # the bad slice configuration raise Exception( "getInDetTrigTrackingConfig() called with incorrect non existent slice: "+name ) - return None + return None -# Full Signature Configuration of ID Trig +# Full Signature Configuration of ID Trig #----------------------------------------------------------------------------- class _FastTracking(): - def __init__( self, signatureType, nameSuffix ) : + def __init__( self, signatureType, nameSuffix ) : self._signatureType = signatureType #Steer which cuts,flags to load self._config = getInDetTrigTrackingConfig( signatureType ) self._suffix = nameSuffix - + #Retrieve trackCollection key @makeRecordable #Allows to record collection if doRecord = True def trkTracksFTF(self, doRecord=False): return 'HLT_IDTrkTrack_{}_FTF'.format( self._suffix ) - + #Retrieve TrackParticle key @makeRecordable #Allows to record collection if doRecord = True def tracksFTF(self, doRecord = True): return 'HLT_IDTrack_{}_FTF'.format( self._suffix ) - + #Retrieve TrackParticle key - @property + @property def setting(self): return self._config - + def isSignature(self, signature): return (self._signatureType == signature) - - @property + + @property def signatureType(self): return self._signatureType + @property + def config(self): + return self._config class _PrecisionTracking(): - def __init__( self, signatureType, nameSuffix ) : + def __init__( self, signatureType, nameSuffix ) : self._signatureType = signatureType #Steer which cuts,flags to load self._config = getInDetTrigTrackingConfig( signatureType ) #This might not be needed in the future as most likely the setting will be the same between FT and PT self._suffix = nameSuffix - - #Retrieve final precision trackCollection + + #Retrieve final precision trackCollection @makeRecordable def trkTracksPT(self, doRecord = False): return 'HLT_IDTrkTrack_{}_IDTrig'.format( self._suffix ) - + #Retrieve final TrackParticle key - @makeRecordable + @makeRecordable def tracksPT(self, doRecord = False): return 'HLT_IDTrack_{}_IDTrig'.format( self._suffix ) - + #Retrieve trackCollection from Ambiguity solving stage #AS might not be very descriptive, should we switch to AmbiSol at least? @makeRecordable def trkTracksAS(self, doRecord = False): return 'HLT_IDTrkTrack_{}_AmbSol'.format( self._suffix ) - + #Retrieve trackCollection from TRT track extension stage #TE might not be very descriptive, should we switch to TRTExt at least? @makeRecordable def trkTracksTE(self, doRecord = False): return 'HLT_IDTrkTrack_{}_TRTExt'.format( self._suffix ) - + #Retrieve TrackParticle key - @property + @property def setting(self): return self._config - + def isSignature(self, signature): return (self._signatureType == signature) -class _GlobalSettings() : - def __init__( self ) : +class _GlobalSettings() : + def __init__( self ) : self._name = "" #To be appended to alg names - self._roi = "" + self._roi = "" self._configFT = None #Fast tracking configuration self._configPT = None #Precision tracking configuration self._doRecord = False #Allow recording of track collections - + self._isLRT = False + @property def FT(self): return self._configFT - + @property def PT(self): return self._configPT - + @property def RoI(self): return self._roi - + @property def name(self): return self._name - + @property def isRecordable(self): return self._doRecord + @property + def isLRT(self): + return self._isLRT + -class _Settings_electron( _GlobalSettings ): - def __init__( self ): +class _Settings_electron( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "electron" #To be appended to alg names - self._roi = "HLT_Roi_Electron" + self._roi = "HLT_Roi_Electron" self._configFT = _FastTracking( signatureType = 'electron', nameSuffix = 'Electron' ) self._configPT = _PrecisionTracking( signatureType = 'electron', nameSuffix = 'Electron' ) self._doRecord = True #Allow recording of track collections -class _Settings_muon( _GlobalSettings ): - def __init__( self ): +class _Settings_muon( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "muon" #To be appended to alg names - self._roi = "HLT_Roi_Muon" + self._roi = "HLT_Roi_Muon" self._configFT = _FastTracking( signatureType = 'muon', nameSuffix = 'Muon' ) self._configPT = _PrecisionTracking( signatureType = 'muon', nameSuffix = 'Muon' ) self._doRecord = True #Allow recording of track collections -class _Settings_muonIso( _GlobalSettings ): - def __init__( self ): +class _Settings_muonIso( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "muonIso" #To be appended to alg names - self._roi = "HLT_Roi_MuonIso" + self._roi = "HLT_Roi_MuonIso" self._configFT = _FastTracking( signatureType = 'muonIso', nameSuffix = 'MuonIso' ) self._configPT = _PrecisionTracking( signatureType = 'muonIso', nameSuffix = 'MuonIso' ) self._doRecord = True #Allow recording of track collections -class _Settings_muonLate( _GlobalSettings ): - def __init__( self ): +class _Settings_muonLate( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "muonLate" #To be appended to alg names self._roi = "HLT_Roi_Muon" #FIXME @@ -434,8 +646,8 @@ class _Settings_muonLate( _GlobalSettings ): self._configPT = _PrecisionTracking( signatureType = 'muon', nameSuffix = 'MuonLate' ) self._doRecord = True #Allow recording of track collections -class _Settings_muonFS( _GlobalSettings ): - def __init__( self ): +class _Settings_muonFS( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "muonFS" #To be appended to alg names self._roi = "HLT_Roi_Muon" #FIXME @@ -443,11 +655,21 @@ class _Settings_muonFS( _GlobalSettings ): self._configPT = _PrecisionTracking( signatureType = 'muon', nameSuffix = 'MuonFS' ) self._doRecord = True #Allow recording of track collections -class _Settings_muonCore( _GlobalSettings ): - def __init__( self ): +class _Settings_muonLRT( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "muonLRT" #To be appended to alg names + self._roi = "HLT_Roi_Muon" + self._configFT = _FastTracking( signatureType = 'muonLRT', nameSuffix = 'MuonLRT' ) + self._configPT = _PrecisionTracking( signatureType = 'muonLRT', nameSuffix = 'Muon' ) + self._doRecord = True #Allow recording of track collections + self._isLRT = True + +class _Settings_muonCore( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "muonCore" #To be appended to alg names - self._roi = "HLT_Roi_Muon" + self._roi = "HLT_Roi_Muon" self._configFT = _FastTracking( signatureType = 'muonCore', nameSuffix = 'MuonCore' ) self._configPT = _PrecisionTracking( signatureType = 'muonCore', nameSuffix = 'MuonCore' ) self._doRecord = True #Allow recording of track collections @@ -455,97 +677,252 @@ class _Settings_muonCore( _GlobalSettings ): class _Settings_tauTau( _GlobalSettings ): def __init__( self ): _GlobalSettings.__init__(self) - self._name = "tauTau" #To be appended to alg names - self._roi = "HLT_Roi_Tau" #FIXME: possibly different! + self._name = "tauTau" #To be appended to alg names + self._roi = "HLT_Roi_Tau" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'tau', nameSuffix = 'Tau' ) - #There should not be a need for tauCore PT! - self._configPT = _PrecisionTracking( signatureType = 'tau', nameSuffix = 'Tau' ) - self._doRecord = True #Allow recording of track collections + #There should not be a need for tauCore PT! + self._configPT = _PrecisionTracking( signatureType = 'tau', nameSuffix = 'Tau' ) + self._doRecord = True #Allow recording of track collections -class _Settings_tauCore( _GlobalSettings ): - def __init__( self ): +class _Settings_tauCore( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "tauCore" #To be appended to alg names - self._roi = "HLT_Roi_TauCore" #FIXME: possibly different! + self._roi = "HLT_Roi_TauCore" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'tauCore', nameSuffix = 'TauCore' ) #There should not be a need for tauCore PT! #self._configPT = #_PrecisionTracking( signatureType = 'tauCore', nameSuffix = 'TauCore' ) self._doRecord = True #Allow recording of track collections -class _Settings_tauIso( _GlobalSettings ): - def __init__( self ): +class _Settings_tauLRT( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "tauLRT" #To be appended to alg names + self._roi = "HLT_Roi_TauCore" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'tauLRT', nameSuffix = 'TauLRT' ) + #There should not be a need for tauCore PT! + #self._configPT = #_PrecisionTracking( signatureType = 'tauCore', nameSuffix = 'TauCore' ) + self._doRecord = True #Allow recording of track collections + self._isLRT = True + +class _Settings_tauIso( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "tauIso" #To be appended to alg names - self._roi = "RoiForTauIso" #FIXME: possibly different! + self._roi = "RoiForTauIso" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'tauIso', nameSuffix = 'TauIso' ) self._configPT = _PrecisionTracking( signatureType = 'tauIso', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently... self._doRecord = True #Allow recording of track collections #This might be redundant but lets keep them for the time being... -class _Settings_tauIsoBDT( _GlobalSettings ): - def __init__( self ): +class _Settings_tauId( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "tauId" #To be appended to alg names + self._roi = "HLT_Roi_Tau" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'tau', nameSuffix = 'Tau' ) + self._configPT = _PrecisionTracking( signatureType = 'tau', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently... + self._doRecord = False #FIXME: Do I need to record these? + +#This might be redundant but lets keep them for the time being... +class _Settings_tauEF( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "tauEF" #To be appended to alg names + self._roi = "HLT_Roi_TauIso" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'tauIso', nameSuffix = 'TauIso' ) # + self._configPT = _PrecisionTracking( signatureType = 'tau', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently... + self._doRecord = False #FIXME: Do I need to record these? + +#This might be redundant but lets keep them for the time being... +class _Settings_tauTrk( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "tauTrk" #To be appended to alg names + self._roi = "HLT_Roi_Tau" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'tau', nameSuffix = 'Tau' ) # + self._configPT = _PrecisionTracking( signatureType = 'tau', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently... + self._doRecord = False #FIXME: Do I need to record these? + +#This might be redundant but lets keep them for the time being... +class _Settings_tauTrkTwo( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "tauTrkTwo" #To be appended to alg names + self._roi = "HLT_Roi_TauIso" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'tauIso', nameSuffix = 'TauIso' ) # + self._configPT = _PrecisionTracking( signatureType = 'tau', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently... + self._doRecord = False #FIXME: Do I need to record these? + +class _Settings_tauIsoBDT( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "tauIsoBDT" #To be appended to alg names - self._roi = "HLT_Roi_TauIsoBDT" #FIXME: possibly different! + self._roi = "HLT_Roi_TauIsoBDT" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'tauIso', nameSuffix = 'TauIso' ) # self._configPT = _PrecisionTracking( signatureType = 'tauIso', nameSuffix = 'Tau' ) #Final collection is being renamed to just tau apparently... self._doRecord = False #FIXME: Do I need to record these? -class _Settings_bjet( _GlobalSettings ): - def __init__( self ): +class _Settings_bjet( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "bjet" #To be appended to alg names - self._roi = "HLT_Roi_Bjet" #FIXME: possibly different! - self._configFT = _FastTracking( signatureType = 'bjet', nameSuffix = 'Bjet' ) - self._configPT = _PrecisionTracking( signatureType = 'bjet', nameSuffix = 'Bjet' ) + self._roi = "HLT_Roi_Bjet" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'bjet', nameSuffix = 'Bjet' ) + self._configPT = _PrecisionTracking( signatureType = 'bjet', nameSuffix = 'Bjet' ) + self._doRecord = True + +class _Settings_bjetVtx( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "bjetVtx" #To be appended to alg names + self._roi = "HLT_Roi_Bjet" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'bjetVtx', nameSuffix = 'Bjet' ) + self._configPT = _PrecisionTracking( signatureType = 'bjetVtx', nameSuffix = 'Bjet' ) + self._doRecord = False + +class _Settings_bjetLRT( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "bjetLRT" #To be appended to alg names + self._roi = "HLT_Roi_Bjet" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'bjetLRT', nameSuffix = 'BjetLRT' ) + self._configPT = _PrecisionTracking( signatureType = 'bjetLRT', nameSuffix = 'BjetLRT' ) + self._isLRT = True self._doRecord = True -class _Settings_jet( _GlobalSettings ): - def __init__( self ): +class _Settings_jet( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "jet" #To be appended to alg names - self._roi = "HLT_Roi_jetFS" #FIXME: possibly different! + self._roi = "HLT_Roi_jetFS" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'fullScan', nameSuffix = 'FS' ) # self._configPT = _PrecisionTracking( signatureType = 'fullScan', nameSuffix = 'FS' ) #Final collection is being renamed to just tau apparently... - self._doRecord = True + self._doRecord = True + +class _Settings_minBias( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "minBias" #To be appended to alg names + self._roi = "HLT_Roi_MinBias" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'minBias', nameSuffix = 'MinBias' ) # + self._configPT = _PrecisionTracking( signatureType = 'minBias', nameSuffix = 'MinBias' ) #Final collection is being renamed to just tau apparently... + self._doRecord = True -class _Settings_minBias( _GlobalSettings ): - def __init__( self ): +class _Settings_minBias400( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "minBias" #To be appended to alg names - self._roi = "HLT_Roi_MinBias" #FIXME: possibly different! + self._roi = "HLT_Roi_MinBias" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'minBias400', nameSuffix = 'MinBias' ) # self._configPT = _PrecisionTracking( signatureType = 'minBias400', nameSuffix = 'MinBias' ) #Final collection is being renamed to just tau apparently... - self._doRecord = True + self._doRecord = True + +class _Settings_minBias2( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "minBias" #To be appended to alg names + self._roi = "HLT_Roi_MinBias" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'minBias2', nameSuffix = 'MinBias' ) # + self._configPT = _PrecisionTracking( signatureType = 'minBias2', nameSuffix = 'MinBias' ) #Final collection is being renamed to just tau apparently... + self._doRecord = True -class _Settings_beamSpot( _GlobalSettings ): - def __init__( self ): +class _Settings_beamSpot( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "beamSpot" #To be appended to alg names - self._roi = "HLT_Roi_FS" #FIXME: possibly different! + self._roi = "HLT_Roi_FS" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'beamSpot', nameSuffix = 'BeamSpot' ) # #PT probably isn't necessary for BS #self._configPT = _PrecisionTracking( signatureType = 'beamSpot', nameSuffix = 'BeamSpot' ) #Final collection is being renamed to just tau apparently... - self._doRecord = False + self._doRecord = False -class _Settings_fullScan( _GlobalSettings ): - def __init__( self ): +class _Settings_fullScan( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "fullScan" #To be appended to alg names - self._roi = "HLT_Roi_FS" #FIXME: possibly different! + self._roi = "HLT_Roi_FS" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'fullScan', nameSuffix = 'FS' ) # - self._doRecord = False + self._doRecord = False -class _Settings_cosmics( _GlobalSettings ): - def __init__( self ): +class _Settings_fullScan2( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "fullScan2" #To be appended to alg names + self._roi = "HLT_Roi_FS" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'fullScan2', nameSuffix = 'FS' ) # + self._doRecord = False + +class _Settings_fullScan500( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "fullScan500" #To be appended to alg names + self._roi = "HLT_Roi_FS" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'fullScan500', nameSuffix = 'FS' ) # + self._doRecord = False + +class _Settings_fullScanLRT( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "fullScanLrt" #To be appended to alg names + self._roi = "HLT_Roi_FS" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'fullScanLRT', nameSuffix = 'FSLRT' ) # + self._doRecord = False + self._isLRT = True + +class _Settings_cosmics( _GlobalSettings ): + def __init__( self ): _GlobalSettings.__init__(self) self._name = "cosmics" #To be appended to alg names - self._roi = "HLT_Roi_Cosmics" #FIXME: possibly different! + self._roi = "HLT_Roi_Cosmics" #FIXME: possibly different! self._configFT = _FastTracking( signatureType = 'cosmics', nameSuffix = 'Cosmic' ) # - self._doRecord = False + self._doRecord = False +class _Settings_cosmicsN( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "cosmicsN" #To be appended to alg names + self._roi = "HLT_Roi_Cosmics" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'cosmicsN', nameSuffix = 'Cosmic' ) # + self._doRecord = False -_ConfigSettings = { +class _Settings_bphysics( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "bphysics" #To be appended to alg names + self._roi = "HLT_Roi_Bjet" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'bphysics', nameSuffix = 'Bjet' ) #TODO: get correct nameSuffix + self._configPT = _PrecisionTracking( signatureType = 'bphysics', nameSuffix = 'Bjet' ) + self._doRecord = False + +class _Settings_bphysicsHighPt( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "bphysicsHighPt" #To be appended to alg names + self._roi = "HLT_Roi_Bjet" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'bphysHighPt', nameSuffix = 'Bjet' ) #TODO: Get correct nameSuffix + self._configPT = _PrecisionTracking( signatureType = 'bphysHighPt', nameSuffix = 'Bjet' ) + self._doRecord = False + +class _Settings_beamgas( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "beamgas" #To be appended to alg names + self._roi = "HLT_Roi_Beamgas" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'beamgas', nameSuffix = 'beamgas' ) #TODO: Get correct nameSuffix + self._configPT = _PrecisionTracking( signatureType = 'beamgas', nameSuffix = 'beamgas' ) + self._doRecord = False + +class _Settings_hadCalib( _GlobalSettings ): + def __init__( self ): + _GlobalSettings.__init__(self) + self._name = "hadcalib" #To be appended to alg names + self._roi = "HLT_Roi_hadCalib" #FIXME: possibly different! + self._configFT = _FastTracking( signatureType = 'hadCalib', nameSuffix = 'beamgas' ) #TODO: Get correct nameSuffix + self._configPT = _PrecisionTracking( signatureType = 'hadCalib', nameSuffix = 'beamgas' ) + self._doRecord = False + +_ConfigSettings = { "electron" : _Settings_electron(), #Muon signatures "muon" : _Settings_muon(), @@ -553,24 +930,42 @@ _ConfigSettings = { "muonCore" : _Settings_muonCore(), "muonFS" : _Settings_muonFS(), "muonLate" : _Settings_muonLate(), - + "muonLRT" : _Settings_muonLRT(), + #Tau signatures "tauTau" : _Settings_tauTau(), "tauCore" : _Settings_tauCore(), "tauIso" : _Settings_tauIso(), + "tauLRT" : _Settings_tauLRT(), + #Might be potentially removed + "tauId" : _Settings_tauId(), + "tauTrk" : _Settings_tauTrk(), + "tauTrkTwo" : _Settings_tauTrkTwo(), + "tauEF" : _Settings_tauEF(), "tauIsoBDT" : _Settings_tauIsoBDT(), "bjet" : _Settings_bjet(), + "bjetVtx" : _Settings_bjetVtx(), + "bjetLRT" : _Settings_bjetLRT(), "jet" : _Settings_jet(), - + "fullScan" : _Settings_fullScan(), - + "fullScan2" : _Settings_fullScan2(), + "fullScan500" : _Settings_fullScan500(), + "fullScanLRT" : _Settings_fullScanLRT(), + "beamSpot" : _Settings_beamSpot(), "cosmics" : _Settings_cosmics(), - "minBias" : _Settings_minBias(), - #"bphysics" : _Settings_bphysics(), + "minBias" : _Settings_minBias400(), + "minBias2" : _Settings_minBias2(), + "minBias0" : _Settings_minBias(), + "bphysics" : _Settings_bphysics(), + "bphysHighPt" : _Settings_bphysicsHighPt(), + + "beamgas" : _Settings_beamgas(), + "hadCalib" : _Settings_hadCalib() } - + #FTF Remap which eventually will be dropped once naming is aligned with signature settings remap = { #"Muon" : "muon", @@ -590,13 +985,14 @@ remap = { #"Jet" : "bjet", #"JetFS" : "fullScan", "FS" : "fullScan", - #"bjetVtx" : "bjetVtx", #"FullScan" : "fullScan", "BeamSpot" : "beamSpot", #"Bphysics" : "bphysics", #"Cosmic" : "cosmics", #"MinBias" : "minBias400", - #"minBias" : "minBias400" + #"minBias" : "minBias400", + "minBias400": "minBias", + "tau": "tauTau" } def remap_type( signature ): @@ -611,15 +1007,13 @@ def remap_type( signature ): #FIXME: rename to InDetTrigSignatureConfig ? def getInDetTrigConfig( name ): #Most of the remapping has been removed, should we also replace FS & BeamSpot? - rName = remap_type( name ) + rName = remap_type( name ) if rName in _ConfigSettings : return _ConfigSettings[rName] - else : - # don't just return None, and do nothing as this - # will just hide the error until people try to use + else : + # don't just return None, and do nothing as this + # will just hide the error until people try to use # the bad slice configuration raise Exception( "getInDetTrigConfig() called with incorrect non existent slice: "+rName ) - return None - - + return None diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py index 80ea72b7108..c380eefeec3 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/InDetSetup.py @@ -25,7 +25,7 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie #Add suffix to the algorithms signature = '_{}'.format( config.name ) - #Global keys/names for Trigger collections + #Global keys/names for Trigger collections from .InDetTrigCollectionKeys import TrigPixelKeys, TrigSCTKeys from InDetRecExample.InDetKeys import InDetKeys from TrigInDetConfig.TrigInDetConfig import InDetCacheNames @@ -48,7 +48,7 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie ( 'IDCInDetBSErrContainer_Cache' , InDetCacheNames.SCTFlaggedCondCacheKey ), ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ), ( 'TagInfo' , 'DetectorStore+ProcessingTags' )] - + viewAlgs.append( ViewDataVerifier ) # Load RDOs if we aren't loading bytestream @@ -103,7 +103,7 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie InDetPixelRawDataProvider.RDOCacheKey = InDetCacheNames.PixRDOCacheKey InDetPixelRawDataProvider.BSErrorsCacheKey = InDetCacheNames.PixBSErrCacheKey - from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel + from RegionSelector.RegSelToolConfig import makeRegSelTool_Pixel InDetPixelRawDataProvider.RegSelTool = makeRegSelTool_Pixel() @@ -150,7 +150,7 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie #Pixel clusterisation from InDetTrigRecExample.InDetTrigConfigRecLoadTools import TrigPixelLorentzAngleTool, TrigSCTLorentzAngleTool - + from SiClusterizationTool.SiClusterizationToolConf import InDet__ClusterMakerTool InDetClusterMakerTool = InDet__ClusterMakerTool(name = "InDetClusterMakerTool_" + signature, SCTLorentzAngleTool = TrigSCTLorentzAngleTool, @@ -218,7 +218,7 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie sct_ByteStreamErrorsToolSetup.setToolName("InDetSCT_BSErrorTool_" + signature) sct_ByteStreamErrorsToolSetup.setConfigTool(sct_ConfigurationConditionsToolSetup.getTool()) sct_ByteStreamErrorsToolSetup.setup() - InDetSCT_ConditionsSummaryToolWithoutFlagged.ConditionsTools.append(sct_ByteStreamErrorsToolSetup.getTool().getFullName()) + InDetSCT_ConditionsSummaryToolWithoutFlagged.ConditionsTools.append(sct_ByteStreamErrorsToolSetup.getTool().getFullName()) if (InDetTrigFlags.doPrintConfigurables()): print (InDetSCT_ConditionsSummaryToolWithoutFlagged) @@ -272,7 +272,7 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie SiSpacePointMakerTool = InDetSiSpacePointMakerTool, PixelsClustersName = TrigPixelKeys.Clusters, SpacePointsPixelName = TrigPixelKeys.SpacePoints, - SCT_ClustersName = TrigSCTKeys.Clusters, + SCT_ClustersName = TrigSCTKeys.Clusters, SpacePointsSCTName = TrigSCTKeys.SpacePoints, SpacePointsOverlapName = InDetKeys.OverlapSpacePoints(), ProcessPixels = DetFlags.haveRIO.pixel_on(), @@ -294,7 +294,8 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie condSeq += InDet__SiElementPropertiesTableCondAlg(name = "InDetSiElementPropertiesTableCondAlg") #FIXME have a flag for now set for True( as most cases call FTF) but potentially separate - if doFTF: + #do not add if the config is LRT + if doFTF: #Load signature configuration (containing cut values, names of collections, etc) #from .InDetTrigConfigSettings import getInDetTrigConfig #configSetting = getInDetTrigConfig( whichSignature ) @@ -305,12 +306,12 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie #TODO: eventually adapt IDTrigConfig also in FTF configuration (pass as additional param) theFTF = TrigFastTrackFinderBase("TrigFastTrackFinder_" + signature, config.FT.signatureType ) theFTF.RoIs = rois - theFTF.TracksName = config.FT.trkTracksFTF() + theFTF.TracksName = config.FT.trkTracksFTF() theFTF.doCloneRemoval = config.FT.setting.doCloneRemoval viewAlgs.append(theFTF) - + from TrigInDetConf.TrigInDetPostTools import InDetTrigParticleCreatorToolFTF from InDetTrigParticleCreation.InDetTrigParticleCreationConf import InDet__TrigTrackingxAODCnvMT @@ -319,8 +320,8 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie theTrackParticleCreatorAlg = InDet__TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature, TrackName = config.FT.trkTracksFTF(), ParticleCreatorTool = InDetTrigParticleCreatorToolFTF) - - + + #In general all FTF trackParticle collections are recordable except beamspot to save space theTrackParticleCreatorAlg.TrackParticlesName = config.FT.tracksFTF( doRecord = config.isRecordable ) @@ -328,4 +329,3 @@ def makeInDetAlgs( config = None, rois = 'EMViewRoIs', doFTF = True, viewVerifie return viewAlgs, ViewDataVerifier - diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py index 1c2f5221d90..b77ee2d99db 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingCutFlags.py @@ -28,21 +28,45 @@ def __muonFlags(): flags.doResMon = True return flags +def _lrtFlags(): + flags = __sliceFlags() + flags.maxHoles = 2 + flags.minClusters = 8 + flags.minSiNotShared = 6 + flags.maxShared = 1 + flags.maxPixelHoles = 1 + flags.maxSctHoles = 1 + flags.maxDoubleHoles = 0 + flags.maxPrimaryImpact = 300.0 * Units.mm # highlumi + flags.maxZImpact = 500.0 * Units.mm + flags.roadWidth = 5. + flags.seedFilterLevel = 1 + flags.nHolesMax = flags.maxHoles #fix them together as in the code being ported from. Should be safer if values are adjusted + flags.nHolesGapMax = 1 + flags.Xi2max = 9. + flags.Xi2maxNoAdd =25.0 + flags.nWeightedClustersMin = 8 + flags.doZBoundary = True + flags.maxdImpactSSSSeeds = 300.0 + + return flags + def createTrigTrackingFlags(): - flags = AthConfigFlags() + flags = AthConfigFlags() flags.addFlagsCategory('Trigger.InDetTracking.Electron', __electronFlags, prefix=True) flags.addFlagsCategory('Trigger.InDetTracking.Muon', __muonFlags, prefix=True) + flags.addFlagsCategory('Trigger.InDetTracking.LRT', _lrtFlags, prefix=True) return flags if __name__ == "__main__": from AthenaCommon.Logging import logging - _msg = logging.getLogger('AthConfigFlags') + _msg = logging.getLogger('AthConfigFlags') _msg.setLevel(2) from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags flags.Trigger.doID flags.dump(".*Trig") - + flags.Trigger.InDetTracking.Electron.minPT = 2.0 * Units.GeV newflags = flags.cloneAndReplace('InDet.Tracking', 'Trigger.InDetTracking.Electron') assert newflags.InDet.Tracking.minPT == 2.0 * Units.GeV - flags.dump() \ No newline at end of file + flags.dump() diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py index 85ea2ea7908..1941fb87622 100644 --- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py +++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py @@ -207,6 +207,7 @@ TriggerHLTListRun3 = [ ('xAOD::TrackParticleContainer#HLT_IDTrack_MuonLate_FTF', 'BS ESD AODFULL', 'Muon', 'inViews:MUEFLATEViewRoIs'), ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_MuonLate_FTFAux.', 'BS ESD AODFULL', 'Muon'), + ('xAOD::TrackParticleContainer#HLT_IDTrack_MuonLate_IDTrig', 'BS ESD AODFULL', 'Muon', 'inViews:MUEFLATEViewRoIs'), ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_MuonLate_IDTrigAux.', 'BS ESD AODFULL', 'Muon'), @@ -389,7 +390,7 @@ TriggerHLTListRun3 = [ ('xAOD::VertexAuxContainer#HLT_IDVertex_FSAux.', 'BS ESD AODFULL', 'Jet'), - # custom BeamSpot tracks - we don't want to write these out in general so this + # custom BeamSpot tracks - we don't want to write these out in general so this # is commented, if we want to write them out at some point, then these lines # should be uncommented and they should get written out # ('xAOD::TrackParticleContainer#HLT_IDTrack_BeamSpot_FTF', 'BS ESD AODFULL', 'ID', 'inViews:beamspotViewRoIs' ), @@ -474,6 +475,8 @@ TriggerHLTListRun3 = [ ('xAOD::TrackParticleContainer#HLT_IDTrack_Bjet_FTF', 'BS ESD AODFULL', 'Bjet', 'inViews:BTagViews'), ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_Bjet_FTFAux.', 'BS ESD AODFULL', 'Bjet'), + + # bjet Second Stage Precision tracks ('xAOD::TrackParticleContainer#HLT_IDTrack_Bjet_IDTrig', 'BS ESD AODFULL', 'Bjet', 'inViews:BTagViews'), ('xAOD::TrackParticleAuxContainer#HLT_IDTrack_Bjet_IDTrigAux.', 'BS ESD AODFULL', 'Bjet'), @@ -487,12 +490,12 @@ TriggerHLTListRun3 = [ # secvertex for b-jets ('xAOD::VertexContainer#HLT_BTaggingSecVtx', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet', 'inViews:BTagViews'), - ('xAOD::VertexAuxContainer#HLT_BTaggingSecVtxAux.', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet'), + ('xAOD::VertexAuxContainer#HLT_BTaggingSecVtxAux.', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet'), # btagvertex for b-jets ('xAOD::BTagVertexContainer#HLT_BTaggingJFVtx', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet', 'inViews:BTagViews'), ('xAOD::BTagVertexAuxContainer#HLT_BTaggingJFVtxAux.', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet'), - + # bjet b-tagging ('xAOD::BTaggingContainer#HLT_BTagging', 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet', 'inViews:BTagViews'), ('xAOD::BTaggingAuxContainer#HLT_BTaggingAux.'+BTagVars, 'BS ESD AODFULL AODSLIM AODVERYSLIM', 'Bjet'), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetTrackingConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetTrackingConfiguration.py index a4fc83070d1..c9b8d8987cb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetTrackingConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Bjet/BjetTrackingConfiguration.py @@ -33,11 +33,3 @@ def getSecondStageBjetTracking( inputRoI, dataObjects ): algSequence.append( seqAND("PrecisionTrackingSequence",PTAlgs) ) return [ algSequence, PTTrackParticles ] - - - - - - - - -- GitLab