40 auto treemap = std::make_unique<ROOT::Experimental::RTreeMapPainter>();
44 for (
const auto &childId : descriptor.GetFieldDescriptor(rootId).GetLinkIds()) {
48 std::queue<std::pair<uint64_t, bool>> queue;
49 queue.emplace(rootId,
true);
50 while (!queue.empty()) {
51 size_t levelSize = queue.size();
52 size_t levelChildrenStart = treemap->fNodes.size() + levelSize;
53 for (
size_t i = 0; i < levelSize; ++i) {
54 const auto ¤t = queue.front();
59 std::vector<uint64_t> children;
60 const auto &fldDesc = descriptor.GetFieldDescriptor(current.first);
61 children = fldDesc.GetLinkIds();
62 for (
const auto childId : children) {
63 queue.emplace(childId, 1);
65 for (
const auto &columnDesc : descriptor.GetColumnIterable(fldDesc.GetId())) {
66 const auto &columnId = columnDesc.GetPhysicalId();
67 children.push_back(columnId);
68 queue.emplace(columnId, 0);
70 nChildren = children.size();
71 const auto &node =
CreateNode(insp, fldDesc, levelChildrenStart, nChildren, rootId, rootSize);
72 treemap->fNodes.push_back(node);
75 const auto &node =
CreateNode(colInsp, levelChildrenStart);
76 treemap->fNodes.push_back(node);
79 levelChildrenStart += nChildren;
static ROOT::Experimental::RTreeMapBase::Node CreateNode(const ROOT::Experimental::RNTupleInspector &insp, const ROOT::RFieldDescriptor &fldDesc, std::uint64_t childrenIdx, std::uint64_t nChildren, ROOT::DescriptorId_t rootId, size_t rootSize)