CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
edm::RootTree Class Reference

#include <RootTree.h>

Public Types

typedef roottree::BranchMap BranchMap
 
typedef roottree::EntryNumber EntryNumber
 

Public Member Functions

void addBranch (BranchKey const &key, BranchDescription const &prod, std::string const &oldBranchName)
 
TBranch * branchEntryInfoBranch () const
 
BranchMap const & branches () const
 
std::vector< std::string > const & branchNames () const
 
BranchType branchType () const
 
TTreeCache * checkTriggerCache (TBranch *branch, EntryNumber entryNumber) const
 
TTreeCache * checkTriggerCacheImpl (TBranch *branch, EntryNumber entryNumber) const
 
void close ()
 
bool current () const
 
bool current (EntryNumber entry) const
 
void dropBranch (std::string const &oldBranchName)
 
EntryNumber const & entries () const
 
EntryNumber const & entryNumber () const
 
EntryNumber const & entryNumberForIndex (unsigned int index) const
 
template<typename T >
void fillAux (T *&pAux)
 
template<typename T >
void fillBranchEntry (TBranch *branch, T *&pbuf)
 
template<typename T >
void fillBranchEntry (TBranch *branch, EntryNumber entryNumber, T *&pbuf)
 
template<typename T >
void fillBranchEntryMeta (TBranch *branch, T *&pbuf)
 
template<typename T >
void fillBranchEntryMeta (TBranch *branch, EntryNumber entryNumber, T *&pbuf)
 
void getEntry (TBranch *branch, EntryNumber entry) const
 
void insertEntryForIndex (unsigned int index)
 
bool isValid () const
 
TTree const * metaTree () const
 
bool next ()
 
RootTreeoperator= (RootTree const &)=delete
 
bool previous ()
 
DelayedReaderresetAndGetRootDelayedReader () const
 
void resetTraining ()
 
void rewind ()
 
DelayedReaderrootDelayedReader () const
 
 RootTree (std::shared_ptr< InputFile > filePtr, BranchType const &branchType, unsigned int nIndexes, unsigned int maxVirtualSize, unsigned int cacheSize, unsigned int learningEntries, bool enablePrefetching, InputType inputType)
 
 RootTree (RootTree const &)=delete
 
TTreeCache * selectCache (TBranch *branch, EntryNumber entryNumber) const
 
void setEntryNumber (EntryNumber theEntryNumber)
 
void setPresence (BranchDescription &prod, std::string const &oldBranchName)
 
void setSignals (signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *preEventReadSource, signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *postEventReadSource)
 
bool skipEntries (unsigned int &offset)
 
void trainCache (char const *branchNames)
 
TTree const * tree () const
 
TTree * tree ()
 
 ~RootTree ()
 

Private Member Functions

void setCacheSize (unsigned int cacheSize)
 
void setTreeMaxVirtualSize (int treeMaxVirtualSize)
 
void startTraining ()
 
void stopTraining ()
 

Private Attributes

TBranch * auxBranch_
 
TBranch * branchEntryInfoBranch_
 
std::shared_ptr< BranchMapbranches_
 
std::vector< std::string > branchNames_
 
BranchType branchType_
 
unsigned int cacheSize_
 
bool enablePrefetching_
 
bool enableTriggerCache_
 
EntryNumber entries_
 
EntryNumber entryNumber_
 
std::unique_ptr< std::vector< EntryNumber > > entryNumberForIndex_
 
std::shared_ptr< InputFilefilePtr_
 
TTree * infoTree_
 
unsigned int learningEntries_
 
TTree * metaTree_
 
bool performedSwitchOver_
 
std::shared_ptr< TTreeCache > rawTreeCache_
 
EntryNumber rawTriggerSwitchOverEntry_
 
std::shared_ptr< TTreeCache > rawTriggerTreeCache_
 
std::unique_ptr< RootDelayedReaderrootDelayedReader_
 
TBranch * statusBranch_
 
EntryNumber switchOverEntry_
 
std::unordered_set< TBranch * > trainedSet_
 
bool trainNow_
 
TTree * tree_
 
unsigned long treeAutoFlush_
 
std::shared_ptr< TTreeCache > treeCache_
 
std::unordered_set< TBranch * > triggerSet_
 
std::shared_ptr< TTreeCache > triggerTreeCache_
 

Detailed Description

Definition at line 69 of file RootTree.h.

Member Typedef Documentation

Definition at line 71 of file RootTree.h.

Definition at line 72 of file RootTree.h.

Constructor & Destructor Documentation

edm::RootTree::RootTree ( std::shared_ptr< InputFile filePtr,
BranchType const &  branchType,
unsigned int  nIndexes,
unsigned int  maxVirtualSize,
unsigned int  cacheSize,
unsigned int  learningEntries,
bool  enablePrefetching,
InputType  inputType 
)

Definition at line 28 of file RootTree.cc.

References edm::BranchTypeToProductTreeName(), cacheSize_, Exception, learningEntries_, setCacheSize(), setTreeMaxVirtualSize(), trainedSet_, tree_, treeAutoFlush_, and triggerSet_.

