1 |
auterman |
1.1 |
// -*- C++ -*-
|
2 |
|
|
//
|
3 |
|
|
// Package: PATJetIDAnalyzer
|
4 |
|
|
// Class: PATJetIDAnalyzer
|
5 |
|
|
//
|
6 |
|
|
/**\class PATJetIDAnalyzer PATJetIDAnalyzer.h Demo/PATJetIDAnalyzer/interface/PATJetIDAnalyzer.h
|
7 |
|
|
|
8 |
|
|
Description: <one line class summary>
|
9 |
|
|
|
10 |
|
|
Implementation:
|
11 |
|
|
<Notes on implementation>
|
12 |
|
|
*/
|
13 |
|
|
//
|
14 |
|
|
// Original Author: Christian Autermann
|
15 |
|
|
// Created: Mon Feb 25 11:33:02 CET 2008
|
16 |
|
|
// $Id$
|
17 |
|
|
//
|
18 |
|
|
//
|
19 |
|
|
|
20 |
|
|
|
21 |
|
|
// system include files
|
22 |
|
|
#include <memory>
|
23 |
|
|
|
24 |
|
|
// user include files
|
25 |
|
|
#include "FWCore/Framework/interface/Frameworkfwd.h"
|
26 |
|
|
#include "FWCore/Framework/interface/EDAnalyzer.h"
|
27 |
|
|
|
28 |
|
|
#include "FWCore/Framework/interface/Event.h"
|
29 |
|
|
#include "FWCore/Framework/interface/MakerMacros.h"
|
30 |
|
|
|
31 |
|
|
#include "FWCore/ParameterSet/interface/ParameterSet.h"
|
32 |
|
|
//
|
33 |
|
|
// class declerations
|
34 |
|
|
//
|
35 |
|
|
class PtGreater {
|
36 |
|
|
public:
|
37 |
|
|
template <typename T> bool operator () (const T& i, const T& j) {
|
38 |
|
|
return (i.pt() > j.pt());
|
39 |
|
|
}
|
40 |
|
|
};
|
41 |
|
|
|
42 |
|
|
class PATJetIDAnalyzer : public edm::EDAnalyzer {
|
43 |
|
|
public:
|
44 |
|
|
explicit PATJetIDAnalyzer(const edm::ParameterSet&);
|
45 |
|
|
~PATJetIDAnalyzer();
|
46 |
|
|
|
47 |
|
|
|
48 |
|
|
private:
|
49 |
|
|
virtual void beginJob(const edm::EventSetup&) ;
|
50 |
|
|
virtual void analyze(const edm::Event&, const edm::EventSetup&);
|
51 |
|
|
virtual void endJob() ;
|
52 |
|
|
virtual void makeMatchingMaps(edm::Handle<reco::GenJetCollection> GenJets,
|
53 |
|
|
edm::Handle<reco::CaloJetCollection> CaloJets);
|
54 |
|
|
|
55 |
|
|
// ----------member data ---------------------------
|
56 |
|
|
|
57 |
|
|
//jets from PAT
|
58 |
|
|
edm::InputTag _patJet;
|
59 |
|
|
edm::InputTag _patMet;
|
60 |
|
|
|
61 |
|
|
//jets from AOD
|
62 |
|
|
edm::InputTag _recJet;
|
63 |
|
|
edm::InputTag _genJet;
|
64 |
|
|
edm::InputTag _recMet;
|
65 |
|
|
edm::InputTag _genMet;
|
66 |
|
|
|
67 |
|
|
|
68 |
|
|
std::string _hist;
|
69 |
|
|
double _jetminpt, _jetmaxeta;
|
70 |
|
|
|
71 |
|
|
//CaloJets
|
72 |
|
|
unsigned static const _njets = 4;
|
73 |
|
|
TH1F *_jetmult; //total number of jets
|
74 |
|
|
TH1F *_pt_jet[_njets]; //pt of a specific jet
|
75 |
|
|
TH1F *_eta_jet[_njets]; //eta
|
76 |
|
|
TH1F *_phi_jet[_njets]; //phi
|
77 |
|
|
TH1F *_emfrac_jet[_njets]; //electromagnetic energy fraction
|
78 |
|
|
TH1F *_hadfrac_jet[_njets]; //hadronic energy fraction
|
79 |
|
|
TH1F *_n60_jet[_njets]; //number of components containing 60% of the energy
|
80 |
|
|
TH1F *_n90_jet[_njets]; //number of components containing 90% of the energy
|
81 |
|
|
TH1F *_area_jet[_njets]; //area covered by the jet's towers
|
82 |
|
|
//GenJets
|
83 |
|
|
unsigned static const _ngenjets = 4;
|
84 |
|
|
TH1F *_genjetmult; //total number of genjets
|
85 |
|
|
TH1F *_pt_genjet[_ngenjets]; //pt of a specific genjet
|
86 |
|
|
TH1F *_eta_genjet[_ngenjets]; //eta
|
87 |
|
|
TH1F *_phi_genjet[_ngenjets]; //phi
|
88 |
|
|
TH1F *_emfrac_genjet[_ngenjets]; //electromagnetic energy fraction
|
89 |
|
|
TH1F *_hadfrac_genjet[_ngenjets]; //hadronic energy fraction
|
90 |
|
|
TH1F *_invisible_genjet[_ngenjets]; //electromagnetic energy fraction
|
91 |
|
|
TH1F *_aux_genjet[_ngenjets]; //hadronic energy fraction
|
92 |
|
|
//met
|
93 |
|
|
TH1F *_met; //missing transverse energy
|
94 |
|
|
TH1F *_metmult; //size of the met std::vector
|
95 |
|
|
TH1F *_metx; //missing transverse energy, x-component
|
96 |
|
|
TH1F *_mety; //missing transverse energy, y-component
|
97 |
|
|
TH1F *_metsig; //MET significance = sqrt(met)/sum et
|
98 |
|
|
//genmet
|
99 |
|
|
TH1F *_genmet; //missing transverse energy
|
100 |
|
|
TH1F *_genmetmult; //size of the met std::vector
|
101 |
|
|
TH1F *_genmetx; //missing transverse energy, x-component
|
102 |
|
|
TH1F *_genmety; //missing transverse energy, y-component
|
103 |
|
|
//other
|
104 |
|
|
TH1F *_ht; //sum of all hadronic energy in the event
|
105 |
|
|
TH1F *_htmet; //sum of all energy, incl. MET in the event
|
106 |
|
|
TH1F *_dijet; //invariant mass of two leading jets
|
107 |
|
|
TH1F *_nv; //the "new variable"
|
108 |
|
|
TH1F *_nv2; //the "new variable 2"
|
109 |
|
|
TH1F *_genht; //sum of all hadronic energy in the event (gen)
|
110 |
|
|
TH1F *_genhtmet; //sum of all energy, incl. MET in the event (gen)
|
111 |
|
|
TH1F *_gendijet; //invariant mass of two leading jets (gen)
|
112 |
|
|
//matching
|
113 |
|
|
TH2F *_GenOnCalo_match; //Matching of GenJets on CaloJets
|
114 |
|
|
TH2F *_CaloOnGen_match; //Matching of Calojets on GenJets
|
115 |
|
|
TH2F *_GenVsMatched_pt; //Generated vs. Matched quantities
|
116 |
|
|
TH2F *_GenVsMatched_eta;
|
117 |
|
|
TH2F *_GenVsMatched_phi;
|
118 |
|
|
TH1F *_RecoEff_pt; //Reconstruction efficiencies
|
119 |
|
|
TH1F *_RecoEff_eta;
|
120 |
|
|
TH1F *_RecoEff_phi;
|
121 |
|
|
// helper histograms
|
122 |
|
|
TH1F *_RecoTot_pt;
|
123 |
|
|
TH1F *_RecoTot_eta;
|
124 |
|
|
TH1F *_RecoTot_phi;
|
125 |
|
|
|
126 |
|
|
// Matching Map: GenJets -> CaloJets
|
127 |
|
|
std::map<const reco::GenJet*, const reco::CaloJet*> MatchingMapGen;
|
128 |
|
|
// Matching Map: CaloJets -> GenJets
|
129 |
|
|
std::map<const reco::CaloJet*, const reco::GenJet*> MatchingMapJet;
|
130 |
|
|
|
131 |
|
|
|
132 |
|
|
|
133 |
|
|
};
|
134 |
|
|
|
135 |
|
|
//
|
136 |
|
|
// constants, enums and typedefs
|
137 |
|
|
//
|
138 |
|
|
|
139 |
|
|
//
|
140 |
|
|
// static data member definitions
|
141 |
|
|
//
|
142 |
|
|
|