00001 #ifndef DataFormats_Provenance_EntryDescription_h 00002 #define DataFormats_Provenance_EntryDescription_h 00003 00004 /*---------------------------------------------------------------------- 00005 00006 EntryDescription: The event dependent portion of the description of a product 00007 and how it came into existence. 00008 00009 ----------------------------------------------------------------------*/ 00010 #include <iosfwd> 00011 #include <vector> 00012 00013 #include "DataFormats/Provenance/interface/ProductID.h" 00014 #include "DataFormats/Provenance/interface/EntryDescriptionID.h" 00015 00016 /* 00017 EntryDescription 00018 00019 definitions: 00020 Product: The EDProduct to which a provenance object is associated 00021 00022 Creator: The EDProducer that made the product. 00023 00024 Parents: The EDProducts used as input by the creator. 00025 */ 00026 00027 namespace edm { 00028 class EntryDescription { 00029 public: 00030 EntryDescription(); 00031 00032 ~EntryDescription() {} 00033 00034 // Only the 'salient attributes' are encoded into the ID. 00035 EntryDescriptionID id() const; 00036 00037 void write(std::ostream& os) const; 00038 00039 std::vector<ProductID> const& parents() const {return parents_;} 00040 std::vector<ProductID> & parents() {return parents_;} 00041 00042 private: 00043 // The Branch IDs of the parents 00044 std::vector<ProductID> parents_; 00045 00046 // the last of these is not in the roadmap, but is on the board 00047 00048 Hash<ModuleDescriptionType> moduleDescriptionID_; 00049 00050 }; 00051 00052 inline 00053 std::ostream& 00054 operator<<(std::ostream& os, EntryDescription const& p) { 00055 p.write(os); 00056 return os; 00057 } 00058 } 00059 #endif