CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/DataFormats/Provenance/interface/EntryDescription.h

Go to the documentation of this file.
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