ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/HbbAnalysis/src/HistosJetsBase.cc
(Generate patch)

Comparing UserCode/HbbAnalysis/src/HistosJetsBase.cc (file contents):
Revision 1.3 by amagnan, Tue Feb 9 14:52:25 2010 UTC vs.
Revision 1.8 by amagnan, Mon May 10 18:45:10 2010 UTC

# Line 1 | Line 1
1   #include <iostream>
2   #include <fstream>
3   #include <sstream>
4 + #include <cmath>
5 + #include <cstdlib>
6  
7   #include "Math/VectorUtil.h"
8  
# Line 19 | Line 21 | namespace HbbAnalysis {//namespace
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;
# Line 32 | Line 35 | namespace HbbAnalysis {//namespace
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  
# Line 49 | Line 54 | namespace HbbAnalysis {//namespace
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  
# Line 143 | Line 148 | namespace HbbAnalysis {//namespace
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    
# Line 163 | Line 198 | namespace HbbAnalysis {//namespace
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      
# Line 186 | Line 232 | namespace HbbAnalysis {//namespace
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);
# Line 254 | Line 306 | namespace HbbAnalysis {//namespace
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  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines