CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/RecoLocalCalo/EcalRecProducers/plugins/ESRecHitProducer.cc

Go to the documentation of this file.
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