ATLAS Offline Software
Loading...
Searching...
No Matches
ChainConfigurationBase.ChainConfigurationBase Class Reference
Inheritance diagram for ChainConfigurationBase.ChainConfigurationBase:
Collaboration diagram for ChainConfigurationBase.ChainConfigurationBase:

Public Member Functions

 __init__ (self, chainDict)
 getStep (self, flags, stepName, sequenceCfgArray, comboHypoCfg=ComboHypoCfg, comboTools=[], **stepArgs)
 getEmptyStep (self, stepName)
 buildChain (self, chainSteps)
 assembleChainImpl (self, flags)
 assembleChain (self, flags)

Public Attributes

dict dict = {}
dict chainName = self.dict['chainName']
dict chainL1Item = self.dict['L1item']
dict chainPart = self.dict['chainParts'][0]
dict L1Threshold = self.chainPart['L1threshold']
 mult = int(self.chainPart['multiplicity'])
dict chainPartName = self.chainPart['chainPartName']
str chainPartNameNoMult = ''
str chainPartNameNoMultwL1 = ''

Detailed Description

Definition at line 18 of file ChainConfigurationBase.py.

Constructor & Destructor Documentation

◆ __init__()

ChainConfigurationBase.ChainConfigurationBase.__init__ ( self,
chainDict )

Definition at line 20 of file ChainConfigurationBase.py.

20 def __init__(self, chainDict):
21
22 # Consider using translation from dict["chainName"] to dict.chainName (less typing),
23 # though need to be able to access list of dictionaries as value of chainPart as well
24 # dict = type("dict", (object,), dict)
25
26 self.dict = {}
27 self.dict.update(chainDict)
28
29 self.chainName = self.dict['chainName']
30 self.chainL1Item = self.dict['L1item']
31
32 # check dictionary contains only one chain part
33 if len( self.dict['chainParts'] ) != 1:
34 raise RuntimeError( "Passed chain dictionary with %i chainParts to ChainConfigurationBase, but this constructor only supports chains with a single part" % len( self.dict['chainParts'] ) )
35
36 self.chainPart = self.dict['chainParts'][0]
37 self.L1Threshold = self.chainPart['L1threshold'] # now threshold is always there
38 self.mult = int(self.chainPart['multiplicity'])
39 self.chainPartName = self.chainPart['chainPartName']
40 self.chainPartNameNoMult = ''
41 self.chainPartNameNoMultwL1 = ''
42
43 self.chainPartNameNoMult = self.chainPartName[1:] if self.mult > 1 else self.chainPartName
44 self.chainPartNameNoMultwL1 += "_"+self.chainL1Item
45

Member Function Documentation

◆ assembleChain()

ChainConfigurationBase.ChainConfigurationBase.assembleChain ( self,
flags )

Definition at line 104 of file ChainConfigurationBase.py.

104 def assembleChain(self, flags):
105 return self.assembleChainImpl(flags)

◆ assembleChainImpl()

ChainConfigurationBase.ChainConfigurationBase.assembleChainImpl ( self,
flags )

Definition at line 101 of file ChainConfigurationBase.py.

101 def assembleChainImpl(self, flags):
102 return
103

◆ buildChain()

ChainConfigurationBase.ChainConfigurationBase.buildChain ( self,
chainSteps )

Definition at line 69 of file ChainConfigurationBase.py.

69 def buildChain(self, chainSteps):
70
71 alignmentGroups = []
72 if isinstance(self.chainPart, dict):
73 alignmentGroups = [self.chainPart['alignmentGroup']]
74 elif isinstance(self.chainPart, list):
75
76 alignmentGroups = [cp['alignmentGroup'] for cp in self.chainPart]
77 testAlignGrps = list(set(alignmentGroups))
78 if not(len(testAlignGrps) == 1 and testAlignGrps[0] == 'JetMET'):
79 log.error("ChainConfigurationBase.buildChain(): number of chainParts does not correspond chainSteps")
80 log.error('ChainConfigurationBase.buildChain() chainPart: %s',self.chainPart)
81 log.error("ChainConfigurationBase.buildChain() alignmentGroups: %s", alignmentGroups)
82 log.error("ChainConfigurationBase.buildChain() chainName: %s", self.chainName)
83 log.error("ChainConfigurationBase.buildChain() chainSteps: %s", chainSteps)
84 else:
85 alignmentGroups = testAlignGrps
86
87 else:
88 log.error("ChainConfigurationBase.buildChain(): chainPart is not a list or dict, not sure what to do here! %s ", self.chainPart)
89
90 L1decision = mapThresholdToL1DecisionCollection(self.L1Threshold)
91 myChain = Chain(name = self.chainName,
92 ChainSteps = chainSteps,
93 L1decisions = [L1decision],
94 nSteps = [len(chainSteps)], # not true for combined chains
95 alignmentGroups = alignmentGroups
96 )
97
98 return myChain
99
STL class.

