CMS 3D CMS Logo

EgammaHLTElectronTrackIsolationProducers.cc

Go to the documentation of this file.
00001 
00009 #include "RecoEgamma/EgammaHLTProducers/interface/EgammaHLTElectronTrackIsolationProducers.h"
00010 
00011 // Framework
00012 #include "FWCore/Framework/interface/Event.h"
00013 #include "FWCore/Framework/interface/EventSetup.h"
00014 #include "DataFormats/Common/interface/Handle.h"
00015 #include "FWCore/Framework/interface/ESHandle.h"
00016 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00017 #include "FWCore/Utilities/interface/Exception.h"
00018 
00019 #include "DataFormats/EgammaCandidates/interface/Electron.h"
00020 #include "DataFormats/EgammaCandidates/interface/ElectronIsolationAssociation.h"
00021 
00022 #include "DataFormats/Common/interface/RefToBase.h"
00023 #include "DataFormats/Common/interface/Ref.h"
00024 #include "DataFormats/Common/interface/RefProd.h"
00025 
00026 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00027 #include "DataFormats/TrackReco/interface/Track.h"
00028 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
00029 
00030 
00031 
00032 
00033 EgammaHLTElectronTrackIsolationProducers::EgammaHLTElectronTrackIsolationProducers(const edm::ParameterSet& config) : conf_(config)
00034 {
00035 
00036   electronProducer_         = conf_.getParameter<edm::InputTag>("electronProducer");
00037   trackProducer_                = conf_.getParameter<edm::InputTag>("trackProducer");
00038 
00039   egTrkIsoPtMin_                = conf_.getParameter<double>("egTrkIsoPtMin");
00040   egTrkIsoConeSize_             = conf_.getParameter<double>("egTrkIsoConeSize");
00041   egTrkIsoZSpan_                = conf_.getParameter<double>("egTrkIsoZSpan");
00042   egTrkIsoRSpan_                = conf_.getParameter<double>("egTrkIsoRSpan");
00043   egTrkIsoVetoConeSize_         = conf_.getParameter<double>("egTrkIsoVetoConeSize");
00044   egCheckForOtherEleInCone_     = conf_.getUntrackedParameter<bool>("egCheckForOtherEleInCone",false);
00045 
00046 
00047   test_ = new EgammaHLTTrackIsolation(egTrkIsoPtMin_,egTrkIsoConeSize_,
00048                                       egTrkIsoZSpan_,egTrkIsoRSpan_,egTrkIsoVetoConeSize_);
00049 
00050 
00051   //register your products
00052   produces < reco::ElectronIsolationMap >();
00053 
00054 }
00055 
00056 
00057 EgammaHLTElectronTrackIsolationProducers::~EgammaHLTElectronTrackIsolationProducers(){delete test_;}
00058 
00059 
00060 //
00061 // member functions
00062 //
00063 
00064 // ------------ method called to produce the data  ------------
00065 void
00066 EgammaHLTElectronTrackIsolationProducers::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
00067 {
00068 
00069   // Get the HLT filtered objects
00070   edm::Handle<reco::ElectronCollection> electronHandle;
00071   iEvent.getByLabel(electronProducer_,electronHandle);
00072 
00073  // Get the general tracks
00074   edm::Handle<reco::TrackCollection> trackHandle;
00075   iEvent.getByLabel(trackProducer_, trackHandle);
00076   const reco::TrackCollection* trackCollection = trackHandle.product();
00077 
00078   reco::ElectronIsolationMap isoMap;
00079 
00080   for(reco::ElectronCollection::const_iterator iElectron = electronHandle->begin(); iElectron != electronHandle->end(); iElectron++){
00081     
00082     
00083     reco::ElectronRef electronref(reco::ElectronRef(electronHandle,iElectron - electronHandle->begin()));
00084     reco::TrackRef electrontrackref = iElectron->track();
00085     
00086     float isol;
00087     if (!egCheckForOtherEleInCone_) {
00088       isol = test_->electronPtSum(&(*electrontrackref),trackCollection);
00089     } else {
00090       isol = test_->electronPtSum(&(*electrontrackref),electronHandle.product(),trackCollection);
00091     }
00092     if(electrontrackref->pt() != 0. ) isol = isol/electrontrackref->pt();
00093     
00094     isoMap.insert(electronref, isol);
00095       
00096   }
00097 
00098   std::auto_ptr<reco::ElectronIsolationMap> isolMap(new reco::ElectronIsolationMap(isoMap));
00099   iEvent.put(isolMap);
00100 
00101 }
00102 
00103 //define this as a plug-in
00104 //DEFINE_FWK_MODULE(EgammaHLTTrackIsolationProducers);

Generated on Tue Jun 9 17:43:23 2009 for CMSSW by  doxygen 1.5.4