CMS 3D CMS Logo

Principal.h
Go to the documentation of this file.
1 #ifndef FWCore_Framework_Principal_h
2 #define FWCore_Framework_Principal_h
3 
4 /*----------------------------------------------------------------------
5 
6 Principal: This is the implementation of the classes responsible
7 for management of EDProducts. It is not seen by reconstruction code.
8 
9 The major internal component of the Principal is the ProductResolver, which
10 contains an EDProduct and its associated Provenance, along with
11 ancillary transient information regarding the two. ProductResolvers are handled
12 through shared pointers.
13 
14 The Principal returns BasicHandle, rather than a shared
15 pointer to a ProductResolver, when queried.
16 
17 (Historical note: prior to April 2007 this class was named DataBlockImpl)
18 
19 ----------------------------------------------------------------------*/
32 
33 #include "boost/iterator/filter_iterator.hpp"
34 
35 #include <map>
36 #include <memory>
37 #include <set>
38 #include <string>
39 #include <vector>
40 
41 namespace edm {
42 
43  class HistoryAppender;
44  class MergeableRunProductMetadata;
45  class ModuleCallingContext;
46  class ProductResolverIndexHelper;
47  class EDConsumerBase;
49  class InputProductResolver;
50  class WaitingTask;
52 
54  bool operator()(propagate_const<std::shared_ptr<ProductResolverBase>> const& iObj) { return bool(iObj); }
55  };
56 
57  class Principal : public EDProductGetter {
58  public:
59  typedef std::vector<propagate_const<std::shared_ptr<ProductResolverBase>>> ProductResolverCollection;
60  typedef boost::filter_iterator<FilledProductPtr, ProductResolverCollection::const_iterator> const_iterator;
61  typedef boost::filter_iterator<FilledProductPtr, ProductResolverCollection::iterator> iterator;
64  typedef std::vector<BasicHandle> BasicHandleVec;
66 
67  typedef std::shared_ptr<ProductResolverBase> SharedProductPtr;
69 
70  Principal(std::shared_ptr<ProductRegistry const> reg,
71  std::shared_ptr<ProductResolverIndexHelper const> productLookup,
72  ProcessConfiguration const& pc,
73  BranchType bt,
74  HistoryAppender* historyAppender,
75  bool isForPrimaryProcess = true);
76 
77  ~Principal() override;
78 
80 
82 
85  void fillPrincipal(std::string const& processNameOfBlock, DelayedReader* reader);
86 
87  void clearPrincipal();
88 
90 
91  void deleteProduct(BranchID const& id) const;
92 
93  EDProductGetter const* prodGetter() const { return this; }
94 
95  // Return a BasicHandle to the product which:
96  // 1. matches the given label, instance, and process
97  // (if process if empty gets the match from the most recent process)
98  // 2. If kindOfType is PRODUCT, then the type of the product matches typeID
99  // 3. If kindOfType is ELEMENT
100  // a. the product is a sequence,
101  // b. the sequence has the nested type 'value_type'
102  // c. typeID is the same as or a public base of
103  // this value_type,
104 
105  BasicHandle getByLabel(KindOfType kindOfType,
106  TypeID const& typeID,
107  InputTag const& inputTag,
108  EDConsumerBase const* consumes,
110  ModuleCallingContext const* mcc) const;
111 
112  BasicHandle getByLabel(KindOfType kindOfType,
113  TypeID const& typeID,
114  std::string const& label,
115  std::string const& instance,
116  std::string const& process,
117  EDConsumerBase const* consumes,
119  ModuleCallingContext const* mcc) const;
120 
121  BasicHandle getByToken(KindOfType kindOfType,
122  TypeID const& typeID,
124  bool skipCurrentProcess,
125  bool& ambiguous,
127  ModuleCallingContext const* mcc) const;
128 
129  void prefetchAsync(WaitingTask* waitTask,
131  bool skipCurrentProcess,
132  ServiceToken const& token,
133  ModuleCallingContext const* mcc) const;
134 
135  void getManyByType(TypeID const& typeID,
137  EDConsumerBase const* consumes,
139  ModuleCallingContext const* mcc) const;
140 
142 
144 
146 
147  ProductRegistry const& productRegistry() const { return *preg_; }
148 
150 
151  // merge Principals containing different products.
152  void recombine(Principal& other, std::vector<BranchID> const& bids);
153 
155  return const_cast<ProductResolverBase*>(const_cast<const Principal*>(this)->getProductResolver(oid));
156  }
157 
158  size_t size() const;
159 
160  // These iterators skip over any null shared pointers
162  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.begin(), productResolvers_.end());
163  }
164  const_iterator end() const {
165  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.end(), productResolvers_.end());
166  }
167 
169  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.begin(), productResolvers_.end());
170  }
172  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.end(), productResolvers_.end());
173  }
174 
175  Provenance getProvenance(BranchID const& bid, ModuleCallingContext const* mcc) const;
176 
177  void getAllProvenance(std::vector<Provenance const*>& provenances) const;
178 
179  void getAllStableProvenance(std::vector<StableProvenance const*>& provenances) const;
180 
181  BranchType const& branchType() const { return branchType_; }
182 
183  //This will never return 0 so you can use 0 to mean unset
184  typedef unsigned long CacheIdentifier_t;
186 
187  DelayedReader* reader() const { return reader_; }
188 
190 
191  ProductData const* findProductByTag(TypeID const& typeID,
192  InputTag const& tag,
193  ModuleCallingContext const* mcc) const;
194 
195  void readAllFromSourceAndMergeImmediately(MergeableRunProductMetadata const* mergeableRunProductMetadata = nullptr);
196 
197  std::vector<unsigned int> const& lookupProcessOrder() const { return lookupProcessOrder_; }
198 
200 
201  protected:
202  // ----- Add a new ProductResolver
203  // *this takes ownership of the ProductResolver, which in turn owns its
204  // data.
205  void addProduct_(std::unique_ptr<ProductResolverBase> phb);
206  void addProductOrThrow(std::unique_ptr<ProductResolverBase> phb);
208  ProductResolverBase const* getExistingProduct(BranchID const& branchID) const;
210 
211  void putOrMerge(BranchDescription const& bd, std::unique_ptr<WrapperBase> edp) const;
212 
213  //F must take an argument of type ProductResolverBase*
214  template <typename F>
215  void applyToResolvers(F iFunc) {
216  for (auto& resolver : productResolvers_) {
217  iFunc(resolver.get());
218  }
219  }
220 
221  private:
222  //called by adjustIndexesAfterProductRegistryAddition only if an index actually changed
223  virtual void changedIndexes_() {}
224 
225  void addScheduledProduct(std::shared_ptr<BranchDescription const> bd);
226  void addSourceProduct(std::shared_ptr<BranchDescription const> bd);
227  void addInputProduct(std::shared_ptr<BranchDescription const> bd);
228  void addUnscheduledProduct(std::shared_ptr<BranchDescription const> bd);
229  void addAliasedProduct(std::shared_ptr<BranchDescription const> bd);
230  void addSwitchProducerProduct(std::shared_ptr<BranchDescription const> bd);
231  void addSwitchAliasProduct(std::shared_ptr<BranchDescription const> bd);
232  void addParentProcessProduct(std::shared_ptr<BranchDescription const> bd);
233 
234  WrapperBase const* getIt(ProductID const&) const override;
235  std::optional<std::tuple<WrapperBase const*, unsigned int>> getThinnedProduct(ProductID const&,
236  unsigned int) const override;
237  void getThinnedProducts(ProductID const&,
238  std::vector<WrapperBase const*>&,
239  std::vector<unsigned int>&) const override;
241  unsigned int key,
242  ProductID const& thinned) const override;
243 
244  void findProducts(std::vector<ProductResolverBase const*> const& holders,
245  TypeID const& typeID,
248  ModuleCallingContext const* mcc) const;
249 
250  ProductData const* findProductByLabel(KindOfType kindOfType,
251  TypeID const& typeID,
252  InputTag const& inputTag,
253  EDConsumerBase const* consumer,
255  ModuleCallingContext const* mcc) const;
256 
257  ProductData const* findProductByLabel(KindOfType kindOfType,
258  TypeID const& typeID,
259  std::string const& label,
260  std::string const& instance,
261  std::string const& process,
262  EDConsumerBase const* consumer,
264  ModuleCallingContext const* mcc) const;
265 
266  void putOrMerge(std::unique_ptr<WrapperBase> prod, ProductResolverBase const* productResolver) const;
267 
268  std::shared_ptr<ProcessHistory const> processHistoryPtr_;
269 
272 
274 
275  // A vector of product holders.
276  ProductResolverCollection productResolvers_; // products and provenances are persistent
277 
278  // Pointer to the product registry. There is one entry in the registry
279  // for each EDProduct in the event.
280  std::shared_ptr<ProductRegistry const> preg_;
281  std::shared_ptr<ProductResolverIndexHelper const> productLookup_;
282 
283  std::vector<unsigned int> lookupProcessOrder_;
285 
286  // Pointer to the 'source' that will be used to obtain EDProducts
287  // from the persistent store. This 'source' is owned by the input source.
289 
291 
292  // In use cases where the new process should not be appended to
293  // input ProcessHistory, the following pointer should be null.
294  // The Principal does not own this object.
296 
298  };
299 
300  template <typename PROD>
301  inline std::shared_ptr<Wrapper<PROD> const> getProductByTag(Principal const& ep,
302  InputTag const& tag,
303  ModuleCallingContext const* mcc) {
304  TypeID tid = TypeID(typeid(PROD));
305  ProductData const* result = ep.findProductByTag(tid, tag, mcc);
306  if (result == nullptr) {
307  return std::shared_ptr<Wrapper<PROD> const>();
308  }
309 
310  if (!(result->wrapper()->dynamicTypeInfo() == typeid(PROD))) {
311  handleimpl::throwConvertTypeError(typeid(PROD), result->wrapper()->dynamicTypeInfo());
312  }
313  return std::static_pointer_cast<Wrapper<PROD> const>(result->sharedConstWrapper());
314  }
315 } // namespace edm
316 #endif
edm::Principal::ProductResolverCollection
std::vector< propagate_const< std::shared_ptr< ProductResolverBase > > > ProductResolverCollection
Definition: Principal.h:59
edm::SharedResourcesAcquirer
Definition: SharedResourcesAcquirer.h:34
ProvenanceFwd.h
ProductResolverBase.h
edm::ProductResolverIndex
unsigned int ProductResolverIndex
Definition: ProductResolverIndex.h:8
electrons_cff.bool
bool
Definition: electrons_cff.py:393
edm::Principal::findProducts
void findProducts(std::vector< ProductResolverBase const * > const &holders, TypeID const &typeID, BasicHandleVec &results, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:706
edm::BasicHandle
Definition: BasicHandle.h:43
propagate_const.h
edm::FilledProductPtr
Definition: Principal.h:53
edm::Principal::ProcessNameConstIterator
ProcessHistory::const_iterator ProcessNameConstIterator
Definition: Principal.h:62
edm::FilledProductPtr::operator()
bool operator()(propagate_const< std::shared_ptr< ProductResolverBase >> const &iObj)
Definition: Principal.h:54
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::Principal::readAllFromSourceAndMergeImmediately
void readAllFromSourceAndMergeImmediately(MergeableRunProductMetadata const *mergeableRunProductMetadata=nullptr)
Definition: Principal.cc:943
deep_tau::DeepTauBase::BasicDiscriminator
BasicDiscriminator
Definition: DeepTauBase.h:115
edm::Principal::adjustToNewProductRegistry
bool adjustToNewProductRegistry(ProductRegistry const &reg)
Definition: Principal.cc:310
edm::Principal::ConstProductResolverPtr
ProductResolverBase const * ConstProductResolverPtr
Definition: Principal.h:63
edm::Principal::findProductByTag
ProductData const * findProductByTag(TypeID const &typeID, InputTag const &tag, ModuleCallingContext const *mcc) const
Definition: Principal.cc:814
edm::Principal
Definition: Principal.h:57
bookConverter.results
results
Definition: bookConverter.py:144
edm::Principal::addSwitchProducerProduct
void addSwitchProducerProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:352
edm::ProductResolverIndexHelper
Definition: ProductResolverIndexHelper.h:89
edm::Principal::processHistory
ProcessHistory const & processHistory() const
Definition: Principal.h:141
edm::Principal::begin
const_iterator begin() const
Definition: Principal.h:161
edm::Principal::const_iterator
boost::filter_iterator< FilledProductPtr, ProductResolverCollection::const_iterator > const_iterator
Definition: Principal.h:60
edm::Principal::getThinnedKeyFrom
OptionalThinnedKey getThinnedKeyFrom(ProductID const &parent, unsigned int key, ProductID const &thinned) const override
Definition: Principal.cc:897
edm::Principal::recombine
void recombine(Principal &other, std::vector< BranchID > const &bids)
Definition: Principal.cc:869
edm::Principal::getProductResolverByIndex
ConstProductResolverPtr getProductResolverByIndex(ProductResolverIndex const &oid) const
Definition: Principal.cc:553
edm::BranchType
BranchType
Definition: BranchType.h:11
edm::Wrapper
Definition: Product.h:10
edm::Principal::addParentProcessProduct
void addParentProcessProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:368
edm::Principal::adjustIndexesAfterProductRegistryAddition
void adjustIndexesAfterProductRegistryAddition()
Definition: Principal.cc:918
edm::Principal::addScheduledProduct
void addScheduledProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:326
F
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
edm::ProductRegistry
Definition: ProductRegistry.h:37
edm::EDProductGetter
Definition: EDProductGetter.h:41
edm::Principal::getProvenance
Provenance getProvenance(BranchID const &bid, ModuleCallingContext const *mcc) const
Definition: Principal.cc:824
edm::ServiceToken
Definition: ServiceToken.h:40
edm::EDConsumerBase
Definition: EDConsumerBase.h:70
edm::handleimpl::throwConvertTypeError
void throwConvertTypeError(std::type_info const &expected, std::type_info const &actual)
Definition: ConvertHandle.cc:17
edm::propagate_const
Definition: propagate_const.h:32
trigger::size_type
uint16_t size_type
Definition: TriggerTypeDefs.h:18
edm::Principal::getThinnedProducts
void getThinnedProducts(ProductID const &, std::vector< WrapperBase const * > &, std::vector< unsigned int > &) const override
Definition: Principal.cc:891
ProcessHistory.h
edm::Principal::getAllProvenance
void getAllProvenance(std::vector< Provenance const * > &provenances) const
Definition: Principal.cc:841
WaitingTask
compare.hist
hist
Definition: compare.py:376
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
edm::Principal::processHistoryID
ProcessHistoryID const & processHistoryID() const
Definition: Principal.h:143
edm::Principal::end
iterator end()
Definition: Principal.h:171
edm::BranchID
Definition: BranchID.h:14
edm::Principal::reader
DelayedReader * reader() const
Definition: Principal.h:187
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
edm::Principal::getAllStableProvenance
void getAllStableProvenance(std::vector< StableProvenance const * > &provenances) const
Definition: Principal.cc:858
edm::Principal::BasicHandleVec
std::vector< BasicHandle > BasicHandleVec
Definition: Principal.h:64
edm::Principal::branchType
BranchType const & branchType() const
Definition: Principal.h:181
edm::Principal::processHistoryIDBeforeConfig_
ProcessHistoryID processHistoryIDBeforeConfig_
Definition: Principal.h:271
edm::MergeableRunProductMetadata
Definition: MergeableRunProductMetadata.h:52
edm::Principal::CacheIdentifier_t
unsigned long CacheIdentifier_t
Definition: Principal.h:184
edm::Principal::getProductResolver
ConstProductResolverPtr getProductResolver(BranchID const &oid) const
Definition: Principal.cc:545
edm::Hash< ProcessHistoryType >
trackingPlots.other
other
Definition: trackingPlots.py:1467
edm::Principal::prefetchAsync
void prefetchAsync(WaitingTask *waitTask, ProductResolverIndex index, bool skipCurrentProcess, ServiceToken const &token, ModuleCallingContext const *mcc) const
Definition: Principal.cc:626
edm::Principal::end
const_iterator end() const
Definition: Principal.h:164
edm::Principal::size_type
ProductResolverCollection::size_type size_type
Definition: Principal.h:65
edm::Principal::productRegistry
ProductRegistry const & productRegistry() const
Definition: Principal.h:147
WrapperBase.h
SharedResourcesAcquirer
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::Principal::reader_
DelayedReader * reader_
Definition: Principal.h:288
edm::Principal::begin
iterator begin()
Definition: Principal.h:168
edm::Principal::productLookup
ProductResolverIndexHelper const & productLookup() const
Definition: Principal.h:149
edm::Principal::ProcessName
std::string ProcessName
Definition: Principal.h:68
ConvertHandle.h
edm::ProcessHistory::const_iterator
collection_type::const_iterator const_iterator
Definition: ProcessHistory.h:19
edm::Principal::fillPrincipal
void fillPrincipal(DelayedReader *reader)
Definition: Principal.cc:393
edm::Principal::processHistoryPtr_
std::shared_ptr< ProcessHistory const > processHistoryPtr_
Definition: Principal.h:268
edm::Principal::getModifiableProductResolver
ProductResolverBase * getModifiableProductResolver(BranchID const &oid)
Definition: Principal.h:154
LaserDQM_cfg.process
process
Definition: LaserDQM_cfg.py:3
edm::Principal::processConfiguration_
ProcessConfiguration const * processConfiguration_
Definition: Principal.h:273
edm::Principal::addSwitchAliasProduct
void addSwitchAliasProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:360
edm::Principal::setupUnscheduled
void setupUnscheduled(UnscheduledConfigurator const &)
Definition: Principal.cc:389
edm::WrapperBase
Definition: WrapperBase.h:23
edm::Principal::getThinnedProduct
std::optional< std::tuple< WrapperBase const *, unsigned int > > getThinnedProduct(ProductID const &, unsigned int) const override
Definition: Principal.cc:885
edm::Principal::getExistingProduct
ProductResolverBase * getExistingProduct(BranchID const &branchID)
Definition: Principal.cc:492
edm::Principal::branchType_
BranchType branchType_
Definition: Principal.h:290
edm::UnscheduledConfigurator
Definition: UnscheduledConfigurator.h:32
edm::HistoryAppender
Definition: HistoryAppender.h:13
edm::Principal::lookupProcessOrder
std::vector< unsigned int > const & lookupProcessOrder() const
Definition: Principal.h:197
edm::Principal::clearPrincipal
void clearPrincipal()
Definition: Principal.cc:373
edm::Principal::SharedProductPtr
std::shared_ptr< ProductResolverBase > SharedProductPtr
Definition: Principal.h:67
instance
static PFTauRenderPlugin instance
Definition: PFTauRenderPlugin.cc:70
InputTag.h
edm::Principal::addAliasedProduct
void addAliasedProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:344
edm::OptionalThinnedKey
std::variant< unsigned int, detail::GetThinnedKeyFromExceptionFactory, std::monostate > OptionalThinnedKey
Definition: EDProductGetter.h:39
edm::Principal::getByToken
BasicHandle getByToken(KindOfType kindOfType, TypeID const &typeID, ProductResolverIndex index, bool skipCurrentProcess, bool &ambiguous, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:600
edm::Principal::addInputProduct
void addInputProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:336
edm::WaitingTask
Definition: WaitingTask.h:36
edm::TypeID
Definition: TypeID.h:22
edm::Principal::productResolvers_
ProductResolverCollection productResolvers_
Definition: Principal.h:276
Wrapper.h
edm::KindOfType
KindOfType
Definition: ProductKindOfType.h:5
edm::Principal::prodGetter
EDProductGetter const * prodGetter() const
Definition: Principal.h:93
edm::Principal::getManyByType
void getManyByType(TypeID const &typeID, BasicHandleVec &results, EDConsumerBase const *consumes, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:636
Frameworkfwd.h
edm::ProductResolverBase
Definition: ProductResolverBase.h:34
edm::Principal::size
size_t size() const
Definition: Principal.cc:298
edm::Principal::productLookup_
std::shared_ptr< ProductResolverIndexHelper const > productLookup_
Definition: Principal.h:281
edm::ProductData
Definition: ProductData.h:20
edm::Principal::iterator
boost::filter_iterator< FilledProductPtr, ProductResolverCollection::iterator > iterator
Definition: Principal.h:61
UnscheduledConfigurator
BasicHandle.h
edm::Principal::addProduct_
void addProduct_(std::unique_ptr< ProductResolverBase > phb)
Definition: Principal.cc:520
edm::DelayedReader
Definition: DelayedReader.h:29
edm::getProductByTag
std::shared_ptr< Wrapper< PROD > const > getProductByTag(Principal const &ep, InputTag const &tag, ModuleCallingContext const *mcc)
Definition: Principal.h:301
edm::Principal::processHistoryID_
ProcessHistoryID processHistoryID_
Definition: Principal.h:270
edm::Principal::getByLabel
BasicHandle getByLabel(KindOfType kindOfType, TypeID const &typeID, InputTag const &inputTag, EDConsumerBase const *consumes, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:558
OfflineOutput_cfi.consumer
consumer
Definition: OfflineOutput_cfi.py:3
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
edm::Principal::~Principal
~Principal() override
Definition: Principal.cc:293
EDProductGetter.h
edm::Principal::applyToResolvers
void applyToResolvers(F iFunc)
Definition: Principal.h:215
edm::Principal::changedIndexes_
virtual void changedIndexes_()
Definition: Principal.h:223
edm::BranchDescription
Definition: BranchDescription.h:32
edm::Principal::addSourceProduct
void addSourceProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:331
mps_fire.result
result
Definition: mps_fire.py:311
PROD
#define PROD(A, B)
Definition: Simplify_begin.h:55
edm::ProcessHistory
Definition: ProcessHistory.h:13
edm::Principal::putOrMerge
void putOrMerge(BranchDescription const &bd, std::unique_ptr< WrapperBase > edp) const
Definition: Principal.cc:906
edm::Principal::findProductByLabel
ProductData const * findProductByLabel(KindOfType kindOfType, TypeID const &typeID, InputTag const &inputTag, EDConsumerBase const *consumer, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:731
SimL1EmulatorRepack_Full_cff.inputTag
inputTag
Definition: SimL1EmulatorRepack_Full_cff.py:56
edm::Principal::addProductOrThrow
void addProductOrThrow(std::unique_ptr< ProductResolverBase > phb)
Definition: Principal.cc:533
edm::Provenance
Definition: Provenance.h:34
edm::Principal::cacheIdentifier_
CacheIdentifier_t cacheIdentifier_
Definition: Principal.h:297
edm::Principal::lookupProcessOrder_
std::vector< unsigned int > lookupProcessOrder_
Definition: Principal.h:283
edm::Principal::processConfiguration
ProcessConfiguration const & processConfiguration() const
Definition: Principal.h:145
crabWrapper.key
key
Definition: crabWrapper.py:19
edm::Principal::deleteProduct
void deleteProduct(BranchID const &id) const
Definition: Principal.cc:383
edm::Principal::historyAppender_
edm::propagate_const< HistoryAppender * > historyAppender_
Definition: Principal.h:295
edm::Principal::getIt
WrapperBase const * getIt(ProductID const &) const override
Definition: Principal.cc:880
edm::Principal::cacheIdentifier
CacheIdentifier_t cacheIdentifier() const
Definition: Principal.h:185
edm::Principal::addUnscheduledProduct
void addUnscheduledProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:340
edm::Principal::Principal
Principal(std::shared_ptr< ProductRegistry const > reg, std::shared_ptr< ProductResolverIndexHelper const > productLookup, ProcessConfiguration const &pc, BranchType bt, HistoryAppender *historyAppender, bool isForPrimaryProcess=true)
Definition: Principal.cc:121
class-composition.parent
parent
Definition: class-composition.py:88
ProductKindOfType.h
SiStripBadComponentsDQMServiceTemplate_cfg.ep
ep
Definition: SiStripBadComponentsDQMServiceTemplate_cfg.py:86
edm::InputTag
Definition: InputTag.h:15
label
const char * label
Definition: PFTauDecayModeTools.cc:11
edm::ProductID
Definition: ProductID.h:27
edm::ProcessConfiguration
Definition: ProcessConfiguration.h:14
edm::Principal::orderProcessHistoryID_
ProcessHistoryID orderProcessHistoryID_
Definition: Principal.h:284
edm::Principal::preg_
std::shared_ptr< ProductRegistry const > preg_
Definition: Principal.h:280
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:318