00001 // -*- C++ -*- 00002 // 00003 // Package: DetIdAssociatorESProducer 00004 // Class: DetIdAssociatorESProducer 00005 // 00013 // 00014 // Original Author: Jean-Roch Vlimant 00015 // Created: Thu Oct 4 02:28:48 CEST 2007 00016 // $Id: DetIdAssociatorESProducer.cc,v 1.5 2011/04/21 10:49:56 innocent Exp $ 00017 // 00018 // 00019 00020 00021 // system include files 00022 #include <memory> 00023 #include "boost/shared_ptr.hpp" 00024 00025 // user include files 00026 #include "FWCore/Framework/interface/ModuleFactory.h" 00027 #include "FWCore/Framework/interface/ESProducer.h" 00028 00029 #include "TrackingTools/TrackAssociator/interface/DetIdAssociator.h" 00030 #include "DetIdAssociatorFactory.h" 00031 00032 #include "TrackingTools/Records/interface/DetIdAssociatorRecord.h" 00033 00034 00035 // 00036 // class decleration 00037 // 00038 00039 class DetIdAssociatorESProducer : public edm::ESProducer { 00040 public: 00041 DetIdAssociatorESProducer(const edm::ParameterSet&); 00042 ~DetIdAssociatorESProducer(); 00043 00044 typedef boost::shared_ptr<DetIdAssociator> ReturnType; 00045 00046 ReturnType produce(const DetIdAssociatorRecord&); 00047 private: 00048 std::string cName; 00049 edm::ParameterSet pSet; 00050 }; 00051 00052 // 00053 // constants, enums and typedefs 00054 // 00055 00056 // 00057 // static data member definitions 00058 // 00059 00060 // 00061 // constructors and destructor 00062 // 00063 DetIdAssociatorESProducer::DetIdAssociatorESProducer(const edm::ParameterSet& iConfig) 00064 { 00065 cName =iConfig.getParameter<std::string>("ComponentName"); 00066 pSet = iConfig; 00067 setWhatProduced(this, cName); 00068 } 00069 00070 00071 DetIdAssociatorESProducer::~DetIdAssociatorESProducer() 00072 { 00073 } 00074 00075 00076 // 00077 // member functions 00078 // 00079 00080 // ------------ method called to produce the data ------------ 00081 DetIdAssociatorESProducer::ReturnType 00082 DetIdAssociatorESProducer::produce(const DetIdAssociatorRecord& iRecord) 00083 { 00084 using namespace edm::es; 00085 LogTrace("TrackAssociator") << "Making DetIdAssociatorRecord with label: " << cName; 00086 ReturnType dia(DetIdAssociatorFactory::get()->create(cName, pSet)); 00087 dia->setGeometry(iRecord); 00088 dia->setConditions(iRecord); 00089 dia->buildMap(); 00090 LogTrace("TrackAssociator") << "Map id built for DetIdAssociatorRecord with label: " << cName; 00091 return dia; 00092 } 00093 00094 //define this as a plug-in 00095 DEFINE_FWK_EVENTSETUP_MODULE(DetIdAssociatorESProducer);