ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
python.TriggerHandler.TriggerHandler Class Reference
Collaboration diagram for python.TriggerHandler.TriggerHandler:

Public Member Functions

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

Public Attributes

 menuReader
 
 countsReader
 
 lbtimeReader
 
 lblbReader
 
 verbose
 
 trigL1Dict
 
 allL1Triggers
 
 trigList
 
 trigChan
 
 chanTrig
 
 lblbDict
 
 runlist
 

Detailed Description

Definition at line 45 of file TriggerHandler.py.

Constructor & Destructor Documentation

◆ __init__()

def 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()

def 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()

def 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 

◆ loadDataByRun()

def 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()

def 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()

def 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 

◆ loadTrigCounts()

def 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 

Member Data Documentation

◆ allL1Triggers

python.TriggerHandler.TriggerHandler.allL1Triggers

Definition at line 61 of file TriggerHandler.py.

◆ chanTrig

python.TriggerHandler.TriggerHandler.chanTrig

Definition at line 68 of file TriggerHandler.py.

◆ countsReader

python.TriggerHandler.TriggerHandler.countsReader

Definition at line 51 of file TriggerHandler.py.

◆ lblbDict

python.TriggerHandler.TriggerHandler.lblbDict

Definition at line 71 of file TriggerHandler.py.

◆ lblbReader

python.TriggerHandler.TriggerHandler.lblbReader

Definition at line 53 of file TriggerHandler.py.

◆ lbtimeReader

python.TriggerHandler.TriggerHandler.lbtimeReader

Definition at line 52 of file TriggerHandler.py.

◆ menuReader

python.TriggerHandler.TriggerHandler.menuReader

Definition at line 50 of file TriggerHandler.py.

◆ runlist

python.TriggerHandler.TriggerHandler.runlist

Definition at line 85 of file TriggerHandler.py.

◆ trigChan

python.TriggerHandler.TriggerHandler.trigChan

Definition at line 67 of file TriggerHandler.py.

◆ trigL1Dict

python.TriggerHandler.TriggerHandler.trigL1Dict

Definition at line 59 of file TriggerHandler.py.

◆ trigList

python.TriggerHandler.TriggerHandler.trigList

Definition at line 64 of file TriggerHandler.py.

◆ verbose

python.TriggerHandler.TriggerHandler.verbose

Definition at line 55 of file TriggerHandler.py.


The documentation for this class was generated from the following file:
python.Bindings.iteritems
iteritems
Definition: Control/AthenaPython/python/Bindings.py:823
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
python.processes.powheg.ZZj_MiNNLO.ZZj_MiNNLO.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZj_MiNNLO.py:18
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
python.TriggerHandler.timeString
def timeString(iovkey)
Definition: TriggerHandler.py:269
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:808
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
VKalVrtAthena::varHolder_detail::clear
void clear(T &var)
Definition: NtupleVars.h:48
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
str
Definition: BTagTrackIpAccessor.cxx:11
python.TriggerHandler.runLBString
def runLBString(iovkey)
Definition: TriggerHandler.py:280