File indexing completed on 2023-03-17 11:20:33
0001 #ifndef RecoMuon_MuonIdentification_MuonProducer_H
0002 #define RecoMuon_MuonIdentification_MuonProducer_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "FWCore/Framework/interface/stream/EDProducer.h"
0015 #include "FWCore/Utilities/interface/InputTag.h"
0016
0017 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0018 #include "DataFormats/MuonReco/interface/MuonTimeExtra.h"
0019
0020 namespace reco {
0021 class Track;
0022 }
0023 #include "FWCore/Framework/interface/ESHandle.h"
0024 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0025
0026 #include "FWCore/Framework/interface/Event.h"
0027 #include "FWCore/Framework/interface/EventSetup.h"
0028 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0029 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0030
0031 #include "DataFormats/MuonReco/interface/Muon.h"
0032 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0033 #include "DataFormats/MuonReco/interface/MuonTimeExtraMap.h"
0034 #include "DataFormats/MuonReco/interface/MuonShower.h"
0035 #include "DataFormats/MuonReco/interface/MuonCosmicCompatibility.h"
0036 #include "DataFormats/MuonReco/interface/MuonToMuonMap.h"
0037
0038 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0039 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0040
0041 #include "DataFormats/Common/interface/ValueMap.h"
0042 #include "DataFormats/RecoCandidate/interface/IsoDepositFwd.h"
0043 #include "DataFormats/RecoCandidate/interface/IsoDeposit.h"
0044 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0045
0046 class MuPFIsoHelper;
0047
0048 class MuonProducer : public edm::stream::EDProducer<> {
0049 public:
0050
0051 MuonProducer(const edm::ParameterSet&);
0052
0053
0054 ~MuonProducer() override;
0055
0056
0057 void produce(edm::Event&, const edm::EventSetup&) override;
0058
0059 typedef std::vector<edm::InputTag> InputTags;
0060
0061 protected:
0062 private:
0063 template <typename TYPE>
0064 void fillMuonMap(edm::Event& event,
0065 const edm::OrphanHandle<reco::MuonCollection>& muonHandle,
0066 const std::vector<TYPE>& muonExtra,
0067 const std::string& label);
0068
0069 std::string theAlias;
0070
0071 void setAlias(std::string alias) {
0072 alias.erase(alias.size() - 1, alias.size());
0073 theAlias = alias;
0074 }
0075
0076 std::string labelOrInstance(const edm::InputTag&) const;
0077
0078 private:
0079 bool debug_;
0080 bool fastLabelling_;
0081
0082 edm::InputTag theMuonsCollectionLabel;
0083 edm::EDGetTokenT<reco::MuonCollection> theMuonsCollectionToken_;
0084
0085 edm::InputTag thePFCandLabel;
0086 edm::EDGetTokenT<reco::PFCandidateCollection> thePFCandToken_;
0087
0088 bool fillIsolation_;
0089 bool writeIsoDeposits_;
0090 bool fillSelectors_;
0091 bool fillCosmicsIdMap_;
0092 bool fillPFMomentum_;
0093 bool fillPFIsolation_;
0094 bool fillDetectorBasedIsolation_;
0095 bool fillShoweringInfo_;
0096 bool fillTimingInfo_;
0097 bool computeStandardSelectors_;
0098
0099 edm::InputTag theTrackDepositName;
0100 edm::InputTag theEcalDepositName;
0101 edm::InputTag theHcalDepositName;
0102 edm::InputTag theHoDepositName;
0103 edm::InputTag theJetDepositName;
0104
0105 edm::EDGetTokenT<reco::IsoDepositMap> theTrackDepositToken_;
0106 edm::EDGetTokenT<reco::IsoDepositMap> theEcalDepositToken_;
0107 edm::EDGetTokenT<reco::IsoDepositMap> theHcalDepositToken_;
0108 edm::EDGetTokenT<reco::IsoDepositMap> theHoDepositToken_;
0109 edm::EDGetTokenT<reco::IsoDepositMap> theJetDepositToken_;
0110
0111 InputTags theSelectorMapNames;
0112 std::vector<edm::EDGetTokenT<edm::ValueMap<bool> > > theSelectorMapTokens_;
0113
0114 edm::InputTag theShowerMapName;
0115 edm::EDGetTokenT<edm::ValueMap<reco::MuonShower> > theShowerMapToken_;
0116
0117 edm::InputTag theCosmicCompMapName;
0118 edm::EDGetTokenT<edm::ValueMap<unsigned int> > theCosmicIdMapToken_;
0119 edm::EDGetTokenT<edm::ValueMap<reco::MuonCosmicCompatibility> > theCosmicCompMapToken_;
0120 std::string theMuToMuMapName;
0121
0122 MuPFIsoHelper* thePFIsoHelper;
0123
0124 edm::EDGetTokenT<reco::MuonTimeExtraMap> timeMapCmbToken_;
0125 edm::EDGetTokenT<reco::MuonTimeExtraMap> timeMapDTToken_;
0126 edm::EDGetTokenT<reco::MuonTimeExtraMap> timeMapCSCToken_;
0127
0128 std::vector<std::map<std::string, edm::InputTag> > pfIsoMapNames;
0129 std::vector<std::map<std::string, edm::EDGetTokenT<edm::ValueMap<double> > > > pfIsoMapTokens_;
0130
0131 edm::EDGetTokenT<reco::VertexCollection> vertexes_;
0132 };
0133 #endif