ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/GPetrucc/plugins/PATJetSlimmer.cc
Revision: 1.2
Committed: Tue Jan 26 12:32:00 2010 UTC (15 years, 3 months ago) by gpetrucc
Content type: text/plain
Branch: MAIN
CVS Tags: V03-00-00, V02-00-00, HEAD
Changes since 1.1: +4 -3 lines
Log Message:
Adapt to new dataformats

File Contents

# Content
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);