CMS 3D CMS Logo

EgammaEcalIsolationProducer Class Reference

#include <EgammaAnalysis/EgammaIsolationProducers/interface/EgammaEcalIsolationProducer.h>

Inheritance diagram for EgammaEcalIsolationProducer:

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

List of all members.

Public Member Functions

 EgammaEcalIsolationProducer (const edm::ParameterSet &)
virtual void produce (edm::Event &, const edm::EventSetup &)
 ~EgammaEcalIsolationProducer ()

Private Attributes

bool absolut_
edm::InputTag basicClusterProducer_
edm::ParameterSet conf_
edm::InputTag emObjectProducer_
double etLow_
double extRadius_
edm::InputTag superClusterProducer_


Detailed Description

Definition at line 34 of file EgammaEcalIsolationProducer.h.


Constructor & Destructor Documentation

EgammaEcalIsolationProducer::EgammaEcalIsolationProducer ( const edm::ParameterSet config  )  [explicit]

Definition at line 23 of file EgammaEcalIsolationProducer.cc.

References absolut_, basicClusterProducer_, conf_, emObjectProducer_, etLow_, extRadius_, edm::ParameterSet::getParameter(), and superClusterProducer_.

00023                                                                                       : conf_(config)
00024 {
00025  // use configuration file to setup input/output collection names
00026   emObjectProducer_               = conf_.getParameter<edm::InputTag>("emObjectProducer");
00027 
00028   basicClusterProducer_           = conf_.getParameter<edm::InputTag>("basicClusterProducer");
00029   superClusterProducer_           = conf_.getParameter<edm::InputTag>("superClusterProducer");
00030 
00031   etLow_               = conf_.getParameter<double>("etMin");
00032   extRadius_            = conf_.getParameter<double>("extRadius");
00033 
00034   absolut_ = conf_.getParameter<bool>("absolut");
00035 
00036   //register your products
00037   produces < reco::CandViewDoubleAssociations >();
00038 }

EgammaEcalIsolationProducer::~EgammaEcalIsolationProducer (  ) 

Definition at line 41 of file EgammaEcalIsolationProducer.cc.

00041 {}


Member Function Documentation

void EgammaEcalIsolationProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 50 of file EgammaEcalIsolationProducer.cc.

References absolut_, basicClusterProducer_, emObjectProducer_, etLow_, funct::exp(), extRadius_, edm::Ref< C, T, F >::get(), edm::Event::getByLabel(), EgammaEcalIsolation::getEcalEtSum(), i, edm::Handle< T >::product(), edm::Event::put(), edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::setValue(), funct::sin(), and superClusterProducer_.

00051 {
00052   
00053   // Get the  filtered objects
00054   edm::Handle< edm::View<reco::Candidate> > emObjectHandle;
00055   iEvent.getByLabel(emObjectProducer_,emObjectHandle);
00056   
00057   // Get the basicClusters hcal hits
00058   edm::Handle<reco::BasicClusterCollection> basicClusterHandle;
00059   iEvent.getByLabel(basicClusterProducer_, basicClusterHandle);
00060   const reco::BasicClusterCollection* basicClusters = basicClusterHandle.product();
00061   
00062   // Get the superClusters hcal hits
00063   edm::Handle<reco::SuperClusterCollection> superClusterHandle;
00064   iEvent.getByLabel(superClusterProducer_, superClusterHandle);
00065   const reco::SuperClusterCollection* superClusters = superClusterHandle.product();
00066   
00067 
00068   reco::CandViewDoubleAssociations* isoMap = new reco::CandViewDoubleAssociations( reco::CandidateBaseRefProd( emObjectHandle ) );
00069 
00070 
00071   EgammaEcalIsolation myEcalIsolation(extRadius_,
00072                                       etLow_,
00073                                       basicClusters,
00074                                       superClusters) ;
00075 
00076   
00077   for( size_t i = 0 ; i < emObjectHandle->size(); ++i) {
00078     double isoValue = myEcalIsolation.getEcalEtSum(&(emObjectHandle->at(i)));
00079     if(absolut_==true){
00080       isoMap->setValue(i,isoValue);
00081     }
00082     else{
00083       reco::SuperClusterRef sc = (emObjectHandle->at(i)).get<reco::SuperClusterRef>();
00084       double et = sc.get()->energy()*sin(2*atan(exp(-sc.get()->eta())));
00085       isoMap->setValue(i,isoValue/et);
00086     }
00087   }
00088 
00089 
00090 
00091   std::auto_ptr<reco::CandViewDoubleAssociations> isolMap(isoMap);
00092   iEvent.put(isolMap);
00093 
00094 }


Member Data Documentation

bool EgammaEcalIsolationProducer::absolut_ [private]

Definition at line 52 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer(), and produce().

edm::InputTag EgammaEcalIsolationProducer::basicClusterProducer_ [private]

Definition at line 45 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer(), and produce().

edm::ParameterSet EgammaEcalIsolationProducer::conf_ [private]

Definition at line 54 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer().

edm::InputTag EgammaEcalIsolationProducer::emObjectProducer_ [private]

Definition at line 44 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer(), and produce().

double EgammaEcalIsolationProducer::etLow_ [private]

Definition at line 48 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer(), and produce().

double EgammaEcalIsolationProducer::extRadius_ [private]

Definition at line 49 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer(), and produce().

edm::InputTag EgammaEcalIsolationProducer::superClusterProducer_ [private]

Definition at line 46 of file EgammaEcalIsolationProducer.h.

Referenced by EgammaEcalIsolationProducer(), and produce().


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