diff --git a/HeavyIonsAnalysis/EventAnalysis/plugins/HFFilter.cc b/HeavyIonsAnalysis/EventAnalysis/plugins/HFFilter.cc new file mode 100644 index 0000000000000..195fa66c47be3 --- /dev/null +++ b/HeavyIonsAnalysis/EventAnalysis/plugins/HFFilter.cc @@ -0,0 +1,71 @@ +// system include files +#include +#include +#include +#include + +// user include files +#include "FWCore/Utilities/interface/InputTag.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/EDFilter.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" + +#include "DataFormats/HeavyIonEvent/interface/HFFilterInfo.h" //this line is needed to access the HF Filters + +class HFFilter : public edm::EDFilter { +public: + explicit HFFilter(const edm::ParameterSet &); + ~HFFilter() override; + +private: + bool filter(edm::Event &, const edm::EventSetup &) override; + + edm::EDGetTokenT HFfilters_; + bool applyfilter_; + int threshold_; + int minnumtowers_; + int numMinHFTowers; + +}; + + +using namespace edm; +using namespace std; + +HFFilter::HFFilter(const edm::ParameterSet& iConfig) { + HFfilters_ = consumes(iConfig.getParameter("HFfilters")); + // applyfilter_ = iConfig.getParameter("applyfilter"); + threshold_ = iConfig.getParameter("threshold"); + minnumtowers_ = iConfig.getParameter("minnumtowers"); +} + +HFFilter::~HFFilter() {} + +bool HFFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) { + + bool accepted = false; + + numMinHFTowers = 0; + + edm::Handle HFfilter; + iEvent.getByToken(HFfilters_, HFfilter); + + if(threshold_ == 2){numMinHFTowers = HFfilter->numMinHFTowers2;} + if(threshold_ == 3){numMinHFTowers = HFfilter->numMinHFTowers3;} + if(threshold_ == 4){numMinHFTowers = HFfilter->numMinHFTowers4;} + if(threshold_ == 5){numMinHFTowers = HFfilter->numMinHFTowers5;} + + if(numMinHFTowers >= minnumtowers_) accepted = true; + + return accepted; + +} + +//define this as a plug-in +DEFINE_FWK_MODULE(HFFilter); diff --git a/HeavyIonsAnalysis/EventAnalysis/plugins/TriggerAnalyzer.cc b/HeavyIonsAnalysis/EventAnalysis/plugins/TriggerAnalyzer.cc index 10a220a11e413..d6c44e24d544d 100644 --- a/HeavyIonsAnalysis/EventAnalysis/plugins/TriggerAnalyzer.cc +++ b/HeavyIonsAnalysis/EventAnalysis/plugins/TriggerAnalyzer.cc @@ -79,7 +79,7 @@ TriggerAnalyzer::TriggerAnalyzer(edm::ParameterSet const& conf) l1dummies(conf.getParameter>("l1dummybranches")), hltresultsToken_(consumes(conf.getParameter("hltresults"))), l1resultsToken_(consumes(conf.getParameter("l1results"))), - hltPrescaleProvider_(new HLTPrescaleProvider(conf, consumesCollector(), *this)) { + hltPrescaleProvider_(new HLTPrescaleProvider(conf.getParameter("hltPSProvCfg"), consumesCollector(), *this)) { // open the tree file and initialize the tree edm::Service fs; t_ = fs->make("HltTree", ""); diff --git a/HeavyIonsAnalysis/EventAnalysis/python/hffilter_cfi.py b/HeavyIonsAnalysis/EventAnalysis/python/hffilter_cfi.py new file mode 100644 index 0000000000000..3c0eda3d2ad58 --- /dev/null +++ b/HeavyIonsAnalysis/EventAnalysis/python/hffilter_cfi.py @@ -0,0 +1,7 @@ +import FWCore.ParameterSet.Config as cms + +phfCoincFilter2Th4 = cms.EDFilter('HFFilter', + HFfilters = cms.InputTag("hiHFfilters","hiHFfilters","PAT"), + threshold = cms.int32(4), + minnumtowers = cms.int32(2) +) diff --git a/HeavyIonsAnalysis/EventAnalysis/python/hltanalysis_cfi.py b/HeavyIonsAnalysis/EventAnalysis/python/hltanalysis_cfi.py index a156f5b77b680..2c6b062bf7163 100644 --- a/HeavyIonsAnalysis/EventAnalysis/python/hltanalysis_cfi.py +++ b/HeavyIonsAnalysis/EventAnalysis/python/hltanalysis_cfi.py @@ -9,4 +9,5 @@ l1results = cms.InputTag('gtStage2Digis'), hltdummybranches = dummy_branches_for_PbPb_2018_HLT, l1dummybranches = dummy_branches_for_PbPb_2018_L1, + hltPSProvCfg=cms.PSet(stageL1Trigger = cms.uint32(2)), )