Skip to content

Commit

Permalink
Merge pull request #37614 from dzuolo/from-CMSSW_12_4_X_2022-04-18-1100
Browse files Browse the repository at this point in the history
BeamSpot DQM clients modified to log to onlineDB only when beam status from TCDS is STABLE
  • Loading branch information
cmsbuild committed Apr 23, 2022
2 parents 966f784 + 691485e commit d302344
Show file tree
Hide file tree
Showing 10 changed files with 49 additions and 9 deletions.
25 changes: 17 additions & 8 deletions DQM/BeamMonitor/plugins/BeamMonitor.cc
Expand Up @@ -122,7 +122,8 @@ BeamMonitor::BeamMonitor(const ParameterSet& ps)
resetHistos_(false),
StartAverage_(false),
firstAverageFit_(0),
countGapLumi_(0) {
countGapLumi_(0),
logToDb_(false) {
monitorName_ = ps.getUntrackedParameter<string>("monitorName", "YourSubsystemName");
recordName_ = ps.getUntrackedParameter<string>("recordName");
bsSrc_ = consumes<reco::BeamSpot>(ps.getUntrackedParameter<InputTag>("beamSpot"));
Expand Down Expand Up @@ -163,6 +164,8 @@ BeamMonitor::BeamMonitor(const ParameterSet& ps)
lastlumi_ = 0;
nextlumi_ = 0;
processed_ = false;

tcdsToken_ = consumes<TCDSRecord>(ps.getParameter<InputTag>("tcdsRecord"));
}

//--------------------------------------------------------
Expand Down Expand Up @@ -212,7 +215,7 @@ namespace {
} // namespace

void BeamMonitor::dqmBeginRun(edm::Run const&, edm::EventSetup const&) {
if (useLockRecords_ && onlineDbService_.isAvailable()) {
if (useLockRecords_ && onlineDbService_.isAvailable() && logToDb_) {
onlineDbService_->lockRecords();
}
nAnalyzedLS_ = 0;
Expand Down Expand Up @@ -533,7 +536,7 @@ void BeamMonitor::beginLuminosityBlock(const LuminosityBlock& lumiSeg, const Eve
// start DB logger
DBloggerReturn_ = 0;
nAnalyzedLS_++;
if (onlineDbService_.isAvailable()) {
if (onlineDbService_.isAvailable() && logToDb_) {
onlineDbService_->logger().start();
onlineDbService_->logger().logInfo() << "BeamMonitor::beginLuminosityBlock - LS: " << lumiSeg.luminosityBlock()
<< " - Run: " << lumiSeg.getRun().run();
Expand Down Expand Up @@ -661,6 +664,11 @@ void BeamMonitor::beginLuminosityBlock(const LuminosityBlock& lumiSeg, const Eve

// ----------------------------------------------------------
void BeamMonitor::analyze(const Event& iEvent, const EventSetup& iSetup) {
const TCDSRecord& tcdsData = iEvent.get(tcdsToken_);
int beamMode = tcdsData.getBST().getBeamMode();
if (beamMode == BSTRecord::BeamMode::STABLE)
logToDb_ = true;

const int nthlumi = iEvent.luminosityBlock();
if (onlineMode_ && (nthlumi < nextlumi_)) {
edm::LogInfo("BeamMonitor") << "analyze:: Spilt event from previous lumi section!" << std::endl;
Expand Down Expand Up @@ -809,7 +817,7 @@ void BeamMonitor::endLuminosityBlock(const LuminosityBlock& lumiSeg, const Event
tmpTime = refBStime[1] = refPVtime[1] = fendtime;

// end DB logger
if (onlineDbService_.isAvailable()) {
if (onlineDbService_.isAvailable() && logToDb_) {
onlineDbService_->logger().logInfo() << "BeamMonitor::endLuminosityBlock";
onlineDbService_->logger().end(DBloggerReturn_);
}
Expand Down Expand Up @@ -1401,7 +1409,8 @@ void BeamMonitor::FitAndFill(const LuminosityBlock& lumiSeg, int& lastlumi, int&
edm::LogInfo("BeamMonitor") << BSOnline << std::endl;

// Create the payload for BeamSpotOnlineObjects object
if (onlineDbService_.isAvailable() && (nAnalyzedLS_ < nLS_for_upload_ || nAnalyzedLS_ % nLS_for_upload_ == 0)) {
if (onlineDbService_.isAvailable() && (nAnalyzedLS_ < nLS_for_upload_ || nAnalyzedLS_ % nLS_for_upload_ == 0) &&
logToDb_) {
edm::LogInfo("BeamMonitor") << "FitAndFill::[PayloadCreation] onlineDbService available \n" << std::endl;
onlineDbService_->logger().logInfo() << "BeamMonitor::FitAndFill - Lumi of the current fit: " << currentlumi;
onlineDbService_->logger().logInfo()
Expand Down Expand Up @@ -1454,7 +1463,7 @@ void BeamMonitor::FitAndFill(const LuminosityBlock& lumiSeg, int& lastlumi, int&
edm::LogInfo("BeamMonitor") << "FitAndFill:: [BeamMonitor] Output beam spot for DIP \n" << endl;
edm::LogInfo("BeamMonitor") << bs << endl;

if (onlineDbService_.isAvailable()) {
if (onlineDbService_.isAvailable() && logToDb_) {
onlineDbService_->logger().logInfo() << "BeamMonitor::FitAndFill - Beam fit fails!!!";
onlineDbService_->logger().logInfo() << "BeamMonitor::FitAndFill - Output beam spot for DIP";
onlineDbService_->logger().logInfo() << "\n" << bs;
Expand All @@ -1481,7 +1490,7 @@ void BeamMonitor::FitAndFill(const LuminosityBlock& lumiSeg, int& lastlumi, int&
edm::LogInfo("BeamMonitor") << "FitAndFill:: [BeamMonitor] Output fake beam spot for DIP \n" << endl;
edm::LogInfo("BeamMonitor") << bs << endl;

if (onlineDbService_.isAvailable()) {
if (onlineDbService_.isAvailable() && logToDb_) {
onlineDbService_->logger().logInfo() << "BeamMonitor::FitAndFill - No fitting";
onlineDbService_->logger().logInfo() << "BeamMonitor::FitAndFill - Output fake beam spot for DIP";
onlineDbService_->logger().logInfo() << "\n" << bs;
Expand Down Expand Up @@ -1585,7 +1594,7 @@ void BeamMonitor::dqmEndRun(const Run& r, const EventSetup& context) {
mapLSPVStoreSize.clear();
mapLSCF.clear();

if (useLockRecords_ && onlineDbService_.isAvailable()) {
if (useLockRecords_ && onlineDbService_.isAvailable() && logToDb_) {
onlineDbService_->releaseLocks();
}
}
Expand Down
5 changes: 5 additions & 0 deletions DQM/BeamMonitor/plugins/BeamMonitor.h
Expand Up @@ -25,6 +25,8 @@
#include "RecoVertex/BeamSpotProducer/interface/BSTrkParameters.h"
#include "RecoVertex/BeamSpotProducer/interface/BeamFitter.h"
#include "CondCore/DBOutputService/interface/OnlineDBOutputService.h"
#include "DataFormats/TCDS/interface/BSTRecord.h"
#include "DataFormats/TCDS/interface/TCDSRecord.h"
#include <fstream>

//
Expand Down Expand Up @@ -122,6 +124,9 @@ class BeamMonitor : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {

int nAnalyzedLS_;
int nLS_for_upload_;

edm::EDGetTokenT<TCDSRecord> tcdsToken_;
bool logToDb_;
// ----------member data ---------------------------

// std::vector<BSTrkParameters> fBSvector;
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/plugins/BuildFile.xml
Expand Up @@ -4,6 +4,7 @@
<use name="DataFormats/TrackReco"/>
<use name="FWCore/Framework"/>
<use name="DataFormats/BeamSpot"/>
<use name="DataFormats/TCDS"/>
<use name="CondFormats/DataRecord"/>
<use name="CondFormats/BeamSpotObjects"/>
<use name="RecoVertex/BeamSpotProducer"/>
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/python/BeamMonitor_Cosmics_cff.py
Expand Up @@ -13,6 +13,7 @@
recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'),
useLockRecords = cms.untracked.bool(False),
nLSForUpload = cms.untracked.int32(5),
tcdsRecord = cms.InputTag('tcdsDigis','tcdsRecord'),
BeamFitter = cms.PSet(
Debug = cms.untracked.bool(False),
TrackCollection = cms.untracked.InputTag('ctfWithMaterialTracksP5'), ## ctfWithMaterialTracksP5 for CRAFT
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/python/BeamMonitor_MC_cff.py
Expand Up @@ -14,6 +14,7 @@
recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'),
useLockRecords = cms.untracked.bool(False),
nLSForUpload = cms.untracked.int32(5),
tcdsRecord = cms.InputTag('tcdsDigis','tcdsRecord'),
BeamFitter = cms.PSet(
Debug = cms.untracked.bool(False),
TrackCollection = cms.untracked.InputTag('generalTracks'), ## ctfWithMaterialTracksP5 for CRAFT
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/python/BeamMonitor_PixelLess_cff.py
Expand Up @@ -12,6 +12,7 @@
recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'),
useLockRecords = cms.untracked.bool(False),
nLSForUpload = cms.untracked.int32(5),
tcdsRecord = cms.InputTag('tcdsDigis','tcdsRecord'),
BeamFitter = cms.PSet(
Debug = cms.untracked.bool(False),
TrackCollection = cms.untracked.InputTag('ctfPixelLess'),
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/python/BeamMonitor_Pixel_cff.py
Expand Up @@ -17,6 +17,7 @@
jetTrigger = cms.untracked.vstring(),
hltResults = cms.InputTag("TriggerResults","","HLT"),
nLSForUpload = cms.untracked.int32(5),
tcdsRecord = cms.InputTag('tcdsDigis','tcdsRecord'),
BeamFitter = cms.PSet(
Debug = cms.untracked.bool(False),
TrackCollection = cms.untracked.InputTag('pixelTracks'),
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/python/BeamMonitor_cff.py
Expand Up @@ -16,6 +16,7 @@
useLockRecords = cms.untracked.bool(False),
hltResults = cms.InputTag("TriggerResults::HLT"),
nLSForUpload = cms.untracked.int32(5),
tcdsRecord = cms.InputTag('tcdsDigis','tcdsRecord'),
BeamFitter = cms.PSet(
Debug = cms.untracked.bool(False),
TrackCollection = cms.untracked.InputTag('generalTracks'),
Expand Down
Expand Up @@ -284,6 +284,10 @@
from DQM.Integration.config.online_customizations_cfi import *
process = customise(process)

# Digitisation: produce the TCDS digis containing BST record
from EventFilter.OnlineMetaDataRawToDigi.tcdsRawToDigi_cfi import *
process.tcdsDigis = tcdsRawToDigi.clone()

#------------------------
# Set rawDataRepacker (HI and live) or rawDataCollector (for all the rest)
if (process.runType.getRunType() == process.runType.hi_run and live):
Expand All @@ -305,6 +309,7 @@
process.scalersRawToDigi.scalersInputTag = rawDataInputTag
process.siPixelDigis.cpu.InputLabel = rawDataInputTag
process.siStripDigis.ProductLabel = rawDataInputTag
process.tcdsDigis.InputLabel = rawDataInputTag

process.load("RecoVertex.BeamSpotProducer.BeamSpot_cfi")

Expand Down Expand Up @@ -422,11 +427,11 @@
frontierKey = cms.untracked.string(options.runUniqueKey)
)
print("Configured frontierKey", options.runUniqueKey)

#---------
# Final path
if (not process.runType.getRunType() == process.runType.hi_run):
process.p = cms.Path(process.scalersRawToDigi
* process.tcdsDigis
* process.onlineMetaDataDigis
* process.dqmTKStatus
* process.hltTriggerTypeFilter
Expand All @@ -436,6 +441,7 @@
* process.BeamSpotProblemModule)
else:
process.p = cms.Path(process.scalersRawToDigi
* process.tcdsDigis
* process.onlineMetaDataDigis
* process.dqmTKStatus
* process.hltTriggerTypeFilter
Expand Down
Expand Up @@ -118,6 +118,19 @@
from DQM.Integration.config.online_customizations_cfi import *
process = customise(process)

# Digitisation: produce the TCDS digis containing BST record
from EventFilter.OnlineMetaDataRawToDigi.tcdsRawToDigi_cfi import *
process.tcdsDigis = tcdsRawToDigi.clone()

#------------------------
# Set rawDataRepacker (HI and live) or rawDataCollector (for all the rest)
if (process.runType.getRunType() == process.runType.hi_run and live):
rawDataInputTag = "rawDataRepacker"
else:
rawDataInputTag = "rawDataCollector"

process.tcdsDigis.InputLabel = rawDataInputTag

#-----------------------------------------------------------
# Swap offline <-> online BeamSpot as in Express and HLT
import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod
Expand Down Expand Up @@ -226,6 +239,7 @@
print("Configured frontierKey", options.runUniqueKey)

process.p = cms.Path( process.hltTriggerTypeFilter
* process.tcdsDigis
* process.dqmcommon
* process.offlineBeamSpot
* process.monitor )
Expand Down

0 comments on commit d302344

Please sign in to comment.