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 
84 
85  void clearPrincipal();
86 
88 
89  void deleteProduct(BranchID const& id) const;
90 
91  EDProductGetter const* prodGetter() const { return this; }
92 
93  // Return a BasicHandle to the product which:
94  // 1. matches the given label, instance, and process
95  // (if process if empty gets the match from the most recent process)
96  // 2. If kindOfType is PRODUCT, then the type of the product matches typeID
97  // 3. If kindOfType is ELEMENT
98  // a. the product is a sequence,
99  // b. the sequence has the nested type 'value_type'
100  // c. typeID is the same as or a public base of
101  // this value_type,
102 
103  BasicHandle getByLabel(KindOfType kindOfType,
104  TypeID const& typeID,
105  InputTag const& inputTag,
106  EDConsumerBase const* consumes,
108  ModuleCallingContext const* mcc) const;
109 
110  BasicHandle getByLabel(KindOfType kindOfType,
111  TypeID const& typeID,
112  std::string const& label,
113  std::string const& instance,
114  std::string const& process,
115  EDConsumerBase const* consumes,
117  ModuleCallingContext const* mcc) const;
118 
119  BasicHandle getByToken(KindOfType kindOfType,
120  TypeID const& typeID,
122  bool skipCurrentProcess,
123  bool& ambiguous,
125  ModuleCallingContext const* mcc) const;
126 
127  void prefetchAsync(WaitingTask* waitTask,
129  bool skipCurrentProcess,
130  ServiceToken const& token,
131  ModuleCallingContext const* mcc) const;
132 
133  void getManyByType(TypeID const& typeID,
135  EDConsumerBase const* consumes,
137  ModuleCallingContext const* mcc) const;
138 
140 
142 
144 
145  ProductRegistry const& productRegistry() const { return *preg_; }
146 
148 
149  // merge Principals containing different products.
150  void recombine(Principal& other, std::vector<BranchID> const& bids);
151 
153  return const_cast<ProductResolverBase*>(const_cast<const Principal*>(this)->getProductResolver(oid));
154  }
155 
156  size_t size() const;
157 
158  // These iterators skip over any null shared pointers
160  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.begin(), productResolvers_.end());
161  }
162  const_iterator end() const {
163  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.end(), productResolvers_.end());
164  }
165 
167  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.begin(), productResolvers_.end());
168  }
170  return boost::make_filter_iterator<FilledProductPtr>(productResolvers_.end(), productResolvers_.end());
171  }
172 
173  Provenance getProvenance(BranchID const& bid, ModuleCallingContext const* mcc) const;
174 
175  void getAllProvenance(std::vector<Provenance const*>& provenances) const;
176 
177  void getAllStableProvenance(std::vector<StableProvenance const*>& provenances) const;
178 
179  BranchType const& branchType() const { return branchType_; }
180 
181  //This will never return 0 so you can use 0 to mean unset
182  typedef unsigned long CacheIdentifier_t;
184 
185  DelayedReader* reader() const { return reader_; }
186 
188 
189  ProductData const* findProductByTag(TypeID const& typeID,
190  InputTag const& tag,
191  ModuleCallingContext const* mcc) const;
192 
193  void readAllFromSourceAndMergeImmediately(MergeableRunProductMetadata const* mergeableRunProductMetadata = nullptr);
194 
195  std::vector<unsigned int> const& lookupProcessOrder() const { return lookupProcessOrder_; }
196 
198 
199  protected:
200  // ----- Add a new ProductResolver
201  // *this takes ownership of the ProductResolver, which in turn owns its
202  // data.
203  void addProduct_(std::unique_ptr<ProductResolverBase> phb);
204  void addProductOrThrow(std::unique_ptr<ProductResolverBase> phb);
206  ProductResolverBase const* getExistingProduct(BranchID const& branchID) const;
208 
209  void putOrMerge(BranchDescription const& bd, std::unique_ptr<WrapperBase> edp) const;
210 
211  //F must take an argument of type ProductResolverBase*
212  template <typename F>
213  void applyToResolvers(F iFunc) {
214  for (auto& resolver : productResolvers_) {
215  iFunc(resolver.get());
216  }
217  }
218 
219  private:
220  //called by adjustIndexesAfterProductRegistryAddition only if an index actually changed
221  virtual void changedIndexes_() {}
222 
223  void addScheduledProduct(std::shared_ptr<BranchDescription const> bd);
224  void addSourceProduct(std::shared_ptr<BranchDescription const> bd);
225  void addInputProduct(std::shared_ptr<BranchDescription const> bd);
226  void addUnscheduledProduct(std::shared_ptr<BranchDescription const> bd);
227  void addAliasedProduct(std::shared_ptr<BranchDescription const> bd);
228  void addSwitchProducerProduct(std::shared_ptr<BranchDescription const> bd);
229  void addSwitchAliasProduct(std::shared_ptr<BranchDescription const> bd);
230  void addParentProcessProduct(std::shared_ptr<BranchDescription const> bd);
231 
232  WrapperBase const* getIt(ProductID const&) const override;
233  WrapperBase const* getThinnedProduct(ProductID const&, unsigned int&) const override;
234  void getThinnedProducts(ProductID const&,
235  std::vector<WrapperBase const*>&,
236  std::vector<unsigned int>&) const override;
237 
238  void findProducts(std::vector<ProductResolverBase const*> const& holders,
239  TypeID const& typeID,
242  ModuleCallingContext const* mcc) const;
243 
244  ProductData const* findProductByLabel(KindOfType kindOfType,
245  TypeID const& typeID,
246  InputTag const& inputTag,
247  EDConsumerBase const* consumer,
249  ModuleCallingContext const* mcc) const;
250 
251  ProductData const* findProductByLabel(KindOfType kindOfType,
252  TypeID const& typeID,
253  std::string const& label,
254  std::string const& instance,
255  std::string const& process,
256  EDConsumerBase const* consumer,
258  ModuleCallingContext const* mcc) const;
259 
260  void putOrMerge(std::unique_ptr<WrapperBase> prod, ProductResolverBase const* productResolver) const;
261 
262  std::shared_ptr<ProcessHistory const> processHistoryPtr_;
263 
266 
268 
269  // A vector of product holders.
270  ProductResolverCollection productResolvers_; // products and provenances are persistent
271 
272  // Pointer to the product registry. There is one entry in the registry
273  // for each EDProduct in the event.
274  std::shared_ptr<ProductRegistry const> preg_;
275  std::shared_ptr<ProductResolverIndexHelper const> productLookup_;
276 
277  std::vector<unsigned int> lookupProcessOrder_;
279 
280  // Pointer to the 'source' that will be used to obtain EDProducts
281  // from the persistent store. This 'source' is owned by the input source.
283 
285 
286  // In use cases where the new process should not be appended to
287  // input ProcessHistory, the following pointer should be null.
288  // The Principal does not own this object.
290 
292  };
293 
294  template <typename PROD>
295  inline std::shared_ptr<Wrapper<PROD> const> getProductByTag(Principal const& ep,
296  InputTag const& tag,
297  ModuleCallingContext const* mcc) {
298  TypeID tid = TypeID(typeid(PROD));
299  ProductData const* result = ep.findProductByTag(tid, tag, mcc);
300  if (result == nullptr) {
301  return std::shared_ptr<Wrapper<PROD> const>();
302  }
303 
304  if (!(result->wrapper()->dynamicTypeInfo() == typeid(PROD))) {
305  handleimpl::throwConvertTypeError(typeid(PROD), result->wrapper()->dynamicTypeInfo());
306  }
307  return std::static_pointer_cast<Wrapper<PROD> const>(result->sharedConstWrapper());
308  }
309 } // namespace edm
310 #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:372
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:681
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:909
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:789
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:139
edm::Principal::begin
const_iterator begin() const
Definition: Principal.h:159
edm::Principal::const_iterator
boost::filter_iterator< FilledProductPtr, ProductResolverCollection::const_iterator > const_iterator
Definition: Principal.h:60
edm::Principal::recombine
void recombine(Principal &other, std::vector< BranchID > const &bids)
Definition: Principal.cc:841
edm::Principal::getProductResolverByIndex
ConstProductResolverPtr getProductResolverByIndex(ProductResolverIndex const &oid) const
Definition: Principal.cc:535
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:884
edm::Principal::addScheduledProduct
void addScheduledProduct(std::shared_ptr< BranchDescription const > bd)
Definition: Principal.cc:326
edm::Principal::fillPrincipal
void fillPrincipal(ProcessHistoryID const &hist, ProcessHistory const *phr, DelayedReader *reader)
Definition: Principal.cc:394
F
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:163
edm::ProductRegistry
Definition: ProductRegistry.h:34
edm::EDProductGetter
Definition: EDProductGetter.h:32
edm::Principal::getProvenance
Provenance getProvenance(BranchID const &bid, ModuleCallingContext const *mcc) const
Definition: Principal.cc:796
edm::ServiceToken
Definition: ServiceToken.h:40
edm::EDConsumerBase
Definition: EDConsumerBase.h:62
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:862
ProcessHistory.h
edm::Principal::getAllProvenance
void getAllProvenance(std::vector< Provenance const * > &provenances) const
Definition: Principal.cc:813
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:141
edm::Principal::end
iterator end()
Definition: Principal.h:169
edm::BranchID
Definition: BranchID.h:14
edm::Principal::reader
DelayedReader * reader() const
Definition: Principal.h:185
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
edm::Principal::getAllStableProvenance
void getAllStableProvenance(std::vector< StableProvenance const * > &provenances) const
Definition: Principal.cc:830
edm::Principal::BasicHandleVec
std::vector< BasicHandle > BasicHandleVec
Definition: Principal.h:64
edm::Principal::branchType
BranchType const & branchType() const
Definition: Principal.h:179
edm::Principal::processHistoryIDBeforeConfig_
ProcessHistoryID processHistoryIDBeforeConfig_
Definition: Principal.h:265
edm::MergeableRunProductMetadata
Definition: MergeableRunProductMetadata.h:52
edm::Principal::CacheIdentifier_t
unsigned long CacheIdentifier_t
Definition: Principal.h:182
edm::Principal::getProductResolver
ConstProductResolverPtr getProductResolver(BranchID const &oid) const
Definition: Principal.cc:527
edm::Hash< ProcessHistoryType >
trackingPlots.other
other
Definition: trackingPlots.py:1465
edm::Principal::prefetchAsync
void prefetchAsync(WaitingTask *waitTask, ProductResolverIndex index, bool skipCurrentProcess, ServiceToken const &token, ModuleCallingContext const *mcc) const
Definition: Principal.cc:604
edm::Principal::end
const_iterator end() const
Definition: Principal.h:162
edm::Principal::size_type
ProductResolverCollection::size_type size_type
Definition: Principal.h:65
edm::Principal::productRegistry
ProductRegistry const & productRegistry() const
Definition: Principal.h:145
WrapperBase.h
SharedResourcesAcquirer
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
edm::Principal::reader_
DelayedReader * reader_
Definition: Principal.h:282
edm::Principal::begin
iterator begin()
Definition: Principal.h:166
edm::Principal::productLookup
ProductResolverIndexHelper const & productLookup() const
Definition: Principal.h:147
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::processHistoryPtr_
std::shared_ptr< ProcessHistory const > processHistoryPtr_
Definition: Principal.h:262
edm::Principal::getModifiableProductResolver
ProductResolverBase * getModifiableProductResolver(BranchID const &oid)
Definition: Principal.h:152
LaserDQM_cfg.process
process
Definition: LaserDQM_cfg.py:3
edm::Principal::processConfiguration_
ProcessConfiguration const * processConfiguration_
Definition: Principal.h:267
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::Principal::getThinnedProduct
WrapperBase const * getThinnedProduct(ProductID const &, unsigned int &) const override
Definition: Principal.cc:857
edm::WrapperBase
Definition: WrapperBase.h:23
edm::Principal::getExistingProduct
ProductResolverBase * getExistingProduct(BranchID const &branchID)
Definition: Principal.cc:474
edm::Principal::branchType_
BranchType branchType_
Definition: Principal.h:284
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:195
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::Principal::getByToken
BasicHandle getByToken(KindOfType kindOfType, TypeID const &typeID, ProductResolverIndex index, bool skipCurrentProcess, bool &ambiguous, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:578
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:270
Wrapper.h
edm::KindOfType
KindOfType
Definition: ProductKindOfType.h:5
edm::Principal::prodGetter
EDProductGetter const * prodGetter() const
Definition: Principal.h:91
edm::Principal::getManyByType
void getManyByType(TypeID const &typeID, BasicHandleVec &results, EDConsumerBase const *consumes, SharedResourcesAcquirer *sra, ModuleCallingContext const *mcc) const
Definition: Principal.cc:614
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:275
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:502
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:295
edm::Principal::processHistoryID_
ProcessHistoryID processHistoryID_
Definition: Principal.h:264
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:540
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:213
edm::Principal::changedIndexes_
virtual void changedIndexes_()
Definition: Principal.h:221
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:303
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:872
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:706
SimL1EmulatorRepack_Full_cff.inputTag
inputTag
Definition: SimL1EmulatorRepack_Full_cff.py:56
edm::Principal::addProductOrThrow
void addProductOrThrow(std::unique_ptr< ProductResolverBase > phb)
Definition: Principal.cc:515
edm::Provenance
Definition: Provenance.h:34
edm::Principal::cacheIdentifier_
CacheIdentifier_t cacheIdentifier_
Definition: Principal.h:291
edm::Principal::lookupProcessOrder_
std::vector< unsigned int > lookupProcessOrder_
Definition: Principal.h:277
edm::Principal::processConfiguration
ProcessConfiguration const & processConfiguration() const
Definition: Principal.h:143
edm::Principal::deleteProduct
void deleteProduct(BranchID const &id) const
Definition: Principal.cc:383
edm::Principal::historyAppender_
edm::propagate_const< HistoryAppender * > historyAppender_
Definition: Principal.h:289
edm::Principal::getIt
WrapperBase const * getIt(ProductID const &) const override
Definition: Principal.cc:852
edm::Principal::cacheIdentifier
CacheIdentifier_t cacheIdentifier() const
Definition: Principal.h:183
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
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:278
edm::Principal::preg_
std::shared_ptr< ProductRegistry const > preg_
Definition: Principal.h:274
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:316