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,
23 MlMuonDVtxCaloTowerSequenceGenCfg, MlMuonDVtxSequenceGenCfg )
25from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFInvMassHypoToolFromDict
26from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpInvMassHypoToolFromDict
36 ChainConfigurationBase.__init__(self,chainDict)
47 is_probe_leg = self.chainPart[
'tnpInfo']==
"probe"
48 key = self.chainPart[
'extra']
50 steps=stepDictionary[key]
54 chainstep = getattr(self, step)(flags, is_probe_leg=is_probe_leg)
55 chainSteps+=[chainstep]
57 myChain = self.buildChain(chainSteps)
65 doMSonly =
'msonly' in self.chainPart[
'msonlyInfo']
66 muCombStep =
'getmuComb'
67 efCBStep =
'getmuEFCB'
68 if self.chainPart[
'isoInfo']:
69 isoStep =
'getmuEFIso'
71 isoStep =
'getmuEFMSIso'
74 muCombStep =
'getmuMSEmpty'
75 efCBStep =
'getEFCBEmpty'
81 muCombStep =
'getmuMSEmpty'
85 "":[
'getmuFast', muCombStep,
'getmuEFSA',efCBStep, isoStep],
86 "noL1":[
'getFSmuEFSA']
if doMSonly
else [
'getFSmuEFSA',
'getFSmuEFCB'],
87 "lateMu":[
'getLateMuRoI',
'getLateMu'],
88 "muoncalib":[
'getmuFast'],
89 "vtx":[
'getmuRoiClu'],
90 "mlvtx":[
'getMlVtxCaloTower',
'getMlVtx'],
91 "mucombTag":[
'getmuFast', muCombStep],
100 useNewFast =
'newFast' in self.chainPart[
'l2AlgInfo']
102 if 'muoncalib' in self.chainPart[
'extra']:
103 return self.getStep(flags,
"mufastcalib", [muFastCalibSequenceGenCfg], is_probe_leg=is_probe_leg )
104 elif 'l2mt' in self.chainPart[
'l2AlgInfo']:
105 return self.getStep(flags,
"mufastl2mt", [mul2mtSAOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg )
107 stepName =
"mufastPhII" if useNewFast
else "mufast"
108 return self.getStep(flags, stepName, [muFastSequenceGenCfg], useNewFast=useNewFast, is_probe_leg=is_probe_leg )
115 if self.chainPart[
'signature'] ==
'Bphysics':
119 elif len( self.dict[
'signatures'] )>1
and not self.chainPart[
'extra']:
126 if 'fT' in self.chainPart[
'addInfo']:
127 trkMode =
"fastTracking"
130 if 'l2mt' in self.chainPart[
'l2AlgInfo']:
131 return self.getStep(flags, f
"muCombl2mt{stepSuffix}", [mul2mtCBOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode)
132 elif 'l2io' in self.chainPart[
'l2AlgInfo']:
133 return self.getStep(flags, f
'muCombIO{stepSuffix}', [mul2IOOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode)
135 return self.getStep(flags, f
'muCombOVR{stepSuffix}', [muCombOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
136 elif "LRT" in self.chainPart[
'addInfo']:
137 return self.getStep(flags, f
'muCombLRT{stepSuffix}', [muCombLRTSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
139 return self.getStep(flags, f
'muComb{stepSuffix}', [muCombSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
143 return self.getStep(flags,
'muCombIO', [mul2IOOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg )
147 useBucketFilter =
'mlbkt' in self.chainPart[
'addInfo']
148 useNewFast =
'newFast' in self.chainPart[
'l2AlgInfo']
150 step_name = f
'muEFSA{"_newFast" if useNewFast else ""}{"_mlbkt" if useBucketFilter else ""}'
151 return self.getStep(flags, step_name, [muEFSASequenceGenCfg], is_probe_leg=is_probe_leg, useBucketFilter=useBucketFilter, useNewFast=useNewFast)
155 if 'invm' in self.chainPart[
'invMassInfo']:
156 return self.getStep(flags,
'EFCB', [muEFCBSequenceGenCfg], comboTools=[TrigMuonEFInvMassHypoToolFromDict], is_probe_leg=is_probe_leg)
157 elif "LRT" in self.chainPart[
'addInfo']:
158 if "idperf" in self.chainPart[
'addInfo']:
159 return self.getStep(flags,
'EFCBLRTIDPERF', [muEFCBLRTIDperfSequenceGenCfg], is_probe_leg=is_probe_leg)
161 return self.getStep(flags,
'EFCBLRT', [muEFCBLRTSequenceGenCfg], is_probe_leg=is_probe_leg)
162 elif "idperf" in self.chainPart[
'addInfo']:
163 return self.getStep(flags,
'EFCBIDPERF', [muEFCBIDperfSequenceGenCfg], is_probe_leg=is_probe_leg)
164 elif "idtp" in self.chainPart[
'addInfo']:
165 return self.getStep(flags,
'EFIDTP', [muEFIDtpSequenceGenCfg], is_probe_leg=is_probe_leg)
167 if flags.Muon.enableTrigIDtrackReuse
or "idReuse" in self.chainPart[
'addInfo']:
168 if "l2io" in self.chainPart[
'l2AlgInfo']:
169 return self.getStep(flags,
'EFCBl2io', [muEFCBl2ioSequenceGenCfg], is_probe_leg=is_probe_leg)
170 elif "l2mt" in self.chainPart[
'l2AlgInfo']:
171 return self.getStep(flags,
'EFCBl2mt', [muEFCBl2mtSequenceGenCfg], is_probe_leg=is_probe_leg)
173 return self.getStep(flags,
'EFCBidReuse', [muEFCBidReuseSequenceGenCfg], is_probe_leg=is_probe_leg)
175 return self.getStep(flags,
'EFCB', [muEFCBSequenceGenCfg], is_probe_leg=is_probe_leg)
179 useBucketFilter =
'mlbkt' in self.chainPart[
'addInfo']
181 step_name = f
'FSmuEFSA{"_mlbkt" if useBucketFilter else ""}'
182 return self.getStep(flags, step_name, [muEFSAFSSequenceGenCfg], useBucketFilter=useBucketFilter)
186 if 'invm' in self.chainPart[
'invMassInfo']:
187 return self.getStep(flags,
'FSmuEFCB', [muEFCBFSSequenceGenCfg],comboTools=[TrigMuonEFInvMassHypoToolFromDict], is_probe_leg=is_probe_leg)
189 return self.getStep(flags,
'FSmuEFCB', [muEFCBFSSequenceGenCfg], is_probe_leg=is_probe_leg)
193 if any(x
in self.dict[
'topo']
for x
in [
'b7invmAB9vtx20',
'b11invmAB60vtx20',
'b11invmAB24vtx20',
'b24invmAB60vtx20']):
194 from TrigBphysHypo.TrigMultiTrkComboHypoConfig
import DrellYanComboHypoCfg, TrigMultiTrkComboHypoToolFromDict
195 return self.getStep(flags,
'muEFIsoDY', [muEFIsoSequenceGenCfg], comboHypoCfg=DrellYanComboHypoCfg, comboTools=[TrigMultiTrkComboHypoToolFromDict], is_probe_leg=is_probe_leg)
197 return self.getStep(flags,
'muEFIso', [muEFIsoSequenceGenCfg], is_probe_leg=is_probe_leg)
201 return self.getStep(flags,
'muEFMSIso',[ muEFMSIsoSequenceGenCfg], is_probe_leg=is_probe_leg)
205 return self.getEmptyStep(
'muMS_empty')
209 return self.getEmptyStep(
'muFast_empty')
213 return self.getEmptyStep(
'muefCB_Empty')
217 return self.getStep(flags,
'muEFLateRoI',[efLateMuRoISequenceGenCfg], is_probe_leg=is_probe_leg)
221 return self.getStep(flags,
'muEFLate',[efLateMuSequenceGenCfg], is_probe_leg=is_probe_leg)
225 return self.getStep(flags,
'muRoiClu',[muRoiClusterSequenceGenCfg])
229 return self.getStep(flags,
'mlvtxcalotower',[MlMuonDVtxCaloTowerSequenceGenCfg])
232 return self.getStep(flags,
'mlvtx',[MlMuonDVtxSequenceGenCfg])
236 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)
getMlVtxCaloTower(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)
getMlVtx(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)