Пример #1
0
    def __init__(self, name="TrigMuonEFStandaloneTrackTool", **kwargs):
        super(TrigMuonEFStandaloneTrackToolConfig,
              self).__init__(name, **kwargs)

        self.CscClusterProvider = CfgGetter.getPublicTool(
            "CscThresholdClusterBuilderTool")

        self.SegmentsFinderTool = CfgGetter.getPublicToolClone(
            "TMEF_SegmentsFinderTool",
            "MooSegmentFinder",
            WriteIntermediateResults=False,
            HoughPatternFinder=CfgGetter.getPublicTool("MuonLayerHoughTool"),
            DoSegmentCombinations=True)

        CfgGetter.getPublicTool("MuonHoughPatternFinderTool").RecordAll = False
        CfgGetter.getPublicTool("MuonLayerHoughTool").DoTruth = False
        CfgGetter.getPublicTool("MooTrackFitter").SLFit = False

        # use seeded decoding
        if (TriggerFlags.MuonSlice.doEFRoIDrivenAccess()):
            self.useMdtSeededDecoding = True
            self.useRpcSeededDecoding = True
            self.useTgcSeededDecoding = True
            self.useCscSeededDecoding = True

            # use ROB based seeded decoding instead of PRD based
            self.useMdtRobDecoding = True
            self.useRpcRobDecoding = True
            self.useTgcRobDecoding = False  # neither available nor needed
            self.useCscRobDecoding = False  # neither available nor needed

        from MuonRecExample.MuonRecFlags import muonRecFlags
        self.useRpcData = muonRecFlags.doRPCs()
        self.useTgcData = muonRecFlags.doTGCs()
        self.useCscData = muonRecFlags.doCSCs()
        # to select barrel(useMdtData=2), endcap(useMdtData=3)
        if muonRecFlags.doMDTs():
            self.useMdtData = 1
        else:
            self.useMdtData = 0

        self.useTGCInPriorNextBC = False

        self.doTimeOutChecks = False
        self.doTimeOutGuard = False
        self.maxTgcHits = 0
        self.maxCscHits = 0
        self.maxRpcHits = 0
        self.maxMdtHits = 0
        self.doCache = True
        self.IgnoreMisalginedCSCs = True

        self.TrackBuilderTool = "TMEF_TrackBuilderTool"
        self.TrkSummaryTool = "TMEF_TrackSummaryTool"
        self.MuonCandidateTool = "TMEF_MuonCandidateTool"

        self.TrackToTrackParticleConvTool = "MuonParticleCreatorTool"
Пример #2
0
 
if not 'MuonDQADetFlags' in dir():
    printfunc ("MuonDQADetFlags.py: MuonDQADetFlags not yet imported - I import them now")
    from MuonDQAMonFlags.MuonDQAProperFlags import MuonDQADetFlags

MuonDQADetFlags.doMuonMonitoring = True

## --- sudetector specific flags
if muonRecFlags.doCSCs():
    MuonDQADetFlags.doCSCMon = True
    MuonDQADetFlags.doCSCClusMon = True
else:
    MuonDQADetFlags.doCSCMon = False
    MuonDQADetFlags.doCSCClusMon = False

if muonRecFlags.doMDTs():
    MuonDQADetFlags.doMDTMon = True
else:
    MuonDQADetFlags.doMDTMon = False

if muonRecFlags.doRPCs():    
    MuonDQADetFlags.doRPCL1Mon = True
    MuonDQADetFlags.doRPCMon = True
else:
    MuonDQADetFlags.doRPCL1Mon = False
    MuonDQADetFlags.doRPCMon = False
    
if muonRecFlags.doMDTs() and muonRecFlags.doRPCs():
    MuonDQADetFlags.doMDTRPCMon = True
else:
    MuonDQADetFlags.doMDTRPCMon = False
Пример #3
0
# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration

# MDT Calibration tools/services are defined in MuonCnvExample/python/MuonCalibConfig.py
# For backwards compatibility, they are instantiated here, but this whole module
# will be obsolete as soon as all clients have moved to the ConfiguredFactory and all C++ declares the Calib Services & Tools
from AthenaCommon.Logging import logging
logging.getLogger().info("Importing %s", __name__)

