Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:24:37

0001 // -*- C++ -*-
0002 //
0003 // Package:    TrackProbabilityAnalyzer
0004 // Class:      TrackProbabilityAnalyzer
0005 //
0006 /**\class TrackProbabilityAnalyzer TrackProbabilityAnalyzer.cc RecoBTag/TrackProbabilityAnalyzer/src/TrackProbabilityAnalyzer.cc
0007 
0008  Description: <one line class summary>
0009 
0010  Implementation:
0011      <Notes on implementation>
0012 */
0013 //
0014 // Original Author:  Andrea Rizzi
0015 //         Created:  Wed Apr 12 11:12:49 CEST 2006
0016 //
0017 //
0018 
0019 // system include files
0020 #include <memory>
0021 #include <string>
0022 #include <iostream>
0023 using namespace std;
0024 
0025 // user include files
0026 #include "FWCore/Framework/interface/Frameworkfwd.h"
0027 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0028 #include "FWCore/Framework/interface/Event.h"
0029 #include "FWCore/Framework/interface/EventSetup.h"
0030 #include "FWCore/Framework/interface/MakerMacros.h"
0031 #include "FWCore/Framework/interface/ESHandle.h"
0032 
0033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0034 #include "DataFormats/Common/interface/Ref.h"
0035 #include "DataFormats/JetReco/interface/Jet.h"
0036 #include "DataFormats/JetReco/interface/CaloJet.h"
0037 #include "DataFormats/BTauReco/interface/TrackProbabilityTagInfo.h"
0038 #include "DataFormats/BTauReco/interface/JetTag.h"
0039 #include "DataFormats/TrackReco/interface/Track.h"
0040 
0041 #include "DataFormats/Math/interface/Vector3D.h"
0042 
0043 // Math
0044 #include "Math/GenVector/VectorUtil.h"
0045 #include "Math/GenVector/PxPyPzE4D.h"
0046 
0047 #include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h"
0048 //#include "CondFormats/DataRecord/interface/BTagTrackProbabilityRcd.h"
0049 
0050 using namespace reco;
0051 
0052 //
0053 // class decleration
0054 //
0055 
0056 class TrackProbabilityAnalyzer : public edm::one::EDAnalyzer<> {
0057 public:
0058   explicit TrackProbabilityAnalyzer(const edm::ParameterSet&);
0059   ~TrackProbabilityAnalyzer() {}
0060 
0061   virtual void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup);
0062 
0063 private:
0064   string m_assoc;
0065   string m_jets;
0066 };
0067 
0068 //
0069 // constructors and destructor
0070 //
0071 TrackProbabilityAnalyzer::TrackProbabilityAnalyzer(const edm::ParameterSet& iConfig) {}
0072 
0073 void TrackProbabilityAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0074   static int above = 0;
0075   static int tot = 0;
0076   using namespace edm;
0077   using namespace reco;
0078   //  using namespace eventsetup;
0079   /*  ESHandle<TrackProbabilityCalibration> calib;
0080   iSetup.get<BTagTrackProbabilityRcd>().get(calib);
0081  
0082   const TrackProbabilityCalibration *  ca= calib.product();
0083   cout << "Bin for 0.35 " << ca->data[5].histogram.findBin(0.35) << endl;
0084  
0085   return; 
0086   */
0087   Handle<JetTagCollection> jetsHandle;
0088   Handle<TrackProbabilityTagInfoCollection> jetsInfoHandle;
0089   iEvent.getByLabel("trackProbabilityJetTags", jetsHandle);
0090   iEvent.getByLabel("trackProbabilityJetTags", jetsInfoHandle);
0091   const JetTagCollection& jets = *(jetsHandle.product());
0092   const TrackProbabilityTagInfoCollection& info = *(jetsInfoHandle.product());
0093 
0094   for (JetTagCollection::size_type i = 0; i < jets.size(); ++i) {
0095     // cout << jets[i].first <<endl;
0096     //  cout  << "Number of associated tracks " << jets[i].tracks().size() << endl;
0097     //  const edm::RefVector<TrackCollection> & tracks=  jets[i].tracks();
0098     //for (edm::RefVector<TrackCollection>::iterator j = tracks.begin(); j != tracks.end(); ++j) {
0099     //  cout << (*j)->pt() << endl;
0100     //  }
0101   }
0102 
0103   for (TrackProbabilityTagInfoCollection::size_type i = 0; i < info.size(); ++i) {
0104     cout << i << endl;
0105     //    cout << &(info[i]) << endl;
0106     cout << info[i].discriminator(0, 0.005) << " " << info[i].discriminator(1, 0.005) << endl;
0107     if (info[i].discriminator(0, 0.005) > 90)
0108       above++;
0109     tot++;
0110     cout << above << " " << tot << endl;
0111     for (int j = 0; j < info[i].selectedTracks(0); j++) {
0112       cout << info[i].track(j, 0).pt() << " " << info[i].probability(j, 0) << endl;
0113     }
0114   }
0115 }
0116 
0117 //define this as a plug-in
0118 DEFINE_FWK_MODULE(TrackProbabilityAnalyzer);