ROOT 6.16/01 Reference Guide |
A class to process the entries of a TTree in parallel.
By means of its Process method, ROOT::TTreeProcessorMT provides a way to process the entries of a TTree in parallel. When invoking TTreeProcessor::Process, the user passes a function whose only parameter is a TTreeReader. The function iterates on a subrange of entries by using that TTreeReader.
The implementation of ROOT::TTreeProcessorMT parallelizes the processing of the subranges, each corresponding to a cluster in the TTree. This is possible thanks to the use of a ROOT::TThreadedObject, so that each thread works with its own TFile and TTree objects.
Definition at line 165 of file TTreeProcessorMT.hxx.
Public Member Functions | |
TTreeProcessorMT (const std::vector< std::string_view > &filenames, std::string_view treename="") | |
Constructor based on a collection of file names. More... | |
TTreeProcessorMT (std::string_view filename, std::string_view treename="") | |
Constructor based on a file name. More... | |
TTreeProcessorMT (TTree &tree) | |
Constructor based on a TTree. More... | |
TTreeProcessorMT (TTree &tree, const TEntryList &entries) | |
Constructor based on a TTree and a TEntryList. More... | |
void | Process (std::function< void(TTreeReader &)> func) |
Process the entries of a TTree in parallel. More... | |
Static Public Member Functions | |
static unsigned int | GetMaxTasksPerFilePerWorker () |
Sets the maximum number of tasks created per file, per worker. More... | |
static void | SetMaxTasksPerFilePerWorker (unsigned int m) |
Sets the maximum number of tasks created per file, per worker. More... | |
Private Member Functions | |
std::string | FindTreeName () |
Retrieve the name of the first TTree in the first input file, else throw. More... | |
Internal::FriendInfo | GetFriendInfo (TTree &tree) |
Get and store the names, aliases and file names of the friends of the tree. More... | |
Private Attributes | |
const TEntryList | fEntryList |
User-defined selection of entry numbers to be processed, empty if none was provided. More... | |
const std::vector< std::string > | fFileNames |
Names of the files. More... | |
const Internal::FriendInfo | fFriendInfo |
const std::string | fTreeName |
Name of the tree. More... | |
ROOT::TThreadedObject< ROOT::Internal::TTreeView > | treeView |
! Thread-local TreeViews More... | |
Static Private Attributes | |
static unsigned int | fgMaxTasksPerFilePerWorker = 24U |
#include <ROOT/TTreeProcessorMT.hxx>
TTreeProcessorMT::TTreeProcessorMT | ( | std::string_view | filename, |
std::string_view | treename = "" |
||
) |
Constructor based on a file name.
[in] | filename | Name of the file containing the tree to process. |
[in] | treename | Name of the tree to process. If not provided, the implementation will automatically search for a tree in the file. |
Definition at line 264 of file TTreeProcessorMT.cxx.
TTreeProcessorMT::TTreeProcessorMT | ( | const std::vector< std::string_view > & | filenames, |
std::string_view | treename = "" |
||
) |
Constructor based on a collection of file names.
[in] | filenames | Collection of the names of the files containing the tree to process. |
[in] | treename | Name of the tree to process. If not provided, the implementation will automatically search for a tree in the collection of files. |
Definition at line 285 of file TTreeProcessorMT.cxx.
TTreeProcessorMT::TTreeProcessorMT | ( | TTree & | tree, |
const TEntryList & | entries | ||
) |
Constructor based on a TTree and a TEntryList.
[in] | tree | Tree or chain of files containing the tree to process. |
[in] | entries | List of entry numbers to process. |
Definition at line 318 of file TTreeProcessorMT.cxx.
TTreeProcessorMT::TTreeProcessorMT | ( | TTree & | tree | ) |
Constructor based on a TTree.
[in] | tree | Tree or chain of files containing the tree to process. |
Definition at line 325 of file TTreeProcessorMT.cxx.
|
private |
Retrieve the name of the first TTree in the first input file, else throw.
Definition at line 235 of file TTreeProcessorMT.cxx.
|
private |
Get and store the names, aliases and file names of the friends of the tree.
[in] | tree | The main tree whose friends to |
Note that "friends of friends" and circular references in the lists of friends are not supported.
Definition at line 192 of file TTreeProcessorMT.cxx.
|
static |
Sets the maximum number of tasks created per file, per worker.
Definition at line 403 of file TTreeProcessorMT.cxx.
void TTreeProcessorMT::Process | ( | std::function< void(TTreeReader &)> | func | ) |
Process the entries of a TTree in parallel.
The user-provided function receives a TTreeReader which can be used to iterate on a subrange of entries
The user needs to be aware that each of the subranges can potentially be processed in parallel. This means that the code of the user function should be thread safe.
[in] | func | User-defined function that processes a subrange of entries |
Definition at line 344 of file TTreeProcessorMT.cxx.
|
static |
Sets the maximum number of tasks created per file, per worker.
[in] | maxTasksPerFile | Name of the file containing the tree to process. |
This allows to create a reasonable number of tasks even if any of the processed files features a bad clustering, for example with a lot of entries and just a few entries per cluster.
Definition at line 415 of file TTreeProcessorMT.cxx.
|
private |
User-defined selection of entry numbers to be processed, empty if none was provided.
Definition at line 170 of file TTreeProcessorMT.hxx.
|
private |
Names of the files.
Definition at line 167 of file TTreeProcessorMT.hxx.
|
private |
Definition at line 171 of file TTreeProcessorMT.hxx.
|
staticprivate |
Definition at line 177 of file TTreeProcessorMT.hxx.
|
private |
Name of the tree.
Definition at line 168 of file TTreeProcessorMT.hxx.
|
private |
! Thread-local TreeViews
Definition at line 173 of file TTreeProcessorMT.hxx.