Skip to content

Commit

Permalink
Use esConsumes in VirtualJetProducer classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Dr15Jones committed Sep 14, 2021
1 parent 7f4bf2a commit 3c011eb
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 25 deletions.
14 changes: 8 additions & 6 deletions RecoJets/JetProducers/plugins/CompoundJetProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,13 @@ void CompoundJetProducer::writeCompoundJets(edm::Event& iEvent, edm::EventSetup
// this is the hardjet areas
std::vector<double> area_hardJets;

[[maybe_unused]] const CaloGeometry* pGeometry = nullptr;
[[maybe_unused]] const HcalTopology* pTopology = nullptr;
if constexpr (std::is_same_v<T, reco::CaloJet>) {
pGeometry = &getGeometry(iSetup);
pTopology = &getTopology(iSetup);
}

// Loop over the hard jets
std::vector<CompoundPseudoJet>::const_iterator it = fjCompoundJets_.begin(), iEnd = fjCompoundJets_.end(),
iBegin = fjCompoundJets_.begin();
Expand Down Expand Up @@ -97,12 +104,7 @@ void CompoundJetProducer::writeCompoundJets(edm::Event& iEvent, edm::EventSetup
// Add the concrete subjet type to the subjet list to write to event record
T jet;
if constexpr (std::is_same_v<T, reco::CaloJet>) {
edm::ESHandle<CaloGeometry> geometry;
iSetup.get<CaloGeometryRecord>().get(geometry);
edm::ESHandle<HcalTopology> topology;
iSetup.get<HcalRecNumberingRecord>().get(topology);

reco::writeSpecific(jet, p4Subjet, point, subjetConstituents, *geometry, *topology);
reco::writeSpecific(jet, p4Subjet, point, subjetConstituents, *pGeometry, *pTopology);
} else {
reco::writeSpecific(jet, p4Subjet, point, subjetConstituents);
}
Expand Down
14 changes: 8 additions & 6 deletions RecoJets/JetProducers/plugins/SubjetFilterJetProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@ void SubjetFilterJetProducer::writeCompoundJets(edm::Event& iEvent, const edm::E
vector<CompoundPseudoJet>::const_iterator itEnd(fjCompoundJets_.end());
vector<CompoundPseudoJet>::const_iterator it(itBegin);

[[maybe_unused]] const CaloGeometry* pGeometry = nullptr;
[[maybe_unused]] const HcalTopology* pTopology = nullptr;
if constexpr (std::is_same_v<T, reco::CaloJet>) {
pGeometry = &getGeometry(iSetup);
pTopology = &getTopology(iSetup);
}

for (; it != itEnd; ++it) {
int jetIndex = it - itBegin;
fastjet::PseudoJet fatJet = it->hardJet();
Expand Down Expand Up @@ -153,12 +160,7 @@ void SubjetFilterJetProducer::writeCompoundJets(edm::Event& iEvent, const edm::E

T subJet;
if constexpr (std::is_same_v<T, reco::CaloJet>) {
edm::ESHandle<CaloGeometry> geometry;
iSetup.get<CaloGeometryRecord>().get(geometry);
edm::ESHandle<HcalTopology> topology;
iSetup.get<HcalRecNumberingRecord>().get(topology);

reco::writeSpecific(subJet, p4SubJet, point, subJetConstituents, *geometry, *topology);
reco::writeSpecific(subJet, p4SubJet, point, subJetConstituents, *pGeometry, *pTopology);
} else {
reco::writeSpecific(subJet, p4SubJet, point, subJetConstituents);
}
Expand Down
36 changes: 23 additions & 13 deletions RecoJets/JetProducers/plugins/VirtualJetProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,11 @@ VirtualJetProducer::VirtualJetProducer(const edm::ParameterSet& iConfig) {

jetTypeE = JetType::byName(jetType_);

if (JetType::CaloJet == jetTypeE) {
geometry_token_ = esConsumes();
topology_token_ = esConsumes();
}

if (doPUOffsetCorr_) {
if (puSubtractorName_.empty()) {
LogWarning("VirtualJetProducer")
Expand Down Expand Up @@ -692,6 +697,12 @@ void VirtualJetProducer::writeJets(edm::Event& iEvent, edm::EventSetup const& iS

auto orParam_ = 1. / rParam_;
// fill jets
[[maybe_unused]] const CaloGeometry* pGeometry = nullptr;
[[maybe_unused]] const HcalTopology* pTopology = nullptr;
if constexpr (std::is_same_v<T, reco::CaloJet>) {
pGeometry = &getGeometry(iSetup);
pTopology = &getTopology(iSetup);
}
for (unsigned int ijet = 0; ijet < fjJets_.size(); ++ijet) {
auto& jet = (*jets)[ijet];

Expand All @@ -713,17 +724,12 @@ void VirtualJetProducer::writeJets(edm::Event& iEvent, edm::EventSetup const& iS
&weights_);
else {
if constexpr (std::is_same_v<T, reco::CaloJet>) {
edm::ESHandle<CaloGeometry> geometry;
iSetup.get<CaloGeometryRecord>().get(geometry);
edm::ESHandle<HcalTopology> topology;
iSetup.get<HcalRecNumberingRecord>().get(topology);

writeSpecific(jet,
Particle::LorentzVector(fjJet.px(), fjJet.py(), fjJet.pz(), fjJet.E()),
vertex_,
constituents,
*geometry,
*topology);
*pGeometry,
*pTopology);
} else {
writeSpecific(
jet, Particle::LorentzVector(fjJet.px(), fjJet.py(), fjJet.pz(), fjJet.E()), vertex_, constituents);
Expand Down Expand Up @@ -880,12 +886,8 @@ void VirtualJetProducer::writeCompoundJets(edm::Event& iEvent, edm::EventSetup c
if ((applyWeight_) && (makePFJet(jetTypeE)))
reco::writeSpecific(dynamic_cast<reco::PFJet&>(jet), p4Subjet, point, constituents, &weights_);
else if constexpr (std::is_same_v<T, reco::CaloJet>) {
edm::ESHandle<CaloGeometry> geometry;
iSetup.get<CaloGeometryRecord>().get(geometry);
edm::ESHandle<HcalTopology> topology;
iSetup.get<HcalRecNumberingRecord>().get(topology);

reco::writeSpecific(jet, p4Subjet, point, constituents, *geometry, *topology);
reco::writeSpecific(
jet, p4Subjet, point, constituents, iSetup.getData(geometry_token_), iSetup.getData(topology_token_));
} else {
reco::writeSpecific(jet, p4Subjet, point, constituents);
}
Expand Down Expand Up @@ -1025,6 +1027,14 @@ void VirtualJetProducer::writeJetsWithConstituents(edm::Event& iEvent, edm::Even
iEvent.put(std::move(jetCollection));
}

CaloGeometry const& VirtualJetProducer::getGeometry(edm::EventSetup const& iSetup) const {
return iSetup.getData(geometry_token_);
}

HcalTopology const& VirtualJetProducer::getTopology(edm::EventSetup const& iSetup) const {
return iSetup.getData(topology_token_);
}

// ------------ method fills 'descriptions' with the allowed parameters for the module ------------
void VirtualJetProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
Expand Down
11 changes: 11 additions & 0 deletions RecoJets/JetProducers/plugins/VirtualJetProducer.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
#include <memory>
#include <vector>

class CaloGeometryRecord;
class HcalRecNumberingRecord;

class dso_hidden VirtualJetProducer : public edm::stream::EDProducer<> {
protected:
//
Expand Down Expand Up @@ -140,6 +143,10 @@ class dso_hidden VirtualJetProducer : public edm::stream::EDProducer<> {
// to an output of CandidatePtr's.
virtual std::vector<reco::CandidatePtr> getConstituents(const std::vector<fastjet::PseudoJet>& fjConstituents);

//These are only valid if we are dealing with CaloJets
CaloGeometry const& getGeometry(edm::EventSetup const&) const;
HcalTopology const& getTopology(edm::EventSetup const&) const;

//
// member data
//
Expand Down Expand Up @@ -210,6 +217,10 @@ class dso_hidden VirtualJetProducer : public edm::stream::EDProducer<> {
edm::ValueMap<float> weights_; // weights per particle (e.g. from PUPPI)

private:
//These are only initialized if we are dealing with CaloJets
edm::ESGetToken<CaloGeometry, CaloGeometryRecord> geometry_token_;
edm::ESGetToken<HcalTopology, HcalRecNumberingRecord> topology_token_;

std::unique_ptr<AnomalousTower> anomalousTowerDef_; // anomalous tower definition

// tokens for the data access
Expand Down

0 comments on commit 3c011eb

Please sign in to comment.