Skip to content
Snippets Groups Projects
Commit efcb5967 authored by Savanna Shaw's avatar Savanna Shaw Committed by Adam Edward Barton
Browse files

Adding muComb to trigger new JO test

Adding the L2 combined muon step to the trigger new JO test (ATR-20242). The step runs:
- A view data verifier to pick up the L2 SA muons from the previous step
- The ID fast track finding
- the muComb algorithm

Currently it seems that the combined electron+muon chains need to have the same number of steps for electrons and muons, so I split the muon chains into two type. The default chains (used in combination with other signatures) run the L2 SA and combined steps, and the msonly chains run the L2 SA and precision SA steps (and the L2 combined and preicion SA steps are only created for the relevant chains).
parent 841c4ce8
No related branches found
No related tags found
No related merge requests found
......@@ -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)
......
......@@ -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 = [
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment