File indexing completed on 2024-04-06 12:05:02
0001 #ifndef DataFormats_Provenance_StableProvenance_h
0002 #define DataFormats_Provenance_StableProvenance_h
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "DataFormats/Provenance/interface/BranchDescription.h"
0012 #include "DataFormats/Provenance/interface/ParameterSetID.h"
0013 #include "DataFormats/Provenance/interface/ProcessHistory.h"
0014 #include "DataFormats/Provenance/interface/ProductID.h"
0015 #include "DataFormats/Provenance/interface/ReleaseVersion.h"
0016
0017 #include <memory>
0018
0019 #include <iosfwd>
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 namespace edm {
0030 class StableProvenance {
0031 public:
0032 StableProvenance();
0033
0034 StableProvenance(std::shared_ptr<BranchDescription const> const& p, ProductID const& pid);
0035
0036 BranchDescription const& branchDescription() const { return *branchDescription_; }
0037 std::shared_ptr<BranchDescription const> const& constBranchDescriptionPtr() const { return branchDescription_; }
0038
0039 BranchID const& branchID() const { return branchDescription().branchID(); }
0040 BranchID const& originalBranchID() const { return branchDescription().originalBranchID(); }
0041 std::string const& branchName() const { return branchDescription().branchName(); }
0042 std::string const& className() const { return branchDescription().className(); }
0043 std::string const& moduleLabel() const { return branchDescription().moduleLabel(); }
0044 std::string const& moduleName() const { return branchDescription().moduleName(); }
0045 std::string const& processName() const { return branchDescription().processName(); }
0046 std::string const& productInstanceName() const { return branchDescription().productInstanceName(); }
0047 std::string const& friendlyClassName() const { return branchDescription().friendlyClassName(); }
0048 std::set<std::string> const& branchAliases() const { return branchDescription().branchAliases(); }
0049
0050 void write(std::ostream& os) const;
0051
0052 ProductID const& productID() const { return productID_; }
0053
0054 void setProductID(ProductID const& pid) { productID_ = pid; }
0055
0056 void setBranchDescription(std::shared_ptr<BranchDescription const> const& p) { branchDescription_ = p; }
0057
0058 void swap(StableProvenance&);
0059
0060 private:
0061 std::shared_ptr<BranchDescription const> branchDescription_;
0062 ProductID productID_;
0063 };
0064
0065 inline std::ostream& operator<<(std::ostream& os, StableProvenance const& p) {
0066 p.write(os);
0067 return os;
0068 }
0069
0070 bool operator==(StableProvenance const& a, StableProvenance const& b);
0071
0072 }
0073 #endif