CMS 3D CMS Logo

MultiRecHitCollectorESProducer.cc

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 

Generated on Tue Jun 9 17:45:43 2009 for CMSSW by  doxygen 1.5.4