25 dRmatch =
cfg.getParameter<
double>(
"dRmatch");
26 PtMin =
cfg.getParameter<
double>(
"PtMin");
27 Njets =
cfg.getParameter<
int>(
"Njets");
28 MCarlo =
cfg.getParameter<
bool>(
"MCarlo");
29 genAlgo =
cfg.getParameter<
string>(
"genAlgo");
30 calAlgo =
cfg.getParameter<
string>(
"calAlgo");
31 jetTracksAssociator =
cfg.getParameter<
string>(
"jetTracksAssociator");
38 m_HistNames1D[
"CaloJetMulti"] =
new TH1F(
"CaloJetMulti",
"Multiplicity of CaloJets", 100, 0, 100);
39 m_HistNames1D[
"ptCalo"] =
new TH1F(
"ptCalo",
"p_{T} of CaloJets", 7000, 0, 7000);
40 m_HistNames1D[
"etaCalo"] =
new TH1F(
"etaCalo",
"#eta of CaloJets", 100, -5.0, 5.0);
41 m_HistNames1D[
"phiCalo"] =
new TH1F(
"phiCalo",
"#phi of CaloJets", 72, -
M_PI,
M_PI);
42 m_HistNames1D[
"m2jCalo"] =
new TH1F(
"m2jCalo",
"Dijet Mass of leading CaloJets", 7000, 0, 14000);
43 m_HistNames1D[
"nTracks"] =
new TH1F(
"nTracks",
"Number of tracks associated with a jet", 100, 0, 100);
44 m_HistNames1D[
"chargeFraction"] =
new TH1F(
"chargeFraction",
"Fraction of charged tracks pt", 500, 0, 5);
45 m_HistNames1D[
"emEnergyFraction"] =
new TH1F(
"emEnergyFraction",
"Jets EM Fraction", 110, 0, 1.1);
46 m_HistNames1D[
"emEnergyInEB"] =
new TH1F(
"emEnergyInEB",
"Jets emEnergyInEB", 7000, 0, 14000);
47 m_HistNames1D[
"emEnergyInEE"] =
new TH1F(
"emEnergyInEE",
"Jets emEnergyInEE", 7000, 0, 14000);
48 m_HistNames1D[
"emEnergyInHF"] =
new TH1F(
"emEnergyInHF",
"Jets emEnergyInHF", 7000, 0, 14000);
49 m_HistNames1D[
"hadEnergyInHB"] =
new TH1F(
"hadEnergyInHB",
"Jets hadEnergyInHB", 7000, 0, 14000);
50 m_HistNames1D[
"hadEnergyInHE"] =
new TH1F(
"hadEnergyInHE",
"Jets hadEnergyInHE", 7000, 0, 14000);
51 m_HistNames1D[
"hadEnergyInHF"] =
new TH1F(
"hadEnergyInHF",
"Jets hadEnergyInHF", 7000, 0, 14000);
52 m_HistNames1D[
"hadEnergyInHO"] =
new TH1F(
"hadEnergyInHO",
"Jets hadEnergyInHO", 7000, 0, 14000);
53 m_HistNamesProfile[
"EBfractionVsEta"] =
new TProfile(
"EBfractionVsEta",
"Jets EBfraction vs #eta", 100, -5.0, 5.0);
54 m_HistNamesProfile[
"EEfractionVsEta"] =
new TProfile(
"EEfractionVsEta",
"Jets EEfraction vs #eta", 100, -5.0, 5.0);
55 m_HistNamesProfile[
"HBfractionVsEta"] =
new TProfile(
"HBfractionVsEta",
"Jets HBfraction vs #eta", 100, -5.0, 5.0);
56 m_HistNamesProfile[
"HOfractionVsEta"] =
new TProfile(
"HOfractionVsEta",
"Jets HOfraction vs #eta", 100, -5.0, 5.0);
57 m_HistNamesProfile[
"HEfractionVsEta"] =
new TProfile(
"HEfractionVsEta",
"Jets HEfraction vs #eta", 100, -5.0, 5.0);
58 m_HistNamesProfile[
"HFfractionVsEta"] =
new TProfile(
"HFfractionVsEta",
"Jets HFfraction vs #eta", 100, -5.0, 5.0);
59 m_HistNamesProfile[
"CaloEnergyVsEta"] =
new TProfile(
"CaloEnergyVsEta",
"CaloJets Energy Vs. Eta", 100, -5.0, 5.0);
60 m_HistNamesProfile[
"emEnergyVsEta"] =
new TProfile(
"emEnergyVsEta",
"Jets EM Energy Vs. Eta", 100, -5.0, 5.0);
61 m_HistNamesProfile[
"hadEnergyVsEta"] =
new TProfile(
"hadEnergyVsEta",
"Jets HAD Energy Vs. Eta", 100, -5.0, 5.0);
63 m_HistNames1D[
"GenJetMulti"] =
new TH1F(
"GenJetMulti",
"Multiplicity of GenJets", 100, 0, 100);
64 m_HistNames1D[
"ptHat"] =
new TH1F(
"ptHat",
"p_{T}hat", 7000, 0, 7000);
65 m_HistNames1D[
"ptGen"] =
new TH1F(
"ptGen",
"p_{T} of GenJets", 7000, 0, 7000);
66 m_HistNames1D[
"etaGen"] =
new TH1F(
"etaGen",
"#eta of GenJets", 100, -5.0, 5.0);
67 m_HistNames1D[
"phiGen"] =
new TH1F(
"phiGen",
"#phi of GenJets", 72, -
M_PI,
M_PI);
68 m_HistNames1D[
"m2jGen"] =
new TH1F(
"m2jGen",
"Dijet Mass of leading GenJets", 7000, 0, 14000);
69 m_HistNames1D[
"dR"] =
new TH1F(
"dR",
"GenJets dR with matched CaloJet", 200, 0, 1);
70 m_HistNamesProfile[
"GenEnergyVsEta"] =
new TProfile(
"GenEnergyVsEta",
"GenJets Energy Vs. Eta", 100, -5.0, 5.0);
71 m_HistNamesProfile[
"respVsPtBarrel"] =
72 new TProfile(
"respVsPtBarrel",
"CaloJet Response of GenJets in Barrel", 7000, 0, 7000);
73 m_HistNamesProfile[
"CaloErespVsEta"] =
74 new TProfile(
"CaloErespVsEta",
"Jets Energy Response Vs. Eta", 100, -5.0, 5.0);
75 m_HistNamesProfile[
"emErespVsEta"] =
76 new TProfile(
"emErespVsEta",
"Jets EM Energy Response Vs. Eta", 100, -5.0, 5.0);
77 m_HistNamesProfile[
"hadErespVsEta"] =
78 new TProfile(
"hadErespVsEta",
"Jets HAD Energy Response Vs. Eta", 100, -5.0, 5.0);
84 int jetInd, jetCounter,
nTracks;
85 double dRmin,
dR,
e,
eta, emEB, emEE, emHF, hadHB, hadHE, hadHO, hadHF,
pt, phi, pthat, chf;
90 CaloJetCollection::const_iterator i_caljet;
91 GenJetCollection::const_iterator i_genjet;
97 cout <<
"WARNING: NO calo jets in event " << evt.
id().
event() <<
", Run " << evt.
id().
run() <<
" !!!!" << endl;
98 for (i_caljet = caljets->begin(); i_caljet != caljets->end() && jetInd <
Njets; ++i_caljet) {
99 e = i_caljet->energy();
101 phi = i_caljet->phi();
102 eta = i_caljet->eta();
103 emEB = i_caljet->emEnergyInEB();
104 emEE = i_caljet->emEnergyInEE();
105 emHF = i_caljet->emEnergyInHF();
106 hadHB = i_caljet->hadEnergyInHB();
107 hadHE = i_caljet->hadEnergyInHE();
108 hadHO = i_caljet->hadEnergyInHO();
109 hadHF = i_caljet->hadEnergyInHF();
113 p4jet[jetInd] = i_caljet->p4();
115 FillHist1D(
"ptCalo",
pt);
116 FillHist1D(
"etaCalo",
eta);
117 FillHist1D(
"phiCalo", phi);
118 FillHist1D(
"emEnergyFraction", i_caljet->emEnergyFraction());
119 FillHist1D(
"nTracks",
nTracks);
120 FillHist1D(
"chargeFraction", chf);
121 FillHist1D(
"emEnergyInEB", emEB);
122 FillHist1D(
"emEnergyInEE", emEE);
123 FillHist1D(
"emEnergyInHF", emHF);
124 FillHist1D(
"hadEnergyInHB", hadHB);
125 FillHist1D(
"hadEnergyInHE", hadHE);
126 FillHist1D(
"hadEnergyInHF", hadHF);
127 FillHist1D(
"hadEnergyInHO", hadHO);
128 FillHistProfile(
"EBfractionVsEta",
eta, emEB /
e);
129 FillHistProfile(
"EEfractionVsEta",
eta, emEE /
e);
130 FillHistProfile(
"HBfractionVsEta",
eta, hadHB /
e);
131 FillHistProfile(
"HOfractionVsEta",
eta, hadHO /
e);
132 FillHistProfile(
"HEfractionVsEta",
eta, hadHE /
e);
133 FillHistProfile(
"HFfractionVsEta",
eta, (hadHF + emHF) /
e);
134 FillHistProfile(
"CaloEnergyVsEta",
eta,
e);
135 FillHistProfile(
"emEnergyVsEta",
eta, emEB + emEE + emHF);
136 FillHistProfile(
"hadEnergyVsEta",
eta, hadHB + hadHO + hadHE + hadHF);
141 FillHist1D(
"CaloJetMulti", jetCounter);
143 FillHist1D(
"m2jCalo", (p4jet[0] + p4jet[1]).
mass());
146 evt.
getByLabel(
"genEventScale", genEventScale);
147 pthat = *genEventScale;
148 FillHist1D(
"ptHat", pthat);
151 if (genjets->empty())
152 cout <<
"WARNING: NO gen jets in event " << evt.
id().
event() <<
", Run " << evt.
id().
run() <<
" !!!!" << endl;
153 for (i_genjet = genjets->begin(); i_genjet != genjets->end() && jetInd <
Njets; ++i_genjet) {
155 p4jet[jetInd] = i_genjet->p4();
156 FillHist1D(
"ptGen", i_genjet->pt());
157 FillHist1D(
"etaGen", i_genjet->eta());
158 FillHist1D(
"phiGen", i_genjet->phi());
159 FillHistProfile(
"GenEnergyVsEta", i_genjet->eta(), i_genjet->energy());
161 for (i_caljet = caljets->begin(); i_caljet != caljets->end(); ++i_caljet) {
162 dR =
deltaR(i_caljet->eta(), i_caljet->phi(), i_genjet->eta(), i_genjet->phi());
165 MatchedJet = *i_caljet;
168 FillHist1D(
"dR",
dRmin);
170 pt = MatchedJet.
pt();
179 if (dRmin < dRmatch && pt >
PtMin) {
180 FillHistProfile(
"CaloErespVsEta",
eta,
e / i_genjet->energy());
181 FillHistProfile(
"emErespVsEta",
eta, (emEB + emEE + emHF) / i_genjet->energy());
182 FillHistProfile(
"hadErespVsEta",
eta, (hadHB + hadHO + hadHE + hadHF) / i_genjet->energy());
183 if (fabs(i_genjet->eta()) < 1.)
184 FillHistProfile(
"respVsPtBarrel", i_genjet->pt(),
pt / i_genjet->pt());
188 FillHist1D(
"GenJetMulti", jetInd);
190 FillHist1D(
"m2jGen", (p4jet[0] + p4jet[1]).
mass());
196 if (m_file !=
nullptr) {
198 for (std::map<TString, TH1*>::iterator hid = m_HistNames1D.begin(); hid != m_HistNames1D.end(); hid++)
199 hid->second->Write();
200 for (std::map<TString, TH2*>::iterator hid = m_HistNames2D.begin(); hid != m_HistNames2D.end(); hid++)
201 hid->second->Write();
202 for (std::map<TString, TProfile*>::iterator hid = m_HistNamesProfile.begin(); hid != m_HistNamesProfile.end();
204 hid->second->Write();
211 std::map<TString, TH1*>::iterator hid = m_HistNames1D.find(histName);
212 if (hid == m_HistNames1D.end())
213 std::cout <<
"%fillHist -- Could not find histogram with name: " << histName << std::endl;
215 hid->second->Fill(
value);
219 std::map<TString, TH2*>::iterator hid = m_HistNames2D.find(histName);
220 if (hid == m_HistNames2D.end())
221 std::cout <<
"%fillHist -- Could not find histogram with name: " << histName << std::endl;
223 hid->second->Fill(valuex, valuey);
227 std::map<TString, TProfile*>::iterator hid = m_HistNamesProfile.find(histName);
228 if (hid == m_HistNamesProfile.end())
229 std::cout <<
"%fillHist -- Could not find histogram with name: " << histName << std::endl;
231 hid->second->Fill(valuex, valuey);
Jets made from CaloTowers.
float emEnergyInHF() const
double pt() const final
transverse momentum
float emEnergyInEE() const
void FillHist1D(const TString &histName, const Double_t &x)
void FillHistProfile(const TString &histName, const Double_t &x, const Double_t &y)
float emEnergyInEB() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
void analyze(edm::Event const &e, edm::EventSetup const &iSetup) override
float hadEnergyInHO() const
#define DEFINE_FWK_MODULE(type)
float hadEnergyInHF() const
float hadEnergyInHE() const
JetValidation(edm::ParameterSet const &cfg)
float hadEnergyInHB() const
LorentzVector tracksP4(const Container &, const reco::JetBaseRef)
Get LorentzVector as sum of all tracks associated with jet.
int tracksNumber(const Container &, const reco::JetBaseRef)
Get number of tracks associated with jet.
void FillHist2D(const TString &histName, const Double_t &x, const Double_t &y)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
EventNumber_t event() const
double energy() const final
energy
double eta() const final
momentum pseudorapidity