35  :
36  filePtr_(filePtr),
37  tree_(dynamic_cast<TTree*>(filePtr_.get() != nullptr ? filePtr_->Get(BranchTypeToProductTreeName(branchType).c_str()) : nullptr)),
38  metaTree_(dynamic_cast<TTree*>(filePtr_.get() != nullptr ? filePtr_->Get(BranchTypeToMetaDataTreeName(branchType).c_str()) : nullptr)),
40  auxBranch_(tree_ ? getAuxiliaryBranch(tree_, branchType_) : nullptr),
41  treeCache_(),
42  rawTreeCache_(),
45  trainedSet_(),
46  triggerSet_(),
47  entries_(tree_ ? tree_->GetEntries() : 0),
48  entryNumber_(-1),
49  entryNumberForIndex_(new std::vector<EntryNumber>(nIndexes, IndexIntoFile::invalidEntry)),
50  branchNames_(),
51  branches_(new BranchMap),
52  trainNow_(false),
53  switchOverEntry_(-1),
55  learningEntries_(learningEntries),
56  cacheSize_(cacheSize),
57  treeAutoFlush_(0),
58  enablePrefetching_(enablePrefetching),
59  //enableTriggerCache_(branchType_ == InEvent),
60  enableTriggerCache_(false), // Disable, for now. Using the trigger cache in the multithreaded environment causes the assert on line 331 to fire occasionally.
61  rootDelayedReader_(new RootDelayedReader(*this, filePtr, inputType)),
62  branchEntryInfoBranch_(metaTree_ ? getProductProvenanceBranch(metaTree_, branchType_) : (tree_ ? getProductProvenanceBranch(tree_, branchType_) : 0)),
63  infoTree_(dynamic_cast<TTree*>(filePtr_.get() != nullptr ? filePtr->Get(BranchTypeToInfoTreeName(branchType).c_str()) : nullptr)) // backward compatibility
64  {
65  if(not tree_) {
66  throw cms::Exception("WrongFileFormat")<< "The ROOT file does not contain a TTree named "<<BranchTypeToProductTreeName(branchType)<<"\n This is either not an edm ROOT file or is one that has been corrupted.";
67  }
68  // On merged files in older releases of ROOT, the autoFlush setting is always negative; we must guess.
69  // TODO: On newer merged files, we should be able to get this from the cluster iterator.
70  long treeAutoFlush = (tree_ ? tree_->GetAutoFlush() : 0);
71  if (treeAutoFlush < 0) {
72  // The "+1" is here to avoid divide-by-zero in degenerate cases.
73  Long64_t averageEventSizeBytes = tree_->GetZipBytes() / (tree_->GetEntries()+1) + 1;
74  treeAutoFlush_ = cacheSize_/averageEventSizeBytes+1;
75  } else {
76  treeAutoFlush_ = treeAutoFlush;
77  }
80  }
81  setTreeMaxVirtualSize(maxVirtualSize);
82  setCacheSize(cacheSize);
83  if (tree_) {
84  Int_t branchCount = tree_->GetListOfBranches()->GetEntriesFast();
85  trainedSet_.reserve(branchCount);
86  triggerSet_.reserve(branchCount);
87  }
88  }
EntryNumber entryNumber_
Definition: RootTree.h:192
std::string const & BranchTypeToMetaDataTreeName(BranchType const &branchType)
Definition: BranchType.cc:107
unsigned int learningEntries_
Definition: RootTree.h:200
std::shared_ptr< TTreeCache > rawTriggerTreeCache_
Definition: RootTree.h:188
std::vector< std::string > branchNames_
Definition: RootTree.h:194
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
TTree * tree_
Definition: RootTree.h:178
bool trainNow_
Definition: RootTree.h:196
std::shared_ptr< BranchMap > branches_
Definition: RootTree.h:195
EntryNumber rawTriggerSwitchOverEntry_
Definition: RootTree.h:198
roottree::BranchMap BranchMap
Definition: RootTree.h:71
TTree * metaTree_
Definition: RootTree.h:179
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
TBranch * branchEntryInfoBranch_
Definition: RootTree.h:209
EntryNumber entries_
Definition: RootTree.h:191
bool enablePrefetching_
Definition: RootTree.h:205
std::unique_ptr< RootDelayedReader > rootDelayedReader_
Definition: RootTree.h:207
void setTreeMaxVirtualSize(int treeMaxVirtualSize)
Definition: RootTree.cc:192
BranchType branchType() const
Definition: RootTree.h:163
unsigned long treeAutoFlush_
Definition: RootTree.h:202
std::string const & BranchTypeToProductTreeName(BranchType const &branchType)
Definition: BranchType.cc:103
TBranch * auxBranch_
Definition: RootTree.h:181
std::string const & BranchTypeToInfoTreeName(BranchType const &branchType)
Definition: BranchType.cc:111
bool enableTriggerCache_
Definition: RootTree.h:206
static EntryNumber_t const invalidEntry
std::shared_ptr< TTreeCache > rawTreeCache_
Definition: RootTree.h:186
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
void setCacheSize(unsigned int cacheSize)
Definition: RootTree.cc:182
std::unique_ptr< std::vector< EntryNumber > > entryNumberForIndex_
Definition: RootTree.h:193
unsigned int cacheSize_
Definition: RootTree.h:201
std::unordered_set< TBranch * > triggerSet_
Definition: RootTree.h:190
EntryNumber switchOverEntry_
Definition: RootTree.h:197
std::shared_ptr< TTreeCache > triggerTreeCache_
Definition: RootTree.h:187
BranchType branchType_
Definition: RootTree.h:180
TTree * infoTree_
Definition: RootTree.h:211
edm::RootTree::~RootTree ( )

Definition at line 90 of file RootTree.cc.

90  {
91  }
edm::RootTree::RootTree ( RootTree const &  )
delete

Member Function Documentation

void edm::RootTree::addBranch ( BranchKey const &  key,
BranchDescription const &  prod,
std::string const &  oldBranchName 
)

Definition at line 137 of file RootTree.cc.

References branches_, edm::BranchDescription::branchName(), branchNames_, info(), isValid(), metaTree_, edm::BranchDescription::present(), edm::roottree::BranchInfo::productBranch_, edm::roottree::BranchInfo::provenanceBranch_, and tree_.

139  {
140  assert(isValid());
141  //use the translated branch name
142  TBranch* branch = tree_->GetBranch(oldBranchName.c_str());
143  roottree::BranchInfo info = roottree::BranchInfo(BranchDescription(prod));
144  info.productBranch_ = nullptr;
145  if (prod.present()) {
146  info.productBranch_ = branch;
147  //we want the new branch name for the JobReport
148  branchNames_.push_back(prod.branchName());
149  }
150  TTree* provTree = (metaTree_ != nullptr ? metaTree_ : tree_);
151  info.provenanceBranch_ = provTree->GetBranch(oldBranchName.c_str());
152  branches_->insert(std::make_pair(key, info));
153  }
static const TGPicture * info(bool iBackgroundIsBlack)
std::vector< std::string > branchNames_
Definition: RootTree.h:194
TTree * tree_
Definition: RootTree.h:178
std::shared_ptr< BranchMap > branches_
Definition: RootTree.h:195
TTree * metaTree_
Definition: RootTree.h:179
bool isValid() const
Definition: RootTree.cc:106
TBranch* edm::RootTree::branchEntryInfoBranch ( ) const
inline

Definition at line 155 of file RootTree.h.

References edm::roottree::trainCache().

Referenced by edm::FullProvenanceReader::readProvenance().

