File indexing completed on 2023-03-17 11:26:00
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef TauAnalysis_MCEmbeddingTools_TrackMergeremb_H
0013 #define TauAnalysis_MCEmbeddingTools_TrackMergeremb_H
0014
0015 #include "FWCore/Framework/interface/stream/EDProducer.h"
0016 #include "FWCore/Framework/interface/Event.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018 #include "DataFormats/Common/interface/Handle.h"
0019 #include "FWCore/Framework/interface/MakerMacros.h"
0020
0021 #include "DataFormats/MuonReco/interface/MuonQuality.h"
0022 #include "DataFormats/Common/interface/ValueMap.h"
0023
0024 #include "DataFormats/MuonReco/interface/MuonToMuonMap.h"
0025 #include "DataFormats/TrackReco/interface/Track.h"
0026 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0027 #include "DataFormats/TrackReco/interface/TrackToTrackMap.h"
0028
0029 #include <string>
0030 #include <iostream>
0031 #include <map>
0032
0033 template <typename T1>
0034 class TrackMergeremb : public edm::stream::EDProducer<> {
0035 public:
0036 explicit TrackMergeremb(const edm::ParameterSet&);
0037 ~TrackMergeremb() override;
0038
0039 private:
0040 void produce(edm::Event&, const edm::EventSetup&) override;
0041
0042 typedef T1 TrackCollectionemb;
0043
0044 void willproduce(std::string instance, std::string alias);
0045 void willconsume(const edm::ParameterSet& iConfig);
0046 void merg_and_put(edm::Event&, std::string, std::vector<edm::EDGetTokenT<TrackCollectionemb> >&);
0047
0048 std::map<std::string, std::vector<edm::EDGetTokenT<TrackCollectionemb> > > inputs_;
0049 std::map<std::string, std::vector<edm::EDGetTokenT<edm::ValueMap<reco::MuonQuality> > > > inputs_qual_;
0050
0051
0052 typedef edm::ValueMap<reco::TrackRefVector> TrackToTrackMapnew;
0053
0054 edm::EDGetTokenT<TrackToTrackMapnew> inputs_fixtrackrefs_;
0055 edm::EDGetTokenT<reco::TrackCollection> inputs_fixtrackcol_;
0056
0057 edm::EDGetTokenT<reco::MuonToMuonMap> inputs_fixmurefs_;
0058 edm::EDGetTokenT<reco::MuonCollection> inputs_fixmucol_;
0059 };
0060
0061 template <typename T1>
0062 TrackMergeremb<T1>::TrackMergeremb(const edm::ParameterSet& iConfig) {
0063 std::string alias(iConfig.getParameter<std::string>("@module_label"));
0064 std::vector<edm::InputTag> inCollections = iConfig.getParameter<std::vector<edm::InputTag> >("mergCollections");
0065 for (const auto& inCollection : inCollections) {
0066 inputs_[inCollection.instance()].push_back(consumes<TrackCollectionemb>(inCollection));
0067 }
0068 willconsume(iConfig);
0069 for (const auto& toproduce : inputs_) {
0070 willproduce(toproduce.first, alias);
0071 }
0072 }
0073
0074 template <typename T1>
0075 TrackMergeremb<T1>::~TrackMergeremb() {
0076
0077 }
0078
0079 template <typename T1>
0080 void TrackMergeremb<T1>::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
0081 for (auto input_ : inputs_) {
0082 merg_and_put(iEvent, input_.first, input_.second);
0083
0084 }
0085 }
0086 #endif