CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DataGetterHelper.h
Go to the documentation of this file.
1 #ifndef DataFormats_FWLite_DataGetterHelper_h
2 #define DataFormats_FWLite_DataGetterHelper_h
3 // -*- C++ -*-
4 //
5 // Package: DataFormats/FWLite
6 // Class : DataGetterHelper
7 //
16 //
17 // Original Author: Eric Vaandering
18 // Created: Fri Jan 29 12:45:17 CST 2010
19 //
20 
21 #if !defined(__CINT__) && !defined(__MAKECINT__)
22 
23 // user include files
28 
29 // system include files
30 #include "boost/shared_ptr.hpp"
31 
32 #include <cstring>
33 #include <map>
34 #include <memory>
35 #include <typeinfo>
36 #include <vector>
37 
38 // forward declarations
39 class TTreeCache;
40 class TTree;
41 
42 namespace fwlite {
44 
45  public:
46 // DataGetterHelper() {};
47  DataGetterHelper(TTree* tree,
48  boost::shared_ptr<HistoryGetterBase> historyGetter,
49  boost::shared_ptr<BranchMapReader> branchMap = boost::shared_ptr<BranchMapReader>(),
50  boost::shared_ptr<edm::EDProductGetter> getter = boost::shared_ptr<edm::EDProductGetter>(),
51  bool useCache = false);
52  virtual ~DataGetterHelper();
53 
54  // ---------- const member functions ---------------------
55  virtual std::string const getBranchNameFor(std::type_info const&,
56  char const*,
57  char const*,
58  char const*) const;
59 
60  // This function should only be called by fwlite::Handle<>
61  virtual bool getByLabel(std::type_info const&, char const*, char const*, char const*, void*, Long_t) const;
62  virtual bool getByLabel(std::type_info const&, char const*, char const*, char const*, edm::WrapperHolder&, Long_t) const;
63  edm::WrapperHolder getByProductID(edm::ProductID const&, Long_t) const;
64 
65  // ---------- static member functions --------------------
66  static void throwProductNotFoundException(std::type_info const&, char const*, char const*, char const*);
67 
68  // ---------- member functions ---------------------------
69 
70  void setGetter(boost::shared_ptr<edm::EDProductGetter> getter) {
71  getter_ = getter;
72  }
73 
75  return getter_.get();
76  }
77 
78  private:
79  DataGetterHelper(const DataGetterHelper&); // stop default
80 
81  const DataGetterHelper& operator=(const DataGetterHelper&); // stop default
82  internal::Data& getBranchDataFor(std::type_info const&, char const*, char const*, char const*) const;
83  void getBranchData(edm::EDProductGetter*, Long64_t, internal::Data&) const;
84 
85  // ---------- member data --------------------------------
86  TTree* tree_;
87  mutable boost::shared_ptr<BranchMapReader> branchMap_;
88  typedef std::map<internal::DataKey, boost::shared_ptr<internal::Data> > KeyToDataMap;
90  mutable std::vector<char const*> labels_;
91  const edm::ProcessHistory& history() const;
92 
93  mutable std::map<std::pair<edm::ProductID, edm::BranchListIndexes>,boost::shared_ptr<internal::Data> > idToData_;
94  boost::shared_ptr<fwlite::HistoryGetterBase> historyGetter_;
95  boost::shared_ptr<edm::EDProductGetter> getter_;
96  mutable std::auto_ptr<TTreeCache> tcache_;
97  mutable bool tcTrained_;
98  };
99 
100 }
101 
102 #endif /*__CINT__ */
103 
104 #endif
std::map< std::pair< edm::ProductID, edm::BranchListIndexes >, boost::shared_ptr< internal::Data > > idToData_
edm::EDProductGetter * getter()
std::vector< char const * > labels_
DataGetterHelper(TTree *tree, boost::shared_ptr< HistoryGetterBase > historyGetter, boost::shared_ptr< BranchMapReader > branchMap=boost::shared_ptr< BranchMapReader >(), boost::shared_ptr< edm::EDProductGetter > getter=boost::shared_ptr< edm::EDProductGetter >(), bool useCache=false)
virtual std::string const getBranchNameFor(std::type_info const &, char const *, char const *, char const *) const
const edm::ProcessHistory & history() const
std::map< internal::DataKey, boost::shared_ptr< internal::Data > > KeyToDataMap
boost::shared_ptr< edm::EDProductGetter > getter_
void setGetter(boost::shared_ptr< edm::EDProductGetter > getter)
static void throwProductNotFoundException(std::type_info const &, char const *, char const *, char const *)
const DataGetterHelper & operator=(const DataGetterHelper &)
std::auto_ptr< TTreeCache > tcache_
void getBranchData(edm::EDProductGetter *, Long64_t, internal::Data &) const
internal::Data & getBranchDataFor(std::type_info const &, char const *, char const *, char const *) const
boost::shared_ptr< BranchMapReader > branchMap_
virtual bool getByLabel(std::type_info const &, char const *, char const *, char const *, void *, Long_t) const
edm::WrapperHolder getByProductID(edm::ProductID const &, Long_t) const
boost::shared_ptr< fwlite::HistoryGetterBase > historyGetter_