Skip to content

Commit

Permalink
changed to template and instantiate for calojet and pfjet
Browse files Browse the repository at this point in the history
  • Loading branch information
mcitron committed Oct 28, 2021
1 parent 790f2af commit 8504e36
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 24 deletions.
@@ -1,7 +1,7 @@
/** \class HLTCaloJetTimingFilter
/** \class HLTJetTimingFilter
*
* \brief This makes selections on the timing and associated ecal cells
* produced by HLTCaloJetTimingProducer
* produced by HLTJetTimingProducer
* \author Matthew Citron
*
*/
Expand All @@ -28,9 +28,10 @@ namespace edm {
//
// class declaration
//
class HLTCaloJetTimingFilter : public HLTFilter {
template <typename T>
class HLTJetTimingFilter : public HLTFilter {
public:
explicit HLTCaloJetTimingFilter(const edm::ParameterSet& iConfig);
explicit HLTJetTimingFilter(const edm::ParameterSet& iConfig);
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
bool hltFilter(edm::Event&,
const edm::EventSetup&,
Expand All @@ -39,7 +40,7 @@ class HLTCaloJetTimingFilter : public HLTFilter {
private:
// Input collections
const edm::InputTag jetInput_;
const edm::EDGetTokenT<reco::CaloJetCollection> jetInputToken_;
const edm::EDGetTokenT<std::vector<T>> jetInputToken_;
const edm::EDGetTokenT<edm::ValueMap<float>> jetTimesInputToken_;
const edm::EDGetTokenT<edm::ValueMap<unsigned int>> jetCellsForTimingInputToken_;
const edm::EDGetTokenT<edm::ValueMap<float>> jetEcalEtForTimingInputToken_;
Expand All @@ -53,10 +54,11 @@ class HLTCaloJetTimingFilter : public HLTFilter {
};

//Constructor
HLTCaloJetTimingFilter::HLTCaloJetTimingFilter(const edm::ParameterSet& iConfig)
template <typename T>
HLTJetTimingFilter<T>::HLTJetTimingFilter(const edm::ParameterSet& iConfig)
: HLTFilter(iConfig),
jetInput_{iConfig.getParameter<edm::InputTag>("jets")},
jetInputToken_{consumes<std::vector<reco::CaloJet>>(jetInput_)},
jetInputToken_{consumes<std::vector<T>>(jetInput_)},
jetTimesInputToken_{consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("jetTimes"))},
jetCellsForTimingInputToken_{
consumes<edm::ValueMap<unsigned int>>(iConfig.getParameter<edm::InputTag>("jetCellsForTiming"))},
Expand All @@ -69,9 +71,12 @@ HLTCaloJetTimingFilter::HLTCaloJetTimingFilter(const edm::ParameterSet& iConfig)
minPt_{iConfig.getParameter<double>("minJetPt")} {}

//Filter
bool HLTCaloJetTimingFilter::hltFilter(edm::Event& iEvent,
template <typename T>
bool HLTJetTimingFilter<T>::hltFilter(edm::Event& iEvent,
const edm::EventSetup& iSetup,
trigger::TriggerFilterObjectWithRefs& filterproduct) const {
typedef vector<T> TCollection;
typedef edm::Ref<TCollection> TRef;
if (saveTags())
filterproduct.addCollectionTag(jetInput_);

Expand All @@ -82,7 +87,7 @@ bool HLTCaloJetTimingFilter::hltFilter(edm::Event& iEvent,

uint njets = 0;
for (auto iterJet = jets->begin(); iterJet != jets->end(); ++iterJet) {
reco::CaloJetRef const caloJetRef(jets, std::distance(jets->begin(), iterJet));
TRef caloJetRef = TRef(jets, std::distance(jets->begin(), iterJet));
if (iterJet->pt() > minPt_ and jetTimes[caloJetRef] > jetTimeThresh_ and
jetEcalEtForTiming[caloJetRef] > jetEcalEtForTimingThresh_ and
jetCellsForTiming[caloJetRef] > jetCellsForTimingThresh_) {
Expand All @@ -95,7 +100,8 @@ bool HLTCaloJetTimingFilter::hltFilter(edm::Event& iEvent,
}

// Fill descriptions
void HLTCaloJetTimingFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
template <typename T>
void HLTJetTimingFilter<T>::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
makeHLTFilterDescription(desc);
desc.add<edm::InputTag>("jets", edm::InputTag("hltDisplacedHLTCaloJetCollectionProducerMidPt"));
Expand All @@ -112,5 +118,9 @@ void HLTCaloJetTimingFilter::fillDescriptions(edm::ConfigurationDescriptions& de
descriptions.addWithDefaultLabel(desc);
}

// declare this class as a framework plugin
typedef HLTJetTimingFilter<reco::CaloJet> HLTCaloJetTimingFilter;
typedef HLTJetTimingFilter<reco::PFJet> HLTPFJetTimingFilter;

// declare classes as framework plugins
DEFINE_FWK_MODULE(HLTCaloJetTimingFilter);
DEFINE_FWK_MODULE(HLTPFJetTimingFilter);
@@ -1,4 +1,4 @@
/** \class HLTCaloJetTimingProducer
/** \class HLTJetTimingProducer
*
* \brief This produces timing and associated ecal cell information for calo jets
* \author Matthew Citron
Expand All @@ -20,6 +20,7 @@
#include "DataFormats/Common/interface/ValueMap.h"

#include "DataFormats/JetReco/interface/CaloJetCollection.h"
#include "DataFormats/JetReco/interface/PFJetCollection.h"

#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
#include "Geometry/Records/interface/CaloGeometryRecord.h"
Expand All @@ -29,14 +30,15 @@
//
// class declaration
//
class HLTCaloJetTimingProducer : public edm::stream::EDProducer<> {
template <typename T>
class HLTJetTimingProducer : public edm::stream::EDProducer<> {
public:
explicit HLTCaloJetTimingProducer(const edm::ParameterSet&);
explicit HLTJetTimingProducer(const edm::ParameterSet&);
static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);

private:
void produce(edm::Event&, const edm::EventSetup&) override;
void jetTimeFromEcalCells(const reco::CaloJet&,
void jetTimeFromEcalCells(const T&,
const edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit>>&,
float&,
float&,
Expand All @@ -46,7 +48,7 @@ class HLTCaloJetTimingProducer : public edm::stream::EDProducer<> {
edm::ESHandle<CaloGeometry> caloGeometry_;
const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> caloGeometryToken_;
// Input collections
const edm::EDGetTokenT<reco::CaloJetCollection> jetInputToken_;
const edm::EDGetTokenT<std::vector<T>> jetInputToken_;
const edm::EDGetTokenT<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit>>> ecalRecHitsEBToken_;
const edm::EDGetTokenT<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit>>> ecalRecHitsEEToken_;

Expand All @@ -62,9 +64,10 @@ class HLTCaloJetTimingProducer : public edm::stream::EDProducer<> {
};

//Constructor
HLTCaloJetTimingProducer::HLTCaloJetTimingProducer(const edm::ParameterSet& iConfig)
template <typename T>
HLTJetTimingProducer<T>::HLTJetTimingProducer(const edm::ParameterSet& iConfig)
: caloGeometryToken_(esConsumes<edm::Transition::BeginRun>()),
jetInputToken_{consumes<std::vector<reco::CaloJet>>(iConfig.getParameter<edm::InputTag>("jets"))},
jetInputToken_{consumes<std::vector<T>>(iConfig.getParameter<edm::InputTag>("jets"))},
ecalRecHitsEBToken_{consumes<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit>>>(
iConfig.getParameter<edm::InputTag>("ebRecHitsColl"))},
ecalRecHitsEEToken_{consumes<edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit>>>(
Expand All @@ -80,13 +83,15 @@ HLTCaloJetTimingProducer::HLTCaloJetTimingProducer(const edm::ParameterSet& iCon
produces<edm::ValueMap<float>>("jetEcalEtForTiming");
}

void HLTCaloJetTimingProducer::beginRun(const edm::Run& run, const edm::EventSetup& iSetup) {
template <typename T>
void HLTJetTimingProducer<T>::beginRun(const edm::Run& run, const edm::EventSetup& iSetup) {
caloGeometry_ = iSetup.getHandle(caloGeometryToken_);
}

//calculateJetTime
void HLTCaloJetTimingProducer::jetTimeFromEcalCells(
const reco::CaloJet& jet,
template <typename T>
void HLTJetTimingProducer<T>::jetTimeFromEcalCells(
const T& jet,
const edm::SortedCollection<EcalRecHit, edm::StrictWeakOrdering<EcalRecHit>>& ecalRecHits,
float& weightedTimeCell,
float& totalEmEnergyCell,
Expand Down Expand Up @@ -115,7 +120,8 @@ void HLTCaloJetTimingProducer::jetTimeFromEcalCells(
}

//Producer
void HLTCaloJetTimingProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
template <typename T>
void HLTJetTimingProducer<T>::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
auto const jets = iEvent.getHandle(jetInputToken_);
auto const& ecalRecHitsEB = iEvent.get(ecalRecHitsEBToken_);
auto const& ecalRecHitsEE = iEvent.get(ecalRecHitsEEToken_);
Expand Down Expand Up @@ -165,7 +171,8 @@ void HLTCaloJetTimingProducer::produce(edm::Event& iEvent, const edm::EventSetup
}

// Fill descriptions
void HLTCaloJetTimingProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
template <typename T>
void HLTJetTimingProducer<T>::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("jets", edm::InputTag(""));
desc.add<bool>("barrelJets", false);
Expand All @@ -179,5 +186,9 @@ void HLTCaloJetTimingProducer::fillDescriptions(edm::ConfigurationDescriptions&
descriptions.addWithDefaultLabel(desc);
}

// declare this class as a framework plugin
typedef HLTJetTimingProducer<reco::CaloJet> HLTCaloJetTimingProducer;
typedef HLTJetTimingProducer<reco::PFJet> HLTPFJetTimingProducer;

// declare classes as framework plugins
DEFINE_FWK_MODULE(HLTCaloJetTimingProducer);
DEFINE_FWK_MODULE(HLTPFJetTimingProducer);

0 comments on commit 8504e36

Please sign in to comment.