CMS 3D CMS Logo

ReducedRecHitCollectionProducer Class Reference

Original author: Paolo Meridiani PH/CMG. More...

#include <Calibration/EcalAlCaRecoProducers/src/ReducedRecHitCollectionProducer.cc>

Inheritance diagram for ReducedRecHitCollectionProducer:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

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::InputTaginterestingDetIdCollections_
edm::InputTag recHitsLabel_
std::string reducedHitsCollection_


Detailed Description

Original author: Paolo Meridiani PH/CMG.

Implementation: <Notes on="" implementation>="">

Definition at line 34 of file ReducedRecHitCollectionProducer.h.


Constructor & Destructor Documentation

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 (  ) 

Definition at line 37 of file ReducedRecHitCollectionProducer.cc.

00038 {}


Member Function Documentation

void ReducedRecHitCollectionProducer::beginJob ( const edm::EventSetup iSetup  )  [virtual]

Reimplemented from edm::EDProducer.

Definition at line 40 of file ReducedRecHitCollectionProducer.cc.

00041 {
00042 }

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 }


Member Data Documentation

std::vector<edm::InputTag> ReducedRecHitCollectionProducer::interestingDetIdCollections_ [private]

Definition at line 46 of file ReducedRecHitCollectionProducer.h.

Referenced by produce(), and ReducedRecHitCollectionProducer().

edm::InputTag ReducedRecHitCollectionProducer::recHitsLabel_ [private]

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().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:30:41 2009 for CMSSW by  doxygen 1.5.4