155 {return branchEntryInfoBranch_;}
TBranch * branchEntryInfoBranch_
Definition: RootTree.h:209
roottree::BranchMap const & edm::RootTree::branches ( ) const

Definition at line 179 of file RootTree.cc.

References branches_.

Referenced by edm::RootDelayedReader::branches(), checkTriggerCacheImpl(), and trainCache().

179 {return *branches_;}
std::shared_ptr< BranchMap > branches_
Definition: RootTree.h:195
std::vector<std::string> const& edm::RootTree::branchNames ( ) const
inline

Definition at line 107 of file RootTree.h.

Referenced by edm::RootFile::reportOpened().

107 {return branchNames_;}
std::vector< std::string > branchNames_
Definition: RootTree.h:194
BranchType edm::RootTree::branchType ( ) const
inline

Definition at line 163 of file RootTree.h.

Referenced by edm::RootDelayedReader::getProduct_().

163 {return branchType_;}
BranchType branchType_
Definition: RootTree.h:180
TTreeCache * edm::RootTree::checkTriggerCache ( TBranch *  branch,
EntryNumber  entryNumber 
) const
inline

Definition at line 229 of file RootTree.cc.

References checkTriggerCacheImpl(), enableTriggerCache_, NULL, trainedSet_, and treeCache_.

Referenced by selectCache().

229  {
230  if (!treeCache_->IsAsyncReading() && enableTriggerCache_ && (trainedSet_.find(branch) == trainedSet_.end())) {
231  return checkTriggerCacheImpl(branch, entryNumber);
232  } else {
233  return NULL;
234  }
235  }
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
#define NULL
Definition: scimark2.h:8
TTreeCache * checkTriggerCacheImpl(TBranch *branch, EntryNumber entryNumber) const
Definition: RootTree.cc:240
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
bool enableTriggerCache_
Definition: RootTree.h:206
TTreeCache * edm::RootTree::checkTriggerCacheImpl ( TBranch *  branch,
EntryNumber  entryNumber 
) const

Definition at line 240 of file RootTree.cc.

References branches(), entryNumber_, filePtr_, mps_fire::i, NULL, performedSwitchOver_, rawTriggerSwitchOverEntry_, rawTriggerTreeCache_, trainedSet_, tree_, triggerSet_, and triggerTreeCache_.

Referenced by checkTriggerCache().

240  {
241  // This branch is not going to be in the cache.
242  // Assume this is a "trigger pattern".
243  // Always make sure the branch is added to the trigger set.
244  if (triggerSet_.find(branch) == triggerSet_.end()) {
245  triggerSet_.insert(branch);
246  if (triggerTreeCache_.get()) { triggerTreeCache_->AddBranch(branch, kTRUE); }
247  }
248 
249  if (rawTriggerSwitchOverEntry_ < 0) {
250  // The trigger has never fired before. Take everything not in the
251  // trainedSet and load it from disk
252 
253  // Calculate the end of the next cluster; triggers in the next cluster
254  // will use the triggerCache, not the rawTriggerCache.
255  TTree::TClusterIterator clusterIter = tree_->GetClusterIterator(entryNumber);
257  rawTriggerSwitchOverEntry_ = clusterIter();
258  }
259 
260  // ROOT will automatically expand the cache to fit one cluster; hence, we use
261  // 5 MB as the cache size below
262  tree_->SetCacheSize(static_cast<Long64_t>(5*1024*1024));
263  rawTriggerTreeCache_.reset(dynamic_cast<TTreeCache*>(filePtr_->GetCacheRead()));
264  if(rawTriggerTreeCache_) rawTriggerTreeCache_->SetEnablePrefetching(false);
265  TObjArray *branches = tree_->GetListOfBranches();
266  int branchCount = branches->GetEntriesFast();
267 
268  // Train the rawTriggerCache to have everything not in the regular cache.
269  rawTriggerTreeCache_->SetLearnEntries(0);
271  for (int i=0;i<branchCount;i++) {
272  TBranch *tmp_branch = (TBranch*)branches->UncheckedAt(i);
273  if (trainedSet_.find(tmp_branch) != trainedSet_.end()) {
274  continue;
275  }
276  rawTriggerTreeCache_->AddBranch(tmp_branch, kTRUE);
277  }
278  performedSwitchOver_ = false;
279  rawTriggerTreeCache_->StopLearningPhase();
280  filePtr_->SetCacheRead(0);
281 
282  return rawTriggerTreeCache_.get();
284  // The raw trigger has fired and it contents are valid.
285  return rawTriggerTreeCache_.get();
286  } else if (rawTriggerSwitchOverEntry_ > 0) {
287  // The raw trigger has fired, but we are out of the cache. Use the
288  // triggerCache instead.
289  if (!performedSwitchOver_) {
290  rawTriggerTreeCache_.reset();
291  performedSwitchOver_ = true;
292 
293  // Train the triggerCache
294  tree_->SetCacheSize(static_cast<Long64_t>(5*1024*1024));
295  triggerTreeCache_.reset(dynamic_cast<TTreeCache*>(filePtr_->GetCacheRead()));
296  triggerTreeCache_->SetEnablePrefetching(false);
297  triggerTreeCache_->SetLearnEntries(0);
298  triggerTreeCache_->SetEntryRange(entryNumber, tree_->GetEntries());
299  for(std::unordered_set<TBranch*>::const_iterator it = triggerSet_.begin(), itEnd = triggerSet_.end();
300  it != itEnd;
301  it++)
302  {
303  triggerTreeCache_->AddBranch(*it, kTRUE);
304  }
305  triggerTreeCache_->StopLearningPhase();
306  filePtr_->SetCacheRead(0);
307  }
308  return triggerTreeCache_.get();
310  // The raw trigger has fired and it contents are valid.
311  return rawTriggerTreeCache_.get();
312  } else if (rawTriggerSwitchOverEntry_ > 0) {
313  // The raw trigger has fired, but we are out of the cache. Use the
314  // triggerCache instead.
315  if (!performedSwitchOver_) {
316  rawTriggerTreeCache_.reset();
317  performedSwitchOver_ = true;
318 
319  // Train the triggerCache
320  tree_->SetCacheSize(static_cast<Long64_t>(5*1024*1024));
321  triggerTreeCache_.reset(dynamic_cast<TTreeCache*>(filePtr_->GetCacheRead()));
322  triggerTreeCache_->SetEnablePrefetching(false);
323  triggerTreeCache_->SetLearnEntries(0);
324  triggerTreeCache_->SetEntryRange(entryNumber, tree_->GetEntries());
325  for(std::unordered_set<TBranch*>::const_iterator it = triggerSet_.begin(), itEnd = triggerSet_.end();
326  it != itEnd;
327  it++)
328  {
329  triggerTreeCache_->AddBranch(*it, kTRUE);
330  }
331  triggerTreeCache_->StopLearningPhase();
332  filePtr_->SetCacheRead(0);
333  }
334  return triggerTreeCache_.get();
335  }
336 
337  // By construction, this case should be impossible.
338  assert (false);
339  return NULL;
340  }
EntryNumber entryNumber_
Definition: RootTree.h:192
std::shared_ptr< TTreeCache > rawTriggerTreeCache_
Definition: RootTree.h:188
TTree * tree_
Definition: RootTree.h:178
EntryNumber rawTriggerSwitchOverEntry_
Definition: RootTree.h:198
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
#define NULL
Definition: scimark2.h:8
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
bool performedSwitchOver_
Definition: RootTree.h:199
std::unordered_set< TBranch * > triggerSet_
Definition: RootTree.h:190
BranchMap const & branches() const
Definition: RootTree.cc:179
std::shared_ptr< TTreeCache > triggerTreeCache_
Definition: RootTree.h:187
void edm::RootTree::close ( void  )

