24 msg.debug(
'Calling AthenaLiteFileInfo for {0} (type {1})'.format(filename, filetype))
25 from PyUtils.MetaReader
import read_metadata
29 meta = read_metadata(filename,
None,
'lite')[filename]
30 msg.debug(
'read_metadata came back for {0}'.format(filename))
31 metaDict[filename] = {}
32 for key
in retrieveKeys:
33 msg.debug(
'Looking for key {0}'.format(key))
36 metaDict[filename][key] = metaval.lower()
if key ==
'file_type' else metaval
38 msg.warning(
'Missing key in athFile info: {0}'.format(key))
39 except (ValueError, AssertionError, ReferenceError):
40 msg.error(
'Problem in getting metadata for {0}'.format(filename))
42 msg.debug(
'Returning {0}'.format(metaDict))
59 fname = root.TFile.Open(fileName,
'READ')
61 if not (isinstance(fname, root.TFile)
and fname.IsOpen()):
65 htrig_path =
'HLTFramework/HltEventLoopMgr/TotalTime'
66 htrig = fname.Get(htrig_path)
67 if isinstance( htrig, root.TH1 ):
68 nev_trig = htrig.GetEntries()
70 msg.debug(
'Retrieved %s in file %s, found %i entries', htrig_path, fileName, nev_trig)
74 keys = fname.GetListOfKeys()
80 if name.startswith(
'run_')
and name !=
'run_multiple':
82 if rundir
is not None:
83 msg.warning(
'Found two run_ directories in HIST file %s: %s and %s', fileName, rundir, name)
91 msg.warning(
'Unable to find run directory in HIST file %s', fileName )
95 msg.info(
'Using run directory %s for event counting of HIST file %s. ', rundir, fileName )
97 hpath =
'%s/GLOBAL/DQTDataFlow/events_lb' % rundir
99 if 'tmp.HIST_' in fileName:
100 msg.info(
'Special case for temporary HIST file {0}. '.format( fileName ) )
101 h = fname.Get(
'{0}'.format(rundir))
102 for directories
in h.GetListOfKeys() :
103 if 'lb' in directories.GetName():
104 msg.info(
'Using {0} in tmp HIST file {1}. '.format(directories.GetName(), fileName ) )
105 hpath = rundir+
'/'+str(directories.GetName())+
'/GLOBAL/DQTDataFlow/events_lb'
106 possibleLBs.append(hpath)
108 msg.info(
'Classical case for HIST file {0}. '.format( fileName ) )
109 possibleLBs.append(hpath)
111 if len(possibleLBs) == 0:
112 msg.warning(
'Unable to find events_lb histogram in HIST file %s', fileName )
115 for hpath
in possibleLBs:
118 if not isinstance( h, root.TH1 ):
119 msg.warning(
'Unable to retrieve %s in HIST file %s.', hpath, fileName )
123 nBinsX = h.GetNbinsX()
126 for i
in range(1, nBinsX):
129 msg.warning(
'Negative number of events for step %s in HIST file %s.', h.GetXaxis().GetBinLabel(i), fileName )
141 msg.warning(
'Mismatch in events per step in HIST file %s; most recent step seen is %s.', fileName, h.GetXaxis().GetBinLabel(i) )
164 if not isinstance( treeNames, list ):
165 treeNames=[treeNames]
169 fname = root.TFile.Open(fileName,
'READ')
171 if not (isinstance(fname, root.TFile)
and fname.IsOpen()):
177 for treeName
in treeNames:
179 tree = fname.Get(treeName)
181 if not isinstance(tree, root.TTree):
184 num = tree.GetEntriesFast()
187 msg.warning(
'GetEntriesFast returned non positive value for tree %s in NTUP file %s.', treeName, fileName )
190 if prevNum
is not None and prevNum != num:
191 msg.warning(
"Found diffferent number of entries in tree %s and tree %s of file %s.", treeName, prevTree, fileName )
201 return numberOfEntries
219 fname = root.TFile.Open(fileName,
'READ')
221 if not (isinstance(fname, root.TFile)
and fname.IsOpen()):
226 for key
in fname.GetListOfKeys():
227 if key.GetName()==
'PileupReweighting':
228 rundir = fname.Get(
'PileupReweighting')
232 if rundir
is None:
return None
235 for key
in rundir.GetListOfKeys():
236 if 'pileup' in key.GetName():
237 msg.debug(
'Working on file '+fileName+
' histo '+key.GetName())
239 total += rundir.Get(key.GetName()).Integral()
241 total += rundir.Get(key.GetName()).
GetEntries()