artdaq  v3_01_00
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 {
24  public:
25  KeptProvenance(DropMetaData dropMetaData,
26  bool dropMetaDataForDroppedData,
27  std::set<BranchID>& branchesWithStoredHistory);
28 
29  ProductProvenance const& insert(ProductProvenance const&);
30  ProductProvenance const& emplace(BranchID, ProductStatus);
31  void setStatus(ProductProvenance const&, ProductStatus);
32 
33  auto begin() const { return provenance_.begin(); }
34  auto end() const { return provenance_.end(); }
35 
36  void insertAncestors(ProductProvenance const& iGetParents,
37  Principal const& principal);
38 
39  private:
40  bool const keepProvenance_ {true};
41  DropMetaData const dropMetaData_;
42  bool const dropMetaDataForDroppedData_;
43  std::set<BranchID>& branchesWithStoredHistory_;
44  std::set<ProductProvenance> provenance_ {};
45  };
46 
47  }
48 }
49 
50 #endif
51 
52 // Local variables:
53 // mode: c++
54 // End:
Auxiliary class to handle provenance information