161 from PyUtils
import PoolFile
165 msg.debug(
'Checking directory %s ...', directory.GetName())
167 listOfKeys=directory.GetListOfKeys()
169 msg.debug(
'Checking %s keys ... ', listOfKeys.GetEntries())
171 for key
in listOfKeys:
173 msg.debug(
'Looking at key %s ...', key.GetName())
174 msg.debug(
'Key is of class %s.', key.GetClassName())
176 the_object=directory.Get(key.GetName())
178 msg.warning(
"Can't get object of key %s.", key.GetName())
181 if requireTree
and not isinstance(the_object, TTree):
182 msg.warning(
"Object of key %s is not of class TTree!", key.GetName())
185 if isinstance(the_object,TTree):
187 msg.debug(
'Checking tree %s ...', the_object.GetName())
190 if PoolFile.PoolOpts.TTreeNames.EventData == the_object.GetName():
191 nentries = the_object.GetEntries()
192 msg.debug(f
' contains {nentries} events')
193 elif PoolFile.PoolOpts.TTreeNames.MetaData == the_object.GetName():
195 msg.debug(
' contains MetaData')
197 if the_type==
'event':
200 elif the_type==
'basket':
204 msg.debug(
'Tree %s looks ok.', the_object.GetName())
208 msg.debug(
'Checking ntuple of key %s ...', key.GetName())
211 reader=RNTupleReader.Open(the_object)
212 except Exception
as err:
213 msg.warning(
'Could not open ntuple %s: %s', the_object, err)
217 if PoolFile.PoolOpts.RNTupleNames.EventData == reader.GetDescriptor().GetName():
218 nentries = reader.GetNEntries()
219 msg.debug(f
' contains {nentries} events')
220 elif PoolFile.PoolOpts.RNTupleNames.MetaData == reader.GetDescriptor().GetName():
222 msg.debug(
' contains MetaData')
224 if the_type==
'event':
227 elif the_type==
'basket':
231 msg.debug(
'NTuple of key %s looks ok.', key.GetName())
233 if isinstance(the_object, TDirectory):
234 if checkDirectory(the_object, the_type, requireTree, depth + 1)==1:
238 if depth == 0
and hasMetadata
and checkNEvents(directory.GetName(), nentries)==1:
241 msg.debug(
'Directory %s looks ok.', directory.GetName())