Skip to content
Snippets Groups Projects
Commit e1997690 authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'master-LRTConfig-leaveTrackCuts' into 'master'

Add Large Radius Tracking configuration for Fast Track Finder

See merge request atlas/athena!38628
parents 8399e5fc e44aeb54
No related branches found
No related tags found
No related merge requests found
Showing
with 803 additions and 304 deletions
......@@ -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
......@@ -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
......
......@@ -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 ('************************************************************************************')
......@@ -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
......
This diff is collapsed.
......@@ -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
......@@ -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()
......@@ -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'),
......
......@@ -33,11 +33,3 @@ def getSecondStageBjetTracking( inputRoI, dataObjects ):
algSequence.append( seqAND("PrecisionTrackingSequence",PTAlgs) )
return [ algSequence, PTTrackParticles ]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment