614 def __processFile(self):
616 for name
in {PoolOpts.TTreeNames.DataHeader, PoolOpts.RNTupleNames.DataHeader}:
617 dhKey = self.poolFile.FindKey( name )
619 obj = self.poolFile.
Get( name )
620 if isinstance(obj, self.ROOT.TTree):
621 nEntries = obj.GetEntries()
624 nEntries = self.ROOT.Experimental.RNTupleReader.Open(obj).GetNEntries()
625 except AttributeError:
627 nEntries = self.ROOT.RNTupleReader.Open(obj).GetNEntries()
629 raise NotImplementedError(f
"Keys of type {type(obj)!r} not supported")
636 for k
in self.poolFile.GetListOfKeys():
637 keyname = k.GetName()
638 obj = self.poolFile.
Get( keyname )
639 if isinstance(obj, self.ROOT.TTree):
640 containerName = obj.GetName()
641 nEntries = obj.GetEntries()
645 reader = self.ROOT.Experimental.RNTupleReader.Open(obj)
646 except AttributeError:
648 reader = self.ROOT.RNTupleReader.Open(obj)
649 containerName = reader.GetDescriptor().GetName()
650 nEntries = reader.GetNEntries()
653 raise NotImplementedError(f
"Keys of type {type(obj)!r} not supported")
654 if containerName
not in containers:
656 containers.append(containerName)
658 if keyname.startswith(PoolOpts.POOL_HEADER)
and not keyname.endswith(
'Form'):
659 self.dataHeaderA[PoolOpts.augmentationName(keyname)] = \
660 PoolRecord(
"DataHeader", 0, 0, 0,
664 keys.sort (key =
lambda x: x.GetName())
669 obj = self.poolFile.
Get( k.GetName() )
670 if isinstance(obj, self.ROOT.TTree):
674 inspector = self.ROOT.Experimental.RNTupleInspector.Create(obj)
675 except AttributeError:
676 inspector = self.ROOT.RNTupleInspector.Create(obj)
677 name = inspector.GetDescriptor().GetName()
679 if PoolOpts.isDataHeader(name):
680 contName =
"DataHeader"
681 if isinstance(obj, self.ROOT.TTree):
682 memSize = obj.GetTotBytes() / Units.kb
683 diskSize = obj.GetZipBytes() / Units.kb
686 memSizeNoZip = memSize
687 nEntries = obj.GetEntries()
691 br.GetName()
for br
in obj.GetListOfBranches()
692 if br.GetName().
count(
"DataHeader_p") > 0
694 if len(dhBranchNames) == 1:
695 dhBranch = obj.GetBranch(dhBranchNames[0])
696 typeName = dhBranch.GetClassName()
697 if not typeName
and (leaf := dhBranch.GetListOfLeaves().At(0)):
698 typeName = leaf.GetTypeName()
701 PoolRecord( contName, 0., 0., 0.,
704 typeName = typeName ),
708 poolRecord = PoolRecord(contName, memSize, diskSize, memSizeNoZip,
712 self.dataHeader = poolRecord
714 diskSize = inspector.GetCompressedSize() / Units.kb
715 memSize = inspector.GetUncompressedSize() / Units.kb
719 memSizeNoZip = memSize
720 nEntries = inspector.GetDescriptor().GetNEntries()
721 poolRecord = PoolRecord(contName, memSize, diskSize, memSizeNoZip,
724 self.dataHeader = poolRecord
725 elif PoolOpts.isData(name):
726 if isinstance(obj, self.ROOT.TTree):
727 if not hasattr(obj,
'GetListOfBranches'):
729 branches = obj.GetListOfBranches()
731 if name
in (PoolOpts.EVENT_DATA, PoolOpts.META_DATA):
733 for branch
in branches:
739 poolRecord.augName = PoolOpts.augmentationName(name)
740 self.augNames.
add(poolRecord.augName)
741 self.data += [ poolRecord ]
743 descriptor = inspector.GetDescriptor()
745 if name
in {PoolOpts.RNTupleNames.EventData, PoolOpts.RNTupleNames.MetaData}:
747 fieldZeroId = descriptor.GetFieldZeroId()
748 for fieldDescriptor
in descriptor.GetFieldIterable(fieldZeroId):
749 fieldId = fieldDescriptor.GetId()
750 fieldTreeInspector = inspector.GetFieldTreeInspector(fieldId)
751 diskSize = fieldTreeInspector.GetCompressedSize() / Units.kb
752 memSize = fieldTreeInspector.GetUncompressedSize() / Units.kb
753 typeName = fieldDescriptor.GetTypeName()
754 fieldName = fieldDescriptor.GetFieldName()
755 poolRecord = PoolRecord(fieldName, memSize, diskSize, memSize,
756 descriptor.GetNEntries(),
759 poolRecord.augName = PoolOpts.augmentationName(name)
760 self.augNames.
add(poolRecord.augName)
761 self.data += [ poolRecord ]