Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modernize RecoVertex/BeamSpotProducer #35236

Merged
merged 1 commit into from
Sep 17, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 0 additions & 57 deletions RecoVertex/BeamSpotProducer/interface/BeamSpotAnalyzer.h

This file was deleted.

38 changes: 0 additions & 38 deletions RecoVertex/BeamSpotProducer/interface/BeamSpotFromDB.h
Original file line number Diff line number Diff line change
@@ -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 <string>
// 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<BeamSpotObjects, BeamSpotObjectsRcd> m_beamToken;
};

#endif
43 changes: 0 additions & 43 deletions RecoVertex/BeamSpotProducer/interface/BeamSpotWrite2DB.h
Original file line number Diff line number Diff line change
@@ -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 <string>
// 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 <fstream>

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
143 changes: 92 additions & 51 deletions RecoVertex/BeamSpotProducer/plugins/BeamSpotAnalyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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 <string>
#include <string>
mmusich marked this conversation as resolved.
Show resolved Hide resolved

// 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<edm::one::WatchLuminosityBlocks> {
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<edm::ParameterSet>("BSAnalyzerParameters").getParameter<bool>("WriteToDB");
Expand All @@ -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; }
Expand All @@ -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();
Expand All @@ -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!";
Expand All @@ -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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
//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;
Expand All @@ -110,61 +137,61 @@ 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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be removed?

//std::cout << "reset fitNLumi " << resetFitNLumi_ << std::endl;
//edm::LogPrint("BeamSpotAnalyzer") << "reset fitNLumi " << resetFitNLumi_ ;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
//edm::LogPrint("BeamSpotAnalyzer") << "reset fitNLumi " << resetFitNLumi_ ;

}

if (resetFitNLumi_ > 0 && countLumi_ % resetFitNLumi_ == 0) {
std::vector<BSTrkParameters> 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();
theBeamFitter->resetRefTime();
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<int, int> 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();
}

Expand All @@ -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<edm::ParameterSet> 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
Expand Down
Loading