Definition at line 434 of file RootTree.cc.

References auxBranch_, branchEntryInfoBranch_, filePtr_, infoTree_, metaTree_, rawTreeCache_, rawTriggerTreeCache_, tree_, treeCache_, and triggerTreeCache_.

Referenced by lumiQTWidget.ApplicationWindow::fileQuit(), esMonitoring.AsyncLineReaderMixin::handle_close(), esMonitoring.FDJsonServer::handle_close(), Vispa.Gui.BoxContentDialog.BoxContentDialog::keyPressEvent(), and Vispa.Gui.FindDialog.FindDialog::keyPressEvent().

434  {
435  // The TFile is about to be closed, and destructed.
436  // Just to play it safe, zero all pointers to quantities that are owned by the TFile.
438  tree_ = metaTree_ = infoTree_ = nullptr;
439  // We own the treeCache_.
440  // We make sure the treeCache_ is detached from the file,
441  // so that ROOT does not also delete it.
442  filePtr_->SetCacheRead(0);
443  // We *must* delete the TTreeCache here because the TFilePrefetch object
444  // references the TFile. If TFile is closed, before the TTreeCache is
445  // deleted, the TFilePrefetch may continue to do TFile operations, causing
446  // deadlocks or exceptions.
447  treeCache_.reset();
448  rawTreeCache_.reset();
449  triggerTreeCache_.reset();
450  rawTriggerTreeCache_.reset();
451  // We give up our shared ownership of the TFile itself.
452  filePtr_.reset();
453  }
std::shared_ptr< TTreeCache > rawTriggerTreeCache_
Definition: RootTree.h:188
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
TTree * tree_
Definition: RootTree.h:178
TTree * metaTree_
Definition: RootTree.h:179
TBranch * branchEntryInfoBranch_
Definition: RootTree.h:209
TBranch * auxBranch_
Definition: RootTree.h:181
std::shared_ptr< TTreeCache > rawTreeCache_
Definition: RootTree.h:186
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
std::shared_ptr< TTreeCache > triggerTreeCache_
Definition: RootTree.h:187
TTree * infoTree_
Definition: RootTree.h:211
bool edm::RootTree::current ( ) const
inline

Definition at line 97 of file RootTree.h.

Referenced by edm::RootFile::fillEventAuxiliary(), edm::RootFile::readCurrentEvent(), edm::RootFile::readLuminosityBlockAuxiliary_(), and edm::RootFile::readRunAuxiliary_().

97 {return entryNumber_ < entries_ && entryNumber_ >= 0;}
bool edm::RootTree::current ( EntryNumber  entry) const
inline

Definition at line 98 of file RootTree.h.

98 {return entry < entries_ && entry >= 0;}
void edm::RootTree::dropBranch ( std::string const &  oldBranchName)

Definition at line 156 of file RootTree.cc.

References beamvalidation::br, entries(), mps_fire::i, and tree_.

156  {
157  //use the translated branch name
158  TBranch* branch = tree_->GetBranch(oldBranchName.c_str());
159  if (branch != nullptr) {
160  TObjArray* leaves = tree_->GetListOfLeaves();
161  int entries = leaves->GetEntries();
162  for (int i = 0; i < entries; ++i) {
163  TLeaf* leaf = (TLeaf*)(*leaves)[i];
164  if (leaf == nullptr) continue;
165  TBranch* br = leaf->GetBranch();
166  if (br == nullptr) continue;
167  if (br->GetMother() == branch) {
168  leaves->Remove(leaf);
169  }
170  }
171  leaves->Compress();
172  tree_->GetListOfBranches()->Remove(branch);
173  tree_->GetListOfBranches()->Compress();
174  delete branch;
175  }
176  }
TTree * tree_
Definition: RootTree.h:178
EntryNumber const & entries() const
Definition: RootTree.h:104
EntryNumber const& edm::RootTree::entries ( ) const
inline
EntryNumber const& edm::RootTree::entryNumber ( ) const
inline
RootTree::EntryNumber const & edm::RootTree::entryNumberForIndex ( unsigned int  index) const

Definition at line 94 of file RootTree.cc.

References entryNumberForIndex_, diffTreeTool::index, and findQualityFiles::size.

Referenced by edm::RootDelayedReader::getProduct_(), and edm::FullProvenanceReader::readProvenance().

94  {
95  assert(index < entryNumberForIndex_->size());
96  return (*entryNumberForIndex_)[index];
97  }
size
Write out results.
std::unique_ptr< std::vector< EntryNumber > > entryNumberForIndex_
Definition: RootTree.h:193
template<typename T >
void edm::RootTree::fillAux ( T *&  pAux)
inline

Definition at line 111 of file RootTree.h.

References edm::roottree::getEntry().

Referenced by edm::RootFile::fillLumiAuxiliary(), edm::RootFile::fillRunAuxiliary(), and edm::RootFile::fillThisEventAuxiliary().

