File indexing completed on 2024-04-06 12:18:32
0001
0002
0003
0004
0005
0006
0007 #include "HLTrigger/JetMET/interface/HLT2jetGapFilter.h"
0008
0009 #include "DataFormats/Common/interface/Handle.h"
0010
0011 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0012
0013 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0014
0015 #include "FWCore/Framework/interface/ESHandle.h"
0016 #include "FWCore/Framework/interface/EventSetup.h"
0017
0018 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0019 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0020 #include "FWCore/Utilities/interface/InputTag.h"
0021
0022
0023
0024
0025 HLT2jetGapFilter::HLT2jetGapFilter(const edm::ParameterSet& iConfig) : HLTFilter(iConfig) {
0026 inputTag_ = iConfig.getParameter<edm::InputTag>("inputTag");
0027 minEt_ = iConfig.getParameter<double>("minEt");
0028 minEta_ = iConfig.getParameter<double>("minEta");
0029
0030 m_theCaloJetToken = consumes<reco::CaloJetCollection>(inputTag_);
0031 }
0032
0033 HLT2jetGapFilter::~HLT2jetGapFilter() = default;
0034
0035 void HLT2jetGapFilter::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0036 edm::ParameterSetDescription desc;
0037 makeHLTFilterDescription(desc);
0038 desc.add<edm::InputTag>("inputTag", edm::InputTag("iterativeCone5CaloJets"));
0039 desc.add<double>("minEt", 90.0);
0040 desc.add<double>("minEta", 1.9);
0041 descriptions.add("hlt2jetGapFilter", desc);
0042 }
0043
0044
0045 bool HLT2jetGapFilter::hltFilter(edm::Event& iEvent,
0046 const edm::EventSetup& iSetup,
0047 trigger::TriggerFilterObjectWithRefs& filterproduct) const {
0048 using namespace trigger;
0049
0050
0051 if (saveTags())
0052 filterproduct.addCollectionTag(inputTag_);
0053
0054 edm::Handle<reco::CaloJetCollection> recocalojets;
0055 iEvent.getByToken(m_theCaloJetToken, recocalojets);
0056
0057
0058 int n(0);
0059
0060 if (recocalojets->size() > 1) {
0061
0062
0063 double etjet1 = 0.;
0064 double etjet2 = 0.;
0065 double etajet1 = 0.;
0066 double etajet2 = 0.;
0067 int countjets = 0;
0068
0069 for (auto recocalojet = recocalojets->begin(); recocalojet <= (recocalojets->begin() + 1); recocalojet++) {
0070 if (countjets == 0) {
0071 etjet1 = recocalojet->et();
0072 etajet1 = recocalojet->eta();
0073 }
0074 if (countjets == 1) {
0075 etjet2 = recocalojet->et();
0076 etajet2 = recocalojet->eta();
0077 }
0078 countjets++;
0079 }
0080
0081 if (etjet1 > minEt_ && etjet2 > minEt_ && (etajet1 * etajet2) < 0 && std::abs(etajet1) > minEta_ &&
0082 std::abs(etajet2) > minEta_) {
0083 for (auto recocalojet = recocalojets->begin(); recocalojet <= (recocalojets->begin() + 1); recocalojet++) {
0084 reco::CaloJetRef ref(reco::CaloJetRef(recocalojets, distance(recocalojets->begin(), recocalojet)));
0085 filterproduct.addObject(TriggerJet, ref);
0086 n++;
0087 }
0088 }
0089
0090 }
0091
0092
0093 bool accept(n >= 2);
0094
0095 return accept;
0096 }