File indexing completed on 2025-01-31 02:20:02
0001
0002 #include <memory>
0003 #include <string>
0004
0005
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);