ATLAS Offline Software
Loading...
Searching...
No Matches
CTP.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from AthenaCommon.Logging import logging
4log = logging.getLogger(__name__)
5
6from ..Config.MonitorDef import MonitorDef
7from ..Config.CTPInputConfig import CTPInputConfig
8from .BunchGroupSet import BunchGroupSet
9from .MonCounters import MenuMonCountersCollection
10
11class CTP(object):
12
13 def __init__(self):
14 self.inputConnectors = CTPInputConfig.cablingLayout()
15 self.random = Random( names = ['Random0', 'Random1', 'Random2', 'Random3'], cuts = [1, 1, 1, 1] )
17 self.counters = MenuMonCountersCollection() # monitoring counters in the menu
18
19 # Customisations via flags
20
21 def setBunchGroupSetName(self, name):
22 self.bunchGroupSet.name = name
23 return self.bunchGroupSet
24
25 def addBunchGroup(self, name, internalNumber, bunches):
26 self.bunchGroupSet.addBunchGroup(name, internalNumber, bunches)
27
28 def setupMonitoring(self, menuName, menuItems, menuThresholds, connectors, menuFullName):
29
32
33 # add the CTPMon counters (selection defined in L1/Config/MonitorDef.py)
34 for counter in MonitorDef.ctpmonCounters( menuThresholds, connectors ):
35 self.counters.addCounter( counter )
36
37 # add the CTPIN counters (selection defined in L1/Config/MonitorDef.py)
38 for counter in MonitorDef.ctpinCounters( menuThresholds, connectors, self.inputConnectors["ctpin"] ):
39 self.counters.addCounter( counter )
40
41 # mark the L1 Items that they should be monitored
42 MonitorDef.applyItemCounter( menuName, menuItems, menuFullName )
43 pass
44
45 def checkConnectorAvailability(self, availableConnectors, menuToLoad):
46 inputConnectorList = []
47 inputConnectorList += self.inputConnectors["optical"].values()
48 inputConnectorList += self.inputConnectors["electrical"].values()
49 inputConnectorList += self.inputConnectors["ctpin"]["slot7"].values()
50 inputConnectorList += self.inputConnectors["ctpin"]["slot8"].values()
51 inputConnectorList += self.inputConnectors["ctpin"]["slot9"].values()
52 for connName in inputConnectorList:
53 if connName != '' and connName not in availableConnectors:
54 msg = "Connector '%s' requested in L1/Config/CTPConfig.py not defined as menu input. Please add it to L1/Menu/Menu_%s.py" % (connName, menuToLoad[1])
55 log.error(msg)
56 raise RuntimeError(msg)
57
58 def json(self):
59 confObj = {
60 "inputs": self.inputConnectors,
61 "monitoring": self.counters.json()
62 }
63 return confObj
64
65
66
68 def __init__(self, names, cuts):
69 self.names = names
70 self.cuts = cuts
71
nlohmann::json json
setupMonitoring(self, menuName, menuItems, menuThresholds, connectors, menuFullName)
Definition CTP.py:28
addBunchGroup(self, name, internalNumber, bunches)
Definition CTP.py:25
checkConnectorAvailability(self, availableConnectors, menuToLoad)
Definition CTP.py:45
setBunchGroupSetName(self, name)
Definition CTP.py:21
__init__(self, names, cuts)
Definition CTP.py:68