1 |
|
#include <iostream> |
2 |
|
#include <fstream> |
3 |
|
#include <sstream> |
4 |
+ |
#include <cmath> |
5 |
+ |
#include <cstdlib> |
6 |
|
|
7 |
|
#include "Math/VectorUtil.h" |
8 |
|
|
21 |
|
p_deltaRmuons = aDir.make<TH1F>("p_deltaRmuons",";#Delta R(muons);N_{entries}",225,-1,8); |
22 |
|
p_deltaRtaus = aDir.make<TH1F>("p_deltaRtaus",";#Delta R(taus);N_{entries}",225,-1,8); |
23 |
|
//p_deltaRpftaus = aDir.make<TH1F>("p_deltaRpftaus",";#Delta R(pftaus);N_{entries}",225,-1,8); |
24 |
+ |
p_deltaRleadJet = aDir.make<TH1F>("p_deltaRleadJet",";#Delta R(leadJet);N_{entries}",225,-1,8); |
25 |
+ |
p_deltaRntoleadJet = aDir.make<TH1F>("p_deltaRntoleadJet",";#Delta R(ntoleadJet);N_{entries}",225,-1,8); |
26 |
|
|
27 |
|
|
28 |
< |
|
25 |
< |
p_partonFlavour = aDir.make<TH1F>("p_partonFlavour",";parton flavour;N_{entries}",30,0,30); |
28 |
> |
p_partonFlavour = aDir.make<TH1F>("p_partonFlavour",";parton flavour;N_{entries}",50,-25,25); |
29 |
|
p_hasJetCorrFactors = aDir.make<TH1F>("p_hasJetCorrFactors",";hasJetCorFactors;N_{entries}",2,0,2); |
30 |
|
|
31 |
|
std::vector<std::string> btagAlgos; |
35 |
|
btagAlgos.push_back("jetBProbabilityBJetTags"); |
36 |
|
btagAlgos.push_back("jetProbabilityBJetTags"); |
37 |
|
btagAlgos.push_back("simpleSecondaryVertexBJetTags"); |
38 |
< |
btagAlgos.push_back("softElectronBJetTags"); |
38 |
> |
btagAlgos.push_back("softElectronByPtBJetTags"); |
39 |
> |
btagAlgos.push_back("softElectronByIP3dBJetTags"); |
40 |
|
btagAlgos.push_back("softMuonBJetTags"); |
41 |
< |
btagAlgos.push_back("softMuonNoIPBJetTags"); |
41 |
> |
btagAlgos.push_back("softMuonByPtBJetTags"); |
42 |
> |
btagAlgos.push_back("softMuonByIP3dBJetTags"); |
43 |
|
btagAlgos.push_back("trackCountingHighEffBJetTags"); |
44 |
|
btagAlgos.push_back("trackCountingHighPurBJetTags"); |
45 |
|
|
46 |
|
const unsigned int nTags = btagAlgos.size(); |
47 |
< |
assert (nTags == 11); |
47 |
> |
assert (nTags == 13); |
48 |
|
//double min[11] = {0,0,-0.1,0,0,1,0,0,0,-5,-5}; |
49 |
|
//double max[11] = {1,1,1,6,2,5,1,1,1,20,20}; |
50 |
|
|
54 |
|
lTitle << "p_bDiscriminator_" << i << "_" << fs; |
55 |
|
std::ostringstream lAxis; |
56 |
|
lAxis << ";" << btagAlgos.at(i) << ";N_{entries}" ; |
57 |
< |
p_bDiscriminator[i][fs] = aDir.make<TH1F>(lTitle.str().c_str(),lAxis.str().c_str(),4480,-101,11);//100,min[i],max[i]); |
57 |
> |
p_bDiscriminator[i][fs] = aDir.make<TH1F>(lTitle.str().c_str(),lAxis.str().c_str(),5280,-101,31);//100,min[i],max[i]); |
58 |
|
} |
59 |
|
} |
60 |
|
|
148 |
|
} |
149 |
|
|
150 |
|
void HistosJetsBase::FillEventHistograms(const std::vector<HbbAnalysis::Jet> & abJetCol, |
151 |
< |
const std::vector<HbbAnalysis::Jet> & anonbJetCol) |
151 |
> |
const std::vector<HbbAnalysis::Jet> & anonbJetCol, |
152 |
> |
bool genMatched) |
153 |
|
{ |
154 |
|
|
155 |
|
p_nJets->Fill(abJetCol.size()+anonbJetCol.size()); |
156 |
< |
p_nbJets->Fill(abJetCol.size()); |
156 |
> |
|
157 |
> |
unsigned int nbjets = 0; |
158 |
> |
for (std::vector<HbbAnalysis::Jet>::const_iterator iJet = abJetCol.begin(); |
159 |
> |
iJet != abJetCol.end(); |
160 |
> |
iJet++) |
161 |
> |
{ |
162 |
> |
if (genMatched){ |
163 |
> |
if (abs((*iJet).commonVars().partonFlavour) == 5) { |
164 |
> |
nbjets++; |
165 |
> |
} |
166 |
> |
} |
167 |
> |
// else { |
168 |
> |
// const HbbAnalysis::BaseVars v1 = (*iJet).recoVars(); |
169 |
> |
// bool isBad = false; |
170 |
> |
// //loop from the beginning, mark lowest btag discri jet as bad |
171 |
> |
// for (std::vector<HbbAnalysis::Jet>::const_iterator iSec = abJetCol.begin(); |
172 |
> |
// iSec != abJetCol.end(); iSec++){//loop on second jet |
173 |
> |
// if (iSec != iJet) { |
174 |
> |
// const HbbAnalysis::BaseVars v2 = (*iSec).recoVars(); |
175 |
> |
// if (HbbAnalysis::DeltaR(v1,v2) < 0.7){ |
176 |
> |
// if ((*iJet).btagVars().tCHP < (*iSec).btagVars().tCHP) isBad = true; |
177 |
> |
// } |
178 |
> |
// } |
179 |
> |
// } |
180 |
> |
// if (!isBad) nbjets++; |
181 |
> |
// } |
182 |
> |
} |
183 |
> |
if (genMatched) p_nbJets->Fill(nbjets); |
184 |
> |
else p_nbJets->Fill(abJetCol.size()); |
185 |
> |
|
186 |
|
} |
187 |
|
|
188 |
|
|
198 |
|
//p_deltaRpftaus->Fill(deltaRpftau); |
199 |
|
} |
200 |
|
|
201 |
+ |
void HistosJetsBase::FillHistograms(const HbbAnalysis::Jet & aJet, |
202 |
+ |
const HbbAnalysis::Jet & aLeadJet, |
203 |
+ |
const HbbAnalysis::Jet & aNtoLeadJet |
204 |
+ |
){ |
205 |
+ |
const HbbAnalysis::BaseVars v1 = aJet.recoVars(); |
206 |
+ |
const HbbAnalysis::BaseVars vL = aLeadJet.recoVars(); |
207 |
+ |
const HbbAnalysis::BaseVars vNtoL = aNtoLeadJet.recoVars(); |
208 |
+ |
|
209 |
+ |
p_deltaRleadJet->Fill(HbbAnalysis::DeltaR(v1,vL)); |
210 |
+ |
p_deltaRntoleadJet->Fill(HbbAnalysis::DeltaR(v1,vNtoL)); |
211 |
+ |
} |
212 |
|
|
213 |
|
void HistosJetsBase::FillHistograms(const HbbAnalysis::Jet & aJet){//FillHistograms |
214 |
|
|
232 |
|
if (isMatched) p_bDiscriminator[3][lFlav]->Fill(aJet.btagVars().bProba); |
233 |
|
p_bDiscriminator[4][0]->Fill(aJet.btagVars().probability); |
234 |
|
if (isMatched) p_bDiscriminator[4][lFlav]->Fill(aJet.btagVars().probability); |
235 |
< |
p_bDiscriminator[5][0]->Fill(aJet.btagVars().sSV); |
236 |
< |
if (isMatched) p_bDiscriminator[5][lFlav]->Fill(aJet.btagVars().sSV); |
237 |
< |
p_bDiscriminator[6][0]->Fill(aJet.btagVars().softElectron); |
238 |
< |
if (isMatched) p_bDiscriminator[6][lFlav]->Fill(aJet.btagVars().softElectron); |
239 |
< |
p_bDiscriminator[7][0]->Fill(aJet.btagVars().softMuon); |
240 |
< |
if (isMatched) p_bDiscriminator[7][lFlav]->Fill(aJet.btagVars().softMuon); |
241 |
< |
p_bDiscriminator[8][0]->Fill(aJet.btagVars().softMuonNoIP); |
242 |
< |
if (isMatched) p_bDiscriminator[8][lFlav]->Fill(aJet.btagVars().softMuonNoIP); |
243 |
< |
p_bDiscriminator[9][0]->Fill(aJet.btagVars().tCHE); |
244 |
< |
if (isMatched) p_bDiscriminator[9][lFlav]->Fill(aJet.btagVars().tCHE); |
245 |
< |
p_bDiscriminator[10][0]->Fill(aJet.btagVars().tCHP); |
246 |
< |
if (isMatched) p_bDiscriminator[10][lFlav]->Fill(aJet.btagVars().tCHP); |
235 |
> |
p_bDiscriminator[5][0]->Fill(aJet.btagVars().sSVHE); |
236 |
> |
if (isMatched) p_bDiscriminator[5][lFlav]->Fill(aJet.btagVars().sSVHE); |
237 |
> |
p_bDiscriminator[6][0]->Fill(aJet.btagVars().sSVHP); |
238 |
> |
if (isMatched) p_bDiscriminator[6][lFlav]->Fill(aJet.btagVars().sSVHP); |
239 |
> |
p_bDiscriminator[7][0]->Fill(aJet.btagVars().softElectronByPt); |
240 |
> |
if (isMatched) p_bDiscriminator[7][lFlav]->Fill(aJet.btagVars().softElectronByPt); |
241 |
> |
p_bDiscriminator[8][0]->Fill(aJet.btagVars().softElectronByIP3d); |
242 |
> |
if (isMatched) p_bDiscriminator[8][lFlav]->Fill(aJet.btagVars().softElectronByIP3d); |
243 |
> |
p_bDiscriminator[9][0]->Fill(aJet.btagVars().softMuon); |
244 |
> |
if (isMatched) p_bDiscriminator[9][lFlav]->Fill(aJet.btagVars().softMuon); |
245 |
> |
p_bDiscriminator[10][0]->Fill(aJet.btagVars().softMuonByPt); |
246 |
> |
if (isMatched) p_bDiscriminator[10][lFlav]->Fill(aJet.btagVars().softMuonByPt); |
247 |
> |
p_bDiscriminator[11][0]->Fill(aJet.btagVars().softMuonByIP3d); |
248 |
> |
if (isMatched) p_bDiscriminator[11][lFlav]->Fill(aJet.btagVars().softMuonByIP3d); |
249 |
> |
p_bDiscriminator[12][0]->Fill(aJet.btagVars().tCHE); |
250 |
> |
if (isMatched) p_bDiscriminator[12][lFlav]->Fill(aJet.btagVars().tCHE); |
251 |
> |
p_bDiscriminator[13][0]->Fill(aJet.btagVars().tCHP); |
252 |
> |
if (isMatched) p_bDiscriminator[13][lFlav]->Fill(aJet.btagVars().tCHP); |
253 |
|
|
254 |
|
if (aJet.genJetVars().valid){ |
255 |
|
p_pTgenjet[0]->Fill(aJet.genJetVars().pT); |
306 |
|
p_n90->Fill(aJet.caloVars().n90); |
307 |
|
p_n60->Fill(aJet.caloVars().n60); |
308 |
|
} |
309 |
< |
|
309 |
> |
//JPT + PF |
310 |
> |
if (aJet.jetType() == 1 || aJet.jetType() == 2){ |
311 |
> |
p_chargedHadronEnergy->Fill(aJet.jptPfVars().chargedHadronEnergy); |
312 |
> |
p_chargedHadronEnergyFraction->Fill(aJet.jptPfVars().chargedHadronEnergyFraction); |
313 |
> |
p_neutralHadronEnergy->Fill(aJet.jptPfVars().neutralHadronEnergy); |
314 |
> |
p_neutralHadronEnergyFraction->Fill(aJet.jptPfVars().neutralHadronEnergyFraction); |
315 |
> |
p_chargedEmEnergy->Fill(aJet.jptPfVars().chargedEmEnergy); |
316 |
> |
p_chargedEmEnergyFraction->Fill(aJet.jptPfVars().chargedEmEnergyFraction); |
317 |
> |
p_neutralEmEnergy->Fill(aJet.jptPfVars().neutralEmEnergy); |
318 |
> |
p_neutralEmEnergyFraction->Fill(aJet.jptPfVars().neutralEmEnergyFraction); |
319 |
> |
p_chargedMultiplicity->Fill(aJet.jptPfVars().chargedMultiplicity); |
320 |
> |
p_muonMultiplicity->Fill(aJet.jptPfVars().muonMultiplicity); |
321 |
> |
} |
322 |
> |
|
323 |
|
// //================== PF Jet specific information ==================== |
324 |
|
if (aJet.jetType() == 1){ |
260 |
– |
p_chargedHadronEnergy->Fill(aJet.pfVars().chargedHadronEnergy); |
261 |
– |
p_chargedHadronEnergyFraction->Fill(aJet.pfVars().chargedHadronEnergyFraction); |
262 |
– |
p_neutralHadronEnergy->Fill(aJet.pfVars().neutralHadronEnergy); |
263 |
– |
p_neutralHadronEnergyFraction->Fill(aJet.pfVars().neutralHadronEnergyFraction); |
264 |
– |
p_chargedEmEnergy->Fill(aJet.pfVars().chargedEmEnergy); |
265 |
– |
p_chargedEmEnergyFraction->Fill(aJet.pfVars().chargedEmEnergyFraction); |
325 |
|
p_chargedMuEnergy->Fill(aJet.pfVars().chargedMuEnergy); |
326 |
|
p_chargedMuEnergyFraction->Fill(aJet.pfVars().chargedMuEnergyFraction); |
268 |
– |
p_neutralEmEnergy->Fill(aJet.pfVars().neutralEmEnergy); |
269 |
– |
p_neutralEmEnergyFraction->Fill(aJet.pfVars().neutralEmEnergyFraction); |
270 |
– |
p_chargedMultiplicity->Fill(aJet.pfVars().chargedMultiplicity); |
327 |
|
p_neutralMultiplicity->Fill(aJet.pfVars().neutralMultiplicity); |
272 |
– |
p_muonMultiplicity->Fill(aJet.pfVars().muonMultiplicity); |
328 |
|
} |
329 |
|
|
330 |
|
|