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
67
68
69
70
71
72
|
// -*- C++ -*-
//
// Package: NJetsMC
// Class: NJetsMC
//
/**\class NJetsMC NJetsMC.cc
Description: Filter for DPS MC generation.
Implementation:
[Notes on implementation]
*/
//
// Original Author: "Nathaniel Odell"
// Created: Thu Aug 12 09:24:46 CDT 2010
// then moved to more general N-jets purpose in GeneratorInterface/GenFilters
//
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/global/EDFilter.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/EDGetToken.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "DataFormats/JetReco/interface/GenJetCollection.h"
#include "DataFormats/JetReco/interface/GenJet.h"
#include <cstdint>
class NJetsMC : public edm::global::EDFilter<> {
public:
explicit NJetsMC(const edm::ParameterSet&);
private:
bool filter(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
// ----------member data ---------------------------
const edm::EDGetTokenT<reco::GenJetCollection> genToken_;
const int njets_;
const double minpt_;
};
NJetsMC::NJetsMC(const edm::ParameterSet& iConfig)
: genToken_(consumes<reco::GenJetCollection>(iConfig.getUntrackedParameter<edm::InputTag>("GenTag"))),
njets_(iConfig.getParameter<int32_t>("Njets")),
minpt_(iConfig.getParameter<double>("MinPt")) {}
bool NJetsMC::filter(edm::StreamID, edm::Event& iEvent, const edm::EventSetup&) const {
edm::Handle<reco::GenJetCollection> genJets;
iEvent.getByToken(genToken_, genJets);
int count = 0;
bool result = false;
for (reco::GenJetCollection::const_iterator iJet = genJets->begin(); iJet != genJets->end(); ++iJet) {
reco::GenJet myJet = reco::GenJet(*iJet);
if (myJet.pt() > minpt_)
++count;
}
if (count >= njets_)
result = true;
return result;
}
//define this as a plug-in
DEFINE_FWK_MODULE(NJetsMC);
|