36using EntryRange = std::pair<Long64_t, Long64_t>;
 
   42   for (
const auto &
fcl : 
cls) {
 
   43      for (
const auto &
c : 
fcl) {
 
   59std::vector<std::vector<EntryRange>>
 
   70   std::unique_ptr<TChain> 
chain;
 
   83      for (
auto i = 0
u; i < 
nFiles; ++i)
 
  125using ClustersAndEntries = std::pair<std::vector<std::vector<EntryRange>>, std::vector<Long64_t>>;
 
  131                                       const EntryRange &
range = {0, std::numeric_limits<Long64_t>::max()})
 
  147         fileName.c_str(), 
"READ_WITHOUT_GLOBALREGISTRATION")); 
 
  148      if (!
f || 
f->IsZombie()) {
 
  149         const auto msg = 
"TTreeProcessorMT::Process: an error occurred while opening file \"" + fileName + 
"\"";
 
  150         throw std::runtime_error(
msg);
 
  155         const auto msg = 
"TTreeProcessorMT::Process: an error occurred while getting tree \"" + 
treeName +
 
  156                          "\" from file \"" + fileName + 
"\"";
 
  157         throw std::runtime_error(
msg);
 
  165      const Long64_t entries = t->GetEntries();
 
  194      throw std::logic_error(std::string(
"A range of entries was passed in the creation of the TTreeProcessorMT, ") +
 
  195                             "but the starting entry (" + 
range.first + 
") is larger than the total number of " +
 
  196                             "entries (" + 
offset + 
") in the dataset.");
 
  279   for (std::size_t i = 0
ul; i < 
nFriends; i++) {
 
 
  287std::unique_ptr<TTreeReader>
 
  310   reader->SetEntriesRange(start, end);
 
 
  333      throw std::runtime_error(
"Empty list of files and no tree name provided");
 
  339      TIter next(
f->GetListOfKeys());
 
  340      while (
auto *key = 
static_cast<TKey *
>(next())) {
 
  341         const char *className = key->GetClassName();
 
  342         if (
strcmp(className, 
"TTree") == 0) {
 
  348         throw std::runtime_error(
"Cannot find any tree in file " + 
fname);
 
 
  365   : fFileNames({std::string(
filename)}),
 
  366     fTreeNames(
treename.empty() ? FindTreeNames() : std::vector<std::string>{std::string(
treename)}), fFriendInfo(),
 
  375      throw std::runtime_error(
"The provided list of file names is empty");
 
  377   std::vector<std::string> 
strings;
 
  379   for (
const auto &
v : 
views)
 
 
  399     fTreeNames(
treename.empty() ? FindTreeNames()
 
  400                                 : std::vector<std::string>(fFileNames.
size(), std::string(
treename))),
 
  413   : fFileNames(Internal::
TreeUtils::GetFileNamesFromTree(tree)),
 
  414     fTreeNames(Internal::
TreeUtils::GetTreeFullPaths(tree)),
 
 
  429   : fFileNames(Internal::
TreeUtils::GetFileNamesFromTree(tree)),
 
  430     fTreeNames(Internal::
TreeUtils::GetTreeFullPaths(tree)),
 
  468                                          fGlobalRange.second != std::numeric_limits<Long64_t>::max();
 
  505                                                                                [](
auto &
c) { return !c.empty(); }))
 
  519      if (view != 
nullptr) {
 
 
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
 
std::vector< std::string > CheckAndConvert(const std::vector< std::string_view > &views)
 
std::unique_ptr< TChain > fChain
Chain on which to operate.
 
std::vector< std::unique_ptr< TChain > > fFriends
Friends of the tree/chain, if present.
 
std::unique_ptr< TEntryList > fEntryList
TEntryList for fChain, if present.
 
void Reset()
Clear the resources.
 
std::unique_ptr< TTreeReader > GetTreeReader(Long64_t start, Long64_t end, const std::vector< std::string > &treeName, const std::vector< std::string > &fileNames, const ROOT::TreeUtils::RFriendInfo &friendInfo, const TEntryList &entryList, const std::vector< Long64_t > &nEntries)
Get a TTreeReader for the current tree of this view.
 
void MakeChain(const std::vector< std::string > &treeName, const std::vector< std::string > &fileNames, const ROOT::TreeUtils::RFriendInfo &friendInfo, const std::vector< Long64_t > &nEntries)
Construct fChain, also adding friends if needed and injecting knowledge of offsets if available.
 
ROOT::Internal::TreeUtils::RNoCleanupNotifier fNoCleanupNotifier
 
void RegisterChain(TChain &c)
 
const_iterator begin() const
 
const_iterator end() const
 
unsigned GetPoolSize() const
Returns the number of worker threads in the task arena.
 
void Foreach(F func, unsigned nTimes, unsigned nChunks=0)
Execute a function without arguments several times in parallel, dividing the execution in nChunks.
 
ROOT::TreeUtils::RFriendInfo fFriendInfo
 
const std::vector< std::string > fTreeNames
TTree names (always same size and ordering as fFileNames)
 
std::vector< std::string > FindTreeNames()
Retrieve the names of the TTrees in each of the input files, throw if a TTree cannot be found.
 
const std::vector< std::string > fFileNames
Names of the files.
 
static unsigned int fgTasksPerWorkerHint
 
ROOT::TThreadExecutor fPool
! Thread pool for processing.
 
TEntryList fEntryList
User-defined selection of entry numbers to be processed, empty if none was provided.
 
static void SetTasksPerWorkerHint(unsigned int m)
Set the hint for the desired number of tasks created per worker.
 
ROOT::TThreadedObject< ROOT::Internal::TTreeView > fTreeView
Thread-local TreeViews.
 
void Process(std::function< void(TTreeReader &)> func)
Process the entries of a TTree in parallel.
 
TTreeProcessorMT(std::string_view filename, std::string_view treename="", UInt_t nThreads=0u, const std::pair< Long64_t, Long64_t > &globalRange={0, std::numeric_limits< Long64_t >::max()})
 
static unsigned int GetTasksPerWorkerHint()
Retrieve the current value for the desired number of tasks per worker.
 
std::pair< Long64_t, Long64_t > fGlobalRange
 
A chain is a collection of files containing TTree objects.
 
TDirectory::TContext keeps track and restore the current directory.
 
A List of entry numbers in a TTree or TChain.
 
virtual Long64_t GetN() const
 
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
 
Book space in a file, create I/O buffers, to fill them, (un)compress them.
 
@ kCanDelete
if object in a list can be deleted
 
A simple, robust and fast interface to read values from ROOT columnar datasets such as TTree,...
 
A TTree represents a columnar dataset.
 
Different standalone functions to work with trees and tuples, not reqiuired to be a member of any cla...
 
std::unique_ptr< TChain > MakeChainForMT(const std::string &name="", const std::string &title="")
Create a TChain object with options that avoid common causes of thread contention.
 
std::vector< std::unique_ptr< TChain > > MakeFriends(const ROOT::TreeUtils::RFriendInfo &finfo)
Create friends from the main TTree.
 
void ClearMustCleanupBits(TObjArray &arr)
Reset the kMustCleanup bit of a TObjArray of TBranch objects (e.g.
 
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
 
void EnableThreadSafety()
Enable support for multi-threading within the ROOT code in particular, enables the global mutex to ma...
 
Information about friend trees of a certain TTree or TChain object.
 
std::vector< std::pair< std::string, std::string > > fFriendNames
Pairs of names and aliases of each friend tree/chain.