8from AthenaCommon.Logging
import logging
9logging.getLogger().info(
"Importing %s",__name__)
10log = logging.getLogger(__name__)
12from ..Config.ChainConfigurationBase
import ChainConfigurationBase
14from .MuonMenuSequences
import (
15 muFastSequenceGenCfg, muFastCalibSequenceGenCfg, mul2mtSAOvlpRmSequenceGenCfg,
16 muCombSequenceGenCfg, muCombOvlpRmSequenceGenCfg, mul2mtCBOvlpRmSequenceGenCfg,
17 mul2IOOvlpRmSequenceGenCfg, muCombLRTSequenceGenCfg, muEFSASequenceGenCfg,
18 muEFSAFSSequenceGenCfg, efLateMuSequenceGenCfg, muEFCBSequenceGenCfg,
19 muEFCBl2ioSequenceGenCfg, muEFCBl2mtSequenceGenCfg, muEFCBidReuseSequenceGenCfg,
20 muEFCBIDperfSequenceGenCfg, muEFCBLRTSequenceGenCfg, muEFCBLRTIDperfSequenceGenCfg,
21 muEFCBFSSequenceGenCfg, muEFIDtpSequenceGenCfg, muEFIsoSequenceGenCfg,
22 muEFMSIsoSequenceGenCfg, efLateMuRoISequenceGenCfg, muRoiClusterSequenceGenCfg )
24from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFInvMassHypoToolFromDict
25from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpInvMassHypoToolFromDict
35 ChainConfigurationBase.__init__(self,chainDict)
46 is_probe_leg = self.chainPart[
'tnpInfo']==
"probe"
47 key = self.chainPart[
'extra']
49 steps=stepDictionary[key]
53 chainstep = getattr(self, step)(flags, is_probe_leg=is_probe_leg)
54 chainSteps+=[chainstep]
56 myChain = self.buildChain(chainSteps)
64 doMSonly =
'msonly' in self.chainPart[
'msonlyInfo']
65 muCombStep =
'getmuComb'
66 efCBStep =
'getmuEFCB'
67 if self.chainPart[
'isoInfo']:
68 isoStep =
'getmuEFIso'
70 isoStep =
'getmuEFMSIso'
73 muCombStep =
'getmuMSEmpty'
74 efCBStep =
'getEFCBEmpty'
80 muCombStep =
'getmuMSEmpty'
84 "":[
'getmuFast', muCombStep,
'getmuEFSA',efCBStep, isoStep],
85 "noL1":[
'getFSmuEFSA']
if doMSonly
else [
'getFSmuEFSA',
'getFSmuEFCB'],
86 "lateMu":[
'getLateMuRoI',
'getLateMu'],
87 "muoncalib":[
'getmuFast'],
88 "vtx":[
'getmuRoiClu'],
89 "mucombTag":[
'getmuFast', muCombStep],
98 if 'muoncalib' in self.chainPart[
'extra']:
99 return self.getStep(flags,
"mufastcalib", [muFastCalibSequenceGenCfg], is_probe_leg=is_probe_leg )
100 elif 'l2mt' in self.chainPart[
'l2AlgInfo']:
101 return self.getStep(flags,
"mufastl2mt", [mul2mtSAOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg )
103 return self.getStep(flags,
"mufast", [muFastSequenceGenCfg], is_probe_leg=is_probe_leg )
110 if self.chainPart[
'signature'] ==
'Bphysics':
114 elif len( self.dict[
'signatures'] )>1
and not self.chainPart[
'extra']:
121 if 'fT' in self.chainPart[
'addInfo']:
122 trkMode =
"fastTracking"
125 if 'l2mt' in self.chainPart[
'l2AlgInfo']:
126 return self.getStep(flags, f
"muCombl2mt{stepSuffix}", [mul2mtCBOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode)
127 elif 'l2io' in self.chainPart[
'l2AlgInfo']:
128 return self.getStep(flags, f
'muCombIO{stepSuffix}', [mul2IOOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode)
130 return self.getStep(flags, f
'muCombOVR{stepSuffix}', [muCombOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
131 elif "LRT" in self.chainPart[
'addInfo']:
132 return self.getStep(flags, f
'muCombLRT{stepSuffix}', [muCombLRTSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
134 return self.getStep(flags, f
'muComb{stepSuffix}', [muCombSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
138 return self.getStep(flags,
'muCombIO', [mul2IOOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg )
142 useBucketFilter =
'mlbkt' in self.chainPart[
'addInfo']
143 step_name =
'muEFSA_mlbkt' if useBucketFilter
else 'muEFSA'
144 return self.getStep(flags, step_name, [muEFSASequenceGenCfg], is_probe_leg=is_probe_leg, useBucketFilter=useBucketFilter)
148 if 'invm' in self.chainPart[
'invMassInfo']:
149 return self.getStep(flags,
'EFCB', [muEFCBSequenceGenCfg], comboTools=[TrigMuonEFInvMassHypoToolFromDict], is_probe_leg=is_probe_leg)
150 elif "LRT" in self.chainPart[
'addInfo']:
151 if "idperf" in self.chainPart[
'addInfo']:
152 return self.getStep(flags,
'EFCBLRTIDPERF', [muEFCBLRTIDperfSequenceGenCfg], is_probe_leg=is_probe_leg)
154 return self.getStep(flags,
'EFCBLRT', [muEFCBLRTSequenceGenCfg], is_probe_leg=is_probe_leg)
155 elif "idperf" in self.chainPart[
'addInfo']:
156 return self.getStep(flags,
'EFCBIDPERF', [muEFCBIDperfSequenceGenCfg], is_probe_leg=is_probe_leg)
157 elif "idtp" in self.chainPart[
'addInfo']:
158 return self.getStep(flags,
'EFIDTP', [muEFIDtpSequenceGenCfg], is_probe_leg=is_probe_leg)
160 if flags.Muon.enableTrigIDtrackReuse
or "idReuse" in self.chainPart[
'addInfo']:
161 if "l2io" in self.chainPart[
'l2AlgInfo']:
162 return self.getStep(flags,
'EFCBl2io', [muEFCBl2ioSequenceGenCfg], is_probe_leg=is_probe_leg)
163 elif "l2mt" in self.chainPart[
'l2AlgInfo']:
164 return self.getStep(flags,
'EFCBl2mt', [muEFCBl2mtSequenceGenCfg], is_probe_leg=is_probe_leg)
166 return self.getStep(flags,
'EFCBidReuse', [muEFCBidReuseSequenceGenCfg], is_probe_leg=is_probe_leg)
168 return self.getStep(flags,
'EFCB', [muEFCBSequenceGenCfg], is_probe_leg=is_probe_leg)
172 return self.getStep(flags,
'FSmuEFSA', [muEFSAFSSequenceGenCfg], is_probe_leg=is_probe_leg)
176 if 'invm' in self.chainPart[
'invMassInfo']:
177 return self.getStep(flags,
'FSmuEFCB', [muEFCBFSSequenceGenCfg],comboTools=[TrigMuonEFInvMassHypoToolFromDict], is_probe_leg=is_probe_leg)
179 return self.getStep(flags,
'FSmuEFCB', [muEFCBFSSequenceGenCfg], is_probe_leg=is_probe_leg)
183 if any(x
in self.dict[
'topo']
for x
in [
'b7invmAB9vtx20',
'b11invmAB60vtx20',
'b11invmAB24vtx20',
'b24invmAB60vtx20']):
184 from TrigBphysHypo.TrigMultiTrkComboHypoConfig
import DrellYanComboHypoCfg, TrigMultiTrkComboHypoToolFromDict
185 return self.getStep(flags,
'muEFIsoDY', [muEFIsoSequenceGenCfg], comboHypoCfg=DrellYanComboHypoCfg, comboTools=[TrigMultiTrkComboHypoToolFromDict], is_probe_leg=is_probe_leg)
187 return self.getStep(flags,
'muEFIso', [muEFIsoSequenceGenCfg], is_probe_leg=is_probe_leg)
191 return self.getStep(flags,
'muEFMSIso',[ muEFMSIsoSequenceGenCfg], is_probe_leg=is_probe_leg)
195 return self.getEmptyStep(
'muMS_empty')
199 return self.getEmptyStep(
'muFast_empty')
203 return self.getEmptyStep(
'muefCB_Empty')
207 return self.getStep(flags,
'muEFLateRoI',[efLateMuRoISequenceGenCfg], is_probe_leg=is_probe_leg)
211 return self.getStep(flags,
'muEFLate',[efLateMuSequenceGenCfg], is_probe_leg=is_probe_leg)
215 return self.getStep(flags,
'muRoiClu',[muRoiClusterSequenceGenCfg])
219 tool = TrigMuonEFIdtpInvMassHypoToolFromDict(flags, chainDict)
Class/function to configure muon chains.
getmuEFCB(self, flags, is_probe_leg=False)
getmuFast(self, flags, is_probe_leg=False)
getmuEFMSIso(self, flags, is_probe_leg=False)
getmuEFSA(self, flags, is_probe_leg=False)
getmuComb(self, flags, is_probe_leg=False)
getLateMuRoI(self, flags, is_probe_leg=False)
__init__(self, chainDict)
getmuCombIO(self, flags, is_probe_leg=False)
assembleChainImpl(self, flags)
getFSmuEFCB(self, flags, is_probe_leg=False)
getEFCBEmpty(self, flags, is_probe_leg=False)
getmuFastEmpty(self, flags, is_probe_leg=False)
getLateMu(self, flags, is_probe_leg=False)
getFSmuEFSA(self, flags, is_probe_leg=False)
getmuMSEmpty(self, flags, is_probe_leg=False)
getmuRoiClu(self, flags, is_probe_leg=False)
getmuEFIso(self, flags, is_probe_leg=False)
TrigMuonEFIdtpInvMassHypoToolCfg(flags, chainDict)