CMS 3D CMS Logo

KFTrajectoryFitterESProducer.cc
Go to the documentation of this file.
4 
9 
10 
15 
16 
20 #include <memory>
21 
22 namespace {
23 
24  class KFTrajectoryFitterESProducer: public edm::ESProducer{
25  public:
26  KFTrajectoryFitterESProducer(const edm::ParameterSet & p);
27  ~KFTrajectoryFitterESProducer() override;
28  std::unique_ptr<TrajectoryFitter> produce(const TrajectoryFitterRecord &);
29 
30  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
32  desc.add<std::string>("ComponentName","KFFitter");
33  desc.add<std::string>("Propagator","PropagatorWithMaterial");
34  desc.add<std::string>("Updator","KFUpdator");
35  desc.add<std::string>("Estimator","Chi2");
36  desc.add<std::string>("RecoGeometry","GlobalDetLayerGeometry");
37  desc.add<int>("minHits",3);
38  descriptions.add("KFTrajectoryFitter", desc);
39  }
40 
41 
42  private:
43  edm::ParameterSet pset_;
44  };
45 
46  KFTrajectoryFitterESProducer::KFTrajectoryFitterESProducer(const edm::ParameterSet & p)
47  {
48  std::string myname = p.getParameter<std::string>("ComponentName");
49  pset_ = p;
50  setWhatProduced(this,myname);
51  }
52 
53  KFTrajectoryFitterESProducer::~KFTrajectoryFitterESProducer() {}
54 
55  std::unique_ptr<TrajectoryFitter>
56  KFTrajectoryFitterESProducer::produce(const TrajectoryFitterRecord & iRecord){
57 
58  std::string pname = pset_.getParameter<std::string>("Propagator");
59  std::string uname = pset_.getParameter<std::string>("Updator");
60  std::string ename = pset_.getParameter<std::string>("Estimator");
61  std::string gname = pset_.getParameter<std::string>("RecoGeometry");
62  int minHits = pset_.getParameter<int>("minHits");
63 
68 
69  iRecord.getRecord<TrackingComponentsRecord>().get(pname, prop);
70  iRecord.getRecord<TrackingComponentsRecord>().get(uname, upd);
71  iRecord.getRecord<TrackingComponentsRecord>().get(ename, est);
72  iRecord.getRecord<RecoGeometryRecord>().get(gname,geo);
73 
74  return std::make_unique<KFTrajectoryFitter>(prop.product(),
75  upd.product(),
76  est.product(),
77  minHits,
78  geo.product());
79  }
80 
81 }
82 
84 
85 
86 DEFINE_FWK_EVENTSETUP_MODULE(KFTrajectoryFitterESProducer);
T getParameter(std::string const &) const
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:60
void add(std::string const &label, ParameterSetDescription const &psetDescription)
T const * product() const
Definition: ESHandle.h:86