File indexing completed on 2024-04-06 12:12:12
0001 #include "FWCore/Framework/interface/OccurrenceForOutput.h"
0002
0003 #include "DataFormats/Common/interface/TriggerResults.h"
0004 #include "DataFormats/Provenance/interface/Provenance.h"
0005 #include "DataFormats/Provenance/interface/StableProvenance.h"
0006 #include "FWCore/Common/interface/TriggerResultsByName.h"
0007 #include "FWCore/Framework/interface/Principal.h"
0008 #include "FWCore/ParameterSet/interface/Registry.h"
0009 #include "FWCore/Utilities/interface/Algorithms.h"
0010 #include "FWCore/Utilities/interface/InputTag.h"
0011
0012 namespace edm {
0013
0014 OccurrenceForOutput::OccurrenceForOutput(Principal const& p,
0015 ModuleDescription const& md,
0016 ModuleCallingContext const* moduleCallingContext,
0017 bool isAtEnd)
0018 : provRecorder_(p, md, isAtEnd), moduleCallingContext_(moduleCallingContext) {}
0019
0020 OccurrenceForOutput::~OccurrenceForOutput() {}
0021
0022 void OccurrenceForOutput::setConsumer(EDConsumerBase const* iConsumer) { provRecorder_.setConsumer(iConsumer); }
0023
0024 Principal const& OccurrenceForOutput::principal() const { return provRecorder_.principal(); }
0025
0026 ProcessHistoryID const& OccurrenceForOutput::processHistoryID() const { return principal().processHistoryID(); }
0027
0028 Provenance OccurrenceForOutput::getProvenance(BranchID const& bid) const {
0029 return provRecorder_.principal().getProvenance(bid);
0030 }
0031
0032 void OccurrenceForOutput::getAllProvenance(std::vector<Provenance const*>& provenances) const {
0033 provRecorder_.principal().getAllProvenance(provenances);
0034 }
0035
0036 void OccurrenceForOutput::getAllStableProvenance(std::vector<StableProvenance const*>& provenances) const {
0037 provRecorder_.principal().getAllStableProvenance(provenances);
0038 }
0039
0040 ProcessHistory const& OccurrenceForOutput::processHistory() const { return provRecorder_.processHistory(); }
0041
0042 size_t OccurrenceForOutput::size() const { return provRecorder_.principal().size(); }
0043
0044 BasicHandle OccurrenceForOutput::getByToken(EDGetToken token, TypeID const& typeID) const {
0045 auto result = provRecorder_.getByToken_(typeID, PRODUCT_TYPE, token, moduleCallingContext_);
0046 if (result.failedToGet()) {
0047 return result;
0048 }
0049 if (!provRecorder_.isComplete() && result.wrapper()->isMergeable()) {
0050 principal_get_adapter_detail::throwOnPrematureRead("RunOrLumi", typeID, token);
0051 }
0052 return result;
0053 }
0054 }