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

Public Member Functions

 __init__ (self)
 clear (self)
 loadData (self, startIOV, endIOV)
 loadDataByRun (self, runnum, clear=True)
 loadLBLBData (self, runnum)
 loadTrigChannels (self, runnum)
 loadTrigCounts (self, runnum)

Public Attributes

 menuReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LVL1/Menu')
 countsReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LVL1COUNTERS')
 lbtimeReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LBTIME')
 lblbReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LBLB')
bool verbose = False
 trigL1Dict = dict()
bool allL1Triggers = False
list trigList = ['L1_MBTS_2', 'L1_EM30']
 trigChan = dict()
 chanTrig = dict()
 lblbDict = dict()
list runlist = []

Detailed Description

Definition at line 45 of file TriggerHandler.py.

Constructor & Destructor Documentation

◆ __init__()

python.TriggerHandler.TriggerHandler.__init__ ( self)

Definition at line 47 of file TriggerHandler.py.

47 def __init__(self):
48
49 # Database parameters
50 self.menuReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LVL1/Menu')
51 self.countsReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LVL1COUNTERS')
52 self.lbtimeReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LBTIME')
53 self.lblbReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LBLB')
54
55 self.verbose = False
56 #self.verbose = True
57
58 # Dict of all TrigL1Data objects for the given time interval (keyed by RunLB IOV)
59 self.trigL1Dict = dict()
60
61 self.allL1Triggers = False
62
63 # List of all trigger items to read
64 self.trigList = ['L1_MBTS_2', 'L1_EM30']
65
66 # Dictionary of trigger channel number keyed by trigger name
67 self.trigChan = dict()
68 self.chanTrig = dict() # reverse order
69
70 # Store the lumi block times
71 self.lblbDict = dict()
72

Member Function Documentation

◆ clear()

python.TriggerHandler.TriggerHandler.clear ( self)

Definition at line 74 of file TriggerHandler.py.

74 def clear(self):
75
76 # Clear trigger dict
77 self.trigL1Dict.clear()
78

◆ loadData()

python.TriggerHandler.TriggerHandler.loadData ( self,
startIOV,
endIOV )

Definition at line 80 of file TriggerHandler.py.

80 def loadData(self, startIOV, endIOV):
81
82 self.clear()
83
84 # Runlist holds specific runs in this time range
85 self.runlist = []
86
87 if self.verbose: print('Searching for trigger information for max IOVRange', timeString(startIOV), timeString(endIOV))
88
89 # Load the run based information as we fundamentally need to do this by run number
90
91 # Prepare the lbtime reader
92 self.lbtimeReader.setIOVRange(startIOV, endIOV)
93 self.lbtimeReader.readData()
94
95 for obj in self.lbtimeReader.data:
96
97 runnum = int(obj.payload()['Run'])
98
99 if runnum not in self.runlist:
100 self.runlist.append(runnum)
101
102 # Loop over each run, getting the trigger counts/Lumi
103 # Must do this by run, as trigger menu can change
104 # Here we are storing this in a separate list
105 for runnum in self.runlist:
106 self.loadDataByRun(runnum, clear=False)
107
108
void print(char *figname, TCanvas *c1)

◆ loadDataByRun()

python.TriggerHandler.TriggerHandler.loadDataByRun ( self,
runnum,
clear = True )

Definition at line 110 of file TriggerHandler.py.

110 def loadDataByRun(self, runnum, clear=True):
111
112 if self.verbose:
113 print('TriggerHandler.loadDataByRun(%d) called' % runnum)
114
115 if clear:
116 self.clear()
117
118 # Figure out the channel mappings for the L1 trigger items
119 self.loadTrigChannels(runnum)
120
121 # Get the LB durations
122 self.loadLBLBData(runnum)
123
124 # Third, get the trigger counts
125 self.loadTrigCounts(runnum)
126

◆ loadLBLBData()

python.TriggerHandler.TriggerHandler.loadLBLBData ( self,
runnum )

Definition at line 128 of file TriggerHandler.py.

128 def loadLBLBData(self, runnum):
129
130 if self.verbose:
131 print('TriggerHandler.loadLBLBData(%d) called' % runnum)
132
133 self.lblbDict.clear()
134 self.lblbReader.setIOVRangeFromRun(runnum)
135 self.lblbReader.readData()
136
137 for obj in self.lblbReader.data:
138 self.lblbDict[obj.since()] = (obj.payload()['StartTime'], obj.payload()['EndTime'])
139

◆ loadTrigChannels()

python.TriggerHandler.TriggerHandler.loadTrigChannels ( self,
runnum )

Definition at line 142 of file TriggerHandler.py.

142 def loadTrigChannels(self, runnum):
143
144 if self.verbose:
145 print('TriggerHandler.loadTrigChannels(%d) called' % runnum)
146
147 # Trigger channels keyed by name
148 self.trigChan = dict()
149
150 # Trigger name keyed by channel
151 self.chanTrig = dict()
152
153 for trig in self.trigList:
154 self.trigChan[trig] = -1
155
156 self.menuReader.setIOVRangeFromRun(runnum)
157 self.menuReader.readData()
158
159 for obj in self.menuReader.data:
160
161 if self.verbose or True: print(int(obj.channelId()), obj.payload()['ItemName'])
162
163 trigName = obj.payload()['ItemName']
164 trigChan = int(obj.channelId())
165
166 if self.allL1Triggers or self.trigList.count(trigName) > 0:
167 self.trigChan[trigName] = trigChan
168 self.chanTrig[trigChan] = trigName
169
170 for trig in self.trigList:
171 if self.trigChan[trig] == -1:
172 print("Couldn't find", trig, "in run", str(runnum))
173
174 if self.verbose:
175 for (trig, chan) in self.trigChan.iteritems():
176 print('Found', trig, 'in channel', chan)
177
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146

