Example #1
0
 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)
Example #2
0
    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)
Example #3
0
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
Example #4
0
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)
Example #5
0
# 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
Example #6
0
    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
Example #8
0
# 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
Example #9
0
    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)
Example #10
0
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