-
Notifications
You must be signed in to change notification settings - Fork 4.3k
/
StableProvenance.h
84 lines (62 loc) · 2.96 KB
/
StableProvenance.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#ifndef DataFormats_Provenance_StableProvenance_h
#define DataFormats_Provenance_StableProvenance_h
/*----------------------------------------------------------------------
StableProvenance: The full description of a product, excluding the parentage.
The parentage can change from event to event.
----------------------------------------------------------------------*/
#include "DataFormats/Provenance/interface/BranchDescription.h"
#include "DataFormats/Provenance/interface/ParameterSetID.h"
#include "DataFormats/Provenance/interface/ProcessHistory.h"
#include "DataFormats/Provenance/interface/ProductID.h"
#include "DataFormats/Provenance/interface/ReleaseVersion.h"
#include <memory>
#include <iosfwd>
/*
StableProvenance
definitions:
Product: The EDProduct to which a provenance object is associated
Creator: The EDProducer that made the product.
*/
namespace edm {
class StableProvenance {
public:
StableProvenance();
StableProvenance(std::shared_ptr<BranchDescription const> const& p, ProductID const& pid);
BranchDescription const& branchDescription() const {return *branchDescription_;}
std::shared_ptr<BranchDescription const> const& constBranchDescriptionPtr() const {return branchDescription_;}
BranchID const& branchID() const {return branchDescription().branchID();}
std::string const& branchName() const {return branchDescription().branchName();}
std::string const& className() const {return branchDescription().className();}
std::string const& moduleLabel() const {return branchDescription().moduleLabel();}
std::string const& moduleName() const {return branchDescription().moduleName();}
std::string const& processName() const {return branchDescription().processName();}
std::string const& productInstanceName() const {return branchDescription().productInstanceName();}
std::string const& friendlyClassName() const {return branchDescription().friendlyClassName();}
ProcessHistory const& processHistory() const {return *processHistory_;}
bool getProcessConfiguration(ProcessConfiguration& pc) const;
ReleaseVersion releaseVersion() const;
std::set<std::string> const& branchAliases() const {return branchDescription().branchAliases();}
void write(std::ostream& os) const;
void setProcessHistory(ProcessHistory const& ph) {processHistory_ = &ph;}
ProductID const& productID() const {return productID_;}
void setProductID(ProductID const& pid) {
productID_ = pid;
}
void setBranchDescription(std::shared_ptr<BranchDescription const> const& p) {
branchDescription_ = p;
}
void swap(StableProvenance&);
private:
std::shared_ptr<BranchDescription const> branchDescription_;
ProductID productID_;
ProcessHistory const* processHistory_; // We don't own this
};
inline
std::ostream&
operator<<(std::ostream& os, StableProvenance const& p) {
p.write(os);
return os;
}
bool operator==(StableProvenance const& a, StableProvenance const& b);
}
#endif