from AthenaCommon.CfgGetter import getPublicTool,getService,getPrivateTool,getAlgorithm
from MuonRecExample.MuonRecFlags import muonRecFlags
muonRecFlags.setDefaults()

if muonRecFlags.doCSCs():
    CscCalibTool = getPublicTool("CscCalibTool")

if muonRecFlags.doMDTs():
    from MuonRecExample import MuonAlignConfig
    from MuonCnvExample import MuonCalibConfig
    MuonCalibConfig.setupMdtCondDB()
Пример #4
0
    def __init__(self, name="TrigMuonEFStandaloneTrackTool", **kwargs):
        super(TrigMuonEFStandaloneTrackToolConfig,
              self).__init__(name, **kwargs)

        if MuonGeometryFlags.hasCSC():
            self.CscClusterProvider = CfgGetter.getPublicTool(
                "CscThresholdClusterBuilderTool")

        self.SegmentsFinderTool = CfgGetter.getPublicToolClone(
            "TMEF_SegmentsFinderTool",
            "MooSegmentFinder",
            HoughPatternFinder=CfgGetter.getPublicTool("MuonLayerHoughTool"),
            Csc2dSegmentMaker=("Csc2dSegmentMaker/Csc2dSegmentMaker"
                               if MuonGeometryFlags.hasCSC() else ""),
            Csc4dSegmentMaker=("Csc4dSegmentMaker/Csc4dSegmentMaker"
                               if MuonGeometryFlags.hasCSC() else ""))

        CfgGetter.getPublicTool("MuonHoughPatternFinderTool").RecordAll = False
        CfgGetter.getPublicTool("MuonLayerHoughTool").DoTruth = False
        CfgGetter.getPublicTool("MooTrackFitter").SLFit = False

        self.MdtRawDataProvider = "TMEF_MdtRawDataProviderTool"
        self.CscRawDataProvider = "TMEF_CscRawDataProviderTool"
        self.RpcRawDataProvider = "TMEF_RpcRawDataProviderTool"
        self.TgcRawDataProvider = "TMEF_TgcRawDataProviderTool"

        #Need to run non-MT version of decoding tools in the trigger since the caching is not available in MT versions
        #Need different PRD container names to run offline and trigger in same jobs, but there are many tools that depend on these containers...
        #Since this is legacy code only used for validation comparisons against the Run 3 triggers, will do the not-particularly-nice solution of
        #creating containers with unique names only if we are running offline and trigger in the same jobs, and otherwise just use the default names.
        #This means that the trigger output when running the trigger as part of RAWtoESD is not 100% correct (the pattern finding uses the correct containers,
        #so it's a small effect overall anyway), but that's an use case not currently needed for trigger validation purposes
        from AthenaCommon.AppMgr import ToolSvc
        #MDT
        from MuonMDT_CnvTools.MuonMDT_CnvToolsConf import Muon__MdtRdoToPrepDataTool
        from MuonCSC_CnvTools.MuonCSC_CnvToolsConf import Muon__CscRdoToCscPrepDataTool
        from MuonTGC_CnvTools.MuonTGC_CnvToolsConf import Muon__TgcRdoToPrepDataTool
        from MuonRPC_CnvTools.MuonRPC_CnvToolsConf import Muon__RpcRdoToPrepDataTool
        MdtRdoToMdtPrepDataTool = Muon__MdtRdoToPrepDataTool(
            name="TrigEFMdtRdoToPrepDataTool")
        CscRdoToCscPrepDataTool = Muon__CscRdoToCscPrepDataTool(
            name="TrigEFCscRdoToPrepDataTool")
        TgcRdoToTgcPrepDataTool = Muon__TgcRdoToPrepDataTool(
            name="TrigEFTgcRdoToPrepDataTool")
        RpcRdoToRpcPrepDataTool = Muon__RpcRdoToPrepDataTool(
            name="TrigEFRpcRdoToPrepDataTool")
        if not rec.doRDOTrigger and rec.doESD:
            MdtRdoToMdtPrepDataTool.OutputCollection = "TrigMDT_DriftCircles"
            CscRdoToCscPrepDataTool.OutputCollection = "TrigCSC_Measurements"
            TgcRdoToTgcPrepDataTool.OutputCollection = "TrigTGC_Measurements"
            TgcRdoToTgcPrepDataTool.OutputCoinCollection = "TrigerT1CoinDataCollection"
            RpcRdoToRpcPrepDataTool.TriggerOutputCollection = "TrigRPC_Measurements"
            #InputCollection is really the output RPC coin collection...
            RpcRdoToRpcPrepDataTool.InputCollection = "TrigRPC_triggerHits"
        else:
            MdtRdoToMdtPrepDataTool.OutputCollection = "MDT_DriftCircles"
            CscRdoToCscPrepDataTool.OutputCollection = "CSC_Measurements"
            TgcRdoToTgcPrepDataTool.OutputCollection = "TGC_Measurements"
            TgcRdoToTgcPrepDataTool.OutputCoinCollection = "TrigT1CoinDataCollection"
            RpcRdoToRpcPrepDataTool.TriggerOutputCollection = "RPC_Measurements"
            RpcRdoToRpcPrepDataTool.InputCollection = "RPC_triggerHits"

        ToolSvc += MdtRdoToMdtPrepDataTool
        self.MdtPrepDataContainer = MdtRdoToMdtPrepDataTool.OutputCollection
        self.MdtPrepDataProvider = MdtRdoToMdtPrepDataTool
        #CSC
        ToolSvc += CscRdoToCscPrepDataTool
        self.CscPrepDataProvider = CscRdoToCscPrepDataTool
        #We use the clusters not the PRD hits directly for CSCs
        self.CscPrepDataContainer = "CSC_Clusters"
        #TGC
        ToolSvc += TgcRdoToTgcPrepDataTool
        self.TgcPrepDataProvider = TgcRdoToTgcPrepDataTool
        self.TgcPrepDataContainer = TgcRdoToTgcPrepDataTool.OutputCollection
        #RPC
        ToolSvc += RpcRdoToRpcPrepDataTool
        self.RpcPrepDataProvider = RpcRdoToRpcPrepDataTool
        self.RpcPrepDataContainer = RpcRdoToRpcPrepDataTool.TriggerOutputCollection

        self.DecodeMdtBS = DetFlags.readRDOBS.MDT_on()
        self.DecodeRpcBS = DetFlags.readRDOBS.RPC_on()
        self.DecodeTgcBS = DetFlags.readRDOBS.TGC_on()
        if MuonGeometryFlags.hasCSC():
            self.DecodeCscBS = DetFlags.readRDOBS.CSC_on()

        # use seeded decoding
        if (TriggerFlags.MuonSlice.doEFRoIDrivenAccess()):
            self.useMdtSeededDecoding = True
            self.useRpcSeededDecoding = True
            self.useTgcSeededDecoding = True
            if MuonGeometryFlags.hasCSC(): self.useCscSeededDecoding = True

            # use ROB based seeded decoding instead of PRD based
            self.useTgcRobDecoding = False  # neither available nor needed
            self.useCscRobDecoding = False  # neither available nor needed

        self.useRpcData = muonRecFlags.doRPCs()
        self.useTgcData = muonRecFlags.doTGCs()
        self.useCscData = muonRecFlags.doCSCs()
        # to select barrel(useMdtData=2), endcap(useMdtData=3)
        if muonRecFlags.doMDTs():
            self.useMdtData = 1
        else:
            self.useMdtData = 0

        self.useTGCInPriorNextBC = False

        self.doTimeOutChecks = False
        self.doTimeOutGuard = False
        self.maxTgcHits = 0
        self.maxCscHits = 0
        self.maxRpcHits = 0
        self.maxMdtHits = 0
        self.doCache = True
        self.IgnoreMisalginedCSCs = False

        self.TrackBuilderTool = "TMEF_TrackBuilderTool"
        self.TrkSummaryTool = "TMEF_TrackSummaryTool"
        self.MuonCandidateTool = "TMEF_MuonCandidateTool"

        self.TrackToTrackParticleConvTool = "MuonParticleCreatorTool"

        import MuonCondAlg.MdtCondDbAlgConfig  # noqa: F401 (MDT conditions, needed for the MuonStationIntersectSvc)
