606 def __processFile(self):
608 for name
in {PoolOpts.TTreeNames.DataHeader, PoolOpts.RNTupleNames.DataHeader}:
609 dhKey = self.poolFile.FindKey( name )
611 obj = self.poolFile.
Get( name )
612 if isinstance(obj, self.ROOT.TTree):
613 nEntries = obj.GetEntries()
614 elif isinstance(obj, self.ROOT.Experimental.RNTuple):
615 nEntries = self.ROOT.Experimental.RNTupleReader.Open(obj).GetNEntries()
617 raise NotImplementedError(f
"Keys of type {type(obj)!r} not supported")
624 for k
in self.poolFile.GetListOfKeys():
625 keyname = k.GetName()
626 obj = self.poolFile.
Get( keyname )
627 if isinstance(obj, self.ROOT.TTree):
628 containerName = obj.GetName()
629 nEntries = obj.GetEntries()
631 elif isinstance(obj, self.ROOT.Experimental.RNTuple):
632 reader = self.ROOT.Experimental.RNTupleReader.Open(obj)
633 containerName = reader.GetDescriptor().GetName()
634 nEntries = reader.GetNEntries()
637 raise NotImplementedError(f
"Keys of type {type(obj)!r} not supported")
638 if containerName
not in containers:
640 containers.append(containerName)
642 if keyname.startswith(PoolOpts.POOL_HEADER)
and not keyname.endswith(
'Form'):
643 self.dataHeaderA[PoolOpts.augmentationName(keyname)] = \
644 PoolRecord(
"DataHeader", 0, 0, 0,
648 keys.sort (key =
lambda x: x.GetName())
653 obj = self.poolFile.
Get( k.GetName() )
654 if isinstance(obj, self.ROOT.TTree):
656 elif isinstance(obj, self.ROOT.Experimental.RNTuple):
657 reader = self.ROOT.Experimental.RNTupleReader.Open(obj)
658 name = reader.GetDescriptor().GetName()
660 if PoolOpts.isDataHeader(name):
661 contName =
"DataHeader"
662 if isinstance(obj, self.ROOT.TTree):
663 memSize = obj.GetTotBytes() / Units.kb
664 diskSize = obj.GetZipBytes() / Units.kb
667 memSizeNoZip = memSize
668 nEntries = obj.GetEntries()
672 br.GetName()
for br
in obj.GetListOfBranches()
673 if br.GetName().
count(
"DataHeader_p") > 0
675 if len(dhBranchNames) == 1:
676 dhBranch = obj.GetBranch(dhBranchNames[0])
677 typeName = dhBranch.GetClassName()
678 if not typeName
and (leaf := dhBranch.GetListOfLeaves().At(0)):
679 typeName = leaf.GetTypeName()
682 PoolRecord( contName, 0., 0., 0.,
685 typeName = typeName ),
689 poolRecord = PoolRecord(contName, memSize, diskSize, memSizeNoZip,
693 self.dataHeader = poolRecord
694 elif isinstance(obj, self.ROOT.Experimental.RNTuple):
695 reader = self.ROOT.Experimental.RNTupleReader.Open(obj)
696 inspector = self.ROOT.Experimental.RNTupleInspector.Create(obj)
697 diskSize = inspector.GetCompressedSize() / Units.kb
698 memSize = inspector.GetUncompressedSize() / Units.kb
702 memSizeNoZip = memSize
703 nEntries = reader.GetNEntries()
704 poolRecord = PoolRecord(contName, memSize, diskSize, memSizeNoZip,
707 self.dataHeader = poolRecord
708 elif PoolOpts.isData(name):
709 if isinstance(obj, self.ROOT.TTree):
710 if not hasattr(obj,
'GetListOfBranches'):
712 branches = obj.GetListOfBranches()
714 if name
in (PoolOpts.EVENT_DATA, PoolOpts.META_DATA):
716 for branch
in branches:
722 poolRecord.augName = PoolOpts.augmentationName(name)
723 self.augNames.
add(poolRecord.augName)
724 self.data += [ poolRecord ]
725 elif isinstance(obj, self.ROOT.Experimental.RNTuple):
726 reader = self.ROOT.Experimental.RNTupleReader.Open(obj)
727 descriptor = reader.GetDescriptor()
728 inspector = self.ROOT.Experimental.RNTupleInspector.Create(obj)
730 if name
in {PoolOpts.RNTupleNames.EventData, PoolOpts.RNTupleNames.MetaData}:
732 fieldZeroId = descriptor.GetFieldZeroId()
733 for fieldDescriptor
in descriptor.GetFieldIterable(fieldZeroId):
734 fieldId = fieldDescriptor.GetId()
735 fieldTreeInspector = inspector.GetFieldTreeInspector(fieldId)
736 diskSize = fieldTreeInspector.GetCompressedSize() / Units.kb
737 memSize = fieldTreeInspector.GetUncompressedSize() / Units.kb
738 fieldDescriptor = fieldTreeInspector.GetDescriptor()
739 typeName = fieldDescriptor.GetTypeName()
740 fieldName = fieldDescriptor.GetFieldName()
741 poolRecord = PoolRecord(fieldName, memSize, diskSize, memSize,
742 descriptor.GetNEntries(),
745 poolRecord.augName = PoolOpts.augmentationName(name)
746 self.augNames.
add(poolRecord.augName)
747 self.data += [ poolRecord ]