111  {
112  auxBranch_->SetAddress(&pAux);
114  }
EntryNumber entryNumber_
Definition: RootTree.h:192
TBranch * auxBranch_
Definition: RootTree.h:181
void getEntry(TBranch *branch, EntryNumber entry) const
Definition: RootTree.cc:362
template<typename T >
void edm::RootTree::fillBranchEntry ( TBranch *  branch,
T *&  pbuf 
)
inline

Definition at line 127 of file RootTree.h.

References edm::roottree::getEntry().

Referenced by edm::RootFile::fillEventHistory().

127  {
128  branch->SetAddress(&pbuf);
129  getEntry(branch, entryNumber_);
130  }
EntryNumber entryNumber_
Definition: RootTree.h:192
void getEntry(TBranch *branch, EntryNumber entry) const
Definition: RootTree.cc:362
template<typename T >
void edm::RootTree::fillBranchEntry ( TBranch *  branch,
EntryNumber  entryNumber,
T *&  pbuf 
)
inline

Definition at line 144 of file RootTree.h.

References edm::roottree::getEntry().

144  {
145  branch->SetAddress(&pbuf);
146  getEntry(branch, entryNumber);
147  }
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
void getEntry(TBranch *branch, EntryNumber entry) const
Definition: RootTree.cc:362
template<typename T >
void edm::RootTree::fillBranchEntryMeta ( TBranch *  branch,
T *&  pbuf 
)
inline

Definition at line 116 of file RootTree.h.

References edm::roottree::getEntry().

Referenced by edm::FullProvenanceReader::readProvenance().

116  {
117  if (metaTree_ != nullptr) {
118  // Metadata was in separate tree. Not cached.
119  branch->SetAddress(&pbuf);
121  } else {
122  fillBranchEntry<T>(branch, pbuf);
123  }
124  }
EntryNumber entryNumber_
Definition: RootTree.h:192
Int_t getEntry(TBranch *branch, EntryNumber entryNumber)
Definition: RootTree.cc:495
TTree * metaTree_
Definition: RootTree.h:179
template<typename T >
void edm::RootTree::fillBranchEntryMeta ( TBranch *  branch,
EntryNumber  entryNumber,
T *&  pbuf 
)
inline

Definition at line 133 of file RootTree.h.

References edm::roottree::getEntry().

133  {
134  if (metaTree_ != nullptr) {
135  // Metadata was in separate tree. Not cached.
136  branch->SetAddress(&pbuf);
138  } else {
139  fillBranchEntry<T>(branch, entryNumber, pbuf);
140  }
141  }
Int_t getEntry(TBranch *branch, EntryNumber entryNumber)
Definition: RootTree.cc:495
TTree * metaTree_
Definition: RootTree.h:179
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
void edm::RootTree::getEntry ( TBranch *  branch,
EntryNumber  entry 
) const

Definition at line 362 of file RootTree.cc.

References cms::Exception::addContext(), helperFunctions::cache(), MillePedeFileConverter_cfg::e, filePtr_, edm::errors::FileReadError, selectCache(), AlCaHLTBitMon_QueryRunRegistry::string, and lumiQTWidget::t.

Referenced by edm::RootDelayedReader::getProduct_().

362  {
363  try {
364  TTreeCache * cache = selectCache(branch, entryNumber);
365  filePtr_->SetCacheRead(cache);
366  branch->GetEntry(entryNumber);
367  filePtr_->SetCacheRead(0);
368  } catch(cms::Exception const& e) {
369  // We make sure the treeCache_ is detached from the file,
370  // so that ROOT does not also delete it.
371  filePtr_->SetCacheRead(0);
373  t.addContext(std::string("Reading branch ")+branch->GetName());
374  throw t;
375  }
376  }
TTreeCache * selectCache(TBranch *branch, EntryNumber entryNumber) const
Definition: RootTree.cc:343
def cache(function)
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
void edm::RootTree::insertEntryForIndex ( unsigned int  index)

Definition at line 100 of file RootTree.cc.

References entryNumber(), diffTreeTool::index, and findQualityFiles::size.

Referenced by edm::RootFile::readCurrentEvent(), edm::RootFile::readLuminosityBlock_(), and edm::RootFile::readRun_().

100  {
101  assert(index < entryNumberForIndex_->size());
102  (*entryNumberForIndex_)[index] = entryNumber();
103  }
size
Write out results.
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
bool edm::RootTree::isValid ( void  ) const

Definition at line 106 of file RootTree.cc.

References auxBranch_, branchEntryInfoBranch_, entries_, infoTree_, metaTree_, and tree_.

Referenced by ntupleDataFormat._Object::_checkIsValid(), addBranch(), edm::RootFile::fillIndexIntoFile(), edm::RootFile::readLuminosityBlock_(), edm::RootFile::readLuminosityBlockAuxiliary_(), edm::RootFile::readRun_(), edm::RootFile::readRunAuxiliary_(), core.AutoHandle.AutoHandle::ReallyLoad(), setPresence(), and edm::RootFile::validateFile().

106  {
107  if (metaTree_ == nullptr || metaTree_->GetNbranches() == 0) {
108  return tree_ != nullptr && auxBranch_ != nullptr;
109  }
110  if (tree_ != nullptr && auxBranch_ != nullptr && metaTree_ != nullptr) { // backward compatibility
111  if (branchEntryInfoBranch_ != nullptr || infoTree_ != nullptr) return true; // backward compatibility
112  return (entries_ == metaTree_->GetEntries() && tree_->GetNbranches() <= metaTree_->GetNbranches() + 1); // backward compatibility
113  } // backward compatibility
114  return false;
115  }
TTree * tree_
Definition: RootTree.h:178
TTree * metaTree_
Definition: RootTree.h:179
TBranch * branchEntryInfoBranch_
Definition: RootTree.h:209
EntryNumber entries_
Definition: RootTree.h:191
TBranch * auxBranch_
Definition: RootTree.h:181
TTree * infoTree_
Definition: RootTree.h:211
TTree const* edm::RootTree::metaTree ( ) const
inline

Definition at line 151 of file RootTree.h.

Referenced by edm::RootFile::createFileBlock().

151 {return metaTree_;}
TTree * metaTree_
Definition: RootTree.h:179
bool edm::RootTree::next ( void  )
inline

Definition at line 95 of file RootTree.h.

