00001 #include "DataFormats/Provenance/interface/EventEntryInfo.h"
00002 #include "DataFormats/Provenance/interface/RunLumiEntryInfo.h"
00003 #include "DataFormats/Provenance/interface/EntryDescriptionID.h"
00004 #include "DataFormats/Provenance/interface/EventEntryDescription.h"
00005 #include "DataFormats/Provenance/interface/EntryDescriptionRegistry.h"
00006 #include <ostream>
00007
00008
00009
00010
00011
00012 namespace edm {
00013 RunLumiEntryInfo::RunLumiEntryInfo() :
00014 branchID_(),
00015 productStatus_(productstatus::uninitialized()),
00016 moduleDescriptionID_()
00017 {}
00018
00019 RunLumiEntryInfo::RunLumiEntryInfo(EventEntryInfo const& ei) :
00020 branchID_(ei.branchID()),
00021 productStatus_(ei.productStatus()),
00022 moduleDescriptionID_(ei.moduleDescriptionID())
00023 {}
00024
00025 RunLumiEntryInfo::RunLumiEntryInfo(BranchID const& bid) :
00026 branchID_(bid),
00027 productStatus_(productstatus::uninitialized()),
00028 moduleDescriptionID_()
00029 {}
00030
00031 RunLumiEntryInfo::RunLumiEntryInfo(BranchID const& bid,
00032 ProductStatus status) :
00033 branchID_(bid),
00034 productStatus_(status),
00035 moduleDescriptionID_()
00036 {}
00037
00038
00039
00040 RunLumiEntryInfo::RunLumiEntryInfo(BranchID const& bid,
00041 ProductStatus status,
00042 ModuleDescriptionID const& mid,
00043 ProductID const&,
00044 std::vector<BranchID> const&) :
00045 branchID_(bid),
00046 productStatus_(status),
00047 moduleDescriptionID_(mid)
00048 {}
00049
00050 RunLumiEntryInfo::RunLumiEntryInfo(BranchID const& bid,
00051 ProductStatus status,
00052 ProductID const&,
00053 EntryDescriptionID const& edid) :
00054 branchID_(bid),
00055 productStatus_(status),
00056 moduleDescriptionID_() {
00057 EventEntryDescription ed;
00058 EntryDescriptionRegistry::instance()->getMapped(edid, ed);
00059 moduleDescriptionID_ = ed.moduleDescriptionID();
00060 }
00061
00062 EventEntryInfo
00063 RunLumiEntryInfo::makeEntryInfo() const {
00064 return EventEntryInfo(branchID_, productStatus_, moduleDescriptionID_);
00065 }
00066
00067 void
00068 RunLumiEntryInfo::setPresent() {
00069 if (productstatus::present(productStatus())) return;
00070 assert(productstatus::unknown(productStatus()));
00071 setStatus(productstatus::present());
00072 }
00073
00074 void
00075 RunLumiEntryInfo::setNotPresent() {
00076 if (productstatus::neverCreated(productStatus())) return;
00077 assert(productstatus::unknown(productStatus()));
00078 setStatus(productstatus::neverCreated());
00079 }
00080
00081 void
00082 RunLumiEntryInfo::write(std::ostream& os) const {
00083 os << "branch ID = " << branchID() << '\n';
00084 os << "product status = " << productStatus() << '\n';
00085 os << "module description ID = " << moduleDescriptionID() << '\n';
00086 }
00087
00088 bool
00089 operator==(RunLumiEntryInfo const& a, RunLumiEntryInfo const& b) {
00090 return
00091 a.branchID() == b.branchID()
00092 && a.productStatus() == b.productStatus()
00093 && a.moduleDescriptionID() == b.moduleDescriptionID();
00094 }
00095 }