diff --git a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py index 35c2417cf93cc122fa63cf32735682bf899b11a7..d23189846ac2532931f82e2a72100137066a03a6 100644 --- a/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py +++ b/Trigger/TrigAlgorithms/TrigmuComb/python/TrigmuCombConfig_newJO.py @@ -36,9 +36,8 @@ def muCombCfg(flags, postFix="", useBackExtrp=True): idScanEndcap3Res = [0.036, 0.0000004] idScanEndcap4Res = [0.046, 0.0000002] - from TrigmuComb.TrigmuCombMTConfig import muCombMT - from TrigmuComb.TrigmuCombMonitoring import TrigMuCombMonitoring - muCombAlg = muCombMT(name = "Muon"+postFix, + muCombMT = CompFactory.muCombMT + muCombAlg = muCombMT(name = "MuComb"+postFix, MuCombStrategy = 0, UseBackExtrapolatorG4 = useBackExtrp, MinPtTRK = 0., @@ -51,19 +50,20 @@ def muCombCfg(flags, postFix="", useBackExtrp=True): IDSCANEndcap3Res = idScanEndcap3Res, IDSCANEndcap4Res = idScanEndcap4Res, IDalgo = "InDetTrigTrackingxAODCnv_Muon_FTF", - MonTool = TrigMuCombMonitoring() ) + MonTool = None) return acc, muCombAlg -def l2MuCombRecoCfg(flags): +def l2MuCombRecoCfg(flags, name="L2MuCombReco"): from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco - reco = InViewReco("L2MuCombReco") + reco = InViewReco(name) acc, alg = muCombCfg(flags) alg.L2StandAloneMuonContainerName=muFastInfo alg.L2CombinedMuonContainerName = muCombInfo + alg.TrackParticlesContainerName="TrigFastTrackFinder_Tracks__Muon" muCombAcc = ComponentAccumulator() muCombAcc.addEventAlgo(alg) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py index 4d7d83583376656992385c9e0bdd110d4013abd3..7c4c3d12940e0ece729e80c5b745d497eebb1b1b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py @@ -41,7 +41,11 @@ def setupMenu(flags): flags.Trigger.menu.muon = [ ChainProp(name='HLT_mu20_L1MU20', groups=SingleMuonGroup), ChainProp(name='HLT_mu10_L1MU10', groups=SingleMuonGroup), - ChainProp(name='HLT_mu8_L1MU6', groups=SingleMuonGroup) + ChainProp(name='HLT_mu8_L1MU6', groups=SingleMuonGroup), + + ChainProp(name='HLT_mu20_msonly_L1MU20', groups=SingleMuonGroup), + ChainProp(name='HLT_mu10_msonly_L1MU10', groups=SingleMuonGroup), + ChainProp(name='HLT_mu8_msonly_L1MU6', groups=SingleMuonGroup) ] flags.Trigger.menu.electron = [ diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py index 5780500ccf8a50192d1d4fc3ccbc1db07a813019..a65743bad2dc1c60789ad2e023c118f186a5f8fb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Muon/generateMuon.py @@ -4,7 +4,9 @@ from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import CAMenuSequence, Chai from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from TrigL2MuonSA.TrigL2MuonSAConfig_newJO import l2MuFastAlgCfg, l2MuFastHypoCfg -from TrigMuonHypoMT.TrigMuonHypoMTConfig import TrigMufastHypoToolFromDict, TrigMuonEFMSonlyHypoToolFromDict +from TrigmuComb.TrigmuCombConfig_newJO import l2MuCombRecoCfg, l2MuCombHypoCfg +from TrigMuonHypoMT.TrigMuonHypoMTConfig import TrigMufastHypoToolFromDict, TrigmuCombHypoToolFromDict, TrigMuonEFMSonlyHypoToolFromDict +from TrigInDetConfig.TrigInDetConfig import TrigInDetConfig from TriggerMenuMT.HLTMenuConfig.Menu.ChainDictTools import splitChainDict @@ -47,6 +49,13 @@ def MuFastViewDataVerifier(): result.addEventAlgo(alg) return result +def MuCombViewDataVerifier(): + result = ComponentAccumulator() + alg = CompFactory.AthViews.ViewDataVerifier( name = "VDVMuComb", + DataObjects = [( 'xAOD::L2StandAloneMuonContainer' , 'StoreGateSvc+MuonL2SAInfo' )]) + result.addEventAlgo(alg) + return result + #Not the ideal place to keep the track cnv alg configuration. Temproarily adding it here #until a better location can be found def MuonTrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", **kwargs): @@ -210,82 +219,119 @@ def generateChains( flags, chainDict ): l2muFastStep = ChainStep( name=stepName, Sequences=[l2muFastSequence], chainDicts=[chainDict] ) - ### Set muon step2 ### - # Please set up L2muComb step here - - #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() - - accMS = ComponentAccumulator() - accMS.addSequence(stepEFMSView) - - from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco - recoMS = InViewReco("EFMuMSReco") - recoMS.inputMaker().RequireParentView = True + if 'msonly' not in chainDict['chainName']: + #only run in combined muon chains + ### Set muon step2 - L2muComb ### + stepL2CBName = 'L2MuonCB' + stepL2CBReco, stepL2CBView = createStepView(stepL2CBName) + + accL2CB = ComponentAccumulator() + accL2CB.addSequence(stepL2CBView) + + # Set EventViews for L2MuonCB step + recoL2CB = l2MuCombRecoCfg(flags) + #external data loading to view + recoL2CB.inputMaker().RequireParentView = True + recoL2CB.mergeReco( MuCombViewDataVerifier() ) + + #ID tracking + #(Using electron specific flags for now until muon specific flags are available) + flagsID = flags.cloneAndReplace("InDet.Tracking", "Trigger.InDetTracking.Electron") + accID = TrigInDetConfig( flagsID, roisKey=recoL2CB.inputMaker().InViewRoIs, signatureName="Muon" ) + recoL2CB.mergeReco(accID) + + accL2CB.merge(recoL2CB, sequenceName = stepL2CBReco.getName()) + + l2muCombHypo = l2MuCombHypoCfg( flags, + name = 'TrigL2MuCombHypo', + muCombInfo = 'HLT_MuonL2CBInfo' ) + + accL2CB.addEventAlgo(l2muCombHypo, sequenceName=stepL2CBView.getName()) + + l2muCombSequence = CAMenuSequence( Sequence = recoL2CB.sequence(), + Maker = recoL2CB.inputMaker(), + Hypo = l2muCombHypo, + HypoToolGen = TrigmuCombHypoToolFromDict, + CA = accL2CB ) + + l2muCombStep = ChainStep( name=stepL2CBName, Sequences=[l2muCombSequence], chainDicts=[chainDict] ) - #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)) + + if 'msonly' in chainDict['chainName']: + #only runningn in MS-only chains for now + #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() + + accMS = ComponentAccumulator() + accMS.addSequence(stepEFMSView) + + from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import InViewReco + recoMS = InViewReco("EFMuMSReco") + recoMS.inputMaker().RequireParentView = True - from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg - accMS.merge(SCT_GeometryCfg(flags)) + #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 TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg - accMS.merge(TRT_GeometryCfg(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)) - ################### + from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg + accMS.merge(TrackingGeometrySvcCfg(flags)) + ################### - EFMuonViewDataVerifier = EFMuonViewDataVerifierCfg() - recoMS.mergeReco(EFMuonViewDataVerifier) + EFMuonViewDataVerifier = EFMuonViewDataVerifierCfg() + recoMS.mergeReco(EFMuonViewDataVerifier) - from MuonConfig.MuonSegmentFindingConfig import MooSegmentFinderAlgCfg - segCfg = MooSegmentFinderAlgCfg(muonflags,name="TrigMooSegmentFinder",UseTGCNextBC=False, UseTGCPriorBC=False) - recoMS.mergeReco(segCfg) + 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) + from MuonConfig.MuonTrackBuildingConfig import MuonTrackBuildingCfg + trkCfg = MuonTrackBuildingCfg(muonflags, name="TrigMuPatTrackBuilder") + recoMS.mergeReco(trkCfg) - cnvCfg = MuonTrackParticleCnvCfg(muonflags, name = "TrigMuonTrackParticleCnvAlg") - recoMS.mergeReco(cnvCfg) + 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 MuonCombinedMuonCandidateAlgCfg + candCfg = MuonCombinedMuonCandidateAlgCfg(muonflags, name = "TrigMuonCandidateAlg") + recoMS.mergeReco(candCfg) - from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg - creatorCfg = MuonCreatorAlgCfg(muonflags, name = "TrigMuonCreatorAlg") - recoMS.mergeReco(creatorCfg) + from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg + creatorCfg = MuonCreatorAlgCfg(muonflags, name = "TrigMuonCreatorAlg") + recoMS.mergeReco(creatorCfg) - accMS.merge(recoMS, sequenceName=stepEFMSReco.getName()) + accMS.merge(recoMS, sequenceName=stepEFMSReco.getName()) - efmuMSHypo = efMuMSHypoCfg( muonflags, - name = 'TrigMuonEFMSonlyHypo', - inputMuons = "Muons" ) + efmuMSHypo = efMuMSHypoCfg( muonflags, + name = 'TrigMuonEFMSonlyHypo', + inputMuons = "Muons" ) - accMS.addEventAlgo(efmuMSHypo, sequenceName=stepEFMSView.getName()) + accMS.addEventAlgo(efmuMSHypo, sequenceName=stepEFMSView.getName()) - efmuMSSequence = CAMenuSequence( Sequence = recoMS.sequence(), - Maker = recoMS.inputMaker(), - Hypo = efmuMSHypo, - HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict, - CA = accMS ) + efmuMSSequence = CAMenuSequence( Sequence = recoMS.sequence(), + Maker = recoMS.inputMaker(), + Hypo = efmuMSHypo, + HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict, + CA = accMS ) - efmuMSStep = ChainStep( name=stepEFMSName, Sequences=[efmuMSSequence], chainDicts=[chainDict] ) + efmuMSStep = ChainStep( name=stepEFMSName, Sequences=[efmuMSSequence], chainDicts=[chainDict] ) l1Thresholds=[] for part in chainDict['chainParts']: @@ -293,7 +339,9 @@ def generateChains( flags, chainDict ): log.debug('dictionary is: %s\n', pprint.pformat(chainDict)) - - chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, efmuMSStep ] ) + if 'msonly' in chainDict['chainName']: + chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, efmuMSStep ] ) + else: + chain = Chain( name=chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[ l2muFastStep, l2muCombStep ] ) return chain