CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ChainEvent.h
Go to the documentation of this file.
1 #ifndef DataFormats_FWLite_ChainEvent_h
2 #define DataFormats_FWLite_ChainEvent_h
3 // -*- C++ -*-
4 //
5 // Package: FWLite
6 // Class : ChainEvent
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Tue May 8 15:01:20 EDT 2007
19 //
20 #if !defined(__CINT__) && !defined(__MAKECINT__)
21 // system include files
22 #include <string>
23 #include <typeinfo>
24 #include <vector>
25 #include "boost/shared_ptr.hpp"
26 
27 // user include files
30 
31 // forward declarations
32 namespace edm {
33  class EDProduct;
34  class ProductRegistry;
35  class ProcessHistory;
36  class BranchDescription;
37  class EDProductGetter;
38  class EventAux;
39  class TriggerResults;
40  class TriggerNames;
42 }
43 
44 namespace fwlite {
45 
46  class ChainEvent : public EventBase
47 {
48 
49  public:
50 
51  ChainEvent(const std::vector<std::string>& iFileNames);
52  virtual ~ChainEvent();
53 
54  const ChainEvent& operator++();
55 
57  bool to(Long64_t iIndex);
58 
59  // If lumi is non-zero, go to event by Run, Lumi and Event number
60  // If lumi is 0, go to event by Run and Event number only.
61  bool to(const edm::EventID &id);
64 
65  // Go to the very first Event.
66  const ChainEvent& toBegin();
67 
68  // ---------- const member functions ---------------------
69  virtual const std::string getBranchNameFor(const std::type_info&,
70  const char*,
71  const char*,
72  const char*) const;
73 
74  // This function should only be called by fwlite::Handle<>
75  virtual bool getByLabel(const std::type_info&, const char*,
76  const char*, const char*, void*) const;
77  //void getByBranchName(const std::type_info&, const char*, void*&) const;
78 
79  bool isValid() const;
80  operator bool() const;
81  virtual bool atEnd() const;
82 
83  Long64_t size() const;
84 
85  virtual edm::EventAuxiliary const& eventAuxiliary() const;
86 
87  const std::vector<edm::BranchDescription>& getBranchDescriptions() const;
88  const std::vector<std::string>& getProcessHistory() const;
89  edm::ProcessHistory const& processHistory() const;
90 
91  TFile* getTFile() const {
92  return event_->getTFile();
93  }
94 
95  Long64_t eventIndex() const { return eventIndex_; }
96  virtual Long64_t fileIndex() const { return eventIndex_; }
97 
98  void setGetter( boost::shared_ptr<edm::EDProductGetter> getter ){
99  event_->setGetter( getter );
100  }
101 
102  Event const * event() const { return &*event_; }
103 
104  virtual edm::TriggerNames const& triggerNames(edm::TriggerResults const& triggerResults) const;
105  void fillParameterSetRegistry() const;
106  virtual edm::TriggerResultsByName triggerResultsByName(std::string const& process) const;
107 
108  // ---------- static member functions --------------------
109  static void throwProductNotFoundException(const std::type_info&, const char*, const char*, const char*);
110 
111  // ---------- member functions ---------------------------
112 
113  edm::EDProduct const* getByProductID(edm::ProductID const&) const;
115  fwlite::Run const& getRun();
116 
117  private:
118 
119  friend class MultiChainEvent;
120 
121  ChainEvent(const Event&); // stop default
122 
123  const ChainEvent& operator=(const Event&); // stop default
124 
125  void findSizes();
126  void switchToFile(Long64_t);
127  // ---------- member data --------------------------------
128  std::vector<std::string> fileNames_;
129  boost::shared_ptr<TFile> file_;
130  boost::shared_ptr<Event> event_;
131  Long64_t eventIndex_;
132  std::vector<Long64_t> accumulatedSize_;
133  boost::shared_ptr<edm::EDProductGetter> getter_;
134 
135 };
136 
137 }
138 #endif /*__CINT__ */
139 #endif
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: ChainEvent.cc:308
virtual edm::TriggerResultsByName triggerResultsByName(std::string const &process) const
Definition: ChainEvent.cc:320
static void throwProductNotFoundException(const std::type_info &, const char *, const char *, const char *)
Definition: ChainEvent.cc:328
Long64_t size() const
Definition: ChainEvent.cc:302
unsigned int EventNumber_t
Definition: EventID.h:30
virtual edm::EventAuxiliary const & eventAuxiliary() const
Definition: ChainEvent.cc:251
void switchToFile(Long64_t)
Definition: ChainEvent.cc:211
tuple lumi
Definition: fjr2json.py:41
TFile * getTFile() const
Definition: ChainEvent.h:91
edm::EDProduct const * getByProductID(edm::ProductID const &) const
Definition: ChainEvent.cc:277
virtual bool getByLabel(const std::type_info &, const char *, const char *, const char *, void *) const
Definition: ChainEvent.cc:268
Long64_t eventIndex_
Definition: ChainEvent.h:131
virtual ~ChainEvent()
Definition: ChainEvent.cc:76
unsigned int LuminosityBlockNumber_t
Definition: EventID.h:31
const std::vector< edm::BranchDescription > & getBranchDescriptions() const
Definition: ChainEvent.cc:233
const ChainEvent & operator++()
Definition: ChainEvent.cc:97
ChainEvent(const std::vector< std::string > &iFileNames)
Definition: ChainEvent.cc:35
fwlite::LuminosityBlock const & getLuminosityBlock()
Definition: ChainEvent.cc:256
const ChainEvent & toBegin()
Definition: ChainEvent.cc:200
void setGetter(boost::shared_ptr< edm::EDProductGetter > getter)
Definition: ChainEvent.h:98
void fillParameterSetRegistry() const
Definition: ChainEvent.cc:314
boost::shared_ptr< Event > event_
Definition: ChainEvent.h:130
fwlite::Run const & getRun()
Definition: ChainEvent.cc:261
bool to(Long64_t iIndex)
Go to the event at index iIndex.
Definition: ChainEvent.cc:115
virtual bool atEnd() const
Definition: ChainEvent.cc:293
const std::vector< std::string > & getProcessHistory() const
Definition: ChainEvent.cc:239
const ChainEvent & operator=(const Event &)
std::vector< Long64_t > accumulatedSize_
Definition: ChainEvent.h:132
virtual const std::string getBranchNameFor(const std::type_info &, const char *, const char *, const char *) const
Definition: ChainEvent.cc:224
boost::shared_ptr< edm::EDProductGetter > getter_
Definition: ChainEvent.h:133
tuple process
Definition: align_tpl.py:3
unsigned int RunNumber_t
Definition: EventRange.h:32
Long64_t eventIndex() const
Definition: ChainEvent.h:95
edm::ProcessHistory const & processHistory() const
Definition: ChainEvent.cc:245
Event const * event() const
Definition: ChainEvent.h:102
bool isValid() const
Definition: ChainEvent.cc:283
virtual Long64_t fileIndex() const
Definition: ChainEvent.h:96
boost::shared_ptr< TFile > file_
Definition: ChainEvent.h:129
std::vector< std::string > fileNames_
Definition: ChainEvent.h:128