CMS 3D CMS Logo

Provenance.h
Go to the documentation of this file.
1 #ifndef DataFormats_Provenance_Provenance_h
2 #define DataFormats_Provenance_Provenance_h
3 
4 /*----------------------------------------------------------------------
5 
6 Provenance: The full description of a product and how it came into
7 existence.
8 
9 ----------------------------------------------------------------------*/
10 
14 
15 #include <memory>
16 
17 #include <iosfwd>
18 /*
19  Provenance
20 
21  definitions:
22  Product: The EDProduct to which a provenance object is associated
23 
24  Creator: The EDProducer that made the product.
25 
26  Parents: The EDProducts used as input by the creator.
27 */
28 
29 namespace edm {
30  class MergeableRunProductMetadataBase;
31  class ProductProvenance;
32  class ProductProvenanceRetriever;
33 
34  class Provenance {
35  public:
36  Provenance();
37 
38  Provenance(std::shared_ptr<BranchDescription const> const& p, ProductID const& pid);
39 
41 
42  StableProvenance const& stable() const {return stableProvenance_;}
44 
46  std::shared_ptr<BranchDescription const> const& constBranchDescriptionPtr() const {return stable().constBranchDescriptionPtr();}
47 
48  ProductProvenance const* productProvenance() const;
49  bool knownImproperlyMerged() const;
50  BranchID const& branchID() const {return stable().branchID();}
51  std::string const& branchName() const {return stable().branchName();}
52  std::string const& className() const {return stable().className();}
53  std::string const& moduleLabel() const {return stable().moduleLabel();}
54  std::string const& moduleName() const {return stable().moduleName();}
55  std::string const& processName() const {return stable().processName();}
58  ProductProvenanceRetriever const* store() const {return store_;}
59  ProcessHistory const& processHistory() const {return stable().processHistory();}
63  std::set<std::string> const& branchAliases() const {return stable().branchAliases();}
64 
65  // Usually branchID() and originalBranchID() return exactly the same result.
66  // The return values can differ only in cases where an EDAlias is involved.
67  // For example, if you "get" a product and then get the Provenance object
68  // available through the Handle, you will find that branchID() and originalBranchID()
69  // will return different values if and only if an EDAlias was used to specify
70  // the desired product and in a previous process the EDAlias was kept and
71  // the original branch name was dropped. In that case, branchID() returns
72  // the BranchID of the EDAlias and originalBranchID() returns the BranchID
73  // of the branch name that was dropped. One reason the original BranchID can
74  // be useful is that Parentage information is stored using the original BranchIDs.
75  BranchID const& originalBranchID() const {return stable().originalBranchID();}
76 
77  void write(std::ostream& os) const;
78 
80 
82 
83  ProductID const& productID() const {return stable().productID();}
84 
85  void setProductID(ProductID const& pid) {stable().setProductID(pid);}
86 
89  }
90 
91  void setBranchDescription(std::shared_ptr<BranchDescription const> const& p) {stable().setBranchDescription(p);}
92 
93  void swap(Provenance&);
94 
95  private:
99  };
100 
101  inline
102  std::ostream&
103  operator<<(std::ostream& os, Provenance const& p) {
104  p.write(os);
105  return os;
106  }
107 
108  bool operator==(Provenance const& a, Provenance const& b);
109 
110 }
111 #endif
std::set< std::string > const & branchAliases() const
ProductProvenanceRetriever const * store() const
Definition: Provenance.h:58
std::shared_ptr< BranchDescription const > const & constBranchDescriptionPtr() const
std::string const & className() const
std::set< std::string > const & branchAliases() const
Definition: Provenance.h:63
ReleaseVersion releaseVersion() const
void setBranchDescription(std::shared_ptr< BranchDescription const > const &p)
Definition: Provenance.h:91
StableProvenance const & stable() const
Definition: Provenance.h:42
ReleaseVersion releaseVersion() const
Definition: Provenance.h:62
std::string const & moduleName() const
BranchDescription const & branchDescription() const
void setProcessHistory(ProcessHistory const &ph)
bool getProcessConfiguration(ProcessConfiguration &pc) const
Definition: Provenance.h:61
ProcessHistory const * processHistoryPtr() const
Definition: Provenance.h:60
ProductProvenance const * productProvenance() const
Definition: Provenance.cc:35
std::string const & processName() const
Definition: Provenance.h:55
bool getProcessConfiguration(ProcessConfiguration &pc) const
void write(std::ostream &os) const
Definition: Provenance.cc:54
ProductProvenanceRetriever const * store_
Definition: Provenance.h:97
ProcessHistory const * processHistoryPtr() const
std::string const & productInstanceName() const
ProcessHistory const & processHistory() const
bool operator==(debugging_allocator< X > const &, debugging_allocator< Y > const &) noexcept
ProcessHistory const & processHistory() const
Definition: Provenance.h:59
void setStore(ProductProvenanceRetriever const *store)
Definition: Provenance.h:79
std::string const & friendlyClassName() const
Definition: Provenance.h:57
BranchID const & branchID() const
Definition: Provenance.h:50
std::shared_ptr< BranchDescription const > const & constBranchDescriptionPtr() const
Definition: Provenance.h:46
BranchID const & originalBranchID() const
Definition: Provenance.h:75
void setProductID(ProductID const &pid)
StableProvenance stableProvenance_
Definition: Provenance.h:96
BranchDescription const & branchDescription() const
Definition: Provenance.h:45
BranchID const & branchID() const
std::string const & className() const
Definition: Provenance.h:52
double b
Definition: hdecay.h:120
std::string ReleaseVersion
Definition: ReleaseVersion.h:7
std::string const & moduleLabel() const
Definition: Provenance.h:53
std::string const & friendlyClassName() const
std::string const & branchName() const
void setProductID(ProductID const &pid)
Definition: Provenance.h:85
MergeableRunProductMetadataBase const * mergeableRunProductMetadata_
Definition: Provenance.h:98
HLT enums.
void setProcessHistory(ProcessHistory const &ph)
Definition: Provenance.h:81
double a
Definition: hdecay.h:121
std::string const & processName() const
StableProvenance & stable()
Definition: Provenance.h:43
void setMergeableRunProductMetadata(MergeableRunProductMetadataBase const *mrpm)
Definition: Provenance.h:87
ProductID const & productID() const
Definition: Provenance.h:83
ProductID const & productID() const
std::string const & moduleLabel() const
std::string const & productInstanceName() const
Definition: Provenance.h:56
void setBranchDescription(std::shared_ptr< BranchDescription const > const &p)
std::string const & branchName() const
Definition: Provenance.h:51
std::ostream & operator<<(std::ostream &ost, const HLTGlobalStatus &hlt)
Formatted printout of trigger tbale.
bool knownImproperlyMerged() const
Definition: Provenance.cc:43
void swap(Provenance &)
Definition: Provenance.cc:70
BranchID const & originalBranchID() const
std::string const & moduleName() const
Definition: Provenance.h:54