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

Public Member Functions

def __init__ (self)
 
def calculateAll (self, run)
 
def loadData (self, run)
 
def loadVetoData (self, run)
 
def loadTrigChannels (self, run)
 
def loadTrigCounts (self, run)
 
def findBCIDDeadtime (self)
 

Public Attributes

 verbose
 
 vetoReader
 
 menuReader
 
 countsReader
 
 trigList
 
 liveFracBCID
 
 liveFracTrig
 
 trigChan
 

Detailed Description

Definition at line 20 of file LumiDeadtimeHandler.py.

Constructor & Destructor Documentation

◆ __init__()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.__init__ (   self)

Definition at line 23 of file LumiDeadtimeHandler.py.

23  def __init__(self):
24 
25  self.verbose = False
26 
27  # Data readers
28  self.vetoReader = None
29  self.menuReader = None
30  self.countsReader = None
31 
32  # Trigger channels to read for live fractions
33  self.trigList=['L1_EM30']
34 
35  # Storage of per-BCID deadtime (index by [runlb][bcid])
36  self.liveFracBCID = dict()
37 
38  # Storage of L1 trigger counts deadtime (index by [runlb][trigname])
39  self.liveFracTrig = dict()
40 
41  # Storage for L1 trigger name -> value mapping
42  self.trigChan = dict()
43 

Member Function Documentation

◆ calculateAll()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.calculateAll (   self,
  run 
)

Definition at line 44 of file LumiDeadtimeHandler.py.

44  def calculateAll(self, run):
45  self.loadData(run)
46  self.findBCIDDeadtime()
47 

◆ findBCIDDeadtime()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.findBCIDDeadtime (   self)

Definition at line 145 of file LumiDeadtimeHandler.py.

145  def findBCIDDeadtime(self):
146  if self.verbose: print('Calculating per-BCID deadtime')
147 
148  # First dictionary index is lumiblock IOV
149  self.liveFracBCID = dict()
150 
151  # Loop over each lumi block
152  for obj in self.vetoReader.data:
153 
154  key = obj.since()
155 
156  if self.verbose:
157  run = key >> 32
158  lb = key & 0xFFFFFFFF
159  bloblength = obj.payload()['HighPriority'].size()
160  print('%d %d Found trigger counter blob of length %d' % (run, lb, bloblength))
161 
162  # Unpack High Priority blob here
163  liveVec = unpackLiveFraction(obj.payload())
164  self.liveFracBCID[key] = liveVec
165 
166  # Each BCID is one 24-bit integer
167  #if self.verbose:
168  #
169  # for i in range(10):
170  # print('BICD: %d Live: %f' % (i+1, liveVec[i]))
171 

◆ loadData()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.loadData (   self,
  run 
)

Definition at line 48 of file LumiDeadtimeHandler.py.

48  def loadData(self, run):
49  self.loadVetoData(run)
50  self.loadTrigChannels(run)
51  self.loadTrigCounts(run)
52 

◆ loadTrigChannels()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.loadTrigChannels (   self,
  run 
)

Definition at line 68 of file LumiDeadtimeHandler.py.

68  def loadTrigChannels(self, run):
69  if self.verbose: print('Loading trigger channel data')
70 
71  self.trigChan = dict()
72  for trig in self.trigList:
73  self.trigChan[trig] = -1
74 
75  if self.menuReader is None:
76  self.menuReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LVL1/Menu')
77 
78  self.menuReader.setIOVRangeFromRun(run)
79  self.menuReader.readData()
80 
81  for obj in self.menuReader.data:
82  trigName = obj.payload()['ItemName']
83  if trigName in self.trigList:
84  self.trigChan[trigName] = int(obj.channelId())
85 
86  for trig in self.trigList:
87  if self.trigChan[trig] == -1:
88  print("Couldn't find", trig, "in run", run)
89 
90  if self.verbose:
91  print('Found', trig, 'in channel', self.trigChan[trig])
92 
93 

◆ loadTrigCounts()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.loadTrigCounts (   self,
  run 
)

Definition at line 96 of file LumiDeadtimeHandler.py.

