CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
BareRootProductGetter.h
Go to the documentation of this file.
1 #ifndef FWLite_BareRootProductGetter_h
2 #define FWLite_BareRootProductGetter_h
3 // -*- C++ -*-
4 //
5 // Package: FWLite
6 // Class : BareRootProductGetter
7 //
16 //
17 // Original Author: Chris Jones
18 // Created: Tue May 23 11:03:27 EDT 2006
19 //
20 
21 // user include files
25 
26 // system include files
27 #include "Rtypes.h"
28 #include <map>
29 
30 // forward declarations
31 class TBranch;
32 class TFile;
33 class TTree;
34 
36 
37  public:
39  virtual ~BareRootProductGetter();
40 
41  // ---------- const member functions ---------------------
42  virtual edm::WrapperBase const* getIt(edm::ProductID const&) const override;
43 
44 private:
45 
46  // ---------- static member functions --------------------
47 
48  // ---------- member functions ---------------------------
49  virtual unsigned int transitionIndex_() const override {
50  return 0u;
51  }
52 
53  struct Buffer {
54  Buffer(edm::WrapperBase const* iProd, TBranch* iBranch, void* iAddress,
55  TClass* iClass) :
56  product_(iProd), branch_(iBranch), address_(iAddress), eventEntry_(-1),
57  class_(iClass) {}
59 
60  std::shared_ptr<edm::WrapperBase const> product_;
61  TBranch* branch_;
62  void* address_; //the address to pass to Root since as of 5.13 they cache that info
63  Long_t eventEntry_; //the event Entry used with the last GetEntry call
64  TClass* class_;
65  };
66  private:
67  BareRootProductGetter(BareRootProductGetter const&); // stop default
68 
69  BareRootProductGetter const& operator=(BareRootProductGetter const&); // stop default
70 
71  // ---------- member data --------------------------------
72  void setupNewFile(TFile*) const;
73  TBranch* findBranch(edm::ProductID const&) const;
74  Buffer* createNewBuffer(edm::ProductID const&) const;
75 
76 // mutable TFile* presentFile_;
77 // mutable TTree* eventTree_;
78 // mutable Long_t eventEntry_;
79 // typedef std::map<edm::ProductID,edm::BranchDescription> IdToBranchDesc;
80 // mutable IdToBranchDesc idToBranchDesc_;
81  typedef std::map<edm::ProductID, Buffer> IdToBuffers;
84 };
85 
86 #endif
TBranch * findBranch(edm::ProductID const &) const
void setupNewFile(TFile *) const
#define nullptr
virtual edm::WrapperBase const * getIt(edm::ProductID const &) const override
Buffer * createNewBuffer(edm::ProductID const &) const
std::map< edm::ProductID, Buffer > IdToBuffers
Buffer(edm::WrapperBase const *iProd, TBranch *iBranch, void *iAddress, TClass *iClass)
virtual unsigned int transitionIndex_() const override
BareRootProductGetter const & operator=(BareRootProductGetter const &)
fwlite::BranchMapReader branchMap_
std::shared_ptr< edm::WrapperBase const > product_