00001 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEGenericESProducer.h" 00002 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEGeneric.h" 00003 #include "MagneticField/Engine/interface/MagneticField.h" 00004 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" 00005 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00006 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.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 00014 00015 #include <string> 00016 #include <memory> 00017 00018 using namespace edm; 00019 00020 PixelCPEGenericESProducer::PixelCPEGenericESProducer(const edm::ParameterSet & p) 00021 { 00022 std::string myname = p.getParameter<std::string>("ComponentName"); 00023 pset_ = p; 00024 setWhatProduced(this,myname); 00025 } 00026 00027 PixelCPEGenericESProducer::~PixelCPEGenericESProducer() {} 00028 00029 boost::shared_ptr<PixelClusterParameterEstimator> 00030 PixelCPEGenericESProducer::produce(const TkPixelCPERecord & iRecord){ 00031 00032 ESHandle<MagneticField> magfield; 00033 iRecord.getRecord<IdealMagneticFieldRecord>().get( magfield ); 00034 00035 edm::ESHandle<TrackerGeometry> pDD; 00036 iRecord.getRecord<TrackerDigiGeometryRecord>().get( pDD ); 00037 00038 ESHandle<SiPixelLorentzAngle> lorentzAngle; 00039 iRecord.getRecord<SiPixelLorentzAngleRcd>().get(lorentzAngle ); 00040 00041 cpe_ = boost::shared_ptr<PixelClusterParameterEstimator>(new PixelCPEGeneric(pset_,magfield.product(),lorentzAngle.product()) ); 00042 //ToDo? Replace blah.product() with ESHandle 00043 00044 return cpe_; 00045 } 00046 00047