Referenced by edm::RootFile::fillIndexIntoFile(), and edm::RootFile::initializeDuplicateChecker().

95 {return ++entryNumber_ < entries_;}
EntryNumber entryNumber_
Definition: RootTree.h:192
EntryNumber entries_
Definition: RootTree.h:191
RootTree& edm::RootTree::operator= ( RootTree const &  )
delete
bool edm::RootTree::previous ( )
inline

Definition at line 96 of file RootTree.h.

96 {return --entryNumber_ >= 0;}
EntryNumber entryNumber_
Definition: RootTree.h:192
DelayedReader * edm::RootTree::resetAndGetRootDelayedReader ( ) const

Definition at line 118 of file RootTree.cc.

References rootDelayedReader_.

Referenced by edm::RootFile::readCurrentEvent(), edm::RootFile::readLuminosityBlock_(), and edm::RootFile::readRun_().

118  {
119  rootDelayedReader_->reset();
120  return rootDelayedReader_.get();
121  }
std::unique_ptr< RootDelayedReader > rootDelayedReader_
Definition: RootTree.h:207
void edm::RootTree::resetTraining ( )
inline

Definition at line 161 of file RootTree.h.

Referenced by edm::RootFile::RootFile().

161 {trainNow_ = true;}
bool trainNow_
Definition: RootTree.h:196
void edm::RootTree::rewind ( )
inline

Definition at line 99 of file RootTree.h.

References PFRecoTauDiscriminationByIsolation_cfi::offset.

99 {entryNumber_ = 0;}
EntryNumber entryNumber_
Definition: RootTree.h:192
DelayedReader * edm::RootTree::rootDelayedReader ( ) const

Definition at line 124 of file RootTree.cc.

References rootDelayedReader_.

Referenced by edm::FullProvenanceReader::readProvenanceAsync().

124  {
125  return rootDelayedReader_.get();
126  }
std::unique_ptr< RootDelayedReader > rootDelayedReader_
Definition: RootTree.h:207
TTreeCache * edm::RootTree::selectCache ( TBranch *  branch,
EntryNumber  entryNumber 
) const
inline

Definition at line 343 of file RootTree.cc.

References checkTriggerCache(), NULL, rawTreeCache_, trainedSet_, and treeCache_.

Referenced by getEntry().

343  {
344  TTreeCache *triggerCache = NULL;
345  if (!treeCache_) {
346  return NULL;
347  } else if (treeCache_->IsLearning() && rawTreeCache_) {
348  treeCache_->AddBranch(branch, kTRUE);
349  trainedSet_.insert(branch);
350  return rawTreeCache_.get();
351  } else if ((triggerCache = checkTriggerCache(branch, entryNumber))) {
352  // A NULL return value from checkTriggerCache indicates the trigger cache case
353  // does not apply, and we should continue below.
354  return triggerCache;
355  } else {
356  // The "normal" TTreeCache case.
357  return treeCache_.get();
358  }
359  }
TTreeCache * checkTriggerCache(TBranch *branch, EntryNumber entryNumber) const
Definition: RootTree.cc:229
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
#define NULL
Definition: scimark2.h:8
EntryNumber const & entryNumber() const
Definition: RootTree.h:102
std::shared_ptr< TTreeCache > rawTreeCache_
Definition: RootTree.h:186
void edm::RootTree::setCacheSize ( unsigned int  cacheSize)
private

Definition at line 182 of file RootTree.cc.

References cacheSize_, enablePrefetching_, filePtr_, rawTreeCache_, tree_, and treeCache_.

Referenced by RootTree().

182  {
183  cacheSize_ = cacheSize;
184  tree_->SetCacheSize(static_cast<Long64_t>(cacheSize));
185  treeCache_.reset(dynamic_cast<TTreeCache*>(filePtr_->GetCacheRead()));
186  if(treeCache_) treeCache_->SetEnablePrefetching(enablePrefetching_);
187  filePtr_->SetCacheRead(0);
188  rawTreeCache_.reset();
189  }
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
TTree * tree_
Definition: RootTree.h:178
bool enablePrefetching_
Definition: RootTree.h:205
std::shared_ptr< TTreeCache > rawTreeCache_
Definition: RootTree.h:186
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
unsigned int cacheSize_
Definition: RootTree.h:201
void edm::RootTree::setEntryNumber ( EntryNumber  theEntryNumber)

Definition at line 197 of file RootTree.cc.

References entries_, entryNumber_, filePtr_, rawTriggerSwitchOverEntry_, startTraining(), stopTraining(), switchOverEntry_, trainedSet_, trainNow_, tree_, treeAutoFlush_, treeCache_, and triggerSet_.

Referenced by edm::RootFile::fillEventAuxiliary(), edm::RootFile::fillIndexIntoFile(), edm::RootFile::initializeDuplicateChecker(), edm::RootFile::readLuminosityBlock_(), edm::RootFile::readLuminosityBlockAuxiliary_(), edm::RootFile::readRunAuxiliary_(), edm::RootFile::setAtEventEntry(), edm::RootFile::setEntryAtEvent(), edm::RootFile::setEntryAtLumi(), and edm::RootFile::setEntryAtRun().

197  {
198  filePtr_->SetCacheRead(treeCache_.get());
199 
200  // Detect a backward skip. If the skip is sufficiently large, we roll the dice and reset the treeCache.
201  // This will cause some amount of over-reading: we pre-fetch all the events in some prior cluster.
202  // However, because reading one event in the cluster is supposed to be equivalent to reading all events in the cluster,
203  // we're not incurring additional over-reading - we're just doing it more efficiently.
204  // NOTE: Constructor guarantees treeAutoFlush_ is positive, even if TTree->GetAutoFlush() is negative.
205  if ((theEntryNumber < static_cast<EntryNumber>(entryNumber_-treeAutoFlush_)) &&
206  (treeCache_) && (!treeCache_->IsLearning()) && (entries_ > 0) && (switchOverEntry_ >= 0)) {
207  treeCache_->SetEntryRange(theEntryNumber, entries_);
208  treeCache_->FillBuffer();
209  }
210 
211  entryNumber_ = theEntryNumber;
212  tree_->LoadTree(entryNumber_);
213  filePtr_->SetCacheRead(0);
214  if(treeCache_ && trainNow_ && entryNumber_ >= 0) {
215  startTraining();
216  trainNow_ = false;
217  trainedSet_.clear();
218  triggerSet_.clear();
220  }
221  if (treeCache_ && treeCache_->IsLearning() && switchOverEntry_ >= 0 && entryNumber_ >= switchOverEntry_) {
222  stopTraining();
223  }
224  }
EntryNumber entryNumber_
Definition: RootTree.h:192
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
TTree * tree_
Definition: RootTree.h:178
bool trainNow_
Definition: RootTree.h:196
EntryNumber rawTriggerSwitchOverEntry_
Definition: RootTree.h:198
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
void stopTraining()
Definition: RootTree.cc:426
EntryNumber entries_
Definition: RootTree.h:191
unsigned long treeAutoFlush_
Definition: RootTree.h:202
void startTraining()
Definition: RootTree.cc:395
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
std::unordered_set< TBranch * > triggerSet_
Definition: RootTree.h:190
EntryNumber switchOverEntry_
Definition: RootTree.h:197
void edm::RootTree::setPresence ( BranchDescription prod,
std::string const &  oldBranchName 
)

