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

Constructor & Destructor Documentation

◆ __init__()

def 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__()

def 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__()

def 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()

def 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()

def 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()

def MenuComponents.MenuSequence.getHypoToolConf (   self)

Definition at line 411 of file MenuComponents.py.

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

◆ getOutputList()

def MenuComponents.MenuSequence.getOutputList (   self)

Definition at line 403 of file MenuComponents.py.

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

◆ hypo()

def MenuComponents.MenuSequence.hypo (   self)

Definition at line 400 of file MenuComponents.py.

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

◆ maker()

def 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()

def MenuComponents.MenuSequence.name (   self)

Definition at line 384 of file MenuComponents.py.

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

◆ sequence()

def 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
private

Definition at line 361 of file MenuComponents.py.

◆ _hypoToolConf

MenuComponents.MenuSequence._hypoToolConf
private

Definition at line 364 of file MenuComponents.py.

◆ _maker

MenuComponents.MenuSequence._maker
private

Definition at line 350 of file MenuComponents.py.

◆ _name

MenuComponents.MenuSequence._name
private

Definition at line 360 of file MenuComponents.py.

◆ _sequence

MenuComponents.MenuSequence._sequence
private

Definition at line 343 of file MenuComponents.py.

◆ ca

MenuComponents.MenuSequence.ca

Definition at line 338 of file MenuComponents.py.

◆ hypoAcc

MenuComponents.MenuSequence.hypoAcc

Definition at line 340 of file MenuComponents.py.


The documentation for this class was generated from the following file:
AthenaPoolTestReadDoubleSelector.topSequence
topSequence
Definition: AthenaPoolTestReadDoubleSelector.py:18
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZj_MiNNLO.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.AthDsoLogger.__del__
def __del__(self)
Definition: AthDsoLogger.py:81
HLTCFTools.algColor
def algColor(alg)
Definition: HLTCFTools.py:15