96  def loadTrigCounts(self, run):
97 
98  if self.verbose:
99  print('loading Trigger Counts data')
100 
101  self.liveFracTrig = dict()
102 
103  if self.countsReader is None:
104  self.countsReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/LVL1COUNTERS')
105 
106  self.countsReader.setIOVRangeFromRun(run)
107 
108  # Build channel list
109  chanList = self.trigChan.values()
110  chanList.sort()
111 
112  # Skip any trigger we didn't find
113  tmpList = []
114  for chan in chanList:
115  if chan < 0: continue
116  tmpList.append( chan )
117  chanList = tmpList
118 
119  self.countsReader.setChannel(chanList)
120  self.countsReader.readData()
121 
122  for obj in self.countsReader.data:
123 
124  #if self.verbose:
125  # print obj.since()>>32, '/', obj.since()&0xFFFFFFFF, obj.channelId(), obj.payload()['BeforePrescale'], obj.payload()['AfterPrescale'], obj.payload()['L1Accept']
126 
127  # use the string as the dictionary key
128  ss = obj.since()
129 
130  if ss not in self.liveFracTrig:
131  self.liveFracTrig[ss] = dict()
132 
133  for (trig, chan) in self.trigChan.iteritems():
134  if chan != obj.channelId(): continue
135 
136  ratio = 0.
137  if obj.payload()['AfterPrescale'] > 0:
138  ratio = float(obj.payload()['L1Accept'])/obj.payload()['AfterPrescale']
139 
140  self.liveFracTrig[ss][trig] = ratio
141 
142  if self.verbose:
143  print(obj.since()>>32, '/', obj.since()&0xFFFFFFFF, trig, ratio)
144 

◆ loadVetoData()

def python.LumiDeadtimeHandler.LumiDeadtimeHandler.loadVetoData (   self,
  run 
)

Definition at line 53 of file LumiDeadtimeHandler.py.

53  def loadVetoData(self, run):
54  if self.verbose: print('Loading trigger veto data')
55 
56  # Instantiate new COOL data reader if not already done
57  if self.vetoReader is None:
58  self.vetoReader = CoolDataReader('COOLONL_TRIGGER/COMP200', '/TRIGGER/LUMI/PerBcidDeadtime')
59 
60  self.vetoReader.setIOVRangeFromRun(run)
61  self.vetoReader.readData()
62 
63  if self.verbose:
64  print('Read %d Trig veto records' % len(self.vetoReader.data))
65 

Member Data Documentation

◆ countsReader

python.LumiDeadtimeHandler.LumiDeadtimeHandler.countsReader

Definition at line 30 of file LumiDeadtimeHandler.py.

◆ liveFracBCID

python.LumiDeadtimeHandler.LumiDeadtimeHandler.liveFracBCID

Definition at line 36 of file LumiDeadtimeHandler.py.

◆ liveFracTrig

python.LumiDeadtimeHandler.LumiDeadtimeHandler.liveFracTrig

Definition at line 39 of file LumiDeadtimeHandler.py.

◆ menuReader

python.LumiDeadtimeHandler.LumiDeadtimeHandler.menuReader

Definition at line 29 of file LumiDeadtimeHandler.py.

◆ trigChan

python.LumiDeadtimeHandler.LumiDeadtimeHandler.trigChan

Definition at line 42 of file LumiDeadtimeHandler.py.

◆ trigList

python.LumiDeadtimeHandler.LumiDeadtimeHandler.trigList

Definition at line 33 of file LumiDeadtimeHandler.py.

◆ verbose

python.LumiDeadtimeHandler.LumiDeadtimeHandler.verbose

Definition at line 25 of file LumiDeadtimeHandler.py.

◆ vetoReader

python.LumiDeadtimeHandler.LumiDeadtimeHandler.vetoReader

Definition at line 28 of file LumiDeadtimeHandler.py.


The documentation for this class was generated from the following file:
python.LumiBlobConversion.unpackLiveFraction
def unpackLiveFraction(trigPayload, priority='high')
Definition: LumiBlobConversion.py:271
python.Bindings.iteritems
iteritems
Definition: Control/AthenaPython/python/Bindings.py:812
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
readCCLHist.float
float
Definition: readCCLHist.py:83