Source code for alphatwirl.roottree.inspect
# Tai Sakuma <tai.sakuma@gmail.com>
##__________________________________________________________________||
[docs]def IsROOTNullPointer(tobject):
try:
tobject.GetName()
return False
except ReferenceError:
return True
##__________________________________________________________________||
[docs]def inspect_tree(tree):
ret = { }
ret['leaves'] = [inspect_leaf(leaf) for leaf in tree.GetListOfLeaves()]
return ret
##__________________________________________________________________||
[docs]def inspect_leaf(leaf):
ret = { }
ret.update(inspect_leaf_definition(leaf))
ret.update(inspect_leaf_size(leaf))
return ret
##__________________________________________________________________||
[docs]def inspect_leaf_definition(leaf):
leafcount = leaf.GetLeafCount()
isArray = not IsROOTNullPointer(leafcount)
ret = { }
ret['name'] = leaf.GetName()
ret['type'] = leaf.GetTypeName()
ret['isarray'] = '1' if isArray else '0'
ret['countname'] = leafcount.GetName() if isArray else None
ret['title'] = leaf.GetBranch().GetTitle()
return ret
##__________________________________________________________________||
[docs]def inspect_leaf_size(leaf):
ret = { }
zipbytes = leaf.GetBranch().GetZipBytes()/1024.0/1024.0 # MB
totalsize = leaf.GetBranch().GetTotalSize()/1024.0/1024.0 # MB
ret['size'] = zipbytes
ret['uncompressed_size'] = totalsize
ret['compression_factor'] = totalsize/zipbytes if zipbytes > 0 else 0
return ret
##__________________________________________________________________||