ATLAS Offline Software
Boards.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
2 
3 __all__ = ['MenuBoardsCollection', 'BoardType']
4 
5 from enum import Enum
6 from collections import OrderedDict as odict
7 
8 from AthenaCommon.Logging import logging
9 log = logging.getLogger(__name__)
10 
11 class BoardType(Enum):
12  NONE = 1
13  MUCTPI = 2
14  TOPO = 3
15  CTPIN = 4
16  MERGER = 5
17  def __repr__(self):
18  return self.name
19  def __str__(self):
20  return self.name
21  @staticmethod
22  def fromBoardName(name):
23  if 'muctpi' in name.lower():
24  btype = BoardType.MUCTPI
25  elif 'merger' in name.lower():
26  btype = BoardType.MERGER
27  elif 'topo' in name.lower():
28  btype = BoardType.TOPO
29  elif 'ctpin' in name.lower():
30  btype = BoardType.CTPIN
31  else:
32  raise RuntimeError("No BoardType defined for board %s" % name)
33  return btype
34 
35 
37  def __init__(self):
38  self.boards = {}
39 
40  def addBoard(self, boardDef):
41  name = boardDef["name"]
42  btype = BoardType.fromBoardName(name)
43  isLegacy = 'legacy' in boardDef
44  self.boards[name] = Board(name, btype, isLegacy)
45  if "connectors" in boardDef:
46  self.boards[name].addOutputConnectorNames([c["name"] for c in boardDef["connectors"]])
47  return self.boards[name]
48 
49  def json(self):
50  from collections import OrderedDict as odict
51  confObj = odict()
52  for boardName in sorted(self.boards):
53  confObj[boardName] = self.boards[boardName].json()
54  return confObj
55 
56 
57 class Board(object):
58  def __init__(self, name, btype, isLegacy = False):
59  self.name = name
60  self.btype = btype
61  self.isLegacy = isLegacy
62  self.outputConnectors = []
63  self.inputConnectors = []
64 
65  def addOutputConnectorNames(self, connName ):
66  self.outputConnectors += connName
67 
68  def json(self):
69  confObj = odict()
70  confObj["type"] = str(self.btype)
71  if self.isLegacy:
72  confObj["legacy"] = self.isLegacy
73  confObj["connectors"] = self.outputConnectors
74  # inputConnectors only exist for merger boards
75  if confObj["type"] == BoardType.MERGER:
76  confObj["inputConnectors"] = self.inputConnectors
77  return confObj
python.L1.Base.Boards.Board
Definition: Boards.py:57
python.L1.Base.Boards.MenuBoardsCollection.addBoard
def addBoard(self, boardDef)
Definition: Boards.py:40
python.L1.Base.Boards.Board.isLegacy
isLegacy
Definition: Boards.py:61
python.L1.Base.Boards.Board.inputConnectors
inputConnectors
Definition: Boards.py:63
python.L1.Base.Boards.BoardType.fromBoardName
def fromBoardName(name)
Definition: Boards.py:22
python.L1.Base.Boards.MenuBoardsCollection.boards
boards
Definition: Boards.py:38
python.L1.Base.Boards.MenuBoardsCollection.__init__
def __init__(self)
Definition: Boards.py:37
python.L1.Base.Boards.MenuBoardsCollection.json
def json(self)
Definition: Boards.py:49
python.L1.Base.Boards.BoardType
Definition: Boards.py:11
python.L1.Base.Boards.Board.btype
btype
Definition: Boards.py:60
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
python.L1.Base.Boards.Board.__init__
def __init__(self, name, btype, isLegacy=False)
Definition: Boards.py:58
python.L1.Base.Boards.BoardType.__repr__
def __repr__(self)
Definition: Boards.py:17
python.L1.Base.Boards.Board.name
name
Definition: Boards.py:59
python.L1.Base.Boards.Board.json
def json(self)
Definition: Boards.py:68
python.L1.Base.Boards.Board.outputConnectors
outputConnectors
Definition: Boards.py:62
pickleTool.object
object
Definition: pickleTool.py:30
str
Definition: BTagTrackIpAccessor.cxx:11
python.L1.Base.Boards.MenuBoardsCollection
Definition: Boards.py:36
python.L1.Base.Boards.Board.addOutputConnectorNames
def addOutputConnectorNames(self, connName)
Definition: Boards.py:65
python.L1.Base.Boards.BoardType.__str__
def __str__(self)
Definition: Boards.py:19