CMS 3D CMS Logo

PatTopSelectionAnalyzer.cc
Go to the documentation of this file.
1 #include <map>
2 #include <string>
3 
4 #include "TH1.h"
5 
12 
17 
18 class PatTopSelectionAnalyzer : public edm::one::EDAnalyzer<edm::one::SharedResources> {
19 public:
23  ~PatTopSelectionAnalyzer() override;
24 
25 private:
27  void beginJob() override;
29  void analyze(const edm::Event&, const edm::EventSetup&) override;
31  void endJob() override;
32 
34  bool booked(const std::string histName) const { return hists_.find(histName) != hists_.end(); };
36  void fill(const std::string histName, double value) const {
37  if (booked(histName))
38  hists_.find(histName)->second->Fill(value);
39  };
40 
41  // simple map to contain all histograms;
42  // histograms are booked in the beginJob()
43  // method
44  std::map<std::string, TH1F*> hists_;
45 
46  // input tags
51 };
52 
54  : hists_(),
55  elecsToken_(consumes<edm::View<pat::Electron> >(iConfig.getUntrackedParameter<edm::InputTag>("elecs"))),
56  muonsToken_(consumes<edm::View<pat::Muon> >(iConfig.getUntrackedParameter<edm::InputTag>("muons"))),
57  jetsToken_(consumes<edm::View<pat::Jet> >(iConfig.getUntrackedParameter<edm::InputTag>("jets"))),
58  metToken_(consumes<edm::View<pat::MET> >(iConfig.getUntrackedParameter<edm::InputTag>("met"))) {
59  usesResource(TFileService::kSharedResource);
60 }
61 
63 
65  // get electron collection
67  iEvent.getByToken(elecsToken_, elecs);
68 
69  // get muon collection
71  iEvent.getByToken(muonsToken_, muons);
72 
73  // get jet collection
75  iEvent.getByToken(jetsToken_, jets);
76 
77  // get met collection
79  iEvent.getByToken(metToken_, met);
80 
81  // fill yield
82  fill("yield", 0.5);
83 
84  // fill quantities for leading elec and elec multiplicity
85  fill("elecMult", elecs->size());
86  if (elecs->begin() != elecs->end()) {
87  fill("elecIso", (elecs->begin()->trackIso() + elecs->begin()->caloIso()) / elecs->begin()->pt());
88  fill("elecPt", elecs->begin()->pt());
89  }
90 
91  // fill quantities for leading muon and muon multiplicity
92  fill("muonMult", muons->size());
93  if (muons->begin() != muons->end()) {
94  fill("muonIso", (muons->begin()->trackIso() + muons->begin()->caloIso()) / muons->begin()->pt());
95  fill("muonPt", muons->begin()->pt());
96  }
97 
98  // fill quantities for leading jets and jet multiplicity
99  // jet pt is corrected up to L3Absolute
100  fill("jetMult", jets->size());
101  if (!jets->empty())
102  fill("jet0Pt", (*jets)[0].pt());
103  if (jets->size() > 1)
104  fill("jet1Pt", (*jets)[1].pt());
105  if (jets->size() > 2)
106  fill("jet2Pt", (*jets)[2].pt());
107  if (jets->size() > 3)
108  fill("jet3Pt", (*jets)[3].pt());
109 
110  // fill MET
111  fill("met", met->empty() ? 0 : (*met)[0].et());
112 }
113 
115  // register to the TFileService
117 
118  // book histograms:
119  hists_["yield"] = fs->make<TH1F>("yield", "electron multiplicity", 1, 0., 1.);
120  hists_["elecMult"] = fs->make<TH1F>("elecMult", "electron multiplicity", 10, 0., 10.);
121  hists_["elecIso"] = fs->make<TH1F>("elecIso", "electron isolation", 20, 0., 1.);
122  hists_["elecPt"] = fs->make<TH1F>("elecPt", "electron pt", 30, 0., 150.);
123  hists_["muonMult"] = fs->make<TH1F>("muonMult", "muon multiplicity", 10, 0., 10.);
124  hists_["muonIso"] = fs->make<TH1F>("muonIso", "muon isolation", 20, 0., 1.);
125  hists_["muonPt"] = fs->make<TH1F>("muonPt", "muon pt", 30, 0., 150.);
126  hists_["jetMult"] = fs->make<TH1F>("jetMult", "jet multiplicity", 15, 0., 15.);
127  hists_["jet0Pt"] = fs->make<TH1F>("jet0Pt", "1. leading jet pt", 50, 0., 250.);
128  hists_["jet1Pt"] = fs->make<TH1F>("jet1Pt", "1. leading jet pt", 50, 0., 250.);
129  hists_["jet2Pt"] = fs->make<TH1F>("jet2Pt", "1. leading jet pt", 50, 0., 200.);
130  hists_["jet3Pt"] = fs->make<TH1F>("jet3Pt", "1. leading jet pt", 50, 0., 200.);
131  hists_["met"] = fs->make<TH1F>("met", "missing E_{T}", 25, 0., 200.);
132 }
133 
135 
static const std::string kSharedResource
Definition: TFileService.h:76
void endJob() override
everything that needs to be done after the event loop
void analyze(const edm::Event &, const edm::EventSetup &) override
everything that needs to be done during the event loop
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
Definition: DiMuonV_cfg.py:214
PatTopSelectionAnalyzer(const edm::ParameterSet &)
default constructor
Definition: HeavyIon.h:7
void beginJob() override
everything that needs to be done before the event loop
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< edm::View< pat::MET > > metToken_
edm::EDGetTokenT< edm::View< pat::Jet > > jetsToken_
edm::EDGetTokenT< edm::View< pat::Electron > > elecsToken_
Definition: Muon.py:1
Definition: Jet.py:1
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Definition: value.py:1
edm::EDGetTokenT< edm::View< pat::Muon > > muonsToken_
bool booked(const std::string histName) const
check if histogram was booked
std::map< std::string, TH1F * > hists_
void fill(const std::string histName, double value) const
fill histogram if it had been booked before
HLT enums.
~PatTopSelectionAnalyzer() override
default destructor