Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-05-10 03:54:43

0001 #include <FWCore/Utilities/interface/ESInputTag.h>
0002 
0003 #include <memory>
0004 
0005 // user include files
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 // class decleration
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   // ----------member data ---------------------------
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 // constructors and destructor
0040 //
0041 NavigationSchoolESProducer::NavigationSchoolESProducer(const edm::ParameterSet& iConfig)
0042     : navigationSchoolName_(iConfig.getParameter<std::string>("ComponentName")),
0043       navigationSchoolPluginName_(iConfig.getParameter<std::string>("PluginName")) {
0044   //the following line is needed to tell the framework what
0045   // data is being produced
0046   auto cc = setWhatProduced(this, navigationSchoolName_);
0047   magFieldToken_ = cc.consumes(edm::ESInputTag("", iConfig.getParameter<std::string>("SimpleMagneticField")));
0048   geometricSearchTrackerToken_ = cc.consumes();
0049 
0050   //now do what ever other initialization is needed
0051   if (navigationSchoolPluginName_.empty())
0052     navigationSchoolPluginName_ = navigationSchoolName_;
0053 }
0054 
0055 //
0056 // member functions
0057 //
0058 
0059 // ------------ method called to produce the data  ------------
0060 NavigationSchoolESProducer::ReturnType NavigationSchoolESProducer::produce(const NavigationSchoolRecord& iRecord) {
0061   using namespace edm::es;
0062 
0063   //get the geometricsearch tracker geometry
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);