582 def __processFile(self):
584 for name
in {PoolOpts.TTreeNames.DataHeader, PoolOpts.RNTupleNames.DataHeader}:
585 dhKey = self.poolFile.FindKey( name )
587 obj = self.poolFile.
Get( name )
588 if isinstance(obj, self.ROOT.TTree):
589 nEntries = obj.GetEntries()
592 nEntries = self.ROOT.Experimental.RNTupleReader.Open(obj).GetNEntries()
593 except AttributeError:
595 nEntries = self.ROOT.RNTupleReader.Open(obj).GetNEntries()
597 raise NotImplementedError(f
"Keys of type {type(obj)!r} not supported")
604 for k
in self.poolFile.GetListOfKeys():
605 keyname = k.GetName()
606 obj = self.poolFile.
Get( keyname )
607 if isinstance(obj, self.ROOT.TTree):
608 containerName = obj.GetName()
609 nEntries = obj.GetEntries()
613 reader = self.ROOT.Experimental.RNTupleReader.Open(obj)
614 except AttributeError:
616 reader = self.ROOT.RNTupleReader.Open(obj)
617 containerName = reader.GetDescriptor().GetName()
618 nEntries = reader.GetNEntries()
621 raise NotImplementedError(f
"Keys of type {type(obj)!r} not supported")
622 if containerName
not in containers:
624 containers.append(containerName)
626 if keyname.startswith(PoolOpts.POOL_HEADER)
and not keyname.endswith(
'Form'):
627 self.dataHeaderA[PoolOpts.augmentationName(keyname)] = \
628 PoolRecord(
"DataHeader", 0, 0, 0,
632 keys.sort (key =
lambda x: x.GetName())
637 obj = self.poolFile.
Get( k.GetName() )
638 if isinstance(obj, self.ROOT.TTree):
642 inspector = self.ROOT.Experimental.RNTupleInspector.Create(obj)
643 except AttributeError:
644 inspector = self.ROOT.RNTupleInspector.Create(obj)
645 name = inspector.GetDescriptor().GetName()
647 if PoolOpts.isDataHeader(name):
648 contName =
"DataHeader"
649 if isinstance(obj, self.ROOT.TTree):
650 memSize = obj.GetTotBytes() / Units.kb
651 diskSize = obj.GetZipBytes() / Units.kb
654 memSizeNoZip = memSize
655 nEntries = obj.GetEntries()
659 br.GetName()
for br
in obj.GetListOfBranches()
660 if br.GetName().
count(
"DataHeader_p") > 0
662 if len(dhBranchNames) == 1:
663 dhBranch = obj.GetBranch(dhBranchNames[0])
664 typeName = dhBranch.GetClassName()
665 if not typeName
and (leaf := dhBranch.GetListOfLeaves().At(0)):
666 typeName = leaf.GetTypeName()
669 PoolRecord( contName, 0., 0., 0.,
672 typeName = typeName ),
676 poolRecord = PoolRecord(contName, memSize, diskSize, memSizeNoZip,
680 self.dataHeader = poolRecord
682 diskSize = inspector.GetCompressedSize() / Units.kb
683 memSize = inspector.GetUncompressedSize() / Units.kb
687 memSizeNoZip = memSize
688 nEntries = inspector.GetDescriptor().GetNEntries()
689 poolRecord = PoolRecord(contName, memSize, diskSize, memSizeNoZip,
692 self.dataHeader = poolRecord
693 elif PoolOpts.isData(name):
694 if isinstance(obj, self.ROOT.TTree):
695 if not hasattr(obj,
'GetListOfBranches'):
697 branches = obj.GetListOfBranches()
699 if name
in (PoolOpts.EVENT_DATA, PoolOpts.META_DATA):
701 for branch
in branches:
707 poolRecord.augName = PoolOpts.augmentationName(name)
708 self.augNames.
add(poolRecord.augName)
709 self.data += [ poolRecord ]
711 descriptor = inspector.GetDescriptor()
713 if name
in {PoolOpts.RNTupleNames.EventData, PoolOpts.RNTupleNames.MetaData}:
715 fieldZeroId = descriptor.GetFieldZeroId()
716 for fieldDescriptor
in descriptor.GetFieldIterable(fieldZeroId):
717 fieldId = fieldDescriptor.GetId()
718 fieldTreeInspector = inspector.GetFieldTreeInspector(fieldId)
719 diskSize = fieldTreeInspector.GetCompressedSize() / Units.kb
720 memSize = fieldTreeInspector.GetUncompressedSize() / Units.kb
721 typeName = fieldDescriptor.GetTypeName()
722 fieldName = fieldDescriptor.GetFieldName()
723 poolRecord = PoolRecord(fieldName, memSize, diskSize, memSize,
724 descriptor.GetNEntries(),
727 poolRecord.augName = PoolOpts.augmentationName(name)
728 self.augNames.
add(poolRecord.augName)
729 self.data += [ poolRecord ]