File indexing completed on 2023-03-17 11:09:35
0001
0002
0003
0004
0005
0006
0007
0008 #include "HLTrigger/JetMET/interface/HLTJetEtaTopologyFilter.h"
0009
0010 #include "DataFormats/Common/interface/Ref.h"
0011 #include "DataFormats/Common/interface/Handle.h"
0012 #include "DataFormats/Math/interface/deltaPhi.h"
0013
0014 #include "FWCore/Framework/interface/ESHandle.h"
0015 #include "FWCore/Framework/interface/EventSetup.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0018 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0019 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0020 #include "FWCore/Utilities/interface/InputTag.h"
0021 #include "HLTrigger/HLTcore/interface/defaultModuleLabel.h"
0022
0023 #include <typeinfo>
0024
0025
0026
0027
0028 template <typename T>
0029 HLTJetEtaTopologyFilter<T>::HLTJetEtaTopologyFilter(const edm::ParameterSet& iConfig)
0030 : HLTFilter(iConfig),
0031 inputJetTag_(iConfig.template getParameter<edm::InputTag>("inputJetTag")),
0032 m_theJetToken(consumes<std::vector<T>>(inputJetTag_)),
0033 minPtJet_(iConfig.template getParameter<double>("minPtJet")),
0034
0035 jetEtaMin_(iConfig.template getParameter<double>("minJetEta")),
0036 jetEtaMax_(iConfig.template getParameter<double>("maxJetEta")),
0037 applyAbsToJet_(iConfig.template getParameter<bool>("applyAbsToJet")),
0038
0039 triggerType_(iConfig.template getParameter<int>("triggerType")) {
0040 LogDebug("") << "HLTJetEtaTopologyFilter: Input/minDphi/triggerType : " << inputJetTag_.encode() << " "
0041 << triggerType_;
0042 }
0043
0044 template <typename T>
0045 HLTJetEtaTopologyFilter<T>::~HLTJetEtaTopologyFilter() = default;
0046
0047 template <typename T>
0048 void HLTJetEtaTopologyFilter<T>::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0049 edm::ParameterSetDescription desc;
0050 makeHLTFilterDescription(desc);
0051 desc.add<edm::InputTag>("inputJetTag", edm::InputTag("hltIterativeCone5CaloJets"));
0052 desc.add<double>("minPtJet", 50.0);
0053
0054 desc.add<double>("minJetEta", -1.);
0055 desc.add<double>("maxJetEta", 1.4);
0056 desc.add<bool>("applyAbsToJet", false), desc.add<int>("triggerType", trigger::TriggerJet);
0057 descriptions.add(defaultModuleLabel<HLTJetEtaTopologyFilter<T>>(), desc);
0058 }
0059
0060
0061 template <typename T>
0062 bool HLTJetEtaTopologyFilter<T>::hltFilter(edm::Event& iEvent,
0063 const edm::EventSetup& iSetup,
0064 trigger::TriggerFilterObjectWithRefs& filterproduct) const {
0065 using namespace std;
0066 using namespace edm;
0067 using namespace reco;
0068 using namespace trigger;
0069
0070 typedef vector<T> TCollection;
0071 typedef Ref<TCollection> TRef;
0072
0073
0074 if (saveTags())
0075 filterproduct.addCollectionTag(inputJetTag_);
0076
0077
0078 Handle<TCollection> objects;
0079 iEvent.getByToken(m_theJetToken, objects);
0080
0081 int n(0);
0082
0083 if (!objects->empty()) {
0084 typename TCollection::const_iterator iEnd(objects->end());
0085 typename TCollection::const_iterator iJet(objects->begin());
0086 for (; iJet != iEnd; ++iJet) {
0087 if (iJet->pt() < minPtJet_)
0088 continue;
0089 float eta = iJet->eta();
0090 if (applyAbsToJet_) {
0091 eta = abs(eta);
0092 }
0093
0094 if (eta < jetEtaMin_ || eta > jetEtaMax_)
0095 continue;
0096 filterproduct.addObject(triggerType_, TRef(objects, distance(objects->begin(), iJet)));
0097
0098 ++n;
0099 }
0100 }
0101 bool accept(n >= 1);
0102 return accept;
0103 }