Skip to content

Commit

Permalink
Merge pull request #37214 from francescobrivio/alca-tkStatusDCS_12_3_X
Browse files Browse the repository at this point in the history
Modernize `DQM/BeamMonitor/plugins/TKStatus` plugin
  • Loading branch information
cmsbuild authored Mar 14, 2022
2 parents 48ea971 + fab8b2b commit 689d470
Show file tree
Hide file tree
Showing 12 changed files with 117 additions and 74 deletions.
2 changes: 1 addition & 1 deletion DQM/BeamMonitor/plugins/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<use name="DQMServices/Core"/>
<use name="DataFormats/Scalers"/>
<use name="DataFormats/OnlineMetaData"/>
<use name="DataFormats/TrackReco"/>
<use name="FWCore/Framework"/>
<use name="DataFormats/BeamSpot"/>
Expand Down Expand Up @@ -56,7 +57,6 @@

<ifarchitecture name="_amd64_">
<library file="BeamSpotDipServer.cc" name="BeamSpotDipServer">
<use name="DataFormats/OnlineMetaData"/>
<use name="dip"/>
<use name="log4cplus"/>
<flags EDM_PLUGIN="1"/>
Expand Down
127 changes: 103 additions & 24 deletions DQM/BeamMonitor/plugins/TKStatus.cc
Original file line number Diff line number Diff line change
@@ -1,50 +1,129 @@
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Framework/interface/Run.h"
/** \class TKStatus
* *
* \author Geng-yuan Jeng/UC Riverside
* Francisco Yumiceva/FNAL
*
*/

// C++
#include <array>
#include <fstream>
#include <string>

// CMS
#include "DataFormats/OnlineMetaData/interface/DCSRecord.h"
#include "DataFormats/OnlineMetaData/interface/OnlineLuminosityRecord.h"
#include "DataFormats/Scalers/interface/DcsStatus.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/LuminosityBlock.h"
#include "FWCore/Framework/interface/one/EDAnalyzer.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "DQM/BeamMonitor/plugins/TKStatus.h"
#include <iostream>
#include "FWCore/Framework/interface/Run.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Utilities/interface/EDGetToken.h"

//
// class declaration
//
class TKStatus : public edm::one::EDAnalyzer<> {
public:
TKStatus(const edm::ParameterSet&);

protected:
void analyze(const edm::Event& e, const edm::EventSetup& c) override;

using namespace edm;
private:
void dumpTkDcsStatus(std::string const&, edm::RunNumber_t, std::array<bool, 6> const&);

TKStatus::TKStatus(const ParameterSet& ps) {
dcsTkFileName_ = ps.getParameter<ParameterSet>("BeamFitter").getUntrackedParameter<std::string>("DIPFileName");
std::string dcsTkFileName_;
const edm::EDGetTokenT<DcsStatusCollection> dcsStatusToken_;
const edm::EDGetTokenT<DCSRecord> dcsRecordToken_;

int lastlumi_ = -1;
// ----------member data ---------------------------
};

// ----------------------------------------------------------
TKStatus::TKStatus(const edm::ParameterSet& ps)
: dcsStatusToken_(consumes<DcsStatusCollection>(edm::InputTag("scalersRawToDigi"))),
dcsRecordToken_(consumes<DCSRecord>(edm::InputTag("onlineMetaDataDigis"))) {
dcsTkFileName_ = ps.getParameter<edm::ParameterSet>("BeamFitter").getUntrackedParameter<std::string>("DIPFileName");
{
std::string tmpname = dcsTkFileName_;
tmpname.insert(dcsTkFileName_.length() - 4, "_TkStatus");
dcsTkFileName_ = std::move(tmpname);
}
dcsStatus_ = consumes<DcsStatusCollection>(ps.getUntrackedParameter<std::string>("DCSStatus", "scalersRawToDigi"));
}

// ----------------------------------------------------------
void TKStatus::analyze(const Event& iEvent, const EventSetup& iSetup) {
void TKStatus::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
int nthlumi = iEvent.luminosityBlock();
if (nthlumi > lastlumi_) { // check every LS
lastlumi_ = nthlumi;

// Checking TK status
Handle<DcsStatusCollection> dcsStatus;
iEvent.getByToken(dcsStatus_, dcsStatus);
const auto& dcsStatus = iEvent.getHandle(dcsStatusToken_);
const auto& dcsRecord = iEvent.getHandle(dcsRecordToken_);

std::array<bool, 6> dcsTk;
for (auto& e : dcsTk) {
e = true;
}

for (auto const& status : *dcsStatus) {
if (!status.ready(DcsStatus::BPIX))
dcsTk[0] = false;
if (!status.ready(DcsStatus::FPIX))
dcsTk[1] = false;
if (!status.ready(DcsStatus::TIBTID))
dcsTk[2] = false;
if (!status.ready(DcsStatus::TOB))
dcsTk[3] = false;
if (!status.ready(DcsStatus::TECp))
dcsTk[4] = false;
if (!status.ready(DcsStatus::TECm))
dcsTk[5] = false;
// Check that the DCS information is available in some form
if (!dcsStatus.isValid() && !dcsRecord.isValid()) {
edm::LogWarning("TkStatus") << "DcsStatusCollection product with InputTag \"scalersRawToDigi\" not in event \n"
<< "DCSRecord product with InputTag \"onlineMetaDataDigis\" not in event \n";
dumpTkDcsStatus(dcsTkFileName_, iEvent.run(), dcsTk);
return;
}

if (dcsStatus.isValid() && (*dcsStatus).empty()) {
if (iEvent.eventAuxiliary().isRealData()) {
// This is the Data case for >= Run3, DCSStatus is available (unpacked), but empty
// because SCAL is not in data-taking. In this case we fall back to s/w FED 1022
if (dcsRecord.isValid()) {
edm::LogPrint("TkStatus") << "Using dcsRecord because dcsStatus is empty";
dcsTk[0] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::BPIX);
dcsTk[1] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::FPIX);
dcsTk[2] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TIBTID);
dcsTk[3] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TOB);
dcsTk[4] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TECp);
dcsTk[5] = (*dcsRecord).highVoltageReady(DCSRecord::Partition::TECm);
} else {
// DCS status is empty, and the DCS record is not available
edm::LogWarning("TkStatus") << "DCSRecord product with InputTag \"onlineMetaDataDigis\" empty \n";
dumpTkDcsStatus(dcsTkFileName_, iEvent.run(), dcsTk);
return;
}
} else {
// DCS status is empty, but it's not real data
edm::LogPrint("TkStatus") << "Running on MC";
dumpTkDcsStatus(dcsTkFileName_, iEvent.run(), dcsTk);
return;
}
} else {
// This is the case for <= Run2
edm::LogPrint("TkStatus") << "Using dcsStatus (Run 1 and Run 2 SCAL)";
for (auto const& status : *dcsStatus) {
if (!status.ready(DcsStatus::BPIX))
dcsTk[0] = false;
if (!status.ready(DcsStatus::FPIX))
dcsTk[1] = false;
if (!status.ready(DcsStatus::TIBTID))
dcsTk[2] = false;
if (!status.ready(DcsStatus::TOB))
dcsTk[3] = false;
if (!status.ready(DcsStatus::TECp))
dcsTk[4] = false;
if (!status.ready(DcsStatus::TECm))
dcsTk[5] = false;
}
}

