Processing math: 100%
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
FilePeekerLib.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 # @file PyAthena.FilePeekerLib
4 # @purpose provide components to peek into pool files
5 # @author Sebastien Binet
6 # @date February 2010
7 
8 __author__ = "Sebastien Binet"
9 __doc__ = "provide components to peek into pool files"
10 
11 
12 import AthenaPython.PyAthena as PyAthena
13 StatusCode = PyAthena.StatusCode
14 
15 import six
16 
17 
18 
20  import ROOT
21  ROOT.gROOT.SetBatch(True)
22  return ROOT
23 
24 
25 def toiter(beg,end):
26  while beg != end:
27  yield beg.__deref__()
28  beg.__preinc__()
29  return
30 
32  """simple helper function to create consistent dicts for in-file metadata
33  """
34  d = {
35  'nentries' : 0, # to handle empty files
36  'run_number': [],
37  'run_type': ['N/A'],
38  'evt_type': [],
39  'evt_number': [],
40  'lumi_block': [],
41  'mc_channel_number': [],
42  'beam_type': ['N/A'], # XXX fixme
43  'beam_energy': ['N/A'], # XXX fixme
44  'stream_tags': [],
45  'metadata_items': [],
46  'eventdata_items': [],
47  'stream_names': None,
48  'geometry': None,
49  'conditions_tag': None,
50  'det_descr_tags': None,
51 
52  'metadata': {},
53  'tag_info': {},
54  }
55  return d
56 
57 
58 
60  def __init__(self, sgkey):
61  self.raw_key = sgkey
62  @property
63  def key(self):
64  return self.raw_key.split(";")[-1]
65 
67  """utility algorithm to inspect a file's content
68  """
69  def __init__(self, name='FilePeeker', **kw):
70 
71  super(FilePeeker, self).__init__(name, **kw)
72  self.infname = kw.get('infname', 'not-there.pool')
73  self.outfname= kw.get('outfname', None)
74 
75  # flag to enable the bwd compat fallback mechanism...
76  self._old_file_flag = False
77 
78  # flag to enable event less files without beginRun...
79  self._begin_run_flag = False
80 
81  # all data, collected over the events analyzed
82  self._peeked_events = []
83 
84  def initialize(self):
85 
86  import AthenaPython.PyAthena as PyAthena
88 
89  # load our pythonizations:
90  for cls_name in ('EventStreamInfo',
91  'EventType',
92  'PyEventType',
93  ):
94  cls = getattr(PyAthena, cls_name) # noqa: F841
95 
96  _info = self.msg.info
97  _info("retrieving various stores...")
98  for store_name in ('evtStore', 'inputStore',
99  'tagStore', 'metaStore',):
100  _info('retrieving [%s]...', store_name)
101  o = getattr(self, store_name) # noqa: F841
102  _info('retrieving [%s]... [done]', store_name)
103 
107 
108  _info("retrieving various stores... [done]")
109 
110  import os
111  self.infname = os.path.basename(self.infname)
112 
113  import AthenaPython.PyAthena as PyAthena
114  _info = self.msg.info
115  return StatusCode.Success
116 
117  def start(self):
118  self._begin_run_flag = True
119  # retrieving data available at start...
120  self.peeked_data.update(self._do_peeking(peek_evt_data=False))
121  self.print_summary()
122  return StatusCode.Success
123 
124  def stop(self):
125  if not self._begin_run_flag:
126  # retrieving data for event less jobs, where no beginRun is called
127  self.peeked_data.update(self._do_peeking(peek_evt_data=False))
128  self.print_summary()
129 
130  return StatusCode.Success
131 
132  @property
133  def evtStore(self):
134  import AthenaPython.PyAthena as PyAthena
135  return PyAthena.py_svc('StoreGateSvc/StoreGateSvc')
136 
137  @property
138  def metaStore(self):
139  import AthenaPython.PyAthena as PyAthena
140  return PyAthena.py_svc('StoreGateSvc/MetaDataStore')
141 
142  @property
143  def tagStore(self):
144  import AthenaPython.PyAthena as PyAthena
145  return PyAthena.py_svc('StoreGateSvc/TagMetaDataStore')
146 
147  @property
148  def inputStore(self):
149  import AthenaPython.PyAthena as PyAthena
150  return PyAthena.py_svc('StoreGateSvc/InputMetaDataStore')
151 
152  def execute(self):
153  self.peeked_data.update(self._do_peeking(peek_evt_data=True))
154  self.print_summary()
155  self._peeked_events.append(dict(self.peeked_data))
156  return StatusCode.Success
157 
158  def process_metadata(self, store, metadata_name):
159  msg = self.msg
160  try:
161  obj = store[metadata_name]
162  except KeyError:
163  msg.warning('could not retrieve [%s]', metadata_name)
164  return
165  if str(obj).find('MetaCont') >= 0:
166  obj = obj.get (obj.sources()[0])
167  msg.info('processing container [%s]', obj.folderName())
168  data = []
169  payloads = obj.payloadContainer()
170  payloads_sz = payloads.size()
171  if hasattr(payloads, 'at'):
172  # HACK for bug #77976
173  _tmp = payloads
174  payloads = []
175  for ii in range(payloads_sz):
176  payloads.append(_tmp.at(ii))
177  pass
178  for ii,payload in zip(range(payloads_sz), payloads):
179  # print ("-->",ii,payload,type(payload),'\n' )
180  if not payload:
181  msg.info ("**error** null-pointer ?")
182  continue
183  # names
184  chan_names = []
185  sz = payload.name_size()
186  msg.info('==names== (sz: %s)', sz)
187  for idx in range(sz):
188  chan = payload.chanNum(idx)
189  chan_name = payload.chanName(chan)
190  #msg.info( '--> (%s, %s)', idx, chan_name)
191  chan_names.append(chan_name)
192 
193  if 1: # we don't really care about those...
194  # iovs
195  sz = payload.iov_size()
196  msg.info('==iovs== (sz: %s)',sz)
197  for idx in range(sz):
198  chan = payload.chanNum(idx)
199  iov_range = payload.iovRange(chan)
200  iov_start = iov_range.start()
201  iov_stop = iov_range.stop()
202  if 0:
203  msg.info( '(%s, %s) => (%s, %s) valid=%s runEvt=%s',
204  iov_start.run(),
205  iov_start.event(),
206  iov_stop.run(),
207  iov_stop.event(),
208  iov_start.isValid(),
209  iov_start.isRunEvent())
210 
211  # attrs
212  attrs = [] # can't use a dict as spec.name() isn't unique
213  sz = payload.size()
214  msg.info('==attrs== (sz: %s)', sz)
215  for idx in range(sz):
216  chan = payload.chanNum(idx)
217  #msg.info("idx: %i chan: %s", idx, chan)
218  attr_list = payload.attributeList(chan)
219  attr_data = []
220  for a in list(toiter(attr_list.begin(), attr_list.end())):
221  #msg.info((a,dir(a),type(a)))
222  spec = a.specification()
223  a_type = spec.typeName()
224  if a_type.find('string') >= 0:
225  a_data = a.data['string']()
226  try:
227  a_data = eval(a_data,{},{})
228  except Exception:
229  # swallow and keep as a string
230  pass
231  else:
232  a_data = a.data[a_type]()
233  #msg.info("%s: %s %s", spec.name(), a_data, type(a_data) )
234  attr_data.append( (spec.name(), a_data) )
235  attrs.append(dict(attr_data))
236  # msg.info(attrs[-1])
237  if len(attrs) == len(chan_names):
238  data.append(dict(zip(chan_names,attrs)))
239  else:
240  if len(attrs):
241  if len(attrs) == 1:
242  data.append(attrs[0])
243  else:
244  data.append(attrs)
245  else:
246  data.append(chan_names)
247  pass # loop over payloads...
248 
249  #payload.dump()
250 
254  return data
255 
256  def finalize(self):
257  _info = self.msg.info
258  peeked_data = dict(self.peeked_data)
259  if self.outfname:
260  oname = self.outfname
261  import os
262  oname = os.path.expanduser(os.path.expandvars(oname))
263  _info('storing peeked file infos into [%s]...', oname)
264  if os.path.exists(oname):
265  os.remove(oname)
266 
267  import PyUtils.dbsqlite as dbsqlite
268  db = dbsqlite.open(oname,flags='w')
269 
270  # merge and collect data from all processed events (if any)
271  if self._peeked_events:
272  peeked_data = self._peeked_events.pop(0)
273  for d in self._peeked_events:
274  for k in ('run_number',
275  'evt_number',
276  'lumi_block',
277  'run_type',
278  'beam_type',
279  'beam_energy',
280  'stream_tags',):
281  v = d[k]
282  if isinstance(v, list) and len(v)>0:
283  v = v[0]
284  peeked_data[k].append(v)
285  #_info('peeked_data:')
286  #_info(str(peeked_data))
287  db['fileinfos'] = peeked_data
288  db.close()
289  _info('storing peeked file infos into [%s]... [done]', oname)
290  self.print_summary(peeked_data)
291  return StatusCode.Success
292 
293  def print_summary(self, data=None):
294  if data is None:
295  data = self.peeked_data
296  _info = self.msg.info
297 
298 
299  _info(':::::: summary ::::::')
300  _info(' - nbr events: %s', data['nentries'])
301  _info(' - run numbers: %s', data['run_number'])
302  _info(' - evt numbers: %s', data['evt_number'])
303  _info(' - lumiblocks: %s', data['lumi_block'])
304  _info(' - evt types: %s', data['evt_type'])
305  _info(' - item list: %s', len(data['eventdata_items']))
306  _info(' - stream names: %s', data['stream_names'])
307  _info(' - stream tags: %s', data['stream_tags'])
308  _info(' - geometry: %s', data['geometry'])
309  _info(' - conditions tag: %s', data['conditions_tag'])
310  _info(' - metadata items: %s', len(data['metadata_items']))
311  _info(' - tag-info: %s', data['tag_info'].keys())
312  return
313 
314  def _do_peeking(self, peek_evt_data=False):
315  """ the real function doing all the work of peeking at the input file
316  @return a dict of peeked-at data
317  """
318  peeked_data = {}
319  import AthenaPython.PyAthena as PyAthena
320  _info = self.msg.info
321  _error= self.msg.error
322 
323  def _get_detdescr_tags(evt_type):
324  ddt = evt_type.get_detdescr_tags().split()
325  # det_descr_tags is of the form:
326  # [ 'key1', 'val1', 'key2', 'val2', ... ]
327  ddt = dict(zip(ddt[0::2], # select 'key?'
328  ddt[1::2])) # select 'val?'
329  return ddt
330 
331 
333  store = self.inputStore
334  esi_keys = store.keys('EventStreamInfo')
335  nentries = None
336  ddt = None
337  if len(esi_keys) >= 1:
338  sg_key = esi_keys[-1]
339  nentries = 0
340  stream_names = esi_keys[:]
341  for sg_key in esi_keys:
342  esi = store.retrieve('EventStreamInfo', sg_key)
343  _info('=== [EventStreamInfo#%s] ===', sg_key)
344  nentries += esi.getNumberOfEvents()
345 
346  evt_types = PyAthena.EventStreamInfo.evt_types(esi)
347  if len(evt_types) > 0:
348  evt_type = evt_types[0]
349  peeked_data['evt_type'] = evt_type.bit_mask
350  ddt = _get_detdescr_tags(evt_type)
351  peeked_data['det_descr_tags'] = ddt
352  from past.builtins import long
353  peeked_data['mc_channel_number'] = [long(evt_type.mc_channel_number())]
354 
355  def _make_item_list(item):
356  sgkey= item[1]
357  clid = item[0]
358  _typename = store._pyclidsvc.typename
359  return (_typename(clid) or str(clid), # str or keep the int?
360  sgkey)
361  item_list = esi.item_list()
362  item_list = list(map(_make_item_list, item_list))
363  peeked_data['eventdata_items'] = item_list
364  # print ("======",len(item_list))
365  peeked_data['lumi_block'] = esi.lumi_blocks()
366  peeked_data['run_number'] = esi.run_numbers()
367  #peeked_data['evt_number'] = esi.event_number()
368  peeked_data['stream_names'] = esi.processing_tags()
369  # handle event-less files
370  if not peeked_data['stream_names']:
371  stream_names = [sg_versioned_key(s).key for s in stream_names]
372  peeked_data['stream_names'] = list(set(stream_names))
373  pass
374  # more event-less files handling - POOL-from-BS-event-less files
375  # see bug#98568
376  if len(esi.run_numbers()) == 0:
377  bsmd_keys = store.keys("ByteStreamMetadataContainer")
378  if len(bsmd_keys) == 1:
379  bsmd = store[bsmd_keys[0]][0]
380  peeked_data['lumi_block'] = [bsmd.getLumiBlock()]
381  peeked_data['run_number'] = [bsmd.getRunNumber()]
382  bs_metadata = {}
383  for md in bsmd.getFreeMetaDataStrings():
384  if md.startswith('Event type:'):
385  k = 'evt_type'
386  v = []
387  if 'is sim' in md: v.append('IS_SIMULATION')
388  else: v.append('IS_DATA')
389  if 'is atlas' in md: v.append('IS_ATLAS')
390  else: v.append('IS_TESTBEAM')
391  if 'is physics' in md: v.append('IS_PHYSICS')
392  else: v.append('IS_CALIBRATION')
393  bs_metadata[k] = tuple(v)
394  elif md.startswith('GeoAtlas:'):
395  k = 'geometry'
396  v = md.split('GeoAtlas:')[1].strip()
397  bs_metadata[k] = v
398  elif md.startswith('IOVDbGlobalTag:'):
399  k = 'conditions_tag'
400  v = md.split('IOVDbGlobalTag:')[1].strip()
401  bs_metadata[k] = v
402  elif '=' in md:
403  k,v = md.split('=')
404  bs_metadata[k] = v
405  pass
406  peeked_data['evt_type'] = bs_metadata.get('evt_type', [])
407  peeked_data['geometry'] = bs_metadata.get('geometry', None)
408  peeked_data['conditions_tag'] = bs_metadata.get('conditions_tag', None)
409  peeked_data['bs_metadata'] = bs_metadata
410  pass
411  pass
412 
413  # hack to retrieve the number of events if no EventStreamInfo
414  # was present in the input file
415  if nentries is None:
416  ROOT = _import_ROOT()
417  root_files = list(ROOT.gROOT.GetListOfFiles())
418  root_files = [root_file for root_file in root_files
419  if root_file.GetName().count(self.infname)]
420  if len(root_files)==1:
421  root_file = root_files[0]
422  data_hdr = root_file.Get("POOLContainer")
423  if not data_hdr:
424  data_hdr = root_file.Get("POOLContainer_DataHeader")
425  nentries = data_hdr.GetEntriesFast() if bool(data_hdr) \
426  else None
427  else:
428  _info('could not find correct ROOT file (looking for [%s])',
429  self.infname)
430  nentries = None
431  del root_files
432  del data_hdr
433  peeked_data['nentries'] = nentries
434 
435  # retrieve the GUID
436  def _get_guid():
437  guid = None
438  ROOT = _import_ROOT()
439  root_files = list(ROOT.gROOT.GetListOfFiles())
440  root_files = [root_file for root_file in root_files
441  if root_file.GetName().count(self.infname)]
442  if len(root_files)==0:
443  _info('could not find correct ROOT file (looking for [%s])',
444  self.infname)
445  return
446 
447  root_file = root_files[0]
448  pool = root_file.Get("##Params")
449  import re
450  # Pool parameters are of the form:
451  # '[NAME=somevalue][VALUE=thevalue]'
452  pool_token = re.compile(r'[]NAME=(?P<name>.*?)[
]'
453  r'[]VALUE=(?P<value>.*?)[
]'
).match
454  params = []
455  for i in range(pool.GetEntries()):
456  if pool.GetEntry(i)>0:
457  match = pool_token(pool.db_string)
458  if not match:
459  continue
460  d = match.groupdict()
461  params.append((d['name'], d['value']))
462  if d['name'].lower() == 'fid':
463  guid = d['value']
464  return guid
465  guid = _get_guid()
466  if guid:
467  peeked_data['file_guid'] = guid
468 
469 
470  metadata_items = [(self.inputStore._pyclidsvc.typename(p.clID()),
471  p.name())
472  for p in self.inputStore.proxies()]
473  peeked_data['metadata_items'] = metadata_items
474  metadata = {}
475  def maybe_get(o, idx, default=None):
476  try:
477  return o[idx]
478  except IndexError:
479  return default
480  def maybe_float(o):
481  try:
482  return float(o)
483  except ValueError:
484  return o
485 
486  def mergeMultipleDict(inDicts):
487  outDict={}
488  for d in inDicts:
489  for k,o in six.iteritems(d):
490  if k not in outDict:
491  outDict[k]=o
492  if len(outDict)==0:
493  return None
494  else:
495  return outDict
496 
497 
498 
499  for k in self.inputStore.keys('IOVMetaDataContainer'):
500  v = self.process_metadata(self.inputStore, k)
501  metadata[k] = maybe_get(v, -1)
502  peeked_data['metadata'] = metadata
503 
504 
505  taginfo = {}
506  if self.metaStore.contains('IOVMetaDataContainer','/TagInfo'):
507  v = self.process_metadata(self.metaStore, '/TagInfo')
508  taginfo = mergeMultipleDict(v)
509  else:
510  if '/TagInfo' in metadata:
511  taginfo = metadata['/TagInfo'].copy()
512  else:
513  self._old_file_flag = True
514  # no tag info whatsoever...
515  # try detdescr_tags ?
516  if ddt:
517  peeked_data['det_descr_tags'] = ddt
518  peeked_data['geometry'] = ddt.get('GeoAtlas', None)
519  peeked_data['conditions_tag'] = ddt.get('IOVDbGlobalTag', None)
520  peeked_data['tag_info'] = taginfo
521  if taginfo:
522  peeked_data['det_descr_tags'] = taginfo
523  peeked_data['geometry'] = taginfo.get('GeoAtlas', None)
524  peeked_data['conditions_tag'] = taginfo.get('IOVDbGlobalTag', None)
525  peeked_data['beam_type'] = [taginfo.get('beam_type','N/A')]
526  peeked_data['beam_energy']= [maybe_float(taginfo.get('beam_energy',
527  'N/A'))]
528 
529  if 'geometry' not in peeked_data:
530  peeked_data['geometry'] = None
531  if 'conditions_tag' not in peeked_data:
532  peeked_data['conditions_tag'] = None
533  if 'det_descr_tags' not in peeked_data:
534  peeked_data['det_descr_tags'] = {}
535 
536  # eventless simulated DAOD files
537  if not self._begin_run_flag:
538  if taginfo and taginfo.get('project_name',None) == 'IS_SIMULATION':
539  peeked_data['evt_type'] = ('IS_SIMULATION', 'IS_ATLAS', 'IS_PHYSICS')
540  if '/Simulation/Parameters' in metadata:
541  peeked_data['run_number'] = [metadata.get('/Simulation/Parameters').get('RunNumber',None)]
542 
544  if peek_evt_data is False:
545  return peeked_data
546 
547 
548 
549  # access directly the EventInfo
550  store = self.evtStore
551  evt_info_keys = store.keys('EventInfo')
552  if len(evt_info_keys) != 1:
553  _info('more than one EventInfo: %s', evt_info_keys)
554  _info(' ==> we\'ll use [%s]', evt_info_keys[0])
555  sg_key = evt_info_keys[0]
556  ei = store.retrieve('EventInfo', sg_key)
557  _info('=== [EventInfo#%s] ===', sg_key)
558  eid = ei.event_ID()
559 
560  dh_keys = [k for k in store.keys('DataHeader')
561  # remove DH-keys for backnavigation
562  if not k.startswith('[DB=')]
563  if len(dh_keys) != 1:
564  _error('more than 1 DataHeader key after filtering: %s', dh_keys)
565  _error('content of store: %s', store.keys('DataHeader'))
566  raise RuntimeError('more than one DataHeader key')
567 
568  sg_key = dh_keys[0]
569  _info('=== [DataHeader#%s] ===', sg_key)
570  dh = store.retrieve('DataHeader', sg_key)
571 
572  def _make_item_list(dhe):
573  sgkey= dhe.getKey()
574  clid = dhe.getPrimaryClassID()
575  _typename = store._pyclidsvc.typename
576  return (_typename(clid) or str(clid), # str or keep the int?
577  sgkey)
578  dhes = []
579  if hasattr(dh, 'at'):
580  # HACK for bug #77976
581  for ii in range(len(dh)):
582  dhes.append(dh.at(ii))
583  pass
584  else:
585  dhes = list(dh.elements())
586  #item_list = map(_make_item_list, dh)
587  item_list = []
588  for i,dhe in enumerate(dhes):
589  sgkey = dhe.getKey()
590  clid = dhe.getPrimaryClassID()
591  _typename = store._pyclidsvc.typename
592  try:
593  clid_name = _typename(clid)
594  if clid_name:
595  clid = clid_name
596  except Exception as err:
597  self.msg.info("no typename for clid [%s] (%s)", clid, err)
598  item_list.append((str(clid), sgkey))
599 
600  # -- event-type
601  evt_type = ei.event_type()
602  det_descr_tags = _get_detdescr_tags(evt_type)
603 
604  peeked_data.update({
605  'run_number': [eid.run_number()],
606  'evt_number': [eid.event_number()],
607  'run_type': ['N/A'],
608  'evt_type': evt_type.bit_mask,
609  'det_descr_tags': det_descr_tags,
610  'geometry': det_descr_tags.get('GeoAtlas', None),
611  'conditions_tag': det_descr_tags.get('IOVDbGlobalTag', None),
612  'lumi_block': [eid.lumi_block()],
613  'stream_names': [dh.getProcessTag()],
614  'eventdata_items': item_list,
615  'beam_type': [det_descr_tags.get('beam_type','N/A')],
616  'beam_energy': [maybe_float(det_descr_tags.get('beam_energy',
617  'N/A'))],
618  })
619 
620  trigger_info= ei.trigger_info()
621  stream_tags = trigger_info.streamTags() if trigger_info else []
622  stags = []
623  for st in stream_tags: # don't use list-comprehensions b/c of ROOT bugs
624  st_type = st.type()
625  st_name = st.name()
626  obeys_lbk=bool(st.obeysLumiblock())
627  stags.append(dict(stream_type=st_type,
628  stream_name=st_name,
629  obeys_lbk=obeys_lbk))
630  peeked_data['stream_tags'] = stags
631 
632  # -- old files compat
633  if self._old_file_flag or 1:
634 
635 
636  metadata_items = [(self.inputStore._pyclidsvc.typename(p.clID()),
637  p.name())
638  for p in self.inputStore.proxies()]
639  peeked_data['metadata_items'] = metadata_items
640  metadata = {}
641  for k in self.inputStore.keys('IOVMetaDataContainer'):
642  v = self.process_metadata(self.inputStore, k)
643  metadata[k] = maybe_get(v, -1)
644  peeked_data['metadata'] = metadata
645 
646 
647  taginfo = {}
648  if self.metaStore.contains('IOVMetaDataContainer','/TagInfo'):
649  v = self.process_metadata(self.metaStore, '/TagInfo')
650  taginfo = mergeMultipleDict(v)
651  if taginfo:
652  # we want to keep the AtlasRelease from when the file was produced
653  atlas_release = metadata.get('/TagInfo', taginfo)
654  atlas_release = atlas_release.get('AtlasRelease',
655  taginfo['AtlasRelease'])
656  taginfo['AtlasRelease'] = atlas_release
657  peeked_data['det_descr_tags'] = taginfo
658  peeked_data['tag_info'] = taginfo
659 
660 
662  ddt = peeked_data['det_descr_tags']
663  peeked_data['geometry'] = ddt.get('GeoAtlas', None)
664  peeked_data['conditions_tag'] = ddt.get('IOVDbGlobalTag', None)
665 
666 
667  peeked_data['beam_type']= [ddt.get('beam_type','N/A')]
668  beam_ene = maybe_float(ddt.get('beam_energy','N/A'))
669  peeked_data['beam_energy']=[beam_ene]
670 
671  pass # old files compat
672 
673  return peeked_data
674 
675  pass # class FilePeeker
676 
678  """a service to spy for file meta-data and store this collected data into
679  the pool file, in a python-pickle friendly format
680  """
681 
682  def __init__(self, name='FilePeekerSvc', **kw):
683  kw['name'] = name
684  super(FilePeekerSvc, self).__init__(**kw)
685 
686 
687  def initialize(self):
688  # register with the incident svc
689  svc = PyAthena.py_svc('IncidentSvc', iface='IIncidentSvc')
690  if not svc:
691  self.msg.error('unable to get the incident svc')
692  return StatusCode.Failure
693 
694  for incident in ('EndEvent',
695  'BeginInputFile',):
696  svc.addListener(self, incident)
697  pass
698 
699  return StatusCode.Success
700 
701  def finalize(self):
702  return StatusCode.Success
703 
704  def handle(self, incident):
705  tp = incident.type()
706  if tp == 'EndEvent':
707  pass
708  elif tp == 'BeginInputFile':
709  self.msg.info('input file name: [%s]', incident.fileName())
710  pass
711  else:
712  pass
713  return
714 
715  pass # class FilePeekerSvc
grepfile.info
info
Definition: grepfile.py:38
python.FilePeekerLib.sg_versioned_key
classes -----------------------------------------------------------------—
Definition: FilePeekerLib.py:59
python.FilePeekerLib.FilePeeker.peeked_data
peeked_data
Definition: FilePeekerLib.py:87
python.FilePeekerLib.FilePeeker.infname
infname
init base class
Definition: FilePeekerLib.py:72
python.FilePeekerLib.sg_versioned_key.raw_key
raw_key
Definition: FilePeekerLib.py:61
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
python.FilePeekerLib.FilePeeker._do_peeking
def _do_peeking(self, peek_evt_data=False)
Definition: FilePeekerLib.py:314
PyAthena::Alg::start
virtual StatusCode start() override
Definition: PyAthenaAlg.cxx:74
python.FilePeekerLib.FilePeekerSvc.__init__
def __init__(self, name='FilePeekerSvc', **kw)
Definition: FilePeekerLib.py:682
python.FilePeekerLib._create_file_infos
def _create_file_infos()
Definition: FilePeekerLib.py:31
PyAthena::Alg::initialize
virtual StatusCode initialize() override
Definition: PyAthenaAlg.cxx:60
PyAthena::Alg::execute
virtual StatusCode execute() override
Definition: PyAthenaAlg.cxx:93
python.FilePeekerLib.FilePeeker.print_summary
def print_summary(self, data=None)
Definition: FilePeekerLib.py:293
xAODRootTest._typename
def _typename(t)
Definition: xAODRootTest.py:34
python.FilePeekerLib.FilePeeker.inputStore
def inputStore(self)
Definition: FilePeekerLib.py:148
python.FilePeekerLib.FilePeeker._old_file_flag
_old_file_flag
input-store self.inputStore.dump()
Definition: FilePeekerLib.py:76
dumpHVPathFromNtuple.append
bool append
Definition: dumpHVPathFromNtuple.py:91
python.FilePeekerLib.FilePeeker._peeked_events
_peeked_events
Definition: FilePeekerLib.py:82
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
PyAthena::Alg::stop
virtual StatusCode stop() override
Definition: PyAthenaAlg.cxx:80
python.FilePeekerLib.toiter
def toiter(beg, end)
Definition: FilePeekerLib.py:25
PyAthena::Alg::finalize
virtual StatusCode finalize() override
Definition: PyAthenaAlg.cxx:86
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
PyAthena::Svc
Definition: PyAthenaSvc.h:33
python.FilePeekerLib.FilePeekerSvc
Definition: FilePeekerLib.py:677
python.FilePeekerLib.sg_versioned_key.__init__
def __init__(self, sgkey)
Definition: FilePeekerLib.py:60
contains
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition: hcg.cxx:111
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
python.FilePeekerLib.FilePeeker.__init__
def __init__(self, name='FilePeeker', **kw)
Definition: FilePeekerLib.py:69
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.FilePeekerLib.FilePeeker._begin_run_flag
_begin_run_flag
Definition: FilePeekerLib.py:79
PyAthena::Svc::finalize
virtual StatusCode finalize() override
Definition: PyAthenaSvc.cxx:71
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.FilePeekerLib.FilePeeker.process_metadata
def process_metadata(self, store, metadata_name)
Definition: FilePeekerLib.py:158
python.FilePeekerLib.FilePeeker
Definition: FilePeekerLib.py:66
python.FilePeekerLib.FilePeeker.tagStore
def tagStore(self)
Definition: FilePeekerLib.py:143
python.FilePeekerLib.FilePeeker.metaStore
def metaStore(self)
Definition: FilePeekerLib.py:138
PyAthena::Svc::initialize
virtual StatusCode initialize() override
Gaudi Service Implementation.
Definition: PyAthenaSvc.cxx:57
python.FilePeekerLib.FilePeekerSvc.handle
def handle(self, incident)
Definition: FilePeekerLib.py:704
python.FilePeekerLib._import_ROOT
def _import_ROOT()
helper functions -------------------------------------------------------—
Definition: FilePeekerLib.py:19
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
python.FilePeekerLib.FilePeeker.outfname
outfname
Definition: FilePeekerLib.py:73
pickleTool.object
object
Definition: pickleTool.py:30
str
Definition: BTagTrackIpAccessor.cxx:11
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
PyAthena::Alg
Definition: PyAthenaAlg.h:33
calibdata.copy
bool copy
Definition: calibdata.py:27
python.FilePeekerLib.sg_versioned_key.key
def key(self)
Definition: FilePeekerLib.py:63
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
error
Definition: IImpactPoint3dEstimator.h:70
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
python.FilePeekerLib.FilePeeker.evtStore
def evtStore(self)
Definition: FilePeekerLib.py:133
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65