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 46 of file TriggerHandler.py.

Constructor & Destructor Documentation

◆ __init__()

def python.TriggerHandler.TriggerHandler.__init__ (   self)

Definition at line 48 of file TriggerHandler.py.

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

Member Function Documentation

◆ clear()

def python.TriggerHandler.TriggerHandler.clear (   self)

Definition at line 75 of file TriggerHandler.py.

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

◆ loadData()

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

Definition at line 81 of file TriggerHandler.py.

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

◆ loadDataByRun()

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

Definition at line 111 of file TriggerHandler.py.

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

◆ loadLBLBData()

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

Definition at line 129 of file TriggerHandler.py.

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

◆ loadTrigChannels()

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

Definition at line 143 of file TriggerHandler.py.

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

◆ loadTrigCounts()

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

Definition at line 181 of file TriggerHandler.py.

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

Member Data Documentation

◆ allL1Triggers

python.TriggerHandler.TriggerHandler.allL1Triggers

Definition at line 62 of file TriggerHandler.py.

◆ chanTrig

python.TriggerHandler.TriggerHandler.chanTrig

Definition at line 69 of file TriggerHandler.py.

◆ countsReader

python.TriggerHandler.TriggerHandler.countsReader

Definition at line 52 of file TriggerHandler.py.

◆ lblbDict

python.TriggerHandler.TriggerHandler.lblbDict

Definition at line 72 of file TriggerHandler.py.

◆ lblbReader

python.TriggerHandler.TriggerHandler.lblbReader

Definition at line 54 of file TriggerHandler.py.

◆ lbtimeReader

python.TriggerHandler.TriggerHandler.lbtimeReader

Definition at line 53 of file TriggerHandler.py.

◆ menuReader

python.TriggerHandler.TriggerHandler.menuReader

Definition at line 51 of file TriggerHandler.py.

◆ runlist

python.TriggerHandler.TriggerHandler.runlist

Definition at line 86 of file TriggerHandler.py.

◆ trigChan

python.TriggerHandler.TriggerHandler.trigChan

Definition at line 68 of file TriggerHandler.py.

◆ trigL1Dict

python.TriggerHandler.TriggerHandler.trigL1Dict

Definition at line 60 of file TriggerHandler.py.

◆ trigList

python.TriggerHandler.TriggerHandler.trigList

Definition at line 65 of file TriggerHandler.py.

◆ verbose

python.TriggerHandler.TriggerHandler.verbose

Definition at line 56 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:812
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
python.TriggerHandler.timeString
def timeString(iovkey)
Definition: TriggerHandler.py:270
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
min
#define min(a, b)
Definition: cfImp.cxx:40
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
VKalVrtAthena::varHolder_detail::clear
void clear(T &var)
Definition: NtupleVars.h:48
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
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:281