artdaq  v2_03_02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
KeptProvenance.h
1 #ifndef art_Framework_IO_Root_detail_KeptProvenance_h
2 #define art_Framework_IO_Root_detail_KeptProvenance_h
3 
4 // =============================================================
5 // KeptProvenance: Auxiliary class to handle provenance
6 // information...so I don't lose my mind in
7 // RootOutputFile::fillBranches.
8 
9 #include "art/Framework/IO/Root/DropMetaData.h"
10 #include "canvas/Persistency/Provenance/BranchID.h"
11 #include "canvas/Persistency/Provenance/ProductProvenance.h"
12 
13 #include <set>
14 
15 namespace art {
16 
17  class Principal;
18 
19  namespace detail {
20 
22  public:
23  KeptProvenance(DropMetaData dropMetaData,
24  bool dropMetaDataForDroppedData,
25  std::set<BranchID>& branchesWithStoredHistory);
26 
27  ProductProvenance const& insert(ProductProvenance const&);
28  ProductProvenance const& emplace(BranchID, ProductStatus);
29  void setStatus(ProductProvenance const&, ProductStatus);
30 
31  auto begin() const { return provenance_.begin(); }
32  auto end() const { return provenance_.end(); }
33 
34  void insertAncestors(ProductProvenance const& iGetParents,
35  Principal const& principal);
36 
37  private:
38  bool const keepProvenance_ {true};
39  DropMetaData const dropMetaData_;
40  bool const dropMetaDataForDroppedData_;
41  std::set<BranchID>& branchesWithStoredHistory_;
42  std::set<ProductProvenance> provenance_ {};
43  };
44 
45  }
46 }
47 
48 #endif
49 
50 // Local variables:
51 // mode: c++
52 // End: