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