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