Definition at line 129 of file RootTree.cc.

References isValid(), edm::BranchDescription::setDropped(), and tree_.

129  {
130  assert(isValid());
131  if(tree_->GetBranch(oldBranchName.c_str()) == nullptr){
132  prod.setDropped(true);
133  }
134  }
TTree * tree_
Definition: RootTree.h:178
bool isValid() const
Definition: RootTree.cc:106
void edm::RootTree::setSignals ( signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *  preEventReadSource,
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const *  postEventReadSource 
)

Definition at line 486 of file RootTree.cc.

References rootDelayedReader_.

Referenced by edm::RootFile::setSignals().

487  {
488  rootDelayedReader_->setSignals(preEventReadSource,
489  postEventReadSource);
490  }
std::unique_ptr< RootDelayedReader > rootDelayedReader_
Definition: RootTree.h:207
void edm::RootTree::setTreeMaxVirtualSize ( int  treeMaxVirtualSize)
private

Definition at line 192 of file RootTree.cc.

References tree_.

Referenced by RootTree().

192  {
193  if (treeMaxVirtualSize >= 0) tree_->SetMaxVirtualSize(static_cast<Long64_t>(treeMaxVirtualSize));
194  }
TTree * tree_
Definition: RootTree.h:178
bool edm::RootTree::skipEntries ( unsigned int &  offset)

Definition at line 379 of file RootTree.cc.

References entries_, entryNumber_, and PFRecoTauDiscriminationByIsolation_cfi::offset.

379  {
380  entryNumber_ += offset;
381  bool retval = (entryNumber_ < entries_);
382  if(retval) {
383  offset = 0;
384  } else {
385  // Not enough entries in the file to skip.
386  // The +1 is needed because entryNumber_ is -1 at the initialization of the tree, not 0.
387  long long overshoot = entryNumber_ + 1 - entries_;
389  offset = overshoot;
390  }
391  return retval;
392  }
EntryNumber entryNumber_
Definition: RootTree.h:192
EntryNumber entries_
Definition: RootTree.h:191
void edm::RootTree::startTraining ( )
private

Definition at line 395 of file RootTree.cc.

References edm::poolNames::branchListIndexesBranchName(), branchType_, edm::BranchTypeToAuxiliaryBranchName(), cacheSize_, entryNumber_, filePtr_, edm::InEvent, learningEntries_, rawTreeCache_, switchOverEntry_, trainedSet_, tree_, treeCache_, and triggerSet_.

Referenced by setEntryNumber().

395  {
396  if (cacheSize_ == 0) {
397  return;
398  }
399  assert(treeCache_);
400  assert(branchType_ == InEvent);
401  assert(!rawTreeCache_);
402  treeCache_->SetLearnEntries(learningEntries_);
403  tree_->SetCacheSize(static_cast<Long64_t>(cacheSize_));
404  rawTreeCache_.reset(dynamic_cast<TTreeCache *>(filePtr_->GetCacheRead()));
405  rawTreeCache_->SetEnablePrefetching(false);
406  filePtr_->SetCacheRead(0);
407  rawTreeCache_->SetLearnEntries(0);
409  rawTreeCache_->StartLearningPhase();
411  rawTreeCache_->AddBranch("*", kTRUE);
412  rawTreeCache_->StopLearningPhase();
413  treeCache_->StartLearningPhase();
414  treeCache_->SetEntryRange(switchOverEntry_, tree_->GetEntries());
415  // Make sure that 'branchListIndexes' branch exist in input file
416  if (filePtr_->Get(poolNames::branchListIndexesBranchName().c_str()) != nullptr) {
417  treeCache_->AddBranch(poolNames::branchListIndexesBranchName().c_str(), kTRUE);
418  }
419  treeCache_->AddBranch(BranchTypeToAuxiliaryBranchName(branchType_).c_str(), kTRUE);
420  trainedSet_.clear();
421  triggerSet_.clear();
422  assert(treeCache_->GetTree() == tree_);
423  }
EntryNumber entryNumber_
Definition: RootTree.h:192
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:115
unsigned int learningEntries_
Definition: RootTree.h:200
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
TTree * tree_
Definition: RootTree.h:178
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
std::shared_ptr< TTreeCache > rawTreeCache_
Definition: RootTree.h:186
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
unsigned int cacheSize_
Definition: RootTree.h:201
std::unordered_set< TBranch * > triggerSet_
Definition: RootTree.h:190
std::string const & branchListIndexesBranchName()
Definition: BranchType.cc:247
EntryNumber switchOverEntry_
Definition: RootTree.h:197
BranchType branchType_
Definition: RootTree.h:180
void edm::RootTree::stopTraining ( )
private

Definition at line 426 of file RootTree.cc.

References filePtr_, rawTreeCache_, and treeCache_.

Referenced by setEntryNumber().

426  {
427  filePtr_->SetCacheRead(treeCache_.get());
428  treeCache_->StopLearningPhase();
429  filePtr_->SetCacheRead(0);
430  rawTreeCache_.reset();
431  }
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
std::shared_ptr< TTreeCache > rawTreeCache_
Definition: RootTree.h:186
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
void edm::RootTree::trainCache ( char const *  branchNames)

Definition at line 456 of file RootTree.cc.

References branches(), cacheSize_, filePtr_, mps_fire::i, trainedSet_, tree_, and treeCache_.