dumpTkDcsStatus(dcsTkFileName_, iEvent.run(), dcsTk);
}
}
Expand Down
48 changes: 0 additions & 48 deletions DQM/BeamMonitor/plugins/TKStatus.h

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@
)

process.pp = cms.Path( process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.dqmcommon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@


process.pp = cms.Path( process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.dqmcommon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@
)

process.pp = cms.Path( process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.dqmcommon
Expand Down
2 changes: 2 additions & 0 deletions DQM/BeamMonitor/test/42X_beam_dqm_sourceclient-live_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@


process.p = cms.Path(process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.dqmcommon
Expand Down Expand Up @@ -226,6 +227,7 @@
#--------------------------

process.hi = cms.Path(process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.filter_step
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@
)

process.hi = cms.Path(process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.filter_step
Expand Down
2 changes: 2 additions & 0 deletions DQM/BeamMonitor/test/44X_beam_dqm_sourceclient-live_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@


process.p = cms.Path(process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.dqmcommon
Expand Down Expand Up @@ -247,6 +248,7 @@


process.p = cms.Path(process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.filter_step
Expand Down
3 changes: 2 additions & 1 deletion DQM/BeamMonitor/test/DQM_RECO_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,8 @@
)
###

process.pp = cms.Path(process.dqmTKStatus*
process.pp = cms.Path(process.onlineMetaDataDigis*
process.dqmTKStatus*
#process.hltLevel1GTSeed*
process.dqmBeamMonitor+
#process.dqmBeamMonitorBx+
Expand Down
1 change: 1 addition & 0 deletions DQM/BeamMonitor/test/HeavyIonTest_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@
process.dqmBeamMonitor.BeamFitter.TrackCollection = cms.untracked.InputTag('hiGeneralTracks')

process.pp = cms.Path(
process.onlineMetaDataDigis*
process.dqmTKStatus*
process.HLTPixelActivityFilterForOnlineBeamspot *
# Turn off trigger for MC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,7 @@
# Final path
if (not process.runType.getRunType() == process.runType.hi_run):
process.p = cms.Path(process.scalersRawToDigi
* process.onlineMetaDataDigis
* process.dqmTKStatus
* process.hltTriggerTypeFilter
* process.dqmcommon
Expand All @@ -435,6 +436,7 @@
* process.BeamSpotProblemModule)
else:
process.p = cms.Path(process.scalersRawToDigi
* process.onlineMetaDataDigis
* process.dqmTKStatus
* process.hltTriggerTypeFilter
* process.filter_step # the only extra: pix-multi filter
Expand Down

0 comments on commit 689d470

Please sign in to comment.