CMS 3D CMS Logo

Event.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: FWLite
4 // Class : Event
5 //
6 // Implementation:
7 // <Notes on implementation>
8 //
9 // Original Author: Chris Jones
10 // Created: Tue May 8 15:07:03 EDT 2007
11 //
12 
13 // system include files
14 #include <iostream>
15 
16 // user include files
18 #include "TFile.h"
19 #include "TTree.h"
23 
27 
29 
40 
41 //used for backwards compatability
43 
44 //
45 // constants, enums and typedefs
46 //
47 namespace {
48  struct NoDelete {
49  void operator()(void*){}
50  };
51 }
52 
53 namespace fwlite {
54 //
55 // static data member definitions
56 //
57  namespace internal {
59  public:
61 
62 
63  edm::WrapperBase const*
64  getIt(edm::ProductID const& iID) const override {
65  return event_->getByProductID(iID);
66  }
67 
68  // getThinnedProduct assumes getIt was already called and failed to find
69  // the product. The input key is the index of the desired element in the
70  // container identified by ProductID (which cannot be found).
71  // If the return value is not null, then the desired element was found
72  // in a thinned container and key is modified to be the index into
73  // that thinned container. If the desired element is not found, then
74  // nullptr is returned.
76  unsigned int& key) const override {
77  return event_->getThinnedProduct(pid, key);
78  }
79 
80 
81  // getThinnedProducts assumes getIt was already called and failed to find
82  // the product. The input keys are the indexes into the container identified
83  // by ProductID (which cannot be found). On input the WrapperBase pointers
84  // must all be set to nullptr (except when the function calls itself
85  // recursively where non-null pointers mark already found elements).
86  // Thinned containers derived from the product are searched to see
87  // if they contain the desired elements. For each that is
88  // found, the corresponding WrapperBase pointer is set and the key
89  // is modified to be the key into the container where the element
90  // was found. The WrapperBase pointers might or might not all point
91  // to the same thinned container.
93  std::vector<edm::WrapperBase const*>& foundContainers,
94  std::vector<unsigned int>& keys) const override {
95  event_->getThinnedProducts(pid, foundContainers, keys);
96  }
97 
98  private:
99 
100  unsigned int
101  transitionIndex_() const override {
102  return 0U;
103  }
104 
105  Event const* event_;
106  };
107  }
108 //
109 // constructors and destructor
110 //
111  Event::Event(TFile* iFile, bool useCache,std::function<void (TBranch const&)> baFunc):
112  file_(iFile),
113 // eventTree_(nullptr),
114  eventHistoryTree_(nullptr),
115 // eventIndex_(-1),
116  branchMap_(iFile),
117  pAux_(&aux_),
118  pOldAux_(nullptr),
119  fileVersion_(-1),
120  parameterSetRegistryFilled_(false),
121  dataHelper_(branchMap_.getEventTree(),
122  std::make_shared<EventHistoryGetter>(this),
123  std::shared_ptr<BranchMapReader>(&branchMap_,NoDelete()),
124  std::make_shared<internal::ProductGetter>(this),
125  useCache, baFunc) {
126  if(nullptr == iFile) {
127  throw cms::Exception("NoFile") << "The TFile pointer passed to the constructor was null";
128  }
129 
130  if(nullptr == branchMap_.getEventTree()) {
131  throw cms::Exception("NoEventTree") << "The TFile contains no TTree named " << edm::poolNames::eventTreeName();
132  }
133  //need to know file version in order to determine how to read the basic event info
135 
136  //got this logic from IOPool/Input/src/RootFile.cc
137 
138  TTree* eventTree = branchMap_.getEventTree();
139  if(fileVersion_ >= 3) {
140  auxBranch_ = eventTree->GetBranch(edm::BranchTypeToAuxiliaryBranchName(edm::InEvent).c_str());
141  if(nullptr == auxBranch_) {
142  throw cms::Exception("NoEventAuxilliary") << "The TTree "
144  << " does not contain a branch named 'EventAuxiliary'";
145  }
146  auxBranch_->SetAddress(&pAux_);
147  } else {
148  pOldAux_ = new edm::EventAux();
149  auxBranch_ = eventTree->GetBranch(edm::BranchTypeToAuxBranchName(edm::InEvent).c_str());
150  if(nullptr == auxBranch_) {
151  throw cms::Exception("NoEventAux") << "The TTree "
153  << " does not contain a branch named 'EventAux'";
154  }
155  auxBranch_->SetAddress(&pOldAux_);
156  }
158 
159  if(fileVersion_ >= 7 && fileVersion_ < 17) {
160  eventHistoryTree_ = dynamic_cast<TTree*>(iFile->Get(edm::poolNames::eventHistoryTreeName().c_str()));
161  }
162  runFactory_ = std::make_shared<RunFactory>();
163 
164 }
165 
166 // Event::Event(Event const& rhs)
167 // {
168 // // do actual copying here;
169 // }
170 
172  for(auto const& label : labels_) {
173  delete [] label;
174  }
175  delete pOldAux_;
176 }
177 
178 //
179 // assignment operators
180 //
181 // Event const& Event::operator=(Event const& rhs) {
182 // //An exception safe implementation is
183 // Event temp(rhs);
184 // swap(rhs);
185 //
186 // return *this;
187 // }
188 
189 //
190 // member functions
191 //
192 
193 Event const&
195  Long_t eventIndex = branchMap_.getEventEntry();
196  if(eventIndex < size()) {
197  branchMap_.updateEvent(++eventIndex);
198  }
199  return *this;
200 }
201 
202 Long64_t
206  return (entry == EntryFinder::invalidEntry) ? -1 : entry;
207 }
208 
209 bool
210 Event::to(Long64_t iEntry) {
211  if (iEntry < size()) {
212  // this is a valid entry
213  return branchMap_.updateEvent(iEntry);
214  }
215  // if we're here, then iEntry was not valid
216  return false;
217 }
218 
219 bool
221  return to(run, 0U, event);
222 }
223 
224 bool
228  if (entry == EntryFinder::invalidEntry) {
229  return false;
230  }
231  return branchMap_.updateEvent(entry);
232 }
233 
234 bool
236  return to(id.run(), id.luminosityBlock(), id.event());
237 }
238 
239 Event const&
242  return *this;
243 }
244 
245 //
246 // const member functions
247 //
248 void Event::draw(Option_t* opt) {
250  branchMap_.getEventTree()->Draw(opt);
251 }
252 Long64_t Event::draw(char const* varexp, const TCut& selection, Option_t* option, Long64_t nentries, Long64_t firstentry) {
254  return branchMap_.getEventTree()->Draw(varexp,selection,option,nentries,firstentry);
255 }
256 Long64_t Event::draw(char const* varexp, char const* selection, Option_t* option, Long64_t nentries, Long64_t firstentry) {
258  return branchMap_.getEventTree()->Draw(varexp,selection,option,nentries,firstentry);
259 }
260 Long64_t Event::scan(char const* varexp, char const* selection, Option_t* option, Long64_t nentries, Long64_t firstentry) {
262  return branchMap_.getEventTree()->Scan(varexp,selection,option,nentries,firstentry);
263 }
264 
265 
266 Long64_t
267 Event::size() const {
268  return branchMap_.getEventTree()->GetEntries();
269 }
270 
271 bool
272 Event::isValid() const {
273  Long_t eventIndex = branchMap_.getEventEntry();
274  return eventIndex != -1 and eventIndex < size();
275 }
276 
277 
279  return isValid();
280 }
281 
282 bool
283 Event::atEnd() const {
284  Long_t eventIndex = branchMap_.getEventEntry();
285  return eventIndex == -1 or eventIndex == size();
286 }
287 
288 
289 std::vector<std::string> const&
291  if (procHistoryNames_.empty()) {
292  for (auto const& proc : history()) {
293  procHistoryNames_.push_back(proc.processName());
294  }
295  }
296  return procHistoryNames_;
297 }
298 
299 
300 std::string const
301 Event::getBranchNameFor(std::type_info const& iInfo,
302  char const* iModuleLabel,
303  char const* iProductInstanceLabel,
304  char const* iProcessLabel) const {
305  return dataHelper_.getBranchNameFor(iInfo, iModuleLabel, iProductInstanceLabel, iProcessLabel);
306 }
307 
308 bool
310  std::type_info const& iInfo,
311  char const* iModuleLabel,
312  char const* iProductInstanceLabel,
313  char const* iProcessLabel,
314  void* oData) const {
315  if(atEnd()) {
316  throw cms::Exception("OffEnd") << "You have requested data past the last event";
317  }
318  Long_t eventIndex = branchMap_.getEventEntry();
319  return dataHelper_.getByLabel(iInfo, iModuleLabel, iProductInstanceLabel, iProcessLabel, oData, eventIndex);
320 }
321 
322 edm::EventAuxiliary const&
324  Long_t eventIndex = branchMap_.getEventEntry();
325  updateAux(eventIndex);
326  return aux_;
327 }
328 
329 void
330 Event::updateAux(Long_t eventIndex) const {
331  if(auxBranch_->GetEntryNumber() != eventIndex) {
332  auxBranch_->GetEntry(eventIndex);
333  //handling dealing with old version
334  if(nullptr != pOldAux_) {
336  }
337  }
338 }
339 
340 const edm::ProcessHistory&
341 Event::history() const {
342  edm::ProcessHistoryID processHistoryID;
343 
344  bool newFormat = (fileVersion_ >= 5);
345 
346  Long_t eventIndex = branchMap_.getEventEntry();
347  updateAux(eventIndex);
348  if (!newFormat) {
349  processHistoryID = aux_.processHistoryID();
350  }
351  if(historyMap_.empty() || newFormat) {
352  procHistoryNames_.clear();
353  TTree *meta = dynamic_cast<TTree*>(branchMap_.getFile()->Get(edm::poolNames::metaDataTreeName().c_str()));
354  if(nullptr == meta) {
355  throw cms::Exception("NoMetaTree") << "The TFile does not appear to contain a TTree named "
357  }
358  if (historyMap_.empty()) {
359  if (fileVersion_ < 11) {
361  TBranch* b = meta->GetBranch(edm::poolNames::processHistoryMapBranchName().c_str());
362  b->SetAddress(&pPhm);
363  b->GetEntry(0);
364  } else {
365  edm::ProcessHistoryVector historyVector;
366  edm::ProcessHistoryVector* pPhv = &historyVector;
367  TBranch* b = meta->GetBranch(edm::poolNames::processHistoryBranchName().c_str());
368  b->SetAddress(&pPhv);
369  b->GetEntry(0);
370  for (auto& history : historyVector) {
371  historyMap_.insert(std::make_pair(history.setProcessHistoryID(), history));
372  }
373  }
374  }
375  if (newFormat) {
376  if (fileVersion_ >= 17) {
377  processHistoryID = aux_.processHistoryID();
378  } else if (fileVersion_ >= 7) {
380  edm::History* pHistory = &history;
381  TBranch* eventHistoryBranch = eventHistoryTree_->GetBranch(edm::poolNames::eventHistoryBranchName().c_str());
382  if (!eventHistoryBranch)
384  << "Failed to find history branch in event history tree";
385  eventHistoryBranch->SetAddress(&pHistory);
386  eventHistoryTree_->GetEntry(eventIndex);
387  processHistoryID = history.processHistoryID();
388  } else {
389  std::vector<edm::EventProcessHistoryID> *pEventProcessHistoryIDs = &eventProcessHistoryIDs_;
390  TBranch* b = meta->GetBranch(edm::poolNames::eventHistoryBranchName().c_str());
391  b->SetAddress(&pEventProcessHistoryIDs);
392  b->GetEntry(0);
394  processHistoryID = std::lower_bound(eventProcessHistoryIDs_.begin(), eventProcessHistoryIDs_.end(), target)->processHistoryID();
395  }
396  }
397 
398  }
399 
400  return historyMap_[processHistoryID];
401 }
402 
403 
404 edm::WrapperBase const*
406  Long_t eventEntry = branchMap_.getEventEntry();
407  return dataHelper_.getByProductID(iID, eventEntry);
408 }
409 
410 edm::WrapperBase const*
411 Event::getThinnedProduct(edm::ProductID const& pid, unsigned int& key) const {
412  Long_t eventEntry = branchMap_.getEventEntry();
413  return dataHelper_.getThinnedProduct(pid, key, eventEntry);
414 }
415 
416 void
418  std::vector<edm::WrapperBase const*>& foundContainers,
419  std::vector<unsigned int>& keys) const {
420  Long_t eventEntry = branchMap_.getEventEntry();
421  return dataHelper_.getThinnedProducts(pid, foundContainers, keys, eventEntry);
422 }
423 
424 edm::TriggerNames const&
426  edm::TriggerNames const* names = triggerNames_(triggerResults);
427  if (names != nullptr) return *names;
428 
431  names = triggerNames_(triggerResults);
432  }
433  if (names != nullptr) return *names;
434 
435  throw cms::Exception("TriggerNamesNotFound")
436  << "TriggerNames not found in ParameterSet registry";
437  return *names;
438 }
439 
440 void
442  if (parameterSetRegistryFilled_) return;
444 
445  TTree* meta = dynamic_cast<TTree*>(branchMap_.getFile()->Get(edm::poolNames::metaDataTreeName().c_str()));
446  if (nullptr == meta) {
447  throw cms::Exception("NoMetaTree") << "The TFile does not contain a TTree named "
449  }
450 
451  edm::FileFormatVersion fileFormatVersion;
452  edm::FileFormatVersion *fftPtr = &fileFormatVersion;
453  if(meta->FindBranch(edm::poolNames::fileFormatVersionBranchName().c_str()) != nullptr) {
454  TBranch *fft = meta->GetBranch(edm::poolNames::fileFormatVersionBranchName().c_str());
455  fft->SetAddress(&fftPtr);
456  fft->GetEntry(0);
457  }
458 
459  typedef std::map<edm::ParameterSetID, edm::ParameterSetBlob> PsetMap;
460  PsetMap psetMap;
461  TTree* psetTree(nullptr);
462  if (meta->FindBranch(edm::poolNames::parameterSetMapBranchName().c_str()) != nullptr) {
463  PsetMap *psetMapPtr = &psetMap;
464  TBranch* b = meta->GetBranch(edm::poolNames::parameterSetMapBranchName().c_str());
465  b->SetAddress(&psetMapPtr);
466  b->GetEntry(0);
467  } else if(nullptr == (psetTree = dynamic_cast<TTree *>(branchMap_.getFile()->Get(edm::poolNames::parameterSetsTreeName().c_str())))) {
468  throw cms::Exception("NoParameterSetMapTree")
469  << "The TTree "
470  << edm::poolNames::parameterSetsTreeName() << " could not be found in the file.";
471  } else {
472  typedef std::pair<edm::ParameterSetID, edm::ParameterSetBlob> IdToBlobs;
473  IdToBlobs idToBlob;
474  IdToBlobs* pIdToBlob = &idToBlob;
475  psetTree->SetBranchAddress(edm::poolNames::idToParameterSetBlobsBranchName().c_str(), &pIdToBlob);
476  for(long long i = 0; i != psetTree->GetEntries(); ++i) {
477  psetTree->GetEntry(i);
478  psetMap.insert(idToBlob);
479  }
480  }
482  if(!fileFormatVersion.triggerPathsTracked()) {
483  edm::ParameterSetConverter converter(psetMap, psetIdConverter, fileFormatVersion.parameterSetsByReference());
484  } else {
485  // Merge into the parameter set registry.
487  for(auto const& item : psetMap) {
488  edm::ParameterSet pset(item.second.pset());
489  pset.setID(item.first);
490  psetRegistry.insertMapped(pset);
491  }
492  }
493 }
494 
495 edm::ParameterSet const*
499  }
500  return parameterSetForID_(psID);
501 }
502 
503 
506 
507  edm::TriggerNames const* names = triggerNames_(triggerResults);
508  if (names == nullptr && !parameterSetRegistryFilled_) {
510  names = triggerNames_(triggerResults);
511  }
512  return edm::TriggerResultsByName(&triggerResults, names);
513 }
514 
515 //
516 // static member functions
517 //
518 void
519 Event::throwProductNotFoundException(std::type_info const& iType, char const* iModule, char const* iProduct, char const* iProcess) {
520  edm::TypeID type(iType);
521  throw edm::Exception(edm::errors::ProductNotFound) << "A branch was found for \n type ='" << type.className() << "'\n module='" << iModule
522  << "'\n productInstance='" << ((nullptr != iProduct)?iProduct:"") << "'\n process='" << ((nullptr != iProcess) ? iProcess : "") << "'\n"
523  "but no data is available for this Event";
524 }
525 
526 
528  if (not lumi_) {
529  // Branch map pointer not really being shared, owned by event, have to trick Lumi
530  lumi_ = std::make_shared<fwlite::LuminosityBlock> (std::shared_ptr<BranchMapReader>(&branchMap_,NoDelete()),
531  runFactory_);
532  }
535  lumi_->to(run, lumi);
536  return *lumi_;
537 }
538 
539 fwlite::Run const& Event::getRun() const {
540  run_ = runFactory_->makeRun(std::shared_ptr<BranchMapReader>(&branchMap_,NoDelete()));
542  run_->to(run);
543  return *run_;
544 }
545 
546 }
std::vector< ProcessHistory > ProcessHistoryVector
type
Definition: HCALResponse.h:21
bool isValid() const
Definition: Event.cc:272
std::string const & idToParameterSetBlobsBranchName()
Definition: BranchType.cc:261
edm::ProcessHistoryMap historyMap_
Definition: Event.h:199
Long64_t indexFromEventId(edm::RunNumber_t run, edm::LuminosityBlockNumber_t lumi, edm::EventNumber_t event)
Find index of given event-id.
Definition: Event.cc:203
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:116
Event const & toBegin() override
Go to the very first Event.
Definition: Event.cc:240
fwlite::DataGetterHelper dataHelper_
Definition: Event.h:210
edm::WrapperBase const * getThinnedProduct(edm::ProductID const &pid, unsigned int &key) const override
Definition: Event.cc:75
TrainProcessor *const proc
Definition: MVATrainer.cc:101
void getThinnedProducts(edm::ProductID const &pid, std::vector< edm::WrapperBase const * > &foundContainers, std::vector< unsigned int > &keys) const override
Definition: Event.cc:92
bool updateEvent(Long_t eventEntry)
TFile const * getFile() const
#define nullptr
selection
main part
Definition: corrVsCorr.py:100
edm::WrapperBase const * getIt(edm::ProductID const &iID) const override
Definition: Event.cc:64
unsigned long long EventNumber_t
virtual std::string const getBranchNameFor(std::type_info const &, char const *, char const *, char const *) const
RunNumber_t run() const
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:61
std::string const & fileFormatVersionBranchName()
Definition: BranchType.cc:219
fwlite::Run const & getRun() const
Definition: Event.cc:539
std::shared_ptr< fwlite::Run > run_
Definition: Event.h:194
bool firstentry
Definition: mps_merge.py:77
ProcessHistoryID setProcessHistoryID()
TTree * eventHistoryTree_
Definition: Event.h:191
bool getByLabel(std::type_info const &, char const *, char const *, char const *, void *) const override
This function should only be called by fwlite::Handle<>
Definition: Event.cc:309
int fileVersion_
Definition: Event.h:207
unsigned int LuminosityBlockNumber_t
void getThinnedProducts(edm::ProductID const &pid, std::vector< edm::WrapperBase const * > &foundContainers, std::vector< unsigned int > &keys, Long_t eventEntry) const
std::string const getBranchNameFor(std::type_info const &, char const *iModuleLabel, char const *iProductInstanceLabel, char const *iProcessName) const override
Return the branch name in the TFile which contains the data.
Definition: Event.cc:301
Long64_t size() const
Returns number of events in the file.
Definition: Event.cc:267
fwlite::LuminosityBlock const & getLuminosityBlock() const
Definition: Event.cc:527
const std::string names[nVars_]
ProductGetter(Event *iEvent)
Definition: Event.cc:60
edm::EventAuxiliary const & eventAuxiliary() const override
Definition: Event.cc:323
EntryNumber_t findEvent(edm::RunNumber_t const &run, edm::LuminosityBlockNumber_t const &lumi, edm::EventNumber_t const &event) const
Definition: EntryFinder.cc:57
LuminosityBlockNumber_t luminosityBlock() const
std::string const & parameterSetsTreeName()
Definition: BranchType.cc:257
char const * label
Long_t getEventEntry() const
bool atEnd() const override
Definition: Event.cc:283
static edm::ParameterSet const * parameterSetForID_(edm::ParameterSetID const &psID)
Definition: EventBase.cc:41
int iEvent
Definition: GenABIO.cc:224
std::string const & processHistoryMapBranchName()
Definition: BranchType.cc:194
Event const & operator++() override
Advance to next event in the TFile.
Definition: Event.cc:194
edm::WrapperBase const * getByProductID(edm::ProductID const &pid, Long_t eventEntry) const
int getFileVersion(TFile *file)
edm::IndexIntoFile::EntryNumber_t EntryNumber_t
Definition: EntryFinder.h:33
bool parameterSetRegistryFilled_
Definition: Event.h:208
std::vector< std::string > procHistoryNames_
Definition: Event.h:201
std::string const & eventHistoryBranchName()
Definition: BranchType.cc:244
ProcessHistoryID const & processHistoryID() const
Definition: History.h:46
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void draw(Option_t *opt)
Properly setup for edm::Ref, etc and then call TTree method.
Definition: Event.cc:248
void updateAux(Long_t eventIndex) const
Definition: Event.cc:330
bool to(Long64_t iIndex)
Go to the event at index iIndex.
Definition: Event.cc:210
std::map< ParameterSetID, ParameterSetID > ParameterSetIdConverter
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:425
bool insertMapped(value_type const &v, bool forceUpdate=false)
Definition: Registry.cc:32
edm::EventAuxiliary const * pAux_
Definition: Event.h:204
std::string const & metaDataTreeName()
Definition: BranchType.cc:169
TTree const * getEventTree() const
static std::string const triggerResults
Definition: EdmProvDump.cc:45
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
std::string const & parameterSetMapBranchName()
Definition: BranchType.cc:184
std::vector< std::string > const & getProcessHistory() const
Definition: Event.cc:290
void getThinnedProducts(edm::ProductID const &pid, std::vector< edm::WrapperBase const * > &foundContainers, std::vector< unsigned int > &keys) const
Definition: Event.cc:417
Hash< ProcessHistoryType > ProcessHistoryID
void fillIndex(BranchMapReader &branchMap)
Definition: EntryFinder.cc:108
static EntryNumber_t const invalidEntry
Definition: EntryFinder.h:39
std::string const & processHistoryBranchName()
Definition: BranchType.cc:199
std::shared_ptr< fwlite::LuminosityBlock > lumi_
Definition: Event.h:193
static TriggerNames const * triggerNames_(edm::TriggerResults const &triggerResults)
Definition: EventBase.cc:45
edm::ProcessHistory const & history() const
Definition: Event.cc:341
edm::WrapperBase const * getThinnedProduct(edm::ProductID const &pid, unsigned int &key) const
Definition: Event.cc:411
void conversion(EventAux const &from, EventAuxiliary &to)
Definition: EventAux.cc:9
bool triggerPathsTracked() const
fwlite::BranchMapReader branchMap_
Definition: Event.h:195
edm::EDProductGetter const * getter() const
bool parameterSetsByReference() const
edm::TriggerResultsByName triggerResultsByName(edm::TriggerResults const &triggerResults) const override
Definition: Event.cc:505
unsigned int transitionIndex_() const override
Definition: Event.cc:101
double b
Definition: hdecay.h:120
edm::EventAuxiliary aux_
Definition: Event.h:202
~Event() override
Definition: Event.cc:171
std::vector< edm::EventProcessHistoryID > eventProcessHistoryIDs_
Definition: Event.h:200
ProcessHistoryID const & processHistoryID() const
EventID const & id() const
EntryFinder entryFinder_
Definition: Event.h:203
virtual bool getByLabel(std::type_info const &, char const *, char const *, char const *, void *, Long_t) const
void event_()
static void throwProductNotFoundException(std::type_info const &, char const *, char const *, char const *)
Definition: Event.cc:519
std::string const & className() const
Definition: TypeID.cc:43
std::string const & eventTreeName()
Definition: BranchType.cc:266
std::vector< char const * > labels_
Definition: Event.h:198
std::string const & BranchTypeToAuxBranchName(BranchType const &branchType)
Definition: BranchType.cc:120
edm::WrapperBase const * getThinnedProduct(edm::ProductID const &pid, unsigned int &key, Long_t eventEntry) const
void fillParameterSetRegistry() const
Definition: Event.cc:441
unsigned int RunNumber_t
edm::ParameterSet const * parameterSet(edm::ParameterSetID const &psID) const override
Definition: Event.cc:496
std::string const & eventHistoryTreeName()
Definition: BranchType.cc:274
TBranch * auxBranch_
Definition: Event.h:206
edm::EventAux const * pOldAux_
Definition: Event.h:205
Long64_t scan(char const *varexp="", char const *selection="", Option_t *option="", Long64_t nentries=1000000000, Long64_t firstentry=0)
Definition: Event.cc:260
std::shared_ptr< RunFactory > runFactory_
Definition: Event.h:211
std::map< ProcessHistoryID, ProcessHistory > ProcessHistoryMap
static Registry * instance()
Definition: Registry.cc:12
Definition: event.py:1
edm::WrapperBase const * getByProductID(edm::ProductID const &) const override
Definition: Event.cc:405