@@ -29,6 +29,7 @@ class DeDxEstimatorRekeyer : public edm::global::EDProducer<> {
2929
3030 // ----------member data ---------------------------
3131 const edm::EDGetTokenT<reco::TrackCollection> tracksToken_;
32+ const bool rekey_dedxHits_;
3233 const edm::EDGetTokenT<reco::DeDxHitInfoAss> dedxHitAssToken_;
3334 const edm::EDGetTokenT<edm::ValueMap<std::vector<float>>> dedxHitMomToken_;
3435 const std::map<std::string, edm::EDGetTokenT<edm::ValueMap<reco::DeDxData>>> dedxEstimatorsTokens_;
@@ -39,8 +40,8 @@ class DeDxEstimatorRekeyer : public edm::global::EDProducer<> {
3940void DeDxEstimatorRekeyer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
4041 edm::ParameterSetDescription desc;
4142 desc.add<edm::InputTag>("tracks", {"generalTracks"});
42- desc.add<edm::InputTag>("dedxHits", {"dedxHitInfo" });
43- desc.add<edm::InputTag>("dedxMomentum", {"dedxHitInfo:momentumAtHit" });
43+ desc.add<edm::InputTag>("dedxHits", {});
44+ desc.add<edm::InputTag>("dedxMomentum", {});
4445 desc.add<std::vector<edm::InputTag>>(
4546 "packedCandidates",
4647 {edm::InputTag("packedPFCandidates"), edm::InputTag("lostTracks"), edm::InputTag("lostTracks:eleTracks")});
@@ -51,6 +52,7 @@ void DeDxEstimatorRekeyer::fillDescriptions(edm::ConfigurationDescriptions& desc
5152
5253DeDxEstimatorRekeyer::DeDxEstimatorRekeyer(const edm::ParameterSet& iConfig)
5354 : tracksToken_(consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"))),
55+ rekey_dedxHits_(not iConfig.getParameter<edm::InputTag>("dedxHits").label().empty()),
5456 dedxHitAssToken_(consumes<reco::DeDxHitInfoAss>(iConfig.getParameter<edm::InputTag>("dedxHits"))),
5557 dedxHitMomToken_(
5658 consumes<edm::ValueMap<std::vector<float>>>(iConfig.getParameter<edm::InputTag>("dedxMomentum"))),
@@ -62,9 +64,11 @@ DeDxEstimatorRekeyer::DeDxEstimatorRekeyer(const edm::ParameterSet& iConfig)
6264 iConfig.getParameter<std::vector<edm::InputTag>>("packedCandidates"))) {
6365 for (const auto& d : dedxEstimatorsTokens_)
6466 produces<edm::ValueMap<reco::DeDxData>>(d.first);
65- produces<reco::DeDxHitInfoCollection>();
66- produces<reco::DeDxHitInfoAss>();
67- produces<edm::ValueMap<std::vector<float>>>("momentumAtHit");
67+ if (rekey_dedxHits_) {
68+ produces<reco::DeDxHitInfoCollection>();
69+ produces<reco::DeDxHitInfoAss>();
70+ produces<edm::ValueMap<std::vector<float>>>("momentumAtHit");
71+ }
6872}
6973
7074void DeDxEstimatorRekeyer::produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
@@ -107,6 +111,8 @@ void DeDxEstimatorRekeyer::produce(edm::StreamID, edm::Event& iEvent, const edm:
107111 }
108112
109113 // Rekey dEdx hit info
114+ if (not rekey_dedxHits_)
115+ return;
110116 const auto& dedxHitMom = iEvent.get(dedxHitMomToken_);
111117 const auto& dedxHitAss = iEvent.get(dedxHitAssToken_);
112118 const auto& dedxHitInfoHandle = iEvent.getRefBeforePut<reco::DeDxHitInfoCollection>();
0 commit comments