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

[12_3_X] Modernize DQM/BeamMonitor/plugins/TKStatus plugin #37223

Merged
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
2 changes: 1 addition & 1 deletion DQM/BeamMonitor/plugins/BuildFile.xml
@@ -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
@@ -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.

Expand Up @@ -219,6 +219,7 @@
)

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


process.pp = cms.Path( process.scalersRawToDigi
*process.onlineMetaDataDigis
*process.dqmTKStatus
*process.hltTriggerTypeFilter
*process.dqmcommon
Expand Down
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
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
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
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
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
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
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