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 
19 
20 public:
25 
26 private:
28  virtual void beginJob() override ;
30  virtual void analyze(const edm::Event&, const edm::EventSetup&) override;
32  virtual void endJob() override ;
33 
35  bool booked(const std::string histName) const { return hists_.find(histName.c_str())!=hists_.end(); };
37  void fill(const std::string histName, double value) const { if(booked(histName.c_str())) hists_.find(histName.c_str())->second->Fill(value); };
38 
39  // simple map to contain all histograms;
40  // histograms are booked in the beginJob()
41  // method
42  std::map<std::string, TH1F*> hists_;
43 
44  // input tags
49 };
50 
52  hists_(),
53  elecsToken_(consumes<edm::View<pat::Electron> >(iConfig.getUntrackedParameter<edm::InputTag>("elecs"))),
54  muonsToken_(consumes<edm::View<pat::Muon> >(iConfig.getUntrackedParameter<edm::InputTag>("muons"))),
55  jetsToken_ (consumes<edm::View<pat::Jet> >(iConfig.getUntrackedParameter<edm::InputTag>("jets" ))),
56  metToken_ (consumes<edm::View<pat::MET> >(iConfig.getUntrackedParameter<edm::InputTag>("met" )))
57 {
58 }
59 
61 {
62 }
63 
64 void
66 {
67  // get electron collection
69  iEvent.getByToken(elecsToken_,elecs);
70 
71  // get muon collection
73  iEvent.getByToken(muonsToken_,muons);
74 
75  // get jet collection
77  iEvent.getByToken(jetsToken_,jets);
78 
79  // get met collection
81  iEvent.getByToken(metToken_,met);
82 
83  // fill yield
84  fill("yield", 0.5);
85 
86  // fill quantities for leading elec and elec multiplicity
87  fill("elecMult", elecs->size());
88  if(elecs->begin()!=elecs->end()){
89  fill("elecIso", (elecs->begin()->trackIso()+elecs->begin()->caloIso())/elecs->begin()->pt());
90  fill("elecPt", elecs->begin()->pt());
91  }
92 
93  // fill quantities for leading muon and muon multiplicity
94  fill("muonMult", muons->size());
95  if(muons->begin()!=muons->end()){
96  fill("muonIso", (muons->begin()->trackIso()+muons->begin()->caloIso())/muons->begin()->pt());
97  fill("muonPt", muons->begin()->pt());
98  }
99 
100  // fill quantities for leading jets and jet multiplicity
101  // jet pt is corrected up to L3Absolute
102  fill("jetMult", jets->size());
103  if( jets->size()>0 ) fill("jet0Pt", (*jets)[0].pt());
104  if( jets->size()>1 ) fill("jet1Pt", (*jets)[1].pt());
105  if( jets->size()>2 ) fill("jet2Pt", (*jets)[2].pt());
106  if( jets->size()>3 ) fill("jet3Pt", (*jets)[3].pt());
107 
108  // fill MET
109  fill("met", met->empty()?0:(*met)[0].et());
110 }
111 
112 void
114 {
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 
134 void
136 {
137 }
138 
virtual void endJob() override
everything that needs to be done after the event loop
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:460
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
everything that needs to be done during the event loop
PatTopSelectionAnalyzer(const edm::ParameterSet &)
default constructor
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: HeavyIon.h:7
U second(std::pair< T, U > const &p)
virtual void beginJob() override
everything that needs to be done before the event loop
int iEvent
Definition: GenABIO.cc:230
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
vector< PseudoJet > jets
void fill(const std::string histName, double value) const
fill histogram if it had been booked before
Definition: value.py:1
edm::EDGetTokenT< edm::View< pat::Muon > > muonsToken_
std::map< std::string, TH1F * > hists_
met
===> hadronic RAZOR
bool booked(const std::string histName) const
check if histogram was booked
HLT enums.
~PatTopSelectionAnalyzer()
default destructor