Referenced by edm::RootFile::RootFile().

456  {
457  if (cacheSize_ == 0) {
458  return;
459  }
460  tree_->LoadTree(0);
461  assert(treeCache_);
462  filePtr_->SetCacheRead(treeCache_.get());
463  treeCache_->StartLearningPhase();
464  treeCache_->SetEntryRange(0, tree_->GetEntries());
465  treeCache_->AddBranch(branchNames, kTRUE);
466  treeCache_->StopLearningPhase();
467  assert(treeCache_->GetTree() == tree_);
468  // We own the treeCache_.
469  // We make sure the treeCache_ is detached from the file,
470  // so that ROOT does not also delete it.
471  filePtr_->SetCacheRead(0);
472 
473  // Must also manually add things to the trained set.
474  TObjArray *branches = tree_->GetListOfBranches();
475  int branchCount = branches->GetEntriesFast();
476  for (int i=0;i<branchCount;i++) {
477  TBranch *branch = (TBranch*)branches->UncheckedAt(i);
478  if ((branchNames[0] == '*') || (strcmp(branchNames, branch->GetName()) == 0)) {
479  trainedSet_.insert(branch);
480  }
481  }
482 
483  }
std::vector< std::string > const & branchNames() const
Definition: RootTree.h:107
std::shared_ptr< TTreeCache > treeCache_
Definition: RootTree.h:185
TTree * tree_
Definition: RootTree.h:178
std::unordered_set< TBranch * > trainedSet_
Definition: RootTree.h:189
std::shared_ptr< InputFile > filePtr_
Definition: RootTree.h:174
unsigned int cacheSize_
Definition: RootTree.h:201
BranchMap const & branches() const
Definition: RootTree.cc:179
TTree const* edm::RootTree::tree ( ) const
inline
TTree* edm::RootTree::tree ( )
inline

Member Data Documentation

TBranch* edm::RootTree::auxBranch_
private

Definition at line 181 of file RootTree.h.

Referenced by close(), and isValid().

TBranch* edm::RootTree::branchEntryInfoBranch_
private

Definition at line 209 of file RootTree.h.

Referenced by close(), and isValid().

std::shared_ptr<BranchMap> edm::RootTree::branches_
private

Definition at line 195 of file RootTree.h.

Referenced by addBranch(), and branches().

std::vector<std::string> edm::RootTree::branchNames_
private

Definition at line 194 of file RootTree.h.

Referenced by addBranch().

BranchType edm::RootTree::branchType_
private

Definition at line 180 of file RootTree.h.

Referenced by startTraining().

unsigned int edm::RootTree::cacheSize_
private

Definition at line 201 of file RootTree.h.

Referenced by RootTree(), setCacheSize(), startTraining(), and trainCache().

bool edm::RootTree::enablePrefetching_
private

Definition at line 205 of file RootTree.h.

Referenced by setCacheSize().

bool edm::RootTree::enableTriggerCache_
private

Definition at line 206 of file RootTree.h.

Referenced by checkTriggerCache().

EntryNumber edm::RootTree::entries_
private

Definition at line 191 of file RootTree.h.

Referenced by isValid(), setEntryNumber(), and skipEntries().

EntryNumber edm::RootTree::entryNumber_
private

Definition at line 192 of file RootTree.h.

Referenced by checkTriggerCacheImpl(), setEntryNumber(), skipEntries(), and startTraining().

std::unique_ptr<std::vector<EntryNumber> > edm::RootTree::entryNumberForIndex_
private

Definition at line 193 of file RootTree.h.

Referenced by entryNumberForIndex().

std::shared_ptr<InputFile> edm::RootTree::filePtr_
private
TTree* edm::RootTree::infoTree_
private

Definition at line 211 of file RootTree.h.

Referenced by close(), and isValid().

unsigned int edm::RootTree::learningEntries_
private

Definition at line 200 of file RootTree.h.

Referenced by RootTree(), and startTraining().

TTree* edm::RootTree::metaTree_
private

Definition at line 179 of file RootTree.h.

Referenced by addBranch(), close(), and isValid().

bool edm::RootTree::performedSwitchOver_
mutableprivate

Definition at line 199 of file RootTree.h.

Referenced by checkTriggerCacheImpl().

std::shared_ptr<TTreeCache> edm::RootTree::rawTreeCache_
private

Definition at line 186 of file RootTree.h.

Referenced by close(), selectCache(), setCacheSize(), startTraining(), and stopTraining().

EntryNumber edm::RootTree::rawTriggerSwitchOverEntry_
mutableprivate

Definition at line 198 of file RootTree.h.

Referenced by checkTriggerCacheImpl(), and setEntryNumber().

std::shared_ptr<TTreeCache> edm::RootTree::rawTriggerTreeCache_
mutableprivate

Definition at line 188 of file RootTree.h.

Referenced by checkTriggerCacheImpl(), and close().

std::unique_ptr<RootDelayedReader> edm::RootTree::rootDelayedReader_
private

Definition at line 207 of file RootTree.h.

Referenced by resetAndGetRootDelayedReader(), rootDelayedReader(), and setSignals().

TBranch* edm::RootTree::statusBranch_
private

Definition at line 212 of file RootTree.h.

EntryNumber edm::RootTree::switchOverEntry_
private

Definition at line 197 of file RootTree.h.

Referenced by setEntryNumber(), and startTraining().

std::unordered_set<TBranch*> edm::RootTree::trainedSet_
mutableprivate
bool edm::RootTree::trainNow_
private

Definition at line 196 of file RootTree.h.

Referenced by setEntryNumber().

TTree* edm::RootTree::tree_
private
unsigned long edm::RootTree::treeAutoFlush_
private

Definition at line 202 of file RootTree.h.

Referenced by RootTree(), and setEntryNumber().

std::shared_ptr<TTreeCache> edm::RootTree::treeCache_
private
std::unordered_set<TBranch*> edm::RootTree::triggerSet_
mutableprivate

Definition at line 190 of file RootTree.h.

Referenced by checkTriggerCacheImpl(), RootTree(), setEntryNumber(), and startTraining().

std::shared_ptr<TTreeCache> edm::RootTree::triggerTreeCache_
mutableprivate

Definition at line 187 of file RootTree.h.

Referenced by checkTriggerCacheImpl(), and close().