PROOF-novice question

i’ve enabled ROOT on a multicore machine, and it is running properly, that is i can correctly run the last example here
However i have a different question: i have some analysis programs that i’ve always used on a multicore system (but using a single core only). In order to use the potential of PROOF do i have to change something in the way i use to program? I’ve tried to load and run the macro in a PROOF-enabled ROOT, but it continued to use a single CPU.

Sorry if the question seems stupid, but i wasn’t able to find solid documentation for using PROOF.

Thanks a lot,


Sorry for the lack of documentation.

PROOF has been developed to speed up the analysis of ROOT trees according to the TTree+TSelector model, where the entries in the tree are assumed
to be independent, so that the result does not depend on the processing order.
More generally, PROOF can parallelize jobs that are composed of sequences of independent steps; we are working at a framework that simplifies the
definition of the tasks in this more general case. For the time being one has to do some tricks, like using an empty steering tree.

Could you let us know a bit more about the structure of your analysis jobs, so that we can provide the more suited example?

G. Ganis

Hi Gerri,
basically and simplifying my program reads a tree inside a TTree (or in a TChain), and fill different histograms for events that respect some conditions. Actually the entries in the TTree are somewhat independent.
I’ve never used TSelectors, but since some analysis can take up to some hours, it would be nice to take advantage of the parallelization.

PS: is there an example i could start with?


Hi Marco,

So, if I understand correctly you have files containing two TTrees that you analyse.

To have an idea of what a TSelector looks like and how to generate a skeleton you can have a look at … isSelector

Examples of TSelectors in the ROOT distribution and tutorials/tree/h1analysis.h,.C and the ones located under test/ProofBench .

In your case the additional complication comes from the second tree.
The best is that you choose one of the TTree as steering tree, define the second tree as member of the steering tree, and load / initialize it each time a new file is open in the Notify function.

I suggest that you have a look at the page above and at the examples and then we can be more precise on your case.