1 |
//
|
2 |
// $Id: PATJetSlimmer.cc,v 1.1 2009/04/14 13:58:52 gpetrucc Exp $
|
3 |
//
|
4 |
|
5 |
/**
|
6 |
\class pat::PATJetSlimmer PATJetSlimmer.h "PhysicsTools/PatAlgos/interface/PATJetSlimmer.h"
|
7 |
\brief Matcher of reconstructed objects to L1 Muons
|
8 |
|
9 |
\author Giovanni Petrucciani
|
10 |
\version $Id: PATJetSlimmer.cc,v 1.1 2009/04/14 13:58:52 gpetrucc Exp $
|
11 |
*/
|
12 |
|
13 |
|
14 |
#include "FWCore/Framework/interface/EDProducer.h"
|
15 |
#include "FWCore/Framework/interface/Event.h"
|
16 |
#include "FWCore/ParameterSet/interface/ParameterSet.h"
|
17 |
#include "FWCore/ParameterSet/interface/InputTag.h"
|
18 |
|
19 |
#define protected public
|
20 |
#include "DataFormats/PatCandidates/interface/Jet.h"
|
21 |
#undef protected
|
22 |
|
23 |
namespace pat {
|
24 |
|
25 |
class PATJetSlimmer : public edm::EDProducer {
|
26 |
public:
|
27 |
explicit PATJetSlimmer(const edm::ParameterSet & iConfig);
|
28 |
virtual ~PATJetSlimmer() { }
|
29 |
|
30 |
virtual void produce(edm::Event & iEvent, const edm::EventSetup & iSetup);
|
31 |
|
32 |
private:
|
33 |
edm::InputTag src_;
|
34 |
|
35 |
/// clear mJetArea, mPassNumber, mPileupEnergy
|
36 |
bool clearJetVars_;
|
37 |
/// reset daughters to an empty vector
|
38 |
bool clearDaughters_;
|
39 |
/// reduce GenJet to a bare 4-vector
|
40 |
bool slimGenJet_;
|
41 |
/// drop the Calo or PF specific
|
42 |
bool dropSpecific_;
|
43 |
/// drop the JetCorrFactors (but keep the jet corrected!)
|
44 |
bool dropJetCorrFactors_;
|
45 |
};
|
46 |
|
47 |
} // namespace
|
48 |
|
49 |
pat::PATJetSlimmer::PATJetSlimmer(const edm::ParameterSet & iConfig) :
|
50 |
src_(iConfig.getParameter<edm::InputTag>("src")),
|
51 |
clearJetVars_(iConfig.getParameter<bool>("clearJetVars")),
|
52 |
clearDaughters_(iConfig.getParameter<bool>("clearDaughters")),
|
53 |
slimGenJet_(iConfig.getParameter<bool>("slimGenJet")),
|
54 |
dropSpecific_(iConfig.getParameter<bool>("dropSpecific")),
|
55 |
dropJetCorrFactors_(iConfig.getParameter<bool>("dropJetCorrFactors"))
|
56 |
{
|
57 |
produces<std::vector<pat::Jet> >();
|
58 |
}
|
59 |
|
60 |
void
|
61 |
pat::PATJetSlimmer::produce(edm::Event & iEvent, const edm::EventSetup & iSetup) {
|
62 |
using namespace edm;
|
63 |
using namespace std;
|
64 |
|
65 |
Handle<View<pat::Jet> > src;
|
66 |
iEvent.getByLabel(src_, src);
|
67 |
|
68 |
auto_ptr<vector<pat::Jet> > out(new vector<pat::Jet>());
|
69 |
out->reserve(src->size());
|
70 |
|
71 |
for (View<pat::Jet>::const_iterator it = src->begin(), ed = src->end(); it != ed; ++it) {
|
72 |
out->push_back(*it);
|
73 |
pat::Jet & jet = out->back();
|
74 |
|
75 |
if (clearJetVars_) {
|
76 |
jet.setJetArea(0);
|
77 |
jet.setNPasses(0);
|
78 |
jet.setPileup(0);
|
79 |
}
|
80 |
if (clearDaughters_) {
|
81 |
jet.clearDaughters();
|
82 |
}
|
83 |
if (slimGenJet_) {
|
84 |
const reco::GenJet * genjet = it->genJet();
|
85 |
if (genjet) {
|
86 |
std::vector<reco::GenJet> tempGenJet(1, reco::GenJet(genjet->p4(), reco::Particle::Point(), reco::GenJet::Specific()));
|
87 |
jet.setGenJet(reco::GenJetRef(&tempGenJet,0), true);
|
88 |
}
|
89 |
}
|
90 |
if (dropSpecific_) {
|
91 |
// FIXME add method in pat::Jet
|
92 |
jet.specificCalo_.clear();
|
93 |
jet.specificPF_.clear();
|
94 |
}
|
95 |
if (dropJetCorrFactors_) {
|
96 |
// FIXME add method in pat::Jet
|
97 |
jet.jetEnergyCorrections_.clear();
|
98 |
}
|
99 |
}
|
100 |
|
101 |
iEvent.put(out);
|
102 |
}
|
103 |
|
104 |
#include "FWCore/Framework/interface/MakerMacros.h"
|
105 |
using namespace pat;
|
106 |
DEFINE_FWK_MODULE(PATJetSlimmer);
|