ATLAS Offline Software
Loading...
Searching...
No Matches
MenuComponents.MenuSequence Class Reference
Collaboration diagram for MenuComponents.MenuSequence:

Public Member Functions

 __init__ (self, flags, selectionCA, HypoToolGen)
 __del__ (self)
 name (self)
 sequence (self)
 maker (self)
 hypo (self)
 getOutputList (self)
 connectToFilter (self, outfilter)
 getHypoToolConf (self)
 buildDFDot (self, cfseq_algs, all_hypos, last_step_hypo_nodes, file)
 __repr__ (self)

Public Attributes

 ca = selectionCA
 hypoAcc = selectionCA.hypoAcc
 maker
 sequence
 name

Protected Attributes

 _sequence = Node(Alg=sequence)
 _maker = InputMakerNode( Alg = inputMaker )
 _name = CFNaming.menuSequenceName(hypoAlg.name)
 _hypo = HypoAlgNode( Alg = hypoAlg )
 _hypoToolConf = HypoToolConf( HypoToolGen )

Detailed Description

Class to group reco sequences with the Hypo.
By construction it has one Hypo only, which gives the name to this class object

Definition at line 333 of file MenuComponents.py.

Constructor & Destructor Documentation

◆ __init__()

MenuComponents.MenuSequence.__init__ ( self,
flags,
selectionCA,
HypoToolGen )

Definition at line 337 of file MenuComponents.py.

337 def __init__(self, flags, selectionCA, HypoToolGen):
338 self.ca = selectionCA
339 # separate the HypoCA to be merged later
340 self.hypoAcc = selectionCA.hypoAcc
341
342 sequence = self.ca.topSequence()
343 self._sequence = Node(Alg=sequence)
344
345 # get the InputMaker
346 inputMaker = [ a for a in self.ca.getEventAlgos() if isInputMakerBase(a)]
347 assert len(inputMaker) == 1, f"{len(inputMaker)} input makers in the ComponentAccumulator"
348 inputMaker = inputMaker[0]
349 assert inputMaker.name.startswith("IM"), f"Input maker {inputMaker.name} name needs to start with 'IM'"
350 self._maker = InputMakerNode( Alg = inputMaker )
351 input_maker_output = self.maker.readOutputList()[0] # only one since it's merged
352
353
354 # get the HypoAlg
355 hypoAlg = selectionCA.hypoAcc.getEventAlgos()
356 assert len(hypoAlg) == 1, f"{len(hypoAlg)} hypo algs in the ComponentAccumulator"
357 hypoAlg = hypoAlg[0]
358 hypoAlg.RuntimeValidation = flags.Trigger.doRuntimeNaviVal
359
360 self._name = CFNaming.menuSequenceName(hypoAlg.name)
361 self._hypo = HypoAlgNode( Alg = hypoAlg )
362 self._hypo.addOutput( CFNaming.hypoAlgOutName(hypoAlg.name) )
363 self._hypo.setPreviousDecision( input_maker_output )
364 self._hypoToolConf = HypoToolConf( HypoToolGen )
365
366 # Connect InputMaker output to ROBPrefetchingAlg(s) if there is any
367 if ROBPrefetching.StepRoI in flags.Trigger.ROBPrefetchingOptions:
368 for child in sequence.Members:
369 if ( isinstance(child, CompFactory.ROBPrefetchingAlg) and
370 input_maker_output not in child.ROBPrefetchingInputDecisions ):
371 child.ROBPrefetchingInputDecisions.append(input_maker_output)
372
373 log.debug("connecting InputMaker and HypoAlg, adding: InputMaker::%s.output=%s",
374 self.maker.Alg.name, input_maker_output)
375 log.debug("HypoAlg::%s.HypoInputDecisions=%s, HypoAlg::%s.HypoOutputDecisions=%s",
376 self.hypo.Alg.name, self.hypo.readInputList()[0],
377 self.hypo.Alg.name, self.hypo.readOutputList()[0])
378

◆ __del__()

MenuComponents.MenuSequence.__del__ ( self)

Definition at line 379 of file MenuComponents.py.

379 def __del__(self):
380 self.ca.wasMerged()
381 self.hypoAcc.wasMerged()
382

Member Function Documentation

◆ __repr__()

MenuComponents.MenuSequence.__repr__ ( self)

Definition at line 425 of file MenuComponents.py.