Пример #5
0
def configure(config):
    """Configure the calibration input and output.
    If both segmentsKey and segmentCombisKey are defined, segmentsKey has priority."""
    global topSequence, ToolSvc, MdtCalibTool, MuonSegmentToCalibSegment, MuonCalibAlg, MuonCalibTool, MuonCalibExtraTreeAlg, muonRecFlags
    log.info("Configuring with %s", config)

    calibMode = muonCalibFlags.Mode()
    #
    # Configure MuonSegmentToCalibSegment
    #
    try:
        MuonSegmentToCalibSegment = topSequence.MuonSegmentToCalibSegment
    except AttributeError:
        from MuonCalibPatRec.MuonCalibPatRecConf import MuonCalib__MuonSegmentToCalibSegment
        MuonSegmentToCalibSegment = MuonCalib__MuonSegmentToCalibSegment(
            "MuonSegmentToCalibSegment")
        topSequence += MuonSegmentToCalibSegment
    MuonSegmentToCalibSegment.UseCscSegments = muonRecFlags.doCSCs()

    # segmentsKey
    try:
        segmentsKey = config.segmentsKey
    except AttributeError:
        MuonSegmentToCalibSegment.ReadSegments = False
    else:
        MuonSegmentToCalibSegment.SegmentLocation = segmentsKey
        MuonSegmentToCalibSegment.ReadSegments = True
    # segmentCombisKey
    try:
        segmentCombisKey = config.segmentCombisKey
    except AttributeError:
        pass
    else:
        MuonSegmentToCalibSegment.SegmentCombiLocation = segmentCombisKey

    #
    # MuonCalibAlg
    #
    try:
        MuonCalibAlg = topSequence.MuonCalibAlg
    except AttributeError:
        from MuonCalibAlgs.MuonCalibAlgsConf import MuonCalib__MuonCalibAlg
        MuonCalibAlg = MuonCalib__MuonCalibAlg("MuonCalibAlg")
        topSequence += MuonCalibAlg
    if beamFlags.beamType() == 'singlebeam' or beamFlags.beamType(
    ) == 'cosmics':
        MuonCalibAlg.addTriggerTag = False
    else:
        MuonCalibAlg.addTriggerTag = recFlags.doTrigger()
    MuonCalibAlg.doMDTs = muonRecFlags.doMDTs()
    MuonCalibAlg.doCSCs = muonRecFlags.doCSCs()
    MuonCalibAlg.doRPCs = muonRecFlags.doRPCs()
    MuonCalibAlg.doTGCs = muonRecFlags.doTGCs()
    try:
        eventTag = config.eventTag
    except AttributeError:
        pass
    else:
        MuonCalibAlg.EventTag = eventTag

    MuonCalibAlg.doTruth = recFlags.doTruth()

    if calibMode == 'ntuple' or calibMode == 'trackNtuple':
        from MuonCalibTools.MuonCalibToolsConf import MuonCalib__PatternNtupleMaker
        MuonCalibTool = MuonCalib__PatternNtupleMaker()
        if calibMode == 'trackNtuple':
            if muonRecFlags.doSegmentsOnly():
                log.warning(
                    "Making ntuple instead of trackNtuple because making segments only"
                )
                muonCalibFlags.Mode = 'ntuple'
            else:
                MuonCalibTool.DelayFinish = True
                try:
                    MuonCalibExtraTreeAlg = topSequence.MuonCalibExtraTreeAlg
                except AttributeError:
                    from MuonCalibExtraTreeAlg.MuonCalibExtraTreeAlgConf import MuonCalib__MuonCalibExtraTreeAlg
                    MuonCalibExtraTreeAlg = MuonCalib__MuonCalibExtraTreeAlg(
                        "MuonCalibExtraTreeAlg")
                    MuonCalibExtraTreeAlg.NtupleName = "PatternNtupleMaker"
                    topSequence += MuonCalibExtraTreeAlg

                # doPhi
                try:
                    doPhi = config.doPhi
                except AttributeError:
                    doPhi = False
                MuonCalibExtraTreeAlg.doPhi = doPhi
                # doTracks
                try:
                    doTracks = config.doTracks
                except AttributeError:
                    doTracks = False
                MuonCalibExtraTreeAlg.doTracks = doTracks
                # patternsKey
                try:
                    patternsKey = config.patternsKey
                except AttributeError:
                    pass
                else:
                    MuonCalibExtraTreeAlg.PatternLocation = patternsKey
                # tracksKey
                try:
                    tracksKey = config.tracksKey
                except AttributeError:
                    pass
                else:
                    MuonCalibExtraTreeAlg.TrackLocation = tracksKey

    else:  # other calib modes
        from MdtCalibTools.MdtCalibToolsConf import MuonCalib__MdtCalibTool
        MuonCalibTool = MuonCalib__MdtCalibTool()
        if calibMode == 'regionNtuple':
            from MdtCalibTools.MdtCalibToolsConf import MuonCalib__MdtCalibNtupleMakerTool
            MdtCalibTool = MuonCalib__MdtCalibNtupleMakerTool()
        else:
            raise RuntimeError("Unknown Muon Calibration Mode: %r" % calibMode)

        ToolSvc += MdtCalibTool
        MuonCalibTool.MdtCalibTool = MdtCalibTool

    ToolSvc += MuonCalibTool
    MuonCalibAlg.MuonCalibTool = MuonCalibTool
