ATLAS Offline Software
Loading...
Searching...
No Matches
python.TriggerAPI.TriggerInfo.TriggerInfo Class Reference
Collaboration diagram for python.TriggerAPI.TriggerInfo.TriggerInfo:

Public Member Functions

 __init__ (self, period=0, customGRL=None, release=None, flags=None)
 setRunRange (self, start=0, end=999999)
 __str__ (self)
 toJSON (self)
 merge (cls, listofTI)
 testCustomGRL (cls, grl)
 reparse (self)

Public Attributes

list triggerChains = []
 period = period
int totalLB = 0
dict totalLBByRun = {}

Protected Member Functions

 _getUnprescaled (self, triggerType, additionalTriggerType, matchPattern, livefraction=1.0)
 _getLowestUnprescaled (self, triggerType, additionalTriggerType, matchPattern, livefraction=1.0)
 _getAllHLT (self, triggerType, additionalTriggerType, matchPattern, livefraction)
 _getActive (self, triggerType, additionalTriggerType, matchPattern, livefraction)
 _getInactive (self, triggerType, additionalTriggerType, matchPattern, livefraction)
 _checkPeriodConsistency (self, triggerType, additionalTriggerType, matchPattern)

Detailed Description

 Object containing all the HLT information related to a given period.
    Stores a list of TriggerChain objects and the functions to skim them

Definition at line 13 of file TriggerInfo.py.

Constructor & Destructor Documentation

◆ __init__()

python.TriggerAPI.TriggerInfo.TriggerInfo.__init__ ( self,
period = 0,
customGRL = None,
release = None,
flags = None )

Definition at line 17 of file TriggerInfo.py.

17 def __init__(self,period=0, customGRL=None, release=None, flags=None):
18 self.triggerChains = []
19 self.period = period
20 self.totalLB = 0
21 self.totalLBByRun = {}
22
23 if not period and not customGRL: return
24 from .TriggerDataAccess import getHLTlist
25 HLTlist, self.totalLB, self.totalLBByRun = getHLTlist(period, customGRL, release, flags)
26 for hlt, l1, livefraction, activeLB, hasRerun, activeLBByRun in HLTlist:
27 self.triggerChains.append( TriggerChain(hlt, l1, livefraction, activeLB, hasRerun, activeLBByRun))
28

Member Function Documentation

◆ __str__()

python.TriggerAPI.TriggerInfo.TriggerInfo.__str__ ( self)

Definition at line 41 of file TriggerInfo.py.

41 def __str__(self):
42 return f"<TriggerMenuMT.TriggerAPI.TriggerInfo.TriggerInfo object with {len(self.triggerChains)} triggerChains, period={self.period}, totalLB={self.totalLB}>"
43

◆ _checkPeriodConsistency()

python.TriggerAPI.TriggerInfo.TriggerInfo._checkPeriodConsistency ( self,
triggerType,
additionalTriggerType,
matchPattern )
protected

Definition at line 110 of file TriggerInfo.py.

110 def _checkPeriodConsistency(self,triggerType, additionalTriggerType, matchPattern):
111 inconsistent = set()
112 for i in range(len(self.triggerChains)):
113 probe1 = self.triggerChains[i]
114 if not (probe1.passType(triggerType, additionalTriggerType) and re.search(matchPattern, probe1.name)): continue
115 for j in range(i+1,len(self.triggerChains)):
116 probe2 = self.triggerChains[j]
117 if not (probe2.passType(triggerType, additionalTriggerType) and re.search(matchPattern, probe2.name)): continue
118 if probe1.isUnprescaled() and not probe2.isUnprescaled() and probe1.isLowerThan(probe2,self.period)==1:
119 log.error(f"Found {probe2.name} that is tighter than Primary {probe1.name}")
120 inconsistent.add(probe2.name)
121 if probe2.isUnprescaled() and not probe1.isUnprescaled() and probe2.isLowerThan(probe1,self.period)==1:
122 log.error(f"Found {probe1.name} that is tighter than Primary {probe2.name}")
123 inconsistent.add(probe1.name)
124
125 return inconsistent
126
127
STL class.

◆ _getActive()

python.TriggerAPI.TriggerInfo.TriggerInfo._getActive ( self,
triggerType,
additionalTriggerType,
matchPattern,
livefraction )
protected

Definition at line 105 of file TriggerInfo.py.

105 def _getActive(self,triggerType, additionalTriggerType, matchPattern, livefraction):
106 return [x.name for x in self.triggerChains if x.isActive(livefraction) and x.passType(triggerType, additionalTriggerType) and re.search(matchPattern, x.name)]

◆ _getAllHLT()

python.TriggerAPI.TriggerInfo.TriggerInfo._getAllHLT ( self,
triggerType,
additionalTriggerType,
matchPattern,
livefraction )
protected

Definition at line 102 of file TriggerInfo.py.

102 def _getAllHLT(self,triggerType, additionalTriggerType, matchPattern, livefraction):
103 return {x.name: x.livefraction for x in self.triggerChains if x.passType(triggerType, additionalTriggerType) and re.search(matchPattern, x.name) and x.isUnprescaled(livefraction)}
104

◆ _getInactive()

python.TriggerAPI.TriggerInfo.TriggerInfo._getInactive ( self,
triggerType,
additionalTriggerType,
matchPattern,
livefraction )
protected

Definition at line 107 of file TriggerInfo.py.

107 def _getInactive(self,triggerType, additionalTriggerType, matchPattern, livefraction):
108 return [x.name for x in self.triggerChains if x.isInactive(livefraction) and x.passType(triggerType, additionalTriggerType) and re.search(matchPattern, x.name)]
109

