CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Provenance.cc
Go to the documentation of this file.
6 
7 /*----------------------------------------------------------------------
8 
9 ----------------------------------------------------------------------*/
10 
11 namespace edm {
12 
14  branchDescription_(),
15  productID_(),
16  processHistoryID_(),
17  productProvenanceValid_(false),
18  productProvenancePtr_(new ProductProvenance),
19  store_() {
20  }
21 
22  Provenance::Provenance(boost::shared_ptr<ConstBranchDescription> const& p, ProductID const& pid) :
23  branchDescription_(p),
24  productID_(pid),
25  processHistoryID_(),
26  productProvenanceValid_(false),
27  productProvenancePtr_(new ProductProvenance),
28  store_() {
29  }
30 
33  if(!store_) {
34  return 0;
35  }
37  ProductProvenance const* prov = store_->branchIDToProvenance(branchDescription_->branchID());
38  if (prov) {
39  *productProvenancePtr_ = *prov;
41  }
42  }
43  return productProvenancePtr_.get();
44  }
45 
48  if (parameterSetIDs().size() == 1) {
49  return parameterSetIDs().begin()->first;
50  }
51  if (moduleNames().size() == 1) {
52  return moduleNames().begin()->first;
53  }
54  // Get the ProcessHistory for this event.
56  ProcessHistory ph;
57  if (!phr->getMapped(processHistoryID(), ph)) {
58  return ProcessConfigurationID();
59  }
60 
62  if (!ph.getConfigurationForProcess(processName(), config)) {
63  return ProcessConfigurationID();
64  }
65  return config.id();
66  }
67 
68  ReleaseVersion const&
72  return pc.releaseVersion();
73  }
74 
77  if (product().parameterSetID().isValid()) {
78  return product().parameterSetID();
79  }
80  if (parameterSetIDs().size() == 1) {
81  return parameterSetIDs().begin()->second;
82  }
83  std::map<ProcessConfigurationID, ParameterSetID>::const_iterator it =
85  if (it == parameterSetIDs().end()) {
86  return ParameterSetID();
87  }
88  return it->second;
89  }
90 
91  std::string
93  if (!product().moduleName().empty()) {
94  return product().moduleName();
95  }
96  if (moduleNames().size() == 1) {
97  return moduleNames().begin()->second;
98  }
99  std::map<ProcessConfigurationID, std::string>::const_iterator it =
101  if (it == moduleNames().end()) {
102  return std::string();
103  }
104  return it->second;
105  }
106 
107  void
108  Provenance::write(std::ostream& os) const {
109  // This is grossly inadequate, but it is not critical for the
110  // first pass.
111  product().write(os);
112  productProvenance()->write(os);
113  }
114 
115  bool operator==(Provenance const& a, Provenance const& b) {
116  return a.product() == b.product();
117  }
118 
119  void
122  productProvenanceValid_ = false;
123  }
124 
125  void
127  *productProvenancePtr_ = prov;
129  }
130 
131  void
134  productID_.swap(iOther.productID_);
136  store_.swap(iOther.store_);
137  }
138 
139 }
140 
boost::shared_ptr< BranchMapper > store_
Definition: Provenance.h:110
ProcessConfigurationID id() const
static ThreadSafeRegistry * instance()
ProductProvenance * productProvenance() const
Definition: Provenance.h:51
bool getMapped(key_type const &k, value_type &result) const
ProductID productID_
Definition: Provenance.h:106
std::string const & processName() const
Definition: Provenance.h:63
void swap(ProductID &other)
Definition: ProductID.cc:17
void resetProductProvenance() const
Definition: Provenance.cc:120
void write(std::ostream &os) const
Definition: Provenance.cc:108
void write(std::ostream &os) const
ParameterSetID psetID() const
Definition: Provenance.cc:76
bool getConfigurationForProcess(std::string const &name, ProcessConfiguration &config) const
void write(std::ostream &os) const
ProductProvenance * resolve() const
Definition: Provenance.cc:32
bool operator==(debugging_allocator< X > const &, debugging_allocator< Y > const &)
Hash< ProcessConfigurationType > ProcessConfigurationID
#define end
Definition: vmac.h:38
BranchDescription const & product() const
Definition: Provenance.h:44
Hash< ParameterSetType > ParameterSetID
std::string const & moduleName() const
bool productProvenanceValid_
Definition: Provenance.h:108
std::map< ProcessConfigurationID, ParameterSetID > const & parameterSetIDs() const
Definition: Provenance.h:72
ParameterSetID const & parameterSetID() const
std::string moduleName() const
Definition: Provenance.cc:92
boost::shared_ptr< ProductProvenance > productProvenancePtr_
Definition: Provenance.h:109
ReleaseVersion const & releaseVersion() const
boost::shared_ptr< ConstBranchDescription > branchDescription_
Definition: Provenance.h:105
double b
Definition: hdecay.h:120
std::string ReleaseVersion
Definition: ReleaseVersion.h:7
ProcessHistoryID const & processHistoryID() const
Definition: Provenance.h:67
std::map< ProcessConfigurationID, std::string > const & moduleNames() const
Definition: Provenance.h:75
double a
Definition: hdecay.h:121
ReleaseVersion const & releaseVersion() const
Definition: Provenance.cc:69
void setProductProvenance(ProductProvenance const &prov) const
Definition: Provenance.cc:126
ProcessConfigurationID processConfigurationID() const
Definition: Provenance.cc:47
void swap(Provenance &)
Definition: Provenance.cc:132
tuple size
Write out results.