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

Dump of the beamspot for DIP #37858

Merged
merged 7 commits into from May 13, 2022
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
96 changes: 93 additions & 3 deletions DQM/BeamMonitor/plugins/OnlineBeamMonitor.cc
Expand Up @@ -8,7 +8,6 @@
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "DataFormats/BeamSpot/interface/BeamSpot.h"
#include "DQM/BeamMonitor/plugins/OnlineBeamMonitor.h"
#include "DataFormats/Common/interface/Handle.h"
#include "DataFormats/Common/interface/View.h"
Expand All @@ -32,7 +31,10 @@ OnlineBeamMonitor::OnlineBeamMonitor(const ParameterSet& ps)
bsTransientToken_(esConsumes<edm::Transition::BeginLuminosityBlock>()),
bsHLTToken_(esConsumes<edm::Transition::BeginLuminosityBlock>()),
bsLegacyToken_(esConsumes<edm::Transition::BeginLuminosityBlock>()),
numberOfValuesToSave_(0) {
numberOfValuesToSave_(0),
appendRunTxt_(ps.getUntrackedParameter<bool>("AppendRunToFileName")),
writeDIPTxt_(ps.getUntrackedParameter<bool>("WriteDIPAscii")),
outputDIPTxt_(ps.getUntrackedParameter<std::string>("DIPFileName")) {
if (!monitorName_.empty())
monitorName_ = monitorName_ + "/";

Expand Down Expand Up @@ -67,6 +69,10 @@ OnlineBeamMonitor::OnlineBeamMonitor(const ParameterSet& ps)
void OnlineBeamMonitor::fillDescriptions(edm::ConfigurationDescriptions& iDesc) {
edm::ParameterSetDescription ps;
ps.addUntracked<std::string>("MonitorName", "YourSubsystemName");
ps.addUntracked<bool>("AppendRunToFileName", false);
ps.addUntracked<bool>("WriteDIPAscii", true);
ps.addUntracked<std::string>("DIPFileName", "BeamFitResultsForDIP.txt");

iDesc.addWithDefaultLabel(ps);
}

Expand Down Expand Up @@ -132,10 +138,26 @@ std::shared_ptr<onlinebeammonitor::NoCache> OnlineBeamMonitor::globalBeginLumino
ESHandle<BeamSpotOnlineObjects> bsHLTHandle;
ESHandle<BeamSpotOnlineObjects> bsLegacyHandle;
ESHandle<BeamSpotObjects> bsTransientHandle;
//int lastLumiHLT_ = 0;
//int lastLumiLegacy_ = 0;
std::string startTimeStamp_ = "0";
std::string startTimeStampHLT_ = "0";
std::string startTimeStampLegacy_ = "0";
std::string stopTimeStamp_ = "0";
std::string stopTimeStampHLT_ = "0";
std::string stopTimeStampLegacy_ = "0";
std::string lumiRange_ = "0 - 0";
std::string lumiRangeHLT_ = "0 - 0";
std::string lumiRangeLegacy_ = "0 - 0";

if (auto bsHLTHandle = iSetup.getHandle(bsHLTToken_)) {
auto const& spotDB = *bsHLTHandle;

//lastLumiHLT_ = spotDB.lastAnalyzedLumi();
startTimeStampHLT_ = spotDB.startTime();
stopTimeStampHLT_ = spotDB.endTime();
lumiRangeHLT_ = spotDB.lumiRange();

// translate from BeamSpotObjects to reco::BeamSpot
BeamSpot::Point apoint(spotDB.x(), spotDB.y(), spotDB.z());

Expand Down Expand Up @@ -167,9 +189,15 @@ std::shared_ptr<onlinebeammonitor::NoCache> OnlineBeamMonitor::globalBeginLumino
}
if (auto bsLegacyHandle = iSetup.getHandle(bsLegacyToken_)) {
auto const& spotDB = *bsLegacyHandle;

// translate from BeamSpotObjects to reco::BeamSpot
BeamSpot::Point apoint(spotDB.x(), spotDB.y(), spotDB.z());

//lastLumiLegacy_ = spotDB.lastAnalyzedLumi();
startTimeStampLegacy_ = spotDB.startTime();
stopTimeStampLegacy_ = spotDB.endTime();
lumiRangeLegacy_ = spotDB.lumiRange();

BeamSpot::CovarianceMatrix matrix;
for (int i = 0; i < 7; ++i) {
for (int j = 0; j < 7; ++j) {
Expand Down Expand Up @@ -199,6 +227,7 @@ std::shared_ptr<onlinebeammonitor::NoCache> OnlineBeamMonitor::globalBeginLumino
}
if (auto bsTransientHandle = iSetup.getHandle(bsTransientToken_)) {
auto const& spotDB = *bsTransientHandle;
//std::cout << " from the DB " << spotDB << std::endl;

// translate from BeamSpotObjects to reco::BeamSpot
BeamSpot::Point apoint(spotDB.x(), spotDB.y(), spotDB.z());
Expand All @@ -219,12 +248,72 @@ std::shared_ptr<onlinebeammonitor::NoCache> OnlineBeamMonitor::globalBeginLumino
aSpot->setEmittanceX(spotDB.emittanceX());
aSpot->setEmittanceY(spotDB.emittanceY());
aSpot->setbetaStar(spotDB.betaStar());

if (spotDB.beamType() == 2) {
aSpot->setType(reco::BeamSpot::Tracker);
} else {
aSpot->setType(reco::BeamSpot::Fake);
}

if (writeDIPTxt_) {
std::ofstream outFile;

std::string tmpname = outputDIPTxt_;
int frun = iLumi.getRun().run();

char index[15];
if (appendRunTxt_ && writeDIPTxt_) {
sprintf(index, "%s%i", "_Run", frun);
tmpname.insert(outputDIPTxt_.length() - 4, index);
}
//int lastLumiAnalyzed_ = iLumi.id().luminosityBlock();

if (beamSpotsMap_.find("Transient") != beamSpotsMap_.end()) {
if (beamSpotsMap_.find("HLT") != beamSpotsMap_.end() &&
beamSpotsMap_["Transient"].x0() == beamSpotsMap_["HLT"].x0()) {
// lastLumiAnalyzed_ = lastLumiHLT_;
startTimeStamp_ = startTimeStampHLT_;
stopTimeStamp_ = stopTimeStampHLT_;
lumiRange_ = lumiRangeHLT_;

} else if (beamSpotsMap_.find("Legacy") != beamSpotsMap_.end() &&
beamSpotsMap_["Transient"].x0() == beamSpotsMap_["Legacy"].x0()) {
//lastLumiAnalyzed_ = lastLumiLegacy_;
startTimeStamp_ = startTimeStampLegacy_;
stopTimeStamp_ = stopTimeStampLegacy_;
lumiRange_ = lumiRangeLegacy_;
}
}

outFile.open(tmpname.c_str());

outFile << "Runnumber " << frun << " bx " << 0 << std::endl;
outFile << "BeginTimeOfFit " << startTimeStamp_ << " " << 0 << std::endl;
outFile << "EndTimeOfFit " << stopTimeStamp_ << " " << 0 << std::endl;
//outFile << "LumiRange " << lumiRange_ << " - " << lastLumiAnalyzed_ << std::endl;
outFile << "LumiRange " << lumiRange_ << std::endl;
outFile << "Type " << aSpot->type() << std::endl;
outFile << "X0 " << aSpot->x0() << std::endl;
outFile << "Y0 " << aSpot->y0() << std::endl;
outFile << "Z0 " << aSpot->z0() << std::endl;
outFile << "sigmaZ0 " << aSpot->sigmaZ() << std::endl;
outFile << "dxdz " << aSpot->dxdz() << std::endl;
outFile << "dydz " << aSpot->dydz() << std::endl;
outFile << "BeamWidthX " << aSpot->BeamWidthX() << std::endl;
outFile << "BeamWidthY " << aSpot->BeamWidthY() << std::endl;
for (int i = 0; i < 6; ++i) {
outFile << "Cov(" << i << ",j) ";
for (int j = 0; j < 7; ++j) {
outFile << aSpot->covariance(i, j) << " ";
}
outFile << std::endl;
}
outFile << "Cov(6,j) 0 0 0 0 0 0 " << aSpot->covariance(6, 6) << std::endl;
outFile << "EmittanceX " << aSpot->emittanceX() << std::endl;
outFile << "EmittanceY " << aSpot->emittanceY() << std::endl;
outFile << "BetaStar " << aSpot->betaStar() << std::endl;

outFile.close();
}
//LogInfo("OnlineBeamMonitor")
// << *aSpot << std::endl;
} else {
Expand Down Expand Up @@ -364,4 +453,5 @@ void OnlineBeamMonitor::dqmEndRun(edm::Run const&, edm::EventSetup const&) {
}
}
}

DEFINE_FWK_MODULE(OnlineBeamMonitor);
7 changes: 7 additions & 0 deletions DQM/BeamMonitor/plugins/OnlineBeamMonitor.h
Expand Up @@ -9,6 +9,7 @@
#include <map>
#include <vector>
#include <string>
#include <fstream>
// CMS
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
Expand Down Expand Up @@ -54,6 +55,7 @@ class OnlineBeamMonitor : public DQMOneEDAnalyzer<edm::LuminosityBlockCache<onli
edm::ESGetToken<BeamSpotObjects, BeamSpotTransientObjectsRcd> bsTransientToken_;
edm::ESGetToken<BeamSpotOnlineObjects, BeamSpotOnlineHLTObjectsRcd> bsHLTToken_;
edm::ESGetToken<BeamSpotOnlineObjects, BeamSpotOnlineLegacyObjectsRcd> bsLegacyToken_;
std::ofstream fasciiDIP;

//Service variables
int numberOfValuesToSave_;
Expand All @@ -68,6 +70,11 @@ class OnlineBeamMonitor : public DQMOneEDAnalyzer<edm::LuminosityBlockCache<onli
PositionContainer positionsMap_;
std::vector<std::string> varNamesV_; //x,y,z,sigmax(y,z)
std::multimap<std::string, std::string> histoByCategoryNames_; //run, lumi

//For File Writing
bool appendRunTxt_;
bool writeDIPTxt_;
std::string outputDIPTxt_;
};

#endif
25 changes: 16 additions & 9 deletions DQM/BeamMonitor/test/Online_BeamMonitor_file.py
Expand Up @@ -10,19 +10,22 @@
toGet = cms.VPSet(
cms.PSet(
record = cms.string('BeamSpotOnlineLegacyObjectsRcd'),
tag = cms.string("BeamSpotOnlineTestLegacy"),
refreshTime = cms.uint64(1)
tag = cms.string("BeamSpotOnlineLegacy"),
refreshTime = cms.uint64(2)
),
cms.PSet(
record = cms.string('BeamSpotOnlineHLTObjectsRcd'),
tag = cms.string("BeamSpotOnlineTestHLT"),
refreshTime = cms.uint64(1)
tag = cms.string("BeamSpotOnlineHLT"),
refreshTime = cms.uint64(2)

),
),
)
process.BeamSpotDBSource.connect = cms.string('frontier://FrontierProd/CMS_CONDITIONS')
process.BeamSpotESProducer = cms.ESProducer("OnlineBeamSpotESProducer")
import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod
process.BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone(
timeThreshold = 999999 # for express allow >48h old payloads for replays. DO NOT CHANGE
)

# initialize MessageLogger
process.load("FWCore.MessageLogger.MessageLogger_cfi")
Expand All @@ -40,17 +43,21 @@
)
#process.MessageLogger.cout.enableStatistics = cms.untracked.bool(True)
process.source = cms.Source("EmptySource")
process.source.numberEventsInRun=cms.untracked.uint32(20)
process.source.firstRun = cms.untracked.uint32(336055)
process.source.firstLuminosityBlock = cms.untracked.uint32(49)
process.source.numberEventsInRun=cms.untracked.uint32(100)
process.source.firstRun = cms.untracked.uint32(346512)
process.source.firstLuminosityBlock = cms.untracked.uint32(614)
process.source.numberEventsInLuminosityBlock = cms.untracked.uint32(1)
process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(100)
)

