From 993a9a6f408ce9b9588eebd3844f0397530548b9 Mon Sep 17 00:00:00 2001 From: mmusich Date: Sat, 11 Sep 2021 13:52:54 +0200 Subject: [PATCH] moderninze RecoVertex/BeamSpotProducer --- .../interface/BeamSpotAnalyzer.h | 57 ------- .../interface/BeamSpotFromDB.h | 38 ----- .../interface/BeamSpotWrite2DB.h | 43 ------ .../plugins/BeamSpotAnalyzer.cc | 143 +++++++++++------- .../plugins/BeamSpotFromDB.cc | 52 ++++--- .../plugins/BeamSpotWrite2DB.cc | 97 +++++++----- 6 files changed, 182 insertions(+), 248 deletions(-) delete mode 100644 RecoVertex/BeamSpotProducer/interface/BeamSpotAnalyzer.h diff --git a/RecoVertex/BeamSpotProducer/interface/BeamSpotAnalyzer.h b/RecoVertex/BeamSpotProducer/interface/BeamSpotAnalyzer.h deleted file mode 100644 index 838183fc4bc1f..0000000000000 --- a/RecoVertex/BeamSpotProducer/interface/BeamSpotAnalyzer.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef BeamSpotProducer_BeamSpotAnalyzer_h -#define BeamSpotProducer_BeamSpotAnalyzer_h - -/**_________________________________________________________________ - class: BeamSpotAnalyzer.h - package: RecoVertex/BeamSpotProducer - - - - author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) - - -________________________________________________________________**/ - -// C++ standard -#include -// CMS -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "RecoVertex/BeamSpotProducer/interface/BeamFitter.h" - -class BeamSpotAnalyzer : public edm::EDAnalyzer { -public: - explicit BeamSpotAnalyzer(const edm::ParameterSet&); - ~BeamSpotAnalyzer() override; - -private: - void beginJob() override; - void analyze(const edm::Event&, const edm::EventSetup&) override; - void endJob() override; - void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) override; - void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c) override; - - int ftotalevents; - int fitNLumi_; - int resetFitNLumi_; - // int countEvt_; //counter - int countLumi_; //counter - int Org_resetFitNLumi_; - int previousLumi_; - int previousRun_; - int ftmprun0, ftmprun; - int beginLumiOfBSFit_; - int endLumiOfBSFit_; - std::time_t refBStime[2]; - - bool write2DB_; - bool runbeamwidthfit_; - bool runallfitters_; - // double inputBeamWidth_; - - BeamFitter* theBeamFitter; -}; - -#endif diff --git a/RecoVertex/BeamSpotProducer/interface/BeamSpotFromDB.h b/RecoVertex/BeamSpotProducer/interface/BeamSpotFromDB.h index 1b16c78db4b35..8b137891791fe 100644 --- a/RecoVertex/BeamSpotProducer/interface/BeamSpotFromDB.h +++ b/RecoVertex/BeamSpotProducer/interface/BeamSpotFromDB.h @@ -1,39 +1 @@ -#ifndef BeamSpotProducer_BeamSpotFromDB_h -#define BeamSpotProducer_BeamSpotFromDB_h -/**_________________________________________________________________ - class: BeamSpotFromDB.h - package: RecoVertex/BeamSpotProducer - - - - author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) - - -________________________________________________________________**/ - -// C++ standard -#include -// CMS -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/ESGetToken.h" - -#include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h" -#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h" - -class BeamSpotFromDB : public edm::EDAnalyzer { -public: - explicit BeamSpotFromDB(const edm::ParameterSet&); - ~BeamSpotFromDB() override; - -private: - void beginJob() override; - void analyze(const edm::Event&, const edm::EventSetup&) override; - void endJob() override; - edm::ESGetToken m_beamToken; -}; - -#endif diff --git a/RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h b/RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h index 6aceefc976129..8b137891791fe 100644 --- a/RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h +++ b/RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h @@ -1,44 +1 @@ -#ifndef BeamSpotProducer_BeamSpotWrite2DB_h -#define BeamSpotProducer_BeamSpotWrite2DB_h -/**_________________________________________________________________ - class: BeamSpotWrite2DB.h - package: RecoVertex/BeamSpotProducer - - - - author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) - - -________________________________________________________________**/ - -// C++ standard -#include -// CMS -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "RecoVertex/BeamSpotProducer/interface/BSTrkParameters.h" - -// ROOT -#include "TFile.h" -#include "TTree.h" - -#include - -class BeamSpotWrite2DB : public edm::EDAnalyzer { -public: - explicit BeamSpotWrite2DB(const edm::ParameterSet&); - ~BeamSpotWrite2DB() override; - -private: - void beginJob() override; - void analyze(const edm::Event&, const edm::EventSetup&) override; - void endJob() override; - - std::ifstream fasciiFile; - std::string fasciiFileName; -}; - -#endif diff --git a/RecoVertex/BeamSpotProducer/plugins/BeamSpotAnalyzer.cc b/RecoVertex/BeamSpotProducer/plugins/BeamSpotAnalyzer.cc index 88dac4b622288..ad400a010d90d 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BeamSpotAnalyzer.cc +++ b/RecoVertex/BeamSpotProducer/plugins/BeamSpotAnalyzer.cc @@ -2,28 +2,60 @@ class: BeamSpotAnalyzer.cc package: RecoVertex/BeamSpotProducer - - author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) Geng-Yuan Jeng, UC Riverside (Geng-Yuan.Jeng@cern.ch) - ________________________________________________________________**/ // C++ standard #include +#include + // CMS #include "DataFormats/BeamSpot/interface/BeamSpot.h" -#include "RecoVertex/BeamSpotProducer/interface/BeamSpotAnalyzer.h" -#include "RecoVertex/BeamSpotProducer/interface/BSFitter.h" - -#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" #include "FWCore/Framework/interface/LuminosityBlock.h" #include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/ConsumesCollector.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "RecoVertex/BeamSpotProducer/interface/BeamFitter.h" #include "TMath.h" +class BeamSpotAnalyzer : public edm::one::EDAnalyzer { +public: + explicit BeamSpotAnalyzer(const edm::ParameterSet&); + ~BeamSpotAnalyzer() override; + static void fillDescriptions(edm::ConfigurationDescriptions&); + +private: + void analyze(const edm::Event&, const edm::EventSetup&) override; + void endJob() override; + void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) override; + void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c) override; + + int ftotalevents; + int fitNLumi_; + int resetFitNLumi_; + int countLumi_; //counter + int org_resetFitNLumi_; + int previousLumi_; + int previousRun_; + int ftmprun0, ftmprun; + int beginLumiOfBSFit_; + int endLumiOfBSFit_; + std::time_t refBStime[2]; + + bool write2DB_; + bool runbeamwidthfit_; + bool runallfitters_; + + BeamFitter* theBeamFitter; +}; + BeamSpotAnalyzer::BeamSpotAnalyzer(const edm::ParameterSet& iConfig) { // get parameter write2DB_ = iConfig.getParameter("BSAnalyzerParameters").getParameter("WriteToDB"); @@ -47,7 +79,7 @@ BeamSpotAnalyzer::BeamSpotAnalyzer(const edm::ParameterSet& iConfig) { countLumi_ = 0; beginLumiOfBSFit_ = endLumiOfBSFit_ = -1; previousLumi_ = previousRun_ = 0; - Org_resetFitNLumi_ = resetFitNLumi_; + org_resetFitNLumi_ = resetFitNLumi_; } BeamSpotAnalyzer::~BeamSpotAnalyzer() { delete theBeamFitter; } @@ -58,8 +90,6 @@ void BeamSpotAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& ftmprun = iEvent.id().run(); } -void BeamSpotAnalyzer::beginJob() {} - //-------------------------------------------------------- void BeamSpotAnalyzer::beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) { const edm::TimeValue_t fbegintimestamp = lumiSeg.beginTime().value(); @@ -73,7 +103,6 @@ void BeamSpotAnalyzer::beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, } countLumi_++; - //std::cout << "Lumi # " << countLumi_ << std::endl; if (ftmprun == previousRun_) { if ((previousLumi_ + 1) != int(lumiSeg.luminosityBlock())) edm::LogWarning("BeamSpotAnalyzer") << "LUMI SECTIONS ARE NOT SORTED!"; @@ -82,12 +111,10 @@ void BeamSpotAnalyzer::beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, //-------------------------------------------------------- void BeamSpotAnalyzer::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& iSetup) { - //LogDebug("BeamSpotAnalyzer") << - std::cout << "for lumis " << beginLumiOfBSFit_ << " - " << endLumiOfBSFit_ << std::endl - << "number of selected tracks = " << theBeamFitter->getNTracks() << std::endl; - std::cout << "number of selected PVs = " << theBeamFitter->getNPVs() << std::endl; - //std::cout << "number of selected PVs per bx: " << std::endl; - //theBeamFitter->getNPVsperBX(); + edm::LogPrint("BeamSpotAnalyzer") << "for lumis " << beginLumiOfBSFit_ << " - " << endLumiOfBSFit_ << std::endl + << "number of selected tracks = " << theBeamFitter->getNTracks(); + edm::LogPrint("BeamSpotAnalyzer") << "number of selected PVs = " << theBeamFitter->getNPVs(); + //edm::LogPrint("BeamSpotAnalyzer") << "number of selected PVs per bx: " << theBeamFitter->getNPVsperBX() std::endl; const edm::TimeValue_t fendtimestamp = lumiSeg.endTime().value(); const std::time_t fendtime = fendtimestamp >> 32; @@ -110,31 +137,31 @@ void BeamSpotAnalyzer::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, c if (theBeamFitter->runPVandTrkFitter()) { reco::BeamSpot bs = theBeamFitter->getBeamSpot(); - std::cout << "\n RESULTS OF DEFAULT FIT " << std::endl; - std::cout << " for runs: " << ftmprun0 << " - " << ftmprun << std::endl; - std::cout << " for lumi blocks : " << LSRange.first << " - " << LSRange.second << std::endl; - std::cout << " lumi counter # " << countLumi_ << std::endl; - std::cout << bs << std::endl; - std::cout << "[BeamFitter] fit done. \n" << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << "\n RESULTS OF DEFAULT FIT "; + edm::LogPrint("BeamSpotAnalyzer") << " for runs: " << ftmprun0 << " - " << ftmprun; + edm::LogPrint("BeamSpotAnalyzer") << " for lumi blocks : " << LSRange.first << " - " << LSRange.second; + edm::LogPrint("BeamSpotAnalyzer") << " lumi counter # " << countLumi_; + edm::LogPrint("BeamSpotAnalyzer") << bs; + edm::LogPrint("BeamSpotAnalyzer") << "[BeamFitter] fit done. \n"; } else { // Fill in empty beam spot if beamfit fails reco::BeamSpot bs; bs.setType(reco::BeamSpot::Fake); - std::cout << "\n Empty Beam spot fit" << std::endl; - std::cout << " for runs: " << ftmprun0 << " - " << ftmprun << std::endl; - std::cout << " for lumi blocks : " << LSRange.first << " - " << LSRange.second << std::endl; - std::cout << " lumi counter # " << countLumi_ << std::endl; - std::cout << bs << std::endl; - std::cout << "[BeamFitter] fit failed \n" << std::endl; - //accumulate more events - // dissable this for the moment + edm::LogPrint("BeamSpotAnalyzer") << "\n Empty Beam spot fit"; + edm::LogPrint("BeamSpotAnalyzer") << " for runs: " << ftmprun0 << " - " << ftmprun; + edm::LogPrint("BeamSpotAnalyzer") << " for lumi blocks : " << LSRange.first << " - " << LSRange.second; + edm::LogPrint("BeamSpotAnalyzer") << " lumi counter # " << countLumi_; + edm::LogPrint("BeamSpotAnalyzer") << bs; + edm::LogPrint("BeamSpotAnalyzer") << "[BeamFitter] fit failed \n"; + // accumulate more events + // disable this for the moment //resetFitNLumi_ += 1; - //std::cout << "reset fitNLumi " << resetFitNLumi_ << std::endl; + //edm::LogPrint("BeamSpotAnalyzer") << "reset fitNLumi " << resetFitNLumi_ ; } if (resetFitNLumi_ > 0 && countLumi_ % resetFitNLumi_ == 0) { std::vector theBSvector = theBeamFitter->getBSvector(); - std::cout << "Total number of tracks accumulated = " << theBSvector.size() << std::endl; - std::cout << "Reset track collection for beam fit" << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << "Total number of tracks accumulated = " << theBSvector.size(); + edm::LogPrint("BeamSpotAnalyzer") << "Reset track collection for beam fit"; theBeamFitter->resetTrkVector(); theBeamFitter->resetLSRange(); theBeamFitter->resetCutFlow(); @@ -142,29 +169,29 @@ void BeamSpotAnalyzer::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, c theBeamFitter->resetPVFitter(); countLumi_ = 0; // reset counter to orginal - resetFitNLumi_ = Org_resetFitNLumi_; + resetFitNLumi_ = org_resetFitNLumi_; } } void BeamSpotAnalyzer::endJob() { - std::cout << "\n-------------------------------------\n" << std::endl; - std::cout << "\n Total number of events processed: " << ftotalevents << std::endl; - std::cout << "\n-------------------------------------\n\n" << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << "\n-------------------------------------\n"; + edm::LogPrint("BeamSpotAnalyzer") << "\n Total number of events processed: " << ftotalevents; + edm::LogPrint("BeamSpotAnalyzer") << "\n-------------------------------------\n\n"; if (fitNLumi_ == -1 && resetFitNLumi_ == -1) { if (theBeamFitter->runPVandTrkFitter()) { reco::BeamSpot beam_default = theBeamFitter->getBeamSpot(); std::pair LSRange = theBeamFitter->getFitLSRange(); - std::cout << "\n RESULTS OF DEFAULT FIT:" << std::endl; - std::cout << " for runs: " << ftmprun0 << " - " << ftmprun << std::endl; - std::cout << " for lumi blocks : " << LSRange.first << " - " << LSRange.second << std::endl; - std::cout << " lumi counter # " << countLumi_ << std::endl; - std::cout << beam_default << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << "\n RESULTS OF DEFAULT FIT:"; + edm::LogPrint("BeamSpotAnalyzer") << " for runs: " << ftmprun0 << " - " << ftmprun; + edm::LogPrint("BeamSpotAnalyzer") << " for lumi blocks : " << LSRange.first << " - " << LSRange.second; + edm::LogPrint("BeamSpotAnalyzer") << " lumi counter # " << countLumi_; + edm::LogPrint("BeamSpotAnalyzer") << beam_default; if (write2DB_) { - std::cout << "\n-------------------------------------\n\n" << std::endl; - std::cout << " write results to DB..." << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << "\n-------------------------------------\n\n"; + edm::LogPrint("BeamSpotAnalyzer") << " write results to DB..."; theBeamFitter->write2DB(); } @@ -175,14 +202,28 @@ void BeamSpotAnalyzer::endJob() { if ((runbeamwidthfit_)) { theBeamFitter->runBeamWidthFitter(); reco::BeamSpot beam_width = theBeamFitter->getBeamWidth(); - std::cout << beam_width << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << beam_width; + } else { + edm::LogPrint("BeamSpotAnalyzer") << "[BeamSpotAnalyzer] beamfit fails !!!"; } - - else - std::cout << "[BeamSpotAnalyzer] beamfit fails !!!" << std::endl; } - std::cout << "[BeamSpotAnalyzer] endJob done \n" << std::endl; + edm::LogPrint("BeamSpotAnalyzer") << "[BeamSpotAnalyzer] endJob done \n"; +} + +void BeamSpotAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.setComment("Analyzer of BeamSpot Objects"); + + edm::ParameterSetDescription bsAnalyzerParamsDesc; + std::vector bsAnaDefaults(1); + bsAnaDefaults[0].addParameter("WriteToDB", false); + bsAnaDefaults[0].addParameter("RunAllFitters", false); + bsAnaDefaults[0].addUntrackedParameter("fitEveryNLumi", -1); + bsAnaDefaults[0].addUntrackedParameter("resetEveryNLumi", -1); + bsAnaDefaults[0].addParameter("RunBeamWidthFit", false); + desc.addVPSet("BSAnalyzerParameters", bsAnalyzerParamsDesc, bsAnaDefaults); + descriptions.addWithDefaultLabel(desc); } //define this as a plug-in diff --git a/RecoVertex/BeamSpotProducer/plugins/BeamSpotFromDB.cc b/RecoVertex/BeamSpotProducer/plugins/BeamSpotFromDB.cc index dadfecf9a9d2b..3fc54dd7f1cc9 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BeamSpotFromDB.cc +++ b/RecoVertex/BeamSpotProducer/plugins/BeamSpotFromDB.cc @@ -1,47 +1,49 @@ /**_________________________________________________________________ - class: BeamSpotFromDB.cc + class: BeamSpotFromDB.h package: RecoVertex/BeamSpotProducer - - - author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) - - + author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) ________________________________________________________________**/ // C++ standard #include + // CMS +#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h" +#include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h" #include "DataFormats/BeamSpot/interface/BeamSpot.h" -#include "RecoVertex/BeamSpotProducer/interface/BeamSpotFromDB.h" - +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/IOVSyncValue.h" +#include "FWCore/Framework/interface/MakerMacros.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Utilities/interface/ESGetToken.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ServiceRegistry/interface/Service.h" +class BeamSpotFromDB : public edm::one::EDAnalyzer<> { +public: + explicit BeamSpotFromDB(const edm::ParameterSet&); + ~BeamSpotFromDB() override; -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/IOVSyncValue.h" +private: + void analyze(const edm::Event&, const edm::EventSetup&) override; + edm::ESGetToken m_beamToken; +}; BeamSpotFromDB::BeamSpotFromDB(const edm::ParameterSet& iConfig) : m_beamToken(esConsumes()) {} -BeamSpotFromDB::~BeamSpotFromDB() {} +BeamSpotFromDB::~BeamSpotFromDB() = default; void BeamSpotFromDB::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { - edm::ESHandle beamhandle = iSetup.getHandle(m_beamToken); - const BeamSpotObjects* mybeamspot = beamhandle.product(); - - std::cout << " for runs: " << iEvent.id().run() << " - " << iEvent.id().run() << std::endl; - //std::cout << iEvent.getRun().beginTime().value() << std::endl; - //std::cout << iEvent.time().value() << std::endl; - std::cout << *mybeamspot << std::endl; + const BeamSpotObjects* mybeamspot = &iSetup.getData(m_beamToken); + edm::LogPrint("BeamSpotFromDB") << " for runs: " << iEvent.id().run() << " - " << iEvent.id().run(); + //edm::LogPrint("BeamSpotFromDB") << iEvent.getRun().beginTime().value(); + //edm::LogPrint("BeamSpotFromDB") << iEvent.time().value(); + edm::LogPrint("BeamSpotFromDB") << *mybeamspot; } -void BeamSpotFromDB::beginJob() {} - -void BeamSpotFromDB::endJob() {} - //define this as a plug-in DEFINE_FWK_MODULE(BeamSpotFromDB); diff --git a/RecoVertex/BeamSpotProducer/plugins/BeamSpotWrite2DB.cc b/RecoVertex/BeamSpotProducer/plugins/BeamSpotWrite2DB.cc index dc93071733afd..77ad5650576aa 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BeamSpotWrite2DB.cc +++ b/RecoVertex/BeamSpotProducer/plugins/BeamSpotWrite2DB.cc @@ -1,53 +1,75 @@ /**_________________________________________________________________ - class: BeamSpotWrite2DB.cc + class: BeamSpotWrite2DB.h package: RecoVertex/BeamSpotProducer - - - - author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) - + author: Francisco Yumiceva, Fermilab (yumiceva@fnal.gov) ________________________________________________________________**/ // C++ standard #include +#include + // CMS +#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" +#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h" #include "DataFormats/BeamSpot/interface/BeamSpot.h" -#include "RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h" +#include "FWCore/Framework/interface/one/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ServiceRegistry/interface/Service.h" #include "RecoVertex/BeamSpotProducer/interface/BSFitter.h" +#include "RecoVertex/BeamSpotProducer/interface/BSTrkParameters.h" +#include "RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" +// ROOT +#include "TFile.h" +#include "TTree.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" -#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h" +class BeamSpotWrite2DB : public edm::one::EDAnalyzer { +public: + explicit BeamSpotWrite2DB(const edm::ParameterSet&); + ~BeamSpotWrite2DB() override; + static void fillDescriptions(edm::ConfigurationDescriptions&); + +private: + void analyze(const edm::Event&, const edm::EventSetup&) override; + void endJob() override; + + std::ifstream fasciiFile; + std::string fasciiFileName; +}; BeamSpotWrite2DB::BeamSpotWrite2DB(const edm::ParameterSet& iConfig) { + usesResource("PoolDBOutputService"); fasciiFileName = iConfig.getUntrackedParameter("OutputFileName"); - - fasciiFile.open(fasciiFileName.c_str()); + if (!fasciiFileName.empty()) { + fasciiFile.open(fasciiFileName.c_str()); + } else { + throw cms::Exception("Inconsistent Data") << " expected input file name is null\n"; + } } -BeamSpotWrite2DB::~BeamSpotWrite2DB() {} +BeamSpotWrite2DB::~BeamSpotWrite2DB() = default; void BeamSpotWrite2DB::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {} -void BeamSpotWrite2DB::beginJob() {} - void BeamSpotWrite2DB::endJob() { - std::cout << " Read beam spot data from text file: " << fasciiFileName << std::endl; - std::cout << " please see plugins/BeamSpotWrite2DB.cc for format of text file." << std::endl; - /* - std::cout << " Content of the file is expected to have this format with the first column as a keyword:" << std::endl; - std::cout << " x\n y\n z\n sigmaZ\n dxdz\n dydz\n beamWidthX\n beamWidthY" << std::endl; - for (int i =0; i<7; i++) { - for (int j=0; j<7; j++ ) { - - std::cout << " cov["< poolDbService; if (poolDbService.isAvailable()) { - std::cout << "poolDBService available" << std::endl; + edm::LogPrint("BeamSpotWrite2DB") << "poolDBService available"; if (poolDbService->isNewTagRequest("BeamSpotObjectsRcd")) { - std::cout << "new tag requested" << std::endl; + edm::LogPrint("BeamSpotWrite2DB") << "new tag requested"; poolDbService->createNewIOV( abeam, poolDbService->beginOfTime(), poolDbService->endOfTime(), "BeamSpotObjectsRcd"); } else { - std::cout << "no new tag requested" << std::endl; + edm::LogPrint("BeamSpotWrite2DB") << "no new tag requested"; poolDbService->appendSinceTime(abeam, poolDbService->currentTime(), "BeamSpotObjectsRcd"); } } + edm::LogPrint("BeamSpotWrite2DB") << "[BeamSpotWrite2DB] endJob done \n"; +} - std::cout << "[BeamSpotWrite2DB] endJob done \n" << std::endl; +void BeamSpotWrite2DB::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.setComment( + "Writes out a DB file containing a BeamSpotObjects payload, according to parameters defined in ASCII file"); + desc.addUntracked("OutputFileName", {}); + descriptions.addWithDefaultLabel(desc); } //define this as a plug-in