◆ loadTrigCounts()

python.TriggerHandler.TriggerHandler.loadTrigCounts ( self,
runnum )

Definition at line 180 of file TriggerHandler.py.

180 def loadTrigCounts(self, runnum):
181
182 if self.verbose:
183 print('TriggerHandler.loadTrigCounts(%d) called' % runnum)
184
185 self.countsReader.setIOVRangeFromRun(runnum)
186
187 # Build channel list
188 chanList = self.trigChan.values()
189 chanList.sort()
190
191 nMaxChan = 50
192 nChanBlock = 0
193 chanBlock = []
194
195 # Skip any trigger we didn't find
196 tmpList = []
197 for chan in chanList:
198 if chan < 0: continue
199 tmpList.append( chan )
200 chanList = tmpList
201
202 if self.verbose:
203 print('breaking up', len(chanList), 'into', nMaxChan, 'for run', runnum)
204
205 # There is a 50 item limit somehow hardcoded into browseObjects.
206 # Use this code from Elliot to get around the limitation.
207
208 # Break up list of indices into blocks:
209 for x in range(0, len(chanList), nMaxChan):
210 top = min([x+nMaxChan, len(chanList)])
211
212 if self.verbose:
213 print('Initializing block [%d] from %d to %d' % (nChanBlock, x, top))
214
215 chanBlock.append( chanList[x:top] )
216 nChanBlock += 1
217
218 for x in range(nChanBlock):
219 if self.verbose: print('Channel Selector', chanBlock[x])
220 self.countsReader.setChannel(chanBlock[x])
221 self.countsReader.readData()
222
223 for obj in self.countsReader.data:
224
225 since = obj.since()
226 until = obj.until()
227 if self.verbose:
228 print(runLBString(since), runLBString(until), obj.channelId(), obj.payload()['BeforePrescale'], obj.payload()['AfterPrescale'], obj.payload()['L1Accept'])
229
230 # use the string as the dictionary key
231 ss = since
232 chan = int(obj.channelId())
233 trig = self.chanTrig.get(chan, "")
234 if len(trig) == 0:
235 print('TriggerHandler.loadTrigCounts(%d) - found unknown channel %d in %s!' % (runnum, chan, runLBString(ss)))
236 continue
237
238 if ss not in self.trigL1Dict:
239 self.trigL1Dict[ss] = TriggerL1Data()
240 self.trigL1Dict[ss].runlb = obj.since()
241 self.trigL1Dict[ss].startTime = self.lblbDict.get(ss, (0., 0.))[0]
242 self.trigL1Dict[ss].endTime = self.lblbDict.get(ss, (0., 0.))[1]
243 self.trigL1Dict[ss].dtime = (self.trigL1Dict[ss].endTime - self.trigL1Dict[ss].startTime)/1.E9
244
245 self.trigL1Dict[ss].TBP[trig] = obj.payload()['BeforePrescale']
246 self.trigL1Dict[ss].TAP[trig] = obj.payload()['AfterPrescale']
247 self.trigL1Dict[ss].TAV[trig] = obj.payload()['L1Accept']
248
#define min(a, b)
Definition cfImp.cxx:40
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

Member Data Documentation

◆ allL1Triggers

bool python.TriggerHandler.TriggerHandler.allL1Triggers = False

Definition at line 61 of file TriggerHandler.py.

◆ chanTrig

python.TriggerHandler.TriggerHandler.chanTrig = dict()

Definition at line 68 of file TriggerHandler.py.

◆ countsReader

python.TriggerHandler.TriggerHandler.countsReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LVL1COUNTERS')

Definition at line 51 of file TriggerHandler.py.

◆ lblbDict

python.TriggerHandler.TriggerHandler.lblbDict = dict()

Definition at line 71 of file TriggerHandler.py.

◆ lblbReader

python.TriggerHandler.TriggerHandler.lblbReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LBLB')

Definition at line 53 of file TriggerHandler.py.

◆ lbtimeReader

python.TriggerHandler.TriggerHandler.lbtimeReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LBTIME')

Definition at line 52 of file TriggerHandler.py.

◆ menuReader

python.TriggerHandler.TriggerHandler.menuReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LVL1/Menu')

Definition at line 50 of file TriggerHandler.py.

◆ runlist

list python.TriggerHandler.TriggerHandler.runlist = []

Definition at line 85 of file TriggerHandler.py.

◆ trigChan

python.TriggerHandler.TriggerHandler.trigChan = dict()

Definition at line 67 of file TriggerHandler.py.

◆ trigL1Dict

python.TriggerHandler.TriggerHandler.trigL1Dict = dict()

Definition at line 59 of file TriggerHandler.py.

◆ trigList

list python.TriggerHandler.TriggerHandler.trigList = ['L1_MBTS_2', 'L1_EM30']

Definition at line 64 of file TriggerHandler.py.

◆ verbose

bool python.TriggerHandler.TriggerHandler.verbose = False

Definition at line 55 of file TriggerHandler.py.


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