PhysicsTools
PatExamples
bin
PatMcMatchFWLiteAnalyzer.cc
Go to the documentation of this file.
1
#include <memory>
2
#include <string>
3
#include <vector>
4
#include <sstream>
5
#include <fstream>
6
#include <iostream>
7
8
#include <TH2F.h>
// Use the correct histograms
9
#include <TROOT.h>
10
#include <TFile.h>
11
#include <TSystem.h>
12
13
#include "
DataFormats/FWLite/interface/Handle.h
"
14
#include "
DataFormats/PatCandidates/interface/Muon.h
"
// Include the examined data formats
15
#include "
DataFormats/PatCandidates/interface/Jet.h
"
// Include the examined data formats
16
#include "
FWCore/FWLite/interface/FWLiteEnabler.h
"
17
18
19
int
main
(
int
argc
,
char
*
argv
[])
20
{
21
// ----------------------------------------------------------------------
22
// First Part:
23
//
24
// * enable FWLite
25
// * book the histograms of interest
26
// * open the input file
27
// ----------------------------------------------------------------------
28
29
// load framework libraries
30
gSystem->Load(
"libFWCoreFWLite"
);
31
FWLiteEnabler::enable
();
32
33
// book a set of histograms
34
TH2F* muonPt_ =
new
TH2F(
"muonPt"
,
"Muon Pt"
, 60, 0., 300., 60, 0., 300. );
// 2-D histo for muon Pt
35
muonPt_->SetXTitle(
"gen."
);
36
muonPt_->SetYTitle(
"reco."
);
37
TH2F* jetPt_ =
new
TH2F(
"jetPt"
,
"Jet Pt"
, 100, 0., 500., 100, 0., 500. );
// 2-D histo for jet Pt
38
jetPt_->SetXTitle(
"gen."
);
39
jetPt_->SetYTitle(
"reco."
);
40
41
// open input file (can be located on castor)
42
TFile*
inFile
= TFile::Open(
"file:edmPatMcMatch.root"
);
// Adapt the input file name
43
44
// ----------------------------------------------------------------------
45
// Second Part:
46
//
47
// * loop the events in the input file
48
// * receive the collections of interest via fwlite::Handle
49
// * fill the histograms
50
// * after the loop close the input file
51
// ----------------------------------------------------------------------
52
53
// loop the events
54
unsigned
int
iEvent
=0;
55
fwlite::Event
event
(
inFile
);
56
for
(
event
.toBegin(); !
event
.atEnd(); ++
event
, ++
iEvent
){
57
// break loop after end of file is reached
58
// or after 1000 events have been processed
59
if
(
iEvent
==1000 )
break
;
60
61
// simple event counter
62
if
(
iEvent
>0 &&
iEvent
%25==0){
// Reduce print-out
63
std::cout
<<
" processing event: "
<<
iEvent
<< std::endl;
64
}
65
66
// fwlite::Handle to the muon collection
67
fwlite::Handle<std::vector<pat::Muon>
>
muons
;
// Access the muon collection
68
muons
.getByLabel(
event
,
"cleanLayer1Muons"
);
69
// fwlite::Handle to the muon collection
70
fwlite::Handle<std::vector<pat::Jet>
>
jets
;
// Access the jet collection
71
jets
.getByLabel(
event
,
"cleanLayer1Jets"
);
72
73
// loop muon collection and fill histograms
74
for
(
unsigned
i
=0;
i
<
muons
->size(); ++
i
){
75
const
reco::GenParticle
* genMuon = (*muons)[
i
].genParticle();
// Get the matched generator muon
76
if
( genMuon ) {
// Check for valid reference
77
muonPt_->Fill( genMuon->
pt
(), (*muons)[
i
].pt() );
// Fill 2-D histo
78
}
79
}
80
// loop jet collection and fill histograms
81
for
(
unsigned
i
=0;
i
<
jets
->size(); ++
i
){
82
const
reco::GenJet
* genJet = (*jets)[
i
].genJet();
// Get the matched generator jet
83
if
( genJet ) {
// Check for valid reference
84
jetPt_->Fill( genJet->
pt
(), (*jets)[
i
].pt() );
// Fill 2-D histo
85
}
86
}
87
}
88
// close input file
89
inFile
->Close();
90
91
// ----------------------------------------------------------------------
92
// Third Part:
93
//
94
// * open the output file
95
// * write the histograms to the output file
96
// * close the output file
97
// ----------------------------------------------------------------------
98
99
//open output file
100
TFile
outFile
(
"rootPatMcMatch.root"
,
"recreate"
);
// Adapt the output file name
101
outFile
.mkdir(
"analyzeMcMatchPat"
);
// Adapt output file according to modifications
102
outFile
.cd(
"analyzeMcMatchPat"
);
103
muonPt_->Write( );
104
jetPt_->Write( );
105
outFile
.Close();
106
107
// ----------------------------------------------------------------------
108
// Fourth Part:
109
//
110
// * never forgett to free the memory of the histograms
111
// ----------------------------------------------------------------------
112
113
// free allocated space
114
delete
muonPt_;
// Delete the muon histo
115
delete
jetPt_;
// Delete the jet histo
116
117
// that's it!
118
return
0;
119
}
main
int main(int argc, char *argv[])
Definition:
PatMcMatchFWLiteAnalyzer.cc:19
mps_fire.i
i
Definition:
mps_fire.py:429
reco::LeafCandidate::pt
double pt() const final
transverse momentum
Definition:
LeafCandidate.h:146
L1TdeCSCTF_cfi.outFile
outFile
Definition:
L1TdeCSCTF_cfi.py:5
PDWG_EXODelayedJetMET_cff.jets
jets
Definition:
PDWG_EXODelayedJetMET_cff.py:14
GCPpyPlots.argv
argv
Definition:
GCPpyPlots.py:3
iEvent
int iEvent
Definition:
GenABIO.cc:224
FWLiteEnabler::enable
static void enable()
enable automatic library loading
Definition:
FWLiteEnabler.cc:46
reco::GenJet
Jets made from MC generator particles.
Definition:
GenJet.h:23
edmPickEvents.event
event
Definition:
edmPickEvents.py:280
fwlite::Handle
Definition:
Handle.h:39
Handle.h
testHGCalDigi_cfg.inFile
inFile
Definition:
testHGCalDigi_cfg.py:54
FWLiteEnabler.h
dir2webdir.argc
argc
Definition:
dir2webdir.py:39
Muon.h
reco::GenParticle
Definition:
GenParticle.h:21
fwlite::Event
Definition:
Event.h:90
Jet.h
PDWG_BPHSkim_cff.muons
muons
Definition:
PDWG_BPHSkim_cff.py:47
gather_cfg.cout
cout
Definition:
gather_cfg.py:144
event
Definition:
event.py:1
Generated for CMSSW Reference Manual by
1.8.14