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 #include "Rtypes.h"
30 
31 // system include files
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 edm {
43  class BranchDescription;
44  class BranchID;
45  class ObjectWithDict;
46  class ProductID;
47  class ThinnedAssociation;
48  class WrapperBase;
49 }
50 
51 namespace fwlite {
53 
54  public:
55 // DataGetterHelper() {};
56  DataGetterHelper(TTree* tree,
57  std::shared_ptr<HistoryGetterBase> historyGetter,
58  std::shared_ptr<BranchMapReader> branchMap = std::shared_ptr<BranchMapReader>(),
59  std::shared_ptr<edm::EDProductGetter> getter = std::shared_ptr<edm::EDProductGetter>(),
60  bool useCache = false);
61  virtual ~DataGetterHelper();
62 
63  // ---------- const member functions ---------------------
64  virtual std::string const getBranchNameFor(std::type_info const&,
65  char const*,
66  char const*,
67  char const*) const;
68 
69  // This function should only be called by fwlite::Handle<>
70  virtual bool getByLabel(std::type_info const&, char const*, char const*, char const*, void*, Long_t) const;
71 
72  edm::WrapperBase const* getByProductID(edm::ProductID const& pid, Long_t eventEntry) const;
73  edm::WrapperBase const* getThinnedProduct(edm::ProductID const& pid, unsigned int& key, Long_t eventEntry) const;
74  void getThinnedProducts(edm::ProductID const& pid,
75  std::vector<edm::WrapperBase const*>& foundContainers,
76  std::vector<unsigned int>& keys,
77  Long_t eventEntry) const;
78 
79  // ---------- static member functions --------------------
80 
81  // ---------- member functions ---------------------------
82 
83  void setGetter(std::shared_ptr<edm::EDProductGetter> getter) {
84  getter_ = getter;
85  }
86 
88  return getter_.get();
89  }
90 
91  private:
92 
93  DataGetterHelper(const DataGetterHelper&); // stop default
94  const DataGetterHelper& operator=(const DataGetterHelper&); // stop default
95 
96  typedef std::map<internal::DataKey, std::shared_ptr<internal::Data> > KeyToDataMap;
97 
98  internal::Data& getBranchDataFor(std::type_info const&, char const*, char const*, char const*) const;
99  void getBranchData(edm::EDProductGetter*, Long64_t, internal::Data&) const;
100  bool getByBranchDescription(edm::BranchDescription const&, Long_t eventEntry, KeyToDataMap::iterator&) const;
101  edm::WrapperBase const* getByBranchID(edm::BranchID const& bid, Long_t eventEntry) const;
103  edm::ThinnedAssociation const* getThinnedAssociation(edm::BranchID const& branchID, Long_t eventEntry) const;
104 
105  // ---------- member data --------------------------------
106  TTree* tree_;
107  mutable std::shared_ptr<BranchMapReader> branchMap_;
109  mutable std::vector<char const*> labels_;
110  const edm::ProcessHistory& history() const;
111 
112  mutable std::map<std::pair<edm::ProductID, edm::BranchListIndex>,std::shared_ptr<internal::Data> > idToData_;
113  mutable std::map<edm::BranchID, std::shared_ptr<internal::Data> > bidToData_;
114  std::shared_ptr<fwlite::HistoryGetterBase> historyGetter_;
115  std::shared_ptr<edm::EDProductGetter> getter_;
116  mutable bool tcTrained_;
117  };
118 
119 }
120 
121 #endif /*__CINT__ */
122 
123 #endif
edm::WrapperBase const * getByBranchID(edm::BranchID const &bid, Long_t eventEntry) const
edm::ThinnedAssociation const * getThinnedAssociation(edm::BranchID const &branchID, Long_t eventEntry) const
edm::EDProductGetter * getter()
std::vector< char const * > labels_
std::map< edm::BranchID, std::shared_ptr< internal::Data > > bidToData_
std::shared_ptr< edm::EDProductGetter > getter_
std::shared_ptr< fwlite::HistoryGetterBase > historyGetter_
virtual std::string const getBranchNameFor(std::type_info const &, char const *, char const *, char const *) const
std::map< std::pair< edm::ProductID, edm::BranchListIndex >, std::shared_ptr< internal::Data > > idToData_
void getThinnedProducts(edm::ProductID const &pid, std::vector< edm::WrapperBase const * > &foundContainers, std::vector< unsigned int > &keys, Long_t eventEntry) const
bool getByBranchDescription(edm::BranchDescription const &, Long_t eventEntry, KeyToDataMap::iterator &) const
const edm::ProcessHistory & history() const
std::map< internal::DataKey, std::shared_ptr< internal::Data > > KeyToDataMap
edm::WrapperBase const * getByProductID(edm::ProductID const &pid, Long_t eventEntry) const
DataGetterHelper(TTree *tree, std::shared_ptr< HistoryGetterBase > historyGetter, std::shared_ptr< BranchMapReader > branchMap=std::shared_ptr< BranchMapReader >(), std::shared_ptr< edm::EDProductGetter > getter=std::shared_ptr< edm::EDProductGetter >(), bool useCache=false)
void setGetter(std::shared_ptr< edm::EDProductGetter > getter)
const DataGetterHelper & operator=(const DataGetterHelper &)
string key
FastSim: produces sample of signal events, overlayed with premixed minbias events.
std::shared_ptr< BranchMapReader > branchMap_
tuple pid
Definition: sysUtil.py:22
void getBranchData(edm::EDProductGetter *, Long64_t, internal::Data &) const
internal::Data & getBranchDataFor(std::type_info const &, char const *, char const *, char const *) const
virtual bool getByLabel(std::type_info const &, char const *, char const *, char const *, void *, Long_t) const
edm::WrapperBase const * getThinnedProduct(edm::ProductID const &pid, unsigned int &key, Long_t eventEntry) const
edm::WrapperBase const * wrapperBasePtr(edm::ObjectWithDict const &) const