00001 #ifndef MuonIsolationProducers_CandIsoDepositProducer_H 00002 #define MuonIsolationProducers_CandIsoDepositProducer_H 00003 00004 #include "FWCore/Framework/interface/EDProducer.h" 00005 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00006 #include "DataFormats/Common/interface/AssociationVector.h" 00007 #include "DataFormats/Common/interface/RefToBaseProd.h" 00008 #include <DataFormats/RecoCandidate/interface/RecoCandidate.h> 00009 00010 #include "DataFormats/RecoCandidate/interface/IsoDepositFwd.h" 00011 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h" 00012 #include "PhysicsTools/IsolationAlgos/interface/IsoDepositExtractor.h" 00013 00014 #include <string> 00015 00016 namespace edm { class Event; } 00017 namespace edm { class EventSetup; } 00018 00019 class CandIsoDepositProducer : public edm::EDProducer { 00020 00021 public: 00022 CandIsoDepositProducer(const edm::ParameterSet&); 00023 00024 virtual ~CandIsoDepositProducer(); 00025 00026 virtual void produce(edm::Event&, const edm::EventSetup&); 00027 00028 private: 00029 inline const reco::Track *extractTrack(const reco::Candidate &cand, reco::Track *dummyStorage) const; 00030 enum TrackType { FakeT, BestT, StandAloneMuonT, CombinedMuonT, TrackT, GsfT, CandidateT }; 00031 edm::ParameterSet theConfig; 00032 edm::InputTag theCandCollectionTag; 00033 TrackType theTrackType; 00034 std::vector<std::string> theDepositNames; 00035 bool theMultipleDepositsFlag; 00036 reco::isodeposit::IsoDepositExtractor * theExtractor; 00037 00038 }; 00039 #endif