39 auto treemap = std::make_unique<ROOT::Experimental::RTreeMapPainter>();
43 for (
const auto &childId : descriptor.GetFieldDescriptor(rootId).GetLinkIds()) {
47 std::queue<std::pair<uint64_t, bool>> queue;
48 queue.emplace(rootId,
true);
49 while (!queue.empty()) {
50 size_t levelSize = queue.size();
51 size_t levelChildrenStart = treemap->fNodes.size() + levelSize;
52 for (
size_t i = 0; i < levelSize; ++i) {
53 const auto ¤t = queue.front();
58 std::vector<uint64_t> children;
59 const auto &fldDesc = descriptor.GetFieldDescriptor(current.first);
60 children = fldDesc.GetLinkIds();
61 for (
const auto childId : children) {
62 queue.emplace(childId, 1);
64 for (
const auto &columnDesc : descriptor.GetColumnIterable(fldDesc.GetId())) {
65 const auto &columnId = columnDesc.GetPhysicalId();
66 children.push_back(columnId);
67 queue.emplace(columnId, 0);
69 nChildren = children.size();
70 const auto &node =
CreateNode(insp, fldDesc, levelChildrenStart, nChildren, rootId, rootSize);
71 treemap->fNodes.push_back(node);
74 const auto &node =
CreateNode(colInsp, levelChildrenStart);
75 treemap->fNodes.push_back(node);
78 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)