File indexing completed on 2024-04-06 12:01:16
0001 #ifndef UtilAlgos_ParameterAdapter_h
0002 #define UtilAlgos_ParameterAdapter_h
0003
0004 #include "FWCore/Framework/interface/ConsumesCollector.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSetfwd.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007
0008 namespace reco {
0009 namespace modules {
0010
0011 template <typename S>
0012 struct ParameterAdapter {
0013 static S make(const edm::ParameterSet& cfg) { return S(cfg); }
0014 static S make(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC) { return S(cfg, iC); }
0015 static S make(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC) { return S(cfg, iC); }
0016
0017 static void fillPSetDescription(edm::ParameterSetDescription& desc) { S::template fillPSetDescription(desc); }
0018 };
0019
0020 template <typename S>
0021 S make(const edm::ParameterSet& cfg) {
0022 return ParameterAdapter<S>::make(cfg);
0023 }
0024 template <typename S>
0025 S make(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC) {
0026 return ParameterAdapter<S>::make(cfg, iC);
0027 }
0028 template <typename S>
0029 S make(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC) {
0030 return ParameterAdapter<S>::make(cfg, iC);
0031 }
0032
0033 template <typename S>
0034 void fillPSetDescription(edm::ParameterSetDescription& desc) {
0035 ParameterAdapter<S>::fillPSetDescription(desc);
0036 }
0037 }
0038 }
0039
0040 #define NOPARAMETER_ADAPTER(TYPE) \
0041 namespace reco { \
0042 namespace modules { \
0043 struct ParameterAdapter<TYPE> { \
0044 static TYPE make(const edm::ParameterSet& cfg) { return TYPE(); } \
0045 static TYPE make(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC) { return TYPE(); } \
0046 static TYPE make(const edm::ParameterSet& cfg, edm::ConsumesCollector& iC) { return TYPE(); } \
0047 static void fillPSetDescription(edm::ParameterSetDescription& desc) {} \
0048 }; \
0049 } \
0050 }
0051
0052 #endif