![]() |
![]() |
#include <Calibration/EcalAlCaRecoProducers/src/ReducedRecHitCollectionProducer.cc>
Public Member Functions | |
void | beginJob (const edm::EventSetup &) |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
producer | |
ReducedRecHitCollectionProducer (const edm::ParameterSet &) | |
ctor | |
~ReducedRecHitCollectionProducer () | |
Private Attributes | |
std::vector< edm::InputTag > | interestingDetIdCollections_ |
edm::InputTag | recHitsLabel_ |
std::string | reducedHitsCollection_ |
Implementation: <Notes on="" implementation>="">
Definition at line 34 of file ReducedRecHitCollectionProducer.h.
ReducedRecHitCollectionProducer::ReducedRecHitCollectionProducer | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
ctor
Definition at line 23 of file ReducedRecHitCollectionProducer.cc.
References edm::ParameterSet::getParameter(), interestingDetIdCollections_, recHitsLabel_, and reducedHitsCollection_.
00024 { 00025 00026 recHitsLabel_ = iConfig.getParameter< edm::InputTag > ("recHitsLabel"); 00027 interestingDetIdCollections_ = iConfig.getParameter< std::vector<edm::InputTag> > ("interestingDetIdCollections"); 00028 00029 reducedHitsCollection_ = iConfig.getParameter<std::string>("reducedHitsCollection"); 00030 00031 //register your products 00032 produces< EcalRecHitCollection > (reducedHitsCollection_) ; 00033 00034 }
ReducedRecHitCollectionProducer::~ReducedRecHitCollectionProducer | ( | ) |
void ReducedRecHitCollectionProducer::beginJob | ( | const edm::EventSetup & | iSetup | ) | [virtual] |
Reimplemented from edm::EDProducer.
Definition at line 40 of file ReducedRecHitCollectionProducer.cc.
void ReducedRecHitCollectionProducer::produce | ( | edm::Event & | iEvent, | |
const edm::EventSetup & | iSetup | |||
) | [virtual] |
producer
Implements edm::EDProducer.
Definition at line 46 of file ReducedRecHitCollectionProducer.cc.
References edmNew::copy(), detId, find(), edm::Event::getByLabel(), interestingDetIdCollections_, edm::Event::put(), recHitsLabel_, reducedHitsCollection_, std, and t.
00048 { 00049 using namespace edm; 00050 using namespace std; 00051 00052 if (interestingDetIdCollections_.size() < 1) 00053 { 00054 edm::LogError("ReducedRecHitCollectionProducer") << "VInputTag collections empty" ; 00055 return; 00056 } 00057 00058 00059 Handle< DetIdCollection > detIds; 00060 iEvent.getByLabel(interestingDetIdCollections_[0],detIds); 00061 std::vector<DetId> xtalsToStore((*detIds).size()); 00062 std::copy( (*detIds).begin() , (*detIds).end() , xtalsToStore.begin() ); 00063 00064 //Merging DetIds from different collections 00065 for( unsigned int t = 1; t < interestingDetIdCollections_.size(); ++t ) 00066 { 00067 Handle< DetIdCollection > detId; 00068 iEvent.getByLabel(interestingDetIdCollections_[t],detId); 00069 if( !detIds.isValid() ) continue; 00070 00071 for (unsigned int ii=0;ii<(*detIds).size();ii++) 00072 { 00073 if (std::find(xtalsToStore.begin(),xtalsToStore.end(),(*detId)[ii]) == xtalsToStore.end()) 00074 xtalsToStore.push_back((*detId)[ii]); 00075 } 00076 } 00077 00078 Handle<EcalRecHitCollection> recHitsHandle; 00079 iEvent.getByLabel(recHitsLabel_,recHitsHandle); 00080 if( !recHitsHandle.isValid() ) 00081 { 00082 edm::LogError("ReducedRecHitCollectionProducer") << "RecHit collection not found"; 00083 return; 00084 } 00085 00086 //Create empty output collections 00087 std::auto_ptr< EcalRecHitCollection > miniRecHitCollection (new EcalRecHitCollection) ; 00088 00089 for (unsigned int iCry=0;iCry<xtalsToStore.size();iCry++) 00090 { 00091 EcalRecHitCollection::const_iterator iRecHit = recHitsHandle->find(xtalsToStore[iCry]); 00092 if ( (iRecHit != recHitsHandle->end()) && (miniRecHitCollection->find(xtalsToStore[iCry]) == miniRecHitCollection->end()) ) 00093 miniRecHitCollection->push_back(*iRecHit); 00094 } 00095 00096 // std::cout << "New Collection " << reducedHitsCollection_ << " size is " << miniRecHitCollection->size() << " original is " << recHitsHandle->size() << std::endl; 00097 iEvent.put( miniRecHitCollection,reducedHitsCollection_ ); 00098 }
std::vector<edm::InputTag> ReducedRecHitCollectionProducer::interestingDetIdCollections_ [private] |
Definition at line 46 of file ReducedRecHitCollectionProducer.h.
Referenced by produce(), and ReducedRecHitCollectionProducer().
Definition at line 45 of file ReducedRecHitCollectionProducer.h.
Referenced by produce(), and ReducedRecHitCollectionProducer().
std::string ReducedRecHitCollectionProducer::reducedHitsCollection_ [private] |
Definition at line 47 of file ReducedRecHitCollectionProducer.h.
Referenced by produce(), and ReducedRecHitCollectionProducer().