Go to the documentation of this file.00001 #include "RecoTracker/SiTrackerMRHTools/plugins/MultiRecHitCollectorESProducer.h"
00002 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00003 #include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimatorBase.h"
00004 #include "RecoTracker/MeasurementDet/interface/MeasurementTracker.h"
00005 #include "RecoTracker/SiTrackerMRHTools/interface/GroupedDAFHitCollector.h"
00006 #include "RecoTracker/SiTrackerMRHTools/interface/SimpleDAFHitCollector.h"
00007
00008 #include "FWCore/Framework/interface/EventSetup.h"
00009 #include "FWCore/Framework/interface/ESHandle.h"
00010 #include "FWCore/Framework/interface/ModuleFactory.h"
00011 #include "FWCore/Framework/interface/ESProducer.h"
00012
00013 #include <string>
00014 #include <memory>
00015
00016 using namespace edm;
00017
00018 MultiRecHitCollectorESProducer::MultiRecHitCollectorESProducer(const edm::ParameterSet & p)
00019 {
00020 std::string myname = p.getParameter<std::string>("ComponentName");
00021 pset_ = p;
00022 setWhatProduced(this,myname);
00023 }
00024
00025 MultiRecHitCollectorESProducer::~MultiRecHitCollectorESProducer() {}
00026
00027 boost::shared_ptr<MultiRecHitCollector>
00028 MultiRecHitCollectorESProducer::produce(const MultiRecHitRecord& iRecord){
00029 std::string mode = "Grouped";
00030 if (pset_.getParameter<std::string>("Mode")=="Simple") mode = "Simple";
00031
00032 std::string mrhupdator = pset_.getParameter<std::string>("MultiRecHitUpdator");
00033 std::string propagatorAlongName = pset_.getParameter<std::string>("propagatorAlong");
00034 std::string estimatorName = pset_.getParameter<std::string>("estimator");
00035 std::string measurementTrackerName = pset_.getParameter<std::string>("MeasurementTrackerName");
00036
00037 ESHandle<SiTrackerMultiRecHitUpdator> mrhuhandle;
00038 iRecord.get(mrhupdator, mrhuhandle);
00039 ESHandle<Propagator> propagatorhandle;
00040 iRecord.getRecord<CkfComponentsRecord>().getRecord<TrackingComponentsRecord>().get(propagatorAlongName, propagatorhandle);
00041 ESHandle<Chi2MeasurementEstimatorBase> estimatorhandle;
00042 iRecord.getRecord<CkfComponentsRecord>().getRecord<TrackingComponentsRecord>().get(estimatorName, estimatorhandle);
00043 ESHandle<MeasurementTracker> measurementhandle;
00044 iRecord.getRecord<CkfComponentsRecord>().get(measurementTrackerName, measurementhandle);
00045
00046 if (mode == "Grouped"){
00047 std::string propagatorOppositeName = pset_.getParameter<std::string>("propagatorOpposite");
00048 ESHandle<Propagator> propagatorOppositehandle;
00049 iRecord.getRecord<CkfComponentsRecord>().getRecord<TrackingComponentsRecord>().get(propagatorOppositeName, propagatorOppositehandle);
00050 _collector = boost::shared_ptr<MultiRecHitCollector>(new GroupedDAFHitCollector(measurementhandle.product(),
00051 mrhuhandle.product(),
00052 estimatorhandle.product(),
00053 propagatorhandle.product(),
00054 propagatorOppositehandle.product()));
00055 } else {
00056 _collector = boost::shared_ptr<MultiRecHitCollector>(new SimpleDAFHitCollector(measurementhandle.product(),
00057 mrhuhandle.product(),
00058 estimatorhandle.product(),
00059 propagatorhandle.product()));
00060 }
00061
00062 return _collector;
00063 }
00064
00065