ATLAS Offline Software
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 334 of file MenuComponents.py.

Constructor & Destructor Documentation

◆ __init__()

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

Definition at line 338 of file MenuComponents.py.

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

◆ __del__()

def MenuComponents.MenuSequence.__del__ (   self)

Definition at line 380 of file MenuComponents.py.

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

Member Function Documentation

◆ __repr__()

def MenuComponents.MenuSequence.__repr__ (   self)

Definition at line 426 of file MenuComponents.py.

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

◆ buildDFDot()

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

Definition at line 416 of file MenuComponents.py.

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

◆ connectToFilter()

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

Definition at line 407 of file MenuComponents.py.

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

◆ getHypoToolConf()

def MenuComponents.MenuSequence.getHypoToolConf (   self)

Definition at line 412 of file MenuComponents.py.

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

◆ getOutputList()

def MenuComponents.MenuSequence.getOutputList (   self)

Definition at line 404 of file MenuComponents.py.

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

◆ hypo()

def MenuComponents.MenuSequence.hypo (   self)

Definition at line 401 of file MenuComponents.py.

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

◆ maker()

def MenuComponents.MenuSequence.maker (   self)

Definition at line 393 of file MenuComponents.py.

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

◆ name()

def MenuComponents.MenuSequence.name (   self)

Definition at line 385 of file MenuComponents.py.

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

◆ sequence()

def MenuComponents.MenuSequence.sequence (   self)

Definition at line 389 of file MenuComponents.py.

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

Member Data Documentation

◆ _hypo

MenuComponents.MenuSequence._hypo
private

Definition at line 362 of file MenuComponents.py.

◆ _hypoToolConf

MenuComponents.MenuSequence._hypoToolConf
private

Definition at line 365 of file MenuComponents.py.

◆ _maker

MenuComponents.MenuSequence._maker
private

Definition at line 351 of file MenuComponents.py.

◆ _name

MenuComponents.MenuSequence._name
private

Definition at line 361 of file MenuComponents.py.

◆ _sequence

MenuComponents.MenuSequence._sequence
private

Definition at line 344 of file MenuComponents.py.

◆ ca

MenuComponents.MenuSequence.ca

Definition at line 339 of file MenuComponents.py.

◆ hypoAcc

MenuComponents.MenuSequence.hypoAcc

Definition at line 341 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:81
HLTCFTools.algColor
def algColor(alg)
Definition: HLTCFTools.py:15