def getExtrapolator(): # Set up with trigger extrapolator instance # FIXME: reconfigure for lower tolerance to speed up # from TrkExTools.AtlasExtrapolator import AtlasExtrapolator from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool from InDetTrigRecExample.InDetTrigConfigRecLoadTools import InDetTrigExtrapolator return Trk__ParticleCaloExtensionTool( "HLTPF_ParticleCaloExtension", Extrapolator=InDetTrigExtrapolator)
def __init__(self, suffix, buildconfigs=[], refconfigs=[], doTracks=False, doSum=False, doRegions=False, doCells=False, doTriggerMET=True, duplicateWarning=True, doOriginCorrClus=False): print(prefix, 'Creating MET config \'' + suffix + '\'') self.suffix = suffix self.doSum = doSum self.doTracks = doTracks self.doRegions = doRegions self.doCells = doCells, self.doOriginCorrClus = doOriginCorrClus self.doTriggerMET = doTriggerMET self.duplicateWarning = duplicateWarning # self.builders = {} self.buildlist = [] # need an ordered list # self.refiners = {} self.reflist = [] # need an ordered list # self.regions = {} self.reglist = [] # need an ordered list if doRegions: self.setupRegions(buildconfigs) # self.trkseltool = CfgMgr.InDet__InDetTrackSelectionTool( "IDTrkSel_MET", CutLevel="TightPrimary", maxZ0SinTheta=3, maxD0=2, minPt=500) self.trkvxtool = CfgMgr.CP__TrackVertexAssociationTool( "TrackVertexAssociationTool_MET", WorkingPoint="Nominal") self.trkisotool = CfgMgr.xAOD__TrackIsolationTool( "TrackIsolationTool_MET") self.trkisotool.TrackSelectionTool = self.trkseltool # As configured above from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool, Rec__ParticleCaloCellAssociationTool from TrkExTools.AtlasExtrapolator import AtlasExtrapolator CaloExtensionTool = Trk__ParticleCaloExtensionTool( Extrapolator=AtlasExtrapolator()) CaloCellAssocTool = Rec__ParticleCaloCellAssociationTool( ParticleCaloExtensionTool=CaloExtensionTool) self.caloisotool = CfgMgr.xAOD__CaloIsolationTool( "CaloIsolationTool_MET", saveOnlyRequestedCorrections=True, addCaloExtensionDecoration=False, ParticleCaloExtensionTool=CaloExtensionTool, ParticleCaloCellAssociationTool=CaloCellAssocTool) self.setupBuilders(buildconfigs) self.setupRefiners(refconfigs)
def getParticleCaloExtensionTool(): _name = sPrefix + 'ParticleCaloExtensionTool' from AthenaCommon.AppMgr import ToolSvc if _name in cached_instances: return cached_instances[_name] from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool tauParticleCaloExtensionTool = Trk__ParticleCaloExtensionTool( name=_name, Extrapolator=getAtlasExtrapolator()) ToolSvc += tauParticleCaloExtensionTool cached_instances[_name] = tauParticleCaloExtensionTool return tauParticleCaloExtensionTool
def TMEF_MuonCreatorTool(name="TMEF_MuonCreatorTool", **kwargs): from TrkExTools.AtlasExtrapolator import AtlasExtrapolator from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool pcExtensionTool = Trk__ParticleCaloExtensionTool( Extrapolator=AtlasExtrapolator()) kwargs.setdefault("ParticleCaloExtensionTool", pcExtensionTool) kwargs.setdefault('TrackParticleCreator', 'TMEF_TrkToTrackParticleConvTool') kwargs.setdefault("AmbiguityProcessor", CfgGetter.getPublicTool('TrigMuonAmbiProcessor')) kwargs.setdefault('MakeTrackAtMSLink', True) kwargs.setdefault("CaloMaterialProvider", "TMEF_TrkMaterialProviderTool") kwargs.setdefault("FillTimingInformation", False) kwargs.setdefault("MuonSelectionTool", "") kwargs.setdefault("TrackQuery", "TMEF_MuonTrackQuery") kwargs.setdefault("TrackSummaryTool", "TMEF_TrackSummaryTool") return CfgMgr.MuonCombined__MuonCreatorTool(name, **kwargs)
# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration from TrigEgammaHypo.TrigEgammaHypoConf import TrigEgammaFastElectronFexMT from AthenaCommon.SystemOfUnits import GeV, mm from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool from TrkExTools.AtlasExtrapolator import AtlasExtrapolator ParticleCaloExtensionTool= Trk__ParticleCaloExtensionTool(Extrapolator = AtlasExtrapolator()) # --------------------------------------------------------------- # class for common setups (like monitoring) class EgammaFastElectronFexBase(TrigEgammaFastElectronFexMT): __slots__ = [] def __init__(self, name): super(EgammaFastElectronFexBase,self).__init__(name) # Tracking cuts self.TrackPt = 1.0 * GeV self.TrackPtHighEt = 2.0 * GeV self.ClusEt = 20.0 * GeV self.CaloTrackdEtaNoExtrap = 0.5 self.CaloTrackdEtaNoExtrapHighEt = 0.1 # Calo-Tracking matching cuts self.CaloTrackdETA = 0.5 self.CaloTrackdPHI = 0.5 self.CaloTrackdEoverPLow = 0.0 self.CaloTrackdEoverPHigh = 999.0 self.ParticleCaloExtensionTool = ParticleCaloExtensionTool
def __init__(self, name="TrigMuSuperEF", **kwargs): kwargs.setdefault("doInsideOut", True) kwargs.setdefault("doOutsideIn", True) kwargs.setdefault("insideOutFirst", False) kwargs.setdefault("fullScan", False) kwargs.setdefault("StandaloneOnly", False) kwargs.setdefault("CombinerOnly", False) kwargs.setdefault("CaloTagOnly", False) kwargs.setdefault("TMEF_standaloneTrackTool", "TrigMuonEFStandaloneTrackTool") kwargs.setdefault("MuonCombinedTool", "TMEF_MuonCombinedTool") kwargs.setdefault("TrkToTrackParticleConvTool", "TMEF_TrkToTrackParticleConvTool") kwargs.setdefault("MuonCreatorTool", "TMEF_MuonCreatorTool") kwargs.setdefault("deltaEtaRoI", 0.2) kwargs.setdefault("deltaPhiRoI", 0.2) kwargs.setdefault("UseL2Info", False) kwargs.setdefault("DoCache", True) from TrkExTools.AtlasExtrapolator import AtlasExtrapolator from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool from MuonTGRecTools.MuonTGRecToolsConf import Muon__MuonSystemExtensionTool pcExtensionTool = Trk__ParticleCaloExtensionTool( Extrapolator=AtlasExtrapolator()) muonExtTool = Muon__MuonSystemExtensionTool( Extrapolator=AtlasExtrapolator(), ParticleCaloExtensionTool=pcExtensionTool) kwargs.setdefault("MuonSystemExtensionTool", muonExtTool) doTrigMuonEF = kwargs["doOutsideIn"] doTrigMuGirl = kwargs["doInsideOut"] doStandaloneOnly = kwargs["StandaloneOnly"] combinerOnly = kwargs["CombinerOnly"] # turn on seeded data decoding by default TriggerFlags.MuonSlice.doEFRoIDrivenAccess = True # make instance super(TrigMuSuperEFConfig, self).__init__(name, **kwargs) # setup monitoring depending on configuration monTools = [] # top level histograms use Combined Muons if not doStandaloneOnly: monTools.append(TrigMuSuperEFMonitoring()) monTools.append(TrigMuSuperEFValidationMonitoring()) # only add TrigMuonEF monitoring if it is run if doTrigMuonEF: if not combinerOnly: monTools.append(TrigMuonEFStandaloneToolMonitoring()) monTools.append(TrigMuonEFStandaloneToolValidationMonitoring()) if not doStandaloneOnly: monTools.append(TrigMuonEFCombinerToolMonitoring()) monTools.append(TrigMuonEFCombinerToolValidationMonitoring()) from AthenaCommon.CfgGetter import getPublicTool, getPublicToolClone self.StauCreatorTool = getPublicToolClone("TMEF_StauCreatorTool", "TMEF_MuonCreatorTool", BuildStauContainer=True) # only add TrigMuGirl monitoring if it is run if doTrigMuGirl: self.MuGirlTool = getPublicTool("TMEF_MuonInsideOutRecoTool") if self.UseL2Info: self.TMEF_standaloneTrackTool.useL2Hits = True else: self.TMEF_standaloneTrackTool.useL2Hits = False # always add timing monitoring timetool = TrigTimeHistToolConfig("Time") timetool.NumberOfHistBins = 100 timetool.TimerHistLimits = [0, 1000] monTools.append(timetool) self.AthenaMonTools = monTools
#==================================================================== # THE ATLAS EXTRAPOLATOR #==================================================================== # Configure the extrapolator. Maybe we should configure how the tracks loose energy in the ATLAS calorimeters? from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool from TrkExTools.AtlasExtrapolator import AtlasExtrapolator EOPAtlasExtrapolator = AtlasExtrapolator(name='EOPExtrapolator') ToolSvc += EOPAtlasExtrapolator #==================================================================== # THE TRACK TO CALORIMETER EXTRAPOLATION TOOL #==================================================================== EOPTrackToCaloExtensionTool = Trk__ParticleCaloExtensionTool( name="EOPParticleExtensionTool", ParticleType= "pion", ##What difference does the choice between pion and muon make? Extrapolator=EOPAtlasExtrapolator) ToolSvc += EOPTrackToCaloExtensionTool #==================================================================== # THE MC TRUTH CLASSIFICATION TOOL #==================================================================== from MCTruthClassifier.MCTruthClassifierConf import MCTruthClassifier CommonTruthClassifier = MCTruthClassifier( name="CommonTruthClassifier", ParticleCaloExtensionTool=EOPTrackToCaloExtensionTool) ToolSvc += CommonTruthClassifier #==================================================================== # AUGMENTATION TOOL
# This is truth particles so # MyUpdators += [AtlasMaterialEffectsUpdator] # for ID MyUpdators += [NoElossMaterialEffectsUpdator] # for ID MyUpdators += [NoElossMaterialEffectsUpdator] # for Calo MyUpdators += [NoElossMaterialEffectsUpdator] # for muon # MyUpdators += [NoElossMaterialEffectsUpdator] # for muon MySubUpdators = [] MySubUpdators += [NoElossMaterialEffectsUpdator.name()] # for ID # MySubUpdators += [AtlasMaterialEffectsUpdator.name()] # for ID MySubUpdators += [NoElossMaterialEffectsUpdator.name()] # for Calo MySubUpdators += [NoElossMaterialEffectsUpdator.name()] # for muon theAtlasExtrapolator.MaterialEffectsUpdators = MyUpdators theAtlasExtrapolator.SubMEUpdators = MySubUpdators from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool ClassifierParticleCaloExtensionTool = Trk__ParticleCaloExtensionTool( name="ClassifierParticleCaloExtensionTool", Extrapolator=theAtlasExtrapolator) ToolSvc += ClassifierParticleCaloExtensionTool from MCTruthClassifier.MCTruthClassifierConfig import firstSimCreatedBarcode from MCTruthClassifier.MCTruthClassifierConf import MCTruthClassifier MCTruthClassifier = MCTruthClassifier( name='MCTruthClassifier', barcodeG4Shift=firstSimCreatedBarcode(), ParticleCaloExtensionTool=ClassifierParticleCaloExtensionTool) ToolSvc += MCTruthClassifier
def __init__(self, suffix, buildconfigs=[], doPFlow=False, doTruth=False, trksel=None, modConstKey="", modClusColls={}): # Set some sensible defaults modConstKey_tmp = modConstKey modClusColls_tmp = modClusColls if doPFlow: if modConstKey_tmp == "": modConstKey_tmp = "CHSParticleFlowObjects" else: if modConstKey_tmp == "": modConstKey_tmp = "OriginCorr" if modClusColls_tmp == {}: modClusColls_tmp = { 'LCOriginCorrClusters': 'LCOriginTopoClusters', 'EMOriginCorrClusters': 'EMOriginTopoClusters' } if doTruth: print(prefix, 'Creating MET TruthAssoc config \'' + suffix + '\'') else: print(prefix, 'Creating MET Assoc config \'' + suffix + '\'') self.suffix = suffix self.doPFlow = doPFlow self.modConstKey = modConstKey_tmp self.modClusColls = modClusColls_tmp self.doTruth = doTruth from AthenaCommon.AppMgr import ToolSvc if trksel: self.trkseltool = trksel else: self.trkseltool = CfgMgr.InDet__InDetTrackSelectionTool( "IDTrkSel_METAssoc", CutLevel="TightPrimary", maxZ0SinTheta=3, maxD0=2, minPt=500) #if not hasattr(ToolSvc,self.trkseltool.name()): # ToolSvc += self.trkseltool self.trkisotool = CfgMgr.xAOD__TrackIsolationTool( "TrackIsolationTool_MET") self.trkisotool.TrackSelectionTool = self.trkseltool # As configured above #if not hasattr(ToolSvc,self.trkisotool.name()): # ToolSvc += self.trkisotool from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool, Rec__ParticleCaloCellAssociationTool from TrkExTools.AtlasExtrapolator import AtlasExtrapolator CaloExtensionTool = Trk__ParticleCaloExtensionTool( Extrapolator=AtlasExtrapolator()) CaloCellAssocTool = Rec__ParticleCaloCellAssociationTool( ParticleCaloExtensionTool=CaloExtensionTool) self.caloisotool = CfgMgr.xAOD__CaloIsolationTool( "CaloIsolationTool_MET", saveOnlyRequestedCorrections=True, addCaloExtensionDecoration=False, ParticleCaloExtensionTool=CaloExtensionTool, ParticleCaloCellAssociationTool=CaloCellAssocTool) #if not hasattr(ToolSvc,self.caloisotool.name()): # ToolSvc += self.caloisotool self.associators = {} self.assoclist = [] # need an ordered list # self.setupAssociators(buildconfigs)
def CaloExtensionBuilder(cutLevel="TightPrimary", minPT=100.0): try: from TrkExTools.AtlasExtrapolator import AtlasExtrapolator from TrackToCalo.TrackToCaloConf import Trk__ParticleCaloExtensionTool except: mlog.error( "could not import TrackToCaloConf.Trk__ParticleCaloExtensionTool") mlog.error("could not import TrkExTools.AtlasExtrapolator") mlog.error(traceback.format_exc()) try: from TrackToCalo.TrackToCaloConf import Trk__CaloExtensionBuilderAlg as CaloExtensionBuilderAlg except: mlog.error( "could not import TrackToCaloConf.Trk__CaloExtensionBuilderAlg") mlog.error(traceback.format_exc()) try: from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool except: mlog.error( "could not import InDetTrackSelectionTool.InDet__InDetTrackSelectionTool" ) mlog.error(traceback.format_exc()) try: from AthenaCommon.AppMgr import ToolSvc except: mlog.error("could not import ToolSvc") mlog.error(traceback.format_exc()) try: from AthenaCommon.AlgSequence import AlgSequence except: mlog.error("could not import AlgSequence") mlog.error(traceback.format_exc()) topSequence = AlgSequence() theAtlasExtrapolator = AtlasExtrapolator( name="CaloExtensionBuilderAtlasExtrapolator") theAtlasExtrapolator.DoCaloDynamic = False # this turns off dynamic pcExtensionTool = Trk__ParticleCaloExtensionTool( Extrapolator=theAtlasExtrapolator) ToolSvc += pcExtensionTool CaloExtensionBuilderTool = CaloExtensionBuilderAlg( LastCaloExtentionTool=pcExtensionTool) from AthenaCommon.BeamFlags import jobproperties TrackSelectionToolHC = InDet__InDetTrackSelectionTool( name="CaloExtensionBuilderTrackSelectionTool", minPt=minPT, CutLevel=cutLevel, minNSiHits=7 ) # PixelHits + SCTHits + PixelDeadSensors + SCTDeadSensors CaloExtensionBuilderTool.TrkSelection = TrackSelectionToolHC ToolSvc += CaloExtensionBuilderTool.LastCaloExtentionTool topSequence += CaloExtensionBuilderTool return True