CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch2/src/RecoParticleFlow/PFProducer/plugins/PFLinker.h

Go to the documentation of this file.
00001 #ifndef RecoParticleFlow_PFProducer_PFLinker_h
00002 #define RecoParticleFlow_PFProducer_PFLinker_h
00003 
00015 #include <iostream>
00016 #include <string>
00017 
00018 // user include files
00019 #include "FWCore/Framework/interface/Frameworkfwd.h"
00020 #include "FWCore/Framework/interface/EDProducer.h"
00021 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00022 #include "FWCore/Framework/interface/Event.h"
00023 #include "FWCore/Framework/interface/MakerMacros.h"
00024 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
00025 #include "DataFormats/EgammaCandidates/interface/PhotonFwd.h"
00026 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
00027 #include "DataFormats/Common/interface/ValueMap.h"
00028 
00029 #include <string>
00030 
00031 class PFLinker : public edm::EDProducer {
00032  public:
00033 
00034   explicit PFLinker(const edm::ParameterSet&);
00035 
00036   ~PFLinker();
00037   
00038   virtual void produce(edm::Event&, const edm::EventSetup&);
00039 
00040   virtual void beginRun(edm::Run& run,const edm::EventSetup & es);
00041 
00042  private:
00043 
00044   template<typename T>
00045     bool fetchCollection(edm::Handle<T>& c, 
00046                          const edm::InputTag& tag, 
00047                          const edm::Event& iEvent) const ;
00048   
00049   template<typename TYPE>
00050     edm::ValueMap<reco::PFCandidatePtr> fillValueMap(edm::Event & event,
00051                                                      std::string label,
00052                                                      edm::Handle<TYPE>& inputObjCollection,
00053                                                      const std::map<edm::Ref<TYPE>, reco::PFCandidatePtr> & mapToTheCandidate,
00054                                                      const edm::OrphanHandle<reco::PFCandidateCollection> & newPFCandColl) const;    
00055   
00056  private:
00057  
00059   std::vector<edm::InputTag>       inputTagPFCandidates_;
00060 
00062   edm::InputTag       inputTagGsfElectrons_;
00063 
00065   edm::InputTag       inputTagPhotons_;
00066 
00068   edm::InputTag       inputTagMuons_;
00069 
00071   std::string nameOutputPF_;
00072 
00074   std::string nameOutputElectronsPF_;
00075 
00077   std::string nameOutputPhotonsPF_;
00078 
00080   std::string nameOutputMergedPF_;
00081 
00083   bool producePFCandidates_;
00084 
00086   bool fillMuonRefs_;
00087 
00088 };
00089 
00090 #endif