1 |
#include <iostream>
|
2 |
#include <fstream>
|
3 |
|
4 |
#include "UserCode/HbbAnalysis/interface/HistosJets.hh"
|
5 |
|
6 |
namespace HbbAnalysis {//namespace
|
7 |
|
8 |
void HistosJets::Initialise(TFileDirectory & aDir, std::string aName){
|
9 |
|
10 |
CreateHistos(aName,aDir);
|
11 |
|
12 |
p_nJets = aDir.make<TH1F>("p_nJets",";N_{jets};N_{entries}",50,0,50);
|
13 |
|
14 |
p_partonFlavour = aDir.make<TH1F>("p_partonFlavour",";parton flavour;N_{entries}",22,0,22);
|
15 |
p_hasJetCorrFactors = aDir.make<TH1F>("p_hasJetCorrFactors",";hasJetCorFactors;N_{entries}",2,0,2);
|
16 |
|
17 |
std::vector<std::string> btagAlgos;
|
18 |
btagAlgos.push_back("combinedSecondaryVertexBJetTags");
|
19 |
btagAlgos.push_back("combinedSecondaryVertexMVABJetTags");
|
20 |
btagAlgos.push_back("impactParameterMVABJetTags");
|
21 |
btagAlgos.push_back("jetBProbabilityBJetTags");
|
22 |
btagAlgos.push_back("jetProbabilityBJetTags");
|
23 |
btagAlgos.push_back("simpleSecondaryVertexBJetTags");
|
24 |
btagAlgos.push_back("softElectronBJetTags");
|
25 |
btagAlgos.push_back("softMuonBJetTags");
|
26 |
btagAlgos.push_back("softMuonNoIPBJetTags");
|
27 |
btagAlgos.push_back("trackCountingHighEffBJetTags");
|
28 |
btagAlgos.push_back("trackCountingHighPurBJetTags");
|
29 |
|
30 |
const unsigned int nTags = btagAlgos.size();
|
31 |
assert (nTags == 11);
|
32 |
double min[11] = {0,0,-0.1,0,0,1,0,0,0,-5,-5};
|
33 |
double max[11] = {1,1,1,6,2,4,1,1,1,20,20};
|
34 |
|
35 |
for (unsigned int i(0); i<nTags; i++){
|
36 |
std::ostringstream lTitle;
|
37 |
lTitle << "p_bDiscriminator_" << i ;
|
38 |
std::ostringstream lAxis;
|
39 |
lAxis << btagAlgos.at(i) << ";N_{entries}" ;
|
40 |
p_bDiscriminator[i] = aDir.make<TH1F>(lTitle.str().c_str(),lAxis.str().c_str(),100,min[i],max[i]);
|
41 |
}
|
42 |
|
43 |
p_charge = aDir.make<TH1F>("p_charge",";charge;N_{entries}",6,-1,1);
|
44 |
p_nAssociatedTracks = aDir.make<TH1F>("p_nAssociatedTracks",";N_{tracks};N_{entries}",50,0,50);
|
45 |
p_isCaloJet = aDir.make<TH1F>("p_isCaloJet",";isCaloJet;N_{entries}",2,0,2);
|
46 |
p_isPFJet = aDir.make<TH1F>("p_isPFJet",";isPFJet;N_{entries}",2,0,2);
|
47 |
p_isBasicJet = aDir.make<TH1F>("p_isBasicJet",";isBasicJet;N_{entries}",2,0,2);
|
48 |
|
49 |
//================== Calo Jet specific information ====================
|
50 |
p_maxEInEmTowers = aDir.make<TH1F>("p_maxEInEmTowers",";maxEInEmTowers;N_{entries}",200,0,200);
|
51 |
p_maxEInHadTowers = aDir.make<TH1F>("p_maxEInHadTowers",";maxEInHadTowers;N_{entries}",200,0,200);
|
52 |
p_energyFractionHadronic = aDir.make<TH1F>("p_energyFractionHadronic",";energyFractionHadronic;N_{entries}",100,0,2);
|
53 |
p_emEnergyFraction = aDir.make<TH1F>("p_emEnergyFraction",";emEnergyFraction;N_{entries}",100,0,2);
|
54 |
p_hadEnergyInHB = aDir.make<TH1F>("p_hadEnergyInHB",";hadEnergyInHB;N_{entries}",200,0,200);
|
55 |
p_hadEnergyInHO = aDir.make<TH1F>("p_hadEnergyInHO",";hadEnergyInHO;N_{entries}",200,0,200);
|
56 |
p_hadEnergyInHE = aDir.make<TH1F>("p_hadEnergyInHE",";hadEnergyInHE;N_{entries}",200,0,200);
|
57 |
p_hadEnergyInHF = aDir.make<TH1F>("p_hadEnergyInHF",";hadEnergyInHF;N_{entries}",200,0,200);
|
58 |
p_emEnergyInEB = aDir.make<TH1F>("p_emEnergyInEB",";emEnergyInEB;N_{entries}",200,0,200);
|
59 |
p_emEnergyInEE = aDir.make<TH1F>("p_emEnergyInEE",";emEnergyInEE;N_{entries}",200,0,200);
|
60 |
p_emEnergyInHF = aDir.make<TH1F>("p_emEnergyInHF",";emEnergyInHF;N_{entries}",200,0,200);
|
61 |
p_towersArea = aDir.make<TH1F>("p_towersArea",";towersArea;N_{entries}",100,0,1);
|
62 |
p_n90 = aDir.make<TH1F>("p_n90",";n90;N_{entries}",20,0,20);
|
63 |
p_n60 = aDir.make<TH1F>("p_n60",";n60;N_{entries}",20,0,20);
|
64 |
|
65 |
//================== PF Jet specific information ====================
|
66 |
p_chargedHadronEnergy = aDir.make<TH1F>("p_chargedHadronEnergy",";chargedHadronEnergy;N_{entries}",200,0,200);
|
67 |
p_chargedHadronEnergyFraction = aDir.make<TH1F>("p_chargedHadronEnergyFraction",";chargedHadronEnergyFraction;N_{entries}",100,0,2);
|
68 |
p_neutralHadronEnergy = aDir.make<TH1F>("p_neutralHadronEnergy",";neutralHadronEnergy;N_{entries}",200,0,200);
|
69 |
p_neutralHadronEnergyFraction = aDir.make<TH1F>("p_neutralHadronEnergyFraction",";neutralHadronEnergyFraction;N_{entries}",100,0,2);
|
70 |
p_chargedEmEnergy = aDir.make<TH1F>("p_chargedEmEnergy",";chargedEmEnergy;N_{entries}",200,0,200);
|
71 |
p_chargedEmEnergyFraction = aDir.make<TH1F>("p_chargedEmEnergyFraction",";chargedEmEnergyFraction;N_{entries}",100,0,2);
|
72 |
p_chargedMuEnergy = aDir.make<TH1F>("p_chargedMuEnergy",";chargedMuEnergy;N_{entries}",200,0,200);
|
73 |
p_chargedMuEnergyFraction = aDir.make<TH1F>("p_chargedMuEnergyFraction",";chargedMuEnergyFraction;N_{entries}",100,0,2);
|
74 |
p_neutralEmEnergy = aDir.make<TH1F>("p_neutralEmEnergy",";neutralEmEnergy;N_{entries}",200,0,200);
|
75 |
p_neutralEmEnergyFraction = aDir.make<TH1F>("p_neutralEmEnergyFraction",";neutralEmEnergyFraction;N_{entries}",100,0,2);
|
76 |
p_chargedMultiplicity = aDir.make<TH1F>("p_chargedMultiplicity",";chargedMultiplicity;N_{entries}",20,0,20);
|
77 |
p_neutralMultiplicity = aDir.make<TH1F>("p_neutralMultiplicity",";neutralMultiplicity;N_{entries}",20,0,20);
|
78 |
p_muonMultiplicity = aDir.make<TH1F>("p_muonMultiplicity",";muonMultiplicity;N_{entries}",20,0,20);
|
79 |
|
80 |
}
|
81 |
|
82 |
void HistosJets::FillEventHistograms(edm::Handle<std::vector<pat::Jet> > aJetCol){
|
83 |
|
84 |
//if (doGenMatched_) {
|
85 |
//unsigned int nMuMatched = 0;
|
86 |
//for (std::vector<pat::Muon>::const_iterator iMuon = aMuCol->begin();
|
87 |
// iMuon != aMuCol->end();
|
88 |
// iMuon++)
|
89 |
// {
|
90 |
// if (MatchesGenMuon(*iMuon)) nMuMatched++;
|
91 |
//}
|
92 |
//p_nMuons->Fill(nMuMatched);
|
93 |
//}
|
94 |
//else
|
95 |
p_nJets->Fill(aJetCol->size());
|
96 |
|
97 |
}
|
98 |
|
99 |
void HistosJets::FillHistograms(const pat::Jet & aJet, bool isLead){//FillHistograms
|
100 |
|
101 |
FillBaseHistograms(aJet.pt(),aJet.eta(),aJet.phi());
|
102 |
|
103 |
p_partonFlavour->Fill(aJet.partonFlavour());
|
104 |
p_hasJetCorrFactors->Fill(aJet.hasJetCorrFactors());
|
105 |
|
106 |
const std::vector<std::pair<std::string, float> > & lPairDiscri = aJet.getPairDiscri();
|
107 |
const unsigned int lNTags = lPairDiscri.size();
|
108 |
//std::cout << "numberOfTags = " << lNTags << std::endl;
|
109 |
assert (lNTags <= 11);
|
110 |
|
111 |
for (unsigned int i(0); i<lNTags; i++){
|
112 |
//std::cout << "tag " << i << ", name=" << lPairDiscri.at(i).first << std::endl;
|
113 |
p_bDiscriminator[i]->Fill(lPairDiscri.at(i).second);
|
114 |
}
|
115 |
|
116 |
p_charge->Fill(aJet.charge());
|
117 |
p_nAssociatedTracks->Fill((aJet.associatedTracks()).size());
|
118 |
p_isCaloJet->Fill(aJet.isCaloJet());
|
119 |
p_isPFJet->Fill(aJet.isPFJet());
|
120 |
p_isBasicJet->Fill(aJet.isBasicJet());
|
121 |
|
122 |
//================== Calo Jet specific information ====================
|
123 |
if (aJet.isCaloJet()) {
|
124 |
p_maxEInEmTowers->Fill(aJet.maxEInEmTowers());
|
125 |
p_maxEInHadTowers->Fill(aJet.maxEInHadTowers());
|
126 |
p_energyFractionHadronic->Fill(aJet.energyFractionHadronic());
|
127 |
p_emEnergyFraction->Fill(aJet.emEnergyFraction());
|
128 |
p_hadEnergyInHB->Fill(aJet.hadEnergyInHB());
|
129 |
p_hadEnergyInHO->Fill(aJet.hadEnergyInHO());
|
130 |
p_hadEnergyInHE->Fill(aJet.hadEnergyInHE());
|
131 |
p_hadEnergyInHF->Fill(aJet.hadEnergyInHF());
|
132 |
p_emEnergyInEB->Fill(aJet.emEnergyInEB());
|
133 |
p_emEnergyInEE->Fill(aJet.emEnergyInEE());
|
134 |
p_emEnergyInHF->Fill(aJet.emEnergyInHF());
|
135 |
p_towersArea->Fill(aJet.towersArea());
|
136 |
p_n90->Fill(aJet.n90());
|
137 |
p_n60->Fill(aJet.n60());
|
138 |
}
|
139 |
|
140 |
// //================== PF Jet specific information ====================
|
141 |
if (aJet.isPFJet()){
|
142 |
p_chargedHadronEnergy->Fill(aJet.chargedHadronEnergy());
|
143 |
p_chargedHadronEnergyFraction->Fill(aJet.chargedHadronEnergyFraction());
|
144 |
p_neutralHadronEnergy->Fill(aJet.neutralHadronEnergy());
|
145 |
p_neutralHadronEnergyFraction->Fill(aJet.neutralHadronEnergyFraction());
|
146 |
p_chargedEmEnergy->Fill(aJet.chargedEmEnergy());
|
147 |
p_chargedEmEnergyFraction->Fill(aJet.chargedEmEnergyFraction());
|
148 |
p_chargedMuEnergy->Fill(aJet.chargedMuEnergy());
|
149 |
p_chargedMuEnergyFraction->Fill(aJet.chargedMuEnergyFraction());
|
150 |
p_neutralEmEnergy->Fill(aJet.neutralEmEnergy());
|
151 |
p_neutralEmEnergyFraction->Fill(aJet.neutralEmEnergyFraction());
|
152 |
p_chargedMultiplicity->Fill(aJet.chargedMultiplicity());
|
153 |
p_neutralMultiplicity->Fill(aJet.neutralMultiplicity());
|
154 |
p_muonMultiplicity->Fill(aJet.muonMultiplicity());
|
155 |
}
|
156 |
|
157 |
|
158 |
|
159 |
}//FillHistograms
|
160 |
|
161 |
}//namespace
|
162 |
|
163 |
|