Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Public Attributes | Private Attributes | List of all members
MenuComponents.MenuSequence Class Reference
Collaboration diagram for MenuComponents.MenuSequence:

Public Member Functions

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

Public Attributes

 ca
 
 hypoAcc
 

Private Attributes

 _sequence
 
 _maker
 
 _name
 
 _hypo
 
 _hypoToolConf
 

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 381 of file MenuComponents.py.

Constructor & Destructor Documentation

◆ __init__()

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

Definition at line 385 of file MenuComponents.py.

385  def __init__(self, flags, selectionCA, HypoToolGen):
386  self.ca = selectionCA
387  # separate the HypoCA to be merged later
388  self.hypoAcc = selectionCA.hypoAcc
389 
390  sequence = self.ca.topSequence()
391  self._sequence = Node(Alg=sequence)
392 
393  # get the InputMaker
394  inputMaker = [ a for a in self.ca.getEventAlgos() if isInputMakerBase(a)]
395  assert len(inputMaker) == 1, f"{len(inputMaker)} input makers in the ComponentAccumulator"
396  inputMaker = inputMaker[0]
397  assert inputMaker.name.startswith("IM"), f"Input maker {inputMaker.name} name needs to start with 'IM'"
398  self._maker = InputMakerNode( Alg = inputMaker )
399  input_maker_output = self.maker.readOutputList()[0] # only one since it's merged
400 
401 
402  # get the HypoAlg
403  hypoAlg = selectionCA.hypoAcc.getEventAlgos()
404  assert len(hypoAlg) == 1, f"{len(hypoAlg)} hypo algs in the ComponentAccumulator"
405  hypoAlg = hypoAlg[0]
406  hypoAlg.RuntimeValidation = flags.Trigger.doRuntimeNaviVal
407 
408  self._name = CFNaming.menuSequenceName(hypoAlg.name)
409  self._hypo = HypoAlgNode( Alg = hypoAlg )
410  self._hypo.addOutput( CFNaming.hypoAlgOutName(hypoAlg.name) )
411  self._hypo.setPreviousDecision( input_maker_output )
412  self._hypoToolConf = HypoToolConf( HypoToolGen )
413 
414  # Connect InputMaker output to ROBPrefetchingAlg(s) if there is any
415  if ROBPrefetching.StepRoI in flags.Trigger.ROBPrefetchingOptions:
416  for child in sequence.Members:
417  if ( isinstance(child, CompFactory.ROBPrefetchingAlg) and
418  input_maker_output not in child.ROBPrefetchingInputDecisions ):
419  child.ROBPrefetchingInputDecisions.append(input_maker_output)
420 
421  log.debug("connecting InputMaker and HypoAlg, adding: InputMaker::%s.output=%s",
422  self.maker.Alg.name, input_maker_output)
423  log.debug("HypoAlg::%s.HypoInputDecisions=%s, HypoAlg::%s.HypoOutputDecisions=%s",
424  self.hypo.Alg.name, self.hypo.readInputList()[0],
425  self.hypo.Alg.name, self.hypo.readOutputList()[0])
426 

◆ __del__()

def MenuComponents.MenuSequence.__del__ (   self)

Definition at line 427 of file MenuComponents.py.

427  def __del__(self):
428  self.ca.wasMerged()
429  self.hypoAcc.wasMerged()
430 

Member Function Documentation

◆ __repr__()

def MenuComponents.MenuSequence.__repr__ (   self)

Definition at line 473 of file MenuComponents.py.

473  def __repr__(self):
474  hyponame = self._hypo.Alg.name
475  hypotool = self._hypoToolConf.name
476  return "MenuSequence::%s \n Hypo::%s \n Maker::%s \n Sequence::%s \n HypoTool::%s\n"\
477  %(self.name, hyponame, self.maker.Alg.name, self.sequence.Alg.name, hypotool)
478 
479 

◆ buildDFDot()

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

Definition at line 463 of file MenuComponents.py.

