Skip to content

Commit

Permalink
Merge pull request #37928 from francescobrivio/alca-dumpBSforDIP_12_3_X
Browse files Browse the repository at this point in the history
[12_3_X] Dump of the beamspot for DIP
  • Loading branch information
cmsbuild authored May 15, 2022
2 parents 3922100 + 946c4bb commit ce797ae
Show file tree
Hide file tree
Showing 4 changed files with 122 additions and 15 deletions.
96 changes: 93 additions & 3 deletions DQM/BeamMonitor/plugins/OnlineBeamMonitor.cc
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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")
)


# DQM Live Environment
Expand Down
Original file line number Diff line number Diff line change
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

0 comments on commit ce797ae

Please sign in to comment.