From aadecc2c5960acdcbfd4848883936c800dfc67ed Mon Sep 17 00:00:00 2001 From: Marta Date: Wed, 18 Nov 2015 20:28:34 +0100 Subject: [PATCH 1/4] HLT filter: pixel vs HF activity --- .../HLTPixelActivityHFSumEnergyFilter.h | 52 +++++++++++ .../src/HLTPixelActivityHFSumEnergyFilter.cc | 89 +++++++++++++++++++ HLTrigger/special/src/SealModule.cc | 2 + 3 files changed, 143 insertions(+) create mode 100644 HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h create mode 100644 HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc diff --git a/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h b/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h new file mode 100644 index 0000000000000..b8e8d9459561e --- /dev/null +++ b/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h @@ -0,0 +1,52 @@ +#ifndef _HLTPixelActivityHFSumEnergyFilter_H +#define _HLTPixelActivityHFSumEnergyFilter_H + +// system include files +#include + +// user include files +#include "HLTrigger/HLTcore/interface/HLTFilter.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "DataFormats/Common/interface/Handle.h" +#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" +#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" +#include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h" +#include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h" +#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h" +#include "DataFormats/HLTReco/interface/TriggerTypeDefs.h" +#include "DataFormats/Common/interface/DetSetVector.h" +#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" +#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" +#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" + +// +// class declaration +// + +class HLTPixelActivityHFSumEnergyFilter : public HLTFilter { +public: + explicit HLTPixelActivityHFSumEnergyFilter(const edm::ParameterSet&); + ~HLTPixelActivityHFSumEnergyFilter(); + static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); + +private: + virtual bool hltFilter(edm::Event&, const edm::EventSetup&, trigger::TriggerFilterObjectWithRefs & filterproduct) const override; + + edm::InputTag inputTag_; // input tag identifying product containing pixel digis + edm::EDGetTokenT > inputToken_; + edm::EDGetTokenT HFHitsToken_; + edm::InputTag HFHits_; + double eCut_HF_; + double eMin_HF_; + double offset_; + double slope_; + double maxDiff_; +}; + +#endif diff --git a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc new file mode 100644 index 0000000000000..da0b20fee6bad --- /dev/null +++ b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc @@ -0,0 +1,89 @@ +#include "HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "DataFormats/Common/interface/Handle.h" +#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h" +#include "DataFormats/HLTReco/interface/TriggerTypeDefs.h" +#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" +#include "DataFormats/Common/interface/DetSetVector.h" +#include "FWCore/Utilities/interface/StreamID.h" + +// +// constructors and destructor +// + +HLTPixelActivityHFSumEnergyFilter::HLTPixelActivityHFSumEnergyFilter(const edm::ParameterSet& config) : HLTFilter(config), inputTag_ (config.getParameter("inputTag")), + HFHits_ (config.getParameter("HFHitCollection")), + eCut_HF_ (config.getParameter("eCut_HF")), + eMin_HF_ (config.getParameter("eMin_HF")), + offset_ (config.getParameter("offset")), + slope_ (config.getParameter("slope")), + maxDiff_ (config.getParameter("maxDiff")) +{ + inputToken_ = consumes >(inputTag_); + HFHitsToken_ = consumes(HFHits_); + + LogDebug("") << "Using the " << inputTag_ << " input collection"; +} + +HLTPixelActivityHFSumEnergyFilter::~HLTPixelActivityHFSumEnergyFilter() +{ +} + +void +HLTPixelActivityHFSumEnergyFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + makeHLTFilterDescription(desc); + desc.add("inputTag",edm::InputTag("hltSiPixelClusters")); + desc.add("HFHitCollection",edm::InputTag("hltHfreco")); + desc.add("eCut_HF",0); + desc.add("eMin_HF",0); + desc.add("offset",0); + desc.add("slope",0); + desc.add("maxDiff",1e-5); + descriptions.add("hltPixelActivityHFSumEnergyFilter",desc); +} + +// +// member functions +// + +// ------------ method called to produce the data ------------ +bool HLTPixelActivityHFSumEnergyFilter::hltFilter(edm::Event& event, const edm::EventSetup& iSetup, trigger::TriggerFilterObjectWithRefs & filterproduct) const +{ + // All HLT filters must create and fill an HLT filter object, + // recording any reconstructed physics objects satisfying (or not) + // this HLT filter, and place it in the Event. + + // The filter object + if (saveTags()) filterproduct.addCollectionTag(inputTag_); + + // get hold of products from Event + edm::Handle > clusterColl; + event.getByToken(inputToken_, clusterColl); + + unsigned int clusterSize = clusterColl->dataSize(); + LogDebug("") << "Number of clusters: " << clusterSize; + + edm::Handle HFRecHitsH; + event.getByToken(HFHitsToken_,HFRecHitsH); + + double sumE = 0.; + + for (HFRecHitCollection::const_iterator it=HFRecHitsH->begin(); it!=HFRecHitsH->end(); it++) { + if (it->energy()>eCut_HF_) { + sumE += it->energy(); + } + } + + bool accept = kFALSE; + + double thres = offset_ + slope_ * sumE; + double diff = clusterSize - thres; + if(sumE>eMin_HF_ && diff < maxDiff_) accept = kTRUE; + + // return with final filter decision + return accept; +} diff --git a/HLTrigger/special/src/SealModule.cc b/HLTrigger/special/src/SealModule.cc index e22a16f1ff922..49e34e5a8d0a3 100644 --- a/HLTrigger/special/src/SealModule.cc +++ b/HLTrigger/special/src/SealModule.cc @@ -29,6 +29,7 @@ #include "HLTrigger/special/interface/HLTRegionalEcalResonanceFilter.h" #include "HLTrigger/special/interface/HLTPixelAsymmetryFilter.h" +#include "HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h" #include "HLTrigger/special/interface/HLTHFAsymmetryFilter.h" #include "HLTrigger/special/interface/HLTTrackerHaloFilter.h" @@ -65,5 +66,6 @@ DEFINE_FWK_MODULE(HLTEcalResonanceFilter); DEFINE_FWK_MODULE(HLTRegionalEcalResonanceFilter); DEFINE_FWK_MODULE(HLTPixelAsymmetryFilter); +DEFINE_FWK_MODULE(HLTPixelActivityHFSumEnergyFilter); DEFINE_FWK_MODULE(HLTHFAsymmetryFilter); DEFINE_FWK_MODULE(HLTTrackerHaloFilter); From 2c0ec9c2b9f29265a8371d0de0f70a0d7e577c2f Mon Sep 17 00:00:00 2001 From: Marta Date: Wed, 18 Nov 2015 21:35:22 +0100 Subject: [PATCH 2/4] add saveTag for HFHits --- HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc index da0b20fee6bad..cba0874f80ae5 100644 --- a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc +++ b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc @@ -58,7 +58,10 @@ bool HLTPixelActivityHFSumEnergyFilter::hltFilter(edm::Event& event, const edm:: // this HLT filter, and place it in the Event. // The filter object - if (saveTags()) filterproduct.addCollectionTag(inputTag_); + if (saveTags()) { + filterproduct.addCollectionTag(inputTag_); + filterproduct.addCollectionTag(HFHits_); + } // get hold of products from Event edm::Handle > clusterColl; From 4c5d28b56b7898c3b9b4ee9fed362742f3012d4e Mon Sep 17 00:00:00 2001 From: Marta Date: Thu, 19 Nov 2015 08:21:20 +0100 Subject: [PATCH 3/4] inherit from EDFilter --- .../HLTPixelActivityHFSumEnergyFilter.h | 18 ++++++------- .../src/HLTPixelActivityHFSumEnergyFilter.cc | 25 ++++--------------- 2 files changed, 13 insertions(+), 30 deletions(-) diff --git a/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h b/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h index b8e8d9459561e..69b9a6bbda00a 100644 --- a/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h +++ b/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h @@ -5,23 +5,21 @@ #include // user include files -#include "HLTrigger/HLTcore/interface/HLTFilter.h" +#include "FWCore/Framework/interface/stream/EDFilter.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Utilities/interface/StreamID.h" + #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/Common/interface/Handle.h" -#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" -#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" -#include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h" -#include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h" -#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h" + #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h" #include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" #include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" #include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" @@ -29,16 +27,16 @@ // class declaration // -class HLTPixelActivityHFSumEnergyFilter : public HLTFilter { +class HLTPixelActivityHFSumEnergyFilter : public edm::stream::EDFilter<> { public: explicit HLTPixelActivityHFSumEnergyFilter(const edm::ParameterSet&); ~HLTPixelActivityHFSumEnergyFilter(); static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); private: - virtual bool hltFilter(edm::Event&, const edm::EventSetup&, trigger::TriggerFilterObjectWithRefs & filterproduct) const override; + virtual bool filter(edm::Event& iEvent, const edm::EventSetup& iSetup) override; - edm::InputTag inputTag_; // input tag identifying product containing pixel digis + edm::InputTag inputTag_; // input tag identifying product containing pixel clusters edm::EDGetTokenT > inputToken_; edm::EDGetTokenT HFHitsToken_; edm::InputTag HFHits_; diff --git a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc index cba0874f80ae5..e4a373d05323a 100644 --- a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc +++ b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc @@ -3,18 +3,13 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/Common/interface/Handle.h" -#include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h" -#include "DataFormats/HLTReco/interface/TriggerTypeDefs.h" -#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" -#include "DataFormats/Common/interface/DetSetVector.h" -#include "FWCore/Utilities/interface/StreamID.h" // // constructors and destructor // -HLTPixelActivityHFSumEnergyFilter::HLTPixelActivityHFSumEnergyFilter(const edm::ParameterSet& config) : HLTFilter(config), inputTag_ (config.getParameter("inputTag")), +HLTPixelActivityHFSumEnergyFilter::HLTPixelActivityHFSumEnergyFilter(const edm::ParameterSet& config) : + inputTag_ (config.getParameter("inputTag")), HFHits_ (config.getParameter("HFHitCollection")), eCut_HF_ (config.getParameter("eCut_HF")), eMin_HF_ (config.getParameter("eMin_HF")), @@ -35,7 +30,6 @@ HLTPixelActivityHFSumEnergyFilter::~HLTPixelActivityHFSumEnergyFilter() void HLTPixelActivityHFSumEnergyFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; - makeHLTFilterDescription(desc); desc.add("inputTag",edm::InputTag("hltSiPixelClusters")); desc.add("HFHitCollection",edm::InputTag("hltHfreco")); desc.add("eCut_HF",0); @@ -51,27 +45,18 @@ HLTPixelActivityHFSumEnergyFilter::fillDescriptions(edm::ConfigurationDescriptio // // ------------ method called to produce the data ------------ -bool HLTPixelActivityHFSumEnergyFilter::hltFilter(edm::Event& event, const edm::EventSetup& iSetup, trigger::TriggerFilterObjectWithRefs & filterproduct) const +bool HLTPixelActivityHFSumEnergyFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) { - // All HLT filters must create and fill an HLT filter object, - // recording any reconstructed physics objects satisfying (or not) - // this HLT filter, and place it in the Event. - - // The filter object - if (saveTags()) { - filterproduct.addCollectionTag(inputTag_); - filterproduct.addCollectionTag(HFHits_); - } // get hold of products from Event edm::Handle > clusterColl; - event.getByToken(inputToken_, clusterColl); + iEvent.getByToken(inputToken_, clusterColl); unsigned int clusterSize = clusterColl->dataSize(); LogDebug("") << "Number of clusters: " << clusterSize; edm::Handle HFRecHitsH; - event.getByToken(HFHitsToken_,HFRecHitsH); + iEvent.getByToken(HFHitsToken_,HFRecHitsH); double sumE = 0.; From 7e399e2d8662eeb4c4b7163f7c122b612837844c Mon Sep 17 00:00:00 2001 From: Marta Date: Thu, 19 Nov 2015 14:59:12 +0100 Subject: [PATCH 4/4] adjustments based on comments from PR --- .../HLTPixelActivityHFSumEnergyFilter.h | 1 - .../src/HLTPixelActivityHFSumEnergyFilter.cc | 16 +++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h b/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h index 69b9a6bbda00a..008b65ccf52e6 100644 --- a/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h +++ b/HLTrigger/special/interface/HLTPixelActivityHFSumEnergyFilter.h @@ -44,7 +44,6 @@ class HLTPixelActivityHFSumEnergyFilter : public edm::stream::EDFilter<> { double eMin_HF_; double offset_; double slope_; - double maxDiff_; }; #endif diff --git a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc index e4a373d05323a..ff10e7efc1896 100644 --- a/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc +++ b/HLTrigger/special/src/HLTPixelActivityHFSumEnergyFilter.cc @@ -14,8 +14,7 @@ HLTPixelActivityHFSumEnergyFilter::HLTPixelActivityHFSumEnergyFilter(const edm:: eCut_HF_ (config.getParameter("eCut_HF")), eMin_HF_ (config.getParameter("eMin_HF")), offset_ (config.getParameter("offset")), - slope_ (config.getParameter("slope")), - maxDiff_ (config.getParameter("maxDiff")) + slope_ (config.getParameter("slope")) { inputToken_ = consumes >(inputTag_); HFHitsToken_ = consumes(HFHits_); @@ -33,10 +32,9 @@ HLTPixelActivityHFSumEnergyFilter::fillDescriptions(edm::ConfigurationDescriptio desc.add("inputTag",edm::InputTag("hltSiPixelClusters")); desc.add("HFHitCollection",edm::InputTag("hltHfreco")); desc.add("eCut_HF",0); - desc.add("eMin_HF",0); - desc.add("offset",0); - desc.add("slope",0); - desc.add("maxDiff",1e-5); + desc.add("eMin_HF",10000.); + desc.add("offset",-1000.); + desc.add("slope",0.5); descriptions.add("hltPixelActivityHFSumEnergyFilter",desc); } @@ -66,11 +64,11 @@ bool HLTPixelActivityHFSumEnergyFilter::filter(edm::Event& iEvent, const edm::Ev } } - bool accept = kFALSE; + bool accept = false; double thres = offset_ + slope_ * sumE; - double diff = clusterSize - thres; - if(sumE>eMin_HF_ && diff < maxDiff_) accept = kTRUE; + double diff = clusterSize - thres; //diff = clustersize - (correlation line + offset) + if(sumE>eMin_HF_ && diff < 0.) accept = true; // return with final filter decision return accept;