![]() |
![]() |
00001 #include "RecoTracker/SiTrackerMRHTools/plugins/MultiTrackFilterCollectorESProducer.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/SimpleMTFHitCollector.h" 00006 00007 #include "FWCore/Framework/interface/EventSetup.h" 00008 #include "FWCore/Framework/interface/ESHandle.h" 00009 #include "FWCore/Framework/interface/ModuleFactory.h" 00010 #include "FWCore/Framework/interface/ESProducer.h" 00011 00012 #include <string> 00013 #include <memory> 00014 00015 using namespace edm; 00016 00017 MultiTrackFilterCollectorESProducer::MultiTrackFilterCollectorESProducer(const edm::ParameterSet & p) 00018 { 00019 std::string myname = p.getParameter<std::string>("ComponentName"); 00020 pset_ = p; 00021 setWhatProduced(this,myname); 00022 } 00023 00024 MultiTrackFilterCollectorESProducer::~MultiTrackFilterCollectorESProducer() {} 00025 00026 boost::shared_ptr<MultiTrackFilterHitCollector> 00027 MultiTrackFilterCollectorESProducer::produce(const MultiRecHitRecord& iRecord){ 00028 00029 std::string mrhupdator = pset_.getParameter<std::string>("MultiRecHitUpdator"); 00030 std::string propagatorAlongName = pset_.getParameter<std::string>("propagatorAlong"); 00031 std::string estimatorName = pset_.getParameter<std::string>("estimator"); 00032 std::string measurementTrackerName = pset_.getParameter<std::string>("MeasurementTrackerName"); 00033 00034 ESHandle<SiTrackerMultiRecHitUpdatorMTF> mrhuhandle; 00035 iRecord.get(mrhupdator, mrhuhandle); 00036 ESHandle<Propagator> propagatorhandle; 00037 iRecord.getRecord<CkfComponentsRecord>().getRecord<TrackingComponentsRecord>().get(propagatorAlongName, propagatorhandle); 00038 ESHandle<Chi2MeasurementEstimatorBase> estimatorhandle; 00039 iRecord.getRecord<CkfComponentsRecord>().getRecord<TrackingComponentsRecord>().get(estimatorName, estimatorhandle); 00040 ESHandle<MeasurementTracker> measurementhandle; 00041 iRecord.getRecord<CkfComponentsRecord>().get(measurementTrackerName, measurementhandle); 00042 00043 00044 //std::string propagatorOppositeName = pset_.getParameter<std::string>("propagatorOpposite"); 00045 // ESHandle<Propagator> propagatorOppositehandle; 00046 // iRecord.getRecord<CkfComponentsRecord>().getRecord<TrackingComponentsRecord>().get(propagatorOppositeName, propagatorOppositehandle); 00047 _collector = boost::shared_ptr<MultiTrackFilterHitCollector>(new SimpleMTFHitCollector(measurementhandle.product(), 00048 mrhuhandle.product(), 00049 estimatorhandle.product(), 00050 propagatorhandle.product())); 00051 return _collector; 00052 } 00053 00054