8 from AthenaCommon.Logging
import logging
9 logging.getLogger().
info(
"Importing %s",__name__)
10 log = logging.getLogger(__name__)
12 from ..Config.ChainConfigurationBase
import ChainConfigurationBase
14 from .MuonMenuSequences
import (
15 muFastSequenceGenCfg, muFastCalibSequenceGenCfg, mul2mtSAOvlpRmSequenceGenCfg,
16 muCombSequenceGenCfg, muCombOvlpRmSequenceGenCfg, mul2mtCBOvlpRmSequenceGenCfg,
17 mul2IOOvlpRmSequenceGenCfg, muCombLRTSequenceGenCfg, muEFSASequenceGenCfg,
18 muEFSAFSSequenceGenCfg, efLateMuSequenceGenCfg, muEFCBSequenceGenCfg,
19 muEFCBIDperfSequenceGenCfg, muEFCBLRTSequenceGenCfg, muEFCBLRTIDperfSequenceGenCfg,
20 muEFCBFSSequenceGenCfg, muEFIDtpSequenceGenCfg, muEFIsoSequenceGenCfg,
21 muEFMSIsoSequenceGenCfg, efLateMuRoISequenceGenCfg, muRoiClusterSequenceGenCfg )
23 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFInvMassHypoToolFromDict
24 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpInvMassHypoToolFromDict
34 ChainConfigurationBase.__init__(self,chainDict)
45 is_probe_leg = self.chainPart[
'tnpInfo']==
"probe"
46 key = self.chainPart[
'extra']
48 steps=stepDictionary[key]
52 chainstep = getattr(self, step)(flags, is_probe_leg=is_probe_leg)
53 chainSteps+=[chainstep]
55 myChain = self.buildChain(chainSteps)
63 doMSonly =
'msonly' in self.chainPart[
'msonlyInfo']
64 muCombStep =
'getmuComb'
65 efCBStep =
'getmuEFCB'
66 if self.chainPart[
'isoInfo']:
67 isoStep =
'getmuEFIso'
69 isoStep =
'getmuEFMSIso'
72 muCombStep =
'getmuMSEmpty'
73 efCBStep =
'getEFCBEmpty'
79 muCombStep =
'getmuMSEmpty'
83 "":[
'getmuFast', muCombStep,
'getmuEFSA',efCBStep, isoStep],
84 "noL1":[
'getFSmuEFSA']
if doMSonly
else [
'getFSmuEFSA',
'getFSmuEFCB'],
85 "lateMu":[
'getLateMuRoI',
'getLateMu'],
86 "muoncalib":[
'getmuFast'],
87 "vtx":[
'getmuRoiClu'],
88 "mucombTag":[
'getmuFast', muCombStep],
97 if 'muoncalib' in self.chainPart[
'extra']:
98 return self.getStep(flags,
"mufastcalib", [muFastCalibSequenceGenCfg], is_probe_leg=is_probe_leg )
99 elif 'l2mt' in self.chainPart[
'l2AlgInfo']:
100 return self.getStep(flags,
"mufastl2mt", [mul2mtSAOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg )
102 return self.getStep(flags,
"mufast", [muFastSequenceGenCfg], is_probe_leg=is_probe_leg )
109 if self.chainPart[
'signature'] ==
'Bphysics':
113 elif len( self.dict[
'signatures'] )>1
and not self.chainPart[
'extra']:
120 if 'fT' in self.chainPart[
'addInfo']:
121 trkMode =
"fastTracking"
124 if 'l2mt' in self.chainPart[
'l2AlgInfo']:
125 return self.getStep(flags, f
"muCombl2mt{stepSuffix}", [mul2mtCBOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode)
126 elif 'l2io' in self.chainPart[
'l2AlgInfo']:
127 return self.getStep(flags, f
'muCombIO{stepSuffix}', [mul2IOOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode)
129 return self.getStep(flags, f
'muCombOVR{stepSuffix}', [muCombOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
130 elif "LRT" in self.chainPart[
'addInfo']:
131 return self.getStep(flags, f
'muCombLRT{stepSuffix}', [muCombLRTSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
133 return self.getStep(flags, f
'muComb{stepSuffix}', [muCombSequenceGenCfg], is_probe_leg=is_probe_leg, trackingMode=trkMode )
137 return self.getStep(flags,
'muCombIO', [mul2IOOvlpRmSequenceGenCfg], is_probe_leg=is_probe_leg )
141 return self.getStep(flags,
'muEFSA',[ muEFSASequenceGenCfg], is_probe_leg=is_probe_leg)
146 if 'invm' in self.chainPart[
'invMassInfo']:
147 return self.getStep(flags,
'EFCB', [muEFCBSequenceGenCfg], comboTools=[TrigMuonEFInvMassHypoToolFromDict], is_probe_leg=is_probe_leg)
148 elif "LRT" in self.chainPart[
'addInfo']:
149 if "idperf" in self.chainPart[
'addInfo']:
150 return self.getStep(flags,
'EFCBLRTIDPERF', [muEFCBLRTIDperfSequenceGenCfg], is_probe_leg=is_probe_leg)
152 return self.getStep(flags,
'EFCBLRT', [muEFCBLRTSequenceGenCfg], is_probe_leg=is_probe_leg)
153 elif "idperf" in self.chainPart[
'addInfo']:
154 return self.getStep(flags,
'EFCBIDPERF', [muEFCBIDperfSequenceGenCfg], is_probe_leg=is_probe_leg)
155 elif "idtp" in self.chainPart[
'addInfo']:
156 return self.getStep(flags,
'EFIDTP', [muEFIDtpSequenceGenCfg], is_probe_leg=is_probe_leg)
158 return self.getStep(flags,
'EFCB', [muEFCBSequenceGenCfg], is_probe_leg=is_probe_leg)
162 return self.getStep(flags,
'FSmuEFSA', [muEFSAFSSequenceGenCfg], is_probe_leg=is_probe_leg)
166 if 'invm' in self.chainPart[
'invMassInfo']:
167 return self.getStep(flags,
'FSmuEFCB', [muEFCBFSSequenceGenCfg],comboTools=[TrigMuonEFInvMassHypoToolFromDict], is_probe_leg=is_probe_leg)
169 return self.getStep(flags,
'FSmuEFCB', [muEFCBFSSequenceGenCfg], is_probe_leg=is_probe_leg)
173 if any(x
in self.dict[
'topo']
for x
in [
'b7invmAB9vtx20',
'b11invmAB60vtx20',
'b11invmAB24vtx20',
'b24invmAB60vtx20']):
174 from TrigBphysHypo.TrigMultiTrkComboHypoConfig
import DrellYanComboHypoCfg, TrigMultiTrkComboHypoToolFromDict
175 return self.getStep(flags,
'muEFIsoDY', [muEFIsoSequenceGenCfg], comboHypoCfg=DrellYanComboHypoCfg, comboTools=[TrigMultiTrkComboHypoToolFromDict], is_probe_leg=is_probe_leg)
177 return self.getStep(flags,
'muEFIso', [muEFIsoSequenceGenCfg], is_probe_leg=is_probe_leg)
181 return self.getStep(flags,
'muEFMSIso',[ muEFMSIsoSequenceGenCfg], is_probe_leg=is_probe_leg)
185 return self.getEmptyStep(stepID,
'muMS_empty')
193 return self.getEmptyStep(1,
'muFast_empty')
197 return self.getEmptyStep(4,
'muefCB_Empty')
201 return self.getStep(flags,
'muEFLateRoI',[efLateMuRoISequenceGenCfg], is_probe_leg=is_probe_leg)
205 return self.getStep(flags,
'muEFLate',[efLateMuSequenceGenCfg], is_probe_leg=is_probe_leg)
209 return self.getStep(flags,
'muRoiClu',[muRoiClusterSequenceGenCfg])