1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#include <vector>
#include "FWCore/Framework/interface/global/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::global::EDFilter<> {
public:
explicit LHEJetFilter(const edm::ParameterSet&);
~LHEJetFilter() override {}
private:
bool filter(edm::StreamID strid, edm::Event& evt, const edm::EventSetup& params) const override;
edm::EDGetTokenT<LHEEventProduct> tokenLHEEvent_;
double jetPtMin_;
JetDefinition jetdef_;
};
LHEJetFilter::LHEJetFilter(const edm::ParameterSet& params)
: tokenLHEEvent_(consumes<LHEEventProduct>(params.getParameter<edm::InputTag>("src"))),
jetPtMin_(params.getParameter<double>("jetPtMin")),
jetdef_(antikt_algorithm, params.getParameter<double>("jetR")) {}
bool LHEJetFilter::filter(edm::StreamID strid, edm::Event& evt, const edm::EventSetup& params) const {
edm::Handle<LHEEventProduct> lheinfo;
evt.getByToken(tokenLHEEvent_, lheinfo);
if (!lheinfo.isValid()) {
return true;
}
vector<PseudoJet> jetconsts;
jetconsts.reserve(10);
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<PseudoJet> jets = cs.inclusive_jets(jetPtMin_);
return !jets.empty();
}
// Define module as a plug-in
DEFINE_FWK_MODULE(LHEJetFilter);
|