CMS 3D CMS Logo

ProductProvenanceRetriever.h
Go to the documentation of this file.
1 #ifndef DataFormats_Provenance_ProductProvenanceRetriever_h
2 #define DataFormats_Provenance_ProductProvenanceRetriever_h
3 
4 /*----------------------------------------------------------------------
5 
6 ProductProvenanceRetriever: Manages the per event/lumi/run per product provenance.
7 
8 ----------------------------------------------------------------------*/
13 
14 #include <memory>
15 #include <set>
16 #include <atomic>
17 
18 /*
19  ProductProvenanceRetriever
20 */
21 
22 namespace edm {
23  class ModuleCallingContext;
24  class ProductRegistry;
25 
27  public:
29  virtual ~ProvenanceReaderBase();
30  virtual std::set<ProductProvenance> readProvenance(unsigned int transitionIndex) const = 0;
32  ModuleCallingContext const* moduleCallingContext,
33  unsigned int transitionIndex,
34  std::atomic<const std::set<ProductProvenance>*>& writeTo) const = 0;
35  };
36 
38  public:
39  explicit ProductProvenanceRetriever(unsigned int iTransitionIndex);
40  ProductProvenanceRetriever(unsigned int iTransitionIndex, edm::ProductRegistry const&);
41  explicit ProductProvenanceRetriever(std::unique_ptr<ProvenanceReaderBase> reader);
42 
44 
45  void mergeProvenanceRetrievers(std::shared_ptr<ProductProvenanceRetriever> other);
46 
48 
50 
51  void reset();
52 
53  void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const* moduleCallingContext) const;
54 
55  private:
56  std::unique_ptr<const std::set<ProductProvenance>> readProvenance() const final;
57  const ProductProvenanceLookup* nextRetriever() const final { return nextRetriever_.get(); }
58  void setTransitionIndex(unsigned int transitionIndex) { transitionIndex_ = transitionIndex; }
59 
61  std::shared_ptr<const ProvenanceReaderBase> provenanceReader_;
62  unsigned int transitionIndex_;
63  };
64 
65 } // namespace edm
66 #endif
edm::ProductProvenanceRetriever::nextRetriever
const ProductProvenanceLookup * nextRetriever() const final
Definition: ProductProvenanceRetriever.h:57
propagate_const.h
WaitingTaskHolder.h
edm::ProductProvenanceRetriever::readProvenanceAsync
void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext) const
Definition: ProductProvenanceRetriever.cc:36
edm::ProvenanceReaderBase
Definition: ProductProvenanceRetriever.h:26
edm
HLT enums.
Definition: AlignableModifier.h:19
edm::ProductProvenanceRetriever::operator=
ProductProvenanceRetriever & operator=(ProductProvenanceRetriever const &)=delete
edm::ProvenanceReaderBase::readProvenanceAsync
virtual void readProvenanceAsync(WaitingTaskHolder task, ModuleCallingContext const *moduleCallingContext, unsigned int transitionIndex, std::atomic< const std::set< ProductProvenance > * > &writeTo) const =0
watchdog.const
const
Definition: watchdog.py:83
edm::ProductRegistry
Definition: ProductRegistry.h:37
edm::propagate_const
Definition: propagate_const.h:32
DQM.reader
reader
Definition: DQM.py:105
edm::ProductProvenanceRetriever::mergeParentProcessRetriever
void mergeParentProcessRetriever(ProductProvenanceRetriever const &provRetriever)
Definition: ProductProvenanceRetriever.cc:85
ProductProvenance.h
TrackValidation_cff.task
task
Definition: TrackValidation_cff.py:253
edm::ProductProvenanceRetriever::readProvenance
std::unique_ptr< const std::set< ProductProvenance > > readProvenance() const final
Definition: ProductProvenanceRetriever.cc:28
ProductProvenanceLookup.h
trackingPlots.other
other
Definition: trackingPlots.py:1464
edm::ProductProvenanceRetriever::reset
void reset()
Definition: ProductProvenanceRetriever.cc:69
edm::ProductProvenanceRetriever::mergeProvenanceRetrievers
void mergeProvenanceRetrievers(std::shared_ptr< ProductProvenanceRetriever > other)
Definition: ProductProvenanceRetriever.cc:81
edm::WaitingTaskHolder
Definition: WaitingTaskHolder.h:32
edm::ProvenanceReaderBase::~ProvenanceReaderBase
virtual ~ProvenanceReaderBase()
Definition: ProductProvenanceRetriever.cc:89
edm::ProvenanceReaderBase::readProvenance
virtual std::set< ProductProvenance > readProvenance(unsigned int transitionIndex) const =0
edm::ProductProvenanceRetriever::deepCopy
void deepCopy(ProductProvenanceRetriever const &)
Definition: ProductProvenanceRetriever.cc:46
edm::ProductProvenanceRetriever
Definition: ProductProvenanceRetriever.h:37
edm::ProductProvenanceRetriever::nextRetriever_
edm::propagate_const< std::shared_ptr< ProductProvenanceRetriever > > nextRetriever_
Definition: ProductProvenanceRetriever.h:60
edm::ProductProvenanceRetriever::setTransitionIndex
void setTransitionIndex(unsigned int transitionIndex)
Definition: ProductProvenanceRetriever.h:58
edm::ProductProvenanceRetriever::transitionIndex_
unsigned int transitionIndex_
Definition: ProductProvenanceRetriever.h:62
edm::ProductProvenanceRetriever::ProductProvenanceRetriever
ProductProvenanceRetriever(unsigned int iTransitionIndex)
Definition: ProductProvenanceRetriever.cc:13
edm::ProvenanceReaderBase::ProvenanceReaderBase
ProvenanceReaderBase()
Definition: ProductProvenanceRetriever.h:28
edm::ProductProvenanceRetriever::provenanceReader_
std::shared_ptr< const ProvenanceReaderBase > provenanceReader_
Definition: ProductProvenanceRetriever.h:61
edm::ProductProvenanceLookup
Definition: ProductProvenanceLookup.h:27
edm::ModuleCallingContext
Definition: ModuleCallingContext.h:29