CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
41 
42 //used for backwards compatability
44 
45 //
46 // constants, enums and typedefs
47 //
48 namespace {
49  struct NoDelete {
50  void operator()(void*){}
51  };
52 }
53 
54 namespace fwlite {
55 //
56 // static data member definitions
57 //
58  namespace internal {
60  public:
62 
64  getIt(edm::ProductID const& iID) const {
65  return event_->getByProductID(iID);
66  }
67  private:
69  };
70  }
71 //
72 // constructors and destructor
73 //
74  Event::Event(TFile* iFile):
75  file_(iFile),
76 // eventTree_(0),
77  eventHistoryTree_(0),
78 // eventIndex_(-1),
79  branchMap_(iFile),
80  pAux_(&aux_),
81  pOldAux_(0),
82  fileVersion_(-1),
83  parameterSetRegistryFilled_(false),
84  dataHelper_(branchMap_.getEventTree(),
85  boost::shared_ptr<HistoryGetterBase>(new EventHistoryGetter(this)),
86  boost::shared_ptr<BranchMapReader>(&branchMap_,NoDelete()),
87  boost::shared_ptr<edm::EDProductGetter>(new internal::ProductGetter(this)),
88  true) {
89  if(0 == iFile) {
90  throw cms::Exception("NoFile") << "The TFile pointer passed to the constructor was null";
91  }
92 
93  if(0 == branchMap_.getEventTree()) {
94  throw cms::Exception("NoEventTree") << "The TFile contains no TTree named " << edm::poolNames::eventTreeName();
95  }
96  //need to know file version in order to determine how to read the basic event info
98 
99  //got this logic from IOPool/Input/src/RootFile.cc
100 
101  TTree* eventTree = branchMap_.getEventTree();
102  if(fileVersion_ >= 3) {
103  auxBranch_ = eventTree->GetBranch(edm::BranchTypeToAuxiliaryBranchName(edm::InEvent).c_str());
104  if(0 == auxBranch_) {
105  throw cms::Exception("NoEventAuxilliary") << "The TTree "
107  << " does not contain a branch named 'EventAuxiliary'";
108  }
109  auxBranch_->SetAddress(&pAux_);
110  } else {
111  pOldAux_ = new edm::EventAux();
112  auxBranch_ = eventTree->GetBranch(edm::BranchTypeToAuxBranchName(edm::InEvent).c_str());
113  if(0 == auxBranch_) {
114  throw cms::Exception("NoEventAux") << "The TTree "
116  << " does not contain a branch named 'EventAux'";
117  }
118  auxBranch_->SetAddress(&pOldAux_);
119  }
121 
122  if(fileVersion_ >= 7 && fileVersion_ < 17) {
123  eventHistoryTree_ = dynamic_cast<TTree*>(iFile->Get(edm::poolNames::eventHistoryTreeName().c_str()));
124  }
125  runFactory_ = boost::shared_ptr<RunFactory>(new RunFactory());
126 
127 }
128 
129 // Event::Event(Event const& rhs)
130 // {
131 // // do actual copying here;
132 // }
133 
135  for(std::vector<char const*>::iterator it = labels_.begin(), itEnd = labels_.end();
136  it != itEnd;
137  ++it) {
138  delete [] *it;
139  }
140  delete pOldAux_;
141 }
142 
143 //
144 // assignment operators
145 //
146 // Event const& Event::operator=(Event const& rhs) {
147 // //An exception safe implementation is
148 // Event temp(rhs);
149 // swap(rhs);
150 //
151 // return *this;
152 // }
153 
154 //
155 // member functions
156 //
157 
158 Event const&
160  Long_t eventIndex = branchMap_.getEventEntry();
161  if(eventIndex < size()) {
162  branchMap_.updateEvent(++eventIndex);
163  }
164  return *this;
165 }
166 
167 Long64_t
171  return (entry == EntryFinder::invalidEntry) ? -1 : entry;
172 }
173 
174 bool
175 Event::to(Long64_t iEntry) {
176  if (iEntry < size()) {
177  // this is a valid entry
178  return branchMap_.updateEvent(iEntry);
179  }
180  // if we're here, then iEntry was not valid
181  return false;
182 }
183 
184 bool
186  return to(run, 0U, event);
187 }
188 
189 bool
193  if (entry == EntryFinder::invalidEntry) {
194  return false;
195  }
196  return branchMap_.updateEvent(entry);
197 }
198 
199 bool
201  return to(id.run(), id.luminosityBlock(), id.event());
202 }
203 
204 Event const&
207  return *this;
208 }
209 
210 //
211 // const member functions
212 //
213 void Event::draw(Option_t* opt) {
215  branchMap_.getEventTree()->Draw(opt);
216 }
217 Long64_t Event::draw(char const* varexp, const TCut& selection, Option_t* option, Long64_t nentries, Long64_t firstentry) {
219  return branchMap_.getEventTree()->Draw(varexp,selection,option,nentries,firstentry);
220 }
221 Long64_t Event::draw(char const* varexp, char const* selection, Option_t* option, Long64_t nentries, Long64_t firstentry) {
223  return branchMap_.getEventTree()->Draw(varexp,selection,option,nentries,firstentry);
224 }
225 Long64_t Event::scan(char const* varexp, char const* selection, Option_t* option, Long64_t nentries, Long64_t firstentry) {
227  return branchMap_.getEventTree()->Scan(varexp,selection,option,nentries,firstentry);
228 }
229 
230 
231 Long64_t
232 Event::size() const {
233  return branchMap_.getEventTree()->GetEntries();
234 }
235 
236 bool
237 Event::isValid() const {
238  Long_t eventIndex = branchMap_.getEventEntry();
239  return eventIndex != -1 and eventIndex < size();
240 }
241 
242 
243 Event::operator bool() const {
244  return isValid();
245 }
246 
247 bool
248 Event::atEnd() const {
249  Long_t eventIndex = branchMap_.getEventEntry();
250  return eventIndex == -1 or eventIndex == size();
251 }
252 
253 
254 std::vector<std::string> const&
256  if (procHistoryNames_.empty()) {
257  const edm::ProcessHistory& h = history();
258  for (edm::ProcessHistory::const_iterator iproc = h.begin(), eproc = h.end();
259  iproc != eproc; ++iproc) {
260  procHistoryNames_.push_back(iproc->processName());
261  }
262  }
263  return procHistoryNames_;
264 }
265 
266 
267 std::string const
268 Event::getBranchNameFor(std::type_info const& iInfo,
269  char const* iModuleLabel,
270  char const* iProductInstanceLabel,
271  char const* iProcessLabel) const {
272  return dataHelper_.getBranchNameFor(iInfo, iModuleLabel, iProductInstanceLabel, iProcessLabel);
273 }
274 
275 bool
277  std::type_info const& iInfo,
278  char const* iModuleLabel,
279  char const* iProductInstanceLabel,
280  char const* iProcessLabel,
281  void* oData) const {
282  if(atEnd()) {
283  throw cms::Exception("OffEnd") << "You have requested data past the last event";
284  }
285  Long_t eventIndex = branchMap_.getEventEntry();
286  return dataHelper_.getByLabel(iInfo, iModuleLabel, iProductInstanceLabel, iProcessLabel, oData, eventIndex);
287 }
288 
289 bool
290 Event::getByLabel(std::type_info const& iInfo,
291  char const* iModuleLabel,
292  char const* iProductInstanceLabel,
293  char const* iProcessLabel,
294  edm::WrapperHolder& holder) const {
295  if(atEnd()) {
296  throw cms::Exception("OffEnd") << "You have requested data past the last event";
297  }
298  Long_t eventIndex = branchMap_.getEventEntry();
299  return dataHelper_.getByLabel(iInfo, iModuleLabel, iProductInstanceLabel, iProcessLabel, holder, eventIndex);
300 }
301 
302 edm::EventAuxiliary const&
304  Long_t eventIndex = branchMap_.getEventEntry();
305  updateAux(eventIndex);
306  return aux_;
307 }
308 
309 void
310 Event::updateAux(Long_t eventIndex) const {
311  if(auxBranch_->GetEntryNumber() != eventIndex) {
312  auxBranch_->GetEntry(eventIndex);
313  //handling dealing with old version
314  if(0 != pOldAux_) {
316  }
317  }
318 }
319 
320 const edm::ProcessHistory&
321 Event::history() const {
322  edm::ProcessHistoryID processHistoryID;
323 
324  bool newFormat = (fileVersion_ >= 5);
325 
326  Long_t eventIndex = branchMap_.getEventEntry();
327  updateAux(eventIndex);
328  if (!newFormat) {
329  processHistoryID = aux_.processHistoryID();
330  }
331  if(historyMap_.empty() || newFormat) {
332  procHistoryNames_.clear();
333  TTree *meta = dynamic_cast<TTree*>(branchMap_.getFile()->Get(edm::poolNames::metaDataTreeName().c_str()));
334  if(0 == meta) {
335  throw cms::Exception("NoMetaTree") << "The TFile does not appear to contain a TTree named "
337  }
338  if (historyMap_.empty()) {
339  if (fileVersion_ < 11) {
341  TBranch* b = meta->GetBranch(edm::poolNames::processHistoryMapBranchName().c_str());
342  b->SetAddress(&pPhm);
343  b->GetEntry(0);
344  } else {
345  edm::ProcessHistoryVector historyVector;
346  edm::ProcessHistoryVector* pPhv = &historyVector;
347  TBranch* b = meta->GetBranch(edm::poolNames::processHistoryBranchName().c_str());
348  b->SetAddress(&pPhv);
349  b->GetEntry(0);
350  for (edm::ProcessHistoryVector::const_iterator i = historyVector.begin(), e = historyVector.end();
351  i != e; ++i) {
352  historyMap_.insert(std::make_pair(i->id(), *i));
353  }
354  }
355  }
356  if (newFormat) {
357  if (fileVersion_ >= 17) {
358  processHistoryID = aux_.processHistoryID();
359  } else if (fileVersion_ >= 7) {
361  edm::History* pHistory = &history;
362  TBranch* eventHistoryBranch = eventHistoryTree_->GetBranch(edm::poolNames::eventHistoryBranchName().c_str());
363  if (!eventHistoryBranch)
365  << "Failed to find history branch in event history tree";
366  eventHistoryBranch->SetAddress(&pHistory);
367  eventHistoryTree_->GetEntry(eventIndex);
368  processHistoryID = history.processHistoryID();
369  } else {
370  std::vector<edm::EventProcessHistoryID> *pEventProcessHistoryIDs = &eventProcessHistoryIDs_;
371  TBranch* b = meta->GetBranch(edm::poolNames::eventHistoryBranchName().c_str());
372  b->SetAddress(&pEventProcessHistoryIDs);
373  b->GetEntry(0);
375  processHistoryID = std::lower_bound(eventProcessHistoryIDs_.begin(), eventProcessHistoryIDs_.end(), target)->processHistoryID();
376  }
377  }
378 
379  }
380 
381  return historyMap_[processHistoryID];
382 }
383 
384 
387  Long_t eventIndex = branchMap_.getEventEntry();
388  return dataHelper_.getByProductID(iID, eventIndex);
389 }
390 
391 
392 edm::TriggerNames const&
394  edm::TriggerNames const* names = triggerNames_(triggerResults);
395  if (names != 0) return *names;
396 
399  names = triggerNames_(triggerResults);
400  }
401  if (names != 0) return *names;
402 
403  throw cms::Exception("TriggerNamesNotFound")
404  << "TriggerNames not found in ParameterSet registry";
405  return *names;
406 }
407 
408 void
410  if (parameterSetRegistryFilled_) return;
412 
413  TTree* meta = dynamic_cast<TTree*>(branchMap_.getFile()->Get(edm::poolNames::metaDataTreeName().c_str()));
414  if (0 == meta) {
415  throw cms::Exception("NoMetaTree") << "The TFile does not contain a TTree named "
417  }
418 
419  edm::FileFormatVersion fileFormatVersion;
420  edm::FileFormatVersion *fftPtr = &fileFormatVersion;
421  if(meta->FindBranch(edm::poolNames::fileFormatVersionBranchName().c_str()) != 0) {
422  TBranch *fft = meta->GetBranch(edm::poolNames::fileFormatVersionBranchName().c_str());
423  fft->SetAddress(&fftPtr);
424  fft->GetEntry(0);
425  }
426 
427  typedef std::map<edm::ParameterSetID, edm::ParameterSetBlob> PsetMap;
428  PsetMap psetMap;
429  TTree* psetTree(0);
430  if (meta->FindBranch(edm::poolNames::parameterSetMapBranchName().c_str()) != 0) {
431  PsetMap *psetMapPtr = &psetMap;
432  TBranch* b = meta->GetBranch(edm::poolNames::parameterSetMapBranchName().c_str());
433  b->SetAddress(&psetMapPtr);
434  b->GetEntry(0);
435  } else if(0 == (psetTree = dynamic_cast<TTree *>(branchMap_.getFile()->Get(edm::poolNames::parameterSetsTreeName().c_str())))) {
436  throw cms::Exception("NoParameterSetMapTree")
437  << "The TTree "
438  << edm::poolNames::parameterSetsTreeName() << " could not be found in the file.";
439  } else {
440  typedef std::pair<edm::ParameterSetID, edm::ParameterSetBlob> IdToBlobs;
441  IdToBlobs idToBlob;
442  IdToBlobs* pIdToBlob = &idToBlob;
443  psetTree->SetBranchAddress(edm::poolNames::idToParameterSetBlobsBranchName().c_str(), &pIdToBlob);
444  for(long long i = 0; i != psetTree->GetEntries(); ++i) {
445  psetTree->GetEntry(i);
446  psetMap.insert(idToBlob);
447  }
448  }
450  if(!fileFormatVersion.triggerPathsTracked()) {
451  edm::ParameterSetConverter converter(psetMap, psetIdConverter, fileFormatVersion.parameterSetsByReference());
452  } else {
453  // Merge into the parameter set registry.
455  for(PsetMap::const_iterator i = psetMap.begin(), iEnd = psetMap.end();
456  i != iEnd; ++i) {
457  edm::ParameterSet pset(i->second.pset());
458  pset.setID(i->first);
459  psetRegistry.insertMapped(pset);
460  }
461  }
462 }
463 
465 Event::triggerResultsByName(std::string const& process) const {
466 
467  fwlite::Handle<edm::TriggerResults> hTriggerResults;
468  hTriggerResults.getByLabel(*this, "TriggerResults", "", process.c_str());
469  if (!hTriggerResults.isValid()) {
470  return edm::TriggerResultsByName(0,0);
471  }
472 
473  edm::TriggerNames const* names = triggerNames_(*hTriggerResults);
474  if (names == 0 && !parameterSetRegistryFilled_) {
476  names = triggerNames_(*hTriggerResults);
477  }
478  return edm::TriggerResultsByName(hTriggerResults.product(), names);
479 }
480 
481 //
482 // static member functions
483 //
484 void
485 Event::throwProductNotFoundException(std::type_info const& iType, char const* iModule, char const* iProduct, char const* iProcess) {
486  edm::TypeID type(iType);
487  throw edm::Exception(edm::errors::ProductNotFound) << "A branch was found for \n type ='" << type.className() << "'\n module='" << iModule
488  << "'\n productInstance='" << ((0!=iProduct)?iProduct:"") << "'\n process='" << ((0 != iProcess) ? iProcess : "") << "'\n"
489  "but no data is available for this Event";
490 }
491 
492 
494  if (not lumi_) {
495  // Branch map pointer not really being shared, owned by event, have to trick Lumi
496  lumi_ = boost::shared_ptr<fwlite::LuminosityBlock> (
497  new fwlite::LuminosityBlock(boost::shared_ptr<BranchMapReader>(&branchMap_,NoDelete()),
498  runFactory_)
499  );
500  }
503  lumi_->to(run, lumi);
504  return *lumi_;
505 }
506 
507 fwlite::Run const& Event::getRun() const {
508  run_ = runFactory_->makeRun(boost::shared_ptr<BranchMapReader>(&branchMap_,NoDelete()));
510  run_->to(run);
511  return *run_;
512 }
513 
514 }
collection_type::const_iterator const_iterator
type
Definition: HCALResponse.h:22
bool isValid() const
Definition: Event.cc:237
const_iterator begin() const
std::string const & idToParameterSetBlobsBranchName()
Definition: BranchType.cc:249
edm::ProcessHistoryMap historyMap_
Definition: Event.h:188
int i
Definition: DBlmapReader.cc:9
Long64_t indexFromEventId(edm::RunNumber_t run, edm::LuminosityBlockNumber_t lumi, edm::EventNumber_t event)
Find index of given event-id.
Definition: Event.cc:168
std::string const & BranchTypeToAuxiliaryBranchName(BranchType const &branchType)
Definition: BranchType.cc:114
fwlite::DataGetterHelper dataHelper_
Definition: Event.h:199
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:393
edm::EDProductGetter * getter()
static const HistoName names[]
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::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
virtual ~Event()
Definition: Event.cc:134
bool isValid() const
Definition: Handle.h:64
unsigned int EventNumber_t
Definition: EventID.h:30
tuple lumi
Definition: fjr2json.py:35
Event(TFile *iFile)
Definition: Event.cc:74
bool updateEvent(Long_t eventEntry)
selection
main part
Definition: corrVsCorr.py:98
virtual bool getByLabel(std::type_info const &, char const *, char const *, char const *, void *) const
This function should only be called by fwlite::Handle&lt;&gt;
Definition: Event.cc:276
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:59
std::string const & fileFormatVersionBranchName()
Definition: BranchType.cc:212
static ThreadSafeRegistry * instance()
ProcessHistoryRegistry::collection_type ProcessHistoryMap
fwlite::Run const & getRun() const
Definition: Event.cc:507
edm::WrapperHolder getIt(edm::ProductID const &iID) const
Definition: Event.cc:64
TFile * getFile() const
TTree * eventHistoryTree_
Definition: Event.h:180
virtual std::string const getBranchNameFor(std::type_info const &, char const *iModuleLabel, char const *iProductInstanceLabel, char const *iProcessName) const
Return the branch name in the TFile which contains the data.
Definition: Event.cc:268
int fileVersion_
Definition: Event.h:196
unsigned int LuminosityBlockNumber_t
Definition: EventID.h:31
Long64_t size() const
Returns number of events in the file.
Definition: Event.cc:232
fwlite::LuminosityBlock const & getLuminosityBlock() const
Definition: Event.cc:493
boost::shared_ptr< fwlite::LuminosityBlock > lumi_
Definition: Event.h:182
Event const & operator++()
Advance to next event in the TFile.
Definition: Event.cc:159
ProductGetter(Event *iEvent)
Definition: Event.cc:61
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:245
void setID(ParameterSetID const &id) const
void getByLabel(const P &iP, const char *iModuleLabel, const char *iProductInstanceLabel=0, const char *iProcessLabel=0)
Definition: Handle.h:94
Long_t getEventEntry() const
edm::EventAux * pOldAux_
Definition: Event.h:194
boost::shared_ptr< RunFactory > runFactory_
Definition: Event.h:200
Event const & toBegin()
Go to the very first Event.
Definition: Event.cc:205
TTree * getEventTree() const
int iEvent
Definition: GenABIO.cc:243
std::string const & processHistoryMapBranchName()
Definition: BranchType.cc:192
int getFileVersion(TFile *file)
edm::IndexIntoFile::EntryNumber_t EntryNumber_t
Definition: EntryFinder.h:34
bool parameterSetRegistryFilled_
Definition: Event.h:197
std::vector< std::string > procHistoryNames_
Definition: Event.h:190
boost::shared_ptr< fwlite::Run > run_
Definition: Event.h:183
std::string const & eventHistoryBranchName()
Definition: BranchType.cc:232
ProcessHistoryID const & processHistoryID() const
Definition: History.h:46
edm::WrapperHolder getByProductID(edm::ProductID const &) const
Definition: Event.cc:386
std::pair< std::string, MonitorElement * > entry
Definition: ME_MAP.h:8
void draw(Option_t *opt)
Properly setup for edm::Ref, etc and then call TTree method.
Definition: Event.cc:213
void updateAux(Long_t eventIndex) const
Definition: Event.cc:310
bool to(Long64_t iIndex)
Go to the event at index iIndex.
Definition: Event.cc:175
std::map< ParameterSetID, ParameterSetID > ParameterSetIdConverter
ProcessHistoryRegistry::vector_type ProcessHistoryVector
virtual edm::EventAuxiliary const & eventAuxiliary() const
Definition: Event.cc:303
void fillIndex(BranchMapReader const &branchMap)
Definition: EntryFinder.cc:108
std::string const & metaDataTreeName()
Definition: BranchType.cc:167
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:182
std::vector< std::string > const & getProcessHistory() const
Definition: Event.cc:255
std::string className() const
Definition: TypeID.cc:51
Hash< ProcessHistoryType > ProcessHistoryID
static EntryNumber_t const invalidEntry
Definition: EntryFinder.h:40
std::string const & processHistoryBranchName()
Definition: BranchType.cc:197
virtual edm::TriggerResultsByName triggerResultsByName(std::string const &process) const
Definition: Event.cc:465
static TriggerNames const * triggerNames_(edm::TriggerResults const &triggerResults)
Definition: EventBase.cc:42
virtual bool atEnd() const
Definition: Event.cc:248
edm::ProcessHistory const & history() const
Definition: Event.cc:321
void conversion(EventAux const &from, EventAuxiliary &to)
Definition: EventAux.cc:9
bool triggerPathsTracked() const
fwlite::BranchMapReader branchMap_
Definition: Event.h:184
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
bool parameterSetsByReference() const
double b
Definition: hdecay.h:120
edm::EventAuxiliary aux_
Definition: Event.h:191
std::vector< edm::EventProcessHistoryID > eventProcessHistoryIDs_
Definition: Event.h:189
ProcessHistoryID const & processHistoryID() const
const_iterator end() const
EventID const & id() const
edm::EventAuxiliary * pAux_
Definition: Event.h:193
EntryFinder entryFinder_
Definition: Event.h:192
virtual bool getByLabel(std::type_info const &, char const *, char const *, char const *, void *, Long_t) const
static void throwProductNotFoundException(std::type_info const &, char const *, char const *, char const *)
Definition: Event.cc:485
std::string const & eventTreeName()
Definition: BranchType.cc:254
std::vector< char const * > labels_
Definition: Event.h:187
std::string const & BranchTypeToAuxBranchName(BranchType const &branchType)
Definition: BranchType.cc:118
void fillParameterSetRegistry() const
Definition: Event.cc:409
unsigned int RunNumber_t
Definition: EventRange.h:32
T const * product() const
Definition: Handle.h:69
std::string const & eventHistoryTreeName()
Definition: BranchType.cc:262
tuple process
Definition: LaserDQM_cfg.py:3
bool insertMapped(value_type const &v)
TBranch * auxBranch_
Definition: Event.h:195
Long64_t scan(char const *varexp="", char const *selection="", Option_t *option="", Long64_t nentries=1000000000, Long64_t firstentry=0)
Definition: Event.cc:225
edm::WrapperHolder getByProductID(edm::ProductID const &, Long_t) const