CMS 3D CMS Logo

TFWLiteSelectorBasic.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 
3 //
4 // Package: TFWLiteSelector
5 // Class : TFWLiteSelectorBasic
6 //
7 // Implementation:
8 // <Notes on implementation>
9 //
10 // Original Author: Chris Jones
11 // Created: Tue Jun 27 17:58:10 EDT 2006
12 //
13 
14 // user include files
16 
26 #include "DataFormats/Provenance/interface/EventEntryDescription.h" // kludge to allow compilation
50 
51 // system include files
52 #include "TBranch.h"
53 #include "TChain.h"
54 #include "TFile.h"
55 #include "TTree.h"
56 
57 #include <iostream>
58 #include <memory>
59 #include <string>
60 #include <vector>
61 #include <unordered_map>
62 
63 namespace edm {
64  namespace root {
66  public:
67  FWLiteDelayedReader() : entry_(-1), eventTree_(nullptr) {}
68  void setEntry(Long64_t iEntry) { entry_ = iEntry; }
69  void setTree(TTree* iTree) { eventTree_ = iTree; }
70  void set(std::shared_ptr<std::unordered_map<unsigned int, BranchDescription const*>> iMap) {
71  bidToDesc_ = std::move(iMap);
72  }
73 
74  private:
75  std::unique_ptr<WrapperBase> getTheProduct(BranchID const& k) const;
76  std::unique_ptr<WrapperBase> getProduct_(BranchID const& k, EDProductGetter const* ep) override;
77  virtual std::unique_ptr<EventEntryDescription> getProvenance_(BranchKey const&) const {
78  return std::unique_ptr<EventEntryDescription>();
79  }
80  void mergeReaders_(DelayedReader*) override {}
81  void reset_() override {}
82 
84  const override {
85  return nullptr;
86  }
88  const override {
89  return nullptr;
90  };
91 
92  Long64_t entry_;
93  TTree* eventTree_;
94  std::shared_ptr<std::unordered_map<unsigned int, BranchDescription const*>> bidToDesc_;
95  };
96 
97  std::unique_ptr<WrapperBase> FWLiteDelayedReader::getProduct_(BranchID const& k, EDProductGetter const* /*ep*/) {
98  return getTheProduct(k);
99  }
100 
101  std::unique_ptr<WrapperBase> FWLiteDelayedReader::getTheProduct(BranchID const& k) const {
102  auto itFind = bidToDesc_->find(k.id());
103  if (itFind == bidToDesc_->end()) {
104  throw Exception(errors::ProductNotFound) << "could not find entry for product " << k;
105  }
106  BranchDescription const& bDesc = *(itFind->second);
107 
108  TBranch* branch = eventTree_->GetBranch(bDesc.branchName().c_str());
109  if (nullptr == branch) {
110  throw cms::Exception("MissingBranch") << "could not find branch named '" << bDesc.branchName() << "'"
111  << "\n Perhaps the data being requested was not saved in this file?";
112  }
113  //find the class type
116  if (!bool(classType)) {
117  throw cms::Exception("MissingDictionary") << "could not find dictionary for type '" << fullName << "'"
118  << "\n Please make sure all the necessary libraries are available.";
119  }
120 
121  //create an instance of it
122  ObjectWithDict wrapperObj = classType.construct();
123  if (nullptr == wrapperObj.address()) {
124  throw cms::Exception("FailedToCreate") << "could not create an instance of '" << fullName << "'";
125  }
126  void* address = wrapperObj.address();
127  branch->SetAddress(&address);
128  ObjectWithDict edProdObj = wrapperObj.castObject(TypeWithDict::byName("edm::WrapperBase"));
129 
130  WrapperBase* prod = reinterpret_cast<WrapperBase*>(edProdObj.address());
131 
132  if (nullptr == prod) {
133  throw cms::Exception("FailedConversion") << "failed to convert a '" << fullName << "' to a edm::WrapperBase."
134  << "Please contact developers since something is very wrong.";
135  }
136  branch->GetEntry(entry_);
137  return std::unique_ptr<WrapperBase>(prod);
138  }
139 
142  : tree_(nullptr),
143  reg_(new ProductRegistry()),
144  bidToDesc_(std::make_shared<std::unordered_map<unsigned int, BranchDescription const*>>()),
147  // Note that thinned collections are not supported yet, the next
148  // line just makes it compile but when the Ref or Ptr tries to
149  // find the thinned collection it will report them not found.
150  // More work needed here if this is needed (we think no one
151  // is using TFWLiteSelector anymore and intend to implement
152  // this properly if it turns out we are wrong)
154  processNames_(),
156  prov_(),
160  }
161  void setTree(TTree* iTree) {
162  tree_ = iTree;
163  reader_->setTree(iTree);
164  }
165 
166  TTree const* tree() const { return get_underlying_safe(tree_); }
167  TTree*& tree() { return get_underlying_safe(tree_); }
168  std::shared_ptr<ProductRegistry const> reg() const { return get_underlying_safe(reg_); }
169  std::shared_ptr<ProductRegistry>& reg() { return get_underlying_safe(reg_); }
170  std::shared_ptr<BranchIDListHelper const> branchIDListHelper() const {
172  }
173  std::shared_ptr<BranchIDListHelper>& branchIDListHelper() { return get_underlying_safe(branchIDListHelper_); }
174  std::shared_ptr<ThinnedAssociationsHelper const> thinnedAssociationsHelper() const {
176  }
177  std::shared_ptr<ThinnedAssociationsHelper>& thinnedAssociationsHelper() {
179  }
180 
189  std::vector<EventEntryDescription> prov_;
190  std::vector<EventEntryDescription const*> pointerToBranchBuffer_;
192 
197  };
198  } // namespace root
199 } // namespace edm
200 
201 //
202 // constants, enums and typedefs
203 //
204 
205 //
206 // static data member definitions
207 //
208 
209 //
210 // constructors and destructor
211 //
212 TFWLiteSelectorBasic::TFWLiteSelectorBasic() : m_(new edm::root::TFWLiteSelectorMembers), everythingOK_(false) {}
213 
214 // TFWLiteSelectorBasic::TFWLiteSelectorBasic(TFWLiteSelectorBasic const& rhs)
215 // {
216 // // do actual copying here;
217 // }
218 
220 
221 //
222 // assignment operators
223 //
224 // TFWLiteSelectorBasic const& TFWLiteSelectorBasic::operator=(TFWLiteSelectorBasic const& rhs)
225 // {
226 // //An exception safe implementation is
227 // TFWLiteSelectorBasic temp(rhs);
228 // swap(rhs);
229 //
230 // return *this;
231 // }
232 
233 //
234 // member functions
235 //
236 void TFWLiteSelectorBasic::Begin(TTree* iTree) {
237  Init(iTree);
238  begin(fInput);
239 }
240 
242  Init(iTree);
243  preProcessing(fInput, *fOutput);
244 }
245 
246 void TFWLiteSelectorBasic::Init(TTree* iTree) {
247  if (iTree == nullptr)
248  return;
249  m_->setTree(iTree);
250 }
251 
253  //std::cout << "Notify start" << std::endl;
254  //we have switched to a new file
255  //get new file from Tree
256  if (nullptr == m_->tree_) {
257  std::cout << "No tree" << std::endl;
258  return kFALSE;
259  }
260  TFile* file = m_->tree_->GetCurrentFile();
261  if (nullptr == file) {
262  //When in Rome, do as the Romans
263  TChain* chain = dynamic_cast<TChain*>(m_->tree());
264  if (nullptr == chain) {
265  std::cout << "No file" << std::endl;
266  return kFALSE;
267  }
268  file = chain->GetFile();
269  if (nullptr == file) {
270  std::cout << "No file" << std::endl;
271  return kFALSE;
272  }
273  }
274  setupNewFile(*file);
275  return everythingOK_ ? kTRUE : kFALSE;
276 }
277 
278 namespace {
279  struct Operate {
280  Operate(edm::EDProductGetter const* iGetter) : old_(setRefCoreStreamer(iGetter)) {}
281 
282  ~Operate() { setRefCoreStreamer(old_); }
283 
284  private:
285  edm::EDProductGetter const* old_;
286  };
287 } // namespace
288 
289 Bool_t TFWLiteSelectorBasic::Process(Long64_t iEntry) {
290  //std::cout << "Process start" << std::endl;
291  if (everythingOK_) {
292  std::unique_ptr<edm::EventAuxiliary> eaux = std::make_unique<edm::EventAuxiliary>();
293  edm::EventAuxiliary& aux = *eaux;
294  edm::EventAuxiliary* pAux = eaux.get();
295  TBranch* branch = m_->tree_->GetBranch(edm::BranchTypeToAuxiliaryBranchName(edm::InEvent).c_str());
296 
297  branch->SetAddress(&pAux);
298  branch->GetEntry(iEntry);
299 
300  //NEW m_->processNames_ = aux.processHistory();
301 
302  // std::cout << "ProcessNames\n";
303  // for(auto const& name : m_->processNames_) {
304  // std::cout << " " << name << std::endl;
305  // }
306 
307  edm::EventSelectionIDVector eventSelectionIDs;
308  edm::EventSelectionIDVector* pEventSelectionIDVector = &eventSelectionIDs;
309  TBranch* eventSelectionsBranch = m_->tree_->GetBranch(edm::poolNames::eventSelectionsBranchName().c_str());
310  if (!eventSelectionsBranch) {
311  throw edm::Exception(edm::errors::FatalRootError) << "Failed to find event Selections branch in event tree";
312  }
313  eventSelectionsBranch->SetAddress(&pEventSelectionIDVector);
314  eventSelectionsBranch->GetEntry(iEntry);
315 
316  edm::BranchListIndexes branchListIndexes;
317  edm::BranchListIndexes* pBranchListIndexes = &branchListIndexes;
318  TBranch* branchListIndexBranch = m_->tree_->GetBranch(edm::poolNames::branchListIndexesBranchName().c_str());
319  if (!branchListIndexBranch) {
320  throw edm::Exception(edm::errors::FatalRootError) << "Failed to find branch list index branch in event tree";
321  }
322  branchListIndexBranch->SetAddress(&pBranchListIndexes);
323  branchListIndexBranch->GetEntry(iEntry);
324  m_->branchIDListHelper_->fixBranchListIndexes(branchListIndexes);
325 
326  try {
327  m_->reader_->setEntry(iEntry);
328  auto runAux = std::make_shared<edm::RunAuxiliary>(aux.run(), aux.time(), aux.time());
329  auto rp = std::make_shared<edm::RunPrincipal>(runAux, m_->reg(), m_->pc_, nullptr, 0);
330  auto lbp = std::make_shared<edm::LuminosityBlockPrincipal>(m_->reg(), m_->pc_, nullptr, 0);
331  lbp->setAux(edm::LuminosityBlockAuxiliary(rp->run(), 1, aux.time(), aux.time()));
332  auto history = m_->phreg_->getMapped(eaux->processHistoryID());
333  m_->ep_->fillEventPrincipal(*eaux,
334  history,
335  std::move(eventSelectionIDs),
336  std::move(branchListIndexes),
337  *(m_->provRetriever_),
338  m_->reader_.get());
339  lbp->setRunPrincipal(rp);
340  m_->ep_->setLuminosityBlockPrincipal(lbp.get());
341  m_->processNames_ = m_->ep_->processHistory();
342 
343  edm::Event event(*m_->ep_, m_->md_, nullptr);
344 
345  //Make the event principal accessible to edm::Ref's
346  Operate sentry(m_->ep_->prodGetter());
347  process(event);
348  } catch (std::exception const& iEx) {
349  std::cout << "While processing entry " << iEntry << " the following exception was caught \n"
350  << iEx.what() << std::endl;
351  } catch (...) {
352  std::cout << "While processing entry " << iEntry << " an unknown exception was caught" << std::endl;
353  }
354  }
355  return everythingOK_ ? kTRUE : kFALSE;
356 }
357 
359 
361 
363  //look up meta-data
364  //get product registry
365 
366  //std::vector<edm::EventProcessHistoryID> eventProcessHistoryIDs_;
367  TTree* metaDataTree = dynamic_cast<TTree*>(iFile.Get(edm::poolNames::metaDataTreeName().c_str()));
368  if (!metaDataTree) {
369  std::cout << "could not find TTree " << edm::poolNames::metaDataTreeName() << std::endl;
370  everythingOK_ = false;
371  return;
372  }
373  edm::FileFormatVersion* fftPtr = &(m_->fileFormatVersion_);
374  if (metaDataTree->FindBranch(edm::poolNames::fileFormatVersionBranchName().c_str()) != nullptr) {
375  metaDataTree->SetBranchAddress(edm::poolNames::fileFormatVersionBranchName().c_str(), &fftPtr);
376  }
377 
378  edm::ProductRegistry* pReg = &(*m_->reg_);
379  metaDataTree->SetBranchAddress(edm::poolNames::productDescriptionBranchName().c_str(), &(pReg));
380 
381  typedef std::map<edm::ParameterSetID, edm::ParameterSetBlob> PsetMap;
382  PsetMap psetMap;
383  PsetMap* psetMapPtr = &psetMap;
384  if (metaDataTree->FindBranch(edm::poolNames::parameterSetMapBranchName().c_str()) != nullptr) {
385  metaDataTree->SetBranchAddress(edm::poolNames::parameterSetMapBranchName().c_str(), &psetMapPtr);
386  } else {
387  TTree* psetTree = dynamic_cast<TTree*>(iFile.Get(edm::poolNames::parameterSetsTreeName().c_str()));
388  if (nullptr == psetTree) {
390  << "Could not find tree " << edm::poolNames::parameterSetsTreeName() << " in the input file.\n";
391  }
392  typedef std::pair<edm::ParameterSetID, edm::ParameterSetBlob> IdToBlobs;
393  IdToBlobs idToBlob;
394  IdToBlobs* pIdToBlob = &idToBlob;
395  psetTree->SetBranchAddress(edm::poolNames::idToParameterSetBlobsBranchName().c_str(), &pIdToBlob);
396  for (long long i = 0; i != psetTree->GetEntries(); ++i) {
397  psetTree->GetEntry(i);
398  psetMap.insert(idToBlob);
399  }
400  }
401 
403  edm::ProcessHistoryRegistry::vector_type* pHistVectorPtr = &pHistVector;
404  if (metaDataTree->FindBranch(edm::poolNames::processHistoryBranchName().c_str()) != nullptr) {
405  metaDataTree->SetBranchAddress(edm::poolNames::processHistoryBranchName().c_str(), &pHistVectorPtr);
406  }
407 
408  edm::ProcessConfigurationVector procConfigVector;
409  edm::ProcessConfigurationVector* procConfigVectorPtr = &procConfigVector;
410  if (metaDataTree->FindBranch(edm::poolNames::processConfigurationBranchName().c_str()) != nullptr) {
411  metaDataTree->SetBranchAddress(edm::poolNames::processConfigurationBranchName().c_str(), &procConfigVectorPtr);
412  }
413 
414  auto branchIDListsHelper = std::make_shared<edm::BranchIDListHelper>();
415  edm::BranchIDLists const* branchIDListsPtr = &branchIDListsHelper->branchIDLists();
416  if (metaDataTree->FindBranch(edm::poolNames::branchIDListBranchName().c_str()) != nullptr) {
417  metaDataTree->SetBranchAddress(edm::poolNames::branchIDListBranchName().c_str(), &branchIDListsPtr);
418  }
419 
420  metaDataTree->GetEntry(0);
421 
422  for (auto& prod : m_->reg_->productListUpdator()) {
423  prod.second.init();
424  setIsMergeable(prod.second);
425  }
426 
427  // Merge into the registries. For now, we do NOT merge the product registry.
429  for (auto const& entry : psetMap) {
430  edm::ParameterSet pset(entry.second.pset());
431  pset.setID(entry.first);
432  psetRegistry.insertMapped(pset);
433  }
434 
435  for (auto const& ph : pHistVector) {
436  m_->phreg_->registerProcessHistory(ph);
437  }
438 
439  m_->pointerToBranchBuffer_.erase(m_->pointerToBranchBuffer_.begin(), m_->pointerToBranchBuffer_.end());
440 
441  std::unique_ptr<edm::ProductRegistry> newReg = std::make_unique<edm::ProductRegistry>();
442 
443  edm::ProductRegistry::ProductList& prodList = m_->reg_->productListUpdator();
444  {
445  for (auto& item : prodList) {
446  edm::BranchDescription& prod = item.second;
447  //std::cout << "productname = " << item.second << " end " << std::endl;
448  std::string newFriendlyName = edm::friendlyname::friendlyName(prod.className());
449  if (newFriendlyName == prod.friendlyClassName()) {
450  newReg->copyProduct(prod);
451  } else {
452  if (m_->fileFormatVersion_.splitProductIDs()) {
454  << "Cannot change friendly class name algorithm without more development work\n"
455  << "to update BranchIDLists. Contact the framework group.\n";
456  }
458  newBD.updateFriendlyClassName();
459  newReg->copyProduct(newBD);
460  }
461  prod.init();
462  }
463 
464  m_->reg().reset(newReg.release());
465  }
466 
467  edm::ProductRegistry::ProductList& prodList2 = m_->reg_->productListUpdator();
468  std::vector<edm::EventEntryDescription> temp(prodList2.size(), edm::EventEntryDescription());
469  m_->prov_.swap(temp);
470  m_->pointerToBranchBuffer_.reserve(prodList2.size());
471 
472  for (auto& item : prodList2) {
473  edm::BranchDescription& prod = item.second;
474  if (prod.branchType() == edm::InEvent) {
475  prod.init();
476  //NEED to do this and check to see if branch exists
477  if (m_->tree_->GetBranch(prod.branchName().c_str()) == nullptr) {
478  prod.setDropped(true);
479  }
480 
481  //std::cout << "id " << it->first << " branch " << it->second << std::endl;
482  //m_->pointerToBranchBuffer_.push_back(&(*itB));
483  //void* tmp = &(m_->pointerToBranchBuffer_.back());
484  //edm::EventEntryDescription* tmp = &(*itB);
485  //CDJ need to fix provenance and be backwards compatible, for now just don't read the branch
486  //m_->metaTree_->SetBranchAddress(prod.branchName().c_str(), tmp);
487  }
488  }
489  m_->branchIDListHelper_->updateFromInput(*branchIDListsPtr);
490  m_->reg_->setFrozen();
491  m_->bidToDesc_->clear();
492  for (auto const& p : m_->reg_->productList()) {
493  m_->bidToDesc_->emplace(p.second.branchID().id(), &p.second);
494  }
495  m_->ep_ = std::make_shared<edm::EventPrincipal>(
496  m_->reg(), m_->branchIDListHelper(), m_->thinnedAssociationsHelper(), m_->pc_, nullptr);
497  everythingOK_ = true;
498 }
499 
500 //
501 // const member functions
502 //
503 
504 //
505 // static member functions
506 //
edm::poolNames::idToParameterSetBlobsBranchName
std::string const & idToParameterSetBlobsBranchName()
Definition: BranchType.cc:216
edm::pset::Registry::instance
static Registry * instance()
Definition: Registry.cc:12
TFWLiteSelectorBasic::Terminate
void Terminate() override
Definition: TFWLiteSelectorBasic.cc:360
ThinnedAssociationsHelper.h
TFWLiteSelectorBasic::terminate
virtual void terminate(TList &out)=0
FriendlyName.h
edm::TypeWithDict::byName
static TypeWithDict byName(std::string const &name)
Definition: TypeWithDict.cc:74
edm::poolNames::branchIDListBranchName
std::string const & branchIDListBranchName()
Definition: BranchType.cc:186
edm::root::TFWLiteSelectorMembers::fileFormatVersion_
FileFormatVersion fileFormatVersion_
Definition: TFWLiteSelectorBasic.cc:191
TFWLiteSelectorBasic::preProcessing
virtual void preProcessing(const TList *in, TList &out)=0
edm::EventEntryDescription
Definition: EventEntryDescription.h:28
mps_fire.i
i
Definition: mps_fire.py:355
edm::poolNames::fileFormatVersionBranchName
std::string const & fileFormatVersionBranchName()
Definition: BranchType.cc:192
TFWLiteSelectorBasic::postProcessing
virtual void postProcessing(TList &out)=0
funct::false
false
Definition: Factorize.h:34
edm::ObjectWithDict::address
void * address() const
Definition: ObjectWithDict.cc:27
edm::root::TFWLiteSelectorMembers::reader_
edm::propagate_const< std::shared_ptr< FWLiteDelayedReader > > reader_
Definition: TFWLiteSelectorBasic.cc:188
edm::setIsMergeable
void setIsMergeable(BranchDescription &)
Definition: setIsMergeable.cc:15
BranchIDListHelper.h
MicroEventContent_cff.branch
branch
Definition: MicroEventContent_cff.py:152
edm
HLT enums.
Definition: AlignableModifier.h:19
mps_splice.entry
entry
Definition: mps_splice.py:68
edm::root::FWLiteDelayedReader::getProvenance_
virtual std::unique_ptr< EventEntryDescription > getProvenance_(BranchKey const &) const
Definition: TFWLiteSelectorBasic.cc:77
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
ParameterSetBlob.h
TFWLiteSelectorBasic::Process
Bool_t Process(Long64_t) override
Definition: TFWLiteSelectorBasic.cc:289
edm::root::TFWLiteSelectorMembers::bidToDesc_
edm::propagate_const< std::shared_ptr< std::unordered_map< unsigned int, BranchDescription const * > > > bidToDesc_
Definition: TFWLiteSelectorBasic.cc:183
edm::ObjectWithDict
Definition: ObjectWithDict.h:17
gather_cfg.cout
cout
Definition: gather_cfg.py:144
edm::root::TFWLiteSelectorMembers::ep_
edm::propagate_const< std::shared_ptr< edm::EventPrincipal > > ep_
Definition: TFWLiteSelectorBasic.cc:195
edm::root::FWLiteDelayedReader::setEntry
void setEntry(Long64_t iEntry)
Definition: TFWLiteSelectorBasic.cc:68
edm::root::TFWLiteSelectorMembers::thinnedAssociationsHelper
std::shared_ptr< ThinnedAssociationsHelper const > thinnedAssociationsHelper() const
Definition: TFWLiteSelectorBasic.cc:174
edm::ObjectWithDict::castObject
ObjectWithDict castObject(TypeWithDict const &) const
Definition: ObjectWithDict.cc:51
edm::poolNames::parameterSetsTreeName
std::string const & parameterSetsTreeName()
Definition: BranchType.cc:214
edm::root::FWLiteDelayedReader::set
void set(std::shared_ptr< std::unordered_map< unsigned int, BranchDescription const * >> iMap)
Definition: TFWLiteSelectorBasic.cc:70
edm::BranchListIndexes
std::vector< BranchListIndex > BranchListIndexes
Definition: BranchListIndex.h:18
edm::root::TFWLiteSelectorMembers::thinnedAssociationsHelper
std::shared_ptr< ThinnedAssociationsHelper > & thinnedAssociationsHelper()
Definition: TFWLiteSelectorBasic.cc:177
DelayedReader.h
ProcessHistoryRegistry.h
TypeWithDict.h
ProductRegistry.h
TFWLiteSelectorBasic::SlaveBegin
void SlaveBegin(TTree *) override
Definition: TFWLiteSelectorBasic.cc:241
edm::root::TFWLiteSelectorMembers::provRetriever_
edm::propagate_const< std::shared_ptr< edm::ProductProvenanceRetriever > > provRetriever_
Definition: TFWLiteSelectorBasic.cc:193
watchdog.const
const
Definition: watchdog.py:83
groupFilesInBlocks.temp
list temp
Definition: groupFilesInBlocks.py:142
edm::poolNames::branchListIndexesBranchName
std::string const & branchListIndexesBranchName()
Definition: BranchType.cc:212
TFWLiteSelectorBasic::Notify
Bool_t Notify() override
Definition: TFWLiteSelectorBasic.cc:252
edm::BranchTypeToAuxiliaryBranchName
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:115
edm::ModuleDescription
Definition: ModuleDescription.h:21
TFWLiteSelectorBasic.h
edm::root::TFWLiteSelectorMembers::reg_
edm::propagate_const< std::shared_ptr< ProductRegistry > > reg_
Definition: TFWLiteSelectorBasic.cc:182
edm::root::FWLiteDelayedReader::bidToDesc_
std::shared_ptr< std::unordered_map< unsigned int, BranchDescription const * > > bidToDesc_
Definition: TFWLiteSelectorBasic.cc:94
edm::ProductRegistry
Definition: ProductRegistry.h:34
ModuleDescription.h
ObjectWithDict.h
edm::LuminosityBlockAuxiliary
Definition: LuminosityBlockAuxiliary.h:15
EDMException.h
edm::EDProductGetter
Definition: EDProductGetter.h:32
edm::errors::ProductNotFound
Definition: EDMException.h:33
edm::propagate_const::get
element_type const * get() const
Definition: propagate_const.h:64
edm::propagate_const< TTree * >
ProcessHistory.h
edm::root::TFWLiteSelectorMembers
Definition: TFWLiteSelectorBasic.cc:140
edm::StreamContext
Definition: StreamContext.h:31
ProcessConfiguration.h
edm::root::TFWLiteSelectorMembers::tree
TTree *& tree()
Definition: TFWLiteSelectorBasic.cc:167
RefCoreStreamer.h
edm::poolNames::processHistoryBranchName
std::string const & processHistoryBranchName()
Definition: BranchType.cc:180
edm::errors::FatalRootError
Definition: EDMException.h:51
EventPrincipal.h
edm::root::TFWLiteSelectorMembers::reg
std::shared_ptr< ProductRegistry > & reg()
Definition: TFWLiteSelectorBasic.cc:169
BranchListIndex.h
edm::BranchID
Definition: BranchID.h:14
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
TFWLiteSelectorBasic::process
virtual void process(const edm::Event &event)=0
edm::ProcessHistoryRegistry::vector_type
ProcessHistoryVector vector_type
Definition: ProcessHistoryRegistry.h:22
edm::InEvent
Definition: BranchType.h:11
edm::poolNames::parameterSetMapBranchName
std::string const & parameterSetMapBranchName()
Definition: BranchType.cc:171
dqmdumpme.k
k
Definition: dqmdumpme.py:60
edm::root::FWLiteDelayedReader::getProduct_
std::unique_ptr< WrapperBase > getProduct_(BranchID const &k, EDProductGetter const *ep) override
Definition: TFWLiteSelectorBasic.cc:97
TFWLiteSelectorBasic::everythingOK_
bool everythingOK_
Definition: TFWLiteSelectorBasic.h:99
edm::root::FWLiteDelayedReader::mergeReaders_
void mergeReaders_(DelayedReader *) override
Definition: TFWLiteSelectorBasic.cc:80
edm::BranchIDLists
std::vector< BranchIDList > BranchIDLists
Definition: BranchIDList.h:19
edm::EventAuxiliary
Definition: EventAuxiliary.h:14
TFWLiteSelectorBasic::m_
edm::propagate_const< std::shared_ptr< edm::root::TFWLiteSelectorMembers > > m_
Definition: TFWLiteSelectorBasic.h:98
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
newFWLiteAna.fullName
fullName
Definition: newFWLiteAna.py:122
edm::root::TFWLiteSelectorMembers::pc_
edm::ProcessConfiguration pc_
Definition: TFWLiteSelectorBasic.cc:194
edm::root::TFWLiteSelectorMembers::phreg_
edm::propagate_const< std::shared_ptr< ProcessHistoryRegistry > > phreg_
Definition: TFWLiteSelectorBasic.cc:184
edm::get_underlying_safe
std::shared_ptr< T > & get_underlying_safe(propagate_const< std::shared_ptr< T >> &iP)
Definition: get_underlying_safe.h:40
edm::poolNames::eventSelectionsBranchName
std::string const & eventSelectionsBranchName()
Definition: BranchType.cc:210
cppFunctionSkipper.exception
exception
Definition: cppFunctionSkipper.py:10
LuminosityBlockAuxiliary.h
edm::ThinnedAssociationsHelper
Definition: ThinnedAssociationsHelper.h:35
edm::ProductRegistry::ProductList
std::map< BranchKey, BranchDescription > ProductList
Definition: ProductRegistry.h:36
BranchDescription.h
edm::TypeWithDict
Definition: TypeWithDict.h:38
edm::ParameterSet
Definition: ParameterSet.h:36
edm::FileFormatVersion
Definition: FileFormatVersion.h:7
edm::root::TFWLiteSelectorMembers::thinnedAssociationsHelper_
edm::propagate_const< std::shared_ptr< ThinnedAssociationsHelper > > thinnedAssociationsHelper_
Definition: TFWLiteSelectorBasic.cc:186
Event.h
TFWLiteSelectorBasic::SlaveTerminate
void SlaveTerminate() override
Definition: TFWLiteSelectorBasic.cc:358
edm::poolNames::productDescriptionBranchName
std::string const & productDescriptionBranchName()
Definition: BranchType.cc:165
TFWLiteSelectorBasic::TFWLiteSelectorBasic
TFWLiteSelectorBasic()
Definition: TFWLiteSelectorBasic.cc:212
edm::root::TFWLiteSelectorMembers::branchIDListHelper_
edm::propagate_const< std::shared_ptr< BranchIDListHelper > > branchIDListHelper_
Definition: TFWLiteSelectorBasic.cc:185
edm::root::FWLiteDelayedReader::reset_
void reset_() override
Definition: TFWLiteSelectorBasic.cc:81
edm::friendlyname::friendlyName
std::string friendlyName(std::string const &iFullName)
Definition: FriendlyName.cc:233
FileFormatVersion.h
edm::root::TFWLiteSelectorMembers::setTree
void setTree(TTree *iTree)
Definition: TFWLiteSelectorBasic.cc:161
edm::root::TFWLiteSelectorMembers::tree_
edm::propagate_const< TTree * > tree_
Definition: TFWLiteSelectorBasic.cc:181
RunPrincipal.h
edm::root::TFWLiteSelectorMembers::TFWLiteSelectorMembers
TFWLiteSelectorMembers()
Definition: TFWLiteSelectorBasic.cc:141
TFWLiteSelectorBasic::~TFWLiteSelectorBasic
~TFWLiteSelectorBasic() override
Definition: TFWLiteSelectorBasic.cc:219
edm::root::TFWLiteSelectorMembers::pointerToBranchBuffer_
std::vector< EventEntryDescription const * > pointerToBranchBuffer_
Definition: TFWLiteSelectorBasic.cc:190
edm::BranchIDListHelper
Definition: BranchIDListHelper.h:15
edm::ProcessConfigurationVector
std::vector< ProcessConfiguration > ProcessConfigurationVector
Definition: ProcessConfiguration.h:62
printConversionInfo.aux
aux
Definition: printConversionInfo.py:19
createfilelist.int
int
Definition: createfilelist.py:10
FrontierConditions_GlobalTag_cff.file
file
Definition: FrontierConditions_GlobalTag_cff.py:13
BranchType.h
root
Definition: RooFitFunction.h:10
edm::WrapperBase
Definition: WrapperBase.h:23
TFWLiteSelectorBasic::setupNewFile
void setupNewFile(TFile &)
Definition: TFWLiteSelectorBasic.cc:362
edm::root::TFWLiteSelectorMembers::md_
edm::ModuleDescription md_
Definition: TFWLiteSelectorBasic.cc:196
edm::BranchDescription::branchName
std::string const & branchName() const
Definition: BranchDescription.h:119
B2GTnPMonitor_cfi.item
item
Definition: B2GTnPMonitor_cfi.py:147
edm::root::FWLiteDelayedReader
Definition: TFWLiteSelectorBasic.cc:65
edm::root::FWLiteDelayedReader::postEventReadFromSourceSignal
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const * postEventReadFromSourceSignal() const override
Definition: TFWLiteSelectorBasic.cc:87
BranchIDList.h
edm::root::TFWLiteSelectorMembers::reg
std::shared_ptr< ProductRegistry const > reg() const
Definition: TFWLiteSelectorBasic.cc:168
edm::wrappedClassName
std::string wrappedClassName(std::string const &iFullName)
Definition: WrappedClassName.cc:4
LuminosityBlockPrincipal.h
edm::pset::Registry::insertMapped
bool insertMapped(value_type const &v, bool forceUpdate=false)
Definition: Registry.cc:32
edm::BranchDescription::updateFriendlyClassName
void updateFriendlyClassName()
Definition: BranchDescription.cc:294
ProductProvenanceRetriever.h
TFWLiteSelectorBasic::Begin
void Begin(TTree *) override
Definition: TFWLiteSelectorBasic.cc:236
Registry.h
edm::root::FWLiteDelayedReader::FWLiteDelayedReader
FWLiteDelayedReader()
Definition: TFWLiteSelectorBasic.cc:67
edm::ProductProvenanceRetriever
Definition: ProductProvenanceRetriever.h:56
edm::root::FWLiteDelayedReader::eventTree_
TTree * eventTree_
Definition: TFWLiteSelectorBasic.cc:93
WrappedClassName.h
EventEntryDescription.h
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
edm::root::TFWLiteSelectorMembers::branchIDListHelper
std::shared_ptr< BranchIDListHelper const > branchIDListHelper() const
Definition: TFWLiteSelectorBasic.cc:170
edm::root::FWLiteDelayedReader::setTree
void setTree(TTree *iTree)
Definition: TFWLiteSelectorBasic.cc:69
edm::poolNames::metaDataTreeName
std::string const & metaDataTreeName()
Definition: BranchType.cc:162
setIsMergeable.h
EventAuxiliary.h
edm::root::FWLiteDelayedReader::preEventReadFromSourceSignal
signalslot::Signal< void(StreamContext const &, ModuleCallingContext const &)> const * preEventReadFromSourceSignal() const override
Definition: TFWLiteSelectorBasic.cc:83
Exception
Definition: hltDiff.cc:246
TFWLiteSelectorBasic::begin
virtual void begin(TList *&in)=0
RunAuxiliary.h
edm::root::TFWLiteSelectorMembers::branchIDListHelper
std::shared_ptr< BranchIDListHelper > & branchIDListHelper()
Definition: TFWLiteSelectorBasic.cc:173
edm::DelayedReader
Definition: DelayedReader.h:29
edm::setRefCoreStreamer
void setRefCoreStreamer(bool resetAll=false)
Definition: RefCoreStreamer.cc:83
edm::ProcessHistoryRegistry
Definition: ProcessHistoryRegistry.h:18
funct::void
TEMPL(T2) struct Divides void
Definition: Factorize.h:29
edm::root::TFWLiteSelectorMembers::prov_
std::vector< EventEntryDescription > prov_
Definition: TFWLiteSelectorBasic.cc:189
edm::BranchDescription
Definition: BranchDescription.h:32
edm::BranchDescription::className
std::string const & className() const
Definition: BranchDescription.h:79
edm::ProcessHistory
Definition: ProcessHistory.h:13
edm::root::TFWLiteSelectorMembers::tree
TTree const * tree() const
Definition: TFWLiteSelectorBasic.cc:166
event
Definition: event.py:1
edm::EventSelectionIDVector
std::vector< EventSelectionID > EventSelectionIDVector
Definition: EventSelectionID.h:16
edm::Event
Definition: Event.h:73
get_underlying_safe.h
edm::root::FWLiteDelayedReader::getTheProduct
std::unique_ptr< WrapperBase > getTheProduct(BranchID const &k) const
Definition: TFWLiteSelectorBasic.cc:101
TFWLiteSelectorBasic::Init
void Init(TTree *) override
Definition: TFWLiteSelectorBasic.cc:246
event
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of "!*" before the partial wildcard feature was incorporated). The per-event "cost" of each negative criterion with multiple relevant triggers is about the same as ! *was in the past
edm::errors::FileReadError
Definition: EDMException.h:50
edm::signalslot::Signal
Definition: DelayedReader.h:26
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
edm::root::TFWLiteSelectorMembers::processNames_
ProcessHistory processNames_
Definition: TFWLiteSelectorBasic.cc:187
edm::poolNames::processConfigurationBranchName
std::string const & processConfigurationBranchName()
Definition: BranchType.cc:183
edm::errors::UnimplementedFeature
Definition: EDMException.h:38
chain
Definition: chain.py:1
edm::ProcessConfiguration
Definition: ProcessConfiguration.h:14
edm::BranchKey
Definition: BranchKey.h:17
edm::pset::Registry
Definition: Registry.h:26
EventSelectionID.h
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29
edm::root::FWLiteDelayedReader::entry_
Long64_t entry_
Definition: TFWLiteSelectorBasic.cc:90