File indexing completed on 2025-02-14 03:16:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #include <memory>
0018 #include <optional>
0019
0020 #include "Doodad.h"
0021 #include "GadgetRcd.h"
0022 #include "WhatsIt.h"
0023
0024 #include "FWCore/Framework/interface/es_Label.h"
0025 #include "FWCore/Framework/interface/ESProducer.h"
0026 #include "FWCore/Framework/interface/ModuleFactory.h"
0027 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0029 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0030 #include "FWCore/Utilities/interface/ESGetToken.h"
0031 #include "FWCore/Utilities/interface/ESInputTag.h"
0032
0033 namespace edmtest {
0034
0035 class ConsumeWhatsIt : public edm::ESProducer {
0036 public:
0037 ConsumeWhatsIt(edm::ParameterSet const& pset);
0038
0039 using ReturnType = std::unique_ptr<WhatsIt>;
0040 using ReturnTypeA = std::unique_ptr<const WhatsIt>;
0041 using ReturnTypeB = std::shared_ptr<WhatsIt>;
0042 using ReturnTypeC = std::shared_ptr<const WhatsIt>;
0043 using ReturnTypeD = std::optional<WhatsIt>;
0044
0045 ReturnType produce(const GadgetRcd&);
0046 ReturnTypeA produceA(const GadgetRcd&);
0047 ReturnTypeB produceB(const GadgetRcd&);
0048 ReturnTypeC produceC(const GadgetRcd&);
0049 ReturnTypeD produceD(const GadgetRcd&);
0050
0051 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0052
0053 private:
0054 edm::ESGetToken<Doodad, GadgetRcd> token_;
0055 edm::ESGetToken<Doodad, GadgetRcd> tokenA_;
0056 edm::ESGetToken<Doodad, GadgetRcd> tokenB_;
0057 edm::ESGetToken<Doodad, GadgetRcd> tokenC_;
0058 edm::ESGetToken<Doodad, GadgetRcd> tokenD_;
0059
0060 edm::ESGetToken<WhatsIt, GadgetRcd> token_in_produce_;
0061 edm::ESGetToken<WhatsIt, GadgetRcd> tokenA_in_produce_;
0062 edm::ESGetToken<WhatsIt, GadgetRcd> tokenB_in_produce_;
0063 edm::ESGetToken<WhatsIt, GadgetRcd> tokenC_in_produce_;
0064 edm::ESGetToken<WhatsIt, GadgetRcd> tokenD_in_produce_;
0065
0066 edm::ESGetToken<WhatsIt, GadgetRcd> token_in_produceA_;
0067 edm::ESGetToken<WhatsIt, GadgetRcd> tokenA_in_produceA_;
0068 edm::ESGetToken<WhatsIt, GadgetRcd> tokenB_in_produceA_;
0069 edm::ESGetToken<WhatsIt, GadgetRcd> tokenC_in_produceA_;
0070 edm::ESGetToken<WhatsIt, GadgetRcd> tokenD_in_produceA_;
0071
0072 edm::ESGetToken<WhatsIt, GadgetRcd> token_in_produceB_;
0073 edm::ESGetToken<WhatsIt, GadgetRcd> tokenA_in_produceB_;
0074 edm::ESGetToken<WhatsIt, GadgetRcd> tokenB_in_produceB_;
0075 edm::ESGetToken<WhatsIt, GadgetRcd> tokenC_in_produceB_;
0076 edm::ESGetToken<WhatsIt, GadgetRcd> tokenD_in_produceB_;
0077
0078 edm::ESGetToken<WhatsIt, GadgetRcd> token_in_produceC_;
0079 edm::ESGetToken<WhatsIt, GadgetRcd> tokenA_in_produceC_;
0080 edm::ESGetToken<WhatsIt, GadgetRcd> tokenB_in_produceC_;
0081 edm::ESGetToken<WhatsIt, GadgetRcd> tokenC_in_produceC_;
0082 edm::ESGetToken<WhatsIt, GadgetRcd> tokenD_in_produceC_;
0083
0084 edm::ESGetToken<WhatsIt, GadgetRcd> token_in_produceD_;
0085 edm::ESGetToken<WhatsIt, GadgetRcd> tokenA_in_produceD_;
0086 edm::ESGetToken<WhatsIt, GadgetRcd> tokenB_in_produceD_;
0087 edm::ESGetToken<WhatsIt, GadgetRcd> tokenC_in_produceD_;
0088 edm::ESGetToken<WhatsIt, GadgetRcd> tokenD_in_produceD_;
0089 };
0090
0091 ConsumeWhatsIt::ConsumeWhatsIt(edm::ParameterSet const& pset) {
0092 auto collector = setWhatProduced(this, "R");
0093 auto collectorA = setWhatProduced(this, &ConsumeWhatsIt::produceA, edm::es::Label("AR"));
0094 auto collectorB = setWhatProduced(this, &ConsumeWhatsIt::produceB, edm::es::Label("BR"));
0095 auto collectorC = setWhatProduced(this, &ConsumeWhatsIt::produceC, edm::es::Label("CR"));
0096 auto collectorD = setWhatProduced(this, &ConsumeWhatsIt::produceD, edm::es::Label("DR"));
0097
0098 token_ = collector.consumes(edm::ESInputTag{"", ""});
0099 tokenA_ = collectorA.consumes(edm::ESInputTag{"", ""});
0100 tokenB_ = collectorB.consumes(edm::ESInputTag{"", ""});
0101 tokenC_ = collectorC.consumes(edm::ESInputTag{"", ""});
0102 tokenD_ = collectorD.consumes(edm::ESInputTag{"", ""});
0103
0104 token_in_produce_ = collector.consumes(pset.getParameter<edm::ESInputTag>("esInputTag_in_produce"));
0105 tokenA_in_produce_ = collector.consumes(pset.getParameter<edm::ESInputTag>("esInputTagA_in_produce"));
0106 tokenB_in_produce_ = collector.consumes(pset.getParameter<edm::ESInputTag>("esInputTagB_in_produce"));
0107 tokenC_in_produce_ = collector.consumes(pset.getParameter<edm::ESInputTag>("esInputTagC_in_produce"));
0108 tokenD_in_produce_ = collector.consumes(pset.getParameter<edm::ESInputTag>("esInputTagD_in_produce"));
0109
0110 token_in_produceA_ = collectorA.consumes(pset.getParameter<edm::ESInputTag>("esInputTag_in_produceA"));
0111 tokenA_in_produceA_ = collectorA.consumes(pset.getParameter<edm::ESInputTag>("esInputTagA_in_produceA"));
0112 tokenB_in_produceA_ = collectorA.consumes(pset.getParameter<edm::ESInputTag>("esInputTagB_in_produceA"));
0113 tokenC_in_produceA_ = collectorA.consumes(pset.getParameter<edm::ESInputTag>("esInputTagC_in_produceA"));
0114 tokenD_in_produceA_ = collectorA.consumes(pset.getParameter<edm::ESInputTag>("esInputTagD_in_produceA"));
0115
0116 token_in_produceB_ = collectorB.consumes(pset.getParameter<edm::ESInputTag>("esInputTag_in_produceB"));
0117 tokenA_in_produceB_ = collectorB.consumes(pset.getParameter<edm::ESInputTag>("esInputTagA_in_produceB"));
0118 tokenB_in_produceB_ = collectorB.consumes(pset.getParameter<edm::ESInputTag>("esInputTagB_in_produceB"));
0119 tokenC_in_produceB_ = collectorB.consumes(pset.getParameter<edm::ESInputTag>("esInputTagC_in_produceB"));
0120 tokenD_in_produceB_ = collectorB.consumes(pset.getParameter<edm::ESInputTag>("esInputTagD_in_produceB"));
0121
0122 token_in_produceC_ = collectorC.consumes(pset.getParameter<edm::ESInputTag>("esInputTag_in_produceC"));
0123 tokenA_in_produceC_ = collectorC.consumes(pset.getParameter<edm::ESInputTag>("esInputTagA_in_produceC"));
0124 tokenB_in_produceC_ = collectorC.consumes(pset.getParameter<edm::ESInputTag>("esInputTagB_in_produceC"));
0125 tokenC_in_produceC_ = collectorC.consumes(pset.getParameter<edm::ESInputTag>("esInputTagC_in_produceC"));
0126 tokenD_in_produceC_ = collectorC.consumes(pset.getParameter<edm::ESInputTag>("esInputTagD_in_produceC"));
0127
0128 token_in_produceD_ = collectorD.consumes(pset.getParameter<edm::ESInputTag>("esInputTag_in_produceD"));
0129 tokenA_in_produceD_ = collectorD.consumes(pset.getParameter<edm::ESInputTag>("esInputTagA_in_produceD"));
0130 tokenB_in_produceD_ = collectorD.consumes(pset.getParameter<edm::ESInputTag>("esInputTagB_in_produceD"));
0131 tokenC_in_produceD_ = collectorD.consumes(pset.getParameter<edm::ESInputTag>("esInputTagC_in_produceD"));
0132 tokenD_in_produceD_ = collectorD.consumes(pset.getParameter<edm::ESInputTag>("esInputTagD_in_produceD"));
0133 }
0134
0135 ConsumeWhatsIt::ReturnType ConsumeWhatsIt::produce(const GadgetRcd& iRecord) {
0136
0137
0138
0139
0140 auto pWhatsIt = std::make_unique<WhatsIt>();
0141 return pWhatsIt;
0142 }
0143
0144 ConsumeWhatsIt::ReturnTypeA ConsumeWhatsIt::produceA(const GadgetRcd& iRecord) {
0145 auto pWhatsIt = std::make_unique<WhatsIt>();
0146 return pWhatsIt;
0147 }
0148
0149 ConsumeWhatsIt::ReturnTypeB ConsumeWhatsIt::produceB(const GadgetRcd& iRecord) {
0150 auto pWhatsIt = std::make_shared<WhatsIt>();
0151 return pWhatsIt;
0152 }
0153
0154 ConsumeWhatsIt::ReturnTypeC ConsumeWhatsIt::produceC(const GadgetRcd& iRecord) {
0155 auto pWhatsIt = std::make_shared<WhatsIt>();
0156 return pWhatsIt;
0157 }
0158
0159 ConsumeWhatsIt::ReturnTypeD ConsumeWhatsIt::produceD(const GadgetRcd& iRecord) {
0160 auto pWhatsIt = std::make_optional<WhatsIt>();
0161 return pWhatsIt;
0162 }
0163
0164 void ConsumeWhatsIt::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0165 edm::ParameterSetDescription desc;
0166
0167 desc.add<edm::ESInputTag>("esInputTag_in_produce");
0168 desc.add<edm::ESInputTag>("esInputTagA_in_produce");
0169 desc.add<edm::ESInputTag>("esInputTagB_in_produce");
0170 desc.add<edm::ESInputTag>("esInputTagC_in_produce");
0171 desc.add<edm::ESInputTag>("esInputTagD_in_produce");
0172
0173 desc.add<edm::ESInputTag>("esInputTag_in_produceA");
0174 desc.add<edm::ESInputTag>("esInputTagA_in_produceA");
0175 desc.add<edm::ESInputTag>("esInputTagB_in_produceA");
0176 desc.add<edm::ESInputTag>("esInputTagC_in_produceA");
0177 desc.add<edm::ESInputTag>("esInputTagD_in_produceA");
0178
0179 desc.add<edm::ESInputTag>("esInputTag_in_produceB");
0180 desc.add<edm::ESInputTag>("esInputTagA_in_produceB");
0181 desc.add<edm::ESInputTag>("esInputTagB_in_produceB");
0182 desc.add<edm::ESInputTag>("esInputTagC_in_produceB");
0183 desc.add<edm::ESInputTag>("esInputTagD_in_produceB");
0184
0185 desc.add<edm::ESInputTag>("esInputTag_in_produceC");
0186 desc.add<edm::ESInputTag>("esInputTagA_in_produceC");
0187 desc.add<edm::ESInputTag>("esInputTagB_in_produceC");
0188 desc.add<edm::ESInputTag>("esInputTagC_in_produceC");
0189 desc.add<edm::ESInputTag>("esInputTagD_in_produceC");
0190
0191 desc.add<edm::ESInputTag>("esInputTag_in_produceD");
0192 desc.add<edm::ESInputTag>("esInputTagA_in_produceD");
0193 desc.add<edm::ESInputTag>("esInputTagB_in_produceD");
0194 desc.add<edm::ESInputTag>("esInputTagC_in_produceD");
0195 desc.add<edm::ESInputTag>("esInputTagD_in_produceD");
0196 descriptions.addDefault(desc);
0197 }
0198 }
0199 using namespace edmtest;
0200 DEFINE_FWK_EVENTSETUP_MODULE(ConsumeWhatsIt);