File indexing completed on 2024-04-06 12:12:33
0001 #include "FWCore/Framework/interface/ESProducerLooper.h"
0002 #include "FWCore/Framework/interface/Event.h"
0003 #include "FWCore/Framework/interface/EventSetup.h"
0004 #include "FWCore/Framework/interface/LooperFactory.h"
0005 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0008 #include "FWCore/Utilities/interface/InputTag.h"
0009
0010 #include "Doodad.h"
0011 #include "GadgetRcd.h"
0012
0013 namespace edmtest {
0014 class DoodadEDLooper : public edm::ESProducerLooper {
0015 public:
0016 DoodadEDLooper(edm::ParameterSet const& iPSet) : token_(esConsumes<edm::Transition::BeginRun>()) {}
0017 ~DoodadEDLooper() override = default;
0018
0019 void startingNewLoop(unsigned int) override {}
0020
0021 void beginOfJob(edm::EventSetup const& iSetup) override {
0022 auto& doodad = iSetup.getData(token_);
0023 if (doodad.a != 1) {
0024 throw cms::Exception("TestFailure") << "beginOfJob: got " << doodad.a << " while expected 1";
0025 }
0026 }
0027
0028 void beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) override {
0029 auto& doodad = iSetup.getData(token_);
0030 if (doodad.a != 1) {
0031 throw cms::Exception("TestFailure") << "beginRun: got " << doodad.a << " while expected 1";
0032 }
0033 }
0034
0035 Status duringLoop(edm::Event const& iEvent, edm::EventSetup const& iSetup) override { return kContinue; }
0036
0037 Status endOfLoop(edm::EventSetup const&, unsigned int iCount) override { return iCount == 2 ? kStop : kContinue; }
0038
0039 private:
0040 edm::ESGetToken<Doodad, GadgetRcd> token_;
0041 };
0042 }
0043
0044 using namespace edmtest;
0045 DEFINE_FWK_LOOPER(DoodadEDLooper);