◆ getEmptyStep()

ChainConfigurationBase.ChainConfigurationBase.getEmptyStep ( self,
stepName )

Definition at line 65 of file ChainConfigurationBase.py.

65 def getEmptyStep(self, stepName):
66 log.debug('Configuring empty step %s', stepName)
67 return ChainStep(stepName, chainDicts=[self.dict], isEmpty=True)
68

◆ getStep()

ChainConfigurationBase.ChainConfigurationBase.getStep ( self,
flags,
stepName,
sequenceCfgArray,
comboHypoCfg = ComboHypoCfg,
comboTools = [],
** stepArgs )

Definition at line 46 of file ChainConfigurationBase.py.

46 def getStep(self, flags, stepName, sequenceCfgArray, comboHypoCfg=ComboHypoCfg, comboTools=[], **stepArgs):
47 log.debug("Configuring step %s with %d chainParts", stepName, len(self.dict['chainParts']))
48
49 # do not generate Menu Sequences, just store the functions that can do that
50 seqArray = [functools.partial(gen, flags, **stepArgs) for gen in sequenceCfgArray]
51
52 if (len(seqArray)>0):
53 if inspect.signature(comboHypoCfg).parameters and all(inspect.signature(comboTool).parameters for comboTool in comboTools):
54 # Bind flags to comboHypo generator if needed
55 if 'flags' in inspect.signature(comboHypoCfg).parameters:
56 comboHypoCfg = functools.partial(comboHypoCfg, flags)
57 else:
58 comboHypoCfg = functools.partial(comboHypoCfg)
59 return ChainStep(stepName, seqArray,
60 [self.dict], comboHypoCfg = comboHypoCfg, comboToolConfs = comboTools)
61
62 # if not returned any step
63 raise RuntimeError("[getStep] No sequences generated for step %s!", stepName)
64

Member Data Documentation

◆ chainL1Item

dict ChainConfigurationBase.ChainConfigurationBase.chainL1Item = self.dict['L1item']

Definition at line 30 of file ChainConfigurationBase.py.

◆ chainName

ChainConfigurationBase.ChainConfigurationBase.chainName = self.dict['chainName']

Definition at line 29 of file ChainConfigurationBase.py.

◆ chainPart

ChainConfigurationBase.ChainConfigurationBase.chainPart = self.dict['chainParts'][0]

Definition at line 36 of file ChainConfigurationBase.py.

◆ chainPartName

dict ChainConfigurationBase.ChainConfigurationBase.chainPartName = self.chainPart['chainPartName']

Definition at line 39 of file ChainConfigurationBase.py.

◆ chainPartNameNoMult

str ChainConfigurationBase.ChainConfigurationBase.chainPartNameNoMult = ''

Definition at line 40 of file ChainConfigurationBase.py.

◆ chainPartNameNoMultwL1

str ChainConfigurationBase.ChainConfigurationBase.chainPartNameNoMultwL1 = ''

Definition at line 41 of file ChainConfigurationBase.py.

◆ dict

dict ChainConfigurationBase.ChainConfigurationBase.dict = {}

Definition at line 26 of file ChainConfigurationBase.py.

◆ L1Threshold

dict ChainConfigurationBase.ChainConfigurationBase.L1Threshold = self.chainPart['L1threshold']

Definition at line 37 of file ChainConfigurationBase.py.

◆ mult

ChainConfigurationBase.ChainConfigurationBase.mult = int(self.chainPart['multiplicity'])

Definition at line 38 of file ChainConfigurationBase.py.


The documentation for this class was generated from the following file: