5 from TrigCostAnalysis.ROSToROB
import ROSToROBMap
6 from TrigCostAnalysis.TableConstructorBase
import TableConstructorBase, Column
9 from AthenaCommon.Logging
import logging
10 log = logging.getLogger(
'ROS_HLT')
13 @file ROS_HLT_TableConstructor.py
14 @brief Contains TableConstructor classes per ROS_HLT table. Defines what
15 should be saved in table and fills them
20 ''' @brief Class representing ROS_HLT table
23 def __init__(self, tableObj, underflowThreshold, overflowThreshold):
24 super().
__init__(tableObj, underflowThreshold, overflowThreshold)
26 "NetworkRequest_perEvent",
27 "CachedROBSize_perEvent",
28 "NetworkROBSize_perEvent",
31 "NROBsPerRequest_perCall"]
35 self.columns[
'name'] = Column(
"Name",
"ROS name")
36 self.columns[
'events'] = Column(
"Raw Active Events",
"Raw underlying statistics on the number of events in which this ROS was accessed.")
37 self.columns[
'eventsWeighted'] = Column(
"Active Events",
"How many events in which this sequence was executed.")
38 self.columns[
'requestRate'] = Column(
"Data Requests Rate [Hz]",
"Rate of ROS access requests each may contain many ROB reads.",
True)
39 self.columns[
'networkRequestRate'] = Column(
"Retrieved Data Requests Rate [Hz]",
"Rate of ROS access requests that fetch data from the ROBs.",
True)
40 self.columns[
'retrievedSizeRate'] = Column(
"Retrieved ROB Data Rate [kB/s]",
"Amount of data fetched from the ROBs in kB/s.",
True)
41 self.columns[
'cachedSizeRate'] = Column(
"Cached ROB Data Rate [kB/s]",
"Amount of cached data requested from the ROBs in kB/s.",
True)
42 self.columns[
'time'] = Column(
"Time Per Event [ms]",
"Average time for all requests and retrievals per event.")
43 self.columns[
'fullRequests'] = Column(
"Full ROS requests [%]",
"How many of requests to the ROS requested all ROBs")
44 self.columns[
'robsUnclassified'] = Column(
"Unclassified ROBs Rate [Hz]",
"Rate of ROB calls which were flagged unclassified.",
True)
45 self.columns[
'robsRetrieved'] = Column(
"Retrieved ROBs Rate [Hz]",
"Total rate of fetched ROB calls.",
True)
46 self.columns[
'robsHLTCached'] = Column(
"Cached HLT ROBs Rate [Hz]",
"Total rate of HLT cached ROB calls.",
True)
47 self.columns[
'robsDCMCached'] = Column(
"Cached DCM ROBs Rate [Hz]",
"Total rate of DCM cached ROB calls.",
True)
48 self.columns[
'robsIgnored'] = Column(
"Ignored ROBs Rate [Hz]",
"Rate of ROB calls which were flagged as ignored.",
True)
49 self.columns[
'robsDisabled'] = Column(
"Disabled ROBs Rate [Hz]",
"Rate of ROB calls which were flagged as disabled.",
True)
50 self.columns[
'robsNotOk'] = Column(
"Not OK ROBs Rate [Hz]",
"Rate of ROB calls in which the is OK bit was false.",
True)
54 self.columns[
'name'].addValue(itemName)
55 self.columns[
'events'].addValue(self.getHistogram(
"Request_perEvent").
GetEntries())
56 self.columns[
'eventsWeighted'].addValue(self.getHistogram(
"Request_perEvent").Integral())
57 self.columns[
'requestRate'].addValue(self.getXWeightedIntegral(
"Request_perEvent", isLog=
False))
58 self.columns[
'networkRequestRate'].addValue(self.getXWeightedIntegral(
"NetworkRequest_perEvent", isLog=
False))
59 self.columns[
'retrievedSizeRate'].addValue(self.getXWeightedIntegral(
"NetworkROBSize_perEvent", isLog=
False))
60 self.columns[
'cachedSizeRate'].addValue(self.getXWeightedIntegral(
"CachedROBSize_perEvent", isLog=
False))
61 self.columns[
'time'].addValue(self.getHistogram(
"Time_perEvent").
GetMean())
62 self.columns[
'robsUnclassified'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(1))
63 self.columns[
'robsRetrieved'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(2))
64 self.columns[
'robsHLTCached'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(3))
65 self.columns[
'robsDCMCached'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(4))
66 self.columns[
'robsIgnored'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(5))
67 self.columns[
'robsDisabled'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(6))
68 self.columns[
'robsNotOk'].addValue(self.getHistogram(
"ROBStatus_perCall").GetBinContent(7))
71 maxRobs = len(ROSToROBMap[itemName])
72 nMaxRobsRequests = self.getHistogram(
"NROBsPerRequest_perCall").GetBinContent(maxRobs)
74 allRobsRequests = self.getHistogram(
"NROBsPerRequest_perCall").Integral()
75 if (allRobsRequests == 0):
76 log.error(
"No histograms for the ROS HLT summary were found")
79 self.columns[
'fullRequests'].addValue(nMaxRobsRequests/allRobsRequests*100)