CMS 3D CMS Logo

Public Member Functions | Private Attributes

PFBlockElementSuperClusterProducer Class Reference

#include <PFBlockElementSuperClusterProducer.h>

Inheritance diagram for PFBlockElementSuperClusterProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

virtual void beginRun (edm::Run &run, const edm::EventSetup &c)
 PFBlockElementSuperClusterProducer (const edm::ParameterSet &)
virtual void produce (edm::Event &, const edm::EventSetup &)
 ~PFBlockElementSuperClusterProducer ()

Private Attributes

std::vector< edm::InputTaginputTagSuperClusters_
std::string outputName_

Detailed Description

Definition at line 11 of file PFBlockElementSuperClusterProducer.h.


Constructor & Destructor Documentation

PFBlockElementSuperClusterProducer::PFBlockElementSuperClusterProducer ( const edm::ParameterSet iConfig) [explicit]

Definition at line 11 of file PFBlockElementSuperClusterProducer.cc.

References edm::ParameterSet::getParameter(), inputTagSuperClusters_, and outputName_.

                                                                                                      {
  inputTagSuperClusters_ 
    = iConfig.getParameter<std::vector<edm::InputTag> >("ECALSuperClusters");
  
  outputName_ = iConfig.getParameter<std::string>("PFBESuperClusters");

  produces<reco::PFBlockElementSuperClusterCollection>(outputName_); 

}
PFBlockElementSuperClusterProducer::~PFBlockElementSuperClusterProducer ( )

Definition at line 21 of file PFBlockElementSuperClusterProducer.cc.

{}

Member Function Documentation

void PFBlockElementSuperClusterProducer::beginRun ( edm::Run run,
const edm::EventSetup c 
) [virtual]

Reimplemented from edm::EDProducer.

Definition at line 23 of file PFBlockElementSuperClusterProducer.cc.

{}
void PFBlockElementSuperClusterProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 25 of file PFBlockElementSuperClusterProducer.cc.

References gather_cfg::cout, Exception, newFWLiteAna::found, edm::Event::getByLabel(), inputTagSuperClusters_, outputName_, edm::Event::put(), reco::PFBlockElementSuperCluster::setEcalIso(), reco::PFBlockElementSuperCluster::setHcalIso(), reco::PFBlockElementSuperCluster::setHoE(), and reco::PFBlockElementSuperCluster::setTrackIso().

                                                                 { 
  
  std::auto_ptr<reco::PFBlockElementSuperClusterCollection> 
    pfbeSuperClusters_p(new reco::PFBlockElementSuperClusterCollection);
  

  for(unsigned icol=0; icol<inputTagSuperClusters_.size() ; ++icol) {
    edm::Handle<reco::SuperClusterCollection> scH;
    bool found=iEvent.getByLabel(inputTagSuperClusters_[icol],scH);
    if(!found) {
      std::ostringstream  err;
      err<<" cannot get SuperClusters: "
         <<inputTagSuperClusters_[icol]<<std::endl;
      edm::LogError("PFBlockElementSuperClusterProducer")<<err.str();
      throw cms::Exception( "MissingProduct", err.str());      
    }

    unsigned nsc=scH->size();;

    for(unsigned isc=0;isc<nsc;++isc) {
      reco::SuperClusterRef theRef(scH,isc);
      reco::PFBlockElementSuperCluster myPFBE(theRef);
      myPFBE.setTrackIso(0.);
      myPFBE.setEcalIso(0.);
      myPFBE.setHcalIso(0.);
      myPFBE.setHoE(0.);
      pfbeSuperClusters_p->push_back(myPFBE);
    }    
  }    
  std::cout << "Size " << pfbeSuperClusters_p->size() << std::endl;
  iEvent.put(pfbeSuperClusters_p,outputName_);
}

Member Data Documentation