CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoParticleFlow/PFProducer/plugins/GsfElectronLinker.h

Go to the documentation of this file.
00001 #ifndef RecoParticleFlow_PFProducer_GsfElectronLinker_h
00002 #define RecoParticleFlow_PFProducer_GsfElectronLinker_h
00003 
00007 
00008 #include <iostream>
00009 #include <string>
00010 
00011 // user include files
00012 #include "FWCore/Framework/interface/Frameworkfwd.h"
00013 #include "FWCore/Framework/interface/EDProducer.h"
00014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00015 #include "FWCore/Framework/interface/Event.h"
00016 #include "FWCore/Framework/interface/MakerMacros.h"
00017 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
00018 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00019 #include "DataFormats/Common/interface/ValueMap.h"
00020 
00021 #include <string>
00022 
00023 class GsfElectronLinker : public edm::EDProducer {
00024  public:
00025 
00026   explicit GsfElectronLinker(const edm::ParameterSet&);
00027 
00028   ~GsfElectronLinker();
00029   
00030   virtual void produce(edm::Event&, const edm::EventSetup&);
00031 
00032   virtual void beginRun(edm::Run& run,const edm::EventSetup & es);
00033 
00034  private:
00035   bool fetchCandidateCollection(edm::Handle<reco::PFCandidateCollection>& c, 
00036                                 const edm::InputTag& tag, 
00037                                 const edm::Event& iEvent) const ;
00038   
00039   bool fetchGsfElectronCollection(edm::Handle<reco::GsfElectronCollection>& c, 
00040                                   const edm::InputTag& tag, 
00041                                   const edm::Event& iEvent) const ;
00042 
00043   void fillValueMap(edm::Handle<reco::GsfElectronCollection>& c,
00044                     const edm::OrphanHandle<reco::PFCandidateCollection> & pfHandle,
00045                     edm::ValueMap<reco::PFCandidateRef>::Filler & filler) const;
00046 
00047  private:
00048  
00050   edm::InputTag       inputTagPFCandidates_;
00051 
00053   edm::InputTag       inputTagGsfElectrons_;
00054 
00056   std::string nameOutputPF_;
00057 
00059   std::map<reco::GsfElectronRef,unsigned> electronCandidateMap_;
00060 };
00061 
00062 #endif