◆ _getLowestUnprescaled()

python.TriggerAPI.TriggerInfo.TriggerInfo._getLowestUnprescaled ( self,
triggerType,
additionalTriggerType,
matchPattern,
livefraction = 1.0 )
protected

Definition at line 82 of file TriggerInfo.py.

82 def _getLowestUnprescaled(self,triggerType, additionalTriggerType, matchPattern, livefraction=1.0):
83 chainList = [ x for x in self.triggerChains if x.isUnprescaled(livefraction) and x.passType(triggerType, additionalTriggerType) and re.search(matchPattern, x.name)]
84 typeMap = {}
85 for chain in chainList:
86 if chain.triggerType not in typeMap:
87 typeMap[chain.triggerType] = [chain]
88 continue
89 append = False
90 for other in typeMap[chain.triggerType][:]:
91 comp = chain.isLowerThan(other,self.period)
92 if comp == 0:
93 append = False
94 break
95 append = True
96 if comp == 1: typeMap[chain.triggerType].remove(other)
97 if append:
98 typeMap[chain.triggerType].append(chain)
99 return [x.name for t in typeMap.values() for x in t ]
100
101

◆ _getUnprescaled()

python.TriggerAPI.TriggerInfo.TriggerInfo._getUnprescaled ( self,
triggerType,
additionalTriggerType,
matchPattern,
livefraction = 1.0 )
protected

Definition at line 79 of file TriggerInfo.py.

79 def _getUnprescaled(self,triggerType, additionalTriggerType, matchPattern, livefraction=1.0):
80 return [x.name for x in self.triggerChains if x.isUnprescaled(livefraction) and x.passType(triggerType, additionalTriggerType) and re.search(matchPattern, x.name)]
81

◆ merge()

python.TriggerAPI.TriggerInfo.TriggerInfo.merge ( cls,
listofTI )

Definition at line 48 of file TriggerInfo.py.

48 def merge(cls,listofTI):
49 from copy import deepcopy
50 mergedTI = TriggerInfo()
51 mergedHLTmap = {}
52 for ti in listofTI:
53 mergedTI.period |= ti.period
54 mergedTI.totalLB += ti.totalLB
55 for run,lb in ti.totalLBByRun.items():
56 if run not in mergedTI.totalLBByRun: mergedTI.totalLBByRun[run] = 0
57 mergedTI.totalLBByRun[run] += lb
58 for tc in ti.triggerChains:
59 if tc.name not in mergedHLTmap: mergedHLTmap[tc.name] = deepcopy(tc)
60 else: mergedHLTmap[tc.name].activeLB += tc.activeLB
61 # copy activeLBByRun values too
62 for run,lb in tc.activeLBByRun.items():
63 if run not in mergedHLTmap[tc.name].activeLBByRun: mergedHLTmap[tc.name].activeLBByRun = 0
64 mergedHLTmap[tc.name].activeLBByRun += lb
65 for tc in mergedHLTmap.values():
66 tc.livefraction = tc.activeLB/float(mergedTI.totalLB)
67 mergedTI.triggerChains = list(mergedHLTmap.values())
68 return mergedTI
69
70
This class contains trigger related information.
Definition TriggerInfo.h:77
Definition merge.py:1

◆ reparse()

python.TriggerAPI.TriggerInfo.TriggerInfo.reparse ( self)

Definition at line 76 of file TriggerInfo.py.

76 def reparse(self):
77 self.triggerChains = [ TriggerChain(t.name, t.l1seed, t.livefraction, t.activeLB) for t in self.triggerChains ]
78

◆ setRunRange()

python.TriggerAPI.TriggerInfo.TriggerInfo.setRunRange ( self,
start = 0,
end = 999999 )

Definition at line 29 of file TriggerInfo.py.

29 def setRunRange(self,start=0,end=999999):
30 if not self.totalLBByRun:
31 # empty dict means either loaded from trigger menu or from old json
32 totalLB = self.totalLB
33 else:
34 totalLB = 0
35 for run,efflb in self.totalLBByRun.items():
36 if int(run)<int(start) or int(run)>int(end): continue
37 totalLB += efflb
38 for tc in self.triggerChains:
39 tc.setRunRange(start,end,totalLB)
40

◆ testCustomGRL()

python.TriggerAPI.TriggerInfo.TriggerInfo.testCustomGRL ( cls,
grl )

Definition at line 72 of file TriggerInfo.py.

72 def testCustomGRL(cls, grl):
73 from TriggerMenuMT.TriggerAPI.TriggerPeriodData import TriggerPeriodData
74 return TriggerPeriodData.testCustomGRL(grl)
75

◆ toJSON()

python.TriggerAPI.TriggerInfo.TriggerInfo.toJSON ( self)

Definition at line 44 of file TriggerInfo.py.

44 def toJSON(self):
45 return dict(period= TriggerPeriod.toName(self.period), totalLB=self.totalLB,triggerChains=self.triggerChains,totalLBByRun=self.totalLBByRun)
46

Member Data Documentation

◆ period

python.TriggerAPI.TriggerInfo.TriggerInfo.period = period

Definition at line 19 of file TriggerInfo.py.

◆ totalLB

python.TriggerAPI.TriggerInfo.TriggerInfo.totalLB = 0

Definition at line 20 of file TriggerInfo.py.

◆ totalLBByRun

dict python.TriggerAPI.TriggerInfo.TriggerInfo.totalLBByRun = {}

Definition at line 21 of file TriggerInfo.py.

◆ triggerChains

python.TriggerAPI.TriggerInfo.TriggerInfo.triggerChains = []

Definition at line 18 of file TriggerInfo.py.


The documentation for this class was generated from the following file: