diff --git a/EventFilter/EcalRawToDigi/plugins/EcalRawESProducerGPU.h b/EventFilter/EcalRawToDigi/plugins/EcalRawESProducerGPU.h deleted file mode 100644 index a21b174eaf03d..0000000000000 --- a/EventFilter/EcalRawToDigi/plugins/EcalRawESProducerGPU.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef EventFilter_EcalRawToDigi_plugins_EcalRawESProducerGPU_h -#define EventFilter_EcalRawToDigi_plugins_EcalRawESProducerGPU_h - -#include - -#include "FWCore/Framework/interface/ESProducer.h" -#include "FWCore/Framework/interface/ESTransientHandle.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/ModuleFactory.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/typelookup.h" - -template -class EcalRawESProducerGPU : public edm::ESProducer { -public: - explicit EcalRawESProducerGPU(edm::ParameterSet const& ps) { - auto const& label = ps.getParameter("label"); - auto const& name = ps.getParameter("ComponentName"); - auto cc = setWhatProduced(this, name); - token_ = cc.consumes(edm::ESInputTag{"", label}); - } - - std::unique_ptr produce(Record const& record) { - // retrieve conditions in old format - auto sourceProduct = record.getTransientHandle(token_); - - return std::make_unique(*sourceProduct); - } - - static void fillDescriptions(edm::ConfigurationDescriptions& confDesc) { - edm::ParameterSetDescription desc; - - std::string label = Target::name() + "ESProducer"; - desc.add("ComponentName", ""); - desc.add("label", "")->setComment("Product Label"); - confDesc.add(label, desc); - } - -private: - edm::ESGetToken token_; -}; - -#endif // EventFilter_EcalRawToDigi_plugins_EcalRawESProducerGPU_h diff --git a/EventFilter/EcalRawToDigi/plugins/EcalRawESProducersGPUDefs.cc b/EventFilter/EcalRawToDigi/plugins/EcalRawESProducersGPUDefs.cc index 0133eb27d5c71..84fcc7b2b2952 100644 --- a/EventFilter/EcalRawToDigi/plugins/EcalRawESProducersGPUDefs.cc +++ b/EventFilter/EcalRawToDigi/plugins/EcalRawESProducersGPUDefs.cc @@ -1,12 +1,9 @@ -#include "EcalRawESProducerGPU.h" - #include "CondFormats/DataRecord/interface/EcalMappingElectronicsRcd.h" - #include "EventFilter/EcalRawToDigi/interface/ElectronicsMappingGPU.h" - -#include +#include "FWCore/Framework/interface/MakerMacros.h" +#include "HeterogeneousCore/CUDACore/interface/ConvertingESProducerT.h" using EcalElectronicsMappingGPUESProducer = - EcalRawESProducerGPU; + ConvertingESProducerT; DEFINE_FWK_EVENTSETUP_MODULE(EcalElectronicsMappingGPUESProducer); diff --git a/EventFilter/HcalRawToDigi/plugins/HcalESProducerGPUDefs.cc b/EventFilter/HcalRawToDigi/plugins/HcalESProducerGPUDefs.cc index aa601d6db06eb..749a98e990755 100644 --- a/EventFilter/HcalRawToDigi/plugins/HcalESProducerGPUDefs.cc +++ b/EventFilter/HcalRawToDigi/plugins/HcalESProducerGPUDefs.cc @@ -1,11 +1,10 @@ -#include - #include "CondFormats/DataRecord/interface/HcalElectronicsMapRcd.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "HeterogeneousCore/CUDACore/interface/ConvertingESProducerT.h" #include "ElectronicsMappingGPU.h" -#include "HcalRawESProducerGPU.h" using HcalElectronicsMappingGPUESProducer = - HcalRawESProducerGPU; + ConvertingESProducerT; DEFINE_FWK_EVENTSETUP_MODULE(HcalElectronicsMappingGPUESProducer); diff --git a/EventFilter/HcalRawToDigi/plugins/HcalRawESProducerGPU.h b/HeterogeneousCore/CUDACore/interface/ConvertingESProducerT.h similarity index 61% rename from EventFilter/HcalRawToDigi/plugins/HcalRawESProducerGPU.h rename to HeterogeneousCore/CUDACore/interface/ConvertingESProducerT.h index 5fef77229757b..e47695f51cec7 100644 --- a/EventFilter/HcalRawToDigi/plugins/HcalRawESProducerGPU.h +++ b/HeterogeneousCore/CUDACore/interface/ConvertingESProducerT.h @@ -1,7 +1,5 @@ -#ifndef RecoLocalCalo_HcalRecProducers_src_HcalRawESProducerGPU_h -#define RecoLocalCalo_HcalRecProducers_src_HcalRawESProducerGPU_h - -#include +#ifndef HeterogeneousCore_CUDACore_interface_ConvertingESProducerT_h +#define HeterogeneousCore_CUDACore_interface_ConvertingESProducerT_h #include "FWCore/Framework/interface/ESProducer.h" #include "FWCore/Framework/interface/ESTransientHandle.h" @@ -11,10 +9,10 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Utilities/interface/typelookup.h" -template -class HcalRawESProducerGPU : public edm::ESProducer { +template +class ConvertingESProducerT : public edm::ESProducer { public: - explicit HcalRawESProducerGPU(edm::ParameterSet const& ps) { + explicit ConvertingESProducerT(edm::ParameterSet const& ps) { auto const& label = ps.getParameter("label"); auto const& name = ps.getParameter("ComponentName"); auto cc = setWhatProduced(this, name); @@ -22,17 +20,15 @@ class HcalRawESProducerGPU : public edm::ESProducer { } std::unique_ptr produce(Record const& record) { - // retrieve conditions in old format - auto sourceProduct = record.getTransientHandle(token_); - - return std::make_unique(*sourceProduct); + // retrieve conditions in the old format and build a product in the new format + return std::make_unique(record.get(token_)); } static void fillDescriptions(edm::ConfigurationDescriptions& confDesc) { edm::ParameterSetDescription desc; desc.add("ComponentName", ""); - desc.add("label", "")->setComment("Product Label"); + desc.add("label", "")->setComment("ESProduct label"); confDesc.addWithDefaultLabel(desc); } @@ -40,4 +36,4 @@ class HcalRawESProducerGPU : public edm::ESProducer { edm::ESGetToken token_; }; -#endif +#endif // HeterogeneousCore_CUDACore_interface_ConvertingESProducerT_h diff --git a/HeterogeneousCore/CUDACore/interface/ConvertingESProducerWithDependenciesT.h b/HeterogeneousCore/CUDACore/interface/ConvertingESProducerWithDependenciesT.h new file mode 100644 index 0000000000000..26151a83e3372 --- /dev/null +++ b/HeterogeneousCore/CUDACore/interface/ConvertingESProducerWithDependenciesT.h @@ -0,0 +1,110 @@ +#ifndef HeterogeneousCore_CUDACore_interface_ConvertingESProducerWithDependenciesT_h +#define HeterogeneousCore_CUDACore_interface_ConvertingESProducerWithDependenciesT_h + +#include +#include + +#include "FWCore/Framework/interface/ESProducer.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/ModuleFactory.h" +#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/typelookup.h" + +namespace detail { + // simple implementation of a type zipper over 2 tuples + // here, the main requirement is the default constructor for Gen template + // which __does__ exist for ESGetToken + + template