ATLAS Offline Software
Loading...
Searching...
No Matches
Thread_Occupancy_HLT_TableConstructor.py
Go to the documentation of this file.
1#!/usr/bin/env python
2#
3# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
4#
5
6from TrigCostAnalysis.TableConstructorBase import TableConstructorBase, Column
7
8'''
9@file Thread_Occupancy_HLT_TableConstructor.py
10@brief Contains TableConstructor classes per Thread_Occupancy_HLT table. Defines what
11 should be saved in table and fills them
12'''
13
14
15class Thread_Occupancy_HLT_TableConstructor(TableConstructorBase):
16 ''' @brief Class representing Thread_Occupancy_HLT table
17 '''
18 def __init__(self, tableObj, underflowThreshold, overflowThreshold):
19 super(). __init__(tableObj, underflowThreshold, overflowThreshold)
20 self.expectedHistograms = ["AlgCalls_perEvent",
21 "ThisAlgCalls_perEvent",
22 "OtherAlgCalls_perEvent",
23 "AlgSlot_perCall",
24 "WallTime_perEvent",
25 "AlgTime_perEvent",
26 "AlgTime_perEventFractional",
27 "FrameworkTime_perEvent",
28 "FrameworkTime_perEventFractional",
29 "UnmonitoredTime_perEvent",
30 "UnmonitoredTime_perEventFractional"]
31
32
33 def defineColumns(self):
34 self.columns["name"] = Column("Thread Enumerator", "Counting number assinged to thread")
35 self.columns["events"] = Column("Raw Active Events", "Raw underlying statistics on number of events processed at least partially on this thread")
36 self.columns["eventsWeighted"] = Column("Active Events", "Total weighted number of events processed at least partially on this thread")
37 self.columns["callsPerEvent"] = Column("Alg Calls/Event", "Mean number of alg calls per processed event on this thread")
38 self.columns["thisCallsPerEvent"] = Column("This Event Algs/Event", "Mean number of alg calls from the monitored event on this thread")
39 self.columns["otherCallsPerEvent"] = Column("Other Event Algs/Event", "Mean number of alg calls from other events on this thread")
40 self.columns["wallTimePerEvent"] = Column("Wall time/Event [ms]", "Mean Total event processing walltime per event")
41 self.columns["algTimePerEvent"] = Column("Alg Time/Event [ms]", "Mean algorithm execution time per event")
42 self.columns["frameworkTimePerEvent"] = Column("Framework Time/Event [ms]", "Mean time spent outside of algorithm execution per event")
43 self.columns["unmonitoredTimePerEvent"] = Column("Unmonitored Time/Event [ms]", "Mean time which could not be monitored per event")
44
45
46 def fillColumns(self, itemName):
47 self.columns['name'].addValue(itemName)
48 self.columns["events"].addValue(self.getHistogram("AlgCalls_perEvent").GetEntries())
49 self.columns["eventsWeighted"].addValue(self.getHistogram("AlgCalls_perEvent").Integral())
50 self.columns["callsPerEvent"].addValue(self.getHistogram("AlgCalls_perEvent").GetMean())
51 self.columns["thisCallsPerEvent"].addValue(self.getHistogram("ThisAlgCalls_perEvent").GetMean())
52 self.columns["otherCallsPerEvent"].addValue(self.getHistogram("OtherAlgCalls_perEvent").GetMean())
53 self.columns["wallTimePerEvent"].addValue(self.getHistogram("WallTime_perEvent").GetMean())
54 self.columns["algTimePerEvent"].addValue(self.getHistogram("AlgTime_perEvent").GetMean())
55 self.columns["frameworkTimePerEvent"].addValue(self.getHistogram("FrameworkTime_perEvent").GetMean())
56 self.columns["unmonitoredTimePerEvent"].addValue(self.getHistogram("UnmonitoredTime_perEvent").GetMean())
TGraphErrors * GetMean(TH2F *histo)
TGraphErrors * GetEntries(TH2F *histo)