CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoBTag/PerformanceDB/plugins/BTagPerformaceRootProducerFromSQLITE.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    BTagPerformaceRootProducerFromSQLITE
00004 // Class:      BTagPerformaceRootProducerFromSQLITE
00005 // 
00013 //
00014 // Original Author:  "Salvatore Rappoccio"
00015 //         Created:  Thu Feb 11 14:21:59 CST 2010
00016 // $Id: BTagPerformaceRootProducerFromSQLITE.cc,v 1.3 2010/06/04 18:04:31 srappocc Exp $
00017 //
00018 //
00019 
00020 
00021 // system include files
00022 #include <memory>
00023 
00024 // user include files
00025 #include "FWCore/Framework/interface/Frameworkfwd.h"
00026 #include "FWCore/Framework/interface/EDAnalyzer.h"
00027 #include "FWCore/Framework/interface/ESHandle.h"
00028 #include "FWCore/Framework/interface/ESWatcher.h"
00029 
00030 #include "FWCore/Framework/interface/Event.h"
00031 #include "FWCore/Framework/interface/MakerMacros.h"
00032 
00033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00034 
00035 #include "FWCore/ServiceRegistry/interface/Service.h"
00036 #include "CommonTools/UtilAlgos/interface/TFileService.h"
00037 
00038 #include "PhysicsTools/CondLiteIO/interface/RecordWriter.h"
00039 #include "DataFormats/Provenance/interface/ESRecordAuxiliary.h"
00040 #include "DataFormats/FWLite/interface/format_type_name.h"
00041 
00042 #include "RecoBTag/Records/interface/BTagPerformanceRecord.h"
00043 #include "RecoBTag/PerformanceDB/interface/BtagPerformance.h"
00044 
00045 #include "CondFormats/PhysicsToolsObjects/interface/BinningPointByMap.h"
00046 
00047 
00048 
00049 //
00050 // class declaration
00051 //
00052 
00053 class BTagPerformaceRootProducerFromSQLITE : public edm::EDAnalyzer {
00054    public:
00055       explicit BTagPerformaceRootProducerFromSQLITE(const edm::ParameterSet&);
00056       ~BTagPerformaceRootProducerFromSQLITE();
00057 
00058 
00059    private:
00060       virtual void beginJob() ;
00061       virtual void analyze(const edm::Event&, const edm::EventSetup&);
00062       virtual void endJob() ;
00063 
00064       // ----------member data ---------------------------
00065   std::vector<std::string>  names_;
00066   edm::ESWatcher<BTagPerformanceRecord> recWatcher_;
00067   std::auto_ptr<fwlite::RecordWriter> writer_;
00068   edm::IOVSyncValue lastValue_;
00069 };
00070 
00071 //
00072 // constants, enums and typedefs
00073 //
00074 
00075 //
00076 // static data member definitions
00077 //
00078 
00079 //
00080 // constructors and destructor
00081 //
00082 BTagPerformaceRootProducerFromSQLITE::BTagPerformaceRootProducerFromSQLITE(const edm::ParameterSet& iConfig) :
00083   names_(iConfig.getParameter< std::vector<std::string> >("names"))
00084 {
00085 }
00086 
00087 
00088 BTagPerformaceRootProducerFromSQLITE::~BTagPerformaceRootProducerFromSQLITE()
00089 {
00090 }
00091 
00092 
00093 //
00094 // member functions
00095 //
00096 
00097 // ------------ method called to for each event  ------------
00098 void
00099 BTagPerformaceRootProducerFromSQLITE::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup)
00100 {
00101 
00102   std::cout << "Hello from BTagPerformaceRootProducerFromSQLITE!" << std::endl;
00103   if(recWatcher_.check(iSetup)) {
00104     const BTagPerformanceRecord& r = iSetup.get<BTagPerformanceRecord>();
00105 
00106     if(! writer_.get()) {
00107       edm::Service<TFileService> fs ;
00108       TFile * f = &(fs->file());
00109       writer_ = std::auto_ptr<fwlite::RecordWriter>(new fwlite::RecordWriter(r.key().name(), f ));
00110     }
00111     lastValue_ = r.validityInterval().last();
00112 
00113     for( size_t i=0;  i<names_.size(); i++ )
00114     {
00115        edm::ESHandle<BtagPerformance> perfH;
00116        std::cout <<" Studying performance with label " << names_.at(i) <<std::endl;
00117        r.get( names_.at(i), perfH );
00118        const BtagPerformance & perf = *(perfH.product());
00119 
00120        writer_->update(&(perf.payload()), typeid(PerformancePayload),names_.at(i).c_str());
00121        writer_->update(&(perf.workingPoint()), typeid(PerformanceWorkingPoint),names_.at(i).c_str());
00122     }
00123     writer_->fill(edm::ESRecordAuxiliary(r.validityInterval().first().eventID(),
00124                                       r.validityInterval().first().time()));
00125   }
00126 }
00127 
00128 
00129 // ------------ method called once each job just before starting event loop  ------------
00130 void 
00131 BTagPerformaceRootProducerFromSQLITE::beginJob()
00132 {
00133 }
00134 
00135 // ------------ method called once each job just after ending the event loop  ------------
00136 void 
00137 BTagPerformaceRootProducerFromSQLITE::endJob() {
00138   /*if(writer_.get()) {
00139     writer_->fill(edm::ESRecordAuxiliary(lastValue_.eventID(),
00140                                          lastValue_.time()));
00141     writer_->write();
00142   } */
00143 }
00144 
00145 //define this as a plug-in
00146 DEFINE_FWK_MODULE(BTagPerformaceRootProducerFromSQLITE);