19 minPt_ (iConfig.getParameter<double>(
"minPt")),
20 maxEta_ (iConfig.getParameter<double>(
"maxEta")),
21 CHF_ (iConfig.getParameter<double>(
"CHF")),
22 NHF_ (iConfig.getParameter<double>(
"NHF")),
23 CEF_ (iConfig.getParameter<double>(
"CEF")),
24 NEF_ (iConfig.getParameter<double>(
"NEF")),
25 maxCF_ (iConfig.getParameter<double>(
"maxCF")),
26 NCH_ (iConfig.getParameter<
int>(
"NCH")),
27 NTOT_ (iConfig.getParameter<
int>(
"NTOT")),
28 inputTag_ (iConfig.getParameter<
edm::InputTag>(
"jetsInput")) {
32 produces<reco::PFJetCollection>();
41 desc.
add<
double>(
"minPt", 20.);
42 desc.
add<
double>(
"maxEta", 1e99);
43 desc.
add<
double>(
"CHF", -99.);
44 desc.
add<
double>(
"NHF", 99.);
45 desc.
add<
double>(
"CEF", 99.);
46 desc.
add<
double>(
"NEF", 99.);
47 desc.
add<
double>(
"maxCF", 99.);
48 desc.
add<
int>(
"NCH", 0);
49 desc.
add<
int>(
"NTOT", 0);
51 descriptions.
add(
"hltPFJetIDProducer", desc);
63 for (
auto const & j : *pfjets) {
69 if (!(pt > 0.))
continue;
78 double chf = j.chargedHadronEnergyFraction();
80 double nhf = j.neutralHadronEnergyFraction();
81 double cef = j.chargedEmEnergyFraction();
82 double nef = j.neutralEmEnergyFraction();
83 double cftot= chf + cef + j.chargedMuEnergyFraction();
84 int nch = j.chargedMultiplicity();
85 int ntot = j.numberOfDaughters();
88 pass = pass && (ntot >
NTOT_);
89 pass = pass && (nef <
NEF_);
90 pass = pass && (nhf < NHF_ || abseta >= 2.4);
91 pass = pass && (cef < CEF_ || abseta >= 2.4);
92 pass = pass && (chf >
CHF_ || abseta >= 2.4);
93 pass = pass && (nch >
NCH_ || abseta >= 2.4);
94 pass = pass && (cftot < maxCF_ || abseta >= 2.4);
97 if (pass) result->push_back(j);
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
HLTPFJetIDProducer(const edm::ParameterSet &iConfig)
~HLTPFJetIDProducer() override
edm::EDGetTokenT< reco::PFJetCollection > m_thePFJetToken
Abs< T >::type abs(const T &t)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double NEF_
neutral EM fraction
int NTOT_
number of constituents
double CHF_
charged hadron fraction
int NCH_
number of charged constituents
edm::InputTag inputTag_
input PFJet collection
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< PFJet > PFJetCollection
collection of PFJet objects
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override