CMS 3D CMS Logo

EventEntryDescription.cc

Go to the documentation of this file.
00001 #include "DataFormats/Provenance/interface/EventEntryDescription.h"
00002 #include "DataFormats/Provenance/interface/ModuleDescriptionRegistry.h"
00003 #include "DataFormats/Provenance/interface/EntryDescriptionRegistry.h"
00004 #include <ostream>
00005 
00006 /*----------------------------------------------------------------------
00007 
00008 ----------------------------------------------------------------------*/
00009 
00010 namespace edm {
00011   EventEntryDescription::EventEntryDescription() :
00012     parents_(),
00013     moduleDescriptionID_(),
00014     transients_()
00015   { }
00016 
00017   void
00018   EventEntryDescription::init() const {
00019     if (!moduleDescriptionPtr()) {
00020       moduleDescriptionPtr().reset(new ModuleDescription);
00021       bool found = ModuleDescriptionRegistry::instance()->getMapped(moduleDescriptionID_, *moduleDescriptionPtr());
00022 
00023       assert(found);
00024     }
00025   }
00026 
00027   EntryDescriptionID
00028   EventEntryDescription::id() const
00029   {
00030     // This implementation is ripe for optimization.
00031     std::ostringstream oss;
00032     oss << moduleDescriptionID_ << ' ';
00033     for (std::vector<BranchID>::const_iterator 
00034            i = parents_.begin(),
00035            e = parents_.end();
00036          i != e;
00037          ++i)
00038       {
00039         oss << *i << ' ';
00040       }
00041     
00042     std::string stringrep = oss.str();
00043     cms::Digest md5alg(stringrep);
00044     return EntryDescriptionID(md5alg.digest().toString());
00045   }
00046 
00047 
00048   void
00049   EventEntryDescription::write(std::ostream& os) const {
00050     // This is grossly inadequate, but it is not critical for the
00051     // first pass.
00052     os << "Module Description ID = " << moduleDescriptionID() << '\n';
00053   }
00054     
00055   bool
00056   operator==(EventEntryDescription const& a, EventEntryDescription const& b) {
00057     return
00058       a.parents() == b.parents()
00059       && a.moduleDescriptionID() == b.moduleDescriptionID();
00060   }
00061 }

Generated on Tue Jun 9 17:31:37 2009 for CMSSW by  doxygen 1.5.4