Пример #6
0
    def __init__(self, name="TrigMuonEFSegmentFinderCosmic"):
        super(TrigMuonEFSegmentFinderCosmicConfig, self).__init__(name)

        self.CscClusterProvider = CfgGetter.getPublicTool(
            "CscThresholdClusterBuilderTool")

        from MuonRecExample.MooreTools import MooSegmentCombinationFinder
        self.SegmentsFinderTool = MooSegmentCombinationFinder(
            "SegmentsFinderToolCosmic", WriteIntermediateResults=False)

        # use seeded decoding
        if (TriggerFlags.MuonSlice.doEFRoIDrivenAccess()):
            self.useMdtSeededDecoding = True
            self.useRpcSeededDecoding = True
            self.useTgcSeededDecoding = True
            self.useCscSeededDecoding = True

            # use ROB based seeded decoding instead of PRD based
            self.useMdtRobDecoding = True
            self.useRpcRobDecoding = True
            self.useTgcRobDecoding = False  # neither available nor needed
            self.useCscRobDecoding = False  # neither available nor needed

        self.SegmentsFinderTool.HoughPatternFinder.RecordAll = False
        #self.SegmentsFinderTool.HoughPatternFinder.OutputLevel = DEBUG
        self.SegmentsFinderTool.HoughPatternFinder.muonHoughPatternTool = TMEF_MuonHoughPatternToolCosmic
        self.SegmentsFinderTool.HoughPatternFinder.muonCombinePatternTool = TMEF_MuonCombinePatternToolCosmic
        self.SegmentsFinderTool.MdtSegmentMaker = TMEF_MuonPatternSegmentMakerCosmic
        self.SegmentsFinderTool.SegmentCombiner = TMEF_MuonCurvedSegmentCombinerCosmic
        #self.SegmentsFinderTool.SegmentCombinationCleaner = TMEF_MuonSegmentCombinationCleanerToolCosmic

        #self.SegmentsFinderTool.DoSummary = False
        #self.SegmentsFinderTool.SegmentCombiner.DoSummary = True
        #self.print_level = 5
        self.histoPathBase = ""
        self.useRpcData = muonRecFlags.doRPCs()
        self.useTgcData = muonRecFlags.doTGCs()
        self.useCscData = muonRecFlags.doCSCs()
        # to select barrel(useMdtData=2), endcap(useMdtData=3)
        if muonRecFlags.doMDTs():
            self.useMdtData = 1
        else:
            self.useMdtData = 0

        self.deltaEtaRoI = 1.
        self.deltaPhiRoI = 1.
        self.useTGCInPriorNextBC = True

        validation_ms = TrigMuonEFSegmentFinderValidationMonitoring()
        online_ms = TrigMuonEFSegmentFinderOnlineMonitoring()
        cosmic_ms = TrigMuonEFSegmentFinderCosmicMonitoring()
        self.AthenaMonTools = [validation_ms, online_ms, cosmic_ms]
        self.doMyTiming = False
        time = TrigTimeHistToolConfig("Time")
        time.TimerHistLimits = [0, 10000]
        time.NumberOfHistBins = 1000
        self.AthenaMonTools += [time]
        self.doTimeOutChecks = False
        self.doTimeOutGuard = False
        self.maxTgcHits = 0
        self.maxCscHits = 0
        self.maxRpcHits = 0
        self.maxMdtHits = 0
        self.doCache = True