diff --git a/GeneratorInterface/GenFilters/BuildFile.xml b/GeneratorInterface/GenFilters/BuildFile.xml
index 01c67c0f8b07e..bb85410318e4c 100644
--- a/GeneratorInterface/GenFilters/BuildFile.xml
+++ b/GeneratorInterface/GenFilters/BuildFile.xml
@@ -1,3 +1,4 @@
+
diff --git a/GeneratorInterface/GenFilters/python/LHEJetFilter_cfi.py b/GeneratorInterface/GenFilters/python/LHEJetFilter_cfi.py
new file mode 100644
index 0000000000000..18ce6fea6939b
--- /dev/null
+++ b/GeneratorInterface/GenFilters/python/LHEJetFilter_cfi.py
@@ -0,0 +1,8 @@
+import FWCore.ParameterSet.Config as cms
+
+LHEJetFilter = cms.EDFilter('LHEJetFilter',
+jetPtMin = cms.double(350.),
+jetR = cms.double(0.8),
+src = cms.InputTag('externalLHEProducer')
+)
+
diff --git a/GeneratorInterface/GenFilters/src/LHEJetFilter.cc b/GeneratorInterface/GenFilters/src/LHEJetFilter.cc
new file mode 100644
index 0000000000000..ed09471f1c109
--- /dev/null
+++ b/GeneratorInterface/GenFilters/src/LHEJetFilter.cc
@@ -0,0 +1,71 @@
+#include
+
+#include "FWCore/Framework/interface/EDFilter.h"
+#include "FWCore/Framework/interface/Frameworkfwd.h"
+#include "FWCore/Framework/interface/Event.h"
+#include "FWCore/Framework/interface/MakerMacros.h"
+
+#include "FWCore/ParameterSet/interface/ParameterSet.h"
+#include "FWCore/Utilities/interface/InputTag.h"
+
+#include "DataFormats/Common/interface/Handle.h"
+
+#include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h"
+
+#include "fastjet/PseudoJet.hh"
+#include "fastjet/JetDefinition.hh"
+#include "fastjet/ClusterSequence.hh"
+#include "fastjet/Selector.hh"
+
+using namespace std;
+using namespace fastjet;
+
+class LHEJetFilter : public edm::EDFilter {
+public:
+ explicit LHEJetFilter(const edm::ParameterSet&);
+ ~LHEJetFilter() override {}
+
+private:
+ bool filter(edm::Event&, const edm::EventSetup&) override;
+
+ edm::EDGetTokenT tokenLHEEvent_;
+ double jetPtMin_;
+ JetDefinition jetdef_;
+
+ vector jetconsts_;
+};
+
+LHEJetFilter::LHEJetFilter(const edm::ParameterSet& params)
+ : tokenLHEEvent_(consumes(params.getParameter("src"))),
+ jetPtMin_(params.getParameter("jetPtMin")),
+ jetdef_(antikt_algorithm, params.getParameter("jetR")) {}
+
+bool LHEJetFilter::filter(edm::Event& evt, const edm::EventSetup& params) {
+ edm::Handle lheinfo;
+ evt.getByToken(tokenLHEEvent_, lheinfo);
+
+ if (!lheinfo.isValid()) {
+ return true;
+ }
+
+ jetconsts_.clear();
+ const lhef::HEPEUP& hepeup = lheinfo->hepeup();
+ for (size_t p = 0; p < hepeup.IDUP.size(); ++p) {
+ if (hepeup.ISTUP[p] == 1) {
+ const lhef::HEPEUP::FiveVector& mom = hepeup.PUP[p];
+ jetconsts_.emplace_back(mom[0], mom[1], mom[2], mom[3]);
+ }
+ }
+
+ ClusterSequence cs(jetconsts_, jetdef_);
+ vector jets = sorted_by_pt(cs.inclusive_jets());
+
+ if (jets.empty()) {
+ return false;
+ }
+
+ return jets[0].perp() > jetPtMin_;
+}
+
+// Define module as a plug-in
+DEFINE_FWK_MODULE(LHEJetFilter);