Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-01-31 02:20:02

0001 // system includes
0002 #include <memory>
0003 #include <string>
0004 
0005 // user includes
0006 #include "FWCore/Framework/interface/ESHandle.h"
0007 #include "FWCore/Framework/interface/ESProducer.h"
0008 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0011 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0012 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
0013 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0014 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
0015 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0016 
0017 class TransientTrackBuilderESProducer : public edm::ESProducer {
0018 public:
0019   TransientTrackBuilderESProducer(const edm::ParameterSet& p);
0020 
0021   std::unique_ptr<TransientTrackBuilder> produce(const TransientTrackRecord&);
0022 
0023   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0024 
0025 private:
0026   edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> magToken_;
0027   edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> geomToken_;
0028 };
0029 
0030 using namespace edm;
0031 
0032 TransientTrackBuilderESProducer::TransientTrackBuilderESProducer(const edm::ParameterSet& p) {
0033   auto cc = setWhatProduced(this, p.getParameter<std::string>("ComponentName"));
0034   magToken_ = cc.consumes();
0035   geomToken_ = cc.consumes();
0036 }
0037 
0038 std::unique_ptr<TransientTrackBuilder> TransientTrackBuilderESProducer::produce(const TransientTrackRecord& iRecord) {
0039   return std::make_unique<TransientTrackBuilder>(&iRecord.get(magToken_), iRecord.getHandle(geomToken_));
0040 }
0041 
0042 void TransientTrackBuilderESProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0043   edm::ParameterSetDescription desc;
0044   desc.add<std::string>("ComponentName", "TransientTrackBuilder")
0045       ->setComment("data label to use when getting the data product");
0046 
0047   descriptions.addWithDefaultLabel(desc);
0048 }
0049 
0050 #include "FWCore/Framework/interface/ModuleFactory.h"
0051 DEFINE_FWK_EVENTSETUP_MODULE(TransientTrackBuilderESProducer);