File indexing completed on 2024-12-30 23:27:57
0001 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0002 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0003 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0004 #include "FWCore/Utilities/interface/InputTag.h"
0005 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/global/EDProducer.h"
0006 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESGetToken.h"
0007 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0008 #include "HeterogeneousCore/AlpakaTest/interface/AlpakaESTestRecords.h"
0009 #include "HeterogeneousCore/AlpakaTest/interface/alpaka/AlpakaESTestData.h"
0010
0011 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0012
0013
0014
0015 class TestAlpakaGlobalProducerNullES : public global::EDProducer<> {
0016 public:
0017 TestAlpakaGlobalProducerNullES(edm::ParameterSet const& config)
0018 : EDProducer<>(config),
0019 esTokenA_(esConsumes(config.getParameter<edm::ESInputTag>("eventSetupSource"))),
0020 esTokenC_(esConsumes(config.getParameter<edm::ESInputTag>("eventSetupSource"))),
0021 esTokenCNotExist_(esConsumes(edm::ESInputTag("", "doesNotExist"))) {}
0022
0023 void produce(edm::StreamID, device::Event& iEvent, device::EventSetup const& iSetup) const override {
0024 bool threw = false;
0025 try {
0026 [[maybe_unused]] auto handleA = iSetup.getHandle(esTokenA_);
0027 } catch (cms::Exception& e) {
0028 threw = true;
0029 }
0030 if (not threw) {
0031 throw cms::Exception("Assert") << "Getting AlpakaESTestDataADevice ESProduct did not throw";
0032 }
0033
0034 threw = false;
0035 try {
0036 [[maybe_unused]] auto const& prodC = iSetup.getData(esTokenC_);
0037 } catch (cms::Exception& e) {
0038 threw = true;
0039 }
0040 if (not threw) {
0041 throw cms::Exception("Assert") << "Getting AlpakaESTestDataCDevice ESProduct did not throw";
0042 }
0043
0044 auto handleC = iSetup.getHandle(esTokenCNotExist_);
0045 if (handleC.isValid()) {
0046 throw cms::Exception("Assert") << "Getting non-existing AlpakaESTestDataCDevice succeeded, should have failed";
0047 }
0048 threw = false;
0049 try {
0050 [[maybe_unused]] auto const& prodC = *handleC;
0051 } catch (cms::Exception& e) {
0052 threw = true;
0053 }
0054 if (not threw) {
0055 throw cms::Exception("Assert")
0056 << "De-referencing ESHandle of non-existentAlpakaESTestDataADevice did not throw";
0057 }
0058 }
0059
0060 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0061 edm::ParameterSetDescription desc;
0062 desc.add("eventSetupSource", edm::ESInputTag{});
0063 descriptions.addWithDefaultLabel(desc);
0064 }
0065
0066 private:
0067 const device::ESGetToken<AlpakaESTestDataADevice, AlpakaESTestRecordA> esTokenA_;
0068 const device::ESGetToken<AlpakaESTestDataCDevice, AlpakaESTestRecordA> esTokenC_;
0069 const device::ESGetToken<AlpakaESTestDataCDevice, AlpakaESTestRecordA> esTokenCNotExist_;
0070 };
0071
0072 }
0073
0074 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/MakerMacros.h"
0075 DEFINE_FWK_ALPAKA_MODULE(TestAlpakaGlobalProducerNullES);