ATLAS Offline Software
Loading...
Searching...
No Matches
BphysicsChainConfiguration.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3
8from AthenaCommon.Logging import logging
9logging.getLogger().info("Importing %s",__name__)
10log = logging.getLogger(__name__)
11from ..Config.ChainConfigurationBase import ChainConfigurationBase
12from ..Muon.MuonChainConfiguration import MuonChainConfiguration
13
14from ..Muon.MuonMenuSequences import mul2IOOvlpRmSequenceGenCfg, mul2mtCBOvlpRmSequenceGenCfg, muEFCBSequenceGenCfg
15
16from .BphysicsMenuSequences import dimuL2SequenceGenCfg, dimuEFSequenceGenCfg, bmumuxSequenceGenCfg
17from TrigBphysHypo.TrigMultiTrkComboHypoConfig import StreamerDimuL2ComboHypoCfg, StreamerDimuL2IOComboHypoCfg, StreamerDimuL2MTComboHypoCfg, DimuEFComboHypoCfg, BmutrkComboHypoCfg, StreamerDimuEFComboHypoCfg, TrigMultiTrkComboHypoToolFromDict
18from TrigBphysHypo.TrigBmumuxComboHypoConfig import BmumuxComboHypoCfg, TrigBmumuxComboHypoToolFromDict
19from TrigBphysHypo.TrigBmuxComboHypoConfig import BmuxComboHypoCfg
20
21
22
25
27
28 def __init__(self, chainDict):
29 ChainConfigurationBase.__init__(self,chainDict)
30
31 # ----------------------
32 # Assemble the chain depending on information from chainName
33 # ----------------------
34 def assembleBphysChain(self, flags):
35
36 log.debug("Assembling chain for %s", self.chainName)
37
38 stepDictionary = self.getBphysStepDictionary()
39 key = self.getBphysKey()
40 steps=stepDictionary[key]
41
42 chainSteps = []
43 for step_level in steps:
44 for step in step_level:
45 chainStep = getattr(self, step)(flags)
46 chainSteps+=[chainStep]
47
48 chain = self.buildChain(chainSteps)
49 return chain
50
52
53 stepDictionary = {
54 'dimu' : [['getmuFast', 'getDimuL2'], ['getmuEFSA', 'getmuEFCB', 'getDimuEF']],
55 'bmumux' : [['getmuFast', 'getDimuL2'], ['getmuEFSA', 'getDimuEFCB', 'getBmumux']],
56 'bmutrk' : [['getmuFast', 'getmuCombIO'], ['getmuEFSA', 'getmuEFCB', 'getBmutrk']],
57 'bmux' : [['getmuFast', 'getmuCombIO'], ['getmuEFSA', 'getmuEFCB', 'getBmux']],
58 }
59 return stepDictionary
60
61 def getBphysKey(self):
62
63 the_topo = self.dict['topo'][0]
64
65 topo_dict = {
66 'bJpsimumu' : 'dimu',
67 'bJpsi' : 'dimu',
68 'bJpsimutrk' : 'bmutrk',
69 'bUpsimumu' : 'dimu',
70 'bUpsi' : 'dimu',
71 'bBmumu' : 'dimu',
72 'bDimu' : 'dimu',
73 'bDimu2700' : 'dimu',
74 'bDimu6000' : 'dimu',
75 'bPhi' : 'dimu',
76 'bTau' : 'dimu',
77 'b3mu' : 'dimu',
78 'bBmux' : 'bmux',
79 'bBmumux' : 'bmumux',
80 'b0dRAB12vtx20' : 'dimu',
81 'b0dRAB207invmAB22vtx20' : 'dimu',
82 'b0dRAB127invmAB22vtx20' : 'dimu',
83 'b7invmAB22vtx20' : 'dimu',
84 }
85
86 return topo_dict[the_topo]
87
88 def getDimuL2(self, flags):
89 if 'noL2Comb' in self.chainPart['extra']:
90 return self.getStep(flags, 'dimuL2', [dimuL2SequenceGenCfg], comboHypoCfg=StreamerDimuL2ComboHypoCfg)
91 elif 'l2mt' in self.chainPart['l2AlgInfo']:
92 return self.getStep(flags, 'dimuL2MT', [mul2mtCBOvlpRmSequenceGenCfg], comboHypoCfg=StreamerDimuL2MTComboHypoCfg)
93 else:
94 return self.getStep(flags, 'dimuL2IO', [mul2IOOvlpRmSequenceGenCfg], comboHypoCfg=StreamerDimuL2IOComboHypoCfg)
95
96 def getDimuEF(self, flags):
97 return self.getStep(flags, 'dimuEF', [dimuEFSequenceGenCfg], comboHypoCfg=DimuEFComboHypoCfg, comboTools=[TrigMultiTrkComboHypoToolFromDict])
98
99 def getDimuEFCB(self, flags):
100 return self.getStep(flags, 'dimuEFCB', [muEFCBSequenceGenCfg], comboHypoCfg=StreamerDimuEFComboHypoCfg)
101
102 def getBmux(self, flags):
103 return self.getStep(flags, 'bmux', [bmumuxSequenceGenCfg], comboHypoCfg=BmuxComboHypoCfg, comboTools=[TrigBmumuxComboHypoToolFromDict])
104
105 def getBmumux(self, flags):
106 return self.getStep(flags, 'bmumux', [bmumuxSequenceGenCfg], comboHypoCfg=BmumuxComboHypoCfg, comboTools=[TrigBmumuxComboHypoToolFromDict])
107
108 def getBmutrk(self, flags):
109 return self.getStep(flags, 'bmutrk', [bmumuxSequenceGenCfg], comboHypoCfg=BmutrkComboHypoCfg, comboTools=[TrigMultiTrkComboHypoToolFromDict])