diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py index 7e9f9a75cfbdd6c5da6e207dbdba1e1ad9ab3464..cb2137050e04c9f0e14d3baf9d1e433600844c00 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py +++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py @@ -353,13 +353,9 @@ def MuonCombinedToolCfg(flags, name="MuonCombinedTool",**kwargs): return result def MuonCombinedFitTagToolCfg(flags, name="MuonCombinedFitTagTool",**kwargs): - # if TriggerFlags.MuonSlice.doTrigMuonConfig: - # from TrkExRungeKuttaIntersector.TrkExRungeKuttaIntersectorConf import Trk.IntersectorWrapper as Propagator - # TrigMuonPropagator = Propagator(name = 'TrigMuonPropagator') - # ToolSvc += TrigMuonPropagator - # kwargs.setdefault("TrackBuilder", getPublicToolClone("TrigMuonTrackBuilder", "CombinedMuonTrackBuilder", Propagator=TrigMuonPropagator) ) - # kwargs.setdefault("VertexContainer", "") - # else: + if flags.Muon.MuonTrigger: + kwargs.setdefault("VertexContainer", "") + result = CombinedMuonTrackBuilderCfg(flags) tool = result.popPrivateTools() result.addPublicTool(tool) diff --git a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py index 5bba73d06b95dbab611e0f6bc356a66640b3247e..f2eb3ba6ed454f497665982d688ccb5ea1c426f2 100644 --- a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py +++ b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py @@ -58,7 +58,16 @@ def muCombCfg(flags, postFix="", useBackExtrp=True): def l2MuCombRecoCfg(flags, name="L2MuCombReco"): from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco - reco = InViewReco(name) + ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool + viewMakerAlg = CompFactory.EventViewCreatorAlgorithm("IM"+name, + ViewFallThrough = True, + RoIsLink = 'initialRoI', + RoITool = ViewCreatorFetchFromViewROITool(RoisWriteHandleKey="Roi_L2SAMuon", InViewRoIs = "forID", ViewToFetchFrom = "L2MuFastRecoViews"), + InViewRoIs = name+'RoIs', + Views = name+'Views', + ViewNodeName = name+"InView") + + reco = InViewReco(name, viewMaker=viewMakerAlg) acc, alg = muCombCfg(flags) alg.L2StandAloneMuonContainerName=muFastInfo diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py index 8bdd03dc0b28f5dd8047f1c63a5179cee33f2b76..399678f5344a6031092622c1dd6149f8b9b881f2 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Electron/generateElectron.py @@ -96,6 +96,6 @@ def generateChains( flags, chainDict ): # # # offline egamma emptyStep = ChainStep(name="EmptyElStep", Sequences=[EmptyMenuSequence("EmptyElStep")], chainDicts=[chainDict]) - chain = Chain(chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[fastCaloStep, fastInDetStep, emptyStep]) + chain = Chain(chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[fastCaloStep, fastInDetStep, emptyStep, emptyStep]) return chain diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py index ccf2337ed4f856e8f3da26e40e84c1b1e12ce41d..8a67bee635ff1b8fc0cfcbccd308b5a83abd4ccc 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py @@ -5,7 +5,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from TrigL2MuonSA.TrigL2MuonSAConfig_newJO import l2MuFastAlgCfg, l2MuFastHypoCfg from TrigmuComb.TrigmuCombConfig_newJO import l2MuCombRecoCfg, l2MuCombHypoCfg -from TrigMuonHypoMT.TrigMuonHypoMTConfig import TrigMufastHypoToolFromDict, TrigmuCombHypoToolFromDict, TrigMuonEFMSonlyHypoToolFromDict +from TrigMuonHypoMT.TrigMuonHypoMTConfig import TrigMufastHypoToolFromDict, TrigmuCombHypoToolFromDict, TrigMuonEFMSonlyHypoToolFromDict, TrigMuonEFCombinerHypoToolFromDict from TrigInDetConfig.TrigInDetConfig import trigInDetCfg from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainDict @@ -20,6 +20,18 @@ def fakeHypoAlgCfg(flags, name="FakeHypoForMuon"): HLTTest__TestHypoAlg=CompFactory.HLTTest.TestHypoAlg return HLTTest__TestHypoAlg( name, Input="" ) +def EFMuonCBViewDataVerifierCfg(): + EFMuonCBViewDataVerifier = CompFactory.AthViews.ViewDataVerifier("VDVEFCBMuon") + EFMuonCBViewDataVerifier.DataObjects = [( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+HLT_IDTrack_Muon_FTF' ), + ( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ), + ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_Measurements' ), + ( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ), + ( 'MuonCandidateCollection' , 'StoreGateSvc+MuonCandidates' ), + ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' )] + result = ComponentAccumulator() + result.addEventAlgo(EFMuonCBViewDataVerifier) + return result + def EFMuonViewDataVerifierCfg(): EFMuonViewDataVerifier = CompFactory.AthViews.ViewDataVerifier("VDVEFMuon") EFMuonViewDataVerifier.DataObjects = [( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ), @@ -112,11 +124,11 @@ def MuonTrackParticleCnvCfg(flags, name = "MuonTrackParticleCnvAlg",**kwargs): result.addEventAlgo( trackcnv, primary=True ) return result -def efMuMSHypoCfg(flags, name="UNSPECIFIED", inputMuons="UNSPECIFIED"): +def efMuHypoCfg(flags, name="UNSPECIFIED", inputMuons="UNSPECIFIED"): TrigMuonEFHypoAlg = CompFactory.TrigMuonEFHypoAlg - efMSHypo = TrigMuonEFHypoAlg(name) - efMSHypo.MuonDecisions = inputMuons - return efMSHypo + efHypo = TrigMuonEFHypoAlg(name) + efHypo.MuonDecisions = inputMuons + return efHypo def generateChains( flags, chainDict ): @@ -249,78 +261,129 @@ def generateChains( flags, chainDict ): l2muCombStep = ChainStep( name=stepL2CBName, Sequences=[l2muCombSequence], chainDicts=[chainDict] ) - if 'msonly' in chainDict['chainName'] or True: - #only runningn in MS-only chains for now - #EF MS only - stepEFMSName = 'EFMSMuon' - stepEFMSReco, stepEFMSView = createStepView(stepEFMSName) + #EF MS only + stepEFMSName = 'EFMSMuon' + stepEFMSReco, stepEFMSView = createStepView(stepEFMSName) - #Clone and replace offline flags so we can set muon trigger specific values - muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon') - muonflags.Muon.useTGCPriorNextBC=True - muonflags.Muon.enableErrorTuning=False - muonflags.Muon.MuonTrigger=True - muonflags.Muon.SAMuonTrigger=True - muonflags.lock() + #Clone and replace offline flags so we can set muon trigger specific values + muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon') + muonflags.Muon.useTGCPriorNextBC=True + muonflags.Muon.enableErrorTuning=False + muonflags.Muon.MuonTrigger=True + muonflags.Muon.SAMuonTrigger=True + muonflags.lock() - accMS = ComponentAccumulator() - accMS.addSequence(stepEFMSView) + accMS = ComponentAccumulator() + accMS.addSequence(stepEFMSView) + + from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco + ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool + viewName="EFMuMSReco" + viewMakerAlg = CompFactory.EventViewCreatorAlgorithm("IM"+viewName, + ViewFallThrough = True, + RoIsLink = 'initialRoI', + RoITool = ViewCreatorFetchFromViewROITool(RoisWriteHandleKey="Roi_L2SAMuonForEF", InViewRoIs = "forMS", ViewToFetchFrom = "L2MuFastRecoViews"), + InViewRoIs = viewName+'RoIs', + Views = viewName+'Views', + ViewNodeName = viewName+"InView") + recoMS = InViewReco(name=viewName, viewMaker=viewMakerAlg) + recoMS.inputMaker().RequireParentView = True + + #Probably this block will eventually need to move somewhere more central + from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg + accMS.merge( BeamPipeGeometryCfg(flags) ) + + from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg + accMS.merge(PixelGeometryCfg(flags)) + + from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg + accMS.merge(SCT_GeometryCfg(flags)) + + from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg + accMS.merge(TRT_GeometryCfg(flags)) + + from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg + accMS.merge(TrackingGeometrySvcCfg(flags)) + ################### + + EFMuonViewDataVerifier = EFMuonViewDataVerifierCfg() + recoMS.mergeReco(EFMuonViewDataVerifier) + + from MuonConfig.MuonSegmentFindingConfig import MooSegmentFinderAlgCfg + segCfg = MooSegmentFinderAlgCfg(muonflags,name="TrigMooSegmentFinder",UseTGCNextBC=False, UseTGCPriorBC=False) + recoMS.mergeReco(segCfg) + + from MuonConfig.MuonTrackBuildingConfig import MuonTrackBuildingCfg + trkCfg = MuonTrackBuildingCfg(muonflags, name="TrigMuPatTrackBuilder") + recoMS.mergeReco(trkCfg) + + cnvCfg = MuonTrackParticleCnvCfg(muonflags, name = "TrigMuonTrackParticleCnvAlg") + recoMS.mergeReco(cnvCfg) + + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg + candCfg = MuonCombinedMuonCandidateAlgCfg(muonflags, name = "TrigMuonCandidateAlg") + recoMS.mergeReco(candCfg) + + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg + creatorCfg = MuonCreatorAlgCfg(muonflags, name = "TrigMuonCreatorAlg") + recoMS.mergeReco(creatorCfg) + + accMS.merge(recoMS, sequenceName=stepEFMSReco.getName()) + + efmuMSHypo = efMuHypoCfg( muonflags, + name = 'TrigMuonEFMSonlyHypo', + inputMuons = "Muons" ) + + accMS.addEventAlgo(efmuMSHypo, sequenceName=stepEFMSView.getName()) + + efmuMSSequence = CAMenuSequence(accMS, + HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict) + + efmuMSStep = ChainStep( name=stepEFMSName, Sequences=[efmuMSSequence], chainDicts=[chainDict] ) + + + #EF combined muons + if 'msonly' not in chainDict['chainName']: + stepEFCBName = 'EFCBMuon' + stepEFCBReco, stepEFCBView = createStepView(stepEFCBName) + accCB = ComponentAccumulator() + accCB.addSequence(stepEFCBView) + from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco - recoMS = InViewReco("EFMuMSReco") - recoMS.inputMaker().RequireParentView = True - - #Probably this block will eventually need to move somewhere more central - from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg - accMS.merge( BeamPipeGeometryCfg(flags) ) - - from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg - accMS.merge(PixelGeometryCfg(flags)) - - from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg - accMS.merge(SCT_GeometryCfg(flags)) - - from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg - accMS.merge(TRT_GeometryCfg(flags)) - - from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg - accMS.merge(TrackingGeometrySvcCfg(flags)) - ################### - - EFMuonViewDataVerifier = EFMuonViewDataVerifierCfg() - recoMS.mergeReco(EFMuonViewDataVerifier) - - from MuonConfig.MuonSegmentFindingConfig import MooSegmentFinderAlgCfg - segCfg = MooSegmentFinderAlgCfg(muonflags,name="TrigMooSegmentFinder",UseTGCNextBC=False, UseTGCPriorBC=False) - recoMS.mergeReco(segCfg) + recoCB = InViewReco("EFMuCBReco") + recoCB.inputMaker().RequireParentView = True - from MuonConfig.MuonTrackBuildingConfig import MuonTrackBuildingCfg - trkCfg = MuonTrackBuildingCfg(muonflags, name="TrigMuPatTrackBuilder") - recoMS.mergeReco(trkCfg) + recoCB.mergeReco(EFMuonCBViewDataVerifierCfg()) + + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedInDetCandidateAlg, MuonCombinedAlgCfg + indetCandCfg = MuonCombinedInDetCandidateAlg(muonflags, name="TrigMuonCombinedInDetCandidateAlg_RoI", TrackParticleLocation=["HLT_IDTrack_Muon_FTF"], + InDetCandidateLocation="IndetCandidates_RoI", TrackSelector="", + DoSiliconAssocForwardMuons=False, InDetForwardTrackSelector="") + recoCB.mergeReco(indetCandCfg) - cnvCfg = MuonTrackParticleCnvCfg(muonflags, name = "TrigMuonTrackParticleCnvAlg") - recoMS.mergeReco(cnvCfg) + muonCombCfg = MuonCombinedAlgCfg(muonflags, name="TrigMuonCombinedAlg_RoI", MuonCandidateLocation="MuonCandidates", + InDetCandidateLocation="IndetCandidates_RoI") + recoCB.mergeReco(muonCombCfg) - from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg - candCfg = MuonCombinedMuonCandidateAlgCfg(muonflags, name = "TrigMuonCandidateAlg") - recoMS.mergeReco(candCfg) + muonCreatorCBCfg = MuonCreatorAlgCfg(muonflags, name="TrigMuonCreatorAlgCB_RoI", MuonCandidateLocation="MuonCandidates", TagMaps=["muidcoTagMap"], + InDetCandidateLocation="InDetCandidates_RoI", MuonContainerLocation = "MuonsCB", SegmentContainerName = "CBSegments", + ExtrapolatedLocation = "CBExtrapolatedMuons", MSOnlyExtrapolatedLocation = "CBMSonlyExtrapolatedMuons", CombinedLocation = "HLT_CBCombinedMuon_RoI") + recoCB.mergeReco(muonCreatorCBCfg) - from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg - creatorCfg = MuonCreatorAlgCfg(muonflags, name = "TrigMuonCreatorAlg") - recoMS.mergeReco(creatorCfg) + accCB.merge(recoCB, sequenceName=stepEFCBReco.getName()) - accMS.merge(recoMS, sequenceName=stepEFMSReco.getName()) + efmuCBHypo = efMuHypoCfg( muonflags, + name = 'TrigMuonEFCBHypo', + inputMuons = "MuonsCB" ) - efmuMSHypo = efMuMSHypoCfg( muonflags, - name = 'TrigMuonEFMSonlyHypo', - inputMuons = "Muons" ) + accCB.addEventAlgo(efmuCBHypo, sequenceName=stepEFCBView.getName()) - accMS.addEventAlgo(efmuMSHypo, sequenceName=stepEFMSView.getName()) + efmuCBSequence = CAMenuSequence(accCB, + HypoToolGen = TrigMuonEFCombinerHypoToolFromDict) - efmuMSSequence = CAMenuSequence(accMS, - HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict) + efmuCBStep = ChainStep( name=stepEFCBName, Sequences=[efmuCBSequence], chainDicts=[chainDict] ) - efmuMSStep = ChainStep( name=stepEFMSName, Sequences=[efmuMSSequence], chainDicts=[chainDict] ) l1Thresholds=[] for part in chainDict['chainParts']: @@ -330,8 +393,8 @@ def generateChains( flags, chainDict ): if 'msonly' in chainDict['chainName']: emptyStep = ChainStep(name="EmptyNoL2MuComb", Sequences=[EmptyMenuSequence("EmptyNoL2MuComb")], chainDicts=[chainDict]) - chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, emptyStep, efmuMSStep ] ) + chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, emptyStep, efmuMSStep, emptyStep ] ) else: - chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, l2muCombStep, efmuMSStep ] ) + chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, l2muCombStep, efmuMSStep, efmuCBStep ] ) return chain