425 def __repr__(self):
426 hyponame = self._hypo.Alg.name
427 hypotool = self._hypoToolConf.name
428 return "MenuSequence::%s \n Hypo::%s \n Maker::%s \n Sequence::%s \n HypoTool::%s\n"\
429 %(self.name, hyponame, self.maker.Alg.name, self.sequence.Alg.name, hypotool)
430
431

◆ buildDFDot()

MenuComponents.MenuSequence.buildDFDot ( self,
cfseq_algs,
all_hypos,
last_step_hypo_nodes,
file )

Definition at line 415 of file MenuComponents.py.

415 def buildDFDot(self, cfseq_algs, all_hypos, last_step_hypo_nodes, file):
416 cfseq_algs.append(self.maker)
417 cfseq_algs.append(self.sequence)
418 file.write(" %s[fillcolor=%s]\n"%(self.maker.Alg.getName(), algColor(self.maker.Alg)))
419 file.write(" %s[fillcolor=%s]\n"%(self.sequence.Alg.getName(), algColor(self.sequence.Alg)))
420 cfseq_algs.append(self._hypo)
421 file.write(" %s[color=%s]\n"%(self._hypo.Alg.getName(), algColor(self._hypo.Alg)))
422 all_hypos.append(self._hypo)
423 return cfseq_algs, all_hypos, last_step_hypo_nodes
424

◆ connectToFilter()

MenuComponents.MenuSequence.connectToFilter ( self,
outfilter )
Connect filter to the InputMaker

Definition at line 406 of file MenuComponents.py.

406 def connectToFilter(self, outfilter):
407 """Connect filter to the InputMaker"""
408 log.debug("connectToFilter: connecting %s to inputs of %s", outfilter, self.maker.Alg.name)
409 self.maker.addInput(outfilter)
410

◆ getHypoToolConf()

MenuComponents.MenuSequence.getHypoToolConf ( self)

Definition at line 411 of file MenuComponents.py.

411 def getHypoToolConf(self) :
412 return self._hypoToolConf
413
414

◆ getOutputList()

MenuComponents.MenuSequence.getOutputList ( self)

Definition at line 403 of file MenuComponents.py.

403 def getOutputList(self):
404 return [self._hypo.readOutputList()[0]]
405

◆ hypo()

MenuComponents.MenuSequence.hypo ( self)

Definition at line 400 of file MenuComponents.py.

400 def hypo(self):
401 return self._hypo
402

◆ maker()

MenuComponents.MenuSequence.maker ( self)

Definition at line 392 of file MenuComponents.py.

392 def maker(self):
393 # Input makers are added during DataFlow building (connectToFilter) when a chain
394 # uses this sequence in another step. So we need to make sure to update the
395 # algorithm when accessed.
396 self._maker.Alg = self.ca.getEventAlgo(self._maker.Alg.name)
397 return self._maker
398

◆ name()

MenuComponents.MenuSequence.name ( self)

Definition at line 384 of file MenuComponents.py.

384 def name(self):
385 return self._name
386

◆ sequence()

MenuComponents.MenuSequence.sequence ( self)

Definition at line 388 of file MenuComponents.py.

388 def sequence(self):
389 return self._sequence
390

Member Data Documentation

◆ _hypo

MenuComponents.MenuSequence._hypo = HypoAlgNode( Alg = hypoAlg )
protected

Definition at line 361 of file MenuComponents.py.

◆ _hypoToolConf

MenuComponents.MenuSequence._hypoToolConf = HypoToolConf( HypoToolGen )
protected

Definition at line 364 of file MenuComponents.py.

◆ _maker

MenuComponents.MenuSequence._maker = InputMakerNode( Alg = inputMaker )
protected

Definition at line 350 of file MenuComponents.py.

◆ _name

MenuComponents.MenuSequence._name = CFNaming.menuSequenceName(hypoAlg.name)
protected

Definition at line 360 of file MenuComponents.py.

◆ _sequence

MenuComponents.MenuSequence._sequence = Node(Alg=sequence)
protected

Definition at line 343 of file MenuComponents.py.

◆ ca

MenuComponents.MenuSequence.ca = selectionCA

Definition at line 338 of file MenuComponents.py.

◆ hypoAcc

MenuComponents.MenuSequence.hypoAcc = selectionCA.hypoAcc

Definition at line 340 of file MenuComponents.py.

◆ maker

MenuComponents.MenuSequence.maker

Definition at line 416 of file MenuComponents.py.

◆ name

MenuComponents.MenuSequence.name

Definition at line 429 of file MenuComponents.py.

◆ sequence

MenuComponents.MenuSequence.sequence

Definition at line 417 of file MenuComponents.py.


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