#process.load("DQMServices.Core.DQMEDAnalyzer")
process.onlineBeamMonitor = cms.EDProducer("OnlineBeamMonitor",
MonitorName = cms.untracked.string("onlineBeamMonitor"))
MonitorName = cms.untracked.string("onlineBeamMonitor"),
AppendRunToFileName = cms.untracked.bool(False),
WriteDIPAscii = cms.untracked.bool(True),
DIPFileName = cms.untracked.string("BeamFitResultsForDIP.txt")
Comment on lines +56 to +59
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need to add the same options also in

process.dqmOnlineBeamMonitor = cms.EDProducer("OnlineBeamMonitor",
?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Actually the easiest way would be to clone the onlinebeammonitor configuration so that we do not have to add the extra parameters, but i agree this file has to be changed

)


# DQM Live Environment
Expand Down
Expand Up @@ -126,7 +126,10 @@
# BeamMonitor
#-----------------------------
process.dqmOnlineBeamMonitor = cms.EDProducer("OnlineBeamMonitor",
MonitorName = cms.untracked.string("OnlineBeamMonitor")
MonitorName = cms.untracked.string("OnlineBeamMonitor"),
AppendRunToFileName = cms.untracked.bool(False),
WriteDIPAscii = cms.untracked.bool(True),
DIPFileName = cms.untracked.string("/nfshome0/dqmpro/BeamMonitorDQM/BeamFitResultsForDIP.txt")
)

#---------------
Expand All @@ -143,11 +146,11 @@
process.GlobalTag.toGet = cms.VPSet(
cms.PSet(
record = cms.string("BeamSpotOnlineLegacyObjectsRcd"),
refreshTime = cms.uint64(1)
refreshTime = cms.uint64(2)
),
cms.PSet(
record = cms.string("BeamSpotOnlineHLTObjectsRcd"),
refreshTime = cms.uint64(1)
refreshTime = cms.uint64(2)
)
)

Expand Down