Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:13:24

0001 // CepGen-CMSSW interfacing module
0002 //   2022-2024, Laurent Forthomme
0003 
0004 #ifndef GeneratorInterface_CepGenInterface_CepGenParametersConverter_h
0005 #define GeneratorInterface_CepGenInterface_CepGenParametersConverter_h
0006 
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 
0009 #include <CepGen/Core/ParametersList.h>
0010 
0011 namespace cepgen {
0012   ParametersList fromParameterSet(const edm::ParameterSet& iConfig) {
0013     ParametersList params;
0014     for (const auto& param : iConfig.getParameterNames()) {
0015       const auto cepgen_param = param == "name" ? MODULE_NAME : param;
0016       if (iConfig.existsAs<bool>(param))
0017         params.set(cepgen_param, iConfig.getParameter<bool>(param));
0018       if (iConfig.existsAs<int>(param))
0019         params.set(cepgen_param, iConfig.getParameter<int>(param));
0020       if (iConfig.existsAs<unsigned>(param))
0021         params.set<unsigned long long>(cepgen_param, iConfig.getParameter<unsigned>(param));
0022       if (iConfig.existsAs<double>(param))
0023         params.set(cepgen_param, iConfig.getParameter<double>(param));
0024       if (iConfig.existsAs<std::string>(param))
0025         params.set(cepgen_param, iConfig.getParameter<std::string>(param));
0026       if (iConfig.existsAs<std::vector<double> >(param)) {
0027         const auto& vec = iConfig.getParameter<std::vector<double> >(param);
0028         if (vec.size() == 2)
0029           params.set<Limits>(cepgen_param, Limits{vec.at(0), vec.at(1)});
0030         params.set(cepgen_param, iConfig.getParameter<std::vector<double> >(param));
0031       }
0032       if (iConfig.existsAs<std::vector<std::string> >(param))
0033         params.set(cepgen_param, iConfig.getParameter<std::vector<std::string> >(param));
0034       if (iConfig.existsAs<edm::ParameterSet>(param))
0035         params.set(cepgen_param, fromParameterSet(iConfig.getParameter<edm::ParameterSet>(param)));
0036     }
0037     return params;
0038   }
0039 }  // namespace cepgen
0040 
0041 #endif