![]() |
![]() |
00001 #include "RecoLocalCalo/EcalRecProducers/plugins/ESRecHitProducer.h" 00002 00003 #include "RecoLocalCalo/EcalRecProducers/interface/ESRecHitWorkerFactory.h" 00004 00005 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h" 00006 #include "DataFormats/EcalRecHit/interface/EcalRecHit.h" 00007 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" 00008 #include "DataFormats/Common/interface/EDCollection.h" 00009 #include "DataFormats/Common/interface/Handle.h" 00010 00011 #include "FWCore/Framework/interface/ESHandle.h" 00012 #include "FWCore/Framework/interface/EventSetup.h" 00013 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00014 00015 ESRecHitProducer::ESRecHitProducer(edm::ParameterSet const& ps) { 00016 00017 digiCollection_ = ps.getParameter<edm::InputTag>("ESdigiCollection"); 00018 rechitCollection_ = ps.getParameter<std::string>("ESrechitCollection"); 00019 produces<ESRecHitCollection>(rechitCollection_); 00020 00021 std::string componentType = ps.getParameter<std::string>("algo"); 00022 worker_ = ESRecHitWorkerFactory::get()->create( componentType, ps ); 00023 } 00024 00025 ESRecHitProducer::~ESRecHitProducer() { 00026 00027 delete worker_; 00028 } 00029 00030 void ESRecHitProducer::produce(edm::Event& e, const edm::EventSetup& es) { 00031 00032 edm::Handle<ESDigiCollection> digiHandle; 00033 const ESDigiCollection* digi=0; 00034 e.getByLabel( digiCollection_, digiHandle); 00035 if ( digiHandle.isValid() ) { 00036 digi = digiHandle.product(); 00037 LogDebug("ESRecHitInfo") << "total # ESdigis: " << digi->size(); 00038 } else { 00039 edm::LogError("ESRecHitInfo") << "Error! can't get the product " << digiCollection_; 00040 } 00041 00042 // Create empty output 00043 std::auto_ptr<ESRecHitCollection> rec(new ESRecHitCollection ); 00044 00045 if ( digi ) { 00046 rec->reserve(digi->size()); 00047 00048 worker_->set( es ); 00049 00050 // run the algorithm 00051 for (ESDigiCollection::const_iterator i (digi->begin()); 00052 i!=digi->end(); i++) { 00053 worker_->run( e, i, *rec ); 00054 } 00055 } 00056 00057 e.put(rec,rechitCollection_); 00058 } 00059 00060 #include "FWCore/Framework/interface/MakerMacros.h" 00061 DEFINE_FWK_MODULE( ESRecHitProducer ); 00062