Back to home page

Project CMSSW displayed by LXR

 
 

    


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 }  // namespace edmtest
0043 
0044 using namespace edmtest;
0045 DEFINE_FWK_LOOPER(DoodadEDLooper);