C++ container/structure under TTree (or RNtuple)

Dear developers,

I was wondering what kind of C++ data structures are used for the development of TTree (and now RNtuple) classes.

Maybe I am simplifying the whole process, knowing that a TTree class uses long and elaborate code.
But is it possible that I could describe to someone outside CERN that perhaps a TTree uses
C++ tuples and tree data structures? Is it correct to say that? Maybe (standard library) vectors and maps too?

If no such simplified answer is possible, then you could point me to some relevant inks/documentation?

Many thanks in advance,
Alexis

Hello @alexis352,
the full answer to your question would be very long and complex, as both TTree and RNTuple are made up of many interconnected pieces that use all sort of data structures internally, as any substantially-large library does.
You are free to explore the code yourself and yes, you will find usages of vectors, maps, tuples, pointers, mutexes and many other data structures. ROOT makes heavy use of the C++ standard library so most of the container types are from the STL. Others are custom implementations (particularly in the TTree codebase which largely predates the modern STL).

As for documentation, you can find some RNTuple documentation in the repo and general API documentation here.

Hello @silverweed ,

Many thanks for your answer.
Yes, it sounds reasonable. RNtuple will use every possible C++ STL utility, and also work in every
possible way to optimize the memory handling and read/write efficiency, hence
the extensive code behind it!

The TTree is becoming kind of legacy, but similar principles there.

I will have a look at the links. Looking at the website, the Manual and API Documentation appear very thorough.
The blog posts about the RNtuple release too.

Many thanks again,
Alexis