File indexing completed on 2023-05-10 03:54:43
0001 #include <FWCore/Utilities/interface/ESInputTag.h>
0002
0003 #include <memory>
0004
0005
0006 #include "FWCore/Framework/interface/ModuleFactory.h"
0007 #include "FWCore/Framework/interface/ESProducer.h"
0008
0009 #include "FWCore/Framework/interface/ESHandle.h"
0010 #include "FWCore/Utilities/interface/Visibility.h"
0011
0012 #include "NavigationSchoolFactory.h"
0013 #include "RecoTracker/Record/interface/NavigationSchoolRecord.h"
0014
0015
0016
0017
0018
0019 class dso_hidden NavigationSchoolESProducer final : public edm::ESProducer {
0020 public:
0021 NavigationSchoolESProducer(const edm::ParameterSet&);
0022
0023 typedef std::unique_ptr<NavigationSchool> ReturnType;
0024
0025 virtual ReturnType produce(const NavigationSchoolRecord&);
0026
0027 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0028
0029 private:
0030
0031 edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magFieldToken_;
0032 edm::ESGetToken<GeometricSearchTracker, TrackerRecoGeometryRecord> geometricSearchTrackerToken_;
0033 const std::string navigationSchoolName_;
0034 std::string navigationSchoolPluginName_;
0035 };
0036
0037
0038
0039
0040
0041 NavigationSchoolESProducer::NavigationSchoolESProducer(const edm::ParameterSet& iConfig)
0042 : navigationSchoolName_(iConfig.getParameter<std::string>("ComponentName")),
0043 navigationSchoolPluginName_(iConfig.getParameter<std::string>("PluginName")) {
0044
0045
0046 auto cc = setWhatProduced(this, navigationSchoolName_);
0047 magFieldToken_ = cc.consumes(edm::ESInputTag("", iConfig.getParameter<std::string>("SimpleMagneticField")));
0048 geometricSearchTrackerToken_ = cc.consumes();
0049
0050
0051 if (navigationSchoolPluginName_.empty())
0052 navigationSchoolPluginName_ = navigationSchoolName_;
0053 }
0054
0055
0056
0057
0058
0059
0060 NavigationSchoolESProducer::ReturnType NavigationSchoolESProducer::produce(const NavigationSchoolRecord& iRecord) {
0061 using namespace edm::es;
0062
0063
0064 return ReturnType(NavigationSchoolFactory::get()->create(
0065 navigationSchoolPluginName_, &iRecord.get(geometricSearchTrackerToken_), &iRecord.get(magFieldToken_)));
0066 }
0067
0068 void NavigationSchoolESProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0069 edm::ParameterSetDescription desc;
0070 desc.add<std::string>("ComponentName");
0071 desc.add<std::string>("PluginName", "");
0072 desc.add<std::string>("SimpleMagneticField", "");
0073 descriptions.addDefault(desc);
0074 }
0075
0076 #include "FWCore/PluginManager/interface/ModuleDef.h"
0077 #include "FWCore/Framework/interface/MakerMacros.h"
0078 DEFINE_FWK_EVENTSETUP_MODULE(NavigationSchoolESProducer);