CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ProductProvenance.cc
Go to the documentation of this file.
3 #include <ostream>
4 #include <cassert>
5 
6 /*----------------------------------------------------------------------
7 
8 ----------------------------------------------------------------------*/
9 
10 namespace edm {
12  parentagePtr_(),
13  noParentage_(false)
14  {}
15 
17  branchID_(),
18  productStatus_(productstatus::uninitialized()),
19  parentageID_(),
20  transients_()
21  {}
22 
24  branchID_(bid),
25  productStatus_(productstatus::uninitialized()),
26  parentageID_(),
27  transients_()
28  {}
29 
32  branchID_(bid),
33  productStatus_(status),
34  parentageID_(),
35  transients_()
36  {}
37 
40  ParentageID const& edid) :
41  branchID_(bid),
42  productStatus_(status),
43  parentageID_(edid),
44  transients_()
45  {}
46 
49  boost::shared_ptr<Parentage> pPtr) :
50  branchID_(bid),
51  productStatus_(status),
52  parentageID_(pPtr->id()),
53  transients_() {
54  parentagePtr() = pPtr;
56  }
57 
60  std::vector<BranchID> const& parents) :
61  branchID_(bid),
62  productStatus_(status),
63  parentageID_(),
64  transients_() {
65  parentagePtr() = boost::shared_ptr<Parentage>(new Parentage);
66  parentagePtr()->parents() = parents;
67  parentageID_ = parentagePtr()->id();
69  }
70 
73  return *this;
74  }
75 
76  Parentage const &
78  if (!parentagePtr()) {
79  parentagePtr().reset(new Parentage);
81  }
82  return *parentagePtr();
83  }
84 
85  void
89  } else if (productstatus::present(productStatus())) {
90  assert(productstatus::present(status));
91  } else {
93  assert(productstatus::notPresent(status));
94  if (!productstatus::neverCreated(status)) {
96  }
97  }
98  }
99 
100  void
101  ProductProvenance::write(std::ostream& os) const {
102  os << "branch ID = " << branchID() << '\n';
103  os << "product status = " << static_cast<int>(productStatus()) << '\n';
104  if (!noParentage()) {
105  os << "entry description ID = " << parentageID() << '\n';
106  }
107  }
108 
109  bool
111  if (a.noParentage() != b.noParentage()) return false;
112  if (a.noParentage()) {
113  return
114  a.branchID() == b.branchID()
115  && a.productStatus() == b.productStatus();
116  }
117  return
118  a.branchID() == b.branchID()
119  && a.productStatus() == b.productStatus()
120  && a.parentageID() == b.parentageID();
121  }
122 }
ProductStatus uninitialized()
Definition: ProductStatus.h:30
BranchID const & branchID() const
ProductStatus productStatus_
TPRegexp parents
Definition: eve_filter.cc:24
byte_t ProductStatus
Definition: ProductStatus.h:15
bool notPresent(ProductStatus status)
Definition: ProductStatus.h:42
bool getMapped(key_type const &k, value_type &result) const
bool insertMapped(value_type const &v)
Transient< Transients > transients_
void write(std::ostream &os) const
bool operator==(debugging_allocator< X > const &, debugging_allocator< Y > const &)
ProductStatus neverCreated()
Definition: ProductStatus.h:18
ProductStatus const & productStatus() const
ProductStatus present()
Definition: ProductStatus.h:17
ProductProvenance makeProductProvenance() const
void setStatus(ProductStatus const &status)
bool & noParentage() const
double b
Definition: hdecay.h:120
ParentageID const & parentageID() const
double a
Definition: hdecay.h:121
static ThreadSafeRegistry * instance()
Parentage const & parentage() const
tuple status
Definition: ntuplemaker.py:245
boost::shared_ptr< Parentage > & parentagePtr() const
bool presenceUnknown(ProductStatus status)
Definition: ProductStatus.h:41