463  def buildDFDot(self, cfseq_algs, all_hypos, last_step_hypo_nodes, file):
464  cfseq_algs.append(self.maker)
465  cfseq_algs.append(self.sequence)
466  file.write(" %s[fillcolor=%s]\n"%(self.maker.Alg.getName(), algColor(self.maker.Alg)))
467  file.write(" %s[fillcolor=%s]\n"%(self.sequence.Alg.getName(), algColor(self.sequence.Alg)))
468  cfseq_algs.append(self._hypo)
469  file.write(" %s[color=%s]\n"%(self._hypo.Alg.getName(), algColor(self._hypo.Alg)))
470  all_hypos.append(self._hypo)
471  return cfseq_algs, all_hypos, last_step_hypo_nodes
472 

◆ connectToFilter()

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

Definition at line 454 of file MenuComponents.py.

454  def connectToFilter(self, outfilter):
455  """Connect filter to the InputMaker"""
456  log.debug("connecting %s to inputs of %s", outfilter, self.maker.Alg.name)
457  self.maker.addInput(outfilter)
458 

◆ getHypoToolConf()

def MenuComponents.MenuSequence.getHypoToolConf (   self)

Definition at line 459 of file MenuComponents.py.

459  def getHypoToolConf(self) :
460  return self._hypoToolConf
461 
462 

◆ getOutputList()

def MenuComponents.MenuSequence.getOutputList (   self)

Definition at line 451 of file MenuComponents.py.

451  def getOutputList(self):
452  return [self._hypo.readOutputList()[0]]
453 

◆ hypo()

def MenuComponents.MenuSequence.hypo (   self)

Definition at line 448 of file MenuComponents.py.

448  def hypo(self):
449  return self._hypo
450 

◆ maker()

def MenuComponents.MenuSequence.maker (   self)

Definition at line 440 of file MenuComponents.py.

440  def maker(self):
441  # Input makers are added during DataFlow building (connectToFilter) when a chain
442  # uses this sequence in another step. So we need to make sure to update the
443  # algorithm when accessed.
444  self._maker.Alg = self.ca.getEventAlgo(self._maker.Alg.name)
445  return self._maker
446 

◆ name()

def MenuComponents.MenuSequence.name (   self)

Definition at line 432 of file MenuComponents.py.

432  def name(self):
433  return self._name
434 

◆ sequence()

def MenuComponents.MenuSequence.sequence (   self)

Definition at line 436 of file MenuComponents.py.

436  def sequence(self):
437  return self._sequence
438 

Member Data Documentation

◆ _hypo

MenuComponents.MenuSequence._hypo
private

Definition at line 409 of file MenuComponents.py.

◆ _hypoToolConf

MenuComponents.MenuSequence._hypoToolConf
private

Definition at line 412 of file MenuComponents.py.

◆ _maker

MenuComponents.MenuSequence._maker
private

Definition at line 398 of file MenuComponents.py.

◆ _name

MenuComponents.MenuSequence._name
private

Definition at line 408 of file MenuComponents.py.

◆ _sequence

MenuComponents.MenuSequence._sequence
private

Definition at line 391 of file MenuComponents.py.

◆ ca

MenuComponents.MenuSequence.ca

Definition at line 386 of file MenuComponents.py.

◆ hypoAcc

MenuComponents.MenuSequence.hypoAcc

Definition at line 388 of file MenuComponents.py.


The documentation for this class was generated from the following file:
AthenaPoolTestReadDoubleSelector.topSequence
topSequence
Definition: AthenaPoolTestReadDoubleSelector.py:18
detail::addInput
void addInput(T &c, const Primitive &input, A a=defaultAccessor< T >)
Definition: PrimitiveHelpers.h:50
HLTCFTools.isInputMakerBase
def isInputMakerBase(alg)
Definition: HLTCFTools.py:40
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
python.AthDsoLogger.__del__
def __del__(self)
Definition: AthDsoLogger.py:82
HLTCFTools.algColor
def algColor(alg)
Definition: HLTCFTools.py:15