24 std::uint64_t arraySize = 1;
32 while (parentId != desc.GetFieldZeroId()) {
33 const auto &fd = desc.GetFieldDescriptor(parentId);
38 parentId = fd.GetParentId();
40 if (parentId == desc.GetFieldZeroId()) {
48 auto columnIterable = desc.GetColumnIterable(fieldId);
52 columnId = fnGetPrincipalColumnId(field.
GetOnDiskId());
56 const auto &linkIds = desc.GetFieldDescriptor(field.
GetOnDiskId()).GetLinkIds();
57 std::deque<ROOT::DescriptorId_t> subFields(linkIds.begin(), linkIds.end());
58 while (!subFields.empty()) {
59 auto subFieldId = subFields.front();
60 subFields.pop_front();
61 columnId = fnGetPrincipalColumnId(subFieldId);
65 const auto &subLinkIds = desc.GetFieldDescriptor(subFieldId).GetLinkIds();
66 subFields.insert(subFields.end(), subLinkIds.begin(), subLinkIds.end());
74 arraySize = std::max(arraySize, desc.GetFieldDescriptor(field.
GetOnDiskId()).GetNRepetitions());
const ROOT::RNTupleDescriptor & GetConstRef() const
Abstract interface to read data from an ntuple.
ROOT::NTupleSize_t GetNElements(ROOT::DescriptorId_t physicalColumnId)
RSharedDescriptorGuard GetSharedDescriptorGuard() const
Takes the read lock for the descriptor.
ROOT::RNTupleGlobalRange GetFieldRange(const ROOT::RFieldBase &field, ROOT::Internal::RPageSource &pageSource)
Helper to get the iteration space of the